Standardized specification for music synthesizers adopting the MIDI protocol
This article is about the electronic musical instrument specification. For the British DJ, see General Midi (DJ).
General MIDI (also known as GM or GM 1) is a standardized specification for electronic musical instruments that respond to MIDI messages. GM was developed by the American MIDI Manufacturers Association (MMA) and the Japan MIDI Standards Committee (JMSC) and first published in The official specification is available in English from the MMA, bound together with the MIDI specification, and in Japanese from the Association of Musical Electronic Industry (AMEI).
GM imposes several requirements beyond the more abstract MIDI specification. While MIDI by itself provides a communications 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), 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 specific interpretations to many parameters and control messages which were left unspecified in the MIDI spec, such as defining instrument sounds for each of the possible program numbers.
GM ensures that playback of MIDI files sounds consistently between different devices compliant with the GM specification. Instrument selection in MIDI is done by assigning a "Program Number": this assignment previously was arbitrary, while a specific instrument is attributed to each program number with GM.
The GM 1 specification was superseded by General MIDI 2 in ; however, GM 1 is still commonly used.
General MIDI 1 Requirements
To be GM 1 compatible, sound generating devices (keyboards, hardware or software synthesizers, sound cards) are required to meet the General MIDI System Level 1 performance specification:
|Criterion ||Requirement |
|Voices ||Allow 24 voices to be available simultaneously for both melodic and percussive sounds (alternatively, allow 16 melodic and 8 percussive voices). All voices respond to note velocity. |
|Channels ||Support all 16 channels simultaneously, each assignable to different instruments. Channel 10 is reserved for percussion. Support polyphony (multiple simultaneous notes) on each channel. |
|Instruments ||Support a minimum of MIDI Program Numbers (conforming to the GM 1 Instrument Patch Map) and 47 percussion sounds (conforming to the GM 1 Percussion Key Map). |
|Channel messages ||Support for controller number 1, 7, 10, 11, 64, , , and ; support for channel pressure and pitch bend controllers. |
|Other messages ||Respond to the data entry controller and the RPNs for fine and coarse tuning and pitch bend range, as well as all General MIDI Level 1 System Messages. |
GM Instruments must also obey the following conventions for program and controller events:
Program change events
In MIDI, the instrument sound or "program" for each of the 16 possible MIDI channels is selected with the Program Change message, which has a Program Number parameter. The following table shows which instrument sound corresponds to each of the possible Program Numbers for GM only. There are program numbers. The numbers can be displayed as values 1 to , or, alternatively, as 0 to The 0 to numbering is usually only used internally by the synthesizer; the vast majority of MIDI devices, digital audio workstations and professional MIDI sequencers display these Program Numbers as shown in the table (1–).
In GM standard MIDI files, channel 10 is reserved for percussion instruments only. Notes recorded on channel 10 always produce percussion sounds when transmitted to a keyboard or synth module which uses the GM standard. Each of the different possible note numbers correlate to a unique percussive instrument, but the sound's pitch is not relative to the note number.
If a MIDI file is programmed to the General MIDI protocol, then the results are predictable, but timbre and sound fidelity may vary depending on the quality of the GM synthesizer:
In MIDI, adjustable parameters for each of the 16 possible MIDI channels may be set with the Control Change (CC) message, which has a Control Number parameter and a Control Value parameter (expressed in a range from 0 to ). GM also specifies which operations should be performed by multiple Control Numbers.
|CC ||Function |
| ||Registered Parameter Number LSB|
| ||Registered Parameter Number MSB|
| ||All controllers off |
| ||All notes off |
GM defines several Registered Parameters, which act like Controllers but are addressed in a different way. In MIDI, every Registered Parameter is assigned a Registered Parameter Number or RPN. Registered Parameters are usually called RPNs for short.
Setting Registered Parameters requires sending (numbers are decimal):
- two Control Change messages using Control Numbers and to select the parameter, followed by
- any number of Data Entry messages of one or two bytes (MSB = Controller #6, LSB = Controller #38), and finally
- an "End of RPN" message
The following global Registered Parameter Numbers (RPNs) are standardised (the parameter is specified by RPN LSB/MSB pair and the value is set by Data Entry LSB/MSB pair):
- 0,0 Pitch bend range
- 1,0 Channel Fine tuning
- 2,0 Channel Coarse tuning
An example of an RPN control sequence to set coarse tuning to A (parm 2, value 64) is , , , , .
System Exclusive messages
Two GM System Exclusive ("SysEx") messages are defined: one to enable and disable General MIDI compatibility mode (for synthesizers that also have non-GM modes); and the other to set the synthesizer's master volume.
A superset of the General MIDI standard which added several proprietary extensions. The most notable addition was the ability to address multiple banks of programs (instrument sounds) by using an additional pair of Bank Select controllers to specify up to "variation" sounds (cc#0 is Bank Select MSB, and cc#32 is Bank Select LSB). Other most notable features were 9 Drum kits with 14 additional drum sounds each, simultaneous Percussion Kits - up to 2 (Channels 10/11), Control Change messages for controlling the send level of sound effect blocks (cc#), entering additional parameters (cc#), portamento, sostenuto, soft pedal (cc#), and model-specific SysEx messages for setting various parameters of the synth engine.
GS was introduced in with the Roland Sound Canvas line, which was also Roland's first General MIDI synth module.
A superset of the General MIDI standard which added several proprietary extensions. The most notable additions were the instruments and 32 notes polyphony.
XG was introduced in with the Yamaha MU-series line of sound modules and PSR line of digital keyboards.
General MIDI Level 2
In , the official GM standard was updated to include more controllers, patches, RPNs and SysEx messages, in an attempt to reconcile the conflicting and proprietary Roland GS and Yamaha XG additions. Here's a quick overview of the GM2 changes in comparison to GM/GS:
- Number of Notes – minimum 32 simultaneous notes
- Simultaneous Percussion Kits – up to 2 (Channels 10/11)
- Up to variation banks are allowed, each containing a version of the Melodic Sounds (the exact use of these banks is up to the individual manufacturer.)
- 9 GS Drum kits are included
- Additional Control Change introduced, called "Sound Controllers 1–10":
|CC ||Default function |
|75 ||Decay Time |
|76 ||Vibrato Rate |
|77 ||Vibrato Depth |
|78 ||Vibrato Delay |
|79 ||(undefined) |
- Registered Parameter Numbers (RPNs)
- Universal SysEx messages
- Master Volume, Fine Tuning, Coarse Tuning
- Reverb Type, Time
- Chorus Type, Mod Rate, Mod Depth, Feedback, Send to Reverb
- Controller Destination Setting
- Scale/Octave Tuning Adjust
- Key-Based Instrument Controllers
- GM2 System On SysEx message
Additional melodic instruments can be accessed by setting CC#0 to and then using CC#32 to select the bank before a Program Change.
Official MIDI Standards Organizations