Zum Inhalt springen
Michael Blaess
IT-Consulting
Michael Blaess
DE

Tracker music: a nostalgic trip back to the 90s

Open SourceAudioGamesRetro

Part 1 covered the modern way to put music into your own apps or games: finished recordings as MP3 or OGG, played through a library like Howler.

The downside of that route is the payload. Three pieces of Vivaldi take up 6.8 MB together in geo-finder. Over a fast line you never notice, over a slow one or a tight mobile data plan you certainly do.

An interesting alternative is over thirty years old and came from the Amiga.

What are tracker files?

Hardly anyone knows them today, yet this technique scored half the game libraries of the late eighties and the nineties. One step at a time.

An MP3 or OGG file is a recording, essentially a compressed WAV file. It holds the fully mixed piece, and the longer the piece, the bigger the file. Even compressed it stays large.

A tracker module holds something else. It stores two things:

  • Samples are short snippets of sound that act as instruments: a struck piano, a drum, a bass. Play the same sample faster and it sounds higher, slower and it sounds lower, so one snippet yields every pitch.
  • Patterns are the note grid on top: a table that records which sample plays when, on which track, with which effect.

So the file is closer to a score with an instrument case attached than to a recording. A complete game soundtrack fit onto a 1.4 MB floppy this way (source: Wikipedia, tracker module and MOD format, in German).

The Ultimate Soundtracker on the Amiga, 1987: sample list and pattern grid ProTracker 1.1 on the Amiga, 1991: a note grid with four columns for the four channels
The Ultimate Soundtracker (Karsten Obarski, 1987) was the first of its kind, ProTracker 1.1 (1991) became the classic on the Amiga. In both you can see the instrument list at the top and the pattern below, with four columns for the four channels. Screenshots by Javier Perez Montes, Wikimedia Commons, CC BY-SA 4.0.

That gives you the decisive difference. Size depends on the number and length of the samples, less on the playing time. Making a piece twice as long costs a few more patterns. With an MP3 file the size simply doubles.

The formats

Over the years the Amiga original grew into several formats, each with a few more abilities:

FormatOriginWhat sets it apart
MODAmiga, Ultimate Soundtracker and ProTrackerthe original, classically four channels
S3MScream Tracker 3more channels, plus tones from the FM chip (Yamaha OPL2)
XMFastTracker 2instruments with volume and panning envelopes
IT (Impulse Tracker)Impulse Trackerresonant filters and more control per note
MPTMOpenMPTthe modern extension of the Impulse Tracker format

The letters are just file extensions. IT here stands for Impulse Tracker, not information technology.

What do you play it with?

On the desktop, OpenMPT reads all of these formats, actively maintained. In the browser there are two routes, and those are exactly what matters for your own projects:

  • Pure JavaScript, small and no WebAssembly. BassoonTracker by Steffest is a complete Amiga tracker in the browser, plays and edits MOD and XM, MIT licensed and actively maintained. For most retro purposes that is enough and stays light. Older and now dormant is ScripTracker (MOD, S3M, XM), last commit 2016, and with no licence file, so tricky to reuse.
  • WebAssembly, but complete. libopenmpt as chiptune3 on npm plays practically every format (MOD, S3M, XM, Impulse Tracker, MPTM and more), but costs 1.5 MB.
PlayerFormatsLicenceApproachStatus
BassoonTrackerMOD, XMMITpure JavaScriptactive (May 2026)
ScripTrackerMOD, S3M, XMno licence filepure JavaScriptdormant since 2016
chiptune3MOD, S3M, XM, IT, MPTM, …MITWebAssemblyactive

All figures checked on 25 July 2026 on GitHub and npm.

And a small note on my own account: my terminal player retro-amp plays MOD, XM, S3M and even SID files. 😉

The size comparison

For this post I downloaded a well known module and measured it myself instead of copying a number: space_debris.mod by Captain, 1991, four channels, a classic from the Amiga scene.

FileTypeSize
space_debris.modtracker module347,582 bytes, or 339 KB
vivaldi-fruehling-1-allegro.oggaudio, one movement2.3 MB
all three movements in geo-finderaudio6.8 MB

The Vivaldi recording is from the Internet Archive, the module from the Mod Archive. A factor of seven against a single movement, and the tracker module is not an excerpt, it is a complete piece.

What are the downsides?

Browsers cannot play tracker modules on their own, they need one of the player libraries above. How big it turns out is the real catch.

A pure JavaScript player like BassoonTracker stays small. The complete route via chiptune3 costs 1.5 MB instead, because a whole C-to-WebAssembly decoder loads with it. For a small 8-bit nostalgia game that is almost over the top.

For a retro game with MOD or XM music the pure-JS player is the obvious choice. You only reach for the WebAssembly decoder once more exotic formats like Impulse Tracker or MPTM come into play.

Rule of thumb:

  • One or two tracks: MP3 and OGG (for Safari) are plenty, no tracker needed.
  • Retro game with MOD or XM: a pure-JS player like BassoonTracker.
  • Many tracks or exotic formats: the WebAssembly decoder chiptune3.

Important: this sounds like the early nineties, like the Amiga. That is a different sound from the typical 80s FM sound the Yamaha DX7 shaped. It is not hi-fi at 256 kbit, it is pure nostalgia. If you do not read that as a feature, you are better off with a clean recording.

Tracker is not chiptune

These two get lumped together a lot, yet they are different techniques.

Tracker music is sample based. The Amiga played back real, recorded snippets of sound, see above.

Chiptune music works differently: a sound chip generates the tones itself. On the C64 the SID chip does it with three oscillators and an analogue filter. On the Atari ST a Yamaha chip handles it (the YM2149). On the PC, AdLib and Sound Blaster added the FM synthesis of the Yamaha OPL2, which shapes tones through frequency modulation instead of playing samples.

What pure chip music sounds like comes across well in Rob Hubbard’s soundtrack for Goldrunner on the Atari ST from 1987, played by the machine’s Yamaha sound chip. Among chiptune fans Rob Hubbard is a legend. Goldrunner even drops in a digitised voice sample and greets the player with a “Welcome to Goldrunner”:

Goldrunner, longplay. Channel: Atari Greenlog.

Both sound like the nineties, just like different machines.

A look at the demoscene

How far tracker music carried shows in the demoscene: small groups that built entire audiovisual shows out of a few hundred kilobytes. The classic is Second Reality by Future Crew, shown at the Assembly demoparty in 1993. Its music sits in a Scream Tracker 3 module, and honestly it still sounds excellent today.

Second Reality, its music a Scream Tracker 3 module. Channel: DemosceneVids.

Future Crew, by the way, later turned into a games studio: members of the group founded Remedy Entertainment in 1995 and built Max Payne, among others. The demoscene grew into an entire industry.

The licensing question stays

Everything from part 1 applies unchanged. A tracker module off the net is not free just because it is old and sits in an archive.

Many modules date back to the nineties, and whether an explicit licence came with them is often written down nowhere. Checking that yourself is non-negotiable.

The practical route is the same as with audio: prefer sources that state a licence on the individual work, ask the musician when in doubt, and ideally document the attribution straight away.

Conclusion

geo-finder stays on OGG. Rebuilding classical music as a module would be nonsense, and the page loads map tiles and photos regardless.

For the retro tools and games I want to tackle next it looks different. There the small, nostalgic sound is not a compromise, it is the goal. The prime example is Hotline Miami: its synthwave soundtrack is not an accessory, it is an essential part of the game. That nostalgic sound, leaning on the old machines, is probably what turns Hotline Miami into a cult game in the first place and gives it that singular atmosphere (source: Hotline Miami EP by Jasper Byrne).

What fascinates me about this technique is the minimalism behind it. Back then people did not have the resources of today: no storage, no hard drive, the height of luxury was a MIDI keyboard, and many hobby musicians did not even have that. Out of almost nothing came complete music.

Whether it becomes chiptune3 in the end or a smaller binding to libopenmpt of my own, I will decide when I get there. Measure first, then choose.

If you want to write music for it yourself, OpenMPT is an actively maintained tracker. Coming from a DAW you would have some unlearning to do. But engaging with the old technique is genuinely fun.

Sources: Wikipedia: tracker module · Wikipedia: MOD format · OpenMPT wiki, module formats · BassoonTracker · ScripTracker · libopenmpt / chiptune3 · space_debris.mod at the Mod Archive · Second Reality (Demozoo) · retro-amp

“C macht es einfach, sich selbst ins Bein zu schießen. C++ erschwert es, aber wenn es dir gelingt, bläst es dir das ganze Bein weg.”

- Bjarne Stroustrup