General MIDI
General MIDI (GM) is a technical standard developed for the Musical Instrument Digital Interface (MIDI) protocol, specifying a consistent mapping of instrument sounds, percussion assignments, and control behaviors to ensure that Standard MIDI Files play similarly across compliant synthesizers and sound modules.[1] Introduced in 1991 by the MIDI Manufacturers Association (MMA) and the Japan MIDI Standards Committee (JMSC), GM addressed early MIDI incompatibilities where different devices assigned varying timbres to the same program change numbers, enabling portable music production for consumer, entertainment, and professional applications.[2] The core General MIDI Level 1 (GM1) specification outlines a minimum configuration for MIDI sound generators, requiring at least 24-note polyphony, 16 simultaneous channels (with channel 10 reserved for percussion), and a fixed set of 128 program numbers mapped to specific instrument categories such as acoustic grand piano (program 0), electric piano (programs 4-7), and various orchestral and electronic sounds.[1] It also standardizes drum note assignments on channel 10 (e.g., bass drum at note 35, snare drum at note 38) and defines responses to common controllers like modulation wheel, volume, and pitch bend, without prescribing exact acoustic qualities to allow manufacturer variation.[1] This baseline ensured that a MIDI sequence created on one device would produce recognizable results on another, revolutionizing file sharing in music software and sequencing tools.[3] In 1999, General MIDI Level 2 (GM2) extended GM1 with enhanced capabilities, including at least 32-note polyphony (increased from 24 in GM1), an expanded sound set of 256 instruments with bank-selectable variations within each of the 16 instrument families, support for finer tuning adjustments via the MIDI Tuning Standard, and additional controls such as scalable modulation depth, key-based instrument variations, and global parameter messaging for effects like reverb and chorus.[4] GM2 maintains backward compatibility with GM1 while adding features like master fine/coarse tuning and destination settings for control changes, making it suitable for more expressive performances in modern digital audio workstations.[4] A lighter variant, General MIDI Lite, was later introduced to meet specific market needs with reduced complexity, though it retains core compatibility.[3] Overall, General MIDI has profoundly influenced digital music creation, underpinning billions of MIDI files in games, films, and software synthesizers, and remains relevant even with the advent of MIDI 2.0 due to its widespread adoption and simplicity.[3]Introduction
Definition and Purpose
General MIDI (GM) is an extension to the Musical Instrument Digital Interface (MIDI) protocol, a hardware and software standard for exchanging musical performance data between electronic instruments and computers. Published in 1991 by the MIDI Manufacturers Association (MMA) and the Japan MIDI Standards Committee (JMSC), it defines a minimum configuration of features that synthesizers, sound modules, and software must implement to deliver consistent audio output regardless of the specific device. This includes requirements for multitimbral capability, allowing simultaneous playback of multiple instrument voices, and standardized responses to MIDI messages such as note on/off events and program changes.[5][3] The core purpose of General MIDI is to promote interoperability in music production and playback by standardizing the assignment of instrument timbres, percussion sounds, and controller behaviors across MIDI-compatible hardware and software. Prior to GM, MIDI files could sound vastly different on various devices due to proprietary sound mappings and implementations, complicating sharing and performance. By establishing a common framework, GM enables musicians, composers, and producers to create and exchange sequences without anticipating hardware variations, thereby streamlining workflows in sequencing software, digital audio workstations, and live setups.[3] A major benefit of General MIDI is the enhanced portability of musical data, as it eliminates the need for device-specific tweaks to achieve intended results, while supporting polyphonic arrangements over up to 16 MIDI channels for complex, multitrack compositions. It directly complements the Standard MIDI File (SMF) format, ensuring predictable rendering of both Type 0 files (which merge all channels into a single track) and Type 1 files (which use separate tracks for each channel). Under GM, channel 10 is reserved exclusively for percussion instruments, and the 128 program change numbers are mapped to a fixed set of melodic and rhythmic sounds, guaranteeing uniform playback across compliant systems.[6]History and Development
The development of General MIDI (GM) arose in the late 1980s amid growing fragmentation in MIDI implementations, as the rapid expansion of synthesizers, sequencers, and home computers during the decade highlighted the need for greater interoperability among devices from different manufacturers.[7] Prior to GM, varying program change mappings and instrument assignments across brands like Roland, Yamaha, and Kawai often rendered MIDI files incompatible, prompting industry discussions on standardization to facilitate "plug-and-play" compatibility for musicians and composers.[8] These efforts were led by the MIDI Manufacturers Association (MMA) in collaboration with the Japan MIDI Standards Committee (JMSC), focusing on defining a common set of voices, channels, and controls to address the limitations of the original MIDI 1.0 specification established in 1983.[9] GM was officially defined as the "General MIDI System Level 1" specification in 1991 by the MMA and JMSC, establishing requirements for 128 instruments, 24-note polyphony, and standardized percussion mapping on channel 10.[10] The first compliant hardware appeared shortly thereafter, with Roland's SC-55 Sound Canvas module released in March 1991 as the inaugural GM-compatible device, which also introduced Roland's proprietary GS extensions for enhanced sounds while maintaining core GM adherence.[11] This rollout marked a pivotal shift, enabling consistent playback of Standard MIDI Files across diverse equipment and accelerating GM's adoption in consumer and professional settings. Influenced by earlier proprietary efforts like Roland's GS format launched in 1991, GM's evolution continued into the late 1990s with proposals for expansions to support more instruments and effects.[12] General MIDI Level 2 (GM2) was adopted in 1999 by the MMA, with finalization involving the Association of Musical Electronics Industry (AMEI) in 2003 to refine backward compatibility and add features like increased polyphony and drum variations.[4] By the mid-1990s, GM had integrated into mainstream computing, exemplified by Microsoft's inclusion of GS Wavetable Synth support in Windows 98 (1998), which popularized GM playback in PC-based music production and gaming.[13] As of 2025, GM remains a foundational standard despite the introduction of MIDI 2.0 in 2020, which enhances resolution and property exchange while preserving GM compatibility to ensure legacy file support. Recent advancements, such as the Network MIDI 2.0 specification announced by the MIDI Association at NAMM 2025, further emphasize GM's role in enabling seamless device integration over Ethernet and wireless networks without disrupting established MIDI workflows.[14]Core Specifications of General MIDI Level 1
Basic System Requirements
General MIDI Level 1 compliance mandates specific hardware and software capabilities to ensure interoperability among MIDI devices, focusing on polyphony, channel handling, effects processing, and initialization behaviors. Devices must support a minimum polyphony of 24 simultaneous voices, which can be allocated dynamically across melodic and percussive sounds, or alternatively at least 16 melodic voices and 8 percussion voices.[5] This polyphony requirement allows for basic ensemble playback without excessive note stealing, accommodating typical musical arrangements. Additionally, full multitimbral operation across all 16 MIDI channels is required, enabling independent instrument assignments per channel, including Channel 10 reserved exclusively for percussion.[5][1] Regarding effects and sound generation, if reverb and chorus effects are implemented, devices must provide basic processing with fixed parameters, controllable via MIDI controllers such as CC 91 for reverb send level and CC 93 for chorus send level.[5] There is no stipulation on whether sounds are generated via synthesis, sampling, or a hybrid approach, prioritizing consistent response to standard MIDI messages over specific tonal quality. System setup requires devices to respond to program change messages (0-127) on each channel and all channel voice messages, including note on/off, velocity, pitch bend, and modulation.[5] Activation of GM mode occurs automatically on power-up or upon receipt of the universal SysEx message F0 7E 7F 09 01 F7, ensuring the device enters a standardized operational state.[15] Compliance is verified through guidelines established by the MIDI Manufacturers Association (MMA), which include testing responses to all 128 programs across channels, Channel 10 percussion mapping without artifacts or glitches, and overall message handling without undefined behaviors.[5] Upon power-on or GM mode activation, all channels default to program 0 (Acoustic Grand Piano), main volume (CC 7) set to 100, and pan position (CC 10) centered at 64 to provide a neutral starting point for playback.[5] These defaults facilitate immediate compatibility with GM-standardized MIDI files without additional configuration.Channel and Voice Assignments
General MIDI Level 1 employs a fixed structure of 16 MIDI channels to facilitate standardized multitrack playback and ensure interoperability among compliant devices. Channels 1 through 9 and 11 through 16 are reserved for melodic instruments, allowing independent assignment of instrument patches to each for polyphonic performance. Channel 10 is exclusively allocated for percussion and drums, with note numbers mapped to specific drum sounds regardless of program changes on that channel.[1] Voice management in General MIDI Level 1 requires devices to support a minimum of 24 simultaneous voices (notes) across all channels combined, accommodating typical musical arrangements with multiple polyphonic parts. Each channel handles one instrument patch at a time, selected via program change messages, while supporting multiple concurrent notes on that channel; note-on and note-off events incorporate velocity values (0-127) to modulate volume, timbre, and attack characteristics for dynamic expression.[1] Instrument banks are selected using Controller 0 for the most significant byte (MSB) and Controller 32 for the least significant byte (LSB), forming a 14-bit address for up to 16,384 potential banks; however, General MIDI Level 1 restricts implementation to the default bank (MSB 0, LSB 0) to preserve compatibility, with other bank selections either ignored or resulting in no audible change. Devices power up with omni mode off by default, enabling multi-timbral operation where each channel responds independently to its assigned data.[1] MIDI mode configuration adheres to Mode 1 (omnis off, polyphonic), which must be supported and can be invoked via universal system exclusive messages or All Notes Off/Local Control variants (controllers 120-127) to reset and configure channels for independent polyphony. General MIDI Level 1 does not require or support Modes 2 through 4 (omnis on or monophonic variants), ensuring focus on multi-channel polyphonic playback.[16] Pitch bend messages, transmitted as 14-bit values (0-16,383, with 8,192 as neutral), operate with a standardized range of ±2 semitones on all melodic channels, allowing consistent expressive bending without per-channel variation in the base specification. The modulation wheel, via Controller 1 (0-127), controls vibrato depth, typically applying periodic pitch, amplitude, or filter modulation to enhance the natural variation in sustained notes across instruments.[1]Program Changes and Instrument Mapping
In General MIDI Level 1, program changes allow selection of specific instruments on melodic MIDI channels (1-9 and 11-16) by transmitting a MIDI Program Change message, consisting of a status byte ranging from 0xC0 to 0xCF (corresponding to the channel) followed by a single data byte specifying the program number from 0 to 127.[16] This standardized mapping ensures that any General MIDI-compatible synthesizer responds with the same instrument category across devices, promoting interoperability in music production and performance.[1] The 128 programs are organized into 16 families, each containing 8 instruments, providing a logical progression from more traditional or acoustic timbres to increasingly processed, electric, or synthetic variations within the group.[17] This arrangement facilitates composer predictability, as instruments in a family share similar sonic characteristics while offering variety for different musical contexts. No precise acoustic parameters or velocity response layers are mandated beyond basic MIDI velocity sensitivity (0-127), allowing manufacturers flexibility in sound design while adhering to the core mapping.[1] The following table outlines the 16 families, their program number ranges, and representative examples:| Family | Program Range | Examples |
|---|---|---|
| Piano | 0-7 | 0: Acoustic Grand Piano; 1: Bright Acoustic Piano; 4: Electric Piano 1; 7: Clavinet |
| Chromatic Percussion | 8-15 | 8: Celesta; 9: Glockenspiel; 11: Vibraphone; 12: Marimba |
| Organ | 16-23 | 16: Drawbar Organ; 17: Percussive Organ; 19: Church Organ; 22: Pipe Organ |
| Guitar | 24-31 | 24: Acoustic Guitar (nylon); 25: Acoustic Guitar (steel); 27: Electric Guitar (jazz); 30: Distortion Guitar |
| Bass | 32-39 | 32: Acoustic Bass; 33: Electric Bass (finger); 35: Electric Bass (pick); 38: Synth Bass 1 |
| Strings | 40-47 | 40: Violin; 41: Viola; 42: Cello; 45: Tremolo Strings; 47: Timpani |
| Ensemble | 48-55 | 48: String Ensemble 1; 49: String Ensemble 2; 52: Choir Aahs; 55: Orchestra Hit |
| Brass | 56-63 | 56: Trumpet; 57: Trombone; 59: Muted Trumpet; 61: Synth Brass 1 |
| Reed | 64-71 | 64: Soprano Sax; 66: Alto Sax; 68: Oboe; 71: Clarinet |
| Pipe | 72-79 | 72: Piccolo; 73: Flute; 75: Pan Flute; 78: Whistle; 79: Ocarina |
| Synth Lead | 80-87 | 80: Lead 1 (square); 81: Lead 2 (sawtooth); 84: Lead 5 (charang); 87: Lead 8 (bass + lead) |
| Synth Pad | 88-95 | 88: Pad 1 (new age); 89: Pad 2 (warm); 92: Pad 5 (bowed); 95: Pad 8 (sweep) |
| Synth Effects | 96-103 | 96: FX 1 (rain); 97: FX 2 (stars); 100: FX 5 (brightness); 103: FX 8 (sci-fi) |
| Ethnic | 104-111 | 104: Sitar; 105: Banjo; 107: Koto; 111: Shanai |
| Percussive | 112-119 | 112: Tinkle Bell; 113: Agogo; 115: Steel Drums; 119: Reverse Cymbal |
| Sound Effects | 120-127 | 120: Guitar Fret Noise; 121: Breath Noise; 123: Telephone Ring; 127: Gunshot |
Percussion Note Assignments
In General MIDI Level 1, MIDI channel 10 is exclusively dedicated to percussion instruments, where every note-on message triggers a percussion sound irrespective of any program change or bank select messages received on that channel. This setup ensures that percussion remains independent from melodic instrument assignments on other channels. Although the full MIDI note range of 0 to 127 is available, only notes 35 through 81 are officially mapped to specific percussion sounds, defining a core set of 47 instruments that must be implemented consistently across all compliant devices.[5][18] The percussion note assignments form a fixed, non-programmable mapping that prioritizes common drum kit elements and ethnic percussion for broad compatibility in music production and playback. This standardization enables sequences to specify drum patterns using simple note numbers without additional configuration. Below is the complete mapping for notes 35–81, as defined in the specification:| Note Number | Note Name | Percussion Sound |
|---|---|---|
| 35 | B0 | Acoustic Bass Drum |
| 36 | C1 | Bass Drum 1 |
| 37 | C♯1 | Side Stick |
| 38 | D1 | Acoustic Snare |
| 39 | E♭1 | Hand Clap |
| 40 | E1 | Electric Snare |
| 41 | F1 | Low Floor Tom |
| 42 | F♯1 | Closed Hi-Hat |
| 43 | G1 | High Floor Tom |
| 44 | G♯1 | Pedal Hi-Hat |
| 45 | A1 | Low Tom |
| 46 | A♯1 | Open Hi-Hat |
| 47 | B1 | Low-Mid Tom |
| 48 | C2 | Hi-Mid Tom |
| 49 | C♯2 | Crash Cymbal 1 |
| 50 | D2 | High Tom |
| 51 | E♭2 | Ride Cymbal 1 |
| 52 | E2 | Chinese Cymbal |
| 53 | F2 | Ride Bell |
| 54 | F♯2 | Tambourine |
| 55 | G2 | Splash Cymbal |
| 56 | G♯2 | Cowbell |
| 57 | A2 | Crash Cymbal 2 |
| 58 | A♯2 | Vibraslap |
| 59 | B2 | Ride Cymbal 2 |
| 60 | C3 | Hi Bongo |
| 61 | C♯3 | Low Bongo |
| 62 | D3 | Mute Hi Conga |
| 63 | E♭3 | Open Hi Conga |
| 64 | E3 | Low Conga |
| 65 | F3 | High Timbale |
| 66 | F♯3 | Low Timbale |
| 67 | G3 | High Agogô |
| 68 | G♯3 | Low Agogô |
| 69 | A3 | Cabasa |
| 70 | A♯3 | Maracas |
| 71 | B3 | Short Whistle |
| 72 | C4 | Long Whistle |
| 73 | C♯4 | Short Güiro |
| 74 | D4 | Long Güiro |
| 75 | E♭4 | Claves |
| 76 | E4 | Hi Wood Block |
| 77 | F4 | Low Wood Block |
| 78 | F♯4 | Mute Cuíca |
| 79 | G4 | Open Cuíca |
| 80 | G♯4 | Mute Triangle |
| 81 | A4 | Open Triangle |
Controller and Parameter Events
General MIDI Level 1 defines a set of standardized MIDI controller messages, known as Control Change (CC) events, to enable real-time adjustment of sound parameters on a per-channel basis. These controllers operate within the MIDI protocol's CC format, where the controller number ranges from 0 to 127, and the value ranges from 0 to 127, allowing omnidirectional control across all 16 channels. All General MIDI devices must respond to a core subset of these controllers to ensure compatibility.[22] The essential controllers include Bank Select MSB (CC 0), which selects instrument banks for program changes; Modulation Wheel (CC 1), typically controlling vibrato depth; Channel Volume (CC 7), adjusting overall gain; Pan (CC 10), positioning the sound in the stereo field; Expression (CC 11), modulating volume post-main volume control; and Hold 1 (Sustain) (CC 64), simulating a damper pedal. Additionally, channel mode messages such as All Sound Off (CC 120, value 0), which silences all sounds without affecting note on/off status; Reset All Controllers (CC 121, value 0), which restores controllers to default values; and All Notes Off (CC 123, value 0), which releases all sounding notes, are mandatory for clearing performance states and preventing stuck notes. These controllers apply channel-specifically, with volume and pan affecting the entire channel's output.[22][5] To fine-tune parameters beyond basic CC, General MIDI Level 1 supports Registered Parameter Numbers (RPNs) using CC 100 (RPN LSB) and CC 101 (RPN MSB), followed by Data Entry MSB (CC 6) and LSB (CC 38) for value setting. The standardized RPNs include Pitch Bend Sensitivity (RPN 00 00), where the data entry sets the range in semitones (MSB) and cents (LSB), defaulting to 2 semitones; Master Coarse Tuning (RPN 00 01), adjusting pitch in semitones across all channels; and Master Fine Tuning (RPN 00 02), providing cent-level adjustments. Non-Registered Parameter Numbers (NRPNs), using CC 98 (NRPN LSB) and CC 99 (NRPN MSB), are permitted but limited in General MIDI to device-specific functions without standardized interpretations, ensuring core compatibility without mandating extensions. After setting an RPN or NRPN, CC 101 or 99 set to 7F 7F disables further data entry until a new parameter is selected.[22][5] System Exclusive (SysEx) messages in General MIDI Level 1 provide global control beyond channel messages, starting with F0 and ending with F7. The primary SysEx is the General MIDI On message (F0 7E 7F 09 01 F7), which initializes the device to Level 1 defaults, resetting all parameters, clearing stuck notes on all channels, and enabling GM mode; the Off message (F0 7E 7F 09 02 F7) disables it, reverting to non-GM operation. General Channel Message (GCM) SysEx (F0 7E [device ID] 0C [channel] [message type] [data] F7) supports bulk dumps of parameters like tuning or controller states, but effects beyond basic controls are not universally defined in Level 1. Devices must process these SysEx messages to maintain interoperability, with the GM On message taking precedence over conflicting settings.[5][23] Parameter interpretations are consistent across devices: Volume (CC 7) scales the channel's output linearly from 0 (mute) to 127 (maximum), with 100 as a typical reference level; Pan (CC 10) positions from 0 (hard left) to 64 (center) to 127 (hard right), assuming equal power panning; Expression (CC 11) applies multiplicative volume modulation relative to the main volume; and Sustain (CC 64) engages at values ≥64, holding notes until release or cutoff. Reset behaviors ensure reliability: CC 121 sets all controllers to defaults (e.g., modulation and expression to 0, volume to 100, pan to 64, sustain off) but does not affect notes or program changes; CC 120 and 123 must be honored on all channels to eliminate residual sounds, with devices required to implement note-off equivalents for any stuck notes upon reset. These mechanisms allow dynamic performance control while upholding the standard's portability.[22][5]| Controller Number | Name | Function in GM1 | Value Range/Behavior |
|---|---|---|---|
| 0 | Bank Select MSB | Selects MSB for program change banks (0 for standard GM) | 0-127 |
| 1 | Modulation Wheel | Controls vibrato or filter modulation depth | 0 (none) - 127 (max) |
| 7 | Channel Volume | Adjusts channel output level | 0 (off) - 127 (max) |
| 10 | Pan | Stereo positioning | 0 (left) - 64 (center) - 127 (right) |
| 11 | Expression | Post-volume dynamic control | 0 (none) - 127 (full) |
| 64 | Sustain (Damper) | Holds notes after key release | 0-63 (off), 64-127 (on) |
| 120 | All Sound Off | Immediately silences all channel sounds | 0 (execute) |
| 121 | Reset All Controllers | Restores defaults (e.g., vol=100, pan=64) | 0 (execute) |
| 123 | All Notes Off | Releases all sustained notes | 0 (execute) |