Scheme for multi-player compatible Rating tags


#1

Bear with a relative noob here please.

I've done a fair bit of research behind why MP3Tag has implemented player-specific Rating tags for ID3 POPM fields, and it does seem an ugly but necessary state of affairs, as much as we'd like to have a Rating tag that worked across the main players that just doesn't seem possible without a dedicated coding effort that probably isn't merited by the apparent lack of general interest.

However in my little bit of noodling around I seem to have come across something that works for at least a couple of decent players, at least for FLAC files, and I'm posting what I've done so far not only so that it might help others interested in the topic, but perhaps MP3Tag could continue to lead the way in pushing this tech subculture forward towards greater interoperability.

In checking out various players, I've come across two Rating-capable free apps that are "portable" in the windoze sense of not requiring installation to the registry, just copy the folder to a removable HDD or flash drive whatever and all your settings come with you. The first is Foobar2000, and the other is MusicBee; these are on opposite sides of the spectrum for philosophy, intended audience, customizability vs bells-and-whistle features, but both seem pretty darn good.

In checking out how Rating is implemented, MusicBee is fairly straightforward at least with FLAC - it creates a Rating field and uses a 0/20/40/60/80/100 scale for 1-to-5 stars. I seem to have come across this scheme before, if anyone knows where please inform, it seems cleaner to me than the ones based on 255 - does it correspond to any of MP3Tag's options?

      (as a side note MB replaced my ALBUMARTIST tags with ALBUM ARTIST ones and inserted an ENCODING field without asking, but that was easily worked around with MP3Tag's great mapping and scripting features.)

In looking at Foobar2000, that's got quite a few very flexible and therefore confusing options for implementing Ratings, and the trend there seems to favor library/database storage rather than in-file tagging, but I came across a "quicktags" plugin that uses tags and is simple and flexible. The standard howto recommended a simple 1-5 scheme, but I adapted it for MusicBee's fixed 20/40 etc one. In case anyone's interested here's the column display formula (those are unicode stars in there in case they don't display right on your screen):

	$pad($repeat(★,$div(%rating%,20)), 5,☆)

I bound updating the field to keystrokes Ctrl-0 through Ctrl-5 for FB2K; unfortunately MusicBee seems to require using the mouse.

Now comes something at least tangentially relevant to MP3Tag - a display formula to do the same thing as the above:

$repeat($char(9733),$div(%rating%,20))$repeat($char(9734),$sub(5,$div(%rating%,20)))

I could of course just display the numeric value of the tag, but that would be too easy and therefore boring :sunglasses:

If anyone feels even a tiny fraction of my excitement about this - a Rating tag that works in multiple mainstream quality player apps as well as being simple and straightforward enough to lend itself to easy conversion to the more screwy ones - then do please feel free to extend on this with suggestions.

I will at some point need to convert my FLAC files to MP3 for portable-hardware use, and of course it would be way cool if I could continue to apply and make use of ratings from there, so if anyone has any ideas for that, especially in the Android environment, that would be very very cool.

Much as I hate the Big Brother Apple has become in the music scene, an iTunes/iOS conversion routine would probably have the greatest appeal to the community in general, but it seems that'll have to be done via a one-time import from the WMP/MM formats (they are compatible right?) and generic Windows Explorer compatibility would be most useful (even if read-only).

I doubt if I'll ever go back to Winamp.

Finally, thanks to the dev(s) for such a wonderful project as this, MP3Tag's a tremendously useful and even elegant tool, refreshingly respectful of the end user in a pretty wild-wild-west area of software.


#2

Hope y'all don't mind me talking to myself here, maybe even if there's no practical solution, it'll help later googlers from wasting as much time as I have on the issue.

So far the only player that actually seems (from a brief look, not much realistic testing) to follow the POPM spec's intent AFAICT is Quod Libet / Mutagen.

(Off topic note Mutagen's MID3V2 script is the bee's knees for dumping a nicely formatted literal representation of tag contents out for diffing purposes or when you need as in this case to get away from MP3Tag's usually helpful masking of literal values behind its interpretations)

QL lets the user specify an identifying string (which the spec intended to be a unique email address) which at least in theory should allow multiple users to each have their own Ratings stored in files' tags. In practice many apps will silently wipe out any "foreign" POPM tags leaving only their own.

So at this point I don't have much of a solution for the cross-application compatibility problem, but I do have some vague suggestions on improving MP3Tag's POPM handling that may make it easier for people to understand what's going on. Keep in mind I'm pretty noob and am first to admit there may be many strong reasons to completely ignore the below, so feel free to do so.

First I'll (re-)state the problem as I see it. I'm going to assume that MP3Tag is 100% accurately following the latest-stable release behaviour of MediaMonkey, Win7/WMP and Winamp in how they format their "proprietary" POPM rating tags in converting to the 1-5 star-values.

One problem with this approach is that there are apps like MusicBee's with hard-coded behaviour that apparently are trying to follow one of the "standards" here, but don't quite match up with MP3Tag's, and entering the no@email or other app-identifier strings into the nicely flexible QL also doesn't result in any consistency in the MP3Tag's interpretation when you try different star-value ratings (1-5).

People who don't understand that "Popularimeter" is just the non-interpreted display version of "Rating MM" etc quite justifiably get confused at MP3Tag's display when they see the values jumping around from one "field" to another depending on the rating.

I'd first like to suggest an easy solution - a user option to globally disable the POPM interpretation feature, to simply display the "raw" Populimeter value of identifier_string followed by Rating (and the playcount if it's present).

As for my real wishlist item, I'm not sure how it could be implemented in practical detail, I'm just thinking out loud here tossing an idea out there based on QL's nicely flexible behavior, which I have to believe the communities around QL and other "tweaker" players like Foobar who happen to care about Ratings may be able to take advantage of.

In addition to the generic display as above, allow the user to specify the "identifier string" and the 0-255 "break points" that match up with their 1-5 (or 1-10 for half-star supporting systems).

The currently supported MM/WMP/WINAMP functionality could be a default shipping set of three profiles, similar to what you're doing now with fieldname mapping.

But then MusicBee and QL and playerX users who care enough to reverse-engineer their player's POPM spec can configure MP3Tag themselves to display the 1-5 or 1-10 number, or even as stars in the column if so inclined.

Finally, put in a few example Actions that will allow a generic FLAC/Vorbis RATING field (IMO 0-100 with breakpoints at 20/40/60/80/100 is "generic") to be converted to the POPM field appropriate for their MP3 player of choice.

Getting that far would be pretty darn close to Rating Nirvana AFAIC, so I won't even start to speculate how one would approach 2-way syncing of ratings between formats based on file timestamps or a whichever is higher rule or. . .

If you bothered reading all this, thanks for your patience!

:sunglasses:


#3

Players like iTunes simply ignore any ratings that is stored inside a file and only relies on the ratings stroed in its own database ... and refuses to export any of it.
Or WMP reads the rating of a file but does not update it there...
So what do you do with data that is hardly used and if of no use.


#4

That attitude is IMO overly pessimistic; but if ratings data aren't important to you I can see where you would consider all this more trouble than it's worth.

However they are very important to lots of people, which is easy to see by their cries of dismay all over the intertubes when they've lose them all when switching from one player/manager to another, or even just moving their collection to a new computer.

That of course is the worst-case scenario I'm planning to avoid and while I'm at it, trying to help others avoid by raising awareness of the issues involved.

I agree the best-case scenario, of many mainstream player/managers supporting a transparent tag standard is at this point a pipe dream.

However if the issue is important, with a bit of knowledge one can understand how the various players work, and do your ratings consistently with one that either handles it the way you want, or is popular enough that people have written tools to support conversion/import/export, and then store the ratings in a way that ensure they won't get lost and so they can get converted to be used by other players. iTunes is a great example of an app for which there are many great conversion scripts out there to bring the playcount/rating information into Slimserver, MonkeyMedia, Winamp, Songbird, maybe even Foobar.

Which type of project obviously MP3Tag goes a long way towards helping with - I'm just suggesting it wouldn't take much effort to go a bit further and actually enable POPM to be a more useful standard, as pseudo as it is. Quot Libet just happens to provide a great example of how it can be done and I can't imagine it would take that much effort to make MP3Tag as flexible to allow for easy conversion between many more players without having to hardcode new "virtual tags" for each one.


#5

Thanks for taking the time to look into this. As somebody who (i) uses ratings a lot and (ii) uses android, Windows and Linux players, the issue of rating portability is high on my agenda. Also, I agree with your opinion that the previous reply was overly pessimistic: the fact that the most popular media players implement stupidly selfish rating schemes, doesn't mean that it's impossible to work around. I use neither iTunes nor WMP, so their daft schemes are of no interest to me. Like yourself, I'm using MusicBee, so I'd be very interested in any advances you make. I'll be sure to report back if I find anything interesting myself.


#6

Excellent, thanks for continuing the conversation, and will do.

I like Android as a platform generally, but apparently most MP3 players there are still pretty rudimentary. However I've heard good things about PlayerPro though, and although they have their (yet another proprietary) own ratings scheme, they also (most amazingly) let you choose to use from

  • Windows Media Player
  • Winamp
  • Media Monkey
    as well (not sure if concurrently or just one of the four, the latter would be ideal, and perhaps a possible model for MP3Tag*)

Apparently they also let you export their playstats (+ratings?) to iTunes or Songbird via XML.

All this is likely old news to you, especially if you've been following this thread on the MB forum, but thought some cross-pollination might be useful for others googling later. . .

Regarding MB itself, I found it a bit frustrating that they claim to support a standard POPM field spec (WMPs?) but apparently don't to the extent that their tag data causes MP3Tag to jump around in its interpretation between the different internal mapping definitions, not clear to me who's at fault but at this point I assume it's MusicBee not quite following whatever "standard" they intend.

*brainstorming feature idea - let MP3Tag be configured to allow multiple concurrent POPM "standards" (ideally in addition to a user-defined mapping, e.g. my "RATING" field which is 5-stars mapped to 0-20-40-60-80-100).

And then allow for an Action that does something like:

  • make all the fields of type Rating match based on
  • a selected field is "master"
  • majority wins
  • highest rating wins
  • lowest rating wins
    then then also:
  • if there is a single field of type Rating that has a different value from all the others, make all the others match that single field.

This would in effect enable two-way syncing to any/all of the players that support any one of the standards supported by MP3Tag.

Workflow:

  • get all the rating-type fields in sync per track, as per the first group above
  • use your device/player to listen to and rate your tracks
  • bring them into MP3Tag and run the last action discussed above to get them all back in sync

Probably a job for a dedicated applet, not necessarily MP3Tag, but one can always dream. . .