APEv2 tags in MP3
Reply #10 – 2011-12-30 16:27:45
It just came to me now that after I properly mapped the discnumber tag in apev2 to just "disc", my previous setup of saving both apev2 and id3v2.4 should work between foobar and mp3tag. I'll test it again. And maybe it will work with other combinations, such as apev2 + id3v2.4 + id3v1, or apev2 + id3v2.3 + id3v1. I'll test that too and, if works indeed, it would be possible to have a scheme where complete tags work in foobar (apev2) and incomplete but largely supported tags would work in software that doesn't handle apev2. This would be the best of both worlds and seems this is our goal. I made some further tests that clarified some more things. 1. About saving more than 1 tag in a file I saved apev2 + id3v2.4 + id3v1 in some files. As you stated, id3v2.4 was at the beginning, apev2 at the end and 1d3v1 after apev2. But apev2 didn't end as expected with a "TAG", but with a "APETAGEX". Example of end of a file from HexEditor:APETAGEXÐ...Å.......... ................COMPOSER.Pixinguinhap.......MUSICIANCREDITS.Pixinguinha:.Donga:.(...)PUBLISHER.Sinter SLP-1038........BAND.A Velha Guarda........DISC.1/1APETAGEXÐ...Å..........€........TAGQue Perigo....................A Velha Guarda................A Velha Guarda................1955..............................ÿ 2. I tested these files with varied combinations of tags with the other audio software I have: - Windows Media Player: doesn't read id3v2.4 nor apev2. Reads id3v2.3 and id3v1, even with apev2 present. - iTunes: doesn't read apev2. Reads id3v2.4, even with apev2 present. - VLC: Seemed to partially read apev2. 3. I seems that now I am finally aware of the problems about saving tags on files that have more than one tag type both in mp3tag and foobar. Apev2 and vorbis comments doesn't have any pre-definition for frame names. So, whatever you choose, both in mp3tag and foobar, is written in the file. But id3 is different. It has pre-defined frame names (TIT2, TPE1, etc), but none software uses them. Instead, they use a mapping between these frame names and more intelligible names, but these intelligible names aren't the same between mp3tag and foobar. So, TPE4, for instance, is MIXARTIST in mp3tag and REMIXED BY in foobar. This isn't a problem when you have only id3 tags. You save MIXARTIST in mp3tag, it writes TPE4 in file, foobar reads TPE4 in file and shows you REMIXED BY. If you change this tag, foobar will save in TPE4, so everything works between them, even if they show a different name. This doesn't happen if you have id3 and ape tags in the same file. In the same example as above, when you save MIXARTIST in mp3tag, it will save TPE4 in id3 and MIXARTIST in ape. When foobar reads this file, it reads both tags and shows all frames, despite which tag type it is from, in the properties window. So it will show REMIXED BY (the TPE4 frame read from id3) and MIXARTIST (read from ape and shown unchanged). If you save this tags in foobar, it will create the TXXX MIXARTIST in id3 (since this isn't the name it expects for TPE4) and the REMIXED BY in ape. It was this kind of duplication (principally noted in DISCNUMBER) that was bothering me. Now that I finally understood it, I can see that, apart the unnecessary replication of frames, there isn't much to worry about this. And, since mp3tag has a mapping function, but foobar doesn't, it is possible to have full compatibility between frame names if one uses exclusively the foobar names, mapping them in mp3tag. This will be my next test. Just a final comment. It would be great if mp3tag and foobar let you edit the internal mapping they do between id3 frame names and "intelligible names". If this was possible, one could choose his preferable standardization of tag names and edit it in this table. Then, apev2 and vorbis comments, which doesn't have pre-defined frame names, would also use this standard the user had chosen. All the problems described here would be gone. Mp3tag has already tried something is this path, with its mapping function, but it would be much easier if, instead of mapping the "internal intelligible names" to "chosen names for each file type", we could change the mapping between "internal intelligible names" and "id3 names".