Tag consolidation into one type and read/write/delete help


First post so be gentle ... :slight_smile: Been using mp3tag for a while and not given too much thought to tag types. As long as my mp3 player of choice picks everything up that's not been a problem and I've left the tag types in the Options > mpeg section to defaults (I'll just add that I'm only interested in mp3 files here). The issue of tag types came up recently in relation to car head units and the fact that they sometimes don't support all that they should. Mine only gives track number and elapsed time though just after a factory reset it did give artist/track etc briefly. Anyhow ...... the issue is not the HU but I was after creating some tracks with specific tag types to test this out. Turns out that a lot of my mp3 files come from various sources that aren't too fussy about tag types. And, to be honest, all I do is add missing ones and edit existing ones to my satisfaction.

So, to get to the point after all thatr preamble, I'm looking for a way to read in all existings tags of all types from an mp3 file but rewrite them ALL as one specific type. For example, read in all APE, ID3v1 and ID3v2 tags but write the lot as ID3v2. I've found some hints in other sites and this one but no reproducible way to do this.

Which brings me to a secondary issue and that's not knowing exactly how the Options > mpeg > R/W/D work. I assume that the 'Read' happens at file read time? When you point mp3tag at a folder? And it only reads those tag types that are 'checked'? So the other(s) is/are ignored?

The 'write' happens on a CNTL-S? And only writes the tag type(s) that is/are 'checked'? But ..... does that mean that a tag of type X is only written IF that tag type X is checked? Or does it mean that all tags of type X and Y and Z are written but only as tag type X (if X is write-checked)?

And at what stage does a tag 'delete' occur? When you do a CNTL-S or when the file is initially read?

And how are these options releated to the contect menu 'tag cut/copy/paste' etc?

Right, I know I've probably asked some questions that have obvious answers to some, just not to me. I just need to get my head around exactly how these things work and then I should be fine.

All comments appreciated.


MP3tag treats different tag versions like this:
APE overrules ID3V2 which overrules ID3V1.
So if you load a file that has all tag types and have all of them set to "read" then you see the contents of the APE tags.
If you set all tag types to "write" then MP3tag tags care that all tag types are in sync to the extent that they support the information. ID3V1 does not feature all tag fields and has no embedded images, as an example. The currently loaded information (and possibly modified data) is written to the files e.g. when you press Ctrl-S.
If you cut tags with the functions from file list context menu or even delete the tags then this happens to all tag types that you have specified for deletion.

Read, write and delete always and only happens to the tag types that you have specified for each action.
So if you read APE tags but do not write them, then you will never see any kind of update as the updated tags get overruled by the APE contents.

So if you want to delete a specific tag type, set only this one to read and delete and un-tick all other tag types for all actions. Read the files, then use the function to cut the tag. All other tag types are ignored.
To see what is left, set all other tag types to everything (read, write, delete) and reload the files.

Thanks for the info. But it doesn't really answer my questions. For example, you say APE overides ID3 etc BUT do you mean that is there are any APE tags that NO id3 tags will be shown? Or does it go on a field by field basis?

I do want to delete tags BUT I want the information from those deleted tags to be transferred to one of the other types. So, APE tags to be transferred to ID3 BUT the original APE to be deleted.


No, MP3tag does not show the best of all worlds but it follows the highlander principle: there can only be one.
So, what you see in MP3tag is the data from the tags with the highest priority in MP3tag: APE>ID3V2>ID3V1.
THis is no problem if the tags are in sync. If they are not ... then there is a problem.
You cannot transfer the data from one tag version to the other to fill in the gaps internally.
You would have to export the data from one tag version to a text file and then import them to the other.

So it doesn't work on a field-by-field basis? For example if there is only a single field with an APE tag but all have ID3 tags then if I read APE and ID3 I will only see a single field with a tag in it, no others?

exactly. That's the way it is implemented.
The field variables that you see in MP3tag are not the fields found in the tags.
When you look at the supported fields in the help
You will find that the actual field names vary according to the employed tag standard - and to grant a unified addressing scheme in MP3tag where the field for the artist is always addressed as %artist% and not as
TPE1, ยฉart, T=30 ARTIST or Author
the priority of the tag types then sets which configuration has to be taken seriously.
The problem with different tag versions only arises when there was a program that wrote only one tag type e.g. MusicMonkey likes to write its replaygain fields only to APE tags and does not copy the rest to APE as well.
You could check what data you have in the APE tags:
Set only APE to read and no other tag type and then re-read the files, select them and press Alt-T to see a list of fields. If these are only very few fields and mainly of the replaygain type, then you can decide if you want to keep that information or simply remove it.