Classical Extras 2.0

As MetaTunes already said, having some concrete example would help a lot understanding the exact issue. When you are testing this, show us which release you used, how the instruments show up for you and how you would have expected them to be.

1 Like

Thanks the both of you for trying to help with this.
But it looks like I am incapable of bringing across what I am trying to achieve.
And/or I have a serious misunderstanding about the relation between these hidden variables and the regular performer/instrument tags.
The towel is in the ring.

I’m not renowned for throwing in the towel, so I’ll have another try.
Regardless of option choices:
_cea_instruments holds the standard MB instrument names
_cea_instruments_credited holds the credited instrument names
_cea_instruments_all holds them all

The instruments for each performer are the standard MB names if ‘Use “credited-as” name for instrument’ is not checked and is the credited-as name if it is checked.

All that is fairly obvious.

The tricky bit (that I think is causing your difficulty) is that, with certain settings, Picard will create one tag for each performer/instrument combination. CE does not do this - by default it will create instrument groupings resulting in a small number of tags. However, if you replace “True” by “False” as previously discussed, then it should separate the tags into single performer/instrument pairs.

So, AFAIK, to get the exact same performer tags as you were getting in “vanilla” Picard, you need to change “True” to “False” and uncheck ‘Use “credited-as” name for instrument’.

BTW, there is another hidden variable that might be helpful - _cea_performer_names_instrumented. This will list all the performers with their instruments (repeated if True changed to False and with standard MB names or credited-as names depending on the option choice).


This much dedication should not let go to waste.
So I started with a spanking new portable install and testing.
And I tried to see if I could do some things differently as from I remembered from my earlier tests.

I now get better results. Not ideal yet, but an improvement for sure.
Could it be related to this?:

In my previous testing I disabled the tab Works and Parts.
Because in my mind they had nothing to do with instruments, and I would like works and titles etc. completely untouched.

Could it be that this is a factor indeed, and should Works and Parts be left enabled for this?

I am not sure if this text of yours in another thread is in a way related to what I am trying to achieve with ‘cea_instruments’, but it is describing a bit how I was expecting how thing would/could work:

It should work fine with Works and Parts disabled, according to my tests.

Note that the ‘instruments and keys’ panel of the ‘Genres etc.’ tab will run with just ‘extra artist data’ enabled, and the defined tag for instruments (per that panel) will be filled as specified by the options below it (MB name, credited names or both).

_cea_instruments, and the related variables as I described, should deliver what you want. I was talking in that thread about adding additional data that is not currently exposed by Picard or CE. What I have in mind is adding all additional recording attributes as hidden variables. I need to spend a bit of time loooking at the database schema to pick these up. All of these variables should also be available without running ‘works and parts’

1 Like

Apropos the discussion above and at Please help me grab "recorded at", it appears that there are a great many potential attributes of recording. To see these, look at and the entries for the “Recording” row. There are so many that I doubt I will be able to do more than scratch the surface. If anyone has any particular requests (other than the already-requested ‘recorded at’ which is part of Place-Recording), please let me know.

Yeah, I got that. I was referring to the similarity between what I was expecting when I started this quest, and what was requested in that thread, and the suggestion what you might try for it: making hidden variables available without requiring any CE settings.

Anyway, I think enough information has now been shared and explained well enough.
I’ll see if I can tweak things further to make this work for me.

Thanks for all the support, explanations and considerations.

If possible, I would like to get the recording date for tagging.
Some conductor and orchestra have the same recordings in different years and I feel hard to distinguish them without recording date.


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