A few months ago I was going through various backups and online file storage places I have (and they seem legion) and noted that I had music files everywhere. Some dated back to my late days of college (just before Napster was a thing) up to much more recent downloads from Noisetrade, which has become my usual source of music. In between was some iTunes and Amazon music as well. Of course, not all of it was unique – lots of my newer stuff was backed-up in several places. A few years ago, I once had this idea that I would put a bunch of music on a server and then sftp down what I wanted to listen to, when I wanted to listen to it. That never happened but it seemed at least half of my collection was there. But I wasn't sure that all of it was repeated. To top this off – I really wanted this music in a usable form. I have never really joined the Spotify/Pandora bandwagon (one of my favorite artists talked about this a few years ago and colored my opinion on streaming services).
I did a bit of web searching and I found some software named Beets. It's command line and nerdy but it seemed to do exactly what I wanted to do. Beets works better if you have a known music repository but I didn't have that, so I started with a blank directory on an external drive I had laying around. And then I started the long import process.
It took a long time… when I first started, I mounted my remote systems via Fuse but Beets import process was extremely slow this way. So I started downloading bits and pieces of my collection locally and ran
beet import each time. And, yes, I did it interactively – having it ask about duplicates and album names and so on. At this time, I was fortunate be working at home at least half the time, so I did this work during scrums and other pointless meetings that were going on (and there were many). I added more files overnight, and then fired up
beet import just before the meeting started, and then tag away. I got more confident with Beet finding duplicates. This took about a week of work but worth doing.
At the end, I had 31GB of music in over 6,000 files. Did Beets find all the duplicates? No, but it found most of them. I think the ones I had left were from my confusion to the interface or (more probably) my unwillingness to lose any files so I always chose the
Keep Both option. Did Beets tag all my files? No, but some of my stuff isn't in MusicBrainz so that isn't a big deal. Overall, Beets gave me at least 80% of what I needed. And that was plenty for me.
Actually Listening To It
Now that I have it – how can I listen to it? I did some thinking and digging and suddenly remembered what that little slot on my MacBook Pro is. A bit of shopping helped me realize how cheap MicroSDs have gotten. So I got a 128GB MicroSD card and it came with an SD adapter. Perfect! I had plenty of room on it for my music (even if it grew a lot) and also room for my rather large ebook collection. I can pop the SD card into my MBP and then once a week make sure it's backed up via rsync to drive at home. I also got another MicroSD card to put all my ebooks and music on my Android tablet. Now I have everything with me.
So how am I going to listen to it? On my tablet I use PowerAmp and on my MBP I use Nightingale. Nope, iTunes does not cut it for me. Here is an old LifeHacker article on SmartLists that more or less works in Nightingale. Storage is so cheap that got a thumb drive that I copied all my music to and put it in the USB slot in the car to listen to on car trips.
Managing all this
Now that I have my music nice and organized, I can't just download my next find from Noisetrade and put it on my SD card. I put a Beet
config.yml on the SD Card that points to the music folder on that card. Now when I download music, I do the following:
- Unzip to it's own folder
beet -c /Volumes/sdcard/beet/config/config.yaml import ~/Downloads/music_folder
- Answer Beets questions (chances are they aren't tagged correctly)
Nightingale will automatically find the new files (even if it's still running) and I can find it using the built-in "Recently Added" SmartList. Then the files are put on my backup drive the next time I run the script.
- Better way to get music from my card/backup to my tablet.
- Make the backup of the card run automatically.
- Share playlists between Poweramp and Nightingale.