Radio Revolution

enthusiastic emoticon

I thought about this yesterday and now I think I have confirmed that this is all actually possible and even feasibly practical.

People like internet radio, especially if they have the bandwidth for it. Ogg streams at low bit rates like 40-60kbps sound good enough for dancing to them. Now, unlike MP3 streams, for which ID3 tag metadata is a chunk of essentially totally extraneous data which is not part of the stream, Ogg files are containers by definition — they are a format which encapsulates the audio stream encoded by the Vorbis codec. This is what allows OGM video files to actually work. The metadata chunk is an integral part of the Ogg stream. When an Ogg stream is passed through a streaming server like icecast, the metadata chunk remains intact.

This allows us to do some nifty things which haven’t been tried before.

Since we can actually pass metadata through a streaming server, we can embed data for the player to act upon, and all players which don’t know about this data will happily download it and ignore it. That allows us to distribute the songs through internet radio with various interesting things — like icons, lyrics, and most importantly, stepfile data for StepMania!

Embedding Stepmania data like stepfiles, song banners, backgrounds and other junk into Ogg streams appears to be easy enough to do even with a python script. What’s more important is that even transcoding stream generation programs — at least, I’ve successfully tested this with ices — seem to keep song metadata intact when converting the audio data to the specified bitrates and sampling rates.

Which means that we can relatively easily set up a streaming client that will listen to the specified internet radio, buffering the song until it’s done, and if it contains embedded Stepmania data, signal it to add it to the playlist or even play straight away.

Can you say “radio dance nonstop”? :)