Genre Tag Names

Tags: #<Tag:0x00007f4d55c0e528>

I was throwing together a plugin for normalizing genres, thought this snippet may be of some use for someone given the recently announced genre tag support.


lowercase: currently in list of genres
UPPERCASE: does not currently appear in list of genres

canonical_genres = {
    "alternative":      ["alternative punk", "alternative rock", "anarcho-punk", "ART PUNK", "art rock", "COLLEGE ROCK",
                         "CROSSOVER THRASH", "CRUST PUNK", "dark wave", "emo", "emocore", "gothic", "grunge",
                         "hardcore punk", "hard rock", "horror punk", "indie", "indie rock", "lo-fi",
                         "martial industrial", "new wave", "oi", "post-grunge", "punk", "punk rock", "screamo",
                         "shoegaze", "ska punk", "skacore", "STEAMPUNK", "street punk"],
    "blues":            ["acoustic blues", "chicago blues", "classic blues", "CONTEMPORARY BLUES", "COUNTRY BLUES",
                         "delta blues", "electric blues", "modern blues", "RAGTIME BLUES"],
    "christian":        ["CHRISTIAN METAL", "CHRISTIAN POP", "CHRISTIAN RAP", "christian rock", "CLASSIC CHRISTIAN",
                         "contemporary christian", "contemporary gospel", "gospel", "HYMN", "PRAISE AND WORSHIP",
                         "QAWWALI", "SOUTHERN GOSPEL", "TRADITIONAL GOSPEL"],
    "classical":        ["baroque", "CHAMBER MUSIC", "CHANT", "CHORAL", "CLASSICAL CROSSOVER",
                         "contemporary classical", "EARLY MUSIC", "EXPRESSIONIST", "IMPRESSIONIST", "MARCH", "medieval",
                         "MINIMALISM", "modern classical", "NEO CLASSICAL", "opera", "orchestral", "post-classical",
                         "RENAISSANCE", "ROMANTIC", "slow waltz", "symphony", "WEDDING MUSIC"],
    "comedy":           ["NOVELTY", "STANDUP COMEDY", "VAUDEVILLE"],
    "country":          ["alternative country", "alternative dance", "americana", "bluegrass", "classic country",
                         "CONTEMPORARY BLUEGRASS", "CONTEMPORARY COUNTRY", "country blues", "country folk",
                         "COUNTRY GOSPEL", "country pop", "country rock", "honky tonk", "line dance", "modern country",
                         "OUTLAW COUNTRY", "TRADITIONAL BLUEGRASS", "traditional country", "URBAN COWBOY"],
    "electronic":       ["2-STEP", "ACID", "ACID BREAKS", "acid house", "acid jazz", "ambient", "BASSLINE", "big beat",
                         "breakcore", "breakbeat", "breaks", "broken beat", "BROSTEP", "chillout", "CHILLSTEP",
                         "CHILLWAVE", "chiptune", "club", "CRUNK", "dance", "dance-punk", "dark ambient",
                         "dark electro", "downtempo", "deep house", "digital hardcore", "drone", "drum and bass",
                         "dub techno", "dubstep", "ebm", "electro", "electro house", "ELECTRO SWING", "electro-funk",
                         "electro-industrial", "electroclash", "electronic rock", "electronica", "electropunk",
                         "euro house", "eurodance", "experimental", "funky house", "FUTURE GARAGE", "gabber", "garage",
                         "garage house", "glitch", "GLITCH HOP", "goa trance", "grime", "happy hardcore", "HARD DANCE",
                         "hard house", "hard trance", "hardcore techno", "hardstyle", "HI-NRG", "HORRORCORE", "house",
                         "idm", "illbient", "indietronica", "industrial", "italo-disco", "JACKIN HOUSE", "jungle",
                         "leftfield", "LIQUID DUB", "madchester", "melodic trance", "minimal", "noise", "post-hardcore",
                         "power electronics", "progressive", "progressive house", "progressive trance", "psytrance",
                         "rave", "REGSTEP", "rhythmic noise", "schlager", "SPEEDCORE", "synth-pop", "techno",
                         "tech house", "trance", "tribal house", "trip hop", "uk garage", "vocal house",
                         "vocal trance"],
    "folk":             ["ACOUSTIC", "alternative folk", "ACOUSTIC GUITAR", "contemporary folk", "contra", "dark folk",
                         "GERMAN FOLK", "GYPSY FOLK", "filk", "folk metal", "folk pop", "folk punk", "folk rock",
                         "freak folk", "indie folk", "irish folk", "neofolk", "psychedelic folk", "TRADITIONAL FOLK"],
    "hip hop":          ["alternative hip hop", "BOUNCE", "CLOUD RAP", "conscious hip hop", "east coast hip hop",
                         "FRENCH HIP HOP", "gangsta rap", "GERMAN HIP HOP", "HARDCORE RAP", "INSTRUMENTAL HIP HOP",
                         "jazz rap", "LATIN HIP HOP", "OLD SCHOOL HIP HOP", "ragga hip hop", "SOUTHERN HIP HOP",
                         "SWEDISH HIP HOP", "trap", "turntablism", "underground hip hop", "west coast hip hop"],
    "HOLIDAY":          ["CHANUKAH", "christmas music", "EASTER", "HALLOWEEN", "THANKSGIVING"],
    "jazz":             ["avant-garde", "avant-garde jazz", "bebop", "big band", "blue-eyed soul", "BLUE NOTE",
                         "classic jazz", "contemporary jazz", "cool jazz", "CROSSOVER JAZZ", "DIXIELAND", "ETHIO-JAZZ",
                         "free improvisation", "free jazz", "fusion", "future jazz", "GYPSY JAZZ", "hard bop",
                         "instrumental jazz", "jazz blues", "jazz fusion", "LATIN JAZZ", "lounge", "MAINSTREAM JAZZ",
                         "nu jazz", "post-bop", "RAGTIME", "smooth jazz", "soul jazz", "swing", "TRAD JAZZ",
                         "vocal jazz", "west coast swing"],
    "latin":            ["ALTERNATIVO", "bolero", "bossa nova", "BRAZILIAN", "CALYPSO", "CHICANO", "CONJUNTO",
                         "CONTEMPORARY LATIN", "cumbia", "flamenco", "funk carioca", "latin jazz", "latin pop",
                         "latin rock", "mambo", "merengue", "mpb", "norteño", "NUEVO FLAMENCO", "PORTUGUESE FADO",
                         "RAÍCES", "ranchera", "reggaeton", "REGIONAL MEXICANO", "ROCK LATINO", "rumba", "salsa",
                         "samba", "tango", "TROPICAL"],
    "non-music":        ["audiobook"],
    "pop":              ["ADULT CONTEMPORARY", "alternative pop", "avant-garde pop", "britpop", "bubblegum pop",
                         "chamber pop", "dance-pop", "DREAM POP", "electropop", "europop", "FRENCH POP", "futurepop",
                         "GERMAN POP", "ORCHESTRAL POP", "pop metal", "pop punk", "pop rap", "pop rock", "pop soul",
                         "power pop", "psychedelic pop", "soft rock", "teen pop"],
    "r&b":              ["contemporary r&b", "disco", "doo-wop", "funk", "funk soul", "MODERN SOUL", "motown",
                         "neo soul", "northern soul", "PSYCHEDELIC SOUL", "QUIET STORM", "smooth soul", "SOUL",
                         "SOUL BLUES", "southern soul"],
    "reggae":           ["2-TONE", "dancehall", "dub", "ragga", "roots reggae", "ska"],
    "rock":             ["ACID ROCK", "acoustic rock", "AFRO PUNK", "ADULT ALTERNATIVE", "alternative metal",
                         "AMERICAN TRAD ROCK", "aor", "arena rock", "atmospheric black metal", "avant-garde metal",
                         "black metal", "blackened death metal", "blues rock", "brutal death metal", "classic rock",
                         "death metal", "death-doom metal", "deathcore", "deathrock", "doom metal", "ethereal",
                         "experimental rock", "funk metal", "funk rock", "garage rock", "glam", "glam metal",
                         "glam rock", "gothic", "gothic metal", "gothic rock", "grindcore", "groove metal",
                         "HAIR METAL", "heavy metal", "industrial metal", "industrial rock", "instrumental rock",
                         "jazz rock", "jazz-funk", "krautrock", "mainstream rock", "MATH METAL", "math rock",
                         "mathcore", "melodic black metal", "melodic death metal", "melodic metalcore", "melodic rock",
                         "metal", "metalcore", "new romantic", "NOISE ROCK", "nu metal", "old school death metal",
                         "post-metal", "post-punk", "post-rock", "power metal", "progressive metal", "progressive rock",
                         "psychedelic", "psychedelic rock", "psychobilly", "rap rock", "rapcore", "rock and roll",
                         "rockabilly", "ROOTS ROCK", "sludge metal", "southern rock", "space rock", "SPAZZCORE",
                         "speed metal", "stoner metal", "stoner rock", "surf rock", "symphonic black metal",
                         "symphonic metal", "symphonic prog", "symphonic rock", "technical death metal", "TEX-MEX",
                         "trash metal", "viking metal"],
    "soundtrack":       ["ANIME", "FOREIGN CINEMA", "musical", "ORIGINAL SCORE", "production music", "TV SOUNDTRACK"],
    "spoken word":      ["JAZZ POETRY", "SLAM POETRY"],
    "vocal":            ["A CAPPELLA", "ballad", "BARBERSHOP", "DOO-WOP", "GREGORIAN CHANT", "singer-songwriter",
                         "STANDARDS", "TRADITIONAL POP",
                         "VOCAL JAZZ", "VOCAL POP"],
    "world":            ["AFRICAN", "afrobeat", "AFRO-CUBAN", "AFRO-POP", "ANATOLIAN ROCK", "ASIAN", "AUSTRALIAN",
                         "bachata", "bhangra", "CAJUN", "CARIBBEAN", "CARNATIC", "celtic", "CELTIC FOLK", "chanson",
                         "HAWAIIAN", "HINDUSTANI", "INDIAN GHAZAL", "INDIAN POP", "indorock", "j-pop", "j-rock",
                         "JAPANESE", "k-pop", "KLEZMER", "MBALAX", "MIDDLE EASTERN", "NORTH AMERICAN", "ODE", "PIPHAT",
1 Like

You may want to look into beets’s “lastgenre” plugin too:

If nothing else, maybe there’s some inspiration for how to handle “parent/child” genre relationships. :slight_smile:

1 Like

Just a hint, in a github code page, you can click a row (like here 666) then Shift+click another row, to make a link to a selection of rows.
Then you can also press the Y key on your keyboard to turn current URL into permalink to this very version you are seeing, so that the code seen with your URL does not change with time.

BTW country should be in world and you are missing:

crap: ["vocaloid", "disney", "christmas music", "gangsta rap"]


1 Like

So should “folk” and “latin”… and “reggae” and “jazz” and “hip hop” and “rock” and …

Also, please don’t call music genres crap. It’s fine to state that you don’t appreciate them, but please remember to state so in a respectful manner.


I have never understood the so called world genre.
In stores it means all except English and my language.
So it’s not a genre, IMO, it’s a language barrier.

And about the crap, I saw disney somewhere in the list and I was surprised.
Then I thought of what parent genre and what siblnigs could be.
But it was bad taste and subjective of course, indeed. I won’t do it again! :sweat_smile:


I always assumed “World” was to be read as “everyone else except for me”. So that means it is a category that changes from the view of the reader.

Genres are impossible to agree on. Some people just don’t understand \ don’t like some music categories.

Not everything fits into neat little boxes. :smiley:


Thanks Freso, the beets genre tree is much broader and better organized.

I don’t understand why ‘European Classical’ music is assigned the genre ‘Classical’ (all the sub-genres are sub-genres of European Classical music), whereas other kinds of classical music (such as Indian classical genres like Carnatic or Hindustani) are not even provided as genre options. Shouldn’t the current genre listing be revised?

Hi! Feel free to request new genres and I’ll look into them (I haven’t been adding genres for a long time because I was waiting for some code but it’s almost ready now!). I didn’t add Indian classical in my first pass just because I know nothing about it, but we’d love to have better genre tags! (notice that “classical” is a very wide tag, and it’s not even necessarily 100% about Western Classical - we should add genres like “baroque” and whatnot there too, but I’m stuck because I can’t add “romantic” :smiley: ).