getLyricsBySongId doesn't appear to be working

Issue description:

LMS has implemented getLyricsBySongId in 3.60.0 (Release v3.60.0 · epoupon/lms · GitHub), support for which I think was introduced in Symfonium 7.2.0 (Version 7.2.0 released) but whilst the Lyrics option appears under More actions for tracks with embedded lyrics it doesn’t show for those available through the API call.

Logs:

Upload description: simbun

Additional information:

 

 

Reproduction steps:

 
Play a track with external lyrics supported by LMS and try to access the Lyrics through More actions.

I’ve made the API call directly and it works as expected.
http://192.168..:5082/rest/getLyricsBySongId.view?id=tr-2&u=&p=&v=1.13.0&c=AwesomeClientName&f=json
 

Media provider:

Subsonic

Screenshots:

     

Please use the search function.

This is broken in LMS, you need to update to 3.60.1

I don’t think a search on any of the forums mentions that issue does it?
In my defense I carried out the testing before the LMS fix was released, but I should have double checked that everything was up to date before logging an issue.

The call to LMS worked, and I even tried Navidrome which showed the same behaviour, although more digging shows it doesn’t even support external lyrics.

Got to get used to the rate of change here; I’ve spent too long in the UPnP world :slight_smile:

Thanks again.

First result for LMS lyrics :slight_smile:

1 Like

Hmm. I was expecting you to reply with some cryptic search incantantion that returned the post.
I think the terms I used were way too specific. Will be more thorough next time!

Another thing you might notice is that the lyrics parser in LMS currently has an issue where it only keeps the first line if 2 lines have the same timestamp.

[00:39.57]
[00:39.57]Become the earth

In this case for example, the Become the earth line is omitted.
I’ve already reported this to @itm and it should be fixed in the next version. Just as a headsup. :slight_smile:

Another thing you might notice is that the lyrics parser in LMS currently has an issue where it only keeps the first line if 2 lines have the same timestamp.

The one album that I’ve downloaded lyrics for doesn’t have that problem, but they are slightly out of sync, sometimes by as much as +1300.

From searching the web there appears to be a way to add an offset ([offset:+1000]) to each lyric file, but that doesn’t appear to be working. Have you heard of such an option, and do you think this is something that could be added to LMS/Symfonium?
Alternatively, are you aware of an app that can add an offset to each lyric? I’ve tried LRCGet but it looks like I’d have to adjust each line separately.
I guess I could script it, but there must be something out there.

Lots of bells and whistles to play with in this new world!

EDIT: Offset option mentioned in wiki LRC (file format) - Wikipedia

I would not call that slightly.

Both lms and symfonium support this tag.
You should put it before any line with a timestamp at the start of your lrc file:

[offset:+1000]

But you might have to rescan lms and sync symfonium for that to take effect. There might also be caching involved in symfonium where it will prefer the cached lyrics but @Tolriq will know if that’s the case.

The “OpenLyrics Panel” in foobar 2000 allows to apply the offset to the lines in one go.


But that has other quirks I’m not really happy with.
Usually having the offset tag is enough.

I haven’t found a lyrics editor I’m 100% happy with yet either. LRCget for example enforces [mm:ss.xx] line which I dislike as my lyrics often follow [mm:ss.xxx]line, meaning that by editing in lrcget I lose ~5ms precision (meaningless but it bothers me as an autist) and gain a space in it’s place I don’t want.

But you might have to rescan lms and sync symfonium for that to take effect. There might also be caching involved in symfonium where it will prefer the cached lyrics but @Tolriq will know if that’s the case.

I was actually removing the lyric file between LMS rescans and Symfonium syncs, but it still wasn’t working, but recreating the media provider in Symfonium fixed the issue. I can see I’m going to need to spend some time understanding the caching mechanisms in place, especially during testing.

Thanks for taking the time to reply.

1 Like

Both lms and symfonium support this tag.
You should put it before any line with a timestamp at the start of your lrc file

I hope you don’t mind me asking another question as I feel like I’m going round in circles at the moment.

The first hurdle was to get the offset to take affect, but today I looked at ESLyric in foobar and it appears that Symfonium is applying the offset in the wrong direction, I think.

I downloaded the lyrics for a track and when played back (served by LMS) the lyrics are behind the song; adding 760 in the lyrics panel brought them into sync.

From the WiKi article it states:

with + causing lyrics to appear sooner

If I add [offset:760] to the lyrics file they appear even later, whereas [offset:-760] brings them into sync.

Using ESLyric to interactively sync also results in [offset:760]

getLyricsBySongId correctly returns 760 or -760 so it’s not something that LMS is doing.

I wish I’d never looked at this now :slightly_frowning_face:

It seems there’s different interpretation of the offset and the English wiki was edited after a discussion on poweramp forums :wink:

Symfonium applies the offset to the values as some tools do (see tests here for example lrc-kit/tests/runner.test.ts at master · weirongxu/lrc-kit · GitHub) so far no one complained.

Symfonium applies the offset to the values as some tools do so far no one complained.

So I think the morale of the story is, don’t use offsets :slight_smile:

With the current implementation shouldn’t the interactive offset correction work the other way around? Currently, if I add 760 through the GUI I need to use -760 in the lyric file and vice versa.

Well no the interface controls the delay applied to the current time.

But I always found strange that the tools I looked at when implementing the offset did the opposite, so I guess in theory the new interpretation that most apps now do is correct and I should change the offset to be time offset and not lyrics offset.

It’s a bit inconsistent within Symfonium tho. I just performed a few tests.
Adding an offset in the .lrc file


is correctly applied:

However when adjusting the offset during playback in Symfonium, the offset is applied invertedly. When adding offset, the lyrics appear sooner and when subtracting offset they appear later. This could confuse users.

With +4000 offset the text appears 4 seconds early:


With -4000 offset the text appears 4 seconds late:

If you decide to change that, would you consider adding something we’ve talked about in the past:
Setting specific offsets as presets to choose from (by tapping the ms value in the middle for example.
Different playback devices often have different latency (bluetooth, casting to upmpdcli etc.), in my case varying by up to 300ms. Going there in 25ms steps each time is a bit tedious.

I can create a feature request for this if you prefer tho.

Edit: Welp, guess I could’ve saved myself the time of testing and writing this as it seems to be intended.

For me the audio timeline is constant (we’re not adding/losing samples) it’s the lyrics that are being offset relative to it, which is why I actually prefer [offset:-760] to make the lyrics appear earlier when used in a lrc file.

I actually prefer [offset:-760] to make the lyrics appear earlier when used in a lrc file.

This is what is done now…

If the line says it’s at 2s and you have -1s as offset then the actual line time is 1s.

And seems that most other clients do the opposite and handle that as a time offset.

The interface applies time offset so you actually move the virtual time of the current position, but the line still says it’s at the time defined in the lyrics. You can see that times displayed for each line change or not depending on the case.

Hence why they works differently they are applied to different things.

This:


results in:

Dunno if displaying a negative time makes sense tho. Most apps I know display negative values as 00:00.

That seems dumb ̶a̶s̶ ̶t̶h̶e̶ ̶r̶e̶f̶e̶r̶e̶n̶c̶e̶ ̶f̶o̶r̶ ̶t̶h̶e̶ ̶o̶f̶f̶s̶e̶t̶ ̶(̶a̶c̶c̶o̶r̶d̶i̶n̶g̶ ̶t̶o̶ ̶b̶o̶t̶h̶ ̶t̶h̶e̶ ̶G̶e̶r̶m̶a̶n̶ ̶a̶n̶d̶ ̶E̶n̶g̶l̶i̶s̶h̶ ̶w̶i̶k̶i̶p̶e̶d̶i̶a̶)̶ ̶a̶r̶e̶ ̶t̶h̶e̶ ̶t̶i̶m̶e̶s̶t̶a̶m̶p̶s̶ ̶i̶n̶ ̶t̶h̶e̶ ̶l̶y̶r̶i̶c̶s̶. ̶T̶h̶e̶ ̶o̶f̶f̶s̶e̶t̶ ̶a̶d̶j̶u̶s̶t̶s̶ ̶t̶h̶e̶ ̶t̶i̶m̶i̶n̶g̶ ̶o̶f̶ ̶t̶h̶e̶ ̶l̶y̶r̶i̶c̶s̶,̶ ̶n̶o̶t̶ ̶t̶h̶a̶t̶ ̶o̶f̶ ̶t̶h̶e̶ ̶s̶o̶n̶g̶.̶

English Wikipedia have been updated in 2023.

It now says: with + causing lyrics to appear sooner so it’s time offset.

Interesting. The German wiki says that + moves forwards and - moves backwards.
I wonder who edited the English one and what their source was.

I have dug a little deeper with this test file:

[offset:-4000]
[0:10.308]Are you going to Scarborough Fair?
[0:17.568]Parsley, sage, rosemary and thyme;
[0:26.508]Remember me to one who lives there -
[0:34.008]She once was a true love of mine.
...

This is true for MusicBee:


OpenLyrics Panel in Foobar2000:

and Lyrics Show Panel v3 in Foobar2000:

Where 10s becomes 14s with an offset of -4000 (which makes absolutely no sense imho).

LRCget on the other hand handles it like Symfonium, lms and my script lyrict:


LRCget is just too dumb to select/highlight the proper line.
Here 10s becomes 6s with an offset of -4000.

All in all I can say that I absolutely hate the lack of a clearly defined standard for lrc files.
I don’t have it installed but I’d also be interested in how MiniLyrics (or other software capable of displaying synced lyrics) handles the offset, in case someone reading this does have it installed.

Edit:
After another look at the German wiki that also concurs with the English one:

Der Offset (Versatz) ermöglicht es, die Zeitangaben an Musikdateien mit unterschiedlich langer Stille am Anfang anzupassen. Ein positiver Offset bewirkt, dass der Text eher angezeigt wird.

Which means that a positive offset shows the text earlier.
I hate it but I guess that’s how it is supposed to work.