CappielloAntonio / tempo

An open source and lightweight music client for Subsonic, designed and built natively for Android.
GNU General Public License v3.0
865 stars 39 forks source link

[Feature Request] - Synced Lyrics/Karaoke Mode #138

Closed PatrickDelancy closed 4 months ago

PatrickDelancy commented 5 months ago

Summary

Song lyrics that contain timecode information should be automatically synced to song playback.

Description

Use Case

Additional context

Not trivial to write this code, but similar open source projects may be referenced to help when implementing.

CappielloAntonio commented 5 months ago

Hi @PatrickDelancy, Subsonic's API does not support timestamps within song lyrics, for this reason no effort has been made to date to integrate this type of lyrics (as in the case of the project you linked).

Now, however, OpenSubsonicApi is also adding support for synchronized texts among its extensions. I refer you to their page for further details.

In conclusion, I'm waiting for the servers to integrate this API (I think someone has already done so) and then I'll get to work.

PatrickDelancy commented 5 months ago

Hmm, that is interesting. Thank you for the information. I'm new to the whole "subsonic scene."

I have synced lyrics working in Symfonium with a Navidrome back-end. I haven't investigated, so maybe Navidrome is doing something non-standard with the "LYRICS" mp3 tag? The data must be getting to the client in some fashion.

In any case, I appreciate your time. I'll continue to follow this ticket for updates.

PatrickDelancy commented 5 months ago

Ah, I see... just needed to do some more reading to see your comments on the closed issue (I didn't find it before... thank you for the link, and I apologize for the duplicate entry)

TianMiao8152 commented 4 months ago

I really need this feature.Please!

Vergil365 commented 4 months ago

this feature would be so nice

CappielloAntonio commented 4 months ago

I'm working on it, and all the basic functionality is there. The problem, if we can call it that, is this karaoke mode.

In addition to making the code more complicated than necessary, it conflicts with scrolling gestures. I'm still working on it a little bit, but I'm pretty happy with how it turned out, so I might leave things as they are.

Screenshot_20240217-232700_Tempo

Vergil365 commented 4 months ago

it looks amazing 😄

CappielloAntonio commented 4 months ago

You can try the new feature if you like: debug.zip

I also implemented the "karaoke" function, which can be disabled if you want to scroll the text freely.

PatrickDelancy commented 4 months ago

I installed the linked debug build, but I cannot seem to find the setting to enable/disable the synced lyrics. Where should I be able to find it?

CappielloAntonio commented 4 months ago

It is not a configurable option. If the server responds with the lyrics of the song then they are shown. Also, if the server integrates the OpenSubsonic API and the music file is saved with the lyrics of the song synchronized, I will show the lyrics with karaoke effect. In conclusion, everything depends on the server, which has to give me the lyrics of the song.

xhongc commented 4 months ago

hi I also installed the linked debug build, and the subsonic api (/rest/getLyrics) returns this format like

[00:00.000] Daly, Blair
[00:01.000] Daly, Blair
[00:05.700]We come into this world unknown, but know that we are not alone. They try and knock us down, but change is coming, it's our time now.
[00:19.200]Hey, everybody loses it
[00:25.200]Everybody wants to throw it all away sometimes

it didn't take effect, so can you tell me what format is required