A blissful approach to automatic MP3 genre classification
March 09, 2011 in genre by Dan Gravell
It's been a long time coming, but I'm finally putting some thought into how automatic genre classification will work in bliss. This blog post constitutes my current thoughts as to how genre classification will work. I'm hoping anyone with comments or concerns will voice them in the comment section below.
What's the problem with digital music genre organisation today? The first problem that bliss will attack is a lack of consistency. I've already written about how easy it is for your music library to experience an explosion of genres. When your digital music is ripped from CD the genre is typically populated from one of the free online databases. This gives you some information but, because people decide to use the genre tag for different purposes and record genres in different ways you soon end up with an inconsistent music library.
In my own library I have a number of issues:
- Genres recorded at different levels (e.g. some 'Rock', some 'Britpop')
- Completely incorrect genres (Let It Bleed was originally categorised as Classical for me!)
- Misuse of the genre tag, for instance where artist names are re-populated in the genre tag
This being bliss, genre classification will be rule based. bliss will allow you to dictate how genres should appear within your music library, with the aim of achieving a consistent, navigable and useful genre organisation.
This also being bliss, development on this functionality will occur piecemeal, with small portions of useful functionality being released little by little. Initially, I shall concentrate on genre consistency, rather than correctness. The features described here may change with time as new abilities are added.
So how will genre classification work?
Fundamentally, you will use a genre tree to specify which genres are allowed in your music library. That sounds a quite simple solution to solve genre consistency, but I think it's quite powerful. Here's how the UI might look:
The 'Fill in missing genres' works as before. If genre is missing for a given album, bliss looks it up online.
The 'Allowable genres' tree defines the allowable genres in your music collection. The list will be far larger than the one shown (obviously). I am thinking of using something like the AMG genre list, the Wikipedia list or my own fundamental music genre list (with more specific genres copied from the previous sources). Genres are laid out in a hierarchy and any node in the hierarchy can be selected. By default all are selected. Once these selections are applied, as usual, bliss applies the assessment and fix cycle. I'll explain assessment first, as it's easiest.
If bliss sees an album with a genre that is not ticked, then it is marked uncompliant. That's simple!
Fixes get more complicated. The existing genre is looked up in the genre tree. If it exists, bliss traces up the tree, parent by parent, until the first checked genre is found. It then suggests a fix to change the album to this genre. Initially this will be manual, as normal. If a genre is not found, bliss suggests changing the genre to whatever is in the 'When no match' dropdown. This will be one of "Use 'Other'", "Use 'Unknown'", "Blank" or "Leave as-is".
Here's how the example above would be processed:
- If an album had the genre "Classical", "Rock", "Indie" or "Metal" it will be compliant
- If an album has the genre "Opera" or Ballet", it will be uncompliant and bliss will suggest changing it to "Classical"
- If an album has the genre "Grunge", it will be uncompliant and bliss will suggest changing it to "Rock"
- If an album has the genre "Heavy metal" or "Thrash metal", it will be uncompliant and bliss will suggest changing it to "Metal"
I'm hoping this goes someway to improving consistency. My main fear is about the number of genres involved, and also whether the genre list I have will cover most of the genres people have out there. Still, nothing ventured, nothing gained...
Some brief ideas for future functionality...
- Make the genre recategorisation automatic
- Allow the genre tree to be edited
- Support multiple genres
- Support multiple genre fields (some people use STYLE and GROUPING fields to accomodate different levels of genre)
I hope I haven't bored you too much with my pontifications! If you have suggestions, please voice them in the comments below...
Thanks to loop_oh for the image above.