Edit Traktor POPULARIMETER value in mp3tag

Does either of the following shorter codes work as well for you?

$repeat($char(9734),$mod($regexp(%popularimeter%,'traktor@native-instruments\.de|(\d{1,3})|\d+',$1),16))
$repeat($char(9734),$div($sub(
    $regexp(%popularimeter%,'traktor@native-instruments\.de|(\d{1,3})|\d+',$1),
    $mod($regexp(%popularimeter%,'traktor@native-instruments\.de|(\d{1,3})|\d+',$1), 51), 51
)))

No, prefer to use more lightweight software. Outside of Traktor, I use Mp3tag and Media Player Classic to play/manage my collection. (Around the house I use Logitech Media Server to make the music accessible in different rooms and on different devices.)

I haven't found this to be the case. You just need to do "Check Consistency" in Traktor, either on the whole collection or on the individual files. This will sync the tag data.

I don't think the extra Traktor info is stored in the collection.nml file by the way. I think it's also stored in the ID3 tag, in the private subdirectory under tag "TRAKTOR4". It's binary format, not very intelligible.

The only time I've had a problem with external ID3 tag changes not syncing back into Traktor is when you set a tag to empty, then Traktor will always prefer the previous value stored in the private tag. To get round this you have to "Delete from Collection" in Traktor, choosing option "additionally remove Traktor tags". Then when you next Import Music Folders it will reload the track, using only the standard ID3 tag data.

Almost :slight_smile:
The 2nd expression just has the brackets in the wrong place. This works:


OR:

$repeat($char(9734),$div($sub($regexp(%popularimeter%,'traktor@native-instruments\.de\|(\d{1,3})\|\d+',$1),$mod($regexp(%popularimeter%,'traktor@native-instruments\.de\|(\d{1,3})\|\d+',$1),51)),51))

Shame there's no function to round down a number, would have been even shorter.

1 Like

Interesting. Maybe I need to re-test the way Traktor handles metadata... My own testing was back on Traktor 2.11, so maybe things have changed in 3.

I'm still using Traktor Pro v2 (v2.11.2 11)

Just doing a bit of checking now, and you're absolutely right.

Is there a way to display the Traktor Rating value in a separate column, displayed as Stars?

☆ white star: $char(9734)

  • Right click on column headings -> Customize columns...
  • Add a new column with name = "Rating" or whatever
  • Value =
    $repeat($char(9734),$div($sub($regexp(%popularimeter%,'traktor@native-instruments.de|(\d{1,3})|\d+',$1),$mod($regexp(%popularimeter%,'traktor@native-instruments.de|(\d{1,3})|\d+',$1),51)),51))
1 Like

I’m loving this thread!!!

I’ve been using BeaTunes to get my Traktor rating OUT of the Traktor Collection.xml, and INTO iTunes Library.nml - this allows me to create iTunes SmartPlaylists based on my own Traktor Ratings...

Knowing now that I can view my own Traktor Rating in MP3Tag as “real” Star Ratings (Star Outline OR Filled Star!) saves me some switching between iTunes & MP3Tag. :+1:t2:

Any way to get the Star Rating (displayed as Stars) to show up in the tag panel?

The last code from seb303 works only partial for MusicBee player. I adjusted it a little bit to

$repeat($char(9734),$div($sub($regexp(%popularimeter%,'MusicBee|(\d{1,3})|\d+',$1),$mod($regexp(%popularimeter%,'MusicBee|(\d{1,3})|\d+',$1),51)),51))

However %popularimeter% values like

MusicBee|1|0

are NOT converted to 1 Star. Can the value expression be corrected?

However I found some other, old %popularimeter% values from other players in the past:

Easy CD-DA Extractor|255

So my questions: Can the "repeat()" value be more general and cover all possible player/software labels?

As you can see in my "Easy CD-DA Extractor" sample above the original value lacks of the second vertical line and the third value. Could this have a negative impact on the repeat() expression and star calculation?

You can have alternative regexp matches by using the | operator within ().

e.g.
(MusicBee|Easy CD-DA Extractor)|(\d{1,3})(\|\d+|)

Matches:
MusicBee|1|0
and
Easy CD-DA Extractor|255

Note that the first value 1 or 255 will now be in $2 (not $1)
The {1,3} means to match 1 to 3 occurrences of the preceding item, digits in this case.

Note also that within () you have to escape | if you want to match a literal |
e.g. (\|\d+|) matches either "| followed by 1 or more digits" or nothing.

But, still no way to get Star Rating (as :star:’s) to show up in the tag panel?

None that I've found :frowning:

I have to revert to this thread.

I used the following formula (slightly adjusted from this thread) to convert POPM Rating (from MusicBee) to stars:

$repeat($char(9734),$div($sub($regexp(%popularimeter%,'MusicBee|(\d{1,3})|\d+',$1),$mod($regexp(%popularimeter%,'MusicBee|(\d{1,3})|\d+',$1),51)),51))

With this formula the following conversions (from pattern MusicBee|<points>|0) are performed:

1 point = 0 star
64 points = 1 stars
128 points = 2 stars
196 points = 3 stars
255 points = 5 stars

However according to the "official" values from WMP and mediamonkey from thisWikipedia web page:

the mapping should be:

1 point = 1 star
64 points = 2 stars
128 points = 3 stars
196 points = 4 stars
255 points = 5 stars

So how do I have to adjust the formula above to get the official, real 1,....,5 numbers (resp stars)?

No solution for that?

$repeat($char(9734),$div($sub($regexp(%popularimeter%,'MusicBee|(\d{1,3})|\d+',$1),$mod($regexp(%popularimeter%,'MusicBee|(\d{1,3})|\d+',$1),64)),64))

But your answer:

doesn't match in my environment. I get one star more every 51 points, not every 64 points.

Maybe you can adjust this more obvious example for you?

If everything else fails: you could write a format string with
$replace($regexp(%popularimeter%,.*\|(\d+)\|.*,$1),255,*****,196,****,128,***,64,**,1,*)

This works!
Thank you

I improved it just a little bit more by replacing the tiny by more beautiful stars:

$replace($regexp(%popularimeter%,.*\|(\d+)\|.*,$1),255,$char(9734)$char(9734)$char(9734)$char(9734)$char(9734),196,$char(9734)$char(9734)$char(9734)$char(9734),128,$char(9734)$char(9734)$char(9734),64,$char(9734)$char(9734),1,$char(9734))

Disappointing that users have to invent such a function.
Since the popularimeter values are standard

see: ID3 - Wikipedia

....Mp3Tag should out-of-the-box offer a corresponding built-in conversion/replacement

I am not sure about that.
I take that you have seen in the linked article
"The frame is called POPM and Windows Explorer, Windows Media Player, Winamp, foobar2000, MediaMonkey, and other software all map roughly the same ranges of 0–255 to a 0–5 stars value for display."
And MP3tag shows you much better than any of the mentioned programs the true contents of POPM - I have never seen the values for email or play count (which are also part of the correct POPM syntax) in the named programs.
Please note that MP3tag allows to input ratings as stars, single digit numbers or in the raw format.

1 Like