This is how I manage my music collection. It isn’t the most convenient way, or the most popular. Don’t consider this a recommendation or best-practice: it’s what works, within the bounds of my increasingly-unpopular preferences.
It’ll make a little more sense if I explain those preference up front, so I will.
I don’t believe that any technology company in the music industry will survive in the long term. That means Spotify, but even more it means Spotify competitors. Streaming services like Apple’s, Google’s, and Amazon’s are enormous corporate experiments, intended to succeed or fail within a decade. When they fail, the folks paying for them will get an email and lose access to their music in some specified ‘sunset’ timeline.
But before we even get to the failure state of streaming services, we’ll notice the chipping-away of ownership expectations. Bands and artists will remove their work from the platform, or silently replace songs with updated tracks. The pool of music still looks and feels infinite, but random items disappear without warning.
Streaming will also encourage us to think of music as only coming from official sources. Your band’s old demo tracks will never make it onto Spotify and neither will the impromptu recordings your friend sent you in an email a few years ago. Those are MP3s - music is what’s on Spotify.
Streaming also commits us to the infinite, disorganized, sprawling digital footprint of the modern Internet. Robinson Meyer captured it extremely well in What the Death of iTunes Says About Our Digital Habits. Cloud services encourage a sort of forgetful connectivity like that of Spotify’s ‘curated collections’ or Gmail’s disappearing concept of an ‘addressbook’. Instead, having a music library means you know what’s there, what song comes after what other song. You can recognize the first few seconds of a track again. Add little notes to the MP3 tags if you want to. The scale of information becomes approachable again.
So instead, I still use MP3s, AACs, and other widely-supported file formats. Those files are on my phone, as files, and my computers, as files.
This isn’t the easy way. Apple once supported this workflow, but they shifted focus to streaming. Music apps on phones are all focused on streaming. Artists are starting to release their music only to certain services, rather than emphasizing downloads.
But if you’re willing to put in a little work, you can still own your music. Here’s how I do it.
The best place to buy music is Bandcamp. It’s fair to bands and customers. They have a real and sustainable business model. They do essentially everything right: it’s easy to download music in a variety of formats, you can re-download tracks if you lose them, and you can stream music too.
Most of the artists that I listen to are on Bandcamp, but if I absolutely need to, I’ll buy their MP3s on Amazon, which still sells MP3s. In another insult to this way of living, Amazon usually sells physical CDs for less than the equivalent MP3s. The few tracks that only survive on YouTube are downloadable with youtube-dl.
So now you have a folder filled with MP3s. How do you play them? My preferred player is Swinsian, which recreates iTunes before Apple filled it with junk and replaced it with Music. Swinsian is rarely updated and not especially beautiful, but it does a great job at playing music and organizing folders. Point it to a folder of MP3s, AACs, and other music files and it simply plays them for you.
I’ve also used hyperamp and cmus, but hyperamp was a little too minimal, and cmus didn’t feel intuitive to me. Though there are only a handful of actively-maintained desktop MP3 players, the benefit of keeping your music as files in directories is that it’s easy to switch between them.
I also use a series of iPod Shuffle-like MP3 players for music when I’m running. I’m currently on a Clip Jam, because it’s cheaper and better than the most recent Shuffle. And use a very normal stereo receiver to play music on speakers at home, without placing microphones everywhere.
You’re keeping your music for posterity, so best to keep it safe. I keep my music library in ~/Documents/music-library, so it’s included in my iCloud documents, and then I also back it up along with the rest of my computer with Time Machine. I know - I’ve used Backblaze before, but ran into some performance problems and found the backup-recovery process annoying. I’ve also tried other options like Arq (slick, but made me afraid that I’d forget how to recover backups) and Dropbox (don’t get me started about the desktop application).
Then the final step: music on my phone. For the last few years, I’ve not had a reliable way to play music when I’m away from a computer. Sure, Bandcamp has an app, but it’s not very convenient and some of my music isn’t purchased there. Plus, one of the key times I want to play music is when I have spotty internet, like on flights and roadtrips.
This is where things get even a little weirder. I use an iPhone app called Flacbox. The same author has a few tweaks of the same app also for sale in the app store, but this one seems to be the most full-featured.
Flacbox isn’t a perfect app: the UI has some flaws, and as I’ll get into, there are some features I’ve found wanting. But it has a few amazing features:
So, the final question is: how do I get my music into Flacbox? Well, I tried and failed a few times.
First, I thought maybe that it’d pull from iCloud. Unfortunately Flacbox doesn’t let you select entire folders from iCloud.
Then, I thought about loading music from a cloud service. I’ve occasionally set up backups to Amazon S3, and Flacbox supports a lot of services. Unfortunately, it doesn’t support S3, and my research quickly started to indicate that ‘consumer-facing’ storage like Dropbox, Google Drive, and OneDrive, are wildly overpriced in comparison to anything, especially in comparison to S3.
Next, WebDAV. I thought maybe I could use Transmit to sync my music folder to Flacbox over WebDAV. This showed some promise, but the flaws started appearing:
So, the working solution was to script the HTTP interface. This turned out to be remarkably easy, only an hour or so to write & tweak a Node.js script that lists existing songs, picks songs I’ve added to my library in the last 3 years, and upload them to the phone. I use fast, simple hashing to make sure I don’t upload the same file twice. MP3 files have their artist, track title, and other data stored in ID3 tags, so renaming them for efficiency doesn’t prevent Flacbox from listing them nicely.
I open sourced my script to sync with Flacbox as an example for others.
So you can see that this isn’t as easy as installing Spotify. But it’s also not an extreme hardship or a lot of work to maintain, and I have the pleasure of listening to decade-old tracks that are hard to find anywhere else. And, if the music apocalypse happens, I will have told you so.