Article: How to play Module Music
How to play tracker/module music such as old game soundtracks.
Module music, also known as tracker music, can be considered somewhat similar to the well-known MIDI format, with the notable difference being that tracker modules include the samples required to play them in the same file as the tracks themselves, instead of relying on the synthesiser’s soundbanks the way MIDI does. (See my article on playing MIDI files with custom soundbanks for more on that topic.)
Many old DOS and console games used module music systems for their soundtracks, and in the online video game soundtrack community, many rips of console game soundtracks can be found in the original format. Of course, listening to any of these files requires software that supports them, and for that there are several different tools to do the job, depending on platform.
Note that although I describe how to convert music using each of the tools (potentially to transfer to a portable media player), doing so will be at the cost of the ability to loop infinitely. For infinite looping, you’re stuck playing the files using the tools listed here.
- Cross-platform CLI: the Extended Module Player and gbsplay
- Cross-platform GUI: Audio Overload
- Links and Resources
Cross-platform CLI: the Extended Module Player and gbsplay
For command line users of all platforms, there are two tools available, both designed for different formats. Both tools allow for keyboard-based control at runtime, as well as batch output to audio waveforms.
Extended Module Player (xmp)
The good news for lovers of a wide variety of module music is that there’s an excellent open source utility called the Extended Module Player (xmp) that supports “over 90 mainstream and obscure module formats from Amiga, Atari, Acorn, Apple IIgs and PC”.
In addition to playing back module formats, xmp can also output to file, converting the music to WAV format. Just invoke the program like this:
xmp FILENAME -d wav
The program should run and complete normally, albeit with no audio output, and the WAV file should be created in the same directory as the input file.
Unlike xmp, gbsplay only deals with one format. Designed for playing rips of Nintendo Gameboy and Gameboy Colour music specifically, this little utility is actually the only program here to feature in the Ubuntu repositories.
In order to enable infinite looping, you’ll need to set the
subsong-timeout value to 0 and the
silence-timeout value to something more reasonable than the default of 2 - I find the 10 second mark allows for any silence you’ll encounter in the vast majority of tracks.
As stated in the program’s manpage, gbsplay supports a number of different output plugins depending on how it has been compiled. The version in the Ubuntu repositories at the time of writing only supports two methods of conversion:
- Stdout Output. Outputs the raw PCM samples to standard output, which can be piped to another program or redirected to a file. The result will be headerless, so you’ll need to import it into a program such as Audacity using the ‘Import Raw Data…’ option in order to save it as a usable file.
- MIDI Output. Nice to have, but the files lose their original soundbanks, so not really ideal.
Windows (or Wine) only: Winamp Chiptunes Plugins
The Windows-only media player Winamp has a number of different plugins that support various module and chiptunes formats. These are more focussed on console rips than old PC formats, so they don’t replace xmp, just augment it. Conveniently, you only need to go to one place to find them.
The Chipamp Bundle is the first and only port of call. Maintained by the OverClocked Remix community, the bundle brings together a large number of existing plugins that collectively support most formats you will ever need.
When combined with a file writer output plugin, this method can be used to convert entire playlists of module music to a newer format.
Cross-platform GUI: Audio Overload
I actually found this through the links page of the Chipamp site. Audio Overload is a cross-platform alternative to the Winamp+Chipamp bundle, that handles almost all of the same formats. The interface and features are relatively sparse when compared to Winamp, but ultimately playback and conversion are the only things that really matter.
Playback is fine, and offers fine-grained control over the audio channels that are enabled. Seeking through the subsongs in a .gbs file was annoying, however, as you could only enter a number during playback; the control is disabled when the stop button is pressed.
The player features an export-to-WAV tool. To use it, first open a music file, and then select ‘Save Clip…’. Once you’ve specified an output filename, press play and allow the track to complete. Press stop if necessary and the file will be written. Dismally ineffective for large quantities of music, I’m afraid.
All in all, you’d be far better off installing Winamp and the Chipamp bundle using Wine, which I have tested and can confirm works properly. (Moving the Winamp window can be a little wonky at times, but other than that everything seems to work perfectly.)
Links and Resources
The online video game soundtrack community is going strong and growing all the time, and it’s absolutely staggering what can be achieved by huge numbers of obsessed, technically-minded fans. The central hub of this scene is the OcRemix website, a community built around users remixing game music (with some fairly good results.)