Nick Howes of Yamaha's European Music Software Division shows you how to get the best out of XG soundcards.
Like Roland's GS protocol, XG is an extension to General MIDI or GM (see the 'General MIDI: In General' box). XG is implemented both in stand‑alone instruments and soundcards. The advantage of soundcards is that they are affordable, yet have technical specification that rivals many stand‑alone synths. Many users, however, get no further than playing with the presets. The aim of this article is to explain a little of the technical background of the format and then suggest a few areas that XG soundcard owners might like to explore in more depth.
The concept behind XG is to provide greater scope than the original GM or GS specification by allowing upward expansion whilst maintaining backward compatibility. The three key features of XG are:
1: Compatibility: Any XG instrument, regardless of model or manufacturer, will provide faithful reproduction of XG music files and will also be 100% General MIDI‑compatible, since it is an enhancement to, and not a replacement for, General MIDI.
2: Scalability: There are several different levels of XG compatibility. One level is implemented in high‑end instruments such as the Yamaha MU80; another is implemented in mid‑range instruments such as the Yamaha MU50; and details of additional levels will be announced in the future. These different levels should mean that we'll be seeing a wide range of XG instruments in the years ahead, each with its own character and each offering different feature sets at different price points. Each, however, will faithfully replay XG data in accordance with its level of sophistication — if a particular instrument doesn't support a variation voice, for example, it will automatically substitute the corresponding basic GM voice.
3: Expandability: The XG format, like MIDI itself, is an open architecture, which will allow for the addition of new enhancements as future technology continues to evolve.
The standard General MIDI format provides only 128 voices, and allows only limited parameter editing. The XG extension is designed to increase both the number of voices available, and the range of editing and processing possibilities. Yamaha's DB50XG daughterboard and ISA bus SW60XG synth soundcard, for instance, feature not only substantial synthesizer sections, but also more than 60 24‑bit resolution effects processor types, ranging from guitar amp simulators, reverbs and phasers to delays and distortions. The DB50XG offers over 600 fully editable voices plus 21 drum kits, in which each drum sound can be individual modified if required.
To use a DB50XG you need to plug it into any soundcard with a 26‑pin WaveBlaster‑style connector. Most SoundBlaster compatibles (apart from the AWE64) feature this connector, which comprises two rows of 13 pins wired as shown in table 1 below. The sound from the DB50XG is then piped out through the host soundcard, so the ultimate sound quality is only as good as the host soundcard's output stage permits — which, in the case of many cheap or poorly screened soundcards, is far from ideal. In order to produce a cleaner sound and make mixing more flexible, therefore, some users have modified their DB50XGs so as to bypass this stage by providing a separate, direct output. Details of this modification were given by Martin Walker in the February 1997 issue of SOS. The SW60XG is a complete soundcard in its own right, and has its own 18‑bit D/A converters designed to provide sound quality comparable to that of a stand‑alone synth.
A major advantage to using a daughterboard such as the DB50XG is that it requires no software drivers — if the host soundcard works, the DB50XG will work just so long as the host card correctly feeds MIDI out of its WaveBlaster port. The downside of this setup is that most SoundBlaster type cards can only address 16 MIDI channels across both their external joystick/MIDI ports and the internal WaveBlaster connector. In practice, this means that whatever is coming out of the external MIDI socket is also being sent to the DB50XG. If this is too limiting, fitting an SW60XG is a better solution, as this card functions as an independent MIDI port, though it does take up an ISA slot. Ensure that you don't have a joystick plugged in when you're making music as these can sometimes interfere with MIDI operation.
Some of the more professional cards (like the Turtle Beach range) have independent access to their external MIDI ports, but even on standard soundcards there's still a way around this problem using system exclusive data — more on this in a moment.
The concept behind XG is to provide greater scope than the original GM or GS specification by allowing upward expansion whilst maintaining backward compatibility.
Because the DB50XG is a daughterboard and not connected directly to the PC‑bus, it will not appear as a device or driver in your PC multimedia‑MIDI properties list. The option to select the DB50XG will usually be something along the lines of 'MIDI for External Port' or similar. This can normally be configured from the drivers for your host soundcard, and with the Creative Labs SB16, it should just be a case of plugging in the DB50XG and switching on.
If you open up your PC and find that your soundcard doesn't have the WaveBlaster connector socket (for example, the AWE64), there are other options. One solution is to fit one of the cheaper MIDI interface cards with a daughterboard connector, but this takes up systems resources and may compromise the sound. The SW60XG is a more effective alternative.
Knowing the extent to which Plug and Play was fraught with problems, Yamaha decided to produce a stand‑alone ISA buss card, the SW60XG, which was released about 10 months after the DB50XG. The card has analogue inputs that allow it to be used both as a synth and as a 24‑bit multi effects processor (both the DB50XG and the SW60XG have three independent parallel effects busses). Yamaha decided not to give the SW60XG its own external MIDI interface, on the grounds that nearly all PCs are shipped with a soundcard of some description, all of which come with MIDI interfaces as standard; including an additional MIDI interface would have added significantly to the processor's interrupt burden.
The driver that comes with the SW60XG installs across Windows 95 and Windows 3.11 in exactly the same way, and uses only one port address, selectable from a range of options. If an external MIDI port had have been fitted onto the card, this approach would not have been possible. The SW60XG functions as an internal MIDI device and appears in the device list for multimedia devices in the Windows control panel, it can be accessed independently of any MIDI equipment you might have connected to another soundcard.
To run the card in Windows NT 4.0, select a port address that your existing cards aren't using (SCSI cards and SoundBlaster compatibles tend to use Port 300or 330H, so it's best to avoid these) and installing the SW60XG as a generic MPU401 device. The same is true for for OS/2, and it's possible to run multiple SW60XGs in one machine (slots permitting).
For external use, the MU10XG (now discontinued) was produced using the same basic sound engine as a DB50XG but with direct computer interfacing for Macs, PCs and Atari STs as well as regular MIDI. The XG range of modules and keyboards has a common operating protocol, so if you have an MU50/80/90/100, or even a CS1x, then much of this article is still relevant.
No Sysex Please, We'Re British!
While it's quite possible to control XG instruments via raw SysEx as described in the box below, it's not everybody's idea of fun. Fortunately, however, there is a more user‑friendly way to do so. XGEdit is a utility which was originally developed for parameter editing on the GS range of modules and keyboards. Its programmer, Gary Gregson, has since adapted it to work with the DB50XG, and it is designed to make editing the XG cards as easy as editing a conventional synth, by taking every parameter that you can access via SysEx and turning it into a knob or menu box. Currently, XGEdit supports Windows 95, 3.11, NT 4.0 and Macintosh (for the MU10/50 and 80). As Gary owns the rights to XGEdit, he charges £25 for the registered version; this and the shareware version are distributed via Yamaha's UK web site (www.yamaha.co.uk). If you own an XG card and want to do detailed parameter editing, it's well worth the money.
As with any synth editor, the full version allows you to save your edits, but it also allows you to load in a GM MIDI file and edit the sounds as the file is playing — XGEdit has a functional MIDI playback facility. You can then resave the resulting MIDI file with all of the correct XG voices (full access to every single sound, by name!), and settings, which can then be loaded back into your favourite sequencer so you can carry on with the composition process.
Turn Me Off
As was mentioned earlier in the article, when the DB50XG is connected to a basic SoundBlaster‑ compatible card you tend to get everything that goes to the WaveBlaster socket coming out of the joystick MIDI port as well. The way around this is quite simple (though still frustrating when you want to use any card attached to the socket to its full 16‑part capability) — you turn off channel reception on the DB50XG. Having first initialised the card in XG mode (XG On), as explained elsewhere in this article, a set of SysEx commands must be sent for each channel.
The command for turning off individual channels is:
F0 43 10 4C 08 NN 04 7F F7
Where NN is the part number, or MIDI channel (eg. 01 to 0F, corresponding to channels 1 to 16)
Put this SysEx message into your event list, and the DB50XG will no longer respond on whichever channels you've turned off until you next send an XGreset.
Variations On A Theme
A common misconception concerning multitimbral soundcards is that you can use a different effects processor on every MIDI channel. Though the XG specification makes provision for multiple effects busses, no current XG device supports enough to make this possible (you would need as many busses as there are MIDI channels, ie. 16). While the new MU100R can effectively deal with seven, the DB50XG/SW60XG and the MU10 all have three busses. What this means in practice is that at one time, you can use only one effect from each of those available on each buss (bus 1 is reverb, bus 2 is Chorus, and bus 3 is the Variation effect, where the bulk of the more unusual stuff is), but that each channel can use any combination of these, as each effect can have a different effects send setting for each channel. It's possible, for instance, to have reverb on channel one, chorus on channel two, reverb and lots of chorus and distortion on channel three, and distortion and less chorus on channel four. It's just like working with regular effects and a mixer with three aux sends, except that the effects sends are simply controller messages (MIDI controllers 91,92 and 94 respectively).
The Variation buss is best used in what is known as system mode. This mode, rather than locking a variation effect to a specific channel, allows the same effect to be used on all 16 channels with varying amounts (using controller 94). Putting the card into this mode requires either XGEdit or a simple SysEx command, which is:
F0 43 10 4C 02 01 5A NN F7
where NN is set to 1 to activate system mode and 0 to turn it off.
If you are using an MU50/80/90 or 100, an easy way to see what SysEx message you need to enter is by quickly hitting the enter key on the front panel twice whereupon either a controller message or SysEx message will appear in the display. It's worth mentioning that XG never requires you to calculate checksums as is necessary with some SysEx messages.
A common tech support question is from people who can't figure out how to use their sequencer and XGEdit at the same time. All they get is 'Device already in use' errors. The solution involves multi‑client software drivers, something Martin Walker touched upon some months back.
Most soundcards and MIDI interfaces come with a basic software driver, but back in the dark ages when MIDI implementation in Windows was just a glint in Bill Gates's eye, nobody really thought that anyone would want to access the same piece of hardware from more than one application, and so the concept of what is now called Multi‑client MIDI didn't exist. For example, if you are running Cubase, Cubase talks to the multimedia subsystem of your computer and checks what drivers are installed. It will then give you the option to select one or several of these (depending on how many MIDI ports you have) to access your soundcards, MIDI ports or onboard sounds. If you try to run an application such as XGEdit at the same time, which is also trying to communicate with the hardware, and if you're not using a multi‑client MIDI driver (such as the Cakewalk MPU401 MIDI driver), you are scuppered!
This is where a handy application called HUBIs Loopback comes to the rescue (all of the information for this is available in a read me file for the program). This driver acts as an overlay to your existing drivers and makes them multi‑client. You can determine how many applications you want to access hardware items, such as the DB50XG, at the same time, and once installed (and after you have rebooted Windows), allows you to run XGEdit and your favourite sequencer at the same time. Providing you have your sequencer set up correctly, moreover, you can record all of your edits in real time.
I would still recommend using XGEdit to create the initial set up bar rather than loop recording your edits until you are happy with the initial sounds, however, as this can flood your sequencer with unnecessary data and cause problems with some soundcards (the Creative Labs MIDI driver, for instance, not being for a true hardware MPU401 device, can struggle with lots of SysEx and controllers). XGEdit can be used during the song for adding subtle changes as the track isplaying, a facility which is particularly useful for dance music. A range of support and utility software is available from the Yamaha web site (see details on the left).
As computers become more powerful, it becomes more practical to implement synthesis purely in software, and Yamaha's SYXG50 is an entirely software XG instrument. You might think this makes cards obsolete, but the hardware tends to do a better job than the software‑only equivalent, and none of the Yamaha XG cards make demands on the overall CPU power like software synths do. However, the SYXG50 softsynth provides a revealing demonstration of the XG format at around 20 pounds for the fully programmable XG version. Yamaha are also planning more cards using the kind of advanced synthesis technology normally associated with stand‑alone instruments, so it seems that XG can expect a long and interesting future.
General MIDI: In General
The continuing success of MIDI as a standard for interfacing musical instruments and controlling devices is probably due to its extreme flexibility. This flexibility, however, also means that MIDI files created for use with one instrument can sound utterly different when played back on another. In order to overcome this problem, a stricter protocol called General MIDI or GM was introduced in 1991. The General MIDI protocol specifies a set of 128 sounds with fixed patch numbers, the idea being that every synth or sound module which supports the protocol will play back General MIDI files using (its interpretation of) the appropriate sounds. On any GM instrument, for instance, patch number 13 will be "marimba", though different GM instruments may have different ways of synthesizing the sound of the marimba.
While the basic GM specification certainly allows MIDI files to be played across different platforms without compatibility problems, however, many users find its 128 voices and limited editing facilities too restrictive. Some manufacturers have, therefore, developed extensions to the basic ("Level 1") GM specification, the idea being to extend the number of voices and the degree of editing available while retaining the cross‑platform compatibility which is GM's main attraction. The XG protocol is Yamaha's extension to General MIDI
Pin out assignments for DB50XG conforming to WaveBlaster specifications:
Table 1 Code Warriors
Anyone who's read the manual that comes with the DB50XG will tell you that whilst it is certainly thorough, it's not exactly an entertaining read. I know from answering hundreds of calls and emails that to many, SysEx is a minefield of unintelligible code. It is, however, something upon which the XG cards and modules rely heavily. System Exclusive data is manufacturer‑specific code that is normally entered in hexadecimal form, and makes up a string that points to a parameter. The easiest way to explain this is by example.
All SysEx messages start with the code F0, and end with F7. Let's consider the most important SysEx message for XG — the XG System On message:
F0, 43, 1n, 4C, 00, 00, 7E, 00, F7
As we have covered the F0 and the F7, let's skip on to the second data byte. For all Yamaha instruments this is also essential, as it's the Yamaha ID code. If the second data byte is not hexadecimal 43, any Yamaha piece of equipment will simply ignore the rest of the message. With respect to the third data byte 1n, n is the device number. This is normally set to 0 (0 to A are possible in Hex), in which case your data byte would appear as 10. The fourth data byte 4C is the model ID. This can vary from synth to synth, but for most of the XG range (all of the soundcards) is always 4C. Next comes the bit that actually does all the work. The four values represent the address locations of the parameter that you wish to access and the data value that you wish to assign to this address.
The XG cards have multiple editable parameters, so how for instance would you select one of these using system exclusive data? Well you would start by loading up your sequencer and using the event list option to enter SysEx (check your sequencer manual for how to do this). For this example I'll use Cakewalk, but any of the good pro sequencers on the market should do the job equally as well.
The example I'll use is the Pitch Envelope Initial Level. This can be represented in SysEx as follows:
F0 43 10 4C 08 00 69 NN F7
The data bytes in this message are 08, 00, 69 and NN. The 08, 00, 69 together make up the address location of the parameter for PEG INIT LVL (Pitch Envelope Initial Level) — locations for all the DB50XG's editable parameters are listed in the manual. NN is the value to be assigned to that location, and can be any value in Hex between 0 (off) to 7F (full on).
All parameters can be accessed in this way, and many of the common ones such as filter cutoff can also be accessed just by using standard MIDI controllers rather than SysEx, which makes life even easier. A full list of every XG parameter and more on how to use SysEx is available in a free booklet from Yamaha.
The key to success when manually entering the SysEx into your own composition is the data order. XG is rather strict about the order in which the initial data is sent and how far apart it should be spaced. A good idea is to look at the event list for one of the demo tracks that come with the cards on CD‑ROM, but in essence it is always wise to follow these guidelines for data order. These should be inserted into your song before the note data starts (eg. at bar 1!).
1: Insert the GM system on message (SysEx).
2: Leave a gap of at least 200 milliseconds (This is the time required by General MIDI to reset and initialize itself).
3: Now insert an XG On system message.
4: Leave a gap of at least 50 milliseconds (the time required by an XG unit to initialize and reset itself).
5: Send all the system exclusive messages for the effects (variation connection type, variation type, and the effect parameters, in that order).
6: Send all of the bank select messages for each MIDI channel, followed by all of the program change messages.
7: Now send all of the required controller and NRPN/RPN messages (for example the filter cutoff settings of your sound).
8: Repeat the steps 6 and 7 for all 16 MIDI channels.
THE ALTERNATE DB50XG/SW60 GUIDE
Nick's 60+ page free complete guide to SysEx and every parameter on the XG cards:
THE XG MIDI PRODUCTION SPECIFICATIONS
Free from yamaha.co.uk or 01908 369252.
SYXG50 SOFTWARE SYNT(free demo version and full version), XGEDIT (shareware and full versions) available from www.yamaha.co.uk." target="_blank
Nick Howes works as a programmer for Yamaha MusicSoft Europe at their London office. He previously worked for several years as programmer for Ultravox, and was on the technical support staff at Yamaha‑Kemble's Media Technology Division. He currently also runs Yamaha's European web site, and was on the team that voiced the AN1x, CS1x, QS300 and W7.
Nick Howes can be contacted on: MAILTO:email@example.com