Harmonic Analysis of Popular Music
Budget: $10 – $30 USD
I need a project related to digital musicology. More related, I need to create a chord progression analysis. This is my project brief:
Context and Data Sources
This project draws upon two core data sources. The primary dataset, introduced by Kantarelis et al.
(2024), includes detailed harmonic annotations for roughly 666,000 songs. Each record breaks down chord
progressions by song sections (intro, verse, chorus, etc.), includes metadata such as release year and genre, and
spans a wide temporal range from the 1950s to the early 2020s. Notably, it also includes a Spotify identifier
for each track, facilitating the enrichment of the dataset with additional information via the Spotify Web
API, like artist/song name and popularity.
Research Question 1: Temporal Evolution of Chord Progressions
The first research question explores: How have harmonic structures in popular music evolved from the 1950s
to the 2020s? To investigate this, I will segment the data into decade-long bins based on release dates.
This temporal granularity allows for trend analysis while maintaining enough data per group for meaningful
statistical interpretation.
The analysis begins by cleaning and tokenizing raw chord strings: section markers like <chorus> are removed via regular expressions, chord names are normalized (eg. “Bmin” standardized to “bmin”), and
each song’s sequence of chords is represented as a list of tokens. From these lists, I will extract contiguous
n-grams—primarily trigrams and four-grams—as atomic progression units. Aggregating these across each
decade, I will compute the frequency distribution of the top progressions, tracing trajectories such as the
rise and fall of the ubiquitous I–V–vi–IV pattern.
To move beyond surface-level frequency counts, I will employ functional harmony analysis. This involves
estimating the key of each song (using a heuristic based on the circle of fifths and chord distributions),
and mapping each chord to its Roman numeral function—tonic (I), dominant (V), subdominant (IV), and
so forth. By summarizing the functional relationships between chords, I can capture shifts in harmonic
grammar across decades. For instance, I might observe an increased use of deceptive cadences or diminished
chords in modern pop relative to earlier eras.
I will also compute the Shannon entropy of chord distributions within songs, which measures harmonic
unpredictability. Averaging entropy per decade can indicate whether compositions have grown more complex
(higher entropy) or harmonically conservative (lower entropy) over time. To support these analyses, several
statistical methods will be employed. The Mann–Kendall test, a non-parametric test for monotonic trends,
will be used to identify upward or downward trajectories in progression usage and entropy. One-way ANOVA
will assess whether differences in harmonic variety across decades are statistically significant. Chi-square
1
tests will help detect significant shifts in functional chord roles. Visualizations will play a central role as well:
animated line plots will trace progression trends, heatmaps will depict chord transitions in circle-of-fifths
order, and confidence-banded time series will visualize entropy evolution.
Research Question 2: Genre-Specific Harmonic Signatures
The second research question considers stylistic identity: What harmonic features characterize different
music genres? Here, I will segment the dataset based on each song’s primary genre, resolving multi-label
entries by selecting the dominant genre via Spotify’s main genre field.
Chord sequences for each genre subset will be cleaned and functionally tagged using the same pipeline
described for RQ1. Then, I will apply a TF-IDF weighting scheme to chord trigrams. This method highlights
progressions that are disproportionately frequent in one genre but rare in others, revealing genre-defining
harmonic fingerprints (e.g., ii–V–I in jazz or vi–IV–I–V in pop rock).
To capture dynamic harmonic movement, I will build first-order Markov models of functional transitions
within each genre. These matrices encode the probabilities of moving from one functional chord type to
another, uncovering genre-specific tendencies like dominant–tonic resolution in classical or loop-based progression cycles in electronic music. To quantify and visualize genre separation, I will create vector representations of chord sequences using Word2Vec. This technique, commonly used in NLP, captures semantic
similarity by embedding chords in a high-dimensional space based on their contextual co-occurrence. By
aggregating embeddings at the song level and reducing dimensionality with t-SNE or UMAP, I can plot
the “harmonic landscape” of genres, observing how closely or distantly they cluster. Metrics like silhouette
scores will measure how distinct these genre clusters are.
For statistical validation, I will compute log-odds ratios with Dirichlet priors to identify chord progressions
that are significantly over-represented in one genre versus the corpus. Additionally, a genre classifier will be
trained using progression-based embeddings as features. Classification accuracy and F1 scores on a hold-out
test set will assess how well harmonic content alone predicts genre affiliation. Several visualizations will
support this exploration: chord-wheel diagrams for top genre-specific trigrams; Sankey diagrams illustrating
common functional transitions per genre; scatterplots of embedding projections showing harmonic proximities; and boxplots comparing tension-release indices across genres, quantifying each style’s harmonic pacing
and resolution behavior.
Context and Data Sources
This project draws upon two core data sources. The primary dataset, introduced by Kantarelis et al.
(2024), includes detailed harmonic annotations for roughly 666,000 songs. Each record breaks down chord
progressions by song sections (intro, verse, chorus, etc.), includes metadata such as release year and genre, and
spans a wide temporal range from the 1950s to the early 2020s. Notably, it also includes a Spotify identifier
for each track, facilitating the enrichment of the dataset with additional information via the Spotify Web
API, like artist/song name and popularity.
Research Question 1: Temporal Evolution of Chord Progressions
The first research question explores: How have harmonic structures in popular music evolved from the 1950s
to the 2020s? To investigate this, I will segment the data into decade-long bins based on release dates.
This temporal granularity allows for trend analysis while maintaining enough data per group for meaningful
statistical interpretation.
The analysis begins by cleaning and tokenizing raw chord strings: section markers like <chorus> are removed via regular expressions, chord names are normalized (eg. “Bmin” standardized to “bmin”), and
each song’s sequence of chords is represented as a list of tokens. From these lists, I will extract contiguous
n-grams—primarily trigrams and four-grams—as atomic progression units. Aggregating these across each
decade, I will compute the frequency distribution of the top progressions, tracing trajectories such as the
rise and fall of the ubiquitous I–V–vi–IV pattern.
To move beyond surface-level frequency counts, I will employ functional harmony analysis. This involves
estimating the key of each song (using a heuristic based on the circle of fifths and chord distributions),
and mapping each chord to its Roman numeral function—tonic (I), dominant (V), subdominant (IV), and
so forth. By summarizing the functional relationships between chords, I can capture shifts in harmonic
grammar across decades. For instance, I might observe an increased use of deceptive cadences or diminished
chords in modern pop relative to earlier eras.
I will also compute the Shannon entropy of chord distributions within songs, which measures harmonic
unpredictability. Averaging entropy per decade can indicate whether compositions have grown more complex
(higher entropy) or harmonically conservative (lower entropy) over time. To support these analyses, several
statistical methods will be employed. The Mann–Kendall test, a non-parametric test for monotonic trends,
will be used to identify upward or downward trajectories in progression usage and entropy. One-way ANOVA
will assess whether differences in harmonic variety across decades are statistically significant. Chi-square
1
tests will help detect significant shifts in functional chord roles. Visualizations will play a central role as well:
animated line plots will trace progression trends, heatmaps will depict chord transitions in circle-of-fifths
order, and confidence-banded time series will visualize entropy evolution.
Research Question 2: Genre-Specific Harmonic Signatures
The second research question considers stylistic identity: What harmonic features characterize different
music genres? Here, I will segment the dataset based on each song’s primary genre, resolving multi-label
entries by selecting the dominant genre via Spotify’s main genre field.
Chord sequences for each genre subset will be cleaned and functionally tagged using the same pipeline
described for RQ1. Then, I will apply a TF-IDF weighting scheme to chord trigrams. This method highlights
progressions that are disproportionately frequent in one genre but rare in others, revealing genre-defining
harmonic fingerprints (e.g., ii–V–I in jazz or vi–IV–I–V in pop rock).
To capture dynamic harmonic movement, I will build first-order Markov models of functional transitions
within each genre. These matrices encode the probabilities of moving from one functional chord type to
another, uncovering genre-specific tendencies like dominant–tonic resolution in classical or loop-based progression cycles in electronic music. To quantify and visualize genre separation, I will create vector representations of chord sequences using Word2Vec. This technique, commonly used in NLP, captures semantic
similarity by embedding chords in a high-dimensional space based on their contextual co-occurrence. By
aggregating embeddings at the song level and reducing dimensionality with t-SNE or UMAP, I can plot
the “harmonic landscape” of genres, observing how closely or distantly they cluster. Metrics like silhouette
scores will measure how distinct these genre clusters are.
For statistical validation, I will compute log-odds ratios with Dirichlet priors to identify chord progressions
that are significantly over-represented in one genre versus the corpus. Additionally, a genre classifier will be
trained using progression-based embeddings as features. Classification accuracy and F1 scores on a hold-out
test set will assess how well harmonic content alone predicts genre affiliation. Several visualizations will
support this exploration: chord-wheel diagrams for top genre-specific trigrams; Sankey diagrams illustrating
common functional transitions per genre; scatterplots of embedding projections showing harmonic proximities; and boxplots comparing tension-release indices across genres, quantifying each style’s harmonic pacing
and resolution behavior.