An illustrative tool for music harmony analysis
Welcome to the playground interface for the Harmony DB! I intend to make it a tool to help study and research the music theory, understand harmony movements by exploring the database, and find out how chord progressions can evolve.
There is a library of thousands of songs and their chords, development is ongoing. Currently, the Harmony DB contains information about the chord progressions used in the songs, and I try to do harmony analysis here. This project allows to explore the database and run queries on the Harmony DB index.
The future vision of the Harmony DB is to be able to handle requests of any complexity, corresponding to any kind of information you want to ask the database.
The Harmony DB is an open source project, hosted on Azure, and has a free and open API. Please contact me if you'd like to use it, or if you have any ideas about queries you'd like to run or needs you might have.
Available Queries
Here are the types of requests that are currently implemented:
✓ Search songs by chords sequence →
Allows you to find examples of songs that contain a given chord sequence. The results are sorted by coverage or by song rating.
✓ Search songs by title →
Allows you to find songs by partial words in title or artists.
✓ See the most popular chord progressions →
All songs have been analyzed and the chord progression loops (repetitive subsequences) have been extracted. This query shows all progressions, starting with the most popular.
For loops, statistics on how often a cycle continuously follows itself or how often it is followed by a different cycle is also calculated.
✓ Tonalities analysis →
View the analysis of song tonalities and chord progressions, including scores, probabilities, and weights. This area is usable for model refinement and adjustment. It also aids in understanding tonality detection and allows for exploration through detailed filters.
More queries and visuals coming
Here are some ideas and future development plans. Please drop me a line if you have items you would like to see added to this list.
- Analysis of how different chord sequences can continue, similar to that of the Hooktheory TheoryTab DB. It will allow you to drill down the tree of possible progression continuation variants, with probabilities and examples of songs.
- Highlighting of found sequences and repeating loops in the song. IN PROGRESS
- Analysis and statistics of transitions from one sequence to another. IN PROGRESS
- Statistics on how often a loop tends to cover the whole song.
- Analyze the relationship between loops, how often they occur together in the same song (compatibility), and perhaps identify clusters of sequences that are more likely to occur together. IN PROGRESS
- Statistics of possible extra notes in the chords in the sequences (possible 7 / 9 / 11 / 13, bass notes, etc.) - and how it depends on the chord sequence.
- Tonality detection - what key is the song in? IN PROGRESS
- Chord substitution options within loops and their variations.
- Modulation detection - e.g. find songs with modulations 3 steps up, or how likely are the popular sequences to be in the songs with modulations, or find songs with modulations by a given artist, etc. IN PROGRESS
- Modulation options - possible transitions and their exact mechanisms, their connection points to the main sequences, etc. IN PROGRESS
- Bridge creation ideas based on existing bridges in songs with similar chord sequences, popularity of different bridges in different genres, etc.
- Harmonic analysis - detection and naming of chord functions in a given context, and detection of peculiarities of the development of song harmony in a given song.
- Display of maps showing how and where a given chord sequence loop may exit, with probabilities, and allowing to drill down into them.
- Display the statistical popularity of chord progressions in a given song.
- Calculate and display the harmonic uniqueness of songs and specific chords in a given context, allowing you to find the most unique songs or chords.
- Search for strange harmonies, mode deviations, borrowed chords, etc.
- What chord could be played instead in this spot? How can this sequence be altered?
- Enriching the database with data on genres, years, countries, allowing to include corresponding filters in queries and view corresponding output from queries, make corresponding grouping of results, etc.
- Work with unknown parameters. Search and evaluate beautiful or unusual songs by unknown parameters, try to identify these parameters and specific features, analyze the resulting data.
- Clustering moods or themes of songs based on lyrics using OpenAI GPT, trying to find relationships between moods and harmonies.
Do you have other ideas? I'd love to hear about them. Please post them in the GitHub discussions or contact me using one of the methods below.
Releases Notes
Release 2, 2024-07-17
- Important implementation of song structures index has started.
- Loops detection optimized for the future task: loops are now minimal, without repetitive chords inside.
- Tonalities detection. It is not as precise as I'd like it to be yet, but there's a convenient front-end to tune it.
- Displaying degrees of chords in progressions.
- All progressions are shown in the most probable key and begin with the tonic (if it exists).
Release 1, 2024-06-26
- The first release.
- Searching songs by chords.
- Searching songs by title or artists.
- Viewing the popular chords progressions.
-
Viewing songs with options:
- Highlighting the found progressions,
- Transpositions,
- Flats or sharps preference,
- Simplifying chords by removing 7, 9, basses, suses, 6, 11, 13,
- Detected loops displayed.
- English and Russian languages available.
- Permalinks available.
- Api traces for developers wishing to integrate with the API (please e-mail me if you'd like to).
Contacts
Author: Pavel Zhur
E-mail: completely.real@gmail.com
Telegram: @pavel_zhur
GitHub: https://github.com/pavel-zhur/HarmonyDB