Album Artist tag

I am in the process of backing up my SACDs to files. For that,

  • I first rip them to single .dsf files and tag them
  • then convert them to WAVPACK and tag them again in Picard.

Just FYI, .dsf use id3v3 tags and WAVPACK .wv uses apev2 tags. Now, the tag mapping here shows that the apev2 value for Album Artist should be “Album Artist”. However, when I open a file tagged with Picard it looks like this:

i.e. “Albumartist”. Is that a bug?

I suspect that this is a side effect of Picard trying to preserve the casing of existing tags. My suspicion is that this “Albumartist” tag is present in the file before you tag this with Picard already. Same for other strange tags there, like “Releasetype” and “Releasestatus” (which should be actually map to “MUSICBRAINZ_ALBUMTYPE” and “MUSICBRAINZ_ALBUMSTATUS”).

Now basically these tags in APEv2, e.g. “Albumartist”, are unknown to Picard. What Picard does when getting an unknown tag in APEv2 is that it just lowercases it and makes this available in Picard. This turns it to “albumartist”, which is the proper internal name for the album artist tag in Picard. But Picard also remembers the original casing for this tag, in this case it remembers the tag “albumartist” was originally written as “Albumartist” in the file.

The reason for this is that by definition APEv2 tags are case sensitive, but implementations are meant to read the tags case insensitive. Not all implementations do this, though, and Picard changing the casing in existing APEv2 was causing issues.

Now when saving back the file Picard will look at the case map, see that “albumartist” was originally “Albumartist” in the file and it will use this name again for writing back.

I guess we can consider this actually a bug, but need to be careful how to fix this. Maybe only apply the case map if the difference in expected tag names really is just casing. And even without the case map this would probably not behave as expected, as it would result in duplicated tags (unless you have clear existing tags active). That’s because existing tag “Albumartist” would be read as “albumartist”, which would get saved as “Album Artist”, leaving the existing “Albumartist” tag in place.

Probably the “preserve the casing” functionality also needs an option, as there might be circumstances where you intentionally want to rewrite everything to standard Picard casing.

Out of my head I’m unsure how to work around this with current Picard, or if there even is an option to do so. You could try with clear existing tags, but I think this does not help.

1 Like

Would you like me to send you a file for testing?