MinimServer Forum

Full Version: id3v2.3 multiple genres?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hey guys, another quick question for the group. What is the preferred method for separating out multiple genres in ID3v2.3 headers?* I haven't been able to get minimserver to recognize them.

Browsing the archives, I found references to the fact that MP3Tag and most other programs seem to write the TCON frame incorrectly, but I haven't been able to figure out what "correctly" means in this case. id3.org gives guidance for referencing multiple id3v1 genres, but stops short of saying how to do multiple free-text genres. Aside from not separating them with null values, and not defining multiple TCON frames, anyway.

I've been using writeAllTags to help debug this, just to factor out potential control point problems and make sure that the tags are/aren't getting recognized by minimserver how I want.

Thanks for any help!

*I'm guessing the actual preferred method would be to use ID3v2.4, but I need my to use ID3v2.3 for other compatibility reasons. Dodgy
(25-07-2015 05:38)CyberWilhelm Wrote: [ -> ]Hey guys, another quick question for the group. What is the preferred method for separating out multiple genres in ID3v2.3 headers?* I haven't been able to get minimserver to recognize them.

Browsing the archives, I found references to the fact that MP3Tag and most other programs seem to write the TCON frame incorrectly, but I haven't been able to figure out what "correctly" means in this case. id3.org gives guidance for referencing multiple id3v1 genres, but stops short of saying how to do multiple free-text genres. Aside from not separating them with null values, and not defining multiple TCON frames, anyway.

I've been using writeAllTags to help debug this, just to factor out potential control point problems and make sure that the tags are/aren't getting recognized by minimserver how I want.

Thanks for any help!

*I'm guessing the actual preferred method would be to use ID3v2.4, but I need my to use ID3v2.3 for other compatibility reasons. Dodgy

My interpretation of the ID3v2.3 specification is that it allows the following formats for specifying two genres:

(num1)(num2)
(num1)text2

and the following formats for specifying three genres:

(num1)(num2)(num3)
(num1)(num2)text3

With ID3v2.4, you can specify two genres like this:

num1[nul]num2
num1[nul]text2
text1[nul]num2
text1[nul]text2

where [nul] is the NUL (0x00) character.
Hey Simon, thanks for the reply!

Huh. So there's no way to chain multiple text values without specifying an ID3v1 genre number as a separator?

As a quick test, I just tried using "(0)Rock(1)Christmas" for the TCON frame, and it looks like minimserver wrote out the following:
GENRE=Blues
GENRE=Rock(1)Christmas

Separating the two with a space doesn't help, either. I would have expected:
GENRE=Rock
GENRE=Christmas

Granted, misusing the ID3v1 genre reference seems like asking for trouble, anyway. I tried using an undefined reference value, but just about everything seems to choke on that.
(25-07-2015 07:52)CyberWilhelm Wrote: [ -> ]Hey Simon, thanks for the reply!

Huh. So there's no way to chain multiple text values without specifying an ID3v1 genre number as a separator?

As a quick test, I just tried using "(0)Rock(1)Christmas" for the TCON frame, and it looks like minimserver wrote out the following:
GENRE=Blues
GENRE=Rock(1)Christmas

This is the format (num1)text2 in my previous post when num1 is 0 and text2 is Rock(1)Christmas.

Quote:Separating the two with a space doesn't help, either. I would have expected:
GENRE=Rock
GENRE=Christmas

Granted, misusing the ID3v1 genre reference seems like asking for trouble, anyway. I tried using an undefined reference value, but just about everything seems to choke on that.

MinimServer implements the ID3v2.3 and ID3v2.4 specifications. The 2.4 specification fixes a number of limitations in the 2.3 specification, including this genre issue.

Is there some reason why you can't use the format (num1)text2 or (num1)(num2)? MinimServer automatically translates (num) to the corresponding text string.
Hm, okay. It sounds like to support multiple genres on ID3v2.3, I'll need to put some sort of lookup table in my conversion script to detect genres with the same name as ID3v1 genres, replace them with the ID3v1 number, shuffle them to the front, and pray that there's only ever one free-text genre that's not in the ID3v1 list. I may just punt on this idea for now. It's pretty bonus round for me, and the genre tag is kind of a subjective wasteland anyway.

I'd love to switch to ID3v2.4, but I'm kind of stuck since some of my non-DLNA devices only read ID3v2.3. The biggest sticking point is my wife, who uses WMP and refuses to use anything but folder navigation, and so doesn't go through the server. I'll get her converted over eventually. Smile

Thanks for the help, Simon!
Reference URL's