How It Works — ChordProgressionMaker


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:

FunctionScale DegreesRole
TonicI, III, VIStability and rest — the “home” feeling
SubdominantII, IVMovement away from rest — preparation
DominantV, VIITension — 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 DegreeNoteTriadQualityRoman Numeral
1CC–E–GMajorI
2DD–F–AMinorii
3EE–G–BMinoriii
4FF–A–CMajorIV
5GG–B–DMajorV
6AA–C–EMinorvi
7BB–D–FDiminishedvii°

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 NumeralChordSeventhFull Quality
Imaj7C–E–G–BMajor seventhMajor major 7th
ii7D–F–A–CMinor seventhMinor minor 7th
iii7E–G–B–DMinor seventhMinor minor 7th
IVmaj7F–A–C–EMajor seventhMajor major 7th
V7G–B–D–FMinor seventhDominant 7th
vi7A–C–E–GMinor seventhMinor minor 7th
vii°7 / viiø7B–D–F–AMinor seventhHalf-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:

FunctionMajor Key ChordsMinor Key Chords
TonicI, iii, vii, III, VI
Subdominantii, IVii°, iv, VI
DominantV, 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:

PositionRoman NumeralChordQuality
1IGMajor
2VDMajor
3viEmMinor
4IVCMajor

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.

Scroll to Top