Daft Punk’s “Revolution 909” in under 100 kB

What?

I made a Daft Punk song into an Amiga chiptune that’s over 50 times smaller than the original mp3. Here’s the mp3 file, rendered from this 96.5kB (looping!) mod file. (Zipped, it’s over 85 times smaller than the original mp3 – mod files compress pretty well.)

How?

There’s a reason this song is that easy to compress: it loops a *lot*. When compressing into something like an mp3, this doesn’t help at all, but I made it into a module file, a file format famously used in the Amiga demoscene. Instead of encoding a song byte by byte, module files describe which samples to play, in which order.

First of all, I split up the “main loop” of the song into smaller samples, by extracting bits of the song using Audacity and loading them into a tracker. Here’s what the samples look (and sound) like:

You might notice by looking at these five parts that 5 is really the same as 2, and 4 is just the second part of 1. They’re split up this way so I can fit this loop into three samples – sample 4 is played by using the offset command (9XX) inside the song data:

[9]: Set sample offset Where [9][x][y] means "play the sample from offset x*4096 + y*256". The offset is measured in words. If no sample is given, yet one is still playing on this channel, it should be retriggered to the new offset using the current volume.

This is what that loop looks like inside the tracker:

(F0C means “12 ticks per row”, F7E means “126 BPM”. Also, note how the four channels have the same data on them. This is for MAXIMUM VOLUME.)

Well, that’s basically how I made the whole thing; the rest of the song is just more pattern data built out of other samples. If you’re interested, you might want to download a tracker yourself and open up the module file in it. (For Windows, I recommend OpenMPT, which is what I used to make this thing.) Feel like staring at the internals of chiptune music much more complex than this? Get some more modules here.