A zero-dependency TypeScript engine reads chord symbols (sevenths, extensions, alterations, sus chords and slash basses) and finds the key. It does this by correlating a duration-weighted pitch-class histogram with Krumhansl–Kessler key profiles.
Every chord gets a Roman numeral and exactly one function: tonic, predominant, dominant or passing. When no device explains a chord, its function is inferred from its root degree and marked as inferred. The analyser names secondary dominants, augmented sixths, the Neapolitan, common-tone and passing diminished chords, chromatic mediants, altered dominants and modal interchange (naming the source mode). Augmented triads and diminished sevenths are read by where they resolve. Each chord comes with a one- or two-sentence explanation.
Across several chords it marks pedal points, line clichés, lament basses, Mixolydian and Dorian vamps and Coltrane cycles. A sliding-window key tracker smoothed by dynamic programming separates modulations from brief tonicisations and finds pivot chords.
A circle-of-fifths view draws the progression as a path on three rings (major, minor, diminished), shades the key's diatonic window, and marks each root move by colour and line style, so falling-fifth chains, tritone substitutions and Coltrane triangles are visible at a glance.
A simplified version of Lerdahl's Tonal Pitch Space turns the progression into a tension curve. You draw a target curve, and a beam search returns up to five alternatives, each with a plain-language reason for every change. It uses seven named substitution rules plus four optional advanced ones: augmented-sixth approach, Neapolitan approach, backdoor ii–V and chromatic-mediant substitution.
A library of 35 named progressions, from the axis progression to Coltrane changes, loads into the analyser in any key. Each progression lists one or two well-known songs by title and artist only, and a song was listed only if a web source confirmed that it uses the progression.
A voicing generator enumerates playable shapes in standard tuning, and a Viterbi dynamic program picks one per chord, trading hand movement against voice-leading and fingering difficulty. A Karplus–Strong plucked-string synth strums the result, and a capo helper and a text tab make it usable at rehearsal.