General MIDI or GM is a specification for synthesizers which imposes several requirements beyond the more abstract MIDI standard. While MIDI itself provides 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 and control messages 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. It has largely become a synonym for the acclaimed Roland Sound Canvas module.
Other companies have created their own extensions to the original General MIDI standard, notably Roland GS extensions and Yamaha's XG. GM itself was later revised to become GM Level 2 in 1999 and included some features common to GS and XG.
General MIDI Level 1 compatible instruments are required to be able to:
GM Instruments must also obey the following conventions for program and controller 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
6 Data Entry MSB
38 Data Entry LSB
100 RPN LSB
101 RPN MSB
121 Reset all controllers
123 All notes off
Setting Registered Parameters requires sending (numbers are decimal):
1) two Control Change messages using Control Numbers 101 and 100 to select the parameter, followed by
2) any number of Data Entry messages of one or two bytes (MSB = Controller #6, LSB = Controller #38), and finally
3) an "End of RPN" message
0,0 Pitch bend range
1,0 Channel Fine tuning
2,0 Channel Coarse tuning
3,0 Tuning Program Change
4,0 Tuning Bank Select
5,0 Modulation Depth Range
127,127 RPN Null
For example: RPN control sequence to set coarse tuning to A440 (parm 2, value 64):
101:0, 100:2, 6:64, 101:127, 100:127
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.
The first GM synthesizer in Roland Sound Canvas line featured a set of extensions to General MIDI standard. The most apparent addition was the ability to address multiple banks of sounds by using additional pair of controllers, cc#0 (Bank Select MSB) and cc#32 (Bank Select LSB), to specify up to 65536 'variation' sounds.
Other most notable features were 9 Drum kits with 14 additional drum sounds each, Control Change messages for controlling the send level of sound effect blocks (cc#91-94), entering additional parameters (cc#98-101), portamento, sostenuto, soft pedal (cc#65-67), and model-specific SysEx messages for setting various parameters of the synth engine.
In 1999, the standard was once again updated to include more controllers, patches, RPNs and SysEx messages. Here's a quick overview of the changes in comparison to GM/GS:
Additional melodic instruments can be accessed by setting CC#32 to 121 and then using CC#0 to select the bank before a Program Change. The most expanded group is Acoustic Pianos.