Yet another music app
- 10 Devlogs
- 80 Total hours
A music app for jellyfin, navidrome and your local files running across mobile, desktop and even your TV
A music app for jellyfin, navidrome and your local files running across mobile, desktop and even your TV
Well, again no groundbreaking features, but i’ve made the app’s design more in line with material3 expressive, so the player’s appearance has been improved. I have also iproved the login screen’s appearance, added listens scrobbling to ListebBrainz, and solved some issues with the playback status not being reported properly to the server.
You stop the music. Blissful silence surrounds you as you delve into the sea of tranquillity. You float in the endless void for minutes, hours; the passage of time becomes meaningless in a space devoid of change. Suddenly, you hear a faint sound. You feel compelled to drift toward it. The chirping gets louder and louder; the periodic pings become almost hypnotising. Then you see it - the yellow submarine, faintly lit by its onboard lights. On its hull you can see its name - Subsonic.
Added Subsonic support. Other than that, there were a lot of changes under the hood to organise the code and how the state flows throughout the app. I have also re-designed the source switcher, which you can see on the screenshot
Before, you could only listen to music on earth, where you can mingle with the with the ubiquitous ‘internet’. But now, you can go higher. You can listen to music on the moon! That’s right Kennedy, you can listen to music on the moon!
i added a system for downloading music from jellyfin (and others). This way when you go offline you can listen to songs you downloaded. Additionally, the app can cache songs which were listened to recently, and it will keep a certain amount of the files for local playback as well
Okay this time no fancy speak, i am way overdue a devlog, but i haven’t worked on a single feature which would have justified a devlog devoted solely to it, so here’s a roundup of things i implemented over the past couple days:
<rant> Hey, would you believe it that Jellyfin’s “Play on” is a piece of crap when it comes to music? Even the official client’s implementation is really broken when using it for music. there’s no mechanism through which i could measure the delay with which the music is playing, so you can expect a couple second delay between the lyrics on your phone and the music playing on the TV. i have to make educated guesses about the TV’s playback state. Also, there’s no websocket command to rearrange the playback queue, you can only push a new queue, but i’ve gotten around that. Also i had a ton of desync issues even after i spent more time on this than i reasonably should have . Oh, and did i mention there is no documentation whatsoever? you gotta figure out what you have to do by looking at the messages and the SDK</rant>
What is a book without a cover? well, still a book but it looks kinda bad on the bookshelf. Nonetheless, i have meticulously pondered the appearance of the icon, drawing my inspiration from mathematics, which some describe as the most beautiful of sciences.
I made the app icon, and it’s basically the graph of
sin(x)/x
Oh also i found a bug where i could play movies through the app XD
this really shouldn’t be its own devlog, but i found that funny enough that i needed to share this. This isn’t the movie’s soundtrack, the entire movie’s audio is playing through the app
You behold the screen, your window into the melody. but what you see this time is not the decorations imprinted into the tracks, oh no, what you see is the words of the song itself, dancing happily to the rhythm. You sing with them, as you are just as happy.
added the lyrics screen
Next, you reach down towards your pocket. You pull out your phone, and through it you open the app. To your amazement, a command travels through waves of ether, casting a different melody upon your television.
added support for Jellyfin’s “Play on” feature, which allows for remote playback
Okay this time i probably should have made a devlog earlier, and i guess you’re getting a bit of a bigger devlog. Other than the above two i did some more changes:
- made it so the UI is recolored based on the album covers
- did some cover prefetching so images should load on-screen less often
- made the player UI prettier, also if the device is not interacted with for a bit, it will hide away the player controls which i think looks pretty neat
- and more™
After many hours, i find the perfect song, i press it, and in this moment the app floods my ears with a beautiful symphony. The sound is almost soothing, yet reassuring. The music app has ultimately gained the ability to fulfill its paramount function, to fill its users ears with melody.
nah who am i kidding i vibecoded the hell out of that, still took me a while to get the UI to be decent, also hey, look! it works on the tv too!
What is a music app that does not allow one to gaze upon their songs, beautifully laid in a tidy, yet not overly strict list? Well, still a music app, as one does not look at music, but rather hears it. Alas, the graphical layer still felt to me to have equal importance. What you behold in this attached screenshot is a page meant to express, in a visually appealing manner, the songs that make up a music album.
Yes i will write all my devlogs like that and you can’t stop me
So stardance is apparently a thing… well, I’ve been making a music app for jellyfin (and others) over the last bit, so i decided i’d track it with stardance! No detailed devlogs for the 20 hours because i wasn’t planning on doing stardance, but from now on i promise i will be a good cookie and post detailed devlogs from now on
But what i did up to this point, is setting up a compose app, fiddling with the jellyfin sdk (this gives me the server discovery feature, but means that for now it will be incompatible with ios), did some layouting, sweet-sweet blurring with haze for that liquid glass aesthetic, and then much, much more layouting
but thanks to that lot-of-layouting, the app will be usable across mobile, desktop and even your TV!