goto section page goto youngmonkey main page make contact, e-mail

Making Music With Project XG
Advertising Space Available

Author:dhomas trenn
Published by:CU-Amiga magazine (UK)
Date:September 1997

In the past, one of the problems of distributing MIDI song files was that in order for a song to playback 'properly' on any music system, it required that the system have the same instrument sounds as the system the songs were composed on. With so many differing systems, it was next to impossible to audition a song without first having to change instrumentation or spend hours tediously tweaking sounds and settings.

Fortunately though, as with most problems, it is only a matter of time before someone comes up with a way to improve things. In September of 1991, the MIDI Manufacturers Association (MMA) and the Japanese MIDI Standards Committee (JMSC) adopted the "General MIDI System - Level 1" specification (GM).

When used in conjunction with the Standard MIDI file format (SMF), GM provides a more compatible way to exchange music compositions from one system to another.

Standard MIDI File Format
Different hardware and software sequencers or trackers, generally, have their own format for storing song data. If you want to load a sequence from one program into a different program you need a specific export/import function or a conversion utility to do so. The Standard MIDI File format was created to provide a standard file format that could be used to transfer sequences from one system to another. SMF supports three different variations:

Format 0: Stores all MIDI data in a single track. It allows the simplest methods of playback and is the most commonly used.

Format 1: Adds the capability to store MIDI data separated into multiple tracks. This format is recommended for ease of modification.

Format 2: Allows the storage of multiple tracks and multiple sequences.

Unlike common tracker and mod formats, SMF does not store actual sound data. It only stores MIDI information for triggering and controlling sound generation devices. One main advantage of this is a substantial reduction in file size.

General MIDI
At it's most basic level, GM provides a specific set of sounds assigned to specific MIDI program change and note numbers. These sounds are divided into two sections: instrument and percussion.

The instrument section allows musicians to put MIDI program change messages in song files to specifically select a particular sound on a GM device. This insures that a part that is intended to be played on piano is not played by a flute or other instrument. In this way, selecting patch/program number 3 and playing notes, will always produce the sound of an Electric Grand piano. GM provides for the selection of 128 instruments divided into 16 different groups or families (see Table 1). Instruments can be triggered on MIDI channels 1 to 9 and 11 to 16.

The percussion section contains 47 'drum' sounds assigned to specific MIDI note numbers 35 to 81 (see Table 2). Some GM devices extend this range to include additional sounds for the remaining Note numbers 1 to 34 and 82 to 128, but these additions are generally device specific and not compatible across different systems. MIDI channel #10 is set aside for control of the percussion section.

There is no defined MIDI standard for keyboard octave relation. Some manufacturers number octaves from 0 to 10, others use -2 to 8 to refer to the same notes. A common problem related to this is that songs may playback shifted up or down one or more octaves. GM solves this by assuring that all patches will have a pitch of 440 Hz (A440) when playing MIDI note number 69.

GM does not define how sounds are to be generated. It is up to the hardware manufacturer to implement sounds that conform to GM, be it through analog, FM, wavetable, or monkey synthesis. So, an Acoustic Grand piano (#1) might not sound exactly the same on an GM analog device as it does on a GM digital sample player.

In addition to instrument and percussion sound selection, GM also implements other commonly used features of MIDI. These include: velocity, pitch wheel, channel pressure, controllers and registered parameter messages.

Velocity: Generally, velocity (part of the MIDI note message) is used to control the volume that a sound plays back at for each note (VCA level). Some devices may allow velocity to control other parameters, instead.

Pitch Wheel: Pitch wheels or pitch benders, as they are often called, offset the frequency that notes play back at. GM defaults to a range of -2 to +2 semitones, allowing frequencies to be 'bent' from the normal. Pitch bending affects all notes playing on the assigned MIDI channel.

Channel Pressure: This is the amount of pressure or 'push' when playing a note on a keyboard. It is often applied to control vibrato (VCO level) or volume (VCA level). Channel pressure affects all notes playing on the assigned MIDI channel.

Controllers: The following MIDI controller messages are also supported: Modulation (1), Channel Volume (7), Pan (10), Expression (11), Sustain (64), Reset All Controllers (121) and All Notes Off (123). Channel Volume defaults to 90 (0 to 127) with all other controllers set to off or normal.

Registered Parameters: MIDI RPN messages are also supported: Pitch Wheel Bend Range (0), Fine Tuning (1) and Coarse Tuning (2).

GM requires that devices (hardware or software) meet the following minimum playback requirements:

24 Voices: A minimum of 24 voices are available for instrument and percussion sounds. Generally, one voice is required to playback one sound at one pitch. So, playing a single note, usually requires one voice. But, playing a 3 note chord would require 3 voices. So, if at a particular time you wanted to play several 8 note chords, you would be limited to a maximum of 3 instruments playing at once. Also, keep in mind that some devices may implement instruments with layered voices, so playing one note may require multiple voices. Some devices implement voice allocation specifically as 16 instrument voices plus 8 percussion voices.

16 MIDI Channels: Each channel can play a different instrument and can respond to separate MIDI controllers, pitch wheel, etc.

Although GM was a step in the right direction it was only developed as a "recommended practice" for use with MIDI, it was never intended to be a standard. Manufacturers such as Roland and Yamaha chose to build on GM, each offering their own enhancements to the General MIDI guidelines.

Roland GS
The first commercially available GM device was Roland's Sound Canvas. This device and those that came after it followed Roland's GS format. GS expanded on GM by adding more instruments to the percussion section and varied patches to the instrument section. Among other additions, it allows control of tuning, pan, level and reverb for each percussion sound.

Yamaha XG
Yamaha also expanded on the GM specification offering four main advantages with their XG system: more sounds, editing capability, effects processing and external inputs.

Sounds: XG increases the instrument and percussion sections to a minimum of 480 sounds. It implements a bank selection system to accommodate the increased number of voices. To select a particular sound, a bank is first selected and then followed by the standard program change message. The sound selection process is delayed until both a bank select and program change message are received. So, just sending a bank select message will not work.

The bank selection is divided into two parts: MSB and LSB. The MSB specifies the type of sound: instrument (melody), sound effect, or rhythm voice. This means that percussion is not limited only to MIDI channel 10, as in GM. The LSB is used to select instrument variations.

Editing: In addition to the control options of GM, XG provides additional parameters that allow the sound waveforms to be changed. This includes control of brightness (filter cutoff frequency), harmonic content (resonance), attack rate, release time and others. These enhancements can be applied to any sounds in the XG sound sets.

Effects Processing: XG provides effects processing which can be applied to individual MIDI channels or to all channels simultaneously. There are three effect groups: reverb (8 types, ex: hall, room), chorus (8 types, ex: chorus, flanger) and variation (35 types, ex: reverb, chorus, tremolo, rotary speaker, auto-wah, amp simulator, distortion). Each effect can also be modified with real-time parameters such as: time and frequency. Some devices may also include a graphic equalizer.

External Inputs: XG allows other sound sources such as microphones, synthesizers or tape recorders to be mixed with MIDI playback. This audio signal can be controlled through MIDI or additionally processed with the effects.

XG is upward compatible with GM, so GM data will playback and can be created on any XG tone generator. However, XG enhanced files will not playback on GM devices.

GM Concerns
GM and it's numerous offshoots do not provide a guarantee of 100% accuracy from system to system. Although GM provided guidelines for manufacturers to follow, it did not give specific details on how to implement all features. Every manufacturer interpreted some things differently, so every device has its own little quirks and oddities.

Of particular concern is the allocation of voices. Although GM guidelines require a device to have 24 voices, it does not specify how they are to be used. So an instrument, such as Drawbar Organ (#17), might require one voice on one device but use four or more on another. To be sure, avoid using the maximum voices, when possible.

Similarly, if a sound has a longer release, it will still use at least one voice while it continues to fade, even if you can not hear it. So it is important to be careful about holding notes longer than necessary. Do not assume that because you can not hear a voice that it is not playing. If in doubt, try turning the volume up and listen closely.

Another concern is that GM does not specify what VCA envelope (volume shape) each sound should have. This means that a sound on one device might not have the same release (time for volume fading) as on another. So, some sounds may unexpectedly cut-off or overlap on one GM device but not on another.

General MIDI provides a great way for composers to share their MIDI creations with others, making it much more likely that the listener will hear a song the way it was intended to be heard. GM does have some downfalls and it is not appropriate for every application, but overall it has been well designed and thought out. GM was designed with the future in mind and enhancements, such as those provided in XG and GS, improve much on the original specification.

For more information on MIDI contact:

MIDI Manufacturers Association

Yamaha Corporation of America

Roland Corporation US

TABLE 1: GM Instruments
Program #Instrument/SoundProgram #Instrument/Sound
1Acoustic Grand65Soprano Sax
2Bright Acoustic66Alto Sax
3Electric Grand67Tenor Sax
4Honky-Tonk68Baritone Sax
5Electric Piano 169Oboe
6Electric Piano 270English Horn
Chromatic PercussionPipe
11Music Box75Recorder
12Vibraphone76Pan Flute
13Marimba77Blown Bottle
15Tubular Bells79Whistle
OrganSynth Lead
17Drawbar Organ81Lead 1 (square)
18Percussive Organ82Lead 2 (sawtooth)
19Rock Organ83Lead 3 (calliope)
20Church Organ84Lead 4 (chiff)
21Reed Organ85Lead 5 (charang)
22Accordian86Lead 6 (voice)
23Harmonica87Lead 7 (fifths)
24Tango Accordian88Lead 8 (bass+lead)
GuitarSynth Pad
25Nylon String Guitar89Pad 1 (new age)
26Steel String Guitar90Pad 2 (warm)
27Electric Jazz Guitar91Pad 3 (polysynth)
28Electric Clean Guitar92Pad 4 (choir)
29Electric Muted Guitar93Pad 5 (bowed)
30Overdriven Guitar94Pad 6 (metallic)
31Distortion Guitar95Pad 7 (halo)
32Guitar Harmonics96Pad 8 (sweep)
BassSynth Effects
33Acoustic Bass97FX 1 (rain)
34Electric Bass (finger)98FX 2 (soundtrack)
35Electric Bass (pick)99FX 3 (crystal)
36Fretless Bass100FX 4 (atmosphere)
37Slap Bass 1101FX 5 (brightness)
38Slap Bass 2102FX 6 (goblins)
39Synth Bass 1103FX 7 (echoes)
40Synth Bass 2104FX 8 (sci-fi)
Solo StringsEthnic
45Tremolo Strings109Kalimba
46Pizzicato Strings110Bagpipe
47Orchestral Strings111Fiddle
49String Ensemble 1113Tinkle Bell
50String Ensemble 2114Agogo
51SynthStrings 1115Steel Drums
52SynthStrings 2116Woodblock
53Choir Aahs117Taiko Drum
54Voice Oohs118Melodic Tom
55Synth Voice119Synth Drum
56Orchestra Hit120Reverse Cymbal
BrassSound Effects
57Trumpet121Guitar Fret Noise
58Trombone122Breath Noise
60Muted Trumpet124Bird Tweet
61French Horn125Telephone Ring
62Brass Section126Helicopter
63SynthBrass 1127Applause
64SynthBrass 2128Gunshot

TABLE 2: GM Percussion
MIDI Note #Drum SoundMIDI Note #Drum Sound
35Acoustic Bass Drum59Ride Cymbal 2
36Bass Drum 160Hi Bongo
37Side Stick61Low Bongo
38Acoustic Snare62Mute Hi Conga
39Hand Clap63Open Hi Conga
40Electric Snare64Low Conga
41Low Floor Tom65High Timbale
42Closed Hi-Hat66Low Timbale
43High Floor Tom67High Agogo
44Pedal Hi-Hat68Low Agogo
45Low Tom69Cabasa
46Open Hi-Hat70Maracas
47Low-Mid Tom71Short Whistle
48Hi-Mid Tom72Long Whistle
49Crash Cymbal 173Short Guiro
50High Tom74Long Guiro
51Ride Cymbal 175Claves
52Chinese Cymbal76Hi Wood Block
53Ride Bell77Low Wood Block
54Tambourine78Mute Cuica
55Splash Cymbal79Open Cuica
56Cowbell80Mute Triangle
57Crash Cymbal 281Open Triangle