General MIDI is a specification for synthesizers which imposes several requirements beyond the more abstract MIDI standard. While MIDI itself does provide a protocol which ensures that different instruments can interoperate at a fundamental level (e.g. that pressing keys on a MIDI keyboard will cause an attached MIDI sound module to play musical notes), General MIDI (or GM) goes further in two ways: it requires that all GM-compatible instruments meet a certain minimal set of features, such as being able to play at least 24 notes simultaneously (polyphony); and it attaches certain interpretations to many parameters which were left unspecified in MIDI, such as defining instrument sounds for each of 128 program numbers.
General MIDI was first standardised in 1991, by the MIDI Manufacturers Association (MMA) and the Japan MIDI Standards Committee (JMSC), and has since been adopted as an addendum to the main MIDI standard. GM itself was later revised to become General MIDI 2, in 1999.
Other companies have created their own extensions to the original General MIDI standard, notably Roland's GS and Yamaha's XG.
Minimal feature requirements
General MIDI (version 1) compatible instruments are required to be able to:
- Allow 24 voices to be active simultaneously (including at least 16 melodic and 8 percussive voices)
- Respond to note velocity
- Support all 16 channels simultaneously (with channel 10 reserved for percussion)
- Support polyphony (multiple simultaneous notes) on each channels
GM Instruments must also obey the following conventions for program and controller events:
Program change events
This table shows which instrument sound corresponds to each program change number:
Channel 10 is reserved for percussion under General MIDI; this channel always sounds as percussion regardless of whatever program change numbers it may be sent, and different note numbers are interpreted as different instruments:
35 Bass Drum 2
59 Ride Cymbal 2
GM also specifies which operations should be performed by several controllers:
121 Reset all controllers
123 All notes off
The following Registered Parameter Numbers (RPNs) are also standardised:
0 Pitch bend range
1 Fine tuning
2 Coarse tuning
System Exclusive messages
Two GM System Exclusive ("SysEx") messages are defined: one to enable and disable General MIDI compatibility, on devices which also allow modes which are not GM-compatible; and the other to modify an instrument's master volume.