
Developing a new client / remote-play - gauging interest
I am a software developer by day - and switched away from streaming services over to self hosted navidrome close to a year ago now.
So far I'm loving it. However, I've never really felt too satisfied with the story around playback on remote devices (smart speakers, etc.). Quite a few of my problems are inherently not solvable, as they would require speakers being made with open firmware/software, and I'm guessing that's not likely to happen (if anyone knows of something like this, please let me know). For now I'm working on integrating the Sonocotta https://sonocotta.com/esparagus-hifi-medialink/ into my setup/speakers. The one smart speaker I have can power the unamped one over USB, so the end result is somewhat clean and not too disturbing.
This all works as it should, but the best I've come up with is playback to the speaker using upmpdcli as the receiver. If I ever want to scale this to multi-room setups, I'd have to manage this elsewhere, rather than in my client.
I'm also missing the spotify experience of seamless switching between my own devices, and having my play state/queue follow me around, and lastly I've not been all too impressed by the existing linux desktop apps I've tried. There's always been some missing feature (or in the case of one them, a feature where it would auto crash as my computer entered lock screen).
So I've wanted to create a solution for this for myself for quite a while now, but... time is scarce. Being an AI sceptic for a loong time now, I've really tried to stay off the AI slopware wave. But having seen the writing on the wall I wanted to get some experience in this department, and so I began on a journey to vibe code a navidrome client (I know, there's so many of them). I am not really here to discuss this whole AI ordeal, but suffice it to say, so far I've been positively impressed and a bit shocked at how far I've been able to drive this, and the price I've paid for it. There's no chance I would have been able to even think of actually end up daily driving something I've been responsible for bringing to the world had I not used AI - but I'm still waiting for it all to come back and bite me somehow.
Nevertheless, I wanted to know if a spotify-esque client, with integrated support for remote speakers, remote sessions, centrally stored play queue / state, and all that is something other people would have interest in? Currently the client is just a regular navidrome client, but I'm expanding it with these features as we speak. Personally I'm going to be using it on Linux and Android, but I also own a Macbook and iPhone/iPad - so I will likely look into clients for these platforms as well (I've not looked into what sort of fees there are for these developer programs, so releasing to these platforms might require some indication that I'm not just spending more money for the heck of it). If there's interest, my plan is to release it all as open source (probably under some permissive license such as MIT) - and then I will figure out a way to try to recoup the AI spend through donations or perhaps small app store fees.
Attached is a screenshot of the app as it appears currently, not that it is really telling much for the features mentioned. The inspiration for the look should be fairly obvious.
TLDR: I know this got a bit long and perhaps also impossible to follow, so here's the main features I'm asking for interest on.
- You'd use the desktop/mobile app as any other navidrome app, but in addition to connecting to the navidrome server, you'd also connect it to another self hosted service that is also distributed with this client.
- That remote service will let you:
- Synchronize play queue, play state between your own devices (per user).
- Transmit the music to a local snacpast server, mpd instance, or other targets. It is in the planning that it will also allow you to group together the snapcast clients, for in app multiroom setup and individual volume controls for those clients.
- Also planned is something akin to the Spotify shared session, so eg. during car rides the passenger can control the play queue from another device than the one being connected to the car.
P.S. No AI was used in the writing of this post. Only for the code.