The previous post got rather long(winded) already. But shortly after I posted it, I realized that I had not yet said all that I wanted to say. Namely, I mentioned the Yamaha FM synthesizer chips at the start, and I wanted to get back to them later, when discussing trackers. However, I solely focused on sample-based trackers and the UltraSound there. So this time, let’s look at trackers for other types of synthesizers.
It mostly revolves around what I briefly mentioned before:
But I just said that I thought the Sound Blaster Pro 2 sounded bland. What happened here? Well, my guess is that MIDI happened.
What is the most ‘characteristic’ thing about synthesizers and synthesizer music in general? I would say that it is the fact that synthesizers generate the sound in realtime, and you can modify the parameters of the generated sound in realtime. A common effect is the ‘filter sweep’, where you change the sound from a bright sound moving to a dark sound and back. You can listen to music from Jean-Michel Jarre for many examples of that. His sounds are constantly ‘morphing’:
You will find plenty of such examples in music on the Commodore 64 as well, since the SID chip is also a ‘subtractive’ synthesizer like these early synths from the 70s and 80s, which first generates a basic waveform with an oscillator, and then runs it through a filter with cutoff and resonance parameters to shape the final tone. This is one of the defining features of the SID chip: its contemporaries lacked the filter. Another ‘synth’ feature it has is ring-modulation. A third feature is that you can adjust the duty-cycle of the pulse wave, to control its timbre. Using these features and manipulating their parameters allowed the SID to sound far more ‘synth-music’-like than any other computer at the time:
Now, Yamaha was of course also a big name in the synthesizer-world of the early 80s, most notably with the DX7. The DX7 introduced the world to FM synthesis. Purists will say that no filters are used in FM synthesis, and unlike the SID and other early synthesizers, which work with analog signals, FM is actually implemented mostly as digital algorithms, with only an A/D converter at the end of a chain.
However, in practice, the concept is much the same: the sound is generated in realtime, and you can adjust parameters in realtime as well, for various effects. Even on an FM synthesizer you can get quite convincing realtime controlled filter-like sounds, very ‘synth-like’:
This brings us back to the world of PC soundcards, as the popular AdLib and Sound Blaster cards also used FM synthesizer chips from Yamaha, namely the OPL2 and OPL3 as mentioned before.
While these chips may not be as advanced as a real DX7 synthesizer, the basic concept still holds: the sound is generated in realtime, and various parameters can be tweaked to modify the sound in realtime, creating a number of effects. The problem here is that each synthesizer has its own unique sound generation engine, with its own unique parameters to tweak in realtime.
MIDI allows you to tweak these parameters, but the problem is that there are only a handful of standardized messages defined in MIDI:
- Note on/off (with velocity)
- Aftertouch (with velocity)
- Pitch bend change
These messages allow you to start or stop a note, to set the volume and pitch, and that’s basically it.
Anything else is done via generic messages for ‘control change’, ‘program change’ or with System Exclusive (SysEx) messages. The problem is: there is no standard for how these MIDI messages should map to the synthesizer. Or well, SysEx messages are well-defined, but only for a specific synthesizer, so you need customized software to support it.
And that is more or less the clash between MIDI and PC sound cards: MIDI is trying to be a very generic solution for recording and replaying musical data. It works well when you have a dedicated synthesizer hooked up, and any realtime changes you make on the synthesizer are sent as MIDI messages, which can be recorded and replayed by a MIDI sequencer.
The problem with the AdLib and Sound Blaster cards was that such a ‘development station’ didn’t really exist: the cards did not natively support MIDI, and there was no synthesizer to easily generate MIDI commands for all sorts of parameter changes. So if you wanted to go the MIDI route, you’d first need to write your own MIDI interpreter to drive the OPL chip, and then set up a MIDI controller and sequencer to control the OPL chip and compose music for it.
It seems that there is somewhat of a disconnect between the two worlds here. You would have musicians who were at home with MIDI, but who weren’t programmers themselves, and could not make a MIDI interpreter for the OPL chip. And then there were programmers who would be able to make a MIDI interpreter. But they would rather choose a more straightforward tracker-like solution. This led to MIDI mostly being used with simple standard MIDI drivers, with generic instrument presets and no realtime control of any synth parameters.
However, a few brave souls did in fact build trackers for the OPL chips. And they did actually play around with the instruments and showed off what the OPL chip was really capable of. One such tracker is EdLib, made by JCH. You might vaguely remember that name, since I also used a tune composed in EdLib in the 1991 Donut.
What is interesting is that JCH converted some C64 songs to EdLib. Listen to The Alibi by Laxity, first the original:
And then the EdLib version:
As you can hear, the C64 version modifies the sounds in realtime, and this AdLib tune does pretty much the same. What I like about the conversion is that it does not sound like JCH wanted to make the AdLib-version as close as possible to the C64 version. But rather, he tried to really adapt it to the AdLib and make it sound as good as possible on the OPL chip. The result is possibly one of the best AdLib tunes ever made, and certainly way better than the generic MIDI sound that is usually associated with the AdLib.
Another nice example is the soundtrack from the game Dune:
My favourite track is probably ‘Water’. It really shows off the metallic percussion sounds that FM can do so well. It makes it sound very bright and fresh, way different from the ‘muffled’ sounds of most 8-bit sound chips.
The Dune music was made with the HERAD system, which was loosely based on MIDI, but specifically targets the AdLib, so it is probably closest to the custom MIDI solution I meant above. The Dune-music is a great demonstration of what HERAD can do with an AdLib in capable hands.
Lastly, I also want to mention the game Tyrian. This one also really stood out on the AdLib back in the day:
Again, this game uses its own custom software for AdLib, known as Loudness Sound System (LDS).
Some more examples of outstanding AdLib tunes can be found here on the Crossfire Designs site. I also discovered the obscure ‘Easy AdLib’ tracker there, which also includes some very nice AdLib music:
So the story of FM synthesis on the PC is generally a sad one, with but a few highlights. If you knew how to program it, you could get some fantastic sounds from it. But it was not an easy chip to program. As a result, it seems that most game developers were just happy to get any sound from it at all. For a card that has been the standard in PC audio for such a long time, remarkably little software for composing music on it has been released. I suppose most game developers neither had the tools nor the skills to really make the AdLib shine.
Which is a shame, since FM chips were also used in quite a few arcade machines, consoles and home computers, mostly Japanese. And there’s lots of great FM music out there on chips that are quite similar to the OPL2 and OPL3 used on PC sound cards.
So I would like to close today’s blog with a recent demo from Titan for the Sega Mega Drive. The Mega Drive uses two sound chips, one being the SN76489 which we also know from PCjr and Tandy. The other being a Yamaha YM2612, an FM synthesizer.