This page documents the exact theoretical and computational mechanism behind the Chord Progression Maker on ChordProgressionMaker.com. It explains what the tool calculates, how each stage of the generation pipeline works, what the output represents in music theory terms, and what the tool cannot determine. For plain-language answers about how to use and interpret chord progression results, see the FAQ.
Important note: This tool involves no audio of any kind. No microphone is accessed. No files are uploaded. No network requests are made for tool output. The entire chord generation pipeline runs locally in your browser using JavaScript lookup tables and functional harmony rules. For full details on data handling, see the Data Security page.
The Theoretical Foundation — Functional Harmony
The Chord Progression Maker is built on functional harmony — the system that describes how chords relate to each other and to a tonal centre (the key). In functional harmony, every chord in a key belongs to one of three functional groups:
| Function | Scale Degrees | Role |
|---|---|---|
| Tonic | I, III, VI | Stability and rest — the “home” feeling |
| Subdominant | II, IV | Movement away from rest — preparation |
| Dominant | V, VII | Tension — strong pull toward resolution |
The logic of tonal harmony rests on the movement between these functions. A progression that moves Tonic → Subdominant → Dominant → Tonic follows the most fundamental harmonic arc in Western music. The specific chords occupying each function position vary by key and style, but the functional logic remains constant.
The Generation Pipeline — Step by Step
Step 1 — Key and Scale Construction
The user selects a root note (C, D, E, F, G, A, B, with sharps and flats) and a mode (major or natural minor). The tool constructs the diatonic scale for that key using the interval formula for the selected mode:
Major scale interval formula:
W – W – H – W – W – W – H
(W = whole step = 2 semitones, H = half step = 1 semitone)
Natural minor scale interval formula:
W – H – W – W – H – W – W
Worked example — C major: Starting at C (0 semitones): C(0) – D(2) – E(4) – F(5) – G(7) – A(9) – B(11) – C(12)
Worked example — A minor (natural): Starting at A (9 semitones): A(9) – B(11) – C(12) – D(14) – E(16) – F(17) – G(19) – A(21)
Step 2 — Diatonic Chord Construction
A diatonic chord is built by stacking thirds above each scale degree — using only the notes available in the scale. The quality of each chord (major, minor, diminished, augmented) is determined by the intervals between the stacked notes.
Triad quality is determined by:
- Root to third: major third (4 semitones) = major or augmented; minor third (3 semitones) = minor or diminished
- Root to fifth: perfect fifth (7 semitones) = major or minor; diminished fifth (6 semitones) = diminished; augmented fifth (8 semitones) = augmented
Diatonic triads in C major:
| Scale Degree | Note | Triad | Quality | Roman Numeral |
|---|---|---|---|---|
| 1 | C | C–E–G | Major | I |
| 2 | D | D–F–A | Minor | ii |
| 3 | E | E–G–B | Minor | iii |
| 4 | F | F–A–C | Major | IV |
| 5 | G | G–B–D | Major | V |
| 6 | A | A–C–E | Minor | vi |
| 7 | B | B–D–F | Diminished | vii° |
The same interval logic produces the diatonic chords for every key. In the tool’s JavaScript implementation, chord quality is computed from semitone intervals between stacked scale degrees — not from a static lookup table per key — meaning the generation is accurate for all 24 major and minor keys without hardcoded exceptions.
Step 3 — Seventh Chord Extension (Where Selected)
Where the selected progression style includes seventh chords, the tool adds the diatonic seventh above each triad using the same stacking-thirds logic:
Seventh chord qualities in C major:
| Roman Numeral | Chord | Seventh | Full Quality |
|---|---|---|---|
| Imaj7 | C–E–G–B | Major seventh | Major major 7th |
| ii7 | D–F–A–C | Minor seventh | Minor minor 7th |
| iii7 | E–G–B–D | Minor seventh | Minor minor 7th |
| IVmaj7 | F–A–C–E | Major seventh | Major major 7th |
| V7 | G–B–D–F | Minor seventh | Dominant 7th |
| vi7 | A–C–E–G | Minor seventh | Minor minor 7th |
| vii°7 / viiø7 | B–D–F–A | Minor seventh | Half-diminished 7th |
The V7 chord — dominant seventh — is the most harmonically active chord in tonal music. Its minor seventh above the root creates a tritone interval with the major third that resolves predictably to the tonic. The tool labels this chord correctly as a dominant seventh (not a major seventh) in all keys.
Step 4 — Functional Group Assignment
Each diatonic chord is assigned to its functional group:
| Function | Major Key Chords | Minor Key Chords |
|---|---|---|
| Tonic | I, iii, vi | i, III, VI |
| Subdominant | ii, IV | ii°, iv, VI |
| Dominant | V, vii° | V, VII, vii° |
Note: In harmonic minor and melodic minor contexts, the V chord is raised to a major chord (V instead of v) to preserve the leading tone. The tool applies this raising automatically when the dominant position is selected in a minor key progression.
Step 5 — Progression Pattern Application
The user selects a progression style — common patterns such as I–IV–V–I, I–V–vi–IV, ii–V–I, or custom functional sequences. The tool maps the selected pattern onto the diatonic chord set for the chosen key, substituting the actual chord names and qualities for the Roman numeral positions.
Worked example — I–V–vi–IV in G major:
| Position | Roman Numeral | Chord | Quality |
|---|---|---|---|
| 1 | I | G | Major |
| 2 | V | D | Major |
| 3 | vi | Em | Minor |
| 4 | IV | C | Major |
The output presents the chord names, qualities, Roman numerals, and functional roles so the musician can see both the specific chords and the underlying theory simultaneously.
Step 6 — Output Display
The generated progression is displayed with:
- Chord names (e.g. G, D, Em, C)
- Roman numeral labels (I, V, vi, IV)
- Chord quality (major, minor, diminished, dominant 7th, etc.)
- Functional role (Tonic, Dominant, Tonic, Subdominant)
- Optional: suggested voicings, related substitutions, or alternative progressions in the same functional family
What the Algorithm Produces Accurately
- Diatonic chord names and qualities for all 24 major and natural minor keys
- Correct Roman numeral assignment including uppercase (major) and lowercase (minor/diminished) convention
- Correct seventh chord qualities including the distinction between major 7th (Imaj7) and dominant 7th (V7)
- Correct automatic raising of the V chord in minor keys where the leading tone is required
- Enharmonic note naming following standard theoretical convention (e.g. F# not G♭ in G major)
What This Tool Cannot Determine
Whether a progression “works” in a specific musical context A progression that is theoretically correct according to diatonic harmony rules may or may not suit a specific song, genre, tempo, or emotional intent. Harmonic appropriateness is contextual. The tool generates progressions that are theoretically grounded — not progressions that are guaranteed to work for any specific creative purpose.
Voice leading quality The tool generates chord names and Roman numerals. It does not specify voicings or calculate the movement of individual voices between chords. Two progressions with identical Roman numerals can sound dramatically different depending on how the chords are voiced and how voices move between them.
Harmonic rhythm The tool does not determine how long each chord should last or how the progression should be phrased rhythmically. Harmonic rhythm is a compositional decision that affects the feel of a progression as much as the chord choices themselves.
Genre-specific conventions Some chords that are theoretically correct in the diatonic system are rarely used in certain genres. The tool generates chords based on diatonic harmony — not based on genre conventions that may override or modify standard harmonic practice.
Enharmonic context The tool applies standard enharmonic conventions but cannot determine whether a specific enharmonic spelling (e.g. C# vs D♭) is the more appropriate choice given the surrounding harmonic context of a full composition.
Related Pages
- FAQ — plain-language answers about progression results and music theory questions
- Data Security — why this tool involves no audio, no personal data, and no data transmission
- About ChordProgressionMaker.com — who runs this site and why it was built
- Contact — to report theory errors or ask technical questions
Written by Emily Sanders, founder of ChordProgressionMaker.com. Last updated: June 2026.
