feat: rebuild the moods from the library's measured tag distribution
Build and publish container / build (pull_request) Successful in 2m40s

The first set of moods was guessed at, and a tag census of the real library
shows how badly. Four tags in the dance mood -- edm, big room, hardstyle,
electronic dance music -- carry nothing whatsoever, while techno, electro, big
beat, rave and progressive house together carry over seven thousand plays and
were all absent. The drum and bass mood missed four of the six spellings the
taggers actually use, plus techstep, darkstep and hospital records.

The eighties mood was the worst of it. It leaned on the bare `80s` tag, which is
the eleventh most-played tag here and sits on Def Leppard, Bon Jovi and AC/DC
rather than on anything with a synthesiser in it. Removing it and adding a
hair-metal mood -- glam rock, hair metal, glam metal, arena rock, AOR, windowed
to 1975-1994 -- puts roughly eight thousand plays somewhere sensible and stops
the synth playlist being a stadium rock playlist.

Whole clusters had no mood at all: metal at around twenty-five thousand plays
across heavy, thrash, speed, power, death and NWOBHM, and pop punk and emo at a
similar figure. Both now exist, along with bass, nu-metal and indie.

Three kinds of tag are excluded on principle, with a test enforcing it, because
each produces a playlist that looks reasonable and is not. Nationality describes
a passport rather than a sound, and `american` alone spans 241 artists. `rock`
and `electronic` span 340 and 275, which is most of the collection. And
Last.fm's most popular tag for an artist is frequently the artist's own name, so
selecting on `green day` yields a Green Day playlist wearing a genre's clothes.
This commit is contained in:
Emma Thorpe
2026-08-24 18:34:34 +01:00
parent fbce764dc5
commit 41f6b290d8
3 changed files with 131 additions and 26 deletions
+65 -17
View File
@@ -1242,49 +1242,97 @@ PLAYLISTS = (
# `years` filters on the album's release date, which is what separates eighties
# synth records from everything a synthpop tag would otherwise drag in.
DEFAULT_VIBES = (
# Built from the tag distribution of this library rather than from a general
# taxonomy, which is why some obvious-looking tags are absent and some
# unobvious ones are here. `synthwave`, `edm`, `big room` and `hardstyle`
# carry nothing at all; `techstep`, `easycore` and `hospital records` carry
# real weight.
#
# Three kinds of tag are deliberately never used. Nationality -- american,
# british, swedish -- describes a passport, not a sound, and `american`
# alone spans 241 artists. `rock` and `electronic` span 340 and 275, which
# is most of the library and therefore no mood at all. And Last.fm's most
# popular tag for an artist is frequently their own name, so `green day`,
# `paramore` and `queen` are single-artist playlists waiting to happen.
{
"name": "80s-synths",
"name": "drum-and-bass",
"tags": [
"synthpop", "synth pop", "synth-pop", "new wave", "synthwave",
"new romantic", "electropop", "80s", "1980s",
"drum and bass", "dnb", "drum n bass", "drum'n'bass", "drum & bass",
"drum 'n' bass", "liquid funk", "neurofunk", "jungle", "techstep",
"darkstep", "drumstep", "breakbeat", "hospital records",
],
"years": [1975, 1992],
},
{
"name": "high-energy-rock",
"name": "bass",
"tags": ["dubstep", "brostep", "grime", "trip-hop", "big beat"],
},
{
"name": "dance",
"tags": [
"hard rock", "punk rock", "pop punk", "punk", "alternative rock",
"rock", "garage rock", "skate punk",
"house", "electro house", "progressive house", "tech house", "trance",
"techno", "electro", "rave", "dance", "minimal",
],
},
{
"name": "pop-punk",
"tags": [
"pop punk", "pop-punk", "punk rock", "punk", "skate punk", "emo",
"emocore", "easycore", "powerpop", "power pop", "post-grunge",
],
},
{
"name": "screamo",
"tags": [
"screamo", "post-hardcore", "metalcore", "emo", "hardcore",
"melodic hardcore", "emocore",
"screamo", "post-hardcore", "metalcore", "melodic metalcore",
"melodic hardcore", "hardcore", "trancecore", "deathcore",
],
},
{
"name": "drum-and-bass",
"name": "heavy-metal",
"tags": [
"drum and bass", "drum n bass", "dnb", "liquid funk", "neurofunk",
"jungle", "breakbeat",
"heavy metal", "metal", "thrash metal", "thrash", "speed metal",
"power metal", "death metal", "progressive metal", "nwobhm",
"classic metal",
],
},
{
"name": "dance",
"name": "hair-metal",
"tags": [
"electro house", "house", "big room", "electronic dance music",
"edm", "hardstyle", "trance", "dubstep", "electro",
"hair metal", "glam metal", "glam rock", "arena rock", "aor",
"rock and roll", "rock n roll",
],
"years": [1975, 1994],
},
{
"name": "nu-metal",
"tags": [
"nu metal", "nu-metal", "alternative metal", "rapcore",
"industrial metal", "industrial rock", "industrial",
],
},
{
"name": "classic-rock",
"tags": [
"classic rock", "progressive rock", "psychedelic rock",
"blues rock", "70s", "60s",
"classic rock", "progressive rock", "psychedelic rock", "psychedelic",
"blues rock", "blues", "southern rock", "art rock", "space rock",
"british invasion", "folk rock", "70s", "60s",
],
},
{
"name": "80s-synths",
# Without the bare `80s` tag, which in this library sits on Def Leppard
# and Bon Jovi rather than on anything with a synthesiser in it. The
# year window is kept as a second filter, not as the only one.
"tags": [
"synthpop", "electropop", "new wave", "post-punk",
"post-punk revival", "new romantic",
],
"years": [1975, 1992],
},
{
"name": "indie",
"tags": ["indie", "indie rock", "indie pop", "britpop", "singer-songwriter"],
},
)