Experiments with simple audio formats
On the past months I've been working on and off on adding audio support for the next version of Minart.
It's been quite a ride (I keep having to rewrite the code, turns out audio is quite complicated), so it might be a while until I get a release, but in the meantime I was able to implement some basic support for RTTTL, AIFF and WAVE file formats (they were the simplest formats I could find).
Some quite interesting stuff about this formats:
For RTTTL, I was able to find a huge dump of files to use for tests. It was quite nostalgic to hear all those classic ringtones (who can forget "Freestyler" and "The Ketchup Song (Aserejé)") while testing the decoder.
Funnily enough, it was quite hard to tell if the decoder was wrong or if the song files were just awful transcriptions... I would say it was 50/50.
For AIFF one weird thing that stood out was the use of 80-bit extended precision floating point numbers to represent the sample rate. It was quite some work to get that to work...
I wonder how many AIFF files out there really need all this precision, as imagine most audio files use either 44.1kHz 48kHz. And I think someone at Microsoft thought the same, because the WAV format just stores it in a nice little-endian 4 byte integer (who needs non-integer sampling rates, anyway ).
For now, I think I'll stick with these 3 formats, as everything else seems way too complex for my use cases (and I still have a lot to implement on the simple codecs). Hopefully I'll be able to share more audio adventures in the future.
Until then!