I’m glad to see these implemented. Despite all of my music having synced lyrics embedded via tags I didn’t realize Jellyfin was scanning those into their database, or I just have no idea how you’re reading them from audio that isn’t being transcoded. Regardless, these are handy. I’m hoping you might take this a bit further:
a) For synced lyrics, while in the lyrics view, add a hotlink to each “future/past line of lyrics” to jump to that specific timestamp/position in the song.
b) Consider, if only in minimalist view (since that’s the one I use, as you know!), an option to sub out the “pause/play” button and include +/- ~3 lines of lyrics when synced lyrics are available (and maybe for non-synced lyrics but I don’t know how you’d choose to implement that… scroll?). I already tap/press the album cover to play/pause and stop, so I won’t miss the dedicated pause/play button in that view.
c) can lyrics be made available while casting to google cast? Understandably not for the cast receiver client unless you go the custom route but at least on the android app.
Looking good! Thanks,
One unconventional way to accomplish (b) could be being able to swipe through a carousel on the bottom half of the minimalist now playing screen: default position is the ‘play/pause’ button–swipe left or right and have the next lyrics displayed…
a) Will see to add an option for tht.
b) No plans for that, too many UI issues sorry.
c) It’s already the case if the data is provided by Jellyfin, when not provided the data is extracted by ExoPlayer so only when playing locally. Please provide logs so I can see if Jellyfin returns the data in a different way in your case.
I just tried the lyrics feature with embedded lyrics and the local renderer. Almost did not find it because the contrast between the lyrics button and the album cover was so low In my case, the embedded lyrics are displayed without line breaks, but with a space instead. Should I send you an example file for testing?
Pretty sure you know the answer
Sent. If you want logs as well I will open a proper support post.
Got it and repro will look into that after being back
@daniro I know asking you for logs is like asking 10 millions dollars, but logs for c) would be nice for when I’m back to see if there’s something to be done.
Ok so Jellyfin does not parse the lyrics for those
Can you open a specific feature request for that use case?
They appear when playing on the local player, though.
Yes as the changelog explains It’s extracted by ExoPlayer the local player.
For a), wouldn’t that toggle be better placed in the lyrics display screen along with the other related toggles?
I should have been more concise about the hotlink – if it can be done, having that entire line of lyrics tappable rather than just the toggleable timestamp would be far more user-friendly, at least for me.
A little bit more on this and how Symfonium is parsing synced lyrics:
Things obviously get a bit fidgety here. If you’d like my to upload this track as an example for you I’d be glad to do so.
Might you also set things so that the blank lines are filtered out (or maybe more accurately, hidden away)?
Yes I need one sample song please. (Real blank lines are removed those are special due to multiple tags). But this does not really looks like valid tags, there should be carriage return at the end of the empty lines.
for the a) setting, there’s not enough place on small devices specially when in some language close in German is probably Clisearzethereth At first I did not want to have a setting for that, but again on small screen the time can take a lot of place that could be used to have the lyrics larger.
About the full line clickable the problem is that it’s then way too easy to do false clicks when scrolling or following the words with the finger.
After looking again at the LRC format it seems what Symfonium does is the proper way:
You can put several time tags on the same line, if the words of this line are repeated several times.
You just want to make fun of my translations…
I’ve uploaded three tracks here, please pass this through base64: aHR0cHM6Ly9tZWdhLm56L2ZpbGUvSHp3QlRCYUQjSGVxMV9NNGdyTmotS1EtTG9mQ3hRRlNzeVg0VDVLUWlvTnpXaEYxSVVGaw==
The lyrics are scraped from Musixmatch and the like, so the tags are certainly valid and commonplace in the world of synced lyrics. Parts of tracks where there is an instrumental or just between verses, timestamps are often assigned to blank lines.
Maybe replacing the “Close” with an “X” is more universally understood? Are bottomsheets feasible?
With the full line clickable lyrics, I’m not sure I agree. It can’t be any worse then glossing over the hotlinks for artist/album, or when touching the cover art in the now playing to either skip tracks or pull down the fragment?
You can send PM instead of base64 that anyone can decode
About the lyrics yes as said after, they are valid, but what Symfonium does is the proper things.
When there’s multiple [times] for a single line it means that the line is repeated at all those location. And this is what is done here. I’ll see in the LRC headers if there’s some indicator that it’s a special different format, but if I can’t identify this use case, using the default normal one is the proper way.
About the other actions you mention it requires more than a touch it requires a swipe and can be cancelled. And reducing the now playing page is not impacting, seeking to random places in the song is way more ugly.
Bottomsheet are not the proper solution for a full screen page that contains scrollable content. When near the end you can’t scroll up to the top to close then no luck you did not disable auto scroll and you are back at the bottom
I’ll see about an X and the option here to see if that fit small screen but no promises.
Ok so with the actual songs to match and listen it was easier to figure out, Symfonium did the right thing but I’ve put the sort a bracket too early, so sorting line by line and not the final result so each timestamps from the same line where near each others and not at their right positions.
I’ve also switched to toggle on the screen and a cross, this seems to mostly fit.