What's this? :o
Here I gather my thoughts and findings on everything "local music files". The title Hmp3 is, as you surely would agree, a rather clever shortening of "hm..." and "mp3".
1. The software
1.1 On the topic of software
While I do have both macOS and Linux in my home those platforms are not used by me for music playing purposes and therefore will not be taken into account going forward. They might have native or ported versions of the players I'm talking about, but I won't pay it any attention.
MusicBee - My daily driver since a few years back. It's very customizable so it can be both minimalistic and extra everything depending on the users' taste. It's however not open source and thus our customizing options are limited to skins, plugins and the various (extensive) settings.
Supported file formats: MP3, AAC, M4A, MPC, OGG, FLAC, ALAC, APE, Opus, TAK, WavPack, WMA, WAV, MIDI, MOD, UMX and XM.
Developer: Steven Mayall
Written in: VB.NET
AIMP - This looks to be the main contender to MusicBee at this point in time. However, everything regarding this player is in russian (including their whole forum) and I can't seem to find any proper documentation/manual what so ever. Because of this I might rule AIMP out as irrelevant. We'll see.
Supported file formats: MP3, AAC, Dolby AC-3, Ogg Vorbis, Opus, Speex, WMA, Apple Lossless, FLAC, WAV, APE, True Audio; DTS audio, MP1, MP2, Musepack, OptimFROG, WavPack, MIDI, Impulse Tracker, MO3, MOD, MultiTracker Module, S3M, TAK and FastTracker 2 Extended Module.
Developer: Artem Izmaylov
Written in: Delphi
foobar2000 - This was my player of choice throughout my teens. For reasons I had to switch player to iTunes for a year and after that I had a hard time coming back to foobar2000 - the modular nature of the software is both it's strength and weakness if you ask me. They recently released version 2.0 and I've been hearing great things about the Columns UI component, so I might have to check it out again one of these days.
Supported file formats: MP1, MP2, MP3, MPC, AAC, WMA, Ogg Vorbis, FLAC / Ogg FLAC, ALAC, WavPack, WAV, AIFF, AU, SND, Speex and Opus.
Developer: Peter Pawłowski
Written in: C++
Winamp - My first player. Well, my first as long as we don't count Windows Media Player. It was revolutionary at the time but have since outlived its usefulness. It's fairly light on resources so it might serve as a "behind a fullscreen game without stealing FPS" solution, but for that I have an even smaller program called XMPlay so... yeah, Winamp is kind of pointless right now. (I'm talking about the old classic Winamp, the new modern version isn't of interest to me.) Still, this doesn't keep me from enjoying this site where you can browse, and interact with, old skins that spark nostalgia!
Supported file formats: MP3, MIDI, MOD, MPEG-1 audio layers 1 and 2, AAC, M4A, FLAC, WAV and WMA.
Written in: C/C++
Since MusicBee is my current player I'll be focusing on plugins for this software here. Fortunately, MusicBee has a lot of plugins (it even supports all the old Winamp plugins!) so there's plenty to pick and choose from. The few ones I'm using at the moment are:
Discogs Tagger - Adds Discogs to the list of services the auto-tagger uses.
WeedsGM3 - A classic soundfont for MIDI playback.
Enhanced Genre Hierarchy List - I guess it counts as a plugin even though it's basically a text file.
CorsairLED - Interaction with the lighting in my keyboard (K70 RGB MK.2). This one needs some tweaking as of right now, I'll get to it when I get to it.
Last.FM - Support for scrobbling is nowadays built in.
2. The files
With my current equipment I can't tell a lossless format from a (good quality) lossy one, so I've decided to go with lossy. What are my options then? Well, the file format I have been focusing on since the 90's is MP3 so my entire collection concists of that. Going forward though, I think I'll rip future music with the Opus codec, since this is a better option. I'm even able to tell the difference on my casual setup.
While I am a headphone user and clearly can tell the difference between lossless and 128 kbps, I am by no means a snob and I'm fine with pretty much anything if I have no other choice. I have a lot of 128 kbps tracks that just isn't possible to find in better quality and so be it. If it's completely up to me I'd go for 320 kbps all day, with 192 kbps as my lower limit. In the case of Opus, I've heard there's no way to tell apart bitrates over 256 kbps, with the upper limit for the format being 510 kbps. This means I'm aiming for 256 kbps, with anything over being acceptable as well as long as storage isn't an issue.
3. The sorting
3.1 Folder hiearchy
Someone once told me that as long as the files are tagged properly, we can just as well have all the files in one big folder, the music player doesn't care. But what does care is my eyes. I want to be able to browse my files with a breeze and quickly find everything sorted and grouped. This is why I'm going with the following hierarchy in my folders: [Initials] -> [Bands sharing the folder initial] -> [Albums] -> [Files].
The meta data fields are populated through MusicBee's built in auto-tag function, which is getting its information from MusicBrainz. I tend to only use the "Auto-tag by Album" one since "Auto-tag by Track" many times picks the wrong release and end up serving me the wrong information. I don't really care for all the fields, but the ones I want to have filled in are Track title, Artist, Album artist, Album, Year, Track #, Total # of tracks, Publisher and Genre. If some of these are not populated through the auto-tagging, I enter it manually.
In the beginning I tagged my music files in sort of a hierarchical manner where I started with the broadest genre definition and drilled my way down to the specific sub-genre. A track by Meanwhile would have the genre tag(s) "Rock; Punk; Hardcore; D-beat". This was rendered pointless as soon as I started using enhanced genre grouping where all sub-genres are correctly grouped within their corresponding broader genre. I therefore only tag the tracks with the specific sub-genre and nothing else.