Table of Contents

Class ModalProgressions

Namespace
Celeritas.Core.Analysis
Assembly
Celeritas.dll

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

IReadOnlyList<ModalProgression>

DorianProgressions

Dorian progressions (minor with raised 6th).

public static readonly IReadOnlyList<ModalProgression> DorianProgressions

Field Value

IReadOnlyList<ModalProgression>

HarmonicMinorProgressions

Harmonic Minor progressions.

public static readonly IReadOnlyList<ModalProgression> HarmonicMinorProgressions

Field Value

IReadOnlyList<ModalProgression>

IonianProgressions

Ionian (Major) progressions.

public static readonly IReadOnlyList<ModalProgression> IonianProgressions

Field Value

IReadOnlyList<ModalProgression>

LocrianProgressions

Locrian progressions (diminished, rare).

public static readonly IReadOnlyList<ModalProgression> LocrianProgressions

Field Value

IReadOnlyList<ModalProgression>

LydianDominantProgressions

Lydian Dominant progressions (jazz fusion).

public static readonly IReadOnlyList<ModalProgression> LydianDominantProgressions

Field Value

IReadOnlyList<ModalProgression>

LydianProgressions

Lydian progressions (major with raised 4th).

public static readonly IReadOnlyList<ModalProgression> LydianProgressions

Field Value

IReadOnlyList<ModalProgression>

MelodicMinorProgressions

Melodic Minor progressions.

public static readonly IReadOnlyList<ModalProgression> MelodicMinorProgressions

Field Value

IReadOnlyList<ModalProgression>

MixolydianProgressions

Mixolydian progressions (major with lowered 7th).

public static readonly IReadOnlyList<ModalProgression> MixolydianProgressions

Field Value

IReadOnlyList<ModalProgression>

PhrygianDominantProgressions

Phrygian Dominant progressions (flamenco).

public static readonly IReadOnlyList<ModalProgression> PhrygianDominantProgressions

Field Value

IReadOnlyList<ModalProgression>

PhrygianProgressions

Phrygian progressions (minor with lowered 2nd).

public static readonly IReadOnlyList<ModalProgression> PhrygianProgressions

Field Value

IReadOnlyList<ModalProgression>

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

chordSymbols string[]
rootHint int?

Returns

ModalProgressions.ModalProgressionAnalysisResult

Exceptions

ArgumentNullException

chordSymbols is 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

romanNumerals ReadOnlySpan<int>

Returns

(Mode mode, ModalProgression? match, float confidence)

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

mode Mode

Returns

IReadOnlyList<ModalProgression>

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

mode is not a defined Mode value.