How to read extensible (non-catalogue) metadata properties from a Wav file?


#1

Hi JUCErs,

I have a .wav file containing meta data that doesn’t seem to be readable through the WavAudioFormat.
Reading on the different types of meta encoded in the format, I think these are ID3v2 chunks. They are custom property names, and the format reader seems to be decoding only specific default properties from a few other specs (standards?) like BWAV, INFO, acid, etc.

Basically, what I need and seems to not be supported by JUCE, right now, are custom-named meta properties on Wav files. Is this correct (those can’t be decoded/read)? And, of course, if someone has hit that and handled it - your advice is much appreciated.

Cheers.

Update3:
Kid3 (an app I found for bulk edit of meta tags) identifies my custom tags as ID3v2.4.0 tags.

Update2:
I don’t think my custom tags are encoded as ID3 tags. I’ve run this which doesn’t list anything:

id3v2 --list some-file.wav

Yet, at the wiki of Audacity, there is this statement:

Non-default LIST INFO tags (other than “Copyright” and “Software”) are not supported.
Non-default ID3 tags can be exported but they all use the generic “TXXX” frame so may not be seen by all players.
Some players or applications that support WAV metadata may use an alternative de facto “standard” promoted by Broadcast Software International (BSI) in addition to or instead of ID3 tags. The BSI scheme includes an explicit IALB INFO tag for “Album” whereas the RIFF standard has to use the IPRD (Product) or related tags for “Album”.

From this I deduct that my tags should be in-fact non-default ID3 tags, because nothing else (which is “non-default” tag) is preserved.

Update1:
These are all the fields exposed in the reader->metadataValues:

bwav description
bwav originator
bwav originator ref
bwav origination date
bwav origination time
bwav time reference
bwav coding history
NumCuePoints
Cue0Identifier
Cue0Order
Cue0ChunkID
Cue0ChunkStart
Cue0BlockStart
Cue0Offset
Manufacturer
Product
SamplePeriod
MidiUnityNote
MidiPitchFraction
SmpteFormat
SmpteOffset
NumSampleLoops
SamplerData
Loop0Identifier
Loop0Type
Loop0Start
Loop0End
Loop0Fraction
Loop0PlayCount
CueLabel0Identifier
CueLabel0Text
IART
NumCueLabels
MetaDataSource

None of my custom fields are present.

And if I open Audacity, for example, and go to File->Edit Metadata I see an extensible list (including my custom-named properties). And looking at this list of software supporting it - most of those support ID3v2 (which I assume is how my meta chunks are encoded).


#2

You are probably after the broadcast wave format: wikipedia

There are several extensions noted. I used to work on a place that made heavy use of the BEXT chunks, but I wasn’t involved in reading or writing, so I have no deeper insight.

Here some communications about that topic:

So the first thing would be to figure out the exact name and type of metadata you are looking for… Maybe even jump in using a HEX editor, if all else fails…


#3

Thanks Daniel.
Kid3 (an app I found for bulk edit of meta tags) identifies those as ID3v2.4.0 tags.


#4

When I put suggested code forward for the majority of the RIFF tags (see More Audio Format Metadata?), I did a lot of research on WAV tags in general - iirc ID3v2 isn’t officially supported in WAV. And there being an obscene amount of possible tags to read, I’m not surprised JUCE isn’t going the whole way… It’s such an open ended beast!

That being said, if you find official documentation on how to lay out ID3 tags in WAV, I’d be curious to have a go at implementing it.