XG Guidebook Bank Select MSB (cc #0) is used to select one of four bank types: If MSB = 00h, Bank Select LSB (cc #32) is used to select one of 128 banks: Bank 0 Bank 1 Bank 2 Program change message (0 - 127) is then used to select desired voice or kit. Bank 127 MSB = 00h Melody voices MSB = 40h SFX voices MSB = 7Eh SFX kit MSB = 7Fh Rhythm kit . . . In all XG instruments, Bank 0 of Melody voices (the default setting) contains the standard GM Sound Set. Other banks contain what are known as “Variation” voices. These voices are grouped in banks by their musical characteristics, making it easy to locate particular kinds of sounds. The current XG Specification defines a minimum of 520 melody voices (including the GM Sound Set), and more may be added (the Yamaha MU80, for example, provides 729 XG voices). Unique sounds which are not direct variations on the GM Sound Set are located in their own “SFX” bank, accessed by setting the Bank Select MSB to 40h. In line with the GM format, program changes take effect starting with the next Note On message. This ensures that XG instruments will not cut off voices which may be sounding when a program change message is received on a particular channel. Also, the processing of a Bank Select message is suspended until the next received program change message. This means that a Bank Select message by itself will not cause the sound to change. In contrast to GS, when an XG instrument receives a Bank Select MSB/LSB message followed by a program change message that points to an empty melody voice slot, the instrument substitutes the corresponding GM Sound Set voice, ensuring that the voice will be heard with a sound that is at least similar to the one intended. (However, if a Bank Select MSB value of 01h - 7Eh [SFX voice, kit or unused MSB] is received and the tone generator does not have a voice corresponding to the last received LSB and program change, the tone generator will produce no sound for that channel.) The XG format allows any MIDI channel to be easily utilized as a rhythm channel simply by transmitting a Bank Select MSB value of 7Fh, followed by an LSB of 00h and the desired program change message (for more information, see the next section in this Guidebook). Conversely, a channel which defaults for use as a rhythm channel (channel 10 and, in some XG instruments, channel 26 as well) can be easily converted for use as a Melody voices channel simply by transmitting a Bank Select MSB value of 00h, followed by an LSB of 00h and the desired program change message. The MIDI Specification makes no reference to the use of percussion voices (voices where multiple rhythm sounds are mapped one to a key) or to the use of rhythm channels (MIDI channels dedicated to carrying rhythm information to be played by percussion voices). GM GM specifies that MIDI channel 10 is to be used exclusively as a rhythm channel, and further designates a single standard GM “Percussion Map,” in which note numbers 35 - 81 are assigned particular drum and percussion sounds. As with the GM Sound Set of melody voices, there is no requirement that precise names be used for the percussion voices themselves, and, in some cases, the same sound may be used for two or more voices. Again, there is no stipulation as to the type of process to be used for sound generation, so that the quality of the various percussion voices can vary greatly from manufacturer to manufacturer or from model to model. GM ensures compatibility only to the degree that a “Snare” sound played on one GM instrument will sound more or less like the “Snare” sound played on any other GM instrument. GS As with GM, GS-compatible instruments use channel 10 for rhythm parts. GS expands on GM, however, by expanding the range of the GM Percussion Map to include note numbers 27 - 87 and by adding a minimum of nine alternate “drum kits” and a single SFX kit (which add some variation drum sounds to the GM Percussion Map), accessed by transmitting program change messages over MIDI channel 10. However, when a GS-compatible instrument receives a program change message on channel 10 pointing to a drum kit that doesn’t exist, no sound is heard. A GS system exclusive message can be utilized to designate an additional rhythm channel which can optionally access an alternate percussion map. This message cannot be used for realtime change. Following the GM convention, XG-compatible instruments normally use MIDI channel 10 as a rhythm channel (though, unlike GM, channel 10 can optionally be designated to play melody voices). However, as noted in the previous section in this Guidebook, the XG format expands on GM by allowing additional channels to be designated for rhythm parts as well (and in real time), by simply transmitting a Bank Select MSB value of 7Fh, followed by an LSB of 00h and the desired program change message. XG-compatible instruments which support 32 MIDI channels normally use both channel 10 and channel 26 (the tenth channel in the second set of 16) as rhythm channels. As with GS, program change messages transmitted on a rhythm channel are used to select alternate rhythm kits. The current XG Specification describes eight alternate rhythm kits in addition to the GM Percussion Map (assigned to Rhythm Kit #1, which is the default), and more may be added in future. In contrast to GS, when an XG-compatible instrument receives a program change message pointing to a rhythm kit that doesn’t exist, it is ignored and the currently selected rhythm kit (the default Rhythm Kit #1, if none has been selected) is used, ensuring that sound is heard. In addition, a full bank of “SFX Kits” (each containing SFX voices, mapped one to a key) is designated and can be accessed by transmitting a Bank Select MSB value of 7Eh, followed by an LSB of 00h and program change message (to select the desired kit). Again, when an XG-compatible instrument receives a program change message pointing to an SFX kit that doesn’t exist, it is ignored and the currently selected SFX kit (the default SFX Kit #1, if none has been selected) is used, ensuring that sound is heard. Effects The addition of effects—reverb, echo, chorus, flanging, phasing, distortion, and other types of signal processing—has become an integral part of modern electronic sound design. It is fair to say that a defined procedure for setting effects is an important requirement for music data compatibility. However, when MIDI was adopted in 1983, few if any electronic musical instruments had onboard effects. For this reason, the MIDI Specification does not provide any guidance for the use of MIDI messages to control effects. However, five controller numbers are designated for use as follows:XG Guidebook cc #91 : External Effects Depth cc #92 : Tremolo Depth cc #93 : Chorus Depth cc #94 : Celeste (Detune) Depth cc #95 : Phaser Depth The interpretation and use of these is basically left to the discretion of the manufacturers of MIDI instruments. However, these MIDI control change messages are most commonly used to set send levels for different internal effects, with cc #91 usually used as a send level for reverb, which is the most commonly provided onboard effect. Because these are channel messages (as opposed to system messages), they may be used to set effects send levels for individual channels in a multitimbral instrument—and they can also be used for realtime change of send levels (the processing of system messages often causes audio output to be muted and so cannot be used for realtime change). GM GM makes no mention of the usage of effects. GS GS adds optional (though recommended) support for two internal effects: reverb and chorus. If these effects are provided, a minimum of eight preset varieties of each of these two types of effects are included, with system exclusive “Macro” messages used to select from among them. If these effects are provided, reverb send level is determined by cc #91, and chorus send level is determined by cc #93. Non-Registered Parameter Numbers (NRPNs) can then be used to set reverb and chorus send levels for individual sounds within drum instruments. (See the “NRPNs” section in this Guidebook for more information.) XG greatly expands upon GS by mandating the use of a minimum of three onboard effects: reverb, chorus, and “Variation.” The Variation effect may be used either in a standard send-return configuration, or in a unity gain “insert” configuration, and a system exclusive message is used to set the desired condition. The XG Specification defines 4 basic and 4 extended preset reverb effects types; 3 basic and 5 extended preset chorus effect types; and 26 basic and 10 extended preset Variation effect types. System exclusive messages are not only used to select preset effects types but are also used to specify effects routings (allowing for parallel or variable amounts of serial routing) or even to make parameter changes to the effects themselves. Together, this allows the user to completely customize a sound’s effects from the ground up. Moreover, a user-defined realtime controller (such as a footpedal or wheel) can optionally be used to alter one effects parameter (usually dry/wet mix) in the selected Variation effect. In XG-compatible instruments, reverb send level is determined by cc #91, chorus send level is determined by cc #93, and Variation send level is determined by cc #94. Non-Registered Parameter Numbers (NRPNs) are used to set reverb, chorus, and Variation send levels for individual sounds within drum instruments. (See the “NRPNs” section in this Guidebook for more information.) XG also provides support for an optional fourth insertion effect as well as for an optional five-band master graphic equalizer. System exclusive messages are used to choose from among preset insertion effects types or eq curves and/or to alter the parameters of the selected effect (in the case of the five-band equalizer, to set the gain, center frequency, and bandwidth of each of the five bands).