Yet another music app
- 14 Devlogs
- 100 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
Soo, I did some more work, mostly on the desktop polishing front, anything from keyboard controls, to better Windows support and the ability to change the app theme through a file (for all of you spicers out there).
Other than that, the one feature i’ve added is the ability to edit playlists, which has been missing for quite a while now.
You wake up. You don’t remember a lot from last night; in fact, you aren’t really sure if you remember anything from the previous day. Regardless, you are filled with a overwhelming need to listen to something. Remembering only the title, you search for it, and in an instant your room if filled with soothing music, exactly the song you wanted. Listening to it slowly reminds you what happened on the previous day.
Hey, i’ve gotten pretty good at writing these, anyway, I’ve added a global search function to the app, which searches through tracks, albums, artists, etc. all at once.
I also did a *ton* of other small fixes and improvements. If you want to test out the app, You can get it from https://github.com/MHanak1/Yama/releases/latest
No fancy speak again, it’s too early for that and I haven’t finished my coffe yet, but i finally made a homescreen to the app! I have made it configurable, so you can select which shelves to include on it, and i’ll be adding more configuration options later (i need some ideas here).
Other than that i worked on some minor bug fixes, mostly layout based like mismatched padding, and finally set up a github CI to package the app, so you can now get it from the github’s releases page (i should probably test the windows build shouldn’t i?)
Sooo. a bunch of time went into trying to implement proper playback caching, and i am glad to announce it was an absolute disaster.
That aside, I made a pretty README! frankly, the best one I’ve made yet, full of screenshots and the such.
I’ll probably be slowly trying to bundle the app for all platforms, and will be publishing the app fairly soon
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!