Parts of this blog post is AI generated.
lyrictified
every lyrics provider has that one thing that ruins it. some don't let users contribute. some only support one lyrics format. some have incomplete libraries. some are tied to one music platform. some randomly disappear one day.
after dealing with that for way too long when using jellyfin, i started building my own solution.
that's how lyrictified started, well, for the most part. i also got bored and had to give my almost-expiring Codex subscription a task instead of letting it go to waste.
the app
at its core, lyrictified is a windows desktop app that shows synced lyrics for whatever you're currently listening to. spotify. youtube music. foobar2000. basically anything that properly integrates with windows media controls.
instead of hooking into specific players, lyrictified watches the system media session itself. if windows knows what's playing, lyrictified probably does too. which is how it should have been for god knows how many lyrics apps are out there. there is only ONE app that executes this perfectly which is why i'm giving a shoutout: BetterLyrics, it has like 8 different sources, and also watches the windows media session instead of hooking to specific apps.
the thing i wanted
i always liked how lyrics looked in apple music. the way they stay visible. the way they move with the song. the way they're part of the listening experience instead of being hidden behind a button.
so lyrictified has a few different display modes. appbar mode attaches itself to the top of a monitor. windowed mode shows the entire lyrics view in a single window you can do anything with. taskbar mode sits above the taskbar and stays out of the way.
YOU get pick whatever works best for your setup.
lyrics are messy
one thing i've learned while working on this project: lyrics are a mess.
every source uses different formats, different timestamps, different metadata, and different conventions. somehow everyone expects it all to magically work together(spoiler - it doesn't lol, have you ever truly used spotify or apple music? every damn time one has lyrics for a song while the other doesn't(yes this made me actually mad))
so lyrictified tries to be flexible. currently it fetches synced lyrics from it's own server which i'm hosting, lrclib and can fall back to syncedlyrics when needed. that means access to multiple sources instead of depending on a single service. if one source doesn't have a song, another one might.
if BetterLyrics exists already, why build your own thing?
good question! because BetterLyrics is written in WinUI3 as the GUI toolkit. it's heavy. consumes quite the resources for something that is meant to be desktop lyrics. sure, it has waaaaay more features and sources compared to lyrictified, but it's still WinUI3. i wanted something FAST. so, "pick your own poison" basically.
but what if i don't want to depend on someone else's server?
fair question.
that's why the server side is also open source!
it's a lightweight lyrics server designed around local lyric files. drop your .lrc, .elrc .ttml, and other supported formats into a folder. the server indexes them, searches them, and serves them through a simple api.
and that's pretty much it. no giant database! yes, the server side depends on indexing, doesn't host a whole database! we don't need to. it's just plaintext dude, filesystems these days are fast at finding things. no complicated setup. just your lyrics library and a server. funny how the whole industry still didn't get this right.
community contributions
another thing that annoys me with existing lyrics services is that fixing missing lyrics is harder than it should be. no no, it's almost IMPOSSIBLE to do so. every service has edits locked unless you're the artist itself, in which case, even they don't bother to fix it!
with lyrictified server, users can submit lyrics directly through the web interface. those submissions go into a review queue, admins approve them, and the library grows over time.
SIMPLE.
where this is going
right now lyrictified still uses existing lyrics providers when needed. that's intentional. building a lyrics ecosystem from zero is hard. the less dependent the project is on external providers, the better. that's why the server exists. that's why user submissions exist. that's why support for multiple formats matters.
i don't want another lyrics service with a single point of failure. i want something that keeps working even if every other provider disappears tomorrow.
you can join the Discord for more questions or feedback