WavAudioFormat metadata: incorrect ISRC usage?

The WavAudioFormat code does not seem to distinguish between WavAudioFormat::ISRC and WavAudioFormat::riffInfoSource metadata properties, despite there being separate members for each.

When I run this test code on a normal WAV file, both the AXML ISRC property and the RIFF INFO Source property are created, but they both have the value “TestRiffInfoSource”:

auto testMetadata = juce::WavAudioFormat::createBWAVMetadata ({}, {}, {}, {}, {}, {});
testMetadata.set (juce::WavAudioFormat::ISRC, "TestISRC");
testMetadata.set (juce::WavAudioFormat::riffInfoSource, "TestRiffInfoSource");

juce::WavAudioFormat wav;
wav.replaceMetadataInFile (outputWavFile, testMetadata);

This appears to be caused by the two properties sharing the same key (“ISRC”) in the StringPairArray that holds the metadata values. Naturally, if I only set one of the two properties, both properties are still created with the same value.

I’m not sure if this is intentional or not. The abbreviation for the RIFF INFO Source field is ISRC, so it’s easy to see how confusion can occur here. But the description for WavAudioFormat::ISRC does mention that the property is used for reading, and doesn’t mention anything about it being used for writing, so it’s possible I’m misunderstanding something about how it should be used.

Thanks for reporting. I think that using the same key for two different purposes was a mistake. I’ve attempted to resolve the issue here, by adding a new key for the ISRC:

1 Like