Doing Music Collections The Right Way

A friend of mine sums up the problem pretty well- “companies today charge money to remove features.” This is the entire motivation for this post. Music, just like every digital asset today, is getting harder and harder to keep with our selves. Companies love the idea of subscription, and while I agree it works great for many people, keeping what I love with myself is really important to me. This post will cover my recent foray into creating a new system for getting new music and keeping it too.

AUDIENCE CHECK

  • If you prefer keeping your music locally on your phone or PC, this post is for you.
  • If you struggle keeping your music in sync across your many devices, this post is for you.
  • If you want to self-host your music so you can listen to it from anywhere on any device with internet access, this post is for you.

OFFLINE FIRST

Keeping music locally is the best, I can listen to my tunes anywhere, anytime, without internet connectivity, telling Spotify and tons of its data-customers my preferences (age, gender, inclinations etc). The major problem with keeping music locally is – keeping your collection up to date. We have to rely on age old methods like bumping into it across the road, on some cafe, or hunting it down every other month when we actually look for it. Youtube Music has done an amazing job of curating music and giving visibility to the deserving artists. I have had success on finding obscure songs that struck me back when I was a kid. Projects like Seal and Youtube-DL have come a long way, check them out.

Making your music available EVERYWHERE – Syncthing

Syncthing allows me to keep the same music across various devices. There’s an Android app, iOS app, it’s basically available for every platform under the Sun. And the best part – it’s free and open source! Rest assured that the app is not malicious, there are millions of engineers and hobbyists using Syncthing daily!

The way I use Syncthing is this: I sync a specific directory on one device to as many devices as I like. I organize my music in a directory and it perfectly replicates the same contents on all of my devices with Syncthing installed. Whenever I add a new song on any one of my devices, it instantly shows up on my jellyfin instance, my desktop, and my on-the-go mac. If I decide to get rid of a particular song or just update the metadata on any songs, that too gets replicated instantly across all of my gadgets, it’s super neat!

Making your music ANYWHERE – Navidrome and Feishin

There are times when you just cannot have Syncthing literally “everywhere”, think corporate laptops with their paranoid compliance. At such times, installing Syncthing would not be feasible, as running disallowed executables can sometimes make the IT Security team freak out. At such points, usually, Spotify and Youtube Music might still be OK for use, as it does not require any application installation, just your trusty browser.

At such points, wouldn’t it be nice if you could also host a spotify but with just your own personal, curated library? With no risk of songs getting de-listed or unavailable in your country because the publisher suddenly decided so?

This is where Navidrome and Feishin shine! One is dedicated to streaming the songs from your collection (backend) and the other is dedicated to providing you a seamless experience that easily fools most people into calling it Spotify, it’s that good! Again, both are Free and Open Source. Just point your Navidrome instance to your music collection, set up some credentials for secure authentication (username password if fine too), deploy a Feishin instance and you’re done. Feishin’s web UI will ask you for the Navidrome credentials and the URL of the Navidrome instance – provide those and you’re ready to enjoy your own music from anywhere, not just your own personal devices!

Making a Radio out of my personal collection – vlc-ctrl and webhooks

The next exploration was about creating a radio out of my own music. Wouldn’t it be nice if my BT speaker could just keep my room lively by playing random songs from my collection?
Here’s a how-to:-

  1. Connect my bluetooth speaker and requiem
  2. Create an API (webhooks) to remotely control play/pause of music (vlc-ctrl) and connect/disconnect BT (bluetoothctl)
  3. Profit!

Further improvements:-

  1. watch for any new files or file changes within the music directory and reload the playlist (keep downtime as tiny as possible)
  2. Set up an AI agent roleplaying as an RJ (with nice segues to the next song)

This system has been serving me well for over a couple years at this point, and I’m genuinely amazed at how rock solid it has been. If you need any further details or want to discuss your own solutions with me, feel free to reach out!