Ben, Canar,
I personally feel that this is a defect in the spec and should be entirely
ignore and null characters should be used as Peter had previously
implemented.
The question is which solution is the better one in terms of A)
compatibility, and B) effectiveness.
Regarding compatibility: foobar2000 seems to be the only popular player
(under Windows) which uses null bytes to separate multiple artists in
ID3 v 2.3 (at least up to version 1.1.5). Other popular players either
don't support multiple artists at all in ID3 v 2.3 (iTunes, VLC Media
Player, Winamp) or use slash chars (Windows Media Player, Media Monkey).
Regarding effectiveness: it might be a good idea to support both slash
chars *and* null bytes when reading an ID3 v 2.3 tag. Yes, there is the
risk of a false positive match when treating slash chars as separators,
and AC/DC is a quite prominent example for that. However, let's rely on
facts. Only about 1 or 2 out of 1000 artists contain a slash within
their names (source: MusicBrainz database with more than 600.000 artist
names stored).
In order to further reduce the false positive match rate, a whitelist of
the most popular "slash artists" and / or some kind of artist name
analysis can be used (the probability of a slash being a separator is
higher if there are spaces present which surround the slash, for example).
When writing the tag, it entirely depends on which other program should
read the tag again afterwards. From a user's point of view, it's
important that things work as good as possible on the software or
hardware *he* uses. Keeping that in mind, an ID3 implementation should
probably write slash separators for iTunes and Winamp users, but may use
null separators for foobar and Media Monkey users, for example. In other
words: make it an option, and let the user choose the software or
hardware your program should be compatible with.
The best solution of course would be to officially revise the ID3 v 2.3
specification in order to use null bytes for multiple artists (and for
other text fields too). This however won't help much as long as such
widely used implementations like iTunes don't care about multiple
artists at all.
Regards,
Mathias K.
-Ben Allison
Post by Benjamin CookHello all,
Null separates multiple values | Null seperates multiple strings in text
frames, didnt come in until ID3v24
http://www.foobar2000.org/changelog
Also, the correct name of the player is, as I wrote previously,
"foobar2000", not "Foobar 2000".
Thanks.
--Ben Cook, aka Canar
Hydrogenaudio moderator and foobar2000 alpha-tester.
---------------------------------------------------------------------
---------------------------------------------------------------------