Song Visualizer

Song Visualizer is an exploration of patterns in chord changes in music in three parts: in aggregate, individually and their notes.

Launch Song Visualizer



FLOW is a Sankey diagram showing the aggregate popularity of chords with each tonic over time, either by changes or beats. Click a node to focus on only the progressions passing through it. The path of the selected progression is highlighted.


PROGRESSIONS shows individual progressions clustered by similarity. I used a dynamic time warping algorithm to cluster and then a simple greedy algorithm to linearize them. The results are then plotted based on their computed inter-progression distances so more similar progressions should end up closer together. The white ticks above each progression give an indication of how densely clustered the progressions are along the horizontal axis. Click a progression to select it or use the triangles to move the selection left/right.


Selecting a progression then shows it in the SELECTEDview, allowing you to play the music and see the individual notes in each chord. I’m hoping most of the chord codes will be self-explanatory. Inversions are shown with their standard numbers, for example I6 is a first inversion major chord. Key modulations are shown with a slash, so for example V/6 is a secondary dominant V/vi chord (i.e. E major if the progression is in the key of C).

Controls along the left edge allow filtering by artist/song name, tonic progression, type of progression and key signature.

The data was graciously provided by The songs are broken up into sections like a chorus, verse or bridge, so each section is treated individually. For each section the chords are described with a code from which the individual notes can be extracted and the number of beats it’s played for.

Visit Site

Published: February 4, 2017



Personal Project

Song Visualizer