getLyricsBySongId doesn't appear to be working

What I meant was that I prefer your approach even though it may not be aligned with foobar e.t.c

I guess it comes down to how you use it. I had the track playing whilst aligning the lyrics to it (I found that easier to align accurately), so the notion that you’re moving the audio timeline is a little awkward.

LMS doesn’t display timed lyrics (does it?) so how do you know it handles it the same way? I’ve just checked and it doesn’t advance the timings in getLyricsBySongId.

I was fairly involved in the addition of the external lyrics support and since we’ve talked about the offset tag specifically I assumed it to be implemented in the same way as Symfonium and my script.
And my assumption is correct.
I added a new song to a lms test instance and gave the lyrics an offset of -4000.

[offset:-4000]
[0:09.117]It's all there in the gospels, the Magdalene girl
[0:13.617]Comes to pay her respects, but her mind is awhirl
[0:17.997]When she finds the tomb empty, the stone had been rolled
[0:22.797]Not a sign of a corpse in the dark and the cold
[0:27.177]When she reaches the door, sees an unholy sight
[0:31.197]There's this solitary figure in a halo of light

Then scanned lms, synced to my phone and played it there.


As you can see from the screenshot and the response:

2024-11-16 18:29:37.202 Verbose/SubsonicLogger: <-- [418] {"subsonic-response":{"openSubsonic":true,"serverVersion":"6","status":"ok","type":"lms","version":"1.16.0","lyricsList":{"structuredLyrics":[{"lang":"xxx","offset":-4000,"synced":true,"line":[{"start":9117,"value":"It's all there in the gospels, the Magdalene girl"},{"start":13617,"value":"Comes to pay her respects, but her mind is awhirl"},{"start":17997,"value":"When she finds the tomb empty, the stone had been rolled"},{"start":22797,"value":"Not a sign of a corpse in the dark and the cold"},{"start":27177,"value":"When she reaches the door, sees an unholy sight"},{"start":31197,"value":"There's this solitary figure in a halo of light"},{"start":35517,"value":"He just carries on floating past Calvary Hill"},{"start":40017,"value":"In an almighty hurry, aye but she might catch him still"},{"start":44817,"value":"\"Tell me where are you going Lord, and why in such haste?\""},{"start":49497,"value":"Now don't hinder me woman, I've no time to waste!"},{"start":53817,"value":"For they're launching a boat on the morrow at noon"},{"start":58077,"value":"And I have to be there before daybreak"},{"start":62217,"value":"Oh, I can not be missing, the lads will expect me"},{"start":66957,"value":"Why else would the good Lord himself resurrect me?"},{"start":71277,"value":"For nothing will stop me, I have to prevail"},{"start":75537,"value":"Through the teeth of this tempest, in the mouth of a gale"},{"start":80037,"value":"May the angels protect me if all else should fail\n"},{"start":84837,"value":"And the last ship sails\n"},{"start":88797,"value":"Oh, the roar of the chains and the cracking of timbers"},{"start":94797,"value":"The noise at the end of the world in your ears"},{"start":98637,"value":"As a mountain of steel makes its way to the sea\n"},{"start":103437,"value":"And the last ship sails"},{"start":108417,"value":""},{"start":118437,"value":"It's a strange kind of beauty"},{"start":121497,"value":"It's cold and austere"},{"start":123477,"value":"And whatever it was that you've done to be here"},{"start":127677,"value":"It's the sum of your hopes, your despairs and your fears\n"},{"start":131997,"value":"And the last ship sails\n"},{"start":136377,"value":"Well the first to arrive saw these signs in the east"},{"start":140637,"value":"Like that strange moving finger at Balthazar's Feast"},{"start":145497,"value":"Where they asked the advice of some wandering priest"},{"start":150237,"value":"And the sad ghosts of men whom they'd thought long deceased"},{"start":154617,"value":"And whatever got said, they'd be counted at least\n"},{"start":158757,"value":"And the last ship sails\n"},{"start":162837,"value":"Oh, the roar of the chains and the cracking of timbers"},{"start":168837,"value":"The noise at the end of the world in your ears"},{"start":172857,"value":"As a mountain of steel makes its way to the sea"},{"start":177537,"value":"And the last ship sails"},{"start":181257,"value":"And whatever you'd promised, whatever you've done"},{"start":186237,"value":"And whatever the station in life you've become"},{"start":190677,"value":"In the name of the Father, in the name of the Son"},{"start":194997,"value":"And whatever the weave of this life that you've spun"},{"start":199367,"value":"On the Earth or in Heaven or under the Sun\n"},{"start":204227,"value":"And the last ship sails"}]}]}}}

The offset was detected and passed on.

HOWEVER:
I had no such luck when editing .lrc files that lms had already scanned.
@itm I suspect there’s some caching going on in lms that prevents local changes in the .lrc file from making it into lms and subsequently Symfonium.

Btw.:
I found the discussion over at poweramp that Tolriq mentioned. Adding a toggle to invert the offset would be a sensible solution imho.

I appreciate that it’s passing the data down the chain but it isn’t making a decision as to what +4000 means. If the LMS web gui displayed synced lyrics or it changed the timings in its response (as opposed to passing on the offset) then we’d be able to tell.

It could pass +4000 instead to follow how Musicbee etc. handle it. I think it’s good that lms leaves the decision to the player tho. Otherwise we might end up with lms inverting the offset, then symfonium inverting it once again…

I think the best way (with the least amount of confusion) to handle the offset is to detect it literally (-4000), pass it on literally (-4000) and adding a toggle to the player (symfonium) in case it should be applied as +4000 instead.

Hello,
Lrc files are like any other metadata, you need to trigger a scan to make them update

Turns out it’s Symfonium’s fault.
I added an offset to a .lrc file, did a full rescan in lms, followed by a sync in Symfonium (it’s only a test container with 10 songs so that takes a couple seconds).
I also deleted the rolling cache in Symfonium between tests to avoid caching on that end.

Changed .lrc file with offset of -5000:

[offset:-5000]
[0:36.376]Later days will see me
[0:40.936]Knowing what I spend
[0:45.376]They are friend
[0:49.936]So sad so sad
[0:54.436]Smiling faces greet me
[0:59.056]Everyone's my friend
[1:03.076]They pretend
[1:07.696]So sad so sad
[1:11.896]They see I am happy
[1:16.576]With my lady
[1:18.785]They're not satisfied
[1:22.985]All their feelings died
[1:27.245]Something in this city
[1:31.505]Changes people
[1:33.846]Makes them devil-eyed
[1:38.700]
[2:07.850]My love she waits for me
[2:12.290]When I'm far away
[2:16.310]Counting days
[2:20.570]So sad so sad
[2:24.770]They all know our story
[2:28.970]Still they try to play
[2:33.050]Anyway
[2:37.690]So sad so sad
[2:41.590]Flashing cars and morning
[2:45.730]Funny faces
[2:47.931]Egos magnified
[2:52.011]Quite Unjustified
[2:56.271]Something in this city
[3:00.291]Changes people
[3:02.312]Makes them devil-eyed

Rescanned lms.


LMS returns the correct new offset.

2024-11-16 22:46:42.437 Verbose/SubsonicLogger: <-- [547] {"subsonic-response":{"openSubsonic":true,"serverVersion":"6","status":"ok","type":"lms","version":"1.16.0","lyricsList":{"structuredLyrics":[{"lang":"xxx","offset":-5000,"synced":true,"line":[{"start":36376,"value":"Later days will see me"},{"start":40936,"value":"Knowing what I spend"},{"start":45376,"value":"They are friend"},{"start":49936,"value":"So sad so sad"},{"start":54436,"value":"Smiling faces greet me"},{"start":59056,"value":"Everyone's my friend"},{"start":63076,"value":"They pretend"},{"start":67696,"value":"So sad so sad"},{"start":71896,"value":"They see I am happy"},{"start":76576,"value":"With my lady"},{"start":78785,"value":"They're not satisfied"},{"start":82985,"value":"All their feelings died"},{"start":87245,"value":"Something in this city"},{"start":91505,"value":"Changes people"},{"start":93846,"value":"Makes them devil-eyed"},{"start":98700,"value":""},{"start":127850,"value":"My love she waits for me"},{"start":132290,"value":"When I'm far away"},{"start":136310,"value":"Counting days"},{"start":140570,"value":"So sad so sad"},{"start":144770,"value":"They all know our story"},{"start":148970,"value":"Still they try to play"},{"start":153050,"value":"Anyway"},{"start":157690,"value":"So sad so sad"},{"start":161590,"value":"Flashing cars and morning"},{"start":165730,"value":"Funny faces"},{"start":167931,"value":"Egos magnified"},{"start":172011,"value":"Quite Unjustified"},{"start":176271,"value":"Something in this city"},{"start":180291,"value":"Changes people"},{"start":182312,"value":"Makes them devil-eyed"}]}]}}}

However Symfonium ignores it:


@Tolriq is that enough for you to go on or should I open an issue with full logs?
Or is there a way to clear cached lyrics in Symfonium I’m unaware of?

(side note: There is no need to do a full rescan to make changes in LRC files take effect. If that is not the case, then it is a bug)

It’s never enough, if the files are offline cached, it’s normal the lyrics are cached at that time, if not then open an issue :wink:

Would Symfonium even have requested the lyrics from the server if the file was already cached? If so, why isn’t the cached info compared with the response and updated?

Either way, as it was not cached (I deleted the rolling cache before each test and none of the test songs are in the permanent cache) I’ll open an issue.

I just use that in the test container to make sure the various changes are respected. However I just repeated the test without a full rescan and the getlyrics response changed accordingly, so there’s no bug in lms as far as I can see.

1 Like