Classical Extras 2.0

@cngcng Some examples, and a bit more…

Any extra dates that you may want that are outside of the “officially defined” date related tags you’ll need to create yourself. These are the basic ones:

copyright • Should begin with YEAR, followed by comments/details.
date • Date of release of this specific track/cut
originaldate • Release Date (YYYY-MM-DD) of the earliest release
originalyear • Release year of the earliest release

You can create any other tag you want, so if you have a different category / type of date that you want to track/see in the filename, just assign them and script them into the File Naming.

So if you wanted to have the performance date and location for this particular track in your filename, you’d just create a tag for that, set it’s value, use the value when saving and it will happen.

As an example:
In a Tagging Script you would create / set your tag. These creating / setting various custom tags. (any name you want, as long as it’s not an official one. There is no checking. The scripts just do exactly what they’re told to do.)

In these examples, there is already a value of that particular tag there, it just leaves it alone. So you’re not overwriting any existing stuff. Otherwise it will create it.

$set(boxsettitle,$if2(%boxsettitle%,The Title of Your Big Box of Discs))


$set(alttitle,$if2(%alttitle%,Symphony of Fate))

Now you probably wouldn’t set examples of these types as final values since these are things are are likely different at the track level. So in that case, if you want to add these tags to files as place holders, where they’re not there already, as I noted, doing it like that, will not over-write an existing one.

$set(boxsettitle,$if2(%boxsettitle%,Box Set Title))


$set(alttitle,$if2(%alttitle%,Alternate Title Placeholder))

If you want to just replace whatever value is already there outright:

$set(title,Title Holding place)

If you want to append to what’s there already, using the comment tag as an example since it’s one you might want to add to.

This will add to the end of what is already there
$set(comment,%comment% Additional Text... )

This will add to the beginning of what is already there.
$set(comment,Additional Text... %comment%)

This will use the filename as the title if there is not a title tag already

Here’s an example of setting a whole bunch of stuff as if you were putting together a top 100 for whatever year/month/day/minute… Again, this will only add if there is not already a value there. These are officially documented tags.

$set(album,$if2(%album%,A2 Airwaves Top))
$setmulti(releasetype,$if2(%releasetype%,album; compilation))
$set(artistsort,$if2(%artistsort%,A2 Airwaves))
$set(albumartist,$if2(%albumartist%,Various Artists))

This will strip “garbage” from titles that may be there because you used the filename as the title tag if there was not one there:

$set(title,$replace(%title%,_, ))
$set(artist,$replace(%artist%,_, ))
$set(title,$replace(%title%,-, ))
$set(artist,$replace(%artist%,-, ))

$replace($if2(%albumartist%,%artist%)-$title(%album%)-$if(%media%,$if($gt(%totaldiscs%,1),%totaldiscs%,)%media%-,) $if(%date%,$left(%date%,4)), ,_)

Then in your File Naming script you would use as desired:
%boxsettitle%/%title% - %copyright% - %date% - [%originaldate%]
to build your filename.

After that script runs/you’ve saved your files, you’d see:

If all these tags had values, this would give you a directory titled:
My Great Big Box of Music

With a file named:
My Track Title - Whatever Copyright - 1977-05-04 - [1976]

I’m having trouble with one particular release: For some reason that is completely unclear to me, the plugin is not pulling any data at all. Other albums work flawlessly. I’ve tried completely removing Picard and reinstalling it and the plugin but no luck. Here’s the debug log for one track. There’s no obvious error message or warning in any of the logs.

B: 2021-01-21 20:19:35.567925 : -------------------- Debug log --------------------
B: 2021-01-21 20:19:35.567925 : STARTING WORKS PROCESSING FOR ALBUM The Complete Warner Recordings, DISC 1, TRACK 1 Violin Concerto no. 1 in D major, op. 6: I. Allegro maestoso
B: 2021-01-21 20:19:35.567925 : Cache setting for track <Track 1ee75f15-aa1c-44b1-a6db-17852b42362a 'Violin Concerto no. 1 in D major, op. 6: I. Allegro maestoso'> is False
B: 2021-01-21 20:19:35.567925 : Workparts gets track first...
B: 2021-01-21 20:19:35.567925 : PartLevels - LOAD NEW TRACK: :<Track 1ee75f15-aa1c-44b1-a6db-17852b42362a 'Violin Concerto no. 1 in D major, op. 6: I. Allegro maestoso'>
B: 2021-01-21 20:19:35.567925 : Check for last track. Requests = 0, Tracknumber = 1, Totaltracks = 4, Discnumber = 1, Totaldiscs = 77
B: 2021-01-21 20:19:35.567925 : STARTING ARTIST PROCESSING FOR ALBUM The Complete Warner Recordings, DISC 1, TRACK 1 Violin Concerto no. 1 in D major, op. 6: I. Allegro maestoso
B: 2021-01-21 20:19:35.567925 : Artists gets track first...
B: 2021-01-21 20:19:35.567925 : ExtraArtists - add_artist_info
B: 2021-01-21 20:19:35.567925 : In get_artists. relation_type: release, relations: [[{'direction': 'forward', 'end': None, 'begin': None, 'url': {'resource': '', 'id': '8549c038-05c7-49d9-bdf2-015da877612c'}, 'type': 'amazon asin', 'ended': False, 'attribute-values': {}, 'attributes': [], 'target-credit': '', 'target-type': 'url', 'type-id': '4f2e710d-166c-480c-a293-2e2c8d658d87', 'attribute-ids': {}, 'source-credit': ''}, {'url': {'resource': '', 'id': '95eae820-d436-4a8b-a7a7-9e220ca27ccb'}, 'begin': None, 'end': None, 'direction': 'forward', 'source-credit': '', 'attribute-ids': {}, 'type-id': '4a78823c-1c53-4176-a5f3-58026c76f2bc', 'attributes': [], 'target-credit': '', 'target-type': 'url', 'ended': False, 'attribute-values': {}, 'type': 'discogs'}, {'target-credit': '', 'target-type': 'url', 'attributes': [], 'attribute-values': {}, 'ended': False, 'type': 'purchase for download', 'attribute-ids': {}, 'source-credit': '', 'type-id': '98e08c20-8402-4163-8970-53504bb6a1e4', 'end': None, 'direction': 'forward', 'url': {'id': '9d8b265a-c581-418c-aa7a-d7751378699b', 'resource': ''}, 'begin': None}, {'target-type': 'url', 'target-credit': '', 'attributes': [], 'type': 'purchase for mail-order', 'attribute-values': {}, 'ended': False, 'attribute-ids': {}, 'source-credit': '', 'type-id': '3ee51e05-a06a-415e-b40c-b3f740dedfd7', 'end': None, 'direction': 'forward', 'url': {'id': '800479c0-00ba-4508-ae24-6ffbf7ded9e6', 'resource': ''}, 'begin': None}]]
B: 2021-01-21 20:19:35.568926 : Getting recording details
B: 2021-01-21 20:19:35.568926 : In get_artists. relation_type: recording, relations: []

For particular huge releases like this the MusicBrainz web service does not send the detailed relationships per track to avoid timing out and sending nothing. AFAIK there is no good workaround for this.

1 Like

That’s a shame. Being able to load a subset of discs would be great, but I imagine that would require changes to Picard itself, not just the plugin.

It would require first and foremost changes the MusicBrainz server API.

1 Like

Well I’m new and posted this problem, but I think may be it’s here the correct place to solve the problem.

I wanted to have the composer last name at the beggining of “tiltle” (1) and if there is an orchestra, add the “band” at the end of the title keeping the composer last name at the beggining (2). Also it could be nice if that could be alternate with conductors 3, etc.

  1. Mozart, title

if there is and Orchestra

  1. Mozart, title, Orchestra

  2. Mozart, title, Orchestra, conductor

I have used the Tagg Mapping in this way:

The problem is when I have a “composer_lastnames” but no “band” or “ensemble_names”.

If I unchek the condicional, it repetes the “title” in the tracks with band like this:

But I would like to have only one string with “title”, and no to individual select the second one each time.

Thanks in advance for the help.

I’ve raised this problem before, but I don’t think there is much chance of it being fixed. Classical Extras does need more data than vanilla Picard, so sometimes Picard appears to work OK but CE does not. As @outsidecontext says, it is an issue with the webservice.


Did you blank the title tag before filling it (at the top of the tag-mapping page)?CE blank tags

1 Like

@MetaTunes I am also finding the Options Page unusable on Dark Theme - any chance you can update the options page to use the standard Picard colour palette i.e. as shown in Options / User Interface / Colours and switching depending on Light / Dark theme?

This (Musicbrainz dropping relationship data on large releases) is fixable - it is a Simple Matter of Programming Effort in order to queue and process additional requests for relationship data that is dropped by MusicBrainz webservice on these large releases. Whether it is worth the effort needed, and whether it will actually be done, is a different matter.

I’ll look into that. My head is full of PHP at the moment, so I need to press a reset button for Python :slight_smile:


1 Like

Composer(s) Magnus Lindberg not found in reference database of classical composers
This is the entry:
> Magnus Lindberg
> Lindberg M
> 1958
> false
Original in XML
Other composers are found.

In the ‘period’ map you can specify the dates for a period.
And it says that dates may overlap.
Could you elaborate a little bit what happens to works that have a composition date that overlaps between two different date periods?


In the first track of this release, classical extras produced below error.

  1. Found parent which which is descendant of child - not using to prevent circular references. id = 9b1bd955-8635-43e6-9711-f2b820ffe8b8, name = Tannhäuser und der Sängerkrieg auf Wartburg, WWV 70

I checked the work relationship of the track and I confirmed it doesn’t have the circular reference.
The classical extra seems to produce this error if a track has two different level of work relationships to the top work.
In this case, the first track has both the relation to the overture of Tannhäuser (one level down of Tannhäuser ) and Bacchanale of Tannhäuser Act I. Scene I (Three level down of Tannhäuser).
Could you check this?


I have been running into several bugs with Classical Extras for some time. I have found a release where I can trigger them easily.

  1. The performer vocals credit “ビートまりお” is instead coming down as “Beat Mario”
  2. The performer vocals credit “大瀬良あい” is instead coming down as “あい”
  3. The performer vocals credit “ななひら” is instead coming down as “Nanahira”


Could you let me know which tracks you are talking about, please.

Hi @MusikBaum. I’m not sure what the query is here. The plugin does not maintain the reference database of composers. Could you provide more context please.

Sorry for the late response @hiccup. You probably guessed that the work will get a tag for both periods (or, at least, that’s what I think should happen).

1 Like
  1. Disc 1 track 2: The performer vocals credit “ビートまりお ” is instead coming down as “Beat Mario”
  2. Disc 1 tracks 1–5, 7–13; Disc 2 tracks 2, 8, 11: The performer vocals credit “大瀬良あい ” is instead coming down as “あい”
  3. Disc 2 track 3: The performer vocals credit “ななひら” is instead coming down as “Nanahira”

Hi @cngcng. Sorry for delay looking into this. I suspect that the problem may be caused by the track being a recording of two works. It’s quite a complicated one, but I will try and see what is happening.