Multiple values: Mp3tag & Foobar2000

I have a problem regarding the use of multiple values in Mp3tag (v2.43) en Foobar2000 (v0.9.6.5).
In Foobar I've add multiple values in the Publisher field (mp3 file with ID3v2.4) and they show up in Mp3tag, separated by a double backslash (\\), so this seems to work well. If I try it the other way around, it doesn't seem to work at all: Foobar seems to recognise the first value (what is before the double backslash I entered in Mp3tag), but not the others. So it seems Mp3tag saves them using a separator that Foobar cannot recognise. Is this due to a problem (bug?) in Mp3tag or in Foobar? And more important: is there a work around?

(I've also posted this question in the Foobar discussion forum: http://www.hydrogenaudio.org/forums/index....t=0#entry630379 )

This seems to be an issue with foobar2000 as you've correctly identified.

I use the next workaround. I use for writing only mp3tag, but I must to use foobar too, for calculating replay gain and bpm (bit per minute) values, and writing them in tags. Because of foobar bugs with multiple values of MP3 tags, in these files I use " / " (without quote) as a limiter between values in COMPOSER, ARRANGER, ARTIST, LYRICIST, CONDUCTOR, PUBLISHER tags.

When I must to use foobar for writing tags:
FLAC: absolutly no probleme, of course.
MP3: I have an action in mp3tag to change all 6 (COMPOSER, ARRANGER, ARTIST, LYRICIST, CONDUCTOR, PUBLISHER) "fals" limiters (" / ") and 2 (GENRE, LANGUAGE) real limiters ("\\") to temporary else (i use "DPL"). After I did writings of RG and BPM in foobar, change them back. Important: manually refreshing in mp3tag after changes in tags with foobar!

These mp3tag actions:
Merging MP3 tags before foobar.mta

[#0]
   T=5
   F=COMPOSER
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%composer%, / ,_DPL_),%composer%)
   
   [#1]
   T=5
   F=ARRANGER
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%arranger%, / ,_DPL_),%arranger%)
   
   [#2]
   T=5
   F=LYRICIST
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%lyricist%, / ,_DPL_),%lyricist%)
   
   [#3]
   T=5
   F=ARTIST
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%artist%, / ,_DPL_),%artist%)
   
   [#4]
   T=5
   F=CONDUCTOR
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%conductor%, / ,_DPL_),%conductor%)
   
   [#5]
   T=5
   F=PUBLISHER
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%publisher%, / ,_DPL_),%publisher%)
   
   [#6]
   T=8
   F=GENRE
   1=_DPL_
   
   [#7]
   T=8
   F=LANGUAGE
   1=_DPL_

Changing MP3 tags back after foobar. FIRST REFRESH!.mta

[#0]
   T=4
   F=TRACK
   1=(\\\\d{1,3}).*
   2=$1
   3=0
   
   [#1]
   T=5
   F=COMPOSER
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%composer%,_DPL_, / ),%composer%)
   
   [#2]
   T=5
   F=ARRANGER
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%arranger%,_DPL_, / ),%arranger%)
   
   [#3]
   T=5
   F=LYRICIST
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%lyricist%,_DPL_, / ),%lyricist%)
   
   [#4]
   T=5
   F=ARTIST
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%artist%,_DPL_, / ),%artist%)
   
   [#5]
   T=5
   F=CONDUCTOR
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%conductor%,_DPL_, / ),%conductor%)
   
   [#6]
   T=5
   F=PUBLISHER
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%publisher%,_DPL_, / ),%publisher%)
   
   [#7]
   T=5
   F=GENRE
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%genre%,_DPL_,\\\\),%genre%)
   
   [#8]
   T=5
   F=LANGUAGE
   1=$if($eql(%_tag%,'ID3v2.3'),$replace(%language%,_DPL_,\\\\),%language%)
   
   [#9]
   T=1
   F=_FIELDNAME
   1=2
   2=
(A FooBar képtelen kezelni a többszörös mezőket, még az engedélyezett hármat se (előadó, szerző, szövegíró). Megoldás: Ha FooBar-ban kényszerülök címkét írni, előtte lecserélni a 6 személy (COMPOSER, ARRANGER, ARTIST, LYRICIST, CONDUCTOR, PUBLISHER) "ál"-határolóit (" / ") és a 2 valódi határolót (GENRE, LANGUAGE) egyaránt ideiglenes másra, ugyanis íráskor a FooBar valódira-rosszra (";") cseréli, s ekkor adatok tűnnek el. Van rá műveletem (az ideiglenes határoló "_DPL_").)

I wrote:

It was a mistake: there ARE problems with handling FLAC tags in foobar, too. So I use (similar as above) these 2 actions in mp3tag:

Merging FLAC tags before foobar.mta

[#0]
    T=8
    F=COMPOSER
    1=_DPL_
    
    [#1]
    T=8
    F=ARRANGER
    1=_DPL_
    
    [#2]
    T=8
    F=LYRICIST
    1=_DPL_
    
    [#3]
    T=8
    F=ARTIST
    1=_DPL_
    
    [#4]
    T=8
    F=CONDUCTOR
    1=_DPL_
    
    [#5]
    T=8
    F=PUBLISHER
    1=_DPL_
    
    [#6]
    T=8
    F=GENRE
    1=_DPL_
    
    [#7]
    T=8
    F=LANGUAGE
    1=_DPL_

Changing FLAC tags back after foobar. FIRST REFRESH!.mta

[#0]
    T=5
    F=PUBLISHER
    1=$if($and($eql(%_extension%,flac),$grtr($len($meta(organization)),0),
 $not($grtr($len($meta(publisher)),0))),
   $meta_sep(organization,\\\\),$if($eql(%_extension%,flac),$meta_sep(publisher,\\\\),%publisher%))
    
    [#1]
    T=5
    F=ORGANIZATION
    1=$if($and($eql(%_extension%,flac),$eql($meta(organization),$meta(publisher))),,
 $meta_sep(organization,\\\\))
    
    [#2]
    T=5
    F=COMPOSER
    1=$if($eql(%_extension%,flac),$replace(%composer%,_DPL_,\\\\),%composer%)
    
    [#3]
    T=5
    F=COMPOSER
    1=$if($eql(%_extension%,flac),$replace(%composer%, / ,\\\\),%composer%)
    
    [#4]
    T=5
    F=ARRANGER
    1=$if($eql(%_extension%,flac),$replace(%arranger%,_DPL_,\\\\),%arranger%)
    
    [#5]
    T=5
    F=ARRANGER
    1=$if($eql(%_extension%,flac),$replace(%arranger%, / ,\\\\),%arranger%)
    
    [#6]
    T=5
    F=LYRICIST
    1=$if($eql(%_extension%,flac),$replace(%lyricist%,_DPL_,\\\\),%lyricist%)
    
    [#7]
    T=5
    F=LYRICIST
    1=$if($eql(%_extension%,flac),$replace(%lyricist%, / ,\\\\),%lyricist%)
    
    [#8]
    T=5
    F=ARTIST
    1=$if($eql(%_extension%,flac),$replace(%artist%,_DPL_,\\\\),%artist%)
    
    [#9]
    T=5
    F=ARTIST
    1=$if($eql(%_extension%,flac),$replace(%artist%, / ,\\\\),%artist%)
    
    [#10]
    T=5
    F=CONDUCTOR
    1=$if($eql(%_extension%,flac),$replace(%conductor%,_DPL_,\\\\),%conductor%)
    
    [#11]
    T=5
    F=CONDUCTOR
    1=$if($eql(%_extension%,flac),$replace(%conductor%, / ,\\\\),%conductor%)
    
    [#12]
    T=5
    F=PUBLISHER
    1=$if($eql(%_extension%,flac),$replace(%publisher%,_DPL_,\\\\),%publisher%)
    
    [#13]
    T=5
    F=PUBLISHER
    1=$if($eql(%_extension%,flac),$replace(%publisher%, / ,\\\\),%publisher%)
    
    [#14]
    T=5
    F=GENRE
    1=$if($eql(%_extension%,flac),$replace(%genre%,_DPL_,\\\\),%genre%)
    
    [#15]
    T=5
    F=LANGUAGE
    1=$if($eql(%_extension%,flac),$replace(%language%,_DPL_,\\\\),%language%)
    
    [#16]
    T=1
    F=_FIELDNAME
    1=2
    2=

Caution: there are NO line breaks after commas!

I am not aware of file resp. tag-type related problems between Mp3tag and foobar, please elaborate.

DD.20150613.2030.CEST

Yes, I was not enough exact. Really, problems are mostly with handling MP3 tags in foobar, but...

When I get a new FLAC file:

  1. Fill all tags in Mp3tag.
  2. Merge those 6+2 tags with actions.
  3. In foobar, calculate and fill in tags RG and BPM
  4. In foobar convert files to mp3 (VBR V3, ~175 kbps - it's good enough for walking) - I need them in Sansa clip for walking (with mp3: more music in same disk size, plus more accu time).
  5. Again in Mp3tag: change back all merged fields, both in FLAC and MP3 files.

ID3v2.3 standard enable multiple values only in few fields. For example, in GENRE, LANGUAGE, ARRANGER, PUBLISHER - no. But, really, we MUST to use multiple genres, languages, etc.

(Yes, I know: ID3v2.4 is a little better - but it is not popular, many apps and clips can not handle it.)

In FLAC no problem with multiple values - but we yet need mp3 encoding, for example, I need it because of my Sansa clip. I must and want use multiple values, and of course, I want exactly identical tags in FLAC and MP3 variant of the same music file.

Yes, theoretically, foobar must not to manage non-standard multiple values. But really, in life, we must to use them. So, in fact, foobar MUST to manage them.

And so: I have a FLAC file with tags...
Genre1: tango
Genre2: latin
Genre3: pop

If I convert this FLAC in foobar to MP3, without merging first these tags, the resulting MP3 file, looking in Mp3tag, will have tags...
Genre1: tango;latin;pop
Genre2:
Genre3:

But if I use this merger/divider method, all will OK with mp3 multiple tags, both in Mp3tag and foobar, too.

And, of course, after writing ANY TAG of a FLAC file in foobar, foobar replaces value from PUBLISHER tag to ORGANISATION tag. These actions manage this probleme, too.

And, after writing ANY TAG of an MP3 file in foobar, foobar replaces simple track numbers (4) to complex form (4/17) - but, first, I do not like it; second, FLAC and MP3 tags will different. These actions manage this probleme, too.

Good news: now Foobar (1.5.4 final) also sees/manages multiple TPUB and TLAN fields in mp3 files (ID3v2.3). If we fill in a new (single) field in Foobar (e.g. BPM or RG), the existing multiple fields will not be "corrupted" either (delimiter will not changed to semicolon). The only residual inconvenience: if we fill in a multiple field in Foobar (typical case: copying fields during FLAC> MP3 conversion).

However, one interesting thing: when (after file conversion in Foobar) i separate the temporarily merged multiple fields (in the FLAC files), $replace(%composer%,_ DPL _,\\) is not enough. In the Extended Tags Panel Mp3tag now sees: composer1=first\\second. Another plus operation is required (after): split field by separator "\". (A re-save would be enough, but it can not be solved with an action.) So, something has changed in the way, Mp3tag works.

Later: Mp3tag v3.06f solves the \\ problem.

1 Like