HydrogenAudio

Hosted Forums => foobar2000 => Support - (fb2k) => Topic started by: justune on 2019-06-17 08:00:09

Title: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: justune on 2019-06-17 08:00:09
ID3v2 is the most common tag standard for mp3 files, it has two dedicated frames for embedded lyrics:

USLT frame for unsynchronized lyrics.
SYLT frame for synchronized lyrics.

foobar2000, only shows the USLT frame as "<UNSYNCED LYRICS>", the SYLT frame is never shown in any way.
If you try to add a field named UNSYNCED LYRICS, foobar2000 actually creates a USLT frame instead of adding a user defined frame (i.e. the TXXX frame) called UNSYNCED LYRICS. But if you try to add something like SYNCED LYRICS or LYRICS etc. it will only create a user defined frame (TXXX) instead of SYLT.

Is this intended? It seems like a inconsistent design, as SYLT has been the standard way (according to ID3v2 standard) to embed synchronized lyrics for a long, long time. Popular platforms like MusicBee, Minilyrics, JetAudio support both the USLT and SYLT. It suprises me that one of the most advanced music player like foobar2000 doesn't support synchronized lyrics inside mp3 file.

Maybe consider adding support for SYLT please? It will greatly improve user experience for those who care about lyrics.


Title: Re: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: justune on 2019-06-17 08:12:57
The following link shows the standard for ID3v2, you can search for SYLT and USLT if you don't understand what I'm talking about.

http://id3.org/id3v2.3.0
Title: Re: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: justune on 2019-07-29 07:47:18
bump
Title: Re: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: kode54 on 2019-07-30 22:18:05
SYLT was not originally added, as it would have involved parsing and/or recreating the complex format of that particular tag chunk, and there was nothing in the UI to pair it with.

I have no official word, but it may yet be supported. Just remember, it's a complex binary tag format, unlike the Unsynchronized Lyrics tag. SYLT contains a list of lines of text, each paired with increasing timestamps for the song positions. It sounds like something that needs careful thought if it's to be parsed into a plaintext format for use in the player, if that instead of another API designed specifically for synchronized lyrics.

The player latency, coupled with the dynamic tag interface, could provide a simple way of exposing the line of text associated with the current passage of the song. The real challenge is providing an editor that leaves no room for user error.
Title: Re: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: justune on 2019-09-19 11:58:49
I kinda get what you are saying, but that does not exactly make sense.

Because users are able to create "user defined frame" (i.e. TXXX frame) in ID3v2 and store synced lyrics in there. In fact, that's what the official plugin "Lyric Show Panel 3" is doing (they create a TXXX frame in it and name it "LYRICS").

For sure synced lyrics are slightly more complex than unsynced lyrics, but since Lyric Show Panel 3 already manages to store it in a "unofficial" way, it makes no sense why this important feature is still not supported by Foobar2000 yet.
Title: Re: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: lvqcl on 2019-09-19 18:15:49
"slightly more complex"?

From http://id3.org/id3v2.3.0#sec4.10:
Quote
An example: The "USLT" passage
Code: [Select]
"Strangers in the night" $0A "Exchanging glances"
would be "SYLT" encoded as:
Code: [Select]
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 
xx xx " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx
"ing" $00 xx xx "glan" $00 xx xx "ces" $00 xx xx
Title: Re: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: kode54 on 2019-09-20 02:43:09
As I said, it would require a plaintext way of encoding bits of appended text and delays/timestamps. Or providing a binary interface for plugins to interact with this format with all the limitations respected.
Title: Re: Foobar2000 not showing/supporting synchronized lyrics (ID3v2 SYLT frame)
Post by: justune on 2020-04-24 08:08:16
"slightly more complex"?

From http://id3.org/id3v2.3.0#sec4.10:
Quote
An example: The "USLT" passage
Code: [Select]
"Strangers in the night" $0A "Exchanging glances"
would be "SYLT" encoded as:
Code: [Select]
"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 
xx xx " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx
"ing" $00 xx xx "glan" $00 xx xx "ces" $00 xx xx

Sorry for coming back to this topic long time later. (I had some new thoughts about this same issue mentioned in OP)

First of all, I have tried to play mp3 files that has embedded SYLT frame (embedded from either MusicBee, Minilyrics, or JetAudio), and it doesn't cause any problem in any of the players I tried. (foobar2000, MusicBee, JetAudio, MediaMonkey, Winamp, Audacity)

Is it possible to implement SYLT frame in such way that it simply stores plaintext? (just like USLT)
MusicBee, Minilyrics, JetAudio supports SYLT and I think that might be how they did it.
The stored text content would be the same format as .lrc (lyrics) files, i.e.:

[00:12.00]Line 1 lyrics
[00:17.20]Line 2 lyrics
[00:21.10]Line 3 lyrics
...
[mm:ss.xx]last lyrics line
(please see: https://en.wikipedia.org/wiki/LRC_(file_format))

foobar2000 has always been my go-to player for many years, and it is unfortunate it has trouble supporting synced lyrics. I wish this feature is kind of important, given mp3 is the most popular music file type, ID3v2 is the most used tag for mp3, and SYLT is the official way for ID3v2 synced lyrics.