A copy of the chord sequence.
The carried key context, if any.
The number of chords.
A copy of this progression with a chord appended.
The chord to append.
The new progression.
A copy of this progression carrying the given key context.
The key context to attach.
The new progression.
Voice the progression with smooth voice leading.
Optionalopts: VoicingOptions
Voicing options; defaults to four SATB voices.
One ascending voicing (MIDI pitches) per chord.
The Roman numeral of each chord in a key.
Optionalkey: Key
Key to analyze in; falls back to the carried context.
One numeral per chord.
The harmonic function of each chord in a key.
Optionalkey: Key
Key to analyze in; falls back to the carried context.
One function per chord.
Analyze every chord and classify the closing cadence.
The cadence is detected on the final chord pair and is null when the progression has fewer than two chords.
Optionalkey: Key
Key to analyze in; falls back to the carried context.
Per-chord analyses and the closing cadence.
The plain progression data, for JSON serialization.
Private class fields do not serialize, so an explicit toJSON keeps
JSON.stringify(progression) from collapsing to {}. The chords are
emitted as plain data and the carried key, when present, as its own data.
The chord data sequence and the carried key, if any.
An immutable ordered sequence of chords, optionally carrying a Key context shared by its analysis methods.
Example