SYLT frame not detected/parsed

Issue description:

While testing different variations of lyrics I found that Symfonium does not display the embedded SYLT lyrics for a test file.

Logs:

Upload description: 655321 SYLT not parsed

Additional information:

 
I’ve zipped up the song and a log of me starting to play it. MusicBee shows it in the properties and displays it while playing, ImHex also shows that the frame is present.
 

Reproduction steps:

 

  1. Copy mp3 file with SYLT frame to the internal storage of the smartphone.
  2. Sync the local device provider in Symfonium.
  3. Play the track in question.
     

Media provider:

Local Device

Screenshots:

 

    

Yes SYLT frame have a few encoding issues + frame sync is not possible from where I handle this, so I do not support it.

Playing with the file you sent can you confirm it’s not correctly synced?

Or can you show the timestamps in musicbee to compare ?

That would surprise me as I’ve synced it myself and it is in sync when played in MusicBee. Here’s how MusicBee displays it internally:


This was the source .lrc file I embedded as SYLT:

[0:20.928]Come find me in discomfort
[0:26.612]Light me up and put me out
[0:33.040]Can you read my mind

[0:37.795]Let me in on all of you
[0:43.365]It can't be this hard all the time
[0:49.915]Can't forget the truth

[0:54.660]'Cause I saw you
[0:59.270]Light as grass
[1:03.650]Floating high above the atmosphere
[1:09.110]And I saw you
[1:13.250]Falling fast
[1:17.870]Quietly hiding from reality

[1:27.463]Hold me up and tear me down
[1:32.923]I lost track of the certainties
[1:39.286]Evaporate this calm

[1:44.256]Never knew the doubt I feel
[1:49.776]You'd never understand it's pain
[1:56.285]Do you know me well

[2:00.638]'Cause I saw you
[2:05.078]Light as grass
[2:09.578]Floating high above the atmosphere
[2:14.978]And I saw you
[2:19.598]Falling fast
[2:24.098]Quietly hiding from reality

[2:29.466]'Cause I am me and you are you
[2:34.686]Well, there's a greatness in our view
[2:40.232]I saw the future in your eyes
[2:45.932]Don't confuse the thoughts inside

[2:52.326]'Cause I saw you
[3:02.766](I saw you, I saw you)
[3:04.986](I saw you, I saw you)
[3:09.656]And I saw you
[3:20.216](I saw you, I saw you)
[3:22.376](I saw you, I saw you)
[3:27.404]I saw you
[3:29.444](I saw you, I saw you)
[3:31.004](I saw you, I saw you)
[3:37.868](I saw you, I saw you)
[3:39.908](I saw you)

And this is the line of my script that decides the encoding used with mutagen.

audio.tags.setall("SYLT", [SYLT(encoding=Encoding.UTF8, lang=language, format=2, type=1, text=sylt_lyrics)])

The id3v2.3 spec explains that format 2 means time in ms and type 1 means lyrics.

I’ve never encountered an mp3 file that used frame sync in SYLT. Only time in ms + text.

Yes chatGPT missread the specs :stuck_out_tongue:

Will add support for the common cases.

1 Like

Lovely.
Btw. which lyrics does Symfonium choose if a file has multiple sources?
Let’s say an .mp3 file has a SYLT frame, a TXXX LYRICS tag and an external .lrc file?

I think either the .lrc file or the LYRICS tag should be prefered as they support all tags, empty lines and multi-lines while the SYLT frame only supports the language tag, a description (that no program I know uses/sets) and time in ms + text pairs.

It’s random, it tries to take the worse :stuck_out_tongue:

It tries to find a synced lyrics and with the addition of the sylt if there’s multiple will take the one with the most entries.

Since the latest beta finally made it onto my phone I’ve tested this.
All combinations of SYLT, LYRICS and .lrc work in the local provider now.
Good job!