Notes on genre and inspiration

14 Aug 2018 . category: DL . Comments

My final project is underway, and it feels like I get to return to my software engineering roots with these powerful, new deep learning techniques in my tool belt. This is a welcome opportunity to flex what I’ve learned this summer.1

It is also quite freeing to be able to focus once again on a single objective for a few weeks, in contrast to my one-new-thing-a-week pace from earlier in the program.

Inspiration: Live from Chicago

I have been working from Chicago this August – this is my first trip to the Windy City, and the change of scenery has brought inspiration and refreshment.

I visited the Chicago History Museum and found the Amplified: Chicago Blues exhibit particularly inspiring towards my final project aim of paying homage to good, expressive music commentary.

It was also a sobering reminder that not all commentary is worth amplifying or computationally imitating.

good commentary bad commentary

“eclectic guitar, amplified harp solos, and driving rhythm section” - this is the ideal type of writing I’d love to consistently see my model generate. and yet, I must also be wary of amplifying the troll-like writing on the right, i.e., “screaming, idiotic words, and savage music” - which, in this case, is also blatantly racist.

A good friend of mine here in Chicago reminded me of the social responsibilities that I must strive to always keep in mind, even when developing in a seemingly harmless domain (because what could be so bad about automatic music commentary, right?).

If I make contributions towards realistic text generation, what am I enabling? Automated fake Yelp reviews, fake news, troll bots? How can this tech be re-purposed, and how should this affect the work that I do? These are questions that I continue to grapple with.

Inspiration: Twitter edition

re:actually building out this final project :grimacing: exciting, yet slightly intimidating in the given time frame.

Exploring genre

For several weeks now, I have expressed doubt in the genre information I collected in weeks 2-3 of the program. Genres were collected (along with song audio features) as a way of conditioning my generated music commentary on something concrete about the song being commented on.

Data cleaning

This week, I finally revisited and addressed the situation by collecting new genre information from the Spotify API instead. The genres themselves are extremely fascinating, and I had no idea they would be so amazingly specific!2

“vapor twitch” – “indie poptimism” – “stomp and holler” – these new genres go far beyond the bland labels of pop/rap/rock/r&b/country that I had previously gathered. These genres feel like they are really trying to tell me something, as expressively and concisely as possible.

At first, this discovery was actually a little discouraging: I could only imagine how long the genre data tail would be once applied to my commentary collection. I worried that this would result in conditioning that really isolated certain writing, greatly restricting the creativity of my model. Imagine a request for commentary on a “chamber pop/chillwave/neo-psychedelic/nu gaze” (:nerd_face:) song came in to my model, but it’s never seen such a genre combination before – what will it do? (I’m still not sure actually, so stay tuned for when I get to conditioning!)

Nevertheless, I was able to run some numbers to find that the tail doesn’t appear absolutely unmanageable. I also applied some simple genre clustering to further reduce the tail.

When all was said and done this week, I had 130 unique genre labels over almost 20,000 writing samples. There are 1,135 unique genre combinations, since each sample can contain multiple genres.

I am using this notebook to track data revision history from now on: quilt.ipynb. Check it out for a more detailed sketch of the genre data cleaning I performed this week. I also switched from Git LFS to Quilt this week for better data packaging and versioning.

Data exploring

When I started clustering genres, many neat insights emerged. This section turned into a spiritual successor to my earlier bias investigation.

  • #1 genre found in my commentary collection? vapor soul.
  • How different is the #1 from the #2 genre, indie poptimism, according to Every Noise? not very.
  • Which genre that was at least visible (at 0.2% representation) in my old genre labels is conspicuously missing now? country.

The Every Noise project enabled some deeper diving into how to better interpret these somewhat opaque labels. It provides “an algorithmically-generated, readability-adjusted scatter-plot of the musical genre-space”, where:

“in general down is more organic, up is more mechanical and electric; left is denser and more atmospheric, right is spikier and bouncier.”

There are scatter plots to show both similar and dissimilar genres to a specific genre, as well as which artist tend to belong to a genre.

It can tell you what it believes is the “most representative” song for a genre label. It links to genre-based playlists on Spotify.

Let’s take a look at the top genres in my commentary collection:

genre cloud Top 25: 1. vapor soul (4344), 2. indie poptimism (3886), 3. pop (3799), 4. indietronica (3462), 5. electropop (3406), 6. indie r&b (3242), 7. tropical house (2359), 8. modern rock (2171), 9. indie psych-rock (1942), 10. indie pop (1845), 11. shimmer pop (1827), 12. edm (1826), 13. chillwave (1705), 14. rap (1452), 15. indie electro-pop (1451), 16. alternative dance (1418), 17. metropopolis (1303), 18. hip hop (1230), 19. pop rap (1174), 20. nu disco (1086), 21. dance pop (1054), 22. chamber pop (996), 23. aussietronica (973), 24. art pop (973), 25. house (917).

I picked out a few genres to inspect further that felt both representative of the most popular sounds in the data set, as well as distinct from one another. I wanted to get a feel for what these genres sound like, as well as their relationships to other genres.

Genre (Rank) Most Representative Track Similar Genre Map Similar Top Genres
vapor soul (#1)
“No One - Kayge Calypso & DUNN Remix” by Mothica
'vapor soul' genre map indie poptimism (#2), indietronica (#4), electropop (#5), indie r&b (#6), tropical house (#7), modern rock (#8), indie psych-rock (#9), indie pop (#10), shimmer pop (#11), chillwave (#13), indie electro-pop (#15), metropopolis (#17), aussietronica (#23), vapor twitch (#26), vapor pop (#30), gauze pop (#33)
edm (#12)
'edm' genre map pop (#3), tropical house (#7), house (#25), electro house (#31), electronic trap (#38), big room (#42), deep tropical house (#46), brostep (#48), australian dance (#54), tropical pop edm (#56), bass trap (#58), progressive house (#59), progressive electro house (#71), deep groove house (#74), complextro (#81), catstep (#91), chillstep (#99), trance (#124)
rap (#14)
“Bigger Than You (feat. Drake & Quavo)” by 2 Chainz
'rap' genre map pop (#3), indie r&b (#6), pop rap (#19), dance pop (#21), r&b (#53), trap music (#40), gangster rap (#65), dirty south rap (#98), hip hop (#18), southern hip hop (#39), underground hip hop (#43), conscious hip hop (#64), alternative hip hop (#67), urban contemporary (#76), hip pop (#121), hardcore hip hop (#130)
nu disco (#20)
“So Good to Me” by Chris Malinchak
'nu disco' genre map indietronica (#4), tropical house (#7), chillwave (#13), alternative dance (#16), new rave (#27), filter house (#44), deep house (#51), disco house (#86), balearic (#123)
electronic (#47)
“Born Slippy (Nuxx)” by Underworld
'electronic' genre map indietronica (#4), electropop (#5), chillwave (#13), alternative dance (#16), art pop (#24), new rave (#27), indie rock (#29), filter house (#44), dance-punk (#45), chamber psych (#49), downtempo (#52), microhouse (#69), bass music (#75), trip hop (#77), ninja (#79), wonky (#90), danish electro-pop (#92), alternative rock (#97), swedish synthpop (#100), intelligent dance music (#103), nu jazz (#105), minimal techno (#110), fluxwork (#111), big beat (#116), future funk (#122)
freak folk (#55)
“Bum Bum Bum” by Cass McCombs
'freak folk' genre map indietronica (#4), modern rock (#8), indie pop (#10), chillwave (#13), alternative dance (#16), chamber pop (#22), art pop (#24), new rave (#27), indie rock (#29), folk-pop (#36), neo-psychedelic (#41), dance-punk (#45), stomp and holler (#50), nu gaze (#57), brooklyn indie (#61), dream pop (#62), preverb (#66), garage rock (#84), noise pop (#87), lo-fi (#89), alternative rock (#97), fluxwork (#111)
neo soul (#60)
“On & On” by Erykah Badu
'neo soul' genre map pop (#3), indie r&b (#6), hip hop (#18), dance pop (#21), southern hip hop (#39), urban contemporary (#76), funk (#94), soul (#101), hip pop (#121)

Observations from the rabbit hole:

  • The top 11 genres are considered very similar to each other. Also similar: #13, #15, #17, #23… this again speaks to the genre skew in the data set.
  • Rap and freak folk have tall genre maps, indicating more variation between “organic” and “mechanical and electric” and less variation between “atmospheric” and “spikier and bouncier” sounds. Interestingly, rap and freak folk are also considered very dissimilar to each other by Every Noise.
  • Another comment on representation is to note the sparsity of similar top genres to nu disco and neo soul … and the density to genres vapor soul, edm, and electronic.
  • I do like the distinctions between the edm and electronic genres… a tale of two houses.
  • There are still many interesting top genres left out of this manual clustering: indie folk (#28), indie anthem-folk (#32), escape room (#34), post-teen pop (#35), deep australian indie (#37), future garage (#63), swedish electropop (#68), modern alternative rock (#70), etc.
  • Interesting to look at top genres that didn’t cluster as I expected… e.g., rap (#14) was not particularly similar to electronic trap (#38), bass trap (#58), or trap soul (#80). And despite its affinity for other house genres, edm (#12) was not particularly similar to filter house (#44), deep house (#51), microhouse (#69), disco house (#86), or float house (#108).
  • Interesting to also look at the dissimilarity scatter-plots and notice what’s under-represented in top genres, e.g.,: negations of vapor soul (anti-folk, no wave, art rock, modern blues, blues-rock); negations of edm (movie tunes, christmas, broadway, disney, lots of region-specific music); negations of rap (post rock, anime score, hauntology, neoclassical).

This Every Noise-based clustering (e.g., adding under-represented “new jack swing” to the similar but better-represented “rap” genre) to reduce the genre tail is not what I’m using for the project, although this would be a very cool extension.

I’m looking forward to seeing the effects of conditioning my model on this genre information!

Follow my progress this summer with this blog’s #openai tag, or on GitHub.


  1. Perhaps this is the true meaning of “Flexing To The Study” :slightly_smiling_face: 

  2. I definitely went down an internet rabbit hole on how Spotify genres came to be so specific, the truly fascinating Every Noise project (#goals), and the ‘data alchemist’ behind it all, Glenn McDonald. I am shocked I had never heard of any of this before! 


Nadja does not particularly enjoy writing about herself.