What is XG?
Posted: 09 Apr 2009, 23:42
XG stands for “eXtended General MIDI”. When MIDI was first developed, MIDI messages and commands were standardised by a MIDI committee consisting of several bodies (inc. Yamaha). At the time different manufacturers' keyboards and tone generators (and different models from the same manufacturer) had a specific voice set, which was unique to that instrument. This meant that if you sent "Program Change #8" to something via MIDI, any keyboard understood the message and selected voice number 8. However, on one keyboard, you might get a church organ, on another, you'd end up with a didgeridoo.
To allow users to play a MIDI file on any keyboard (or sequencer), the Standard MIDI File was developed, i.e. any compatible instrument could read the file - before this, manufacturers tended to have their own (multiple) file formats. Then (late 80's) GM -General MIDI- was developed as an industry standard voice set (128 voices) to allow users to play Standard MIDI Files (SMF) on any compatible instrument. Also, in an SMF, MIDI channel 10 should be reserved for Drums.
After a while, 128 voices seemed to be a bit limited, so XG was developed. This consists of 128 x 128 banks of 128 voices each, with the first bank still consisting of the original GM voices. This is an industry standard, so any compatible product from any manufacturer (including computer sound cards and mobile phones) should play the correct voice if a Standard MIDI File contains a "Bank Select" message (control change 0, Most Significant Bit - control change 32, Least Significant Bit), followed by a Program Change message. At the moment and in most instruments, not all voice locations within the 128 x 128 banks contain voices, nor does any instrument (to the best of my knowledge) have a full set (over 2million) of voices. Most instruments tend to use "Bank Select 0" to select a voice set (GM, user voice, sound effects, drums etc.) and "Bank Select 32" to pick a bank within that set. The actual instrument (piano, flute, guitar etc.) is then selected with a program change message. Any instrument which is GM compatible, but not XG, will ignore the "Bank Select" messages and just pick the appropriate GM voice.
In the 80's MIDI was not as standard as it should have been. Roland for instance, used the "Note OFF" message when you released a key, everyone else used "Note On - velocity 0" (which is standard these days), so if you used a DX7 to control a Roland keyboard, notes used to just hang. Yamaha also used "Active Sensing" as standard, which confused some other instruments which, instead of ignoring the message if they didn't understand it (standard these days), tried to make sense of it and tied themselves up in a knot.
To allow users to play a MIDI file on any keyboard (or sequencer), the Standard MIDI File was developed, i.e. any compatible instrument could read the file - before this, manufacturers tended to have their own (multiple) file formats. Then (late 80's) GM -General MIDI- was developed as an industry standard voice set (128 voices) to allow users to play Standard MIDI Files (SMF) on any compatible instrument. Also, in an SMF, MIDI channel 10 should be reserved for Drums.
After a while, 128 voices seemed to be a bit limited, so XG was developed. This consists of 128 x 128 banks of 128 voices each, with the first bank still consisting of the original GM voices. This is an industry standard, so any compatible product from any manufacturer (including computer sound cards and mobile phones) should play the correct voice if a Standard MIDI File contains a "Bank Select" message (control change 0, Most Significant Bit - control change 32, Least Significant Bit), followed by a Program Change message. At the moment and in most instruments, not all voice locations within the 128 x 128 banks contain voices, nor does any instrument (to the best of my knowledge) have a full set (over 2million) of voices. Most instruments tend to use "Bank Select 0" to select a voice set (GM, user voice, sound effects, drums etc.) and "Bank Select 32" to pick a bank within that set. The actual instrument (piano, flute, guitar etc.) is then selected with a program change message. Any instrument which is GM compatible, but not XG, will ignore the "Bank Select" messages and just pick the appropriate GM voice.
In the 80's MIDI was not as standard as it should have been. Roland for instance, used the "Note OFF" message when you released a key, everyone else used "Note On - velocity 0" (which is standard these days), so if you used a DX7 to control a Roland keyboard, notes used to just hang. Yamaha also used "Active Sensing" as standard, which confused some other instruments which, instead of ignoring the message if they didn't understand it (standard these days), tried to make sense of it and tied themselves up in a knot.