Genre whitelist

Tags: #<Tag:0x00007f37bd894fa8> #<Tag:0x00007f37bd894d78>

You know how in options > Metadata > Genres, there’s a comma-separated blacklist of genres/tags to exclude? How about an optional whitelist?

My thinking here is you can tag things in MB as belonging to both vague (electronic, rock) and specific (acid house, hard rock) genres, and then in Picard you could tell it which handful of genres you care about, if you only want to group into broad categories in your personal collection while still categorising more specifically for the benefit of the community.

2 Likes

Nice idea. It would be even better if that whitelist can be pre-loaded with a nice standard set of genres. Even better if that genre list could be a small text file that can be exchanged via the forum. That way we’d soon expand a good standard list.

2 Likes

On a related note, it looks like there are a few mostly-overlapping ideas of what constitutes a list of top level genres, mostly consisting of these:

  • Blues
  • Classical
  • Country
  • Electronic
  • Folk
  • Funk
  • Hip hop
  • Jazz
  • Latin
  • New age
  • Pop
  • Reggae
  • Rock
  • Soul
  • World

Plus pseudo-genres like audiobook, soundtrack, and I’d suggest field recording for those who have those too. Admittedly, this is clearly a very biased list, shoving most of the world’s music into “World”, while blues’ offshoot rock’n’roll’s offshoot rock gets to pretend to be top-level. Still, it would probably be a sensible level of specificity for most people’s music collections, with greater detail likely only needed in each individual’s own particular areas of interest.

1 Like

Wow - I feel sorry for anyone who thinks they are the only genres around. You are very right to criticise that list. “World” music certainly is insulting like that. Almost as weird as “Latin”. That list looks like something that would have been written by a blinkered Western based shop in the 1980s :grin:

I have seen better lists around. Doesn’t Wikidata have something sensible? They tend to shake out the US bias. I would have thought that they will be a better start point. https://en.wikipedia.org/wiki/List_of_popular_music_genres and https://en.wikipedia.org/wiki/Music_genre

Not sure why “Audiobook” is a pseudo-genre. If this is going to be a list that works with Picard and MusicBrainz then it should surely handle the areas that MusicBrainz catalogues. There needs to be Spokenword \ Audiobook \ AudioDrama genres too. There are a lot of ways recordings need to be categorised beyond music.

Here is another reference in Wikipedia worth looking at. The original MP3 ID3v1 tags defined a fixed genre list. This was then expanded by Winamp https://en.wikipedia.org/wiki/ID3#Genre_list_in_ID3v1[12]

Those lists are messy and would benefit from a proper hierarchy. But a good start point to mine for ideas.

The problem is when the lists are thrown together they always tend to be biased to the current year \ country \ trends of the list maker.

1 Like

Yeah, it’s very chauvinist. At least it’s not as bad as the first Dewey Decimal System! (A low bar by today’s standards, admittedly.)

Yeah, I’ve been thinking about this recently too. By “pseudo-genre” I really mean it’s the release group’s secondary type. I’m guessing that at some point, each genre will belong to a secondary type, so that audiobooks can have their own genres that are completely distinct to music’s genres… But then, it’s called MusicBrainz, so I didn’t want to push my luck asking about that…

But as someone with about a thousand or so releases and maybe twenty audiobooks, it makes sense for me personally to script them into pretending to be a genre… But someone with a thousand audiobooks and twenty albums could just as easily say the opposite.

As for ID3v1’s list, I think MB’s genre list is already more useful, likely because more people have contributed to it…

True, and I’m not sure we could have a one-size-fits-all solution. I know there’s a lot of people who own maybe ten albums in total, who would find grouping by genre completely superfluous, and a lot of people who obsess over one top level genre’s countless subgenres while wanting to keep all the others toplevel only, as very few people are musically omnivorous.

1 Like

I throw curve balls in to make people think. I agree with most of your thoughts there.

With Audiobooks their sub-classifications already exist - in the book world. Books will already have Autobiography, Comedy, Factual, etc as categories. It would be logical for the same categories come into play.

1 Like

Only just spotted the link. When he pulled out the Newman stack made me laugh. I had deleted a chunk out of my reply about how my 50+ Pink Floyd CD need their own sub categories…

But now I have to pull out my Boosh boxset to watch this evening.

That clip is good at pointing out the problem with one person trying to attach a genre to another person’s musical taste. If some needs to write sub-categories for Jazz then Howard would have to write it as no one else gets the subtleties. Need Classical experts to come up their sub-genres and so on.

Your master genres there have “Jazz” and “Funk” in different boxes… so where will the Jazz-Funk go?

And no matter what you do you will always end up with overlapping categories. It is impossible to get everything to fit into little boxes.

3 Likes

@IvanDobsky I have to agree. Here is my quote from a previous post. I have the same feelings still.

I also believe Genres are a very personal consideration. I can’t see auto tagging “Genres” beyond a very broad based categorization.

For example, I grew up listening to the end of the big band era, Classical, then “Jazz”, Pop, Country, which transitioned to Rockabilly, then Rock, (thank you Elvis), Folk which included Bob Dylan, PP&M, etc… I created my own “Protest” Genre for some of these, and so forth into the current music styles.

I would think most of us will always change some Genres to fit our very personal interpretations. I doubt any software will become clairvoyant to our feelings nor would I want it to choose for me.

2 Likes

I agree with both of you, everyone’s interpretation of genres is idiosyncratic. Perhaps it’s best not to preload a whitelist after all, then? :blush: But I’d still find it useful to have one I could fill in with my personal preferences.

Yeah, in general terms, each genre can have multiple parents, and there’s no way to say which one contributed the most, if any. But in idiosyncratic terms, I thought it’d be useful if each user personally has the ability to tag things as a specific genre and a general genre as they personally see it, and then be able to tell Picard “I personally would like you to lump everything I’ve categorised as funk and jazz-funk in together as just funk, I have ten funk albums and one jazz-funk album and it’s not worth keeping them separate”, while someone else does the opposite.

I’m flirting with tagging specific subgenres at the moment, and while it’s helping me articulate which ones I like the most, and find new music I like (great!) it also makes it harder for me to find things as I can’t remember what genre I tagged them as. (“Is this hip house or euro house? Nevermind, I’ll skip the genre and go straight to the artist.”) So I’d personally find it really useful to be able to say “just whitelist house already” as opposed to “blacklist hip house, euro house, and all the other specific houses”, so I can continue tagging things accurately as well as broadly, while keeping my Walkman’s genre list short enough to be useful.

Basically, my entire thinking here is “it’s easier to whitelist about ten genres than blacklist about a hundred ones”.

3 Likes

Just a hundred? :rofl:

3 Likes

Instead of using a white list and an ignore list, i’d rather have one config option for both:

Strict matching:

+rock
-disco

Wildcards:

+*jazz*
-*

In this case, it would accept any genre containing jazz, ignore anything else.

Or:

 -*jazz*
 +*

Which would be equivalent to:

-*jazz*

Meaning: allow everything, but ignore genres containing jazz.

It could even support regexps:

+/^jazz/
-/^.*disco$/

Not sure whether it should be a separate file or just a normal option stored in usual config ini (perhaps with possibility to import/export to text file).

If the idea is to filter out tags/genres that are embedded into files, it has to allow whatever user wants, and cover as much cases as possible.

The current option ignore_genres, in this regard, was badly designed.

Code: https://github.com/metabrainz/picard/blob/81bc3697532f23dc879de7bb051e854b06fac8d1/picard/track.py#L208-L254

@ZoeB: please create a ticket for this if none exists already and link it here.

3 Likes

This is a much better idea, thank you! I searched in the bug tracker, and couldn’t find any similar looking tickets, so added PICARD-1514. This would be really useful, thank you!

This reminds me of another issue I’ve had, which is that I like the wikidata genres but they tend to come back with, for instance, “country music” rather than just “country”. Is it possible to fix this with scripts? If not, what would you suggest?

This should work, although you’d need a separate line for each genre to rename:

$if($eq(%genre%,Country Music),$set(genre,Country))

I’ll give that a try (although if that works, surely “if genre contains Music, replace music with blank” would work, too?). I’m just never quite sure how plugins interact with scripts.

Yes, that would work too. I just wasn’t sure how specific your example was. e.g. maybe you might want to remove hyphens from some genres etc.

1 Like

Adventurers may give a try to https://github.com/metabrainz/picard/pull/1193 (work in progress, test at your own risk).
Feedback welcome, it’s still very rough, but it should work.

6 Likes

This is wonderful, thank you!

I’m going to be terribly ungrateful now and feature creep this, sorry… :sweat_smile:

OK, followup question: is there, or should there be, any way to prioritise genres?

So if I’ve got an album that’s, say, hip house, hip hop, and house, I can tell MB that it’s all three genres, and I can tell Picard that I only want to note one of those genres (Metadata > Genres > Maximum number of genres is one), but can I tell Picard which genre is highest priority out of those three?

e.g. could the ordering of the lines be weighted, so if I have this:

-*
+hip hop
+house

…then anything that’s considered to be both hip hop and house would be noted as hip hop. It’s only noted as house if it’s not also hip hop.

(Again, this is already a much appreciated improvement, thank you so much for what you’ve done!)

:laughing:

Well, current code is just using folksonomy score to order tags. So if two genres have same score, then result is somehow random.
That’s done in https://github.com/metabrainz/picard/blob/6a43385d875de043e89a332bfb8b0fb695c57199/picard/track.py#L271-L280

Each tag gets a value between 0 and 100, depending on the MB score (number of votes), tags with 0 or less scores are ignored.
Then the list is sorted, and if a limit is set, only N first biggest values are kept if they have a value >= minusage.

Weighting tags inside Picard doesn’t currently exist, and i’m not sure doing it through line ordering is a good idea, we could also add a “weight” or priority value, extending the syntax.

Something like (random syntax and numbers, just an idea):

-*
+hip hop [20]
+house [30]

But how should it play with current (MB) scores ? Ignore them and replace ? Weight ? Other ideas ?

2 Likes