Author Topic: Support for id3v2.3 Popularimeter tag  (Read 6764 times)

c0ntax

  • Newbie
  • *
  • Posts: 1
    • View Profile
Support for id3v2.3 Popularimeter tag
« on: March 05, 2012, 19:32:40 »
I've become a very quick convert to gmusicbrowser on Ubuntu, but there is one tiny little feature that I'd love to see it support, which is the Popularimeter tag (along side its current FMPS_Rating one). I use MediaMonkey on my Windoze box and used to rely on my ratings being stored to the tag for various playlists. I also used to use Banshee and Rhythmbox which also support the POPM tag, [ http://www.id3.org/id3v2.3.0#head-2452ec9cf8b42c5c117b518b69e129ff67970852 ] thus my collection was maintained across all the players I used. Sadly, after making the switch, I can't rate a track in MediaMonkey and see the rating in gmusicbrowser or visa-versa.

It would be really nice if, when setting the rating to the current 0-100 Rating system it was possible to multiply that number by 2.55 and save the POPM tag too. (Obviously, this should be optional!)  ;)

P.S. Your FAQ is a little out of date:

"Are labels, ratings, play count ... saved in the mp3/ogg/... tags ?
Not currently..."

Quentin Sculo

  • Administrator
  • Hero Member
  • *****
  • Posts: 1082
    • View Profile
Re: Support for id3v2.3 Popularimeter tag
« Reply #1 on: March 08, 2012, 03:56:52 »
The main problem I have with the POPM tag is that it requires values between 1 and 255, and gmb use values between 0 and 100. Mapping 1..100 to 1..255 is bad enough, but 0..100 is a real problem.
I guess I could maybe add an option that saves the rating to a POPM with a warning that it won't work correctly for rating of 0.
Other than this problem with 0, I'm not sure if everyone agree on how values are mapped to 1..255

I updated the question in the FAQ


trasdahl

  • Jr. Member
  • **
  • Posts: 28
    • View Profile
Re: Support for id3v2.3 Popularimeter tag
« Reply #2 on: March 10, 2012, 18:50:34 »
Isn't it just to map from gmb to popm by 1+int(255/100*gmb), and then map back by int(100/255*popm)? This is an invertible mapping, i.e., mapping from gmb to popm and then back again restores the original value.

trasdahl

  • Jr. Member
  • **
  • Posts: 28
    • View Profile
Re: Support for id3v2.3 Popularimeter tag
« Reply #3 on: March 10, 2012, 18:59:10 »
Oh, perhaps you mean that the problem is that values aren't restored when you map from popm to gmb and then back to popm. Then I see the problem :)

Although I don't think it's a very big problem, who would notice if a rating changed from 234 to 233 or 232?

Quentin Sculo

  • Administrator
  • Hero Member
  • *****
  • Posts: 1082
    • View Profile
Re: Support for id3v2.3 Popularimeter tag
« Reply #4 on: March 10, 2012, 19:19:20 »
Well the point of POPM is to share the ratings with other programs, and as I think no program use ratings on a 255 scale, it all depends on how they map their rating to and from popm. One likely outcome is a rating of 0 or 20 in gmb being seen as the same (for example one star) in an other program, and possibly, if that program writes the tag, transformed to 20 in gmb.
But yes an option to write it could _mostly_ work, with a warning.

Btw another thing I dislike about the popm tag is that it links rating and playcount in the same tag for no good reason.
Frankly I just wish this stupid tag would die.

sinekonata

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Support for id3v2.3 Popularimeter tag
« Reply #5 on: June 13, 2013, 09:01:29 »
The programs I used to rate my music with (Media Monkey, WMP and Banshee) all use POPM as such :
255 as the max value. So rating=5 in banshee and WMP. And 252 for 5.0 in media monkey. And for rating=1 it's 23 in MM and WMP while 1 in banshee.
All seem to use 64 for 2 stars, 128 for 3, 196 for 4 and 0 or "no POPM tag" if rating=0
And since Media Monkey also uses the x.5 (half-stars) ratings, it subtracts 10 from the original upper x.0 rating. So 1.5 is 64-10=54 and 0.5 is 23-10=13.

So in general the following mapping should be able to :

1. Read (POPM => gMB FMPS_Rating) correctly all values from all mentioned players :
0 (or no tag) => 0 (or no tag)
13 => 10%
[1-12]|[14-31] => 20%
54 => 30%
[32-53]|[55-95] => 40%
118 => 50%
[96-117]|[119-159] => 60%
186 => 70%
[160-185]|[187-223] => 80%
242 => 90%
[224-241]|[243-255] => 100%

2. Write (gMB FMPS_Rating => POPM) tags to be correctly read by all mentioned players (and also windows explorer's "ratings column") :
0% => 0
10% => 13
20% => 23
30% => 54
40% => 64
50% => 118
60% => 128
70% => 186
80% => 196
90% => 242
100% => 255

Media Monkey being the only player to use half-stars with POPM that I know of, to me it defines the standard for half-stars with the odd mechanic of a full-star minus ten (64-10=54 for 30% or 1.5 stars).
And in the case of 90% since MM uses 252 as 100%, I chose 242 as the 90% to write to be properly read by MM.
The ranges [1-31]... I used are defined by the windows explorer standard for reading POPM.

This is obviously too lousy/irregular a standard to be mathematically mapped from 255 to 100. So it might take a lot more time in testing with other players alone. Which is why I'd like to offer my help in that regard. I don't know a thing about Perl (I code in Java and now Python) but if pointed in the right direction I might end up being useful :D
If not I could at least test the binaries with other players, the ones I know plus other popular ones using POPM in both Linux and Windows.

PS: the forum suggested me to make a new post seeing how old this one is. Should I ?
« Last Edit: June 20, 2013, 20:23:31 by sinekonata »