Embedding models and music

A post on the Google Research blog today announced

the open-sourcing of Embedding Projector, a web application for interactive visualization and analysis of high-dimensional data

Over the summer, I presented work (co-authored with Jaan Altosaar) on the application of word embedding models to a large–and admittedly noisy–corpus of classical music. It appears that word embedding models capture something about sequences of chords. Our work, and related recent work with a different dataset, shows that that major triads are somewhat evenly distributed through the embedding space, in their circle-of-fifths order.

There’s no obvious way–yet–to evaluate these models of chords. The Embedding Projector provides a convenient way to inspect the structure of the learned embedding space, and facilitates the exploration of its structure.

You can find a link to an Embedding Projector visualization of the results of an embedding model trained on a small dataset of classical music here.

Switch the labels to “root_common” for more sensible chord labels. Try searching for (major|minor) triad with regexps enabled in the sidebar.


  • Chord slices from the Yale-Classical Archives Corpus
  • from works by Bach, Hadyn, Mozart, and Handel…
  • represented as binary chroma vectors (tells us the name of sounding pitch classes)…
  • ingested by gensim as a collection of tokens…
  • to train a word2vec model (new dimensionality = 100; context window = 5; skip-gram model; negative sampling used)