Making The Simpsons Sing

The talk is, in case it wasn’t clear, about the Kurzweil VGM MIDI synthesizer board. The two larger synthesizer chips are named Homer and Marge, and the three smaller ROM chips are Bart, Lisa, and Maggie. The VGM looks a lot like a typical Wave Blaster compatible daughterboard, but it’s not, and it wasn’t designed as such. It was in fact designed an expansion board for the Kurzweil PC88 keyboard, providing additional voices (the ‘V’) and General MIDI compatibility (the ‘GM’).

The Musical Simpsons Family

The VGM has a Wave Blaster style 26-pin connector, but can’t be attached to a standard WB-compatible sound card. The connector is the original mirrored version used by the E-mu Soundengine. The VGM can obviously be plugged into the PC88 keyboard. Which I don’t have. What I do have is the Soundengine module, and although the VGM does not really fit inside the chassis, it works just fine.

Actually, no, it doesn’t. The VGM in fact behaves rather strangely. Some MIDI sequences play more or less normally. Some sound wrong. Some produce no sound, and seem to completely turn the VGM off. What the heck is going on?

Fortunately, Kurzweil is nice enough to provide the PC88 documentation for download. The PC88 manual also explains the VGM expansion, and contains valuable hints.

The source of the odd behavior is that after power-up, the VGM does not start in General MIDI mode, although it does start with General MIDI instrument mapping. One notable difference is that by default, VGM does not play percussions on MIDI channel 10; the channel behaves just like any other and defaults to the Grand Piano patch. That is barely noticeable on some MIDI sequences and very disturbing on others.

The other big issue is that some MIDI sequences completely disable the VGM. Upon closer examination, it turned out that the troublemakers were MIDI files with embedded Bank Select controller messages. Setting the bank to zero (as these sequences do) disables the VGM… because the GM instruments are in bank 1 and other instrument sets are in banks 2 and 3. But in bank 0, there’s nothing… so selecting bank zero produces no output, and playing another sequence which leaves the bank selection alone also produces no output.

This is an interesting problem because a General MIDI sequence should really not transmit any Bank Select messages. The GM specification does not define instrument banks at all, and the implementation notes warn that when in GM mode, some devices may exit GM mode upon receipt of a Bank Select message. It is possible that this questionable practice was designed for GS (Roland Sound Canvas) or XG (Yamaha) devices which heavily utilize instrument banks.

How to get out of this predicament? It’s actually very easy—all it takes is sending a GM Reset sysex to the VGM. Once that is done, the VGM will play percussions on channel 10 and ignore bank select messages. The PC88 manual obliquely says as much when it mentions that the keyboard must perform a “GM On” command in order to render General MIDI data correctly, and said command must be sent after every power-up. Interestingly, the manual also says that the PC88 does not react to a GM Reset sysex, even though we now know that the VGM board itself does.


There are at least two variants of the VGM itself. Around 1994-1995, the VGM boards housed the entire Simpsons family. In the late 1990s, the VGM was redesigned for newer, physically larger instrument ROMs (now with generic Young Chang labels and no longer Bart/Lisa/Maggie). The newer PCB is laid out very differently but the components are largely the same. Compare the two:

The older Kurzweil VGM (1995)

The newer Kurzweil VGM (1999)

There is also a very close relative, the AVM Summit. The Summit utilizes the same Homer/Marge synth, although the instrument ROMs look different again. It is unclear just how different the AVM Summit and Kurzweil VGM are. The Summit has clearly different firmware and, among other things, starts out in GM mode. The Summit also has a MT-32 instrument bank, which the VGM does not have.

Experimentation shows that for General MIDI sequences, the Kurzweil VGM and AVM Summit sound identical. The AVM Summit was highly rated back in the mid-1990s. Here is a classic DOOM track played by the Kurzweil VGM:

And here is the same track rendered by the AVM Summit:

The VGM is fairly closely related to the Kurzweil K2000 synthesizer as well.

There are also two slightly more distant relatives in the form of Turtle Beach sound cards: The Pinnacle and Malibu. Neither of these sounds quite like the VGM (and Summit), but both are distinctly similar, with some of the instruments sounding the same and some instruments different. More about those some other day.

Thanks to Daniel Siebler for loaning an older VGM specimen and providing the AVM Summit recordings.

This entry was posted in E-mu, Kurzweil, MIDI, Sound. Bookmark the permalink.

3 Responses to Making The Simpsons Sing

  1. Daniel Siebler says:

    Great article as always.
    I compared the GM Sound of K2000 and VGM is not really close, so no real relationship.
    You can check out DOOM E1M1 on the K2000R here:!AuD8nQsQeS3hhHjWR-zZOarzZ1Wl

  2. Michal Necasek says:

    I still think the K2000 synth is similar technologically, but the instruments could be completely different.

  3. Graham says:

    I have a pair of PC-88’s, one was built as an MX and I added the VGM board to the other.
    The sounds on the VGM board bear little comparison to the original PC-88 voices, as far as quality is concerned, so comparing them to any other Kurzweil model is pointless. In particular, the piano sounds were always a selling point on the PC-88 and are still the main reason I continue to use them with my band – the GM voices just don’t sound as good.
    Kurzweil wisely re-used the PC-88 samples in their later keyboards.
    What I’d like is a stand-alone card with the original PC-88 voices on it – NOT the GM set.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.