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”? :)
⬅️ Tech: Barcodes: Elaborating on an idea
▶️ 2004-09-19: Мысль абстрактная
© 2001-2022 Eugene Medvedev. All rights reserved, not like that ever stopped anyone, or means anything when not backed up by a corporation.