Table of Contents

Music Library Organization

Overview

Here is a brief overview of what happens to new content coming in to my library.

  1. Tags get cleaned up, any missing metadata is populated, missing album art is retrieved.
  2. FLACs are transcoded to MP3s and album art is embedded, then the MP3s are imported to iTunes for syncing with iTunes Match.
  3. Processed content is moved to the library once everything looks good.
  4. Final confirmation is performed in foobar2000, MusicBee, and iTunes, making sure the number of songs and albums matches.

Software Used

My MusicBee layout

Folder Structure

I've adopted this structure at some point and stuck with it. If I had to start over I would probably adjust it a bit, but it works fine. These paths will be referenced throughout the rest of the documentation.

Folder Description
.\_1_new This is essentially the inbox for new content that needs to be processed.
.\_2_cleaned_up Content that is being processed currently will stay here until it is 100% ready to join the library.
.\_3_archived This is the library root, foobar2000 and MusicBee monitor it for changes.
.\_3_archived\_FLAC FLAC content gets sorted here.
.\_3_archived\_MP3 MP3 content gets sorted here in rare cases when FLAC is unavailable.
.\_itunes iTunes library lives here.
.\_itunes\_ready Transcodes from foobar2000 go here with intent of importing to iTunes.

NOTE:​ All documented paths are relative for brevity and readability,​ however in practice they must be absolute. For ex: ​Z:​\_media\_audio\_1_new

foobar2000 Settings

MP3 Tag Handling

I prefer to avoid ID3v1 and maintain high compatibility for ID3v2, so these are the settings I use.

Navigate to Library > Configure > Advanced > Tagging > MP3

Useful Views

Navigate to Library > Configure > Media Library > Album List

File Operations Presets

Right-Click on any library item and go to File Operations > Rename to. This will bring up the File Operations Setup window with the least clicks. The same window will show for all file operations, just with different pre-populated settings depending on which right-click context menu was selected. Following are the presets I use.

The output resembles something like this: .\_3_archived\_FLAC\Ayreon\(2017) The Source\01. Chronicle 1- The Frame, The Day That The World Breaks Down.flac

Transcode Presets

Right-Click on any library item and go to Convert > …. This will bring up the Converter Setup window. Here it's possible to manage a variety of presets, which show up as extra items in the context menu.

Encoder settings are first configured in the Current settings area, and then it's possible to Convert right away or Save « a preset. If nothing is selected in Saved presets then a new preset is generated that can be renamed. If a preset is already selected, a popup will appear asking whether to overwrite or create a new preset. Following is the preset I use.

NOTE: When performing the first transcode with any given encoder, foobar2000 will prompt for the path of the encoder binary/dll. Check the software section to download LAME, I chose to keep my binary in %appdata%\foobar2000\lame3.100-64\lame.exe.

Step-by-Step

Initial Cleanup Pass

  1. Place all new content to be processed in to .\_1_new.
  2. Launch foobar2000 and drag-and-drop .\_1_new in to an empty playlist view.
  3. Select all tracks and Right-Click > ReplayGain > Remove ReplayGain information from files.
    1. I just don't utilize ReplayGain, so I rather keep the library clean till I come around to it.
  4. With all tracks selected either Right-Click > Properties or hit Alt+Enter.
    1. I don't like unnecessary metadata in my tags, so I delete all tags shown as <…>.
    2. I don't keep track of Total Tracks, Disc Number, or Total Discs, so I delete those.
    3. Performer and Composer are usually not relevant, or don't add any extra information, so I delete them.
    4. Genre will be completely re-done, so I delete it for now.
    5. If Comment has useful information about the release, I'll keep it, but it's usually encoder details, so I delete that as well.
    6. Click OK to apply changes and close Properties for now.
  5. I need to make sure that Album Artist is 100% populated, but foobar2000 shows data in that column from Artist if Album Artist is missing, so this requires some manual work.
    1. Select all items in the playlist where it's obvious Artist and Album Artist would be the same.
    2. Right-Click > Properties or hit Alt+Enter.
    3. Right-Click on Album Artist and select Automatically Fill Values.
      1. Source pull-down: Other…
      2. Source text-field: %artist%
      3. Pattern: %album artist%
      4. Click OK.
    4. Click OK.
    5. Manually fix the rest of the items where Artist and Album Artist shouldn't match.
  6. I prefer dates in YYYY format, so I eyeball the Date column in the playlist and correct whatever doesn't conform.
  7. I prefer to condense multi-disc releases in to a single album in my library.
    1. Some things that I may separate out include:
      1. Bonus discs with tracks that break the flow of the original album release.
      2. Instrumental versions.
      3. Albums where each disk is thematically distinct.
    2. For all multi-disc releases that will be merged I need to do the following:
      1. Manually continue the track numbering from where Disc 1 ended for all subsequent Discs.
      2. Make sure Album is consistent through the entire release, so delete any mentions of (Disc 1) and etc…
    3. For releases where there will be content separated out, treat the primary album just like above. The separated content will have the same album name, but with an appropriate suffix like (bonus disc) or (Instrumental).
  8. Before further processing, I need to move the content, because Auto track number seems to consider the folder structure.
    1. Select all content in the playlist, Right-Click > File Operations > Move to > move to cleaned up.
    2. The File Operations Preview window will come up to show what will happen, eyeball to double check paths and click Run.
    3. The content in the playlist will update to reflect its new paths, it's a good idea to sort by File path and then eyeball the content to make sure everything looks good. If the Album and Track Number wasn't adjusted properly earlier for multi-disc releases, they may have merged in to a single folder. Now would be a good time to clean those up and perform another move to cleaned up.

Custom Tags

  1. Select all tracks and either Right-Click > Properties or hit Alt+Enter.
  2. Re-generate the track numbers to make sure they conform to the same style of padding.
    1. Right-Click on Track Number and select Auto track number.
    2. Total Tracks will get re-populated, I don't care for it so I delete it again.
  3. For iTunes to not merge albums with the same name, but from different artists, in to the same album, I need to add the <albumsortorder> tag and populate it with a unique string for each album in the library.
    1. Right-Click in the white-space below the existing tags and select Add new field or hit Ctrl+N.
      1. Field name: ALBUMSORTORDER
      2. Click OK.
    2. Right-Click on <ALBUMSORTORDER> and select Automatically fill values…
      1. Source pull-down: Other…
      2. Source text-field: %album% - %album artist%
      3. Pattern: %albumsortorder%
      4. Click OK.
  4. At some point I decided that it may be useful for every track in my library to have a unique GUID, one day I'll remember what this was for.
    1. Right-Click in the white-space below the existing tags and select Add new field or hit Ctrl+N.
      1. Field name: GUID
      2. Click OK.
    2. Right-Click on <GUID> and select Edit
      1. Source pull-down: Other…
      2. Generate a list of GUIDs and paste it in here. I wrote a PowerShell script to generate these, I'll link to it later.
      3. Click OK.
  5. Click OK.

Album Art

  1. Check if there is any content remaining in .\_1_new, decide if it should be kept or deleted.
  2. Content should all be in .\_2_cleaned_up\_FLAC now.
  3. Search for *.* and delete any unwanted content, cue sheets, logs, etc…
  4. Parse through all album paths manually and confirm presence of album art.
    1. The mandatory file is cover.jpg, everything else is extras.
    2. If album art is missing, google it.
    3. I try to keep the file size and dimensions of cover.jpg reasonable, 1000x1000px is plenty big.

Genres

  1. The Discogs Tagger plugin mentioned in software used is required here. I've also mapped Ctrl+T to the Write Tags… function of the plugin, to make life easier.
  2. These steps have to be performed on individual albums, so select all the album tracks and:
    1. Ctrl+T will bring up the Find Release window.
    2. Assuming the artist is found, there should be releases listed on the right side. Some artists don't have unique names, and it will require experimenting with the choices in the Artists area to find the right one.
    3. Clicking on an item in Releases will expand it to show all the available releases Discogs has data for.
      1. I prefer to pick a release that matches my content's origin, or the closest one.
      2. Double-Clicking any release will open its respective page in the default web browser.
      3. It's common for me to open pages for a bunch of releases and then review them in the browser to see what is the best match, as the plugin doesn't provide enough info without progressing to the next step.
    4. Once a desired release is selected, click Next». The Matching Tracks window shows side-by-side data from Discogs and the selected files.
    5. Click Preview tags.
    6. If this hasn't been done before, click Edit tag mappings….
      1. Here it's possible to configure which tags get data fetched in to them, and also the various patterns that augment that data. I have all fields disabled, except Genre is set to write + update.
      2. I use different formatting strings for Genre depending on what kind of content I'm processing.
        1. Movie soundtracks: $unique($append($filter($filter($extend(%<RELEASE_GENRES>%,%<RELEASE_STYLES>%),Score),Stage & Screen),Soundtrack,Movie))
        2. Anime soundtracks: $unique($append($filter($filter($extend(%<RELEASE_GENRES>%,%<RELEASE_STYLES>%),Score),Stage & Screen),Soundtrack,Anime))
        3. Game soundtracks: $unique($append($filter($filter($extend(%<RELEASE_GENRES>%,%<RELEASE_STYLES>%),Score),Stage & Screen),Soundtrack,Game))
        4. Everything else: $unique($filter($filter($extend(%<RELEASE_GENRES>%,%<RELEASE_STYLES>%),Score),Stage & Screen))
      3. In a nutshell, when tagging soundtrack releases, I like to get rid of Score and Stage & Screen, but I want to append Soundtrack and Movie/Anime/Game. For all other releases I just get rid of Score and Stage & Screen just in case. Also, I merge Discogs genre and styles in to a single field, and treat them all as genres. This all is just my preference, and explaining it is a long story.
    7. Review the values about to be written in to the tags, and click Write tags when ready.
      1. If any editing is performed to a tag prior to clicking Write tags, the value will be treated as a single item and delimiters will be ignored. This is easy to spot when using the by genre view. To fix this, go in to the item properties and manually edit the field, although nothing needs to be changed, just the act of editing will make the delimiters work again. Not sure why this happens, must be some string handling issue.
    8. Quite often Discogs has good info in the genres/styles for a release. However, sometimes there is inconsistent information among the various releases for the same master. Due to this I sometimes review multiple releases, and decide whether to manually append/adjust the values I initially fetched with the plugin. Also, I sometimes check Wikipedia to further flesh out the genres tag.
    9. Sometimes, especially for new releases, the genre/style info is barely fleshed out on Discogs, so this is a good time to refer to previous releases already in my library. It's common to just copy/paste data, especially if the artist isn't deviating stylistically with the new release.
  3. Repeat the above for every album until finished.

Transcode for iTunes

  1. Select all tracks and Right-Click > Convert > ready for itunes.
    1. This will take some time, although LAME is crazy fast and uses every available core/thread.
  2. Remove all tracks from the current playlist and drag-and-drop .\_itunes\_ready in to it.
  3. Important to note that I'm now processing the newly transcoded MP3s, not the original FLACs.
  4. Select all tracks and Right-Click > Tagging > Batch attach pictures.
    1. File lookup pattern: cover.jpg
    2. When attached picture already exists: (x) Overwrite
  5. Remove all tracks from the current playlist.
  6. Import .\_itunes\_ready in to iTunes.
    1. After the import, it's safe to delete the contents of .\_itunes\_ready, it should only contain lingering art files.
  7. Let iTunes sit around for a while, it should automatically start updating iTunes Match and Genius data.
  8. It's a good idea to eyeball the Albums view in iTunes to confirm all the album art shows up.
    1. A common mistake I make is to leave conver.png instead of cover.jpg in the folder, and I don't process PNGs when doing Batch attach pictures. In this case I'll convert the PNGs to JPGs for the content I missed in .\_2_cleaned_up\_FLAC, and then manually attach the respective cover art in iTunes.

Merge and Verify

  1. Move .\_2_cleaned_up\_FLAC to \_3_archived\_FLAC, it may be necessary to quit foobar2000 and MusicBee to release any lingering IO handles.
  2. Re-launch foobar2000 and give it some time to detect the new content. I usually keep an eye on the by album view, and if the item count at the root doesn't increase after a few refreshes that means it's done updating.
  3. The root item count for the by album and by albumsortorder views in foobar2000, and the album count in iTunes, should all match.
  4. The number of items in the foobar2000 library should match the number of songs in iTunes, excluding any non-music content.
  5. Re-launch MusicBee and give it some time to detect the new content. Album and song counts should match foobar2000 as well.
  6. I like to create playlists for content added during a certain period, like Imported 2017-Fall, so now is a good time to do that. This is a good way to make sure new content gets appreciated and not immediately lost in a large collection.
  7. Rock out.