Universal Music Theory Library - v0.12.0
    Preparing search index...

    Function parseRomanProgression

    • Parses a Roman numeral progression in a given key into an array of Chord objects.

      • Case gives the third: I, IV, V major; ii, iii, vi minor
      • What the numeral leaves unsaid comes from the key: vii in C major is Bdim, ii7 is Dm7, vii7 is Bm7b5. A third that is not the key's gives the plain chord of the case: II is D, iv7 in major Fm7
      • Upper-case 7 is a dominant seventh (jazz convention): V7 G7, I7 C7, IV7 F7; the major seventh is written maj7 (Imaj7). dom is an alias (Idom7)
      • Any other suffix is a chord type, read like parseChordSymbol (dictionary, then compositional); lower case adds the minor third: ii9 is Dm9, V7b9 G7b9, viiø7 Bm7b5, vii°7 Bdim7. An unknown suffix throws
      • Accidentals move the key's own degree: bVII in C major is Bb, bII in A minor is Bb. In minor, VII and VI are the natural degrees (G and F in A minor), and vii°, vii°7, viiø7 stand on the raised leading tone (G#)
      • Applied chords: V7/ii, vii°7/V, V/bVI (read in the major or minor key of the target, as its case says)
      • Tritone substitution: subV7, subV7/ii
      • Inversion figures at the end: 63 and 64 for triads (iv63 in A minor is Dm/F, I64 C/G), 65, 43 and 42 for the key's seventh chord (V65 G7/B, I65 Cmaj7/E, ii43 Dm7/A; viiø65, vii°43). A bare 6 stays the added-sixth chord (IV6 is F6)

      Roots are named as the key writes them (bII in E major is F, V/vi in Db major is Ab). Example: parseRomanProgression("ii7 V7 subV7/ii Imaj7", "C major")

      Parameters

      • progression: string

        Space- or hyphen-separated Roman numeral tokens.

      • keySymbol: string

        Seven-note key, e.g. "C major", "A minor", "D dorian".

      • tuning: TuningSystem = TET12

        Target tuning system (default: 12-TET). Chords are built as in parseChordSymbol, with intervals mapped by getStepFromStandard.

      • octave: number = 4

        Octave of the key's tonic (default: 4).

      Returns Chord[]

      on an invalid numeral, an unknown suffix or a key that is not heptatonic.