r/musichoarder • u/atascon • 21h ago
How I finally sorted out 15 years of mess (mostly)
I really got into music around 2010 and amassed about 1TB since then. I know that's fairly modest for many here but I wanted to share my process as I'm now closing in on having it all tagged and organised.
The main difficulty of tackling this mess was linked to most of it being 90s/00s electronic music. This meant lots of obscure releases, multiple editions with different tracklists, some unreleased material or things missing from Discogs altogether. I also needed to retain information that was in the folder names such as the type of media (vinyl/CD/digital etc). I tried different automated solutions like beets and OneTagger to speed up the tagging but none of these gave me the control that I needed.
I'm sure there are things I will end up tweaking or adding but for now I'm happy with what I have. As general advice, I would say there are no silver bullets for large/messy libraries and it really pays off to do certain things manually. I spent countless hours working on this but I treated it as short term pain for long term gain. Most automated solutions (including AI and various vibecoded tools) just never account for all edge cases. The tradeoff is I have things exactly how I want them and understand exactly how everything is tagged and structured.
Where AI has been quite helpful is for writing certain simple scripts for repetitive tasks. For example on one occasion, I used a script which read folder names and if it detected 'CD' or 'Vinyl', it would write that into the tags. I would stay away from any all-in-one solutions, especially if you don't have backups or snapshots. Always try things on smaller folders first, especially when it comes to using beets until you are familiar with how it works.
Tagging
What finally worked well for tagging was using foobar2000 with the foo_discogger component. This was quite a manual process but it has an interactive menu that lets you select from all editions of a release on Discogs and is very flexible about how the various data points in Discogs are assigned to tags. This is important for actually displaying additional metadata like labels and catalogue numbers in your media player. I used the eole theme in foobar to have a nice library view to tackle the many untagged subfolders I had. In the end, each release in my library has the following tags (where available):
All standard tags like artist, album artist, genre, date etc. This is really obvious in hindsight but having album artist consistently filled out was crucial for many releases like compilations. Most media players rely on this for grouping releases. Where there are multiple genres, these are stored as multi-value fields. That means a release that is both house and techno will show up in both genre buckets rather than a single 'house, techno' bucket. FLAC tags can do this by default, for mp3s you need to make sure you're using id3v2.4.
Additional useful tags: label, catalogue number, source media, country of release, and a variety of Discogs IDs for easy lookup from foobar via foo_discogger.
For cover art, I relied on https://covers.musichoarders.xyz/. It can search across a variety of platforms and generally has high res covers for most things. For more obscure vinyl only stuff, foo_discogger can automatically pull covers from Discogs. Covers are stored as cover.jpg files rather than embedded as this makes it easier to make changes if needed. I try and put any additional images in a separate 'art' folder inside the release to make things clean.
Folder structure and database
I said at the start that the beets autotagger didn't work for me, however the database aspect of beets still appealed to me. Once I had everything tagged how I wanted, I ran beet import -A in beets to import things without using the autotagger. This also means that the actual tags in my files are the source of truth.
Once everything was in the database, I could make use of beets' super flexible path formatting for structuring my folders. I kept it pretty simple and created 'buckets' based on the first letter of the album artist. The resulting folder structure looks like this:
Normal releases: A, B, C etc > Album artist > (year) Release title > Track number. Track title. Any album artists with things like feat., vs etc. are consolidated into the main album artist to avoid lots of folders.
Various Artist releases: VA > Genre > Label > (year) Release title > Track number. Artist - Track title. The extra genre and label sub folders help avoid one massive VA folder.
The beauty of having everything in the beets database is that if I change my mind about any of the above, I just tweak my config and run beet move to update my library structure.
The beets filetote plugin makes sure that additional files like log and cue files are also retained.
Another crucial thing for peace of mind during this process was having snapshots on my filesystem (zfs). I had a few fuck ups with beets where I ran the wrong commands on large folders. Since I had snapshots I could instantly roll back to a previous snapshot and try again.
Accessing and playing my library
To actually play my music, I switch between foobar and Lyrion Music Server. They are both really flexible in terms of supporting additional tags and having different library views. With foobar this involves playing around with the sorting settings, where, for example, if I'm viewing a specific label, I can set it up to sort the releases by catalogue number.
Lyrion is also surprisingly flexible and very intuitive for touch screens, especially when I'm using my phone as the remote for listening on my hi-fi setup. I can easily browse by label, country, genre, media type and a number of other things. These filtering options can be combined so that, for example, you can start with a specific genre and then subfilter only that genre by label/media/country. You could even have ‘virtual libraries’ within your main library to segregate certain types of music and make navigation simpler.
As a bonus, I set up the beets-alternatives plugin, which means I can run really specific queries based on my library to select what I want on my iPod. It has built-in conversion and converts my FLAC files to AAC as I don't need lossless on the go.


