An idea for an isClassical plugin (and isJazz etc.)

My music directory structure starts with a high-level basic genre - Classical / Jazz / Pop / Spoken / Soundtrack.

You can determine Spoken / Soundtrack from the Release Group type. But Classical/Pop/Jazz are more difficult because there is no official metadata for these major groupings. Genre would the be obvious location, but in MusicBrainz genre is a tag-based system rather than an official, curated, voted metadata.

So anyway, I have an idea for a plugin - but development is non-trivial and I don’t have time. The basic concept is this:

  1. We identify a list of classical artists - composers or performers who only do classical works - and include this list (MBIDs as an internal list, artist sort name as user friendly list).

  2. Any album who has one or more of these artists in the albumartists metadata is flagged as Classical by setting variable _isClassical to 1.

The challenge is to produce the list of artists!!

Enhanced functionality would include:

a. Visibility of this list in a table on a plugin Options page.
b. Ability to search for (a subset of) artists
c. Ability to mark a system provided artist as disabled.
d. Ability to add a user provided artist - by MBID? using green tagger button in browser?
e. Comparison of current plugin version at startup with version at previous startup, and if greater to trigger a background, intelligent merge of the old list with the new system list (preserving disabled entries and keeping manually added entries even if they were later provided as system entries and then removed as system entries).

Even more advanced functionality:
i. Submit manually added artists to a Rest API somewhere - with a privacy option to enable / disable this.
ii. Submit artists whose plugin sort-order name is different to the albumartistsort name to the Rest API (to indicate a name has been changed in the MB artists list.

This would allow a regular update of the plugin list by an autogenerated PR.

Once isClassical plugin is working well, we could use the same code to generate an isJazz plugin etc.

So - two reasons I have posted this idea:

A) To see whether people think this idea has merit and see it prompts anyone to come up with a better idea or alternative approach.

B) To see whether there are any volunteers to code this (as I don’t have any time for any coding at present, and as and when I do get time, I have higher priority items on my to-do list).



I am wondering whether, for classical genres, this might actually be a simple enhancement of @MetaTunes Classical Extras plugin.

Classical Extras has some handling of XML files including composers - so it might not be that difficult to achieve this by providing an extra XML file containing a standard list of composers and performers that might indicate that a release is a Classical one.

Mark - what do you think?

My alternative approach is that I have several portable installs of Picard.
So e.g. I have one that is specifically setup for my classical music that has dedicated scripts and uses the CE plugin.

After years of putting effort in trying to manage both classical and non-classical in one player, I am now doing the same for my music player/manager these days:
I have one portable install for classical, and one for non-classical.

I now wished I had done that from day one.

That is entirely possible. CE already does it for users of Muso, but it still works if you construct your own XML file. A little thought needed on how to make this more shareable…
My coding time is also limited at the moment and I need to shed my head of PHP before getting back to Python. However, this is an interesting idea.

Is this really not possible to do with tags?

Sure, it’s open user data and it hasn’t been populated that heavily (yet), but presumably the cream would eventually rise to the top and you could look at the highest rated tag from a group as a decent indicator. Or add unique tags using the list that are checked for (e.g. isJazz).

Just wondering if this work can be put into the db somehow :sunglasses:

@Sophist when I was looking at plotting artists relationships, orchestra members sticked out like a sore thumb. Way too many people connected with others and with a very high number of shared recordings.

There were a few exceptions (e.g. Snoop dog…?!), but filtering a few artists out is way easier than searching for every single classical artist. From there, picking a list of frequent composers, their songs and who played them seems very straightforward.

It is, of course, “possible” to add an overall genre to the curated metadata (rather than uncurated tags), but that doesn’t mean that the MusicBrainz folks will think it is a good idea or worth the huge effort to achieve. And genres are tricky things - the list of possible genres will be subjective and heavily argued, and the allocation of some music to a specific genre would also be subjective and heavily argued.

So first there would have to be debate and consensus reached on a hierarchy of possible primary genres, sub-genres, sub-sub-genres. And then this would need to be programmed into MB, the database populated, and Picard updated.

Classical music does seem to be an area with more agreement than many other areas, and Jazz similarly - but the definition of pop, rock, country, western, country western, blues etc. seems to me to be much more blurred.

1 Like

Yes - starting with a few conductors might be a good way to start. I suspect that if you find enough conductors, you will get all classical composers.

Agreed, but perhaps something as simple as a flag on each release indicating whether or not it was entered as “Classical” using the Classical Style Guidelines. That would go a long way toward identification for tagging and file naming purposes.

1 Like

That’s where, imo, the hive mind has the advantage over one or a few people being the arbitrators and making a static list. There’s a lot of junk in tags but the top genre ones are really good, once there’s a bit of input.

Maybe I’m oversimplifying it, but could you do a check if the artist has any of these tags (+ maybe some related ones): Classical / Jazz / Pop / Spoken / Soundtrack

If multiple check which one is at the top/most used, and then apply that rule.

Probably oversimplifying it huh :laughing:
I would love to see the mb genre tags get some more use though.

Yes - over simplifying.

A) Genre tags are freeform, so you would get Classical, Classical Pop, Clasical (mis-spelled), “Classic”, non-classical etc.; and

B) Genre tags are entirely optional, so many releases wont have any; and

C) Genre tags are not voted - so you will get some Jazz or Soundtrack that someone thinks is pop etc.

It’s one thing to populate a genre tag with stuff which is not necessarily accurate, and quite another to mis-classify something into a completely incorrect library just because of a subjective or malicious or non-existent or mis-spelled genre.

1 Like

Hmm, MB does use a curated genre list, so misspellings etc don’t go into the genre tag list afaik. And if you’re only using the most popular/upvoted tag the correct ones will rise to the top, as they do at Outliers don’t affect the outcome. If the genre is contested one will still be at the top. You could bundle related tags, like ‘classical pop’ = ‘classical’ (or ‘pop’) etc. But yeah, the tags do need to be populated more/used to become helpful.

But I don’t want to derail your thread, I just felt like it would be doable :+1:

It is doable if the powers that be decide to make it so. Just not sure that there is a will to achieve it.

Yes - I was wrong about the genre list not being curated - the tag list is freeform, but if you enter a tag which is on the genre list, then the tag is recognised as a genre. But this list is exactly that - a bland list in alphabetical order. There are no descriptions, many of them are obscure subdivisions of a broader category that is also quite obscure without any hierarchy to guide you - and even if I knew what more than a smattering of the broadest categories were, I doubt I would be able to match music to genres. In other words, utterly unusable to anyone but the most deeply versed genre-fanatics - and I bet that even they are going to be subjective and have differing opinions. If I enter Classical it is a genre, but if I type it incorrectly as Clasical, then it is a tag. (Not sure what happens if I enter “afoxe” (no accent) instead of “afoxê”.)

To be usable, I think genres need to be separated completely from tags so that you can have a structured UI, with proper hierarchies and with good descriptions so that you can be sure of what they mean, and edit notes and voting. And you need to encourage experts to populate the genre fields.

So a LOT of work to do to make it usable and comprehensive.

I think it works better without (traditional MB style) voting, because a huge mass of edits from many sources is just as good at filtering out outliers/mistakes as a small amount of edits from “experts”. That’s why is a useable source for genres, even for niche bands that a small expert group wouldn’t have the time to classify. As an aside, the ability to +1 and -1 different tags is already a community voting system.

A hierarchy would be nice, but I don’t see why it’s crucial - nearly every artist I looked at, a quick skim, that had ‘free-jazz’ as a tag also had the tag ‘jazz’. Interestingly the one that didn’t (God) you probably wouldn’t want to classify under Jazz as a primary genre? Even without tags being heavily populated/used yet (as far as I can tell) the jazz tag list has 15,000+ artists in it. Making another manual list seems like a division of resources to me.

1 Like

The obvious way to do this would be a Secondary Release type of Classical - this would be incredibly easy to add.

I have now had a chance to see how easy it would be to generate a list of classical composers by looking at artists who have been tagged with “classical”. There are between 4711 entries in this list, and most of them have a disambiguation which can be used to determine if they are a composer or performer. There are also c. 4096 artists in the composers list. So we could probably cross check the two and come up with a definitive list relatively easily.