Dissecting classical titles into custom tags

Let me begin by admitting that I’ve not yet read the documentation for Classical Extras 2.0 so if this is covered in there, just reply “RTFM” and I’ll get the point.

I’m wondering if there’s a clever way to copy/move information from the titles of classical music works into custom tags.

Using this an example:
Symphony no. 9 in D minor, op. 125 “Choral”

I’m looking for a result like this:

(WorkType): Symphony
(WorkNo): 9
(Key): D minor
(Opus): 125
(SubOpus): None on this case
(WorkAlias): Choral

Classical Extras seems to have the work type covered, in this case “Symphony”, and the key is handled by Picard by default, so all that’s left is the work number, opus and alias (if it exists). I did write an awful looking tagger script for this but it only work semi-well in cherry-picked examples. I’m not skilled enough to handle cases where for example the alias included a comma beyond the one that’s present before the opus.

Has anyone done anything like this before? Are there scripts or plugins that could accomplish this?

1 Like

Personally I think this currently can not be achieved.

It might help ‘pinging’ @MetaTunes on this thread and it’s questions.
As the creator of the Classsical Extras plugin, he’s probably the definitive authority on the matter.

I suspected as much and it’s really not that big of a deal. I was mostly throwing different approaches around in my head. I’ve begun reading the documentation for the plugin and already I solved some of my issues. I’m starting to center around a system that works for me and it should come together nicely.

Thanks for the ping @hiccup. It might be possible to add something into Classical Extras for this. It already looks for opus numbers as part of its process for elimination of duplication between MB works names and track titles. So there is some regex already in there and it may be possible to spit out a hidden variable or tag, although it may not cover all opus description types. The regex is

regex = re.compile(
r’\b((?:op|no|k|kk|kv|L|B|Hob|S|D|M)|\w+WV)\W?\s?(\d+-?\u2013?\u2014?\d*\w*)\b’,
re.IGNORECASE)

1 Like