Remove language token from UNSYNCEDLYRICS

Sorry for the necro-bump, but I had the same problem and found the solution:

  1. You need to use Actions (quick): replace with regular expresion (instead of just "Replace")

  2. All characters are "literal" except .|*?+(){}[]^$. These characters are literals when preceded by a \. So you need to add a \ before any | so it can be replaced

Then you just replace any eng\|\| with "" (just blank) and its done, no more language token.

If you want to replace a string constant (in your case eng||) with nothing, then a plain "Replace" is sufficient which means that you do not have to escape any special characters.

The data in the field UNSYNCEDLYRICS will get an invalid format for ID3V2.3 tags which may lead to the effect that players refuse to display that field - so I wonder why anyone should do it.

That won't happen because MP3Tag prevents that. If the language token is replaced with "Nothing" in an action (it doesn't matter whether with Replace or Repace with a regular expression), Mp3Tag resets the language token. In this case and the language token defined in
is taken.

You are right.
So it looks even more like a questionable undertaking.

If someone want to replace the "wrong" language token in the UNSYNCEDLYRICS with "unknown", you can use xxx|| and set the language identifier to xxx and the description to an empty string.

There is a little misleading behaviour in the converter with it's previews.
The previews of a formatstring in Tag->Tag like $replace(%unsyncedlyrics%,eng||,) have no language token, but as result of the convertion you will see the language token defined in the options again.

The instant preview does not show the eng|| language token and a description anymore, you are right.

Update 10.55 Uhr: As @poster correctly recognised, this is not true:
The preview in a text editor (after pressing the Preview-Button in Mp3tag) shows the result as it will be written into the tag - including the forced eng||

As you wrote above

this forced language token can be set in the Mp3tag Options:

Hm, not here. Perhaps you had a look at the original text in the preview and not the resulting text?

1 Like

To be sure I entered ZZZ as language code in the options and tried it again.
You are right (again)!

The preview in a text editor also does NOT show the forced ZZZ language, it shows that eng|| will be removed, after the ->.
So both previews - the instant one and the one after pressing Preview - does not show the content eventually written into the UNSYNCEDLYRICS tag.
(In my test case ZZZ|| will be written before the Lyrics text itself).

Plain "Replace" wasnt working with the same parameters, I don't know why.
Also foobar2000 (Windows) and Musicolet (Android) display the eng|| string on the lyrics, making the first verses the last (because it invalidates the timestamps), and none of those have any problem with the missing lang string, I wonder if this is caused because all my songs are formatted in OPUS.

You may have noticed that in this thread, the language token was attributed solely to ID3V2.3 tags as othwise it would be an

You are right that OPUS does not need the token.

The miracle that a plain replace action does not work either needs more explanations or can be ignored as you found a complicated but working way.
But for everyone else I would still recommend the plain replace action as a text constant is supposed to be replaced with another one - so there is no pattern that needs to be described by a regular expression.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.