A Digital Symphony

Classical music from Computer to HiFi

"Enhanced method": harness the power of MusicBrainz

The "enhanced" method makes use of MusicBrainz as the principal metadata source. All metadata edits are carried out in MusicBrainz and saved to the source music file using Picard, then imported to Muso. To do this, you need to register with MusicBrainz as a "editor". This is a very simple process, but please do read the MusicBrainz guidance before performing any edits.

The advantages of this method are:

  • you have access to high-quality metadata about works and artists that would be tedious to enter manually
  • if data is missing, you can add it by registering as a MusicBrainz editor; you only need to link to existing works and artists, not enter them all from scratch
  • if you lose your files and metadata, you can easliy pick it up again from the "cloud"
  • others will benefit from what you add (and vice versa)

An overview of the process is given below:

 Process chart - enhanced.jpg

 

This section sets out my process for ripping, retagging and importing classical music. I recommend you read this page and the page under the "resources" tab before proceeding. Then install and configure the resources and return to this page to follow the process. The instructions below assume that you have registered as an "editor" on MusicBrainz, have installed and configured Picard and have installed and configured the "Classical Extras" plugin in Picard.

Step 1: Rip the CD's

Of course, you may not be starting from scratch and may have already tagged your music, perhaps inconsistently and not to your liking. In that case, just go straight to the tagging stage.

Load the CD. If using dBpoweramp CD Ripper, it will be ripped to a folder which you specify such as: MusicJustRipped. Each CD (or set) will have its own folder. Multiple discs will be in sub-folders. I use pre-defined "profile" in dBpoweramp to do this, giving the files a filename of “[album][IFMULTI]Disc [disc][][track] [GRAB]1,25,[title][] ... [RIGHT]25,[title][]” (The bit in the middle is to shorten the title to avoid filenames getting too long).

Don't worry too much about the tags at this stage as you will overwrite them in the next steps.

Configure any other settings you require (refer to the CD Ripper manual)

Rip the CD.

[If you are starting with a download or an existing digital album, then obviously you skip this stage]

Step 2: Look up on MusicBrainz

You can do this while the CD is ripping. Start Picard and select "Lookup CD". If the CD is found, select "OK" and the album will load into Picard's right hand pane.

If the CD is not found, select "Lookup manually" and see if there is a similar release. If so, you can add the current Disc ID to that release, go to the release overview and use the "tagger" button to load the details into Picard. If the release is missing then you will need to follow the instructions for adding a new release, which can be found on the MusicBrainz website.

[If you are starting with a download or an existing digital album, drag the folder into Picard's unmatched files, select cluster then lookup or scan. If Picard can't find it then you can try searching MusicBrainz for the release and if you find it, use the tagger button to get it into Picard - you need to append "?tport=8000", or whatever the port number of Picard is, to the URL if the tagger button doesn't show. If the release is not in MB, then you will need to add it]

Step 3: Run Picard and edit in MusicBrainz as necessary

Load the files into Picard (just drag the folder with the ripped files into the "unmatched files" folder in the left hand pane. Cluster the files and then drag the folder onto the album you have loaded in the right hand pane. This should automatically provide all the best possible tags. However if the metadata in MB are less than ideal, you will need to amend them (logged into MB as an editor). If the release is not present at all, then you will need to add it. 

Review the results in the bottom pane of Picard to ensure that it looks like what you were expecting. If not then you may need to revise the Picard/Classical Extras configuration or add/amend MusicBrainz metadata. To check the MusicBrainz release, right-click the release in the right hand pane and select "Lookup in browser". Once you are happy with the data, save the album. (For this operation, I also select "Move files" and "Rename files" under tools, with the options set so that the newly ripped folder gets moved into an appropriately named folder - see the "Resources" section).

Please note that the "Classical Extras" plugin has an extensive "Readme" file which fully describes the operation, output and usage of the plugin. This is discussed more in the "Resources" section and is available here.

Step 4: Import the files to Muso / LMS

In my set-up, there are two libraries - a main FLAC library used at home to play via LMS to Squeezebox touches etc. and an iTunes library to provide portability. The FLAC files are initially saved into the LMS library. This is also set up as the "Shared Database" in Muso.

There are two ways of importing the metadata to Muso – either via LMS or directly from the Music files – see the Muso help and wiki for details on this. Now that Muso allows you to import the sort keys, my preference is to import directly, rather than from LMS. "Import actions" (in the Tools - Options menu) are required to ensure that the right information is displayed in Muso and the sort keys need to be defined in “Music Sources”. (See details in Resources section).

Review the imported files in Muso to make sure that it they look right. If not, then make the corrections in MusicBrainz. The best way to do this is as follows:

  • drag the cover art from the Muso album page onto "unmatched files" in Picard. The album should load automatically (using the MB id) - if not, refresh it.
  • Click "Look up in browser". Log into MB and do your edits. Depending on the nature of the edits, they may or may not be immediately effective. If not, you will have to wait until voting closes (usually 6 days) before they take effect.
  • If they are effective, just refresh and save in Picard then go to Muso and "re-import album folder". If you need to wait 6 days, I suggest you tag the album in Muso with a reminder to pick up the changes later.

If for some reason, you cannot achieve the desired result from Picard, then I suggest you edit the fields in Picard then save them, rather than editing them in Muso directly. That way the underlying file tags will be correct.

Step 5: Import to iTunes (if required)

If, like me, you want a (smaller) version of your library to keep on your iPod etc., then it is fairly simple to import it to iTunes and still be able to find the music by album or opus. The approach I use is:

Step 5a) Use dBpoweramp Music Converter to convert files to m4a (or mp3). Note that some care in tag naming is required to achieve the desired result, particularly if using m4a (see the Resources section for details).

Step 5b) Now (ideally) you need a neat bit of software called "iTunes Library Toolkit". This can be used to automatically add to the iTunes library any music that has been placed into its "watch folder" by dBpoweramp. Furthermore, its "Custom Browse" feature can be used to automatically generate a playlist of works by composer. I use the following folder structure for this playlist: Initial letter of Composer (sorted) then Work.

Step 5c) Sync to the iPod etc. CDs can now be accessed by original album name from the Album menu (or as Works, by composer, from the playlist - if you did 5b).

Step 5d) (Optional, if you also want to use Muso to play the mp3/m4a format library on the local machine) In Muso options, switch to the "personal database". Import the mp3/m4a files to Muso using "import specific folder". Note that import actions may differ for m4a (see Resources section)

Subsequent maintenance

In all probability you will spot errors or want to make some changes/additions to metadata tags at a later date. The best way to do this is to fix it in MusicBrainz and re-import the files, as described above.

This section sets out the software required and how to configure it to achieve the results described.

Software

You will need the following software:

  • CD ripping software: dBpoweramp - CD Ripper and converter. Available from http://www.dbpoweramp.com. The cost (March 2017) is £32 + VAT. A full-featured trial is available. Exact Audio Copy is free but slightly more complicated to use.
  • Logitech Media Server (“LMS”). Free from http://downloads.slimdevices.com/nightly/index.php?ver=7.9. Note that this is the “community-supported” version, not the official Logitech version: it has some useful enhancements such as “additional browse modes”. Note also that Logitech have for some reason stopped selling the SB Touch players. Alternative players are available, e.g. Squeezecast or iPeng app on the iPod Touch, iPhone or iPad, or Squeezeplayer for Android. You can also use a Raspberry Pi as a cheap player (and indeed server). Max2play do a several fully featured Raspberry Pi based systems. If you only want to play music on a PC then LMS is unnecessary. If you want the fancy “Custom Clock” screens on the SB Touch (or Squeezeplay on a PC) then you will need that plugin too.
  • Muso. This is amazingly good - by far the best and richest user interface of any library management software and the best partner for LMS. Cost (March 2017) is €20 from http://klarita.net/muso.html.
  • SongKong. While not absolutely essential (you can just use Picard), SongKong is useful for tagging larger number of files and picking up the MusicBrainz Ids, prior to any fine-tuning with Picard. Cost is £25 from http://www.jthink.net/songkong/.
  • Picard (free) is the music tagger that accompanies MusicBrainz and is essential if you are going to use MusicBrainz to edit your tags. Unlike SongKong, any changes in MusicBrainz will be immediately picked up by Picard (SongKong uses its own database sourced from MB - which has advantages but it may be out of date by days or weeks). Also Picard has a scripting tool, so if you don't use it then you will need something like Mp3tag to use with SongKong. (A scripting tool is promised for SongKong). Go to https://musicbrainz.org/ for all the MusicBrainz resources. My "Classical Extras" plugin for Picard greatly enhances (IMHO) the tagging capability - the beta version is at https://github.com/MetaTunes/picard-plugins/releases (Read the readme at https://github.com/MetaTunes/picard-plugins/blob/master/plugins/classical_extras/Readme.md first).
  • A controller for the iOS or Android device if you want to use this to view and control music remotely. Squeezebox and iPeng are the main apps. Muso also includes a web-based remote control which is great for just seeing what is playing and accessing any sleevenote pdf files. It is also possible to use VNC so that you can access Muso on the desktop directly from an iPad.

If you also want to play standalone on an iPhone etc. then you will need:

  • iTunes (free) on the PC.
  • (ideally) iTunes Library Toolkit, if you want to have custom playlists by composer / work etc. Cost (March 2017) £3.99 annually from http://klarita.net/itlt.html. There are manual alternatives to this software but they are very time-consuming.
  • If you have the latest iOS on your iDevice and you use the new iTunes classical music tags then the works and movements will be properly displayed using the native player.
  • dBpoweramp includes an mp3 (and optionally m4a) converter which will also cater for any necessary retagging.

The total cost of all this is pretty negligible compared with the cost of hardware and the music itself (you didn't steal it, right?) and well worth the investment.

Configuration

Configuration details are given below following (approximately) the sequence set out in the Process section.

dBpoweramp CD Ripper
Firstly read the help files carefully and set up the ripping options as recommended.

Set up a ripping profile to use the following naming method: 
[album][IFMULTI]Disc [disc][][track] [GRAB]1,25,[title][] ... [RIGHT]25,[title][]
This will replace the middle of titles with "..."(assuming they are over 50 characters). There may be better ways of doing this. The key thing is to organise the tracks by album and disc and to give them unique (but not too long) filenames. Note that dBpoweramp will replace special characters which are illegal in filenames - this setting is found in "Options - Meta Data - File name restricted characters". The standard replacements are pre-populated, but you may need to add others because, although Windows may appear to display them correctly, not all music software will handle them properly. A specific example is ř as in Dvořák, which should be replaced by a plain r.

On the DSP tab, add ReplayGain if required.

Following the introduction of iTunes tagging support for classical music (see step 4 below), CD Ripper now includes boxes for these new tags, provided the genre is "Classical" or "Opera". I suggest you ignore these because (a) there is no way of automatically creating them from the Title tag, (b) the genres are too restrictive and (c) the metadata sources do not yet include these tags. In any case, if you use Picard with the Classical Extras plugin, all these tags will get overwritten.

SongKong
Read the manual - it is very clear. Pay particular attention to the "Classical" settings. - the settings I use are shown below:

SongKong settings.jpg

Picard

Go to the "options" menu item. There are lots of choices, so you need to decide what suits you best. There is a very good help page. I recommend the following:

  • General: If you log in (assuming you have registered so that you can edit metadata), you will be more easily able to upload new releases and use your own defined "folksonomy" tags (see below).
  • Metadata: See below for recommended main options. It is important to tick "Use release relationships" and "Use track relationships", otherwise the Classical Extras plugin will not work properly.
    Picard1.jpg
  • Folksonomy tags are mutipurpose tags that anyone can add to releases or tracks. They can be used as a proxy for genres (MusicBrainz does not store genres per se). If you decide to use them as genre tags then make further choices on the next screen - e.g. select 0% for "minimal tag usage" and select "only use my tags" if you only want to use your own tags (you need to be signed in on the "General" screen).
  • Tags: you may wish to clear existing tags. If you do not, you may get unexpected results when Picard does not set a tag (thinking it should be blank) but does not delete the existing one. However, if you do clear existing tags, be sure to list tags that you do not want cleared or overwritten.
  • Filenaming: Select the folder to move files to when saving. If you rename files, then you can also set the folder name for the album - see my script below:
    filenaming.jpg
    N.B. Be sure to turn file naming off once you have initially saved the files otherwise Picard will try and rename them again if you save them again and will add a "(1)" at the end.
  • Fingerprinting: Use AcoustID.
  • Plugins: Install "Classical Extras". This is currently only available as a development version, so you need to get it from my github site. I also recommend that you install the "View Script Variables" plugin; this enables you to view all the hidden variables that are populated by "Classical Extras": particyularly useful if you want to write your own scripts to use these variables. Read the extensive Readme on using and configuring the plugin. I suggest using the following options:

artist_options.jpg

 Obviously you can change these to suit. The intention of the various source->tags lines is (1) to have a preferential order for filling the "artist" tag, (2) to use the "band" tag for ensembles, (3) to use the performer instrument types etc. to populate "genre" and (4) to save the MB album name (without the composer prefix) to a custom tag called "release_name". As well as various genres derived from the performer types, a genre of "Classical" will be assigned if the track is a recorded work and various other criteria are met.

work_parts_options.jpg

See notes below on iTunes for the reasons for using "style" and "subtitle".

advanced_options.jpg

Muso
In Tools - Options, go to the Classical tab and select "Specialised Classical Music Functionality". On this tab also, enter the names of the classical music genres that you wish to use. You can also add your own list of composers to the roster to enable sorting and filtering on periods (the common ones are already provided). On the Import Actions tab, you will need to map the fields produced by Picard to the Muso fields. 

Note that the current (March 2017) version of Muso enables you to write tags to the underlying song files. This will only be consistent with this scheme for those tags which are completely unmodified on importing to Muso. Writing the other tags will either overwrite standard tags or create new custom tags. It is therefore recommended that you do not write tags from Muso - use Picard or another tagger to edit the underlying files directly.

I have made a slight alteration to Muso which I think marginally improves the display of albums containing a mix of (grouped) works and standalone recordings. This is done by modifying the CSS files (Options->Appearance->Manage themes) to include the following:

.track:not(.groupedTrack)
{
margin-top: 5px;
font-size: 110%;
}

.track:not(.groupedTrack) .trackArtist, .track:not(.groupedTrack) .performer
{
font-size: 82% !important;
}

.groupFiller
{
margin-top: 10px;
}

and to change the entry for .trackGroupHeader to set "margin-top: 10px;" rather than 6px.

The import actions I use to be consistent with the tags written by Picard are shown below.

 

import.jpg

Note that "stamp" is specified in the Classical Extras advanced tab and "profile" is written by dBpoweramp CD Ripper. I use "part" for the movement name rather than overwrite "title" as this leaves "title" to be used by the Squeezebox display (which doesn't have work/movement capability).

Logitech Media Server

Make sure you have the latest version of LMS 7.9, to get proper sorting of Composers, Conductors etc.

If you want the SB touch displays described here you will need the Custom Clock app on each SB touch plus the Custom Clock Helper plugin. You can design your own screen or use the one shown here by downloading and importing this file.

To get the Sort Table for Artists into Muso you will need to import them. Set up the configuration (under Tools – Options – Music Sources) as follows:

Artist: ARTISTSORT, AlbumArtist: ALBUM_ARTISTS_SORT, Band: BAND_SORT
Performer: PERFORMER_SORT, Composer: COMPOSERSORT, Conductor: CONDUCTOR_SORT

dBpoweramp Music Converter (only needed if you want a standalone portable iTunes library)
I convert to mp3 (or m4a to use the latest - March 2017 - iTunes classical music tags), but this is just a personal choice. I set the output location to be dynamic, with the first section of the path pointing to (a folder in) the iTunes media library folder and with the second section of the path as follows:
[tag]CDNAME[][IFMULTI]Disc[disc][][track] [title]

In DSP actions, add "Folder.jpg preserve" (and include other file types as required, e.g. .pdf for sleevenotes).

Note that, if you use the suggested Classical Extras Options described above, "style" will convert into "grouping" on mp3/m4a conversion.

You might also need to make entries in dBpoweramp Configuration. On the Audio Codecs section: set ["mp3 ID tagging - Tag Creation" to "ID3v2", "ID3v2 version" to "2.3" and "ID3v2 Text Encoding" to "UTF-16"]  "m4a tagging compatibility" to "iTunes Tags". I believe that these are now the default settings in the current version of dBpoweramp, but it is probably worthwhile checking.

iTunes
Here the important thing is not to let iTunes manage your library for you. In Edit - Preferences... Advanced, clear the boxes that say "Keep iTunes Media folder organised" and "Copy files to Media folder when adding to the library". (The latter assumes that you have already placed your files in the library folder if you followed the path described above).

If you want to modify m4a tags using Picard/Classical Extras then that is possible, but the tag names are limited. In particular, at present, Picard does not support "movement name" so I suggest you write this to "subtitle" then use a simple Mp3Tag script to convert it to "MOVEMENTNAME" (the alias of movement name within Mp3Tag). A richer set of tag names is achived by modifying the FLAC files and re-converting to m4a.

iTunes Library Toolkit (optional)
This will manage your iTunes library for you. Set the "New Media" watch folder to be where your music is in the iTunes library. Set the "Custom Browse" playlist path to be
Work by Composer %C1 %C %g (%a)
Set the null value of %g to be "(no work)".

In working out this tagging scheme, I have discovered quite a few things (some of which I had rather not). Here are a few: 

TrackArtists

TrackArtist is a LMS-specific tag of slightly obscure origin. It is not the direct equivalent of the FLAC tag “Performer”. It is more a sort of “shadow artist”; LMS may display track artists alongside Artist without being told to. However, I do use it to display performers in LMS and mostly it works well (see the Custom Clock display). The main problem is that LMS will not include sort keys for TrackArtist unless the artist is also named in another contributor role (Album Artist, Artist, Composer, Conductor, Band). It is possible to fix this by applying a simple patch to LMS – you need to add TRACKARTISTSORT at the end of the last line of the following section in the file Schema.pm:

2660     for my $tag (Slim::Schema::Contributor->contributorRoles, qw(
2661                             COMMENT GENRE ARTISTSORT PIC APIC ALBUM ALBUMSORT DISCC
2662                             COMPILATION REPLAYGAIN_ALBUM_PEAK REPLAYGAIN_ALBUM_GAIN
2663                             MUSICBRAINZ_ARTIST_ID MUSICBRAINZ_ALBUMARTIST_ID MUSICBRAINZ_ALBUM_ID
2664                             MUSICBRAINZ_ALBUM_TYPE MUSICBRAINZ_ALBUM_STATUS
2665                             ALBUMARTISTSORT COMPOSERSORT CONDUCTORSORT BANDSORT

 The file Schema.pm is in /usr/share/perl5/Slim in my Raspberry Pi. If you do make this patch then of course you will lose it if you update LMS and will need to re-apply it.

Sundry tagging issues

Various tagging issues were discovered in the process of developing this tagging scheme.

  1. Ensemble is a dangerous tag to use as it maps to TPE2 in mp3 which in most systems maps to Album Artist, causing endless confusion. Use Band instead.
  2. Different tagging software has different behaviours. For example, MP3Tag does not show the same tags as "Edit ID-tag" in some cases. Sometimes they can show different Albums, Titles and Track Numbers. I have yet to track down the reason for this. The only solution I have found is to use both tools to fix the tags if problems are suspected.
  3. Picard only supports a limited number of m4a tags - see the Picard tag mappings for details. (Also see here for the Mp3Tag mappings)