Video Game Music
Although a large portion of old video game soundtracks is available on YouTube now, there is an aesthetic appeal to playing the original music files using some form of emulator. However, the number of video game music formats is staggering.
In this article, I will touch on a few of these formats, and how to emulate them.
The 16-bit Generation
Probably, the most iconic and well-known period in video game music is the 8-bit era, mainly comprised of music from the Commodore 64, the NES, and the Sega Master System, a period that began in the year 1982 when the C64 was released, and ending somewhere in the 1990s.
The following generation, the 16-bit generation, could be said to start around 1985, when the Commodore Amiga and, shortly after, the PC-Engine, the Sega Genesis, and the Super Nintendo were released.
One of the primary characteristics of electronic music is the technology itself, and technology is what separates the 8-bit and 16-bit generation.
8-bit music was created with programmable sound generators (PSGs), digitally controlled oscillators capable of outputting predefined waveforms like square waves and white noise and, in the case of the C64, combinations of such oscillators put through adjustable analog filters. Through clever programming, the oscillators could be tricked into reproducing sampled sounds, although this was a relatively rare occurence in games.
The music of the 16-bit generation was characterized by the availability of new technology, mainly sound chips with built-in support for:
-
PCM (Pulse-code modulation), or sampling, the technique that revolutionized music production and spawned new music genres such as hip hop, known among gamers as the sound of the Amiga and the Super Nintendo and, since the 90s, all newer consoles.
-
FM (Frequency Modulation) synthesis, where waveforms are used to control the frequency of other waveforms, resulting in complex harmonics. It is well-known among musicians as the sound of the Yamaha DX-7, and well-known among gamers as the sound of music on the Sega Genesis, arcade machines from the same era, as well as early PC sound cards.
Music Player Daemon
MPD (Music Player Daemon) is a music server application that runs on Linux. MPD has support for the game-music-emu library, which, among other formats, supports replay of Super Nintendo and Sega Genesis music.
So, currently, MPD supports, among the more common sound file formats:
- .sid (Sound Interface Device), for the Commodore 64
- .nsf (Nintendo Entertainment System Sound Format) for the NES
- mod. (Module) for the Amiga, a subset of relevant Amiga music formats
- .spc (SPC700 sound file) for the SNES
- .gym (Genesis YM2612) for the Sega Genesis
- .vgm (Video Game Music), for Sega Genesis and Sega Master System
But MPD leaves two annoying gaps in my playback capabilities:
- A lot of the great library of Amiga music is not in mod. format, but consist of datafiles for custom replayers, often written by the composers themselves.
- Music for arcade games is not supported, except certain soundtracks ripped in .vgm format.
The Heterogeneity of Amiga Music
Amiga music is more than just MODs. Here are some examples of other Amiga music replayers:
- TFMX (The Final Musicsystem eXtended) is a custom replayer by Chris Huelsbeck, used in all of his Amiga music, such as the excellent Turrican series.
- DW (Dave Whittaker's custom replayer), used by Dave Whittaker in games such as Obliterator, Shadow of the Beast, and Golden Axe.
- AAM (Art & Magic replayer), used by Jeroen Tel in Agony.
These are some very interesting Amiga composers, making these formats important to emulate.
On the Amiga, two players were capable of playing all of these obscure formats, namely DeliTracker and EaglePlayer, desktop players with support for more than 150 different Amiga-specific formats. The Eagleplayer source was released under a GPL license in 2005, making it relevant for further development. These two multiformat trackers were ported to Windows and other operating systems in an interesting way in the form of the UADE project (Unix Amiga Delitracker Emulator); instead of rewriting the audio rendering code, UAE, the Unix Amiga Emulator, is used as an emulation core, and music is played using Eagleplayer / DeliTracker on an emulated Amiga.
UADE is a great method for playing Amiga music, it can be used as a command-line client: 'uade123', or as a plugin to well-known Linux media players XMMS or Audacious. uade123 runs on Linux. Here's a way to set up Midnight Commander to use uade123 for Amiga music files:
~/.config/mc/mc.ext: regex/^(dw|mdat|cust|CUST|scr|aam|mod|MOD)\. Open=uade123 -n %f
UADE can be used on Windows to dump Amiga music to WAV files. UADE doesn't like backslashes, so here's a way to dump a WAV file from a TFMX:
uade123 songs/mdat.title -f output.wav
So that's the Amiga covered. But ...
Arcade Music
Without a doubt, the most complete, easy, and accurate way to emulate arcade games is the MAME (Multiple Arcade Machine Emulator) project. When playing arcade games from the 16-bit era, you will often encounter the same sound hardware. One of the most common is the Yamaha FM sound chip YM2151, used in games such as Contra, Golden Axe, Gradius III, Magic Sword, Marble Madness, NBA Jam, Pacmania, R-Type, Shinobi, Street Fighter II, and Strider. It is an eight voice FM synthesizer, similar to YM2612, the six voice sound chip used in the Sega Genesis, and similar to the classic 80s synthesizer keyboard, the 16 voice Yamaha DX-7, one of the best-selling synthesizers of all time.
FM synthesis has seen a resurgency in later years, possibly with the introduction of well-designed software synthesizers such as FM8 by Native Instruments or Operator for the popular music software Ableton Live.
Currently, the easiest way to export music from MAME-emulated games is to start a modified version of MAME that outputs the control data sent to sound chips such as YM2151 to a file. The modified MAME outputs such data in the VGM file format mentioned earlier, and can be played back using a special VGM-MAME player or other players, such as SonicPlayer. A drawback is that you have to play the game to record the control data, and sound effects may be intermingled in the output.
A more robust way of playing arcade game music is the MAME spin-off project M1. M1 is able to play music directly from a MAME ROM dump without having to actually play the game. This software has opened up a lot of new music to me, such as:
-
Marble Madness (1986) has surprising harmonies and weird and dreamy sounds unlike anything else. Tracks such as the one numbered 12 in the M1 player uses extreme FM patches that sound downright otherwordly. It is composed by Brad Fuller and Hal Canon.
-
Another Atari arcade game is Indiana Jones and the Temple of Doom (1985) that features a wonderful FM rendition of John Williams' great Temple of Doom soundtrack, impressively rich in detail and nuance. This is also the work of Hal Canon, who in fact composed music for many of the classic Atari arcade games, such as PaperBoy, Gauntlet, Championship Sprint, APB, and Toobin'.
-
The Aliens arcade game released by Konami in 1990 has a great soundtrack by Masanori Adachi, co-creator of the soundtracks from Contra III and Rocket Knight Adventures. Especially cool is track #142 in M1, that has a driving FM bassline and smooth synth chords on top.
You Can Also Listen to Stuff!
There is a lot of game music players available:
Right out of the box, VLC comes with the game-music-emu library, that plays:
- .nsf (NES)
- mod. (Amiga)
- .spc (Super Nintendo)
- .gym (Sega Genesis)
- .vgm (Sega Genesis / Master System)
foobar2000 can, after installation of a couple of 'components', play:
- .sid (C64)
- .nsf (NES)
- mod. (Amiga)
- TFMX (Amiga: Chris Huelsbeck)
- .spc (Super Nintendo)
- .gym (Sega Genesis)
- .vgm (Sega Genesis / Master System and certain arcade machines)
If you want to get hardcore, you'll need these command-line tools:
Another interesting project is ProTracker for Windows.