Lately, I've been spelunking deep in the cave of old video game music.
Now, I'm the sort of guy who cares about authenticity in media. I don't care for remakes, remasters, HD versions, enhanced editions, and mods. This goes for video games, movies, music, and other media. I can get angry about ugly pixel filtering options in the XBLA port of JoJo's Bizarre Adventure, frustrated over George Lucas' ridiculous remastering of the Star Wars trilogy, and I will complain loudly about Spotify having the 4 minute single restructure of Sentinel with the stupid snare drum as the first track on Tubular Bells II, instead of the 8 minute original with the piano intro - WHY WOULD THEY DO THAT?
OK, must calm down...
My point was that I prefer original versions. I like big pixels, sample aliasing, 4:3, analog noise. Don't give me some weird era-specific reworking with its own technical limitations forced upon the original. The remastered version will probably age worse than the original.
So when I collect video game music soundtracks in their original semi-obscure formats instead of MP3s, you sort of know where I'm coming from. Also, this makes my life a bit more difficult. Or fun, depending on your viewpoint.
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.
Although I enjoy the 8-bit music a lot, I actually feel I belong to the 16-bit generation which started in 1987, when the Commodore Amiga and, shortly after, the Sega Genesis were released. My video game music base has always been the Amiga, although the music of arcade machines from that era also had a certain draw on me. Later in life I discovered other interesting video game systems from the era, namely the Sega Genesis and the Super Nintendo.
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.
The event that triggered my thoughts about this subject was a much needed server update. With it came a new version of MPD (Music Player Daemon), which runs on a Gentoo Linux server connected to my stereo, doubling as audio media center. I discovered that MPD had gained 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:
But MPD leaves two annoying gaps in my playback capabilities:
So, would I missing much if I could only play MODs for the Amiga?
Well, here are some examples of custom replayers for the Amiga:
These are some very interesting Amiga composers, so I obviously need to be able to play these formats.
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. Very cool.
UADE is now my preferred 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. I use uade123 on Linux, and 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
2016-10-03: I'm currently using UADE on Windows to dump Amiga music to WAV files, and it seems that UADE doesn't like backslashes, so you could use it like this:
uade123 songs/mdat.title -f output.wav
So that's the Amiga covered. But ...
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 (my personal favorite).
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 been an inspiration for me since I played it on the Amiga in the late 80s. The arcade version 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 awful 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. It mostly makes the game tolerable. Mostly.
It's easy to get started with these formats, you probably already have a game music player installed:
Right out of the box, VLC comes with the game-music-emu library, that plays:
foobar2000 can, after installation of a couple of 'components', play:
If you want to get hardcore, you'll need these command-line thingies:
I also stumbled over this interesting project, ProTracker for Windows.