Class ModalProgressions
Common progressions and characteristic movements for each modal system.
public static class ModalProgressions
- Inheritance
-
ModalProgressions
- Inherited Members
Fields
AeolianProgressions
Aeolian (Natural Minor) progressions.
public static readonly IReadOnlyList<ModalProgression> AeolianProgressions
Field Value
DorianProgressions
Dorian progressions (minor with raised 6th).
public static readonly IReadOnlyList<ModalProgression> DorianProgressions
Field Value
HarmonicMinorProgressions
Harmonic Minor progressions.
public static readonly IReadOnlyList<ModalProgression> HarmonicMinorProgressions
Field Value
IonianProgressions
Ionian (Major) progressions.
public static readonly IReadOnlyList<ModalProgression> IonianProgressions
Field Value
LocrianProgressions
Locrian progressions (diminished, rare).
public static readonly IReadOnlyList<ModalProgression> LocrianProgressions
Field Value
LydianDominantProgressions
Lydian Dominant progressions (jazz fusion).
public static readonly IReadOnlyList<ModalProgression> LydianDominantProgressions
Field Value
LydianProgressions
Lydian progressions (major with raised 4th).
public static readonly IReadOnlyList<ModalProgression> LydianProgressions
Field Value
MelodicMinorProgressions
Melodic Minor progressions.
public static readonly IReadOnlyList<ModalProgression> MelodicMinorProgressions
Field Value
MixolydianProgressions
Mixolydian progressions (major with lowered 7th).
public static readonly IReadOnlyList<ModalProgression> MixolydianProgressions
Field Value
PhrygianDominantProgressions
Phrygian Dominant progressions (flamenco).
public static readonly IReadOnlyList<ModalProgression> PhrygianDominantProgressions
Field Value
PhrygianProgressions
Phrygian progressions (minor with lowered 2nd).
public static readonly IReadOnlyList<ModalProgression> PhrygianProgressions
Field Value
Methods
Analyze(string[], int?)
Analyze a chord progression in a modal context. Detects the most likely mode (Ionian/Dorian/Phrygian/Mixolydian/etc.), matches a characteristic modal progression, and flags modal mixture (borrowed chords).
public static ModalProgressions.ModalProgressionAnalysisResult Analyze(string[] chordSymbols, int? rootHint = null)
Parameters
Returns
Exceptions
- ArgumentNullException
chordSymbolsis null.
DetectModalProgression(ReadOnlySpan<int>)
Detect if a progression matches a known modal pattern.
public static (Mode mode, ModalProgression? match, float confidence) DetectModalProgression(ReadOnlySpan<int> romanNumerals)
Parameters
romanNumeralsReadOnlySpan<int>
Returns
Remarks
Patterns are matched on bare scale-degree numbers (1-7): chord qualities and alterations are not represented, so degree sequences shared by several modes (e.g. 1-7-1, which is I-bVII-I in Mixolydian but i-VII-i in Aeolian) cannot be distinguished by this method alone. Confidence is the fraction of the PATTERN found in the input, so a short pattern is easier to match whole than a long one; when two match equally well the longer one wins, because it accounts for more of the music. When they are the same length too, the tie is resolved by mode enumeration order (Ionian, Dorian, Phrygian, Lydian, Mixolydian, Aeolian, Locrian, then the altered modes) — the first mode tried wins. Treat the returned mode as a plausible reading, not a unique identification.
GetProgressionsForMode(Mode)
Get characteristic progressions for a given mode. The seven diatonic modes, harmonic and melodic minor, Phrygian dominant and Lydian dominant have a catalogue each; a mode with none — the pentatonics, blues, whole tone, the diminished scales, altered, Locrian natural 2 — returns an empty list.
public static IReadOnlyList<ModalProgression> GetProgressionsForMode(Mode mode)
Parameters
modeMode
Returns
Remarks
Those modes used to return the major catalogue instead, so a whole-tone progression could be reported as an "Authentic cadence" — a progression built on the perfect fifth the whole-tone scale does not contain.
Exceptions
- ArgumentOutOfRangeException
modeis not a defined Mode value.