Puzzling case of the reverting semicolons

Tags: #<Tag:0x00007fe30f02f9f0> #<Tag:0x00007fe30f02f928> #<Tag:0x00007fe30f02f860>

This is a repost of my attempt at trying to understand and hopefully fix an issue I am encountering with how my media player (MediaMonkey) and Picard are constantly disagreeing on the interpretation of the semi-colon used to separate multiple artists in the Artist field. I’m leaning toward the source of the problem being MediaMonkey since every other views the field just fine after Picard updates the tags and it all goes south after MediaMonkey manipulates it again. Maybe someone here recognizes what I’m doing wrong.


I like to use the semicolon for multiple-value fields, as set under Library>Appearance.

Example track: Johnny Cash and June Carter on Johnny Cash’s album “Orange Blossom Special.” After organizing and tagging in MMW (MediaMonkey), the tags appear as follows
[list]Title: It Ain’t Me Babe
[]Album Artist: Johnny Cash
]Artists: Johnny Cash; June Carter
[]Album: Orange Blossom Special
]Genre: Country; Oldies[/list]

I select all and choose properties to bulk edit a field. It doesn’t appear to matter which field, but let’s say select comments to zero the value out, or manipulate the album art to apply to all.

Now within MMW and MMA the above tags remain unchanged.

However, seemingly anything else used to view the tags (Picard, Windows Explorer, Jaikoz for example) displays the tags in the following manner
[list]Title: It Ain’t Me Babe
[]Album Artist: Johnny Cash
]Artists: Johnny Cash/June Carter
[]Album: Orange Blossom Special
]Genre: Country; Oldies[/list]

I load the album into Picard for supplemental tagging, and it shows
Artist New Value: Johnny Cash; June Carter
Artist Original Value: Johnny Cash/June Carter

Apply changes. Subsequent tag viewing in anything but MMW has the semicolon shown as the separator. As soon as I manipulate the track in MMW the Artists field reverts back to forward-slash.

I do have auto-organized enabled. While that should not affect tags, I don’t even use the Artist field.

G:\Audio\Music\$If($Left($RemovePrefix(<Album Artist>),1) >= 0,#,$Left($RemovePrefix(<Album Artist>),1))\$Left(<Album Artist>,50)\$Left(<Album>,50)\<Track#:2> - $If(<Album Artist>=Various Artists,$Left(<Artist>,50),$Left(<Album Artist>,50)) - $Left(<Title>,50)

Relevant MMW settings:
Store MP3 properties using: ID3v2
ID3v2 text encoding: ASCII + UTF-16 (when needed)

In Picard:
Convert Unicode punctuation characters to ASCII is enabled
Tag Compatibility: ID3v2 version 2.4 (Same results with v2.3 and UTF-16)
ID3v2 Text Encoding: UTF-16 (Same results with UTF-8)

Beyond the annoyance that MMW and other products cannot agree on how the separator is handled in the the Artist field, why is it only affecting Artist and not Genre?

How do I get this to be handled uniformly?

I kind of discovered something to help, but i’ve also confused things even more. While writing this up and changing various settings in both applications to make sure I have the timeline accurate, I managed to enable an additional field. This has me thinking this problem may be caused by differences between ID3v2.3/ID3v2.4 and-or UTF-8/UTF-16.

Artists was not an option before. The Artist field is exactly what I’ve been experiencing. After changing between IDv3 and UTF versions in both MMW and Picard, the Artists field is now an option, and ironically more or less accurate. I say ‘more or less’ because Picard highlighted the Artists field as a changed field. Since they both have the semicolon as the separator, that field should not be highlighted for the value changing. Since it is, I’m guessing one of them is interpreting the semicolon as literal, and one of them is not.

I also don’t know what I am talking about, but have learnt a bit about tags over the years. :smiley:

I thought one of the new features of ID3 v2.4 was that it could use multiple tags whereas v2.3 was forced to shove everything into one tag with separators. This is why on the settings page the separator can only be chosen for the v2.3 tags.

I also notice when I use MP3TAG it sometimes tells me I have both v2.3 and v2.4 tags in my files. It includes an option in its settings to wipe out the v2.3 tags keeping only v2.4

Here is something I’d try. In Picard are you ticking the box to delete all other tags?

In the same vein as what @IvanDobsky touches upon, maybe it’s because Picard saves as multiple tags and only displays the values using ; for separation but MediaMonkey actually overwrites this and changes as a single tag, using ; as a separation directly in the file’s metadata.

Can you maybe open the file in another tag editor and compare how the tags look after saving in one compared to after saving with the other?


I’ve been hoping someone will drop by and point out other tagging tools. I’d love one that displayed truly raw unprettified data. I think MP3TAG’s “Extended Info” gets close to that as I have added and removed specific manual tags that way, but it is hard to be sure if what I see is what is stored.

Yeah - hex editor… I know… can’t get rawerer… that would give an ultimate answer

You gave me something to think about when you said how 2.4 handles multiple tags. Best I can tell, MediaMonkey does not write v2.4 tags.


“MM supports reading of pretty much any ID3v2 type but only ID3v2.3 is written. This is the most compatible solution, ID3v2.4 might be written in future, but for now it seems to be of little use for most users.”

I realize that this post was from 2005, but all recent posts that I found referencing v2.4 were about removing them, how they break something within MM , or how to do tag mapping.

Deleting and overwriting isn’t the solution for me because of how i use MM. This is what brought me here in the first place. Picard “fixes” a value, saves it, and then when MM handles the file again, be it 30 seconds or 30 days later, it seems like MM sees that the tag is “incorrect” and in turn “fixes” it again.

I’m going to play around with dumbing MM/Picard up and down to see if i can find a happy medium between the two. It’s not the end of the world. Just annoying that everytime i pull a “perfect album” back into Picard for whatever reason, it flags it as needing to change the Artists field.

Any theories on why Picard doesn’t call out semi-colon separated multi-value Genres? Other than being a different field, it’s basically the same thing in my mind. It’s a tag field containing multiple values that are separated by semi-colons.

As far as deep tag viewing/editing goes… have to tried Jaikoz and dbPoweramps PerfectTUNES ID Tags?

The only reason I like PerfectTUNES ID is for its Windows Context Menu integration. Quick and easy. I find the actual program side of it to be rudimentary.

Sounds like you have got to the bottom of it. If you force Picard back to old v2.3 tags only, it sounds like you’ll have cracked it. If MediaMonkey refuses to deal with v2.4 tags then it will keep corrupting and breaking files properly tagged to that standard.

It all depends on where you need to see the tags. What devices. For example, Win7 only does v2.3 tags but Win10 will show v2.4 tags. The KODI media centre I use makes use of the v2.4 tags - especially because of this ability to use multiple tags. Yet my old blackberry phone that I use as a media player when out walking needs not only old tags, but is a PITA with the track numbers as it doesn’t know about multiple disks. So I end up having to put the Disc number is as 101, 201, etc in the track number field.

The beauty of “Standards” means everyone follows their own variant.

MP3TAG seems to keep well on top of the standards (but has also had bugs to messup the multiple artists… so check change logs) I like the way it will tell me what version of tags my files have, so I can choose what to strip out.

I’ll have a look at JAIKOZ as I am sure I see the dev posting around here too.

Yes, this sound like the proper solution here. You should also look into setting the “Join multiple ID3v2.3 tags with” option to semicolon (it defaults to /.

In regards to Picards presentation of multi value tags: In the tag table at the bottom Picard separates multiple values for a tag with a semicolon. To see whether it is a real multi value tag or just a tag that happens to include semicolons open the tag editor with right clicking on the tag and choosing edit. This will show you the individual values.