qoa icon indicating copy to clipboard operation
qoa copied to clipboard

Metatags

Open MrSVCD opened this issue 1 year ago • 4 comments

Hi, Is there a official/endorsed metataging format for QOA? With metatag I mean artist and title information etc. While there is a handful of formats out there (I have been looking at ape-tag) it feels like QO* would make its own QOT format.

MrSVCD avatar Nov 08 '24 14:11 MrSVCD

I don't really see the use case for metatags in QOA. It's not like you have your music library in this format or exchange QOA files on Napster. So, no plan to add this.

If I were to create a tagging format, it would be a simple key-value structure. Pretty much something like APE, actually :)

As far as I know, APE tags can be just appended to the end of a file, so that would work for QOA, too.

phoboslab avatar Nov 11 '24 20:11 phoboslab

I am mostly asking because I have a dream of making a RaspberryPi Pico based iPod clone, and I want to use QOA as the main format for it (because I can). One of the requirements I think is some sort of tag format for the audio files. The parts needed I think would be a Pico, a small OLED, a SD card slot, some sort of battery and a PCB with touch sensor to mount it all to. I also realize that I will never make it because of who I am and that retroPod exists for Android.

MrSVCD avatar Nov 12 '24 18:11 MrSVCD

APE certainly works, and I've written support for it with QOA files in my player. Thanks for the suggestions. However, in places it does feel a bit at odds with QOA.

For example, while the footer can be nicely read with a series of 64-bit reads, like QOA, the key-values can't. The header of each tag includes the length of the value, but to find the length of the key you need to scan to find the \0 sentinel. In comparison, the equivalent structure in Vorbis (aka Xiph) comments the length field is over both the key and value, simplifying a read to a buffer.

Certainly not insurmountable, but something to noodle on, should there ever be "Quite OK Metadata".

terinjokes avatar Jan 26 '25 19:01 terinjokes

For needs of my projects, I implemented this custom header that follows normal one: https://github.com/WohlSoft/SDL-Mixer-X/blob/master/src/codecs/qoa/XQOA.txt and I named it "XQOA". It also includes loop points. And here is an imlementation of the player that can play it: https://github.com/WohlSoft/SDL-Mixer-X/blob/master/src/codecs/music_qoa.c and the encoder that can generate that: https://github.com/WohlSoft/Moondust-Project/blob/wip-xtconvert/_common/AudioProcessor/codec/audio_qoa.cpp

Maybe you'll take this or implement something different and more robust?

Wohlstand avatar Jul 11 '25 20:07 Wohlstand