A Digital Symphony

Classical music from Computer to HiFi

"Bells & Whistles": optimise the tagging for Muso and LMS

The "bells & whistles" method uses Mp3tag as the initial editing tool. Although subsequent editing can take place in Muso, all changed tracks need to be exported and the “Classical” action run to maintain consistency with the underlying tags and to create the sort keys. If role tags have been changed then the sort keys may be different, so the tracks will need to be re-imported into Muso to get the correct sort order.

So to the nuts and bolts. This section elaborates on the guidance provided in the “Tagging Overview” section, assuming that the “bells and whistles” approach is required.

The key to everything is the metadata structure, so that is discussed in some detail first, followed by further details of each of the steps described in the “Objectives” section.

Tags

FLAC files allow any tag names, and any number of them, to be used. The actual names are not important unless they are "standard" tags used in particular ways by particular software (including LMS and Muso). See http://musoware.com/wiki/index.php?title=Attribute_Mapping for details of how Muso uses standard tags. My philosophy is to use "base" tags for the key metadata and then (re-)construct any other tags from these automatically. In this way, the tags can always be re-configured as software requirements and capabilities change. Manual re-tagging is an activity to be avoided! Mp3tag is used to facilitate this, using a special “Classical” action (macro).

The tags and how they are derived and used are set out below. The sequence shown is the one that I use in the "panel" in Mp3tag (although I do not display them all, the others can be accessed via "extended tags"). Multiple entries in tags should be separated by ; (NB do not use a ; in any string in a tag except to separate multiples). Each tag description below is annotated to say if it is {Base} or {Derived}. Non-standard tags are annotated as {custom}. There are also a few {temporary} tags. A few tags may need to be entered manually if the meta-data sourced from the web on ripping is not what is desired or is incomplete.

PANEL ITEMS

A word about multiple entries in tags: Although multiple entries in tags are entered separated by a semi-colon, after the execution of the “Classical” action they will be shown separated by a double backslash – this denotes that the tag has been split into multiple physical tags which is a more convenient way to store and process them. Either format is acceptable to both Mp3tag and Muso (provided you set up a semicolon as a separator tag in Muso’s options).

Title {Base}
Sourced from:- Web-sourced metadata initially.
Before ripping, this should be set to be the work or opus (if any) followed by the movement, separated by a colon. This is a (fairly) standard naming convention for classical tracks. Check that only one colon is present. If more than one colon is present, the first one will be deemed to be the separation point between Work and Movement.

If the work is part of a larger opus (e.g. an Act within an Opera, or an opus within a collection such as the Well-Tempered Clavier) then the Title should be formatted as (e.g.) “Dido and Aeneas::Act 3, Scene 2: Dido’s Lament”. Muso will then use this to provide a three-level structure (“GroupHeader::GroupSubheader: Title”). You can also use this structure to provide a sub-heading for a work, e.g. “The Firebird Suite::1919 version: Introduction”.  Provided you use the “Classical” Mp3tag action, any inconsistencies regarding spaces around the colons will be removed. If you want a track to appear in Muso as just a Work (with no movement) then use the format “Work: “.

Album {Base}
Sourced from:- Web-sourced metadata initially
Before ripping, this should be set to be the desired album name. Ideally the format is “Composer(s): Works description [artist/conductor]” but this does not always fit. For an album where one artist plays many composers, “Artist: Works description / Album name” may be necessary. The tag is copied to the CDNAME tag on ripping. Subsequently, the Album tag can be changed if required, but the original CDName will be retained as back-up (so if you make a spelling mistake when ripping, change both tags afterwards).

Year {Base}
Sourced from:- Web-sourced metadata. May require editing.

Track {Base}
Sourced from:- CD ripper.

Genre {Base}
Sourced from:- Web-sourced metadata. May require editing.
I use a classical sub-type for all works where composer/conductor are key. Otherwise 'Rock' etc. I do not use "Classical" as a genre name if I can avoid it. Subtypes I use are: Ballet, Opera, Orchestral, Concerto, Choral, Instrumental, Vocal, Chamber. Muso allows you to name the genres which you wish it to interpret as being classical.

Comment {Base}
Sourced from:- User (usually).
This tag is not really used by LMS or Muso. It can be a useful holder for information you don’t generally want to be displayed. For displayed comments in Muso, it is better to use the custom sub-headers.

Compilation {Base}
Sourced from:- Web-sourced metadata initially. User-modified.
Check this flag on the dBpoweramp screen before ripping, or amend afterwards in Mp3tag.

AlbumArtist {Base}
Sourced from:- Web-sourced metadata initially. User-modified.
Use this tag sparingly. If used, Muso will give principal credit for the Album to this artist, over-riding its in-built intelligence to give credit to the main composer(s) (for classical music) or artist(s) (for non-classical music). Use it if you wish to over-ride Muso’s intelligence, otherwise leave it blank.

AlbumSubheader {Custom}, {Base}
Sourced from:- User
This will provide additional information to the album name displayed in Muso.

DiscSubheader {Custom}, {Base}
Sourced from:- User
This will provide additional information to the Disc number displayed in Muso.

Period {Custom}, {Base}
Sourced from:- Web-sourced metadata or (more usually) User
For Classical Genre: Early Music, Rennaissance, Baroque, Classical, Romantic, Modern, Contemporary. For other (popular) genres: decade (e.g. 1970s). For classical music, it can be left for Muso to work out from Composer, if not being used as part of a custom tag scheme in LMS, and provided the Composer Roster in Muso is complete.

Composer {Base}
Sourced from:- Web-sourced metadata, modified to include arranger, if any.
Check format (ideally before ripping) – Use full name. Use hyphens etc. to prevent splitting words on sorting. Multiple composers are allowed, separated by a semi-colon. If there is an arranger, include as another composer (after a semi-colon) with the addition of a role description in brackets, e.g. “Arranger name (Arr)” or “(Transcribed for trumpet by) Arranger name” or similar. Note that the arranger role will appear in the display of the composer name but that the “Classical” Mp3tag action creates a sort key which excludes it, so the sort order should be correct. Putting the brackets after the name looks better when composers are listed, in my view.

Note that Muso has a composer roster – check that composer names are consistent with this (or add them if absent from the roster).

Band (Band; Orchestra; Chorus) {Base}
Sourced from:- Web-sourced metadata + user modifications.
On Ripping, the dBpoweramp action (see "Resources") is designed to combine Band, Orchestra and Chorus into one Band tag in the format “Band; Orchestra; Chorus”. Modify either the source tags in dBpoweramp or the Band tag in Mp3tag (or Muso) as needed.

Conductor {Base}
Sourced from:- Web-sourced metadata or user.
Conductor's full name. Further role attributes can be included in brackets, e.g. “(choirmaster)”. Separate multiples with semi-colons.

MainPerformer {Custom}, {Base}
Sourced from:- Automatically from Artist on ripping.
The main artist for the track as First Name(s) Last Name. Not Band or Conductor here (possible exception if the conductor is also playing as lead artist/director). This populates the Artist field in Muso, with the addition of Instrument in brackets. If the Muso Artist field is modified and exported, the Mp3tag “Classical” action will update the base MainPerformer tag (and also the Instrument tag). Separate multiples with semi-colons.

Instrument {Base}
Sourced from:- Web-sourced metadata or user.
The instrument (or voice) of the MainPerformer, if relevant. If more than one MainPerfomer, then list instruments/voices in the same order as the Main Performers, separated by semi-colons. If amending this in Muso, change the instrument in brackets after the artist's name, rather than the extended field called "instrument"  

SupportPerformer {Custom}, {Base}
Derived from:-  Web-sourced metadata or user.
Name of any soloists or other featured individuals other than the main performer (separate by semicolons). Include instrument/voice in brackets if required after each performer’s name. Note that the performers’ instruments will appear in the display of the performers’ names but that the “Classical” Mp3tag action creates a sort key which excludes them, so the sort order should be correct. Note that this tag is combined with MainPerformerInst to create the TrackArtists tag used in LMS.

Artist {Derived}
Sourced from:- Web-sourced metadata initially, then modified.
Before ripping, this should be set to be the main performer(s) (without instruments in brackets – use a separate Instrument tag for these). The tag is copied to the MAINPERFORMER base tag on ripping. Subsequently, Artist is derived from MAINPERFORMERINST (Main Performer with instrument in brackets – the instrument data is gathered by the “Classical” action from the Instrument tag). If MAINPERFORMER is blank, then Artist will be set to BAND or, if that is blank, to COMPOSER. (Leaving Artist as blank causes LMS to display “No Artist” on SB’s / iPeng etc.). Note that the Artist field in Muso comes from MAINPERFORMERINST and will therefore be blank if there is no Main Performer.

MainPerformerInst {Custom}, {Derived}
Derived from:- Automatically from MainPerformer and Instrument
Format: “MainPerformer (Instrument)”. Multiples are catered for, so long as there are no more than ten and there are an equal number of MainPerformers and Instruments.  Used to populate the Artist tag and the Artist field in Muso.

Performer {Derived}
Sourced from:-  SupportPerformer
Kept as a separate tag in case it needs to be different from SupportPerformer in the future. Used to feed Muso Performer field.


Profile {Custom}, {Derived}
Sourced from:- Automatically from Mp3action.
Indicates the name of the action used to create all the derived fields. Can be useful if automatic retagging required.

CDName {Custom}, {Derived}
Sourced from:- Automatically from Album.
This is then not modified and may be used to restore the original album name if it is modified.

Work and GroupHeading {Custom}, {Derived}
Sourced from:- Automatically by Mp3tag action from Title
Any words in Title and before the first single colon. (See Title tag for details). This populates the GroupHeader field in Muso (which then splits out any SubHeader). It can be amended in Muso and will update the Title field on export.

Opus Group {Custom}, {Derived}
Sourced from:- Automatically by Mp3tag action from Title
Any words before a double colon in Title. (See Title tag for details). This is not used as a tag per se and is only in the panel to show how the Muso display will appear so that the Title text can be checked / amended as necessary.

Opus {Custom}, {Derived}
Sourced from:- Automatically by Mp3tag action from Title
Any words after a double colon (if any) in Title and before the first single colon. (See Title tag for details). This is not used and is only in the panel to show how the Muso display will appear so that the Title text can be checked / amended as necessary.

Movement {Custom}, {Derived}
Sourced from:- Automatically by Mp3tag action from Title
Any words after the first single colon in Title. (See Title tag for details). This is not used as a tag per se and is only in the panel to show how the Muso display will appear so that the Title text can be checked / amended as necessary.

DiscNumber {Base}
Derived from:- CD ripper.

OTHER (EXTENDED) TAGS

SupportPerformerSort {Custom}, {Derived}
Derived from:- Automatic from SupportPerformer.

PerformerSort {Custom}, {Derived}
Derived from:- Automatically from Performer
Set automatically to the “Last name, First Names” of the relevant contributor by the “Classical” Mp3tag action. Multiples are catered for.

ArtistSort {Derived}
Derived from:- Mp3tag action.
If created on ripping, this is overwritten, so don’t worry about it. It is set automatically to the “Last name, First Names” of the MainPerformer by the “Classical” Mp3tag action. Multiples are catered for.

ComposerSort, ConductorSort, AlbumArtistSort {Derived}
Derived from:- Automatic from Composer, Conductor, AlbumArtist
Set automatically to the “Last name, First Names” of the relevant contributor by the “Classical” Mp3tag action. Multiples are catered for.

BandSort {Derived}
Derived from:- Automatic from Band
Just removes any leading “The” to create the sort key.

TrackArtist {Derived}
Derived from:- Automatically from Performer and MainPerformerInst.

TrackArtistSort {Custom}, {Derived}
Derived from:- Automatic from TrackArtist

The sort keys mentioned above are all available now within the latest version of LMS (and therefore, via import, to Muso) except for PerformerSort, SupportPeformerSort and TrackArtistSort. Those tags will typically hold lists of artists followed by their instrument in brackets. The sort order will therefore typically by first name. This can be fixed to be last name, if required, by applying a patch to LMS to also read TRACKARTISTSORT. See the sundry jottings tab for more details.

Muso now allows direct import of custom sort keys for each of the six “roles”, so the LMS constraint is no longer an issue for Muso.

Orchestra {Temporary}
Derived from:- Web-sourced metadata.
This is only used in web-sourced metadata on ripping. The ripping macro adds it to the Band tag.

Chorus {Temporary}
Derived from:- Web-sourced metadata.
This is only used in web-sourced metadata on ripping. The ripping macro adds it to the Band tag.

Note: there are several other tags which generally need not be viewed or checked. Using the Mp3Tag “Extended tags” view provides access to them if required.

This section sets out my process for ripping, retagging and importing classical music.

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, even if you want to go for the “bells & whistles” approach, I strongly recommend you do the simple approach first – import your music to Muso, review and edit it there. However, there is one difference from the pure simple method: Before you import the music set up one custom import tag (Custom10) as described under “Muso” in the Resources section. Then, after you have edited them in Muso, export the tags and run the “Classical” action in Mp3tag (this may take some time if you have a large library). This method also applies if you are seeking to convert from the “simple” to the “bells & whistles” approach.

Step 1: Rip the CD's

Read the CD, using dBpoweramp CD Ripper. It will be ripped to a folder 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).

NB: Before ripping it:

  • Amend Album name, if necessary, to follow the scheme suggested for this tag. Do not include Disc number in the album name - this is a separate tag.
  • Scan artwork if you can’t get it from the web.
  • Review metadata and ensure consistency with metadata rules (see above).
    • Make sure that Genre is correct and that Title is in the format "Opus: Movement" or “Magnum opus::Opus: Movement”.
    • Make sure that multiple disc sets have the right discnumber tags.
    • Add metadata where missing - usually this means Period and Instrument.
    • Make sure the Album Artist is blank unless you want to over-ride Muso’s logic.
    • Make sure the compilation flag is only ticked if appropriate (i.e. a mix of several artists and composers).

 

First time around, set up a new “DSP / Action” in dBpoweramp – select “ID tag Processing” and enter the required tag mapping / manipulation - full details of this are given in the Resources – Configuration section. Replaygain and other effects can also be applied as required.

Rip the CD.

*************

UPDATE March 2017

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.

*************

Step 2: Review and amend the metadata

Use Mp3tag to review the metadata. Set up the panel to view all the important fields. This makes everything quicker. If you use my Mp3tag configuration, it will provide this panel for you. In particular, check that the main artist appears as "MainPerformer" and not also as "Performer". Check "Period" and "Instrument" tags are present and correct, if required. Note that the Main Performer should be entered without their instrument, which should be included in the Instrument tag (multiples should be in the same order, separated by semi-colons). If necessary put supporting performers in the "Performer" tag separated by semi-colons and with instrument/voice in brackets: "Peformer1 (Instrument1); Performer2 (Instrument2)". Put any missing arranger into the "Composer" tag as required. These last two steps are of course optional and can always be added later, but it's natural do them at this stage.

IMPORTANT - make sure you save before selecting other tracks - Mp3tag does not remind you to do this!

Run the “Classical” action. A quick check is advisable to see if the tags are what you expected. If not, you can undo.

Note that the action is (hopefully) designed such that integrity is maintained even if it is run multiple times (i.e. no duplicated tags etc.). Also note that all tag names (i.e. the names of the tags themselves, not their contents) are capitalised to prevent inconsistency problems. For details of the action see the Resources section.

Step 3: 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 MP3 iTunes library to provide portability. Scan the FLAC files into the LMS library. This is also set up as the "Shared Database" in Muso: assuming the main music library is on a shared drive, place the folder with the ripped files in the library and set Muso to use the shared database.

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.

Step 4: 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.

Step 4a) Use dBpoweramp Music Converter to convert files to mp3. Note that some processing of tags is required to achieve the desired result (see the Resources section for details).

Step 4b) 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 Opus.

Step 4c) 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.

Step 4d) (Optional, if you also want to use Muso to play the mp3 format library on the local machine) In Muso options, switch to the "personal database". Import the mp3 files to Muso using "import specific folder" and the similar import actions as for the FLAC files. NB mp3 tag fieldnames are fussy about capitalization, unlike FLAC tags, so all the mp3tag actions finish with one to make sure that the capitalization of the fieldname is UPPERCASE - note this refers to the fieldname, e.g. COMPOSER, not its contents, e.g. Franz Lizst. This should have been done by the earlier actions, but is an easy fix in mp3tag if not - use a case conversion action on _FIELDNAME. Check that it looks right in Muso.

************

UPDATE March 2017: Apple have (finally!) introduced tags to handle classical music works and movements. These are:

  • Work
  • Movement Name
  • Movement Number
  • Movement Count
  • Show Work Movement

These tags only work with the .m4a file type. To make use of this you need to:

(a) Use the latest Mp3tag "Classical" action - this has two changes from the previous version - to create a tag MOVEMENT NAME which is the same as the MOVEMENT tag it creates and to create a tag SHOW WORK MOVEMENT =1 if there is a non-blank WORK tag. Note that it does not create Movement Number or Movement Count - iTunes does not need these to show the work and movement properly, but if it has them it will add them to its display (double display of movement number will occur if it is also in movement name).

(b) Use dBpoweramp Music Converter to convert files to m4a (you may need to download an extra converter for this). Use the same tag processing as for the mp3 converter.

***********

Subsequent maintenance

In all probability you will spot errors or want to make some changes/additions to metadata tags at a later date. This can be done in two ways. Either

  • use Mp3tag to make the changes to the underlying files (follow the rules described for the tagging scheme). After making the changes, run the “Classical” action and re-import to Muso / rescan in LMS. If you are importing direct from the folder, you will need to set the options to over-write Muso’s tags.
  • or, change the tags in Muso (this is a bit more user-friendly). Note that the main instrument(s) appear twice – in brackets after the Main Performer(s) (in the “Artist” field) and also in the custom “Instrument” field on the extended tags page. The one to change is the one in brackets in the Artist field on the main page – the custom tag will be re-created from this by the “Classical” action unless there is/are no instrument(s) listed after the Main Performer(s). Write the changed tags to the underlying files, run the “Classical” action and rescan in LMS. You may need to re-import to Muso to pick up any new sort keys.

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

Software

You will need the following 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. Other software may do the same for less cost but you may not be able to configure it in the way that I describe.
  • 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 absolutely essential and central to the whole scheme. Cost (March 2017) is €20 from http://klarita.net/muso.html.
  • Mp3tag. Currently free (donations encouraged) from http://www.mp3tag.de/en/index.html. There is other software which can do some of the same things, but Mp3tag is very powerful and can carry out complex automated scripts, which are provided here. Otherwise you are on your own.
  • 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 (free) apps. Muso also includes a web-based remote control which is great for just seeing what is playing and accessing any sleevenote pdf files. I also like to use VNC so that I can access Muso on the desktop directly from my iPad.

If you also want to play standalone on the iPod Touch player then you will need:

  • iTunes (free) on the PC.
  • 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.
  • Deprecated March 2017 [Music player on the iPod (of course), but you may also like the "Classical Music Fan" app which is free and gives more information than the basic app.]
  • Update March 2017: If you have the latest iOS on your iDevice and you use the new iTunes classical music tags (see Step 4 in "The process") then the works and movements will be properly displayed using the native player.
  • dBpoweramp includes an mp3 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 in the (rough) sequence set out in the Process section.

dBpoweramp CD Ripper
Firstly read the help files carefully and set up the ripping options as recommended. Under "Options" set up the Metadata and ID tag options to write ID tags for all the required fields such as Composer, Conductor, Orchestra, Chorus, Soloists, Period, Instrument etc.

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 and add ID tag processing as follows:

  • Map: Album to CDName, Soloists to Performer, Artist to MainPerformer, Orchestra to Tempo, Chorus to Style (the last two are just used as temporary tags in the manipulation stage as custom tags cannot be used there);
  • Deletions: Soloists and SoloistsSort (to prevent duplication with Performer);
  • Manipulation: Add the following “Rule Based Mapping”

IF Band=
SET Mood=

IF Band=[anyvalue]
SET Mood=Band

IF Tempo=[anyvalue]
SET Mood=[mood]Orchestra

IF Style=[anyvalue]
SET Mood=[mood]Chorus

IF Mood=BandOrchestra
SET Band=[band]; [tempo]

IF Mood=BandChorus
SET Band=[band]; [style]

IF Mood=BandOrchestraChorus
SET Band=[band]; [tempo]; [style]

IF Mood=Orchestra
SET Band=[tempo]

IF Mood=Chorus
SET Band=[style]

IF Mood=OrchestraChorus
SET Band=[tempo]; [style]

IF Tempo=[anyvalue]
SET Tempo=

IF Style=[anyvalue]
SET Style=

IF Mood=[anyvalue]
SET Mood=

The effect of this is to combine Band, Orchestra and Chorus in that order, separated by semicolons, into a single Band tag. It is a bit convoluted, but the dBpoweramp macro language is rather restrictive.

*************

UPDATE March 2017

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.

*************

Mp3tag
The “Classical” action is required. The zip file (latest version, including iTunes classsical music tag support, available to download here) needs to be extracted to your Mp3tag folder (copy the "data" folder into your program folder). The location of this folder will vary. The easiest way of locating it is to save your current configuration (File menu in mp3tag) – you should do this anyway so that you can go back to it if you wish. There will then be a message telling you the required location for importing. Included in the zip file are a panel layout for Mp3tag and also the "Classical" action. Further actions to process downloads from publishers which use a consistent tagging scheme may also be included and more might be made available over time (see Menu Item “Music Publishers”).

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, map the fields as follows. Do not mark imports as “conditional”, otherwise the LMS defaults (Band / Composer) will be used to fill “Artist” if there is no Main Performer:

  • Artsist := #MAINPERFORMERINST
  • Custom1:= #INSTRUMENT       Title in Muso = Instrument (To allow browsing by this)
  • Custom2:= #PERIOD               Title in Muso = Period (To allow browsing by this)
  • Custom10:= v2017                  Title in Muso = ImportVersion (To flag the import mappings version used and also so that Mp3tag knows when a track has tags exported from Muso).

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. However, running the “Classical” action in Mp3tag will correct any standard tags, and process the custom tags, so always do this if you “write tags” from Muso as it will give the corrected tags their sort keys and provide them to LMS in a consistent way. Muso is rather more user-friendly than Mp3tag when editing just a few tags. To run the Mp3tag action after editing and writing in Muso, select “Browse Folder” from the Muso Album page, go up one level and right click the folder and select “Mp3tag”. Then select all the music files and run the action.

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: MAINPERFORMERSORT, AlbumArtist: ALBUMARTISTSORT, Band: BANDSORT
Performer: PERFORMERSORT, Composer: COMPOSERSORT, Conductor: CONDUCTORSORT

dBpoweramp Music Converter (only needed if you want a standalone portable iTunes library)
I convert to [mp3 using variable bit rate quality] 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]

Note: You could use Album rather than CDName for the folder name. Mostly they will be the same, but if you have changed the Album name then CDName will most closely correspond to the folder name into which you originally ripped the disc. You can use MP3tag to check if there are any differences between Album and CDName by entering the following in the filter bar: "$if($eql(%cdname%,%album%),yes,no)" IS no

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

  • Map:
    • WORK to Style. Note that iTunes then maps Style to ContentGroup. (Update March 2017 - Still needed even with new iTunes tags)
    • ALBUMARTISTSORT to "Album Artist Sort".
    • ARTISTSORT to "Artist Sort"
    • (Note iTunes uses ComposerSort without any spaces, so no need to map this - hmm!)
  • Deletions: ALBUMARTISTSORT and ARTISTSORT
  • Manipulation->Rule-based manipulation: Add the following to prevent iTunes splitting up albums which have different artists (hmm hmm!!):
    • IF ALBUMARTIST=
    • SET COMPILATION=1
    • IF ALBUMARTIST=
    • SET Album Artist=
    • IF ALBUMARTIST=[anyvalue]
    • SET Album Artist=[ALBUMARTIST]
    • IF ALBUMARTIST=[anyvalue]
    • SET ALBUMARTIST=

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).

iTunes Library Toolkit
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 opus)".

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

Creating sort keys for tags with multiple entries:

Say you have a tag "Artist1FirstName Artist1LastName; Artist2FirstName ...etc" (with the semi-colons denoting the multiple entries). I got really into using recursion in regex, before giving up and just implementing a two-entry solution with:
Match on: ([^;]*)s([^;]*);?s?(([^;]*)s([^;]*);?s?)?$
Replace with: $2, $1$if($eql($3,),,; ($5, $4))
and then stripping out the unwanted brackets (caused by needing to put a comma in the substitution entry).

Then I realised that the simple answer is just to use the "split field" action, do a simple regex on the duplicate fields (only needs to be specified once as it acts on all instances) to create the sort keys and then merging the duplicates back together again. Thankfully the order of the entries seems to be maintained in this process.

Matching artists to their instruments:

A similar problem was caused by my desire to make a field MAINPERFORMERINST which included the main performer followed by their instrument in brackets. The problem arose (similarly to the above) when there were multiple artists. Admittedly this is rare, since normally the supporting artists would be in the PERFORMER field (complete with their instxruments). Trios and quartets usually have a BAND tag. However, duets (e.g. a cello sonata, with piano) where both instruments have equal prominence seems to be best catered for by using two artists (in the MAINPERFORMER tag) and two instruments (in the INSTRUMENT tag). Assuming the tag you start with is in the format "Artist1; Artist2 (Inst1; Inst2)", this can be dealt with in regex as follows:
Match on: ([^;]*);s?([^;]*)s?(([^;]*);s?([^;]*))$
Replace with: $1 ($3); $2 ($4)

To date, I can't find a neat way of doing this for an indeterminate number of artists. The field splitting method does not work as you need to use a Format Value action on the new MAINPERFORMERINST field (which can be created with multiple values by copying the MAINPERFORMER tag then splitting), but this only operates the first instance.

UPDATE: A solution which handles multiple artists (up to ten) has been provided via the Mp3tag forum. Basically, to split the MAINPERFORMER and INSTRUMENT fields then format the MAINPERFORMERINST as:
$trimRight($meta(MAINPERFORMER,0)' ('$meta(INSTRUMENT,0)')'$meta(MAINPERFORMER,1)' ('$meta(INSTRUMENT,1)')'$meta(MAINPERFORMER,2)' ('$meta(INSTRUMENT,2)')'$meta(MAINPERFORMER,3)' ('$meta(INSTRUMENT,3)')'$meta(MAINPERFORMER,4)' ('$meta(INSTRUMENT,4)')'$meta(MAINPERFORMER,5)' ('$meta(INSTRUMENT,5)')'$meta(MAINPERFORMER,6)' ('$meta(INSTRUMENT,6)')'$meta(MAINPERFORMER,7)' ('$meta(INSTRUMENT,7)')'$meta(MAINPERFORMER,8)' ('$meta(INSTRUMENT,8)')'$meta(MAINPERFORMER,9)' ('$meta(INSTRUMENT,9)')',' ()')')'

Admittedly this is still a solution for only a maximum of 10 artists, but it will handle any number between 0 and 10.

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

A few odd 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 which in some systems maps to Album Artist, causing endless confusion.
  2. 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.

To Do

The present scheme is a bit unsatisfactory if there is no main performer or band - i.e. a group of performers with no named lead. In these circumstances, the LMS artist is set to composer (assuming that is not also blank). It might be better to create a "virtual" band from the named performers - in which case the LMS artist would be set to this.