Discussion:
foobar2000 ID3v2.3 compliance
Benjamin Cook
2011-03-28 19:24:13 UTC
Permalink
Hello all,

PaulTaylor added the following compliance issue for foobar2000:

Null separates multiple values | Null seperates multiple strings in text
frames, didnt come in until ID3v24

This was fixed in version 1.1. You can see the changelog here:
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.
Paul Taylor
2011-03-28 19:28:17 UTC
Permalink
Post by Benjamin Cook
Hello all,
Null separates multiple values | Null seperates multiple strings in
text frames, didnt come in until ID3v24
http://www.foobar2000.org/changelog
Ben , I cannot see this directly referred to in the changelog

Paul
Benjamin Cook
2011-03-28 19:32:15 UTC
Permalink
The following bullet point refers to the change I'm talking about.

*
Improved ID3v2 tag writing standard compliance.

I've discussed the matter with Peter (the developer) in the
alpha-testing IRC channel. It came to mind because there are other
behavioural changes landing in the most recent version that improve
compatibility with various spec-bending implementations (while still
complying with the spec).

If you don't believe me, you're welcome to retest.
Post by Paul Taylor
Post by Benjamin Cook
Hello all,
Null separates multiple values | Null seperates multiple strings in
text frames, didnt come in until ID3v24
http://www.foobar2000.org/changelog
Ben , I cannot see this directly referred to in the changelog
Paul
---------------------------------------------------------------------
Ben Allison
2011-03-28 19:55:43 UTC
Permalink
Canar (and others) -

I realize that the slash-separator is part of the spec, but I have no
particular plans to implement it in Winamp as the slash character is a
common character used in band names (e.g. AC/DC) and the spec allows no
way of escaping to embed a / in the tag. Not that Winamp supports
multiple values for the same field, but that's a different issue ;) 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. Are there players other than Foobar 2000 that use multiple
values in ID3v2 and do they support the slash character, also?

-Ben Allison
Post by Benjamin Cook
Hello 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.
---------------------------------------------------------------------
Paul Taylor
2011-03-29 11:07:29 UTC
Permalink
Post by Ben Allison
Canar (and others) -
I realize that the slash-separator is part of the spec, but I have no
particular plans to implement it in Winamp as the slash character is a
common character used in band names (e.g. AC/DC) and the spec allows no
way of escaping to embed a / in the tag. Not that Winamp supports
multiple values for the same field, but that's a different issue ;) 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. Are there players other than Foobar 2000 that use multiple
values in ID3v2 and do they support the slash character, also?
-Ben Allison
Is that what they have changed then (null to /) because Ben has not
explained this
Audio Ranger Development
2011-03-29 13:14:47 UTC
Permalink
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 Cook
Hello 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.
---------------------------------------------------------------------
---------------------------------------------------------------------
Paul Taylor
2011-03-29 13:35:00 UTC
Permalink
Post by Benjamin Cook
Hello 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.
Ah, you changed it in 1.1.6 not 1.1 !

Actually, I agree you would be better keeping the null sperator option
even though it is not compilant

Paul
Benjamin Cook
2011-03-29 15:20:45 UTC
Permalink
I would really appreciate it if you would quit second-guessing me, Paul.
I have yet to tell you anything that was less than 100% accurate.

1.1 brought a change where instead of using null, "/" was used. This
brought foobar2000 into total compliance with the spec.

1.1.6 beta 2 brought a change where instead of separating with "/",
values were separated by " / ", that is, a space on either side of the
slash is the separator. This is marginally less compliant, but still
sticks to the spec more than pretty much any other implementation I've
seen. This solves the AC/DC problem benski described.

I do not care to debate the issue. I should hardly need to defend
increasing compliance with a specification! I just want to see that
"compliance issue" dropped, as it is no longer accurate, and hasn't been
for several versions.

As it appears that the consensus is that the spec is deficient on this
matter, perhaps the "Compliance Issues" page itself should be removed
altogether, or some other page documenting implemented but varying
solutions to the spec's deficiencies should be created. foobar2000 is a
paragon of ID3v2 specification compliance, is one of very few players
supporting some of the more esoteric features of the spec, and it is
quite absurd how much resistance I'm encountering trying to get a simple
update to incorrect documentation.
Post by Paul Taylor
Post by Benjamin Cook
Hello 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.
Ah, you changed it in 1.1.6 not 1.1 !
Actually, I agree you would be better keeping the null sperator option
even though it is not compilant
Paul
---------------------------------------------------------------------
Paul Taylor
2011-03-29 16:28:52 UTC
Permalink
Post by Benjamin Cook
I would really appreciate it if you would quit second-guessing me,
Paul. I have yet to tell you anything that was less than 100% accurate.
I have no desire to second guess you but your post didn't really give
any information about what had changed, so what am I supposed to do ?

Ive been down this road before
http://www.hydrogenaudio.org/forums/index.php?showtopic=80257&hl=
and couldn't get a clear answer then either
Post by Benjamin Cook
1.1 brought a change where instead of using null, "/" was used. This
brought foobar2000 into total compliance with the spec.
1.1.6 beta 2 brought a change where instead of separating with "/",
values were separated by " / ", that is, a space on either side of the
slash is the separator. This is marginally less compliant, but still
sticks to the spec more than pretty much any other implementation I've
seen. This solves the AC/DC problem benski described.
I do not care to debate the issue. I should hardly need to defend
increasing compliance with a specification! I just want to see that
"compliance issue" dropped, as it is no longer accurate, and hasn't
been for several versions.
As it appears that the consensus is that the spec is deficient on this
matter, perhaps the "Compliance Issues" page itself should be removed
altogether, or some other page documenting implemented but varying
solutions to the spec's deficiencies should be created. foobar2000 is
a paragon of ID3v2 specification compliance, is one of very few
players supporting some of the more esoteric features of the spec, and
it is quite absurd how much resistance I'm encountering trying to get
a simple update to incorrect documentation.
You just need to explain yourself better, now that you have some
modification will be made to the compliance issues page, A varying
solutions page would be useful but I dont have permissions to create new
pages that would have to be done by someone else

Paul
Benjamin Cook
2011-03-29 17:36:11 UTC
Permalink
Post by Paul Taylor
You just need to explain yourself better, now that you have some
modification will be made to the compliance issues page
Thanks. That's all I wanted.

I figured listing the "compliance issue" that was fixed and stating when
it was fixed was sufficient. My first post to this list contains all the
information needed to allow whoever to verify that what I said was true.
I'm not going to debate this with you. It's absurd enough that despite
adding the compliance issue you're counseling people to violate the
specification!
Jud White
2011-03-29 18:46:16 UTC
Permalink
I'd like to throw in my two cents and say the slash delimiter is not a good
idea despite the spec and that I'm in favor of having an addendum to the 2.3
spec that addresses issues like this. The 2.3 spec is over 10 years old and
a list of de facto deviations/modifications would be a good thing for
everybody.
Post by Paul Taylor
You just need to explain yourself better, now that you have some
Post by Paul Taylor
modification will be made to the compliance issues page
Thanks. That's all I wanted.
I figured listing the "compliance issue" that was fixed and stating when it
was fixed was sufficient. My first post to this list contains all the
information needed to allow whoever to verify that what I said was true. I'm
not going to debate this with you. It's absurd enough that despite adding
the compliance issue you're counseling people to violate the specification!
---------------------------------------------------------------------
Audio Ranger Development
2011-03-30 08:27:17 UTC
Permalink
Post by Jud White
I'd like to throw in my two cents and say the slash delimiter is not a
good idea despite the spec and that I'm in favor of having an addendum
to the 2.3 spec that addresses issues like this. The 2.3 spec is over 10
years old and a list of de facto deviations/modifications would be a
good thing for everybody.
Who is responsible for posting a specification addendum to id3.org? Dan
O'Neill?
Jud White
2011-03-30 09:04:05 UTC
Permalink
Dan and Ben Bennett.
Hi Timothy,
It's like mostly my fault for not having a more collaborative wiki setup
that enables discussion and revision of the spec. I've been busy with my
day job (http://trusonic.com) over the last year. New hardware and
software and stuff took up a considerable amount of bandwidth. I *will*
make some changes over the next month to enable this spec to get fixed by
those who want to contribute. My apologies to the entire group.
Dan
On Wed, Mar 30, 2011 at 3:27 AM, Audio Ranger Development <
I'd like to throw in my two cents and say the slash delimiter is not a
Post by Jud White
good idea despite the spec and that I'm in favor of having an addendum
to the 2.3 spec that addresses issues like this. The 2.3 spec is over 10
years old and a list of de facto deviations/modifications would be a
good thing for everybody.
Who is responsible for posting a specification addendum to id3.org? Dan
O'Neill?
---------------------------------------------------------------------
Audio Ranger Development
2011-03-30 09:33:27 UTC
Permalink
Post by Jud White
Dan and Ben Bennett.
And are they actually willing to post an addendum? Or are we just
talking here without any actual effects?

I'm just asking because the ID3 specification seems quite resistent
regarding changes or revisions...
Jud White
2011-03-30 09:41:29 UTC
Permalink
I'm sure it's a time issue more than willful resistance.

Hey Dan, Ben - any chance we can get that wiki that enables discussion and
revision of the spec you were talking about a while ago?

On Wed, Mar 30, 2011 at 4:33 AM, Audio Ranger Development <
Post by Jud White
Dan and Ben Bennett.
And are they actually willing to post an addendum? Or are we just talking
here without any actual effects?
I'm just asking because the ID3 specification seems quite resistent
regarding changes or revisions...
---------------------------------------------------------------------
Dan O'Neill
2011-03-30 12:11:26 UTC
Permalink
Yes, lets talk about this. It has been mostly a time issue for me -
sort of a startup junkie so I get busy.

I too am not certain that a wiki is the right place for drafts and
discussions. It's 5am here in California - I'll write again before
noon with some ideas on how to move forward with the group to get an
addendum drafted in a way that allows for good collaboration with an
eye towards getting something published.

Thanks for being patient. If anyone is in San Diego, California this
weekend, email me for tickets to the San Diego Crew Classic
http://crewclassic.org

dano
I'm sure it's a time issue more than willful resistance.
Hey Dan, Ben - any chance we can get that wiki that enables discussion and
revision of the spec you were talking about a while ago?
Audio Ranger Development
2011-03-30 15:18:19 UTC
Permalink
Post by Dan O'Neill
I too am not certain that a wiki is the right place for drafts and
discussions. It's 5am here in California - I'll write again before
noon with some ideas on how to move forward with the group to get an
addendum drafted in a way that allows for good collaboration with an
eye towards getting something published.
When talking about an ID3 specification addendum or revision, we should
also care about actively informing the responsible developers of
important software vendors. What we have to avoid is a situation like
it's for ID3 version 2.4 now - well specified but rarely and badly
implemented.

Is anyone in good contacts with the development teams of iTunes, Windows
Media Player, VLC Media Player, and other important ID3 implementations?
Or do you guys read this mailing list anyway?

Paul Taylor
2011-03-29 19:45:20 UTC
Permalink
Post by Benjamin Cook
Post by Paul Taylor
You just need to explain yourself better, now that you have some
modification will be made to the compliance issues page
Thanks. That's all I wanted.
I figured listing the "compliance issue" that was fixed and stating
when it was fixed was sufficient. My first post to this list contains
all the information needed to allow whoever to verify that what I said
was true.
It didnt make clear what had changed, I always think if you want
somebody to do something for you should make it as easy as possible for
them.
Post by Benjamin Cook
I'm not going to debate this with you. It's absurd enough that despite
adding the compliance issue you're counseling people to violate the
specification!
I do not think it is absurd, the compliant page lists non-compliance and
foobar was non-compliant this is important information for developers
and users to ensure the best possible compatibility.

But this incompatibility is not in itself all bad, I myself have put
forward the idea of a 2.3.1 specification, if I was a the foobar
developer I would provide an option to use null or '/' s

Paul
Paul Taylor
2011-03-29 17:45:55 UTC
Permalink
Post by Benjamin Cook
Post by Paul Taylor
You just need to explain yourself better, now that you have some
modification will be made to the compliance issues page
Thanks. That's all I wanted.
I figured listing the "compliance issue" that was fixed and stating
when it was fixed was sufficient. My first post to this list contains
all the information needed to allow whoever to verify that what I said
was true.
I think if you want people to do something for you, its best to make it
as easy as possible for them which your first post didnt do.
Post by Benjamin Cook
I'm not going to debate this with you. It's absurd enough that despite
adding the compliance issue you're counseling people to violate the
specification!
I don't see why its absurd, the fact is that you had functionality that
doesn't match the specification and that it was this webpage is for, it
is important for users and developers to be aware of these differences,
and it seems by adding this to the compliance list its prompted you to
take action.

That said I don't think the null separator idea is a bad idea, after
that is what happens in 2.4, and I have proposed a 2.3.1 specification
myself which would allow nulls for all text fields. After all you want
multiple values for all kinds of text fields not just the artist field,
and only a few fields are specified to use the '/' seperator in v23. So
if it was me I would make it optional whether to use null seperators or
' / ' in Foobar2000


Paul
Loading...