POPM field not copied properly

TL;DR: Got to Options > Metadata > Rating and make sure you have not set the e-mail field to “MusicBee”, then Picard will ignore the MusicBee rating and not change it.

Actually Picard does not do anything to the POPM tags unless you have configured it to do so by setting the “email” field in Options > Metadata > Rating. Even if you insist it does not matter I take a bet that you have set it to “MusicBee”, otherwise Picard would not read this tag nor write back any modified value. Please change this and Picard will leave the MusicBee rating alone. See below for some background.

Actually it is not. ~rating is a scripting variable holding a value between 0 and 5, with the primary goal to hold the 5 star rating from MusicBrainz.org and provide a way to write this to files. It is not a representation of the POPM tag like the other tags, that’s also why you don’t see this in the metadata table for a file and you also can’t use this parameter to preserve the POPM tags. But as I said above, this does not really matter as Picard will not touch this tag unless configured specifically. The truth is that Picard does not have full support for POPM tags and ignores it for the most part.

Now for the background: In ID3 you can have multiple POPM tags, where each POPM tag is identified by an “email” field. Actually this does not need to be an e-mail, but is rather an identifier for who or what tool the rating applies. The original idea was for sure that there could be individual ratings for the same file by different users. But in reality tools just set their own fixed strings. E.g. Windows uses “Windows Media Player 9 Series”, MusicBee uses “MusicBee”.

E.g. you could have a file with three POPM values:

email rating
MusicBee 196
Windows Media Player 9 Series 196
custom 204

By default Picard will neither read those values nor modify any of them. If you configure the e-mail field in Options > Metadata > Rating to e.g. “MusicBee” Picard will load the MusicBee field with a value of 196, convert this according to its own rules (and not MusicBees) to a value between 0 and 5 and store this in ~rating. On saving it will again take the value in ~rating, convert this back to a value between 0 and 255 and save this to the POPM field with email MusicBee.

What’s missing in Picard is full support for reading and writing arbitrary POPM tags. E.g. for proper support Picard needs to make all the POPM rating values available, e.g. you would have a rating:MusicBee tag with a value of 196 and rating:custom tag with a value of 204. Also as I mentioned in my first post even for writing the MB rating we need support for different mappings used as used by different players.

6 Likes