Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Metadata & multi value separators / delimiters across audio formats ? (Read 5607 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Metadata & multi value separators / delimiters across audio formats ?

Hi,
I started this as a reply to this thread, but it then escalated in length & scope... so I thought I'd make a new thread.
https://hydrogenaud.io/index.php/topic,102013.25.html

Essentially I'm trying to find out more about what the state of multi value / separated metadata is.  To start out, I am by no means a programmer, I'm just using Foobar & Musicbee mostly, and their handling is pretty similar, but it still opened up some questions...
And so far I've only started looking into 2 formats as this started as a feature request with 3 "professional" audio software devs who have no support of multi value metadata whatsoever and imo it would help a lot if they did...

What I've found so far:
MP3, id3v2.3.0:
http://id3.org/id3v2.3.0
"4.2.1. Text information frames - details
TCOM
    The 'Composer(s)' frame is intended for the name of the composer(s). They are seperated with the "/" character.
"

FLAC:
http://www.xiph.org/vorbis/doc/v-comment.html
"Field names are not required to be unique (occur once) within a comment header. As an example, assume a track was recorded by three well know artists; the following is permissible, and encouraged:
              ARTIST=Dizzy Gillespie
              ARTIST=Sonny Rollins
              ARTIST=Sonny Stitt
"
(The above also states that separating values is achieved by a 'null' delimiter for flac files - can anyone briefly explain what these are ? - line breaks ? Or a separate definition as the above, i.e. pushing multiple single artist declarations/fields ?).



So here's a few questions, ordered by importance (for me atm - which is focussing on mp3 & flac for now):

  • For flac/mp3 specifically - which official metadata fields allow multi-value separators ? I've only played around with Artist and Genre fields over a few media handling softwares, and behaviour is... confusing & erratic... at best. See the next point

  • And even in my beloved foobar, from a user experience once you start looking closely, things are a tad confusing.... let me explain.
    Foobar for mp3 files: allows " / " (id3 convention mentioned above) as well as ";" as a separator in the artist field. Yet, if " / " is used, upon re-editing the metadata, the previously set " / " has turned into ";" in the user front end. On the other hand, in the Genre field " / " seems not to be a separator, but a literal string, and does not get 'converted' into ";".
    Foobar for flac files: the official mp3 separator " / " is treated as a literal string in Artist as well as Genre.
    What's the history/reasoning here for foobar ?

  • Which tool gives the best handle on metadata the way they are written into the file...? Even taglib or mutagen for python seem to have an abstraction layer on top when querying metadata....
    What's the best way, for non-programmers (with a little python poking ability) to read out the full header as it is written ? Essentially I'm trying to better my understanding of the actual data inside the files...

  • Which other of the widely spread audio formats does allow multi-value separators, and what's their convention ?

  • Is there / has there been any push to standardize multi-value metadata / separators / delimiters (I assume not, hence everyone implements it whichever way... or not at all...).
    Foobar & MusicBee seem to be the exception by showing semicolon as the standard separator in their front end...


Cheers.
c.

Re: Metadata & multi value separators / delimiters across audio formats ?

Reply #1
Not sure if a new thread was needed, there are lots of them. A few were mentioned here: https://hydrogenaud.io/index.php/topic,76655.msg747810.html#msg747810

You give part of the answer yourself: the Vorbis comments format used in FLAC files, allow for multi-values by repeating the fields with a new value. The ID3 tag format version 2.3 uses "/" to separate multi-values (for certain fields) - which is but one way that ID3 sucks big time. Version 2.4 uses the termination character (for "text fields"), but version 2.4 is not so widely supported - which is but one way that Microsoft Windows Explorer sucks big time.

What does fb2k do? It tries to allow you to use the semicolon (so that you can avoid having to know the quirks of the individual tagging formats). Under Preferences -> Advanced -> Display -> Properties Dialogue you can set what fields fb2k should allow to be multi-line and what fields it should allow to be multi-value. It will then - unknown to me how and how good it implements it - consider each tagging scheme's format (again, with the intention that you won't have to know).

Re: Metadata & multi value separators / delimiters across audio formats ?

Reply #2
Thanks for the reply Porcus!
I searched for separat* , separator and delimiter on the forums, and there only were few threads, and none with any answers to the many questions I had :D
I'll read through the ancient link list in the thread.

As shitty as ID3 is, I came across 2 programs, Serato & Traktor, which both can read multi field flac metadata.... but both have broken implementations.
i.e. they display this:
              ARTIST=Dizzy Gillespie
              ARTIST=Sonny Rollins
              ARTIST=Sonny Stitt

As one single literal string:
Artist = "Dizzy Gillespie; Sonny Rollins; Sonny Stit"

And to make it even better, when writing to a flac file with the correct multi artist separation, Serato will then only write the first artist field it finds when re-writing a flac file w multi valiues, resulting in:
Artist = "Dizzy Gillespie"

*head-on-keyboard-smash.gif*

Cheers.
c.

Re: Metadata & multi value separators / delimiters across audio formats ?

Reply #3
I write the jaudiotagger library which attempts to provide a most common interface for different audio tag metadata formats and a way to still make tag specific changes. My own Jaikoz tagger supports multi value Flac fields.

Essentially ID3v24 uses the null character (0x00) to separate multiple values, so multiple tracks artists would exist as a single TPE1 with multiple values each seperated by a 0,
TPE1=Johnny Cash\0June Carter (Ive simplified to not show size fields ectera)

whereas VorbisComments would just have multiple ARTIST fields
i.e
ARTIST=Johnny Cash
ARTIST=June Carter

If you view your music files in a editor that supports a hex view such as Ultraedit things might be clearer.
 
A tagger/player should treat these as equivalent. ID3 can be used by Mp3s, Wav and Aiff amongst others. Vorbis Comments is used by Flac and Ogg

Now problems:

1. ID3v23 does not actually support the null separator, however it can be used and understood by some players/taggers
2. Whilst multiple values are supported in ID3v24 and VorbisComments many players ignore all but the first one
3. Sometimes the semantic information is lost by having as separate values, so in my own SongKong and Jaikoz taggers I would store in TPE1 the track credit, which is this particular case was 'Johnny Cash & June Carter'. This captures the join information which in this case was ' & ', but it could be ', ' or 'feat') and it also means iTunes displays the expected artist for this track (i.e both people)
I then have an additional ARTISTS field where I store the artists as separate artists.
4. The different conventions used in VorbisComments and ID3 make things difficult, so for example using ARTIST and ARTISTS fields for VorbisComments work fine, but because people are used to the multiple value support in VorbisComment some would prefer ARTIST to be used as ARTISTS, i.e always store each person separately and ignore the join phrases.

 

Re: Metadata & multi value separators / delimiters across audio formats ?

Reply #4
Sweet. Thanks for the info paultaylor!
I'll look at " editor that supports a hex view such as Ultraedit".
Churs.
c.