I can understand why streaming services have become so popular: being able to access a large library of familiar and new music that can’t be erased by a faulty hard drive or a wrong button-press is appealing. But, like most techies, I lean towards the “control” side of the convenience-control spectrum in many situations.
For music specifically, I prefer ownership over streaming. I like being able to buy albums from multiple places, store them and back them up wherever I wish, and play them on software I already use, rather than being restricted to specific marketplaces or software clients. (I would also rather rely on my storage and backups than on the unbelievably complex licensing arrangements between streaming services and publishers). For me, staying on team “offline library” was the obvious choice.
Investigating an issue with my MP3 player last year led me to an interesting program called Bliss, which I’ll give its own post in future. In short, Bliss manages your music library based on rules that you define. You set rules about how you want files to be labelled, named, and organised, and Bliss either highlights files which don’t fit the rules so that you can edit them, or adjusts them to meet the rules automatically.
Although Bliss is overkill for my relatively small and wholly-offline library, I really liked its rule-based approach. So I’ve taken the rules I decided on within Bliss and recreated them inside my desktop software of choice, MediaMonkey.
I have one “master library” in MediaMonkey, which is stored on my laptop’s hard drive. New files are only ever added into this library, and are only synchronised out from this library to my other devices. (These are the microSD card in my MP3 player, the microSD card in my work laptop, and a spare hard drive which holds a full library backup amongst other backed-up data). This means I only need to make sure files are correct in this one location.
I usually prefer to have as few programs as necessary installed, so MediaMonkey is the only software I use on a day-to-day level for listening to, organising, and syncing my music, podcasts and videos. Now that my preferences and my file naming system are saved inside MediaMonkey, I can use its “Auto-Organize” feature to move every file to the folder which matches its tag information. I can also use its “Files to Edit” feature to spot any songs that have slightly unexpected tags.
For cleaning up my library in the first place, I used the freeware Mp3Tag utility. This software is handy for more detailed tasks like changing what type of tags are written into files, fixing cover art, and making changes to batches of files. (These tasks are possible in MediaMonkey due to its community-developed add-ons and scripts; I’m just not enough of a power user to experiment with these yet!).
File Structure and File Types
I use the same file structure in every device so that each file lives in the same location relative to the Music folder on that device.
|\<Album Artist>||Avenged Sevenfold||Various Artists|
|\<Album>||City Of Evil||Forza Horizon Soundtracks|
The majority of my files are 320kbps MP3 files, but I keep any files acquired at a lower bitrate the same rather than unecessarily converting them. I also own a few albums in FLAC fomat, which I keep unchanged because all of my devices can play them and display their tags with no issues.
Tagging and File Naming
All MP3 files are tagged using ID3 tags, specifically Version 2.3 only. The file name of each song always matches its title. However, if a title has characters that can’t be used in a filename, such as “/“, MediaMonkey replaces these characters with “–” . I use full title case – where every word is capitalised – in every field, unless a field is deliberately stylized differently. For example, RIOT! by Paramore and in today already walks tomorrow by sleepmakeswaves are kept stylized.
I put parentheses within the name of a song or album in (round brackets), and parentheses which describe a song or album, such as [Live], [Acoustic], or [Feat. xxxx] in [square brackets]. For the handful of songs that have (Live At xxxx) inside their released title, I leave the title as-is.
e.g. \Music\The Fallen State\The View From Ruin [EP] \Sleepless.mp3
vs \Music\Taking Back Sunday\Tell All Your Friends\Cute Without The ‘E’ (Cut From The Team).mp3
Track numbers are padded to two digits, to make sure tracks play in the correct order i.e. the first track on an album is always 01 rather than 1. Similarly, the disc numbers are always included; all one-disc albums are labelled as disc 01. (Add-ons to MediaMonkey can automatically check whether track numbers are labelled correctly, among many other checks).
Most of my “Various Artists” albums are collections of songs from licenced game soundtracks, which often span multiple games in a series. So I use one album name for the overall series rather than making albums for individual games.
e.g. \Music\Various Artists\Tony Hawk’s Soundtracks\Here I Am.mp3
I’m fairly specific about album art, mostly because I use Sony Walkman MP3 players that are fussy about displaying images. It’s easier for me to make sure that all images meet Walkman requirements by default, because those images will then always appear properly on other devices as well.
Inside the folder for each album is one piece of cover art, which is always named cover.jpg. The correct cover.jpg for each album is also embedded inside the tags of every track in that album. All of the automatic artwork-finding options inside MediaMonkey are disabled, so that it can’t replace the embedded artwork.
The specific details of why each artwork has exactly the same name, why many images don’t work on a Walkman, and how to replace batches of images from multiple albums in Mp3Tag, needed its own overthinking post.
Writing out the system I use explicitly, and ordering it in a logical way, has made it feel “complete”. Although the naming conventions I use probably wouldn’t work for a larger library, they work well for me. For example, setting the filename to just match the song title rather to hold more information about each file is risky: as every other piece of information is held within the ID3 tags, any corruption or error that wiped out the tags would leave only the song title behind. This would make rebuilding the library very difficult. However, because I sync the main library out to other devices, and I keep regular backups, a data loss on any one device can be resolved by getting information from the other devices, so a major loss is unlikely for me.
Based on that, I think I can consider this question successfully overthought.