OxygenCobalt / Auxio

A simple, rational music player for android
GNU General Public License v3.0
1.98k stars 125 forks source link

[Feature Request] Lyrics #412

Closed pabloscloud closed 1 year ago

pabloscloud commented 1 year ago

Description

I want to sing songs but often find myself not knowing the lyrics.

Problem solved

I'm always frustrated when I need to look up the lyrics manually in the www.

Other implementations

They look up the lyrics online using services like MusixMatch and Genius.

Others just get the lyrics from the songs metadata or seperated lyrics files.

Some have a button that opens the lyrics in a new view and some hide the album cover and therefore there is more space to display them.

Performance shouldn't be a big problem, works with other apps like RetroMusic.

Benefit

This feature is in many other popular apps and if implemented could lead to more users using this app imho.

Duplicates

pabloscloud commented 1 year ago

I did check the missing features page but I am still convinced this makes a whole lot of sense. I will switch to this app if it implements it. I love the apps design 💚 keep up the good work

Comrasaki commented 1 year ago

How about using apps like QuickLyric?

pabloscloud commented 1 year ago

How about using apps like QuickLyric?

Tried it but didn't work for any of my songs. It just didn't fetch the lyrics from any of the providers.

pabloscloud commented 1 year ago

Also it hasn't been updated for many years. That could be the cause and it doesn't use any of the newest design principles.

illdeletethis commented 1 year ago

this has been explained over and over why it won"t be added your request is a duplicate of many earlier ones

pabloscloud commented 1 year ago

but when I search for lyrics, there are no open nor closed issues

OxygenCobalt commented 1 year ago

Search query: is:issue is:closed lyrics.

pabloscloud commented 1 year ago

And if somebody would add this and create a pull request.. Would you merge it? What would be the critereia for you to merge it? Let's say its performend and we found a neat place for them?

OxygenCobalt commented 1 year ago

You would have to do a good amount of work.

  1. Implement #322 to make obtaining LRC files possible. Do not think you can "work around it" by doing requestLegacyExternalStorage. That will be an insta-close.
  2. Patch ExoPlayer to implement support for SYLT (synced lyrics). This is possibly optional since it's pretty obscure.
  3. Dynamically load the different sources of lyrics (USLT, SYLT, LYRICS, .LRC, maybe even .LRC in a GEOB tag or vorbis comment!) into a interface that is also synchronized with the ExoPlayer instance. Do not try to put the lyrics into a cache, that will take up an obscene amount of space. Internet lyric fetching will be insta-close.
  4. Find a nice place to put it somewhere in the playback panel. I will not accept anything that shoddily tacks on a button to the toolbar, or opens a janky dialog, or makes a really weird navigation flow. You probably can't make it gesture-based either. This will be the single most difficult part. The playback UI is already incredibly complicated and crammed.
  5. Ensure that it does not break the bottom sheet setup, or cause massive freezes during playback/navigation, or has weird state issues.

And then I might reconsider. This the exact reason why I do not implement lyrics. They would make Auxio buggier for the sake of something that I will never use. Just look at the sheer jankiness of Retro Music. Poweramp and Musicolet only manage since they have full-time developers. I often can go weeks at a time without being able to even make a few-line change. I want to implement things I want.

pabloscloud commented 1 year ago

I want to implement things I want.

Got it! And thanks for answering this. I appreciate it a lot and now understand the frustrations that come with them.

neoedmund commented 7 months ago

If you just need lyrics for , you can try phiola patched with lyrics function (Android apk) btw I add it to phiola instead of Auxio because that API is more simple and clear to be tweaked.