12tet
Version:
Music theory library for generating and working with chords, modes, intervals, etc.
262 lines (261 loc) • 22.2 kB
TypeScript
import { ChordNumeral, DiatonicChordBase } from "../chord";
import { Interval, ShortIntervalName } from "../interval";
import { IonianKey, DorianKey, LocrianKey, LydianKey, MixolydianKey, AeolianKey, PhrygianKey } from "../key";
declare const MODE_NAMES: readonly ["Ionian", "Dorian", "Phrygian", "Lydian", "Mixolydian", "Aeolian", "Locrian"];
export type ModeName = typeof MODE_NAMES[number];
export declare function isModeName(name: any): name is ModeName;
export declare const modeNames: ModeName[];
declare const NEUTRAL_MODE_KEY_SIGNATURES: readonly [""];
export type NeutralModeKeySignature = typeof NEUTRAL_MODE_KEY_SIGNATURES[number];
export declare function isNeutralModeKeySignature(signature: any): signature is NeutralModeKeySignature;
export declare const neutralModeKeySignatures: NeutralModeKeySignature[];
declare const STANDARD_SHARP_MODE_KEY_SIGNATURES: readonly ["1#", "2#", "3#", "4#", "5#", "6#", "7#"];
export type StandardSharpModeKeySignature = typeof STANDARD_SHARP_MODE_KEY_SIGNATURES[number];
export declare function isStandardSharpModeKeySignature(signature: any): signature is StandardSharpModeKeySignature;
export declare const standardSharpModeKeySignatures: StandardSharpModeKeySignature[];
declare const THEORETICAL_SHARP_MODE_KEY_SIGNATURES: readonly ["8#", "9#", "10#", "11#", "12#", "13#", "14#"];
export type TheoreticalSharpModeKeySignature = typeof THEORETICAL_SHARP_MODE_KEY_SIGNATURES[number];
export declare function isTheoreticalSharpModeKeySignature(signature: any): signature is TheoreticalSharpModeKeySignature;
export declare const theoreticalSharpModeKeySignatures: TheoreticalSharpModeKeySignature[];
declare const SHARP_MODE_KEY_SIGNATURES: readonly ["1#", "2#", "3#", "4#", "5#", "6#", "7#", "8#", "9#", "10#", "11#", "12#", "13#", "14#"];
export type SharpModeKeySignature = typeof SHARP_MODE_KEY_SIGNATURES[number];
export declare function isSharpModeKeySignature(signature: any): signature is SharpModeKeySignature;
export declare const sharpModeKeySignatures: SharpModeKeySignature[];
declare const STANDARD_FLAT_MODE_KEY_SIGNATURES: readonly ["7b", "6b", "5b", "4b", "3b", "2b", "1b"];
export type StandardFlatModeKeySignature = typeof STANDARD_FLAT_MODE_KEY_SIGNATURES[number];
export declare function isStandardFlatModeKeySignature(signature: any): signature is StandardFlatModeKeySignature;
export declare const standardFlatModeKeySignatures: StandardFlatModeKeySignature[];
declare const THEORETICAL_FLAT_MODE_KEY_SIGNATURES: readonly ["14b", "13b", "12b", "11b", "10b", "9b", "8b"];
export type TheoreticalFlatModeKeySignature = typeof THEORETICAL_FLAT_MODE_KEY_SIGNATURES[number];
export declare function isTheoreticalFlatModeKeySignature(signature: any): signature is TheoreticalFlatModeKeySignature;
export declare const theoreticalFlatModeKeySignatures: TheoreticalFlatModeKeySignature[];
declare const FLAT_MODE_KEY_SIGNATURES: readonly ["14b", "13b", "12b", "11b", "10b", "9b", "8b", "7b", "6b", "5b", "4b", "3b", "2b", "1b"];
export type FlatModeKeySignature = typeof FLAT_MODE_KEY_SIGNATURES[number];
export declare function isFlatModeKeySignature(signature: any): signature is FlatModeKeySignature;
export declare const flatModeKeySignatures: FlatModeKeySignature[];
declare const STANDARD_MODE_KEY_SIGNATURES: readonly ["", "1#", "2#", "3#", "4#", "5#", "6#", "7#", "7b", "6b", "5b", "4b", "3b", "2b", "1b"];
export type StandardModeKeySignature = typeof STANDARD_MODE_KEY_SIGNATURES[number];
export declare function isStandardModeKeySignature(signature: any): signature is StandardModeKeySignature;
export declare const standardModeKeySignatures: StandardModeKeySignature[];
declare const THEORETICAL_MODE_KEY_SIGNATURES: readonly ["8#", "9#", "10#", "11#", "12#", "13#", "14#", "14b", "13b", "12b", "11b", "10b", "9b", "8b"];
export type TheoreticalModeKeySignature = typeof THEORETICAL_MODE_KEY_SIGNATURES[number];
export declare function isTheoreticalModeKeySignature(signature: any): signature is TheoreticalModeKeySignature;
export declare const theoreticalModeKeySignatures: TheoreticalModeKeySignature[];
declare const MODE_KEY_SIGNATURES: readonly ["", "1#", "2#", "3#", "4#", "5#", "6#", "7#", "8#", "9#", "10#", "11#", "12#", "13#", "14#", "14b", "13b", "12b", "11b", "10b", "9b", "8b", "7b", "6b", "5b", "4b", "3b", "2b", "1b"];
export type ModeKeySignature = typeof MODE_KEY_SIGNATURES[number];
export declare function isModeKeySignature(signature: any): signature is ModeKeySignature;
export declare const modeKeySignatures: ModeKeySignature[];
declare const STANDARD_MODE_DEGREES: readonly ["1", "2", "3", "4", "5", "6", "7"];
export type StandardModeDegree = typeof STANDARD_MODE_DEGREES[number];
export declare function isStandardModeDegree(degree: any): degree is StandardModeDegree;
export declare const standardModeDegrees: StandardModeDegree[];
declare const ALTERED_MODE_DEGREES: readonly ["b1", "#1", "b2", "#2", "b3", "#3", "b4", "#4", "b5", "#5", "b6", "#6", "b7", "#7"];
export type AlteredModeDegree = typeof ALTERED_MODE_DEGREES[number];
export declare function isAlteredModeDegree(degree: any): degree is AlteredModeDegree;
export declare const alteredModeDegrees: AlteredModeDegree[];
declare const MODE_DEGREES: readonly ["1", "2", "3", "4", "5", "6", "7", "b1", "#1", "b2", "#2", "b3", "#3", "b4", "#4", "b5", "#5", "b6", "#6", "b7", "#7"];
export type ModeDegree = typeof MODE_DEGREES[number];
export declare function isModeDegree(degree: any): degree is ModeDegree;
export declare const modeDegrees: ModeDegree[];
declare const MODE_DEGREE_NAMES: readonly ["Tonic", "Supertonic", "Mediant", "Subdominant", "Dominant", "Submediant", "Subtonic", "Leading Tone"];
export type ModeDegreeName = typeof MODE_DEGREE_NAMES[number];
export declare function isModeDegreeName(degreeName: any): degreeName is ModeDegreeName;
export declare const modeDegreeNames: ModeDegreeName[];
declare const IONIAN_STANDARD_TONICS: readonly ["C", "G", "D", "A", "E", "B", "F#", "C#", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "F"];
export type IonianStandardTonic = typeof IONIAN_STANDARD_TONICS[number];
export declare function isIonianStandardTonic(note: any): note is IonianStandardTonic;
export declare const ionianStandardTonics: IonianStandardTonic[];
declare const IONIAN_THEORETICAL_TONICS: readonly ["G#", "D#", "A#", "E#", "B#", "F##", "C##", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb"];
export type IonianTheoreticalTonic = typeof IONIAN_THEORETICAL_TONICS[number];
export declare function isIonianTheoreticalTonic(note: any): note is IonianTheoreticalTonic;
export declare const ionianTheoreticalTonics: IonianTheoreticalTonic[];
declare const IONIAN_TONICS: readonly ["C", "G", "D", "A", "E", "B", "F#", "C#", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "F", "G#", "D#", "A#", "E#", "B#", "F##", "C##", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb"];
export type IonianTonic = typeof IONIAN_TONICS[number];
export declare function isIonianTonic(note: any): note is IonianTonic;
export declare const ionianTonics: IonianTonic[];
declare const DORIAN_STANDARD_TONICS: readonly ["D", "A", "E", "B", "F#", "C#", "G#", "D#", "Db", "Ab", "Eb", "Bb", "F", "C", "G"];
export type DorianStandardTonic = typeof DORIAN_STANDARD_TONICS[number];
export declare function isDorianStandardTonic(note: any): note is DorianStandardTonic;
export declare const dorianStandardTonics: DorianStandardTonic[];
declare const DORIAN_THEORETICAL_TONICS: readonly ["A#", "E#", "B#", "F##", "C##", "G##", "D##", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb"];
export type DorianTheoreticalTonic = typeof DORIAN_THEORETICAL_TONICS[number];
export declare function isDorianTheoreticalTonic(note: any): note is DorianTheoreticalTonic;
export declare const dorianTheoreticalTonics: DorianTheoreticalTonic[];
declare const DORIAN_TONICS: readonly ["D", "A", "E", "B", "F#", "C#", "G#", "D#", "Db", "Ab", "Eb", "Bb", "F", "C", "G", "A#", "E#", "B#", "F##", "C##", "G##", "D##", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb"];
export type DorianTonic = typeof DORIAN_TONICS[number];
export declare function isDorianTonic(note: any): note is DorianTonic;
export declare const dorianTonics: DorianTonic[];
declare const PHRYGIAN_STANDARD_TONICS: readonly ["E", "B", "F#", "C#", "G#", "D#", "A#", "E#", "Eb", "Bb", "F", "C", "G", "D", "A"];
export type PhrygianStandardTonic = typeof PHRYGIAN_STANDARD_TONICS[number];
export declare function isPhrygianStandardTonic(note: any): note is PhrygianStandardTonic;
export declare const phrygianStandardTonics: PhrygianStandardTonic[];
declare const PHRYGIAN_THEORETICAL_TONICS: readonly ["B#", "F##", "C##", "G##", "D##", "A##", "E##", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab"];
export type PhrygianTheoreticalTonic = typeof PHRYGIAN_THEORETICAL_TONICS[number];
export declare function isPhrygianTheoreticalTonic(note: any): note is PhrygianTheoreticalTonic;
export declare const phrygianTheoreticalTonics: PhrygianTheoreticalTonic[];
declare const PHRYGIAN_TONICS: readonly ["E", "B", "F#", "C#", "G#", "D#", "A#", "E#", "Eb", "Bb", "F", "C", "G", "D", "A", "B#", "F##", "C##", "G##", "D##", "A##", "E##", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab"];
export type PhrygianTonic = typeof PHRYGIAN_TONICS[number];
export declare function isPhrygianTonic(note: any): note is PhrygianTonic;
export declare const phrygianTonics: PhrygianTonic[];
declare const LYDIAN_STANDARD_TONICS: readonly ["F", "C", "G", "D", "A", "E", "B", "F#", "Fb", "Cb", "Gb", "Db", "Ab", "Eb", "Bb"];
export type LydianStandardTonic = typeof LYDIAN_STANDARD_TONICS[number];
export declare function isLydianStandardTonic(note: any): note is LydianStandardTonic;
export declare const lydianStandardTonics: LydianStandardTonic[];
declare const LYDIAN_THEORETICAL_TONICS: readonly ["C#", "G#", "D#", "A#", "E#", "B#", "F##", "Fbb", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb"];
export type LydianTheoreticalTonic = typeof LYDIAN_THEORETICAL_TONICS[number];
export declare function isLydianTheoreticalTonic(note: any): note is LydianTheoreticalTonic;
export declare const lydianTheoreticalTonics: LydianTheoreticalTonic[];
declare const LYDIAN_TONICS: readonly ["F", "C", "G", "D", "A", "E", "B", "F#", "Fb", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "C#", "G#", "D#", "A#", "E#", "B#", "F##", "Fbb", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb"];
export type LydianTonic = typeof LYDIAN_TONICS[number];
export declare function isLydianTonic(note: any): note is LydianTonic;
export declare const lydianTonics: LydianTonic[];
declare const MIXOLYDIAN_STANDARD_TONICS: readonly ["G", "D", "A", "E", "B", "F#", "C#", "G#", "Gb", "Db", "Ab", "Eb", "Bb", "F", "C"];
export type MixolydianStandardTonic = typeof MIXOLYDIAN_STANDARD_TONICS[number];
export declare function isMixolydianStandardTonic(note: any): note is MixolydianStandardTonic;
export declare const mixolydianStandardTonics: MixolydianStandardTonic[];
declare const MIXOLYDIAN_THEORETICAL_TONICS: readonly ["D#", "A#", "E#", "B#", "F##", "C##", "G##", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb"];
export type MixolydianTheoreticalTonic = typeof MIXOLYDIAN_THEORETICAL_TONICS[number];
export declare function isMixolydianTheoreticalTonic(note: any): note is MixolydianTheoreticalTonic;
export declare const mixolydianTheoreticalTonics: MixolydianTheoreticalTonic[];
declare const MIXOLYDIAN_TONICS: readonly ["G", "D", "A", "E", "B", "F#", "C#", "G#", "Gb", "Db", "Ab", "Eb", "Bb", "F", "C", "D#", "A#", "E#", "B#", "F##", "C##", "G##", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb"];
export type MixolydianTonic = typeof MIXOLYDIAN_TONICS[number];
export declare function isMixolydianTonic(note: any): note is MixolydianTonic;
export declare const mixolydianTonics: MixolydianTonic[];
declare const AEOLIAN_STANDARD_TONICS: readonly ["A", "E", "B", "F#", "C#", "G#", "D#", "A#", "Ab", "Eb", "Bb", "F", "C", "G", "D"];
export type AeolianStandardTonic = typeof AEOLIAN_STANDARD_TONICS[number];
export declare function isAeolianStandardTonic(note: any): note is AeolianStandardTonic;
export declare const aeolianStandardTonics: AeolianStandardTonic[];
declare const AEOLIAN_THEORETICAL_TONICS: readonly ["E#", "B#", "F##", "C##", "G##", "D##", "A##", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db"];
export type AeolianTheoreticalTonic = typeof AEOLIAN_THEORETICAL_TONICS[number];
export declare function isAeolianTheoreticalTonic(note: any): note is AeolianTheoreticalTonic;
export declare const aeolianTheoreticalTonics: AeolianTheoreticalTonic[];
declare const AEOLIAN_TONICS: readonly ["A", "E", "B", "F#", "C#", "G#", "D#", "A#", "Ab", "Eb", "Bb", "F", "C", "G", "D", "E#", "B#", "F##", "C##", "G##", "D##", "A##", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db"];
export type AeolianTonic = typeof AEOLIAN_TONICS[number];
export declare function isAeolianTonic(note: any): note is AeolianTonic;
export declare const aeolianTonics: AeolianTonic[];
declare const LOCRIAN_STANDARD_TONICS: readonly ["B", "F#", "C#", "G#", "D#", "A#", "E#", "B#", "Bb", "F", "C", "G", "D", "A", "E"];
export type LocrianStandardTonic = typeof LOCRIAN_STANDARD_TONICS[number];
export declare function isLocrianStandardTonic(note: any): note is LocrianStandardTonic;
export declare const locrianStandardTonics: LocrianStandardTonic[];
declare const LOCRIAN_THEORETICAL_TONICS: readonly ["F##", "C##", "G##", "D##", "A##", "E##", "B##", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab", "Eb"];
export type LocrianTheoreticalTonic = typeof LOCRIAN_THEORETICAL_TONICS[number];
export declare function isLocrianTheoreticalTonic(note: any): note is LocrianTheoreticalTonic;
export declare const locrianTheoreticalTonics: LocrianTheoreticalTonic[];
declare const LOCRIAN_TONICS: readonly ["B", "F#", "C#", "G#", "D#", "A#", "E#", "B#", "Bb", "F", "C", "G", "D", "A", "E", "F##", "C##", "G##", "D##", "A##", "E##", "B##", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab", "Eb"];
export type LocrianTonic = typeof LOCRIAN_TONICS[number];
export declare function isLocrianTonic(note: any): note is LocrianTonic;
export declare const locrianTonics: LocrianTonic[];
declare const STANDARD_TONICS: readonly ["C", "G", "D", "A", "E", "B", "F#", "C#", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "F", "D", "A", "E", "B", "F#", "C#", "G#", "D#", "Db", "Ab", "Eb", "Bb", "F", "C", "G", "E", "B", "F#", "C#", "G#", "D#", "A#", "E#", "Eb", "Bb", "F", "C", "G", "D", "A", "F", "C", "G", "D", "A", "E", "B", "F#", "Fb", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "G", "D", "A", "E", "B", "F#", "C#", "G#", "Gb", "Db", "Ab", "Eb", "Bb", "F", "C", "A", "E", "B", "F#", "C#", "G#", "D#", "A#", "Ab", "Eb", "Bb", "F", "C", "G", "D", "B", "F#", "C#", "G#", "D#", "A#", "E#", "B#", "Bb", "F", "C", "G", "D", "A", "E"];
export type StandardTonic = typeof STANDARD_TONICS[number];
export declare function isStandardTonic(note: any): note is StandardTonic;
export declare const standardTonics: StandardTonic[];
declare const THEORETICAL_TONICS: readonly ["G#", "D#", "A#", "E#", "B#", "F##", "C##", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "A#", "E#", "B#", "F##", "C##", "G##", "D##", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb", "B#", "F##", "C##", "G##", "D##", "A##", "E##", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab", "C#", "G#", "D#", "A#", "E#", "B#", "F##", "Fbb", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "D#", "A#", "E#", "B#", "F##", "C##", "G##", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb", "E#", "B#", "F##", "C##", "G##", "D##", "A##", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db", "F##", "C##", "G##", "D##", "A##", "E##", "B##", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab", "Eb"];
export type TheoreticalTonic = typeof THEORETICAL_TONICS[number];
export declare function isTheoreticalTonic(note: any): note is TheoreticalTonic;
export declare const theoreticalTonics: TheoreticalTonic[];
declare const TONICS: readonly ["C", "G", "D", "A", "E", "B", "F#", "C#", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "F", "D", "A", "E", "B", "F#", "C#", "G#", "D#", "Db", "Ab", "Eb", "Bb", "F", "C", "G", "E", "B", "F#", "C#", "G#", "D#", "A#", "E#", "Eb", "Bb", "F", "C", "G", "D", "A", "F", "C", "G", "D", "A", "E", "B", "F#", "Fb", "Cb", "Gb", "Db", "Ab", "Eb", "Bb", "G", "D", "A", "E", "B", "F#", "C#", "G#", "Gb", "Db", "Ab", "Eb", "Bb", "F", "C", "A", "E", "B", "F#", "C#", "G#", "D#", "A#", "Ab", "Eb", "Bb", "F", "C", "G", "D", "B", "F#", "C#", "G#", "D#", "A#", "E#", "B#", "Bb", "F", "C", "G", "D", "A", "E", "G#", "D#", "A#", "E#", "B#", "F##", "C##", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "A#", "E#", "B#", "F##", "C##", "G##", "D##", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb", "B#", "F##", "C##", "G##", "D##", "A##", "E##", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab", "C#", "G#", "D#", "A#", "E#", "B#", "F##", "Fbb", "Cbb", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "D#", "A#", "E#", "B#", "F##", "C##", "G##", "Gbb", "Dbb", "Abb", "Ebb", "Bbb", "Fb", "Cb", "E#", "B#", "F##", "C##", "G##", "D##", "A##", "Abb", "Ebb", "Bbb", "Fb", "Cb", "Gb", "Db", "F##", "C##", "G##", "D##", "A##", "E##", "B##", "Bbb", "Fb", "Cb", "Gb", "Db", "Ab", "Eb"];
export type Tonic = typeof TONICS[number];
export declare function isTonic(note: any): note is Tonic;
export declare const tonics: Tonic[];
export declare const isModeTonicByModeName: {
Ionian: (note: any) => note is IonianTonic;
Dorian: (note: any) => note is DorianTonic;
Phrygian: (note: any) => note is PhrygianTonic;
Lydian: (note: any) => note is LydianTonic;
Mixolydian: (note: any) => note is MixolydianTonic;
Aeolian: (note: any) => note is AeolianTonic;
Locrian: (note: any) => note is LocrianTonic;
};
export interface ModeBase {
readonly name: ModeName;
readonly alternateName?: string;
readonly chordNumerals: readonly ChordNumeral[];
readonly chordBases: readonly DiatonicChordBase[];
readonly semitoneStructure: readonly number[];
readonly intervals: readonly ShortIntervalName[];
readonly degreeAdjustmentFromIonian: readonly number[];
}
export declare const modeBaseByName: Record<ModeName, ModeBase>;
export interface IonianMode extends ModeBase {
readonly standardTonics: readonly IonianStandardTonic[];
readonly theoreticalTonics: readonly IonianTheoreticalTonic[];
readonly tonics: readonly IonianTonic[];
readonly keyByTonic: Record<IonianTonic, IonianKey>;
readonly keyBySignature: Record<ModeKeySignature, IonianKey>;
readonly intervalByDegree: Record<ModeDegree, Interval>;
}
export interface DorianMode extends ModeBase {
readonly standardTonics: readonly DorianStandardTonic[];
readonly theoreticalTonics: readonly DorianTheoreticalTonic[];
readonly tonics: readonly DorianTonic[];
readonly keyByTonic: Record<DorianTonic, DorianKey>;
readonly keyBySignature: Record<ModeKeySignature, DorianKey>;
readonly intervalByDegree: Record<ModeDegree, Interval>;
}
export interface PhrygianMode extends ModeBase {
readonly standardTonics: readonly PhrygianStandardTonic[];
readonly theoreticalTonics: readonly PhrygianTheoreticalTonic[];
readonly tonics: readonly PhrygianTonic[];
readonly keyByTonic: Record<PhrygianTonic, PhrygianKey>;
readonly keyBySignature: Record<ModeKeySignature, PhrygianKey>;
readonly intervalByDegree: Record<ModeDegree, Interval>;
}
export interface LydianMode extends ModeBase {
readonly standardTonics: readonly LydianStandardTonic[];
readonly theoreticalTonics: readonly LydianTheoreticalTonic[];
readonly tonics: readonly LydianTonic[];
readonly keyByTonic: Record<LydianTonic, LydianKey>;
readonly keyBySignature: Record<ModeKeySignature, LydianKey>;
readonly intervalByDegree: Record<ModeDegree, Interval>;
}
export interface MixolydianMode extends ModeBase {
readonly standardTonics: readonly MixolydianStandardTonic[];
readonly theoreticalTonics: readonly MixolydianTheoreticalTonic[];
readonly tonics: readonly MixolydianTonic[];
readonly keyByTonic: Record<MixolydianTonic, MixolydianKey>;
readonly keyBySignature: Record<ModeKeySignature, MixolydianKey>;
readonly intervalByDegree: Record<ModeDegree, Interval>;
}
export interface AeolianMode extends ModeBase {
readonly standardTonics: readonly AeolianStandardTonic[];
readonly theoreticalTonics: readonly AeolianTheoreticalTonic[];
readonly tonics: readonly AeolianTonic[];
readonly keyByTonic: Record<AeolianTonic, AeolianKey>;
readonly keyBySignature: Record<ModeKeySignature, AeolianKey>;
readonly intervalByDegree: Record<ModeDegree, Interval>;
}
export interface LocrianMode extends ModeBase {
readonly standardTonics: readonly LocrianStandardTonic[];
readonly theoreticalTonics: readonly LocrianTheoreticalTonic[];
readonly tonics: readonly LocrianTonic[];
readonly keyByTonic: Record<LocrianTonic, LocrianKey>;
readonly keyBySignature: Record<ModeKeySignature, LocrianKey>;
readonly intervalByDegree: Record<ModeDegree, Interval>;
}
export declare function intervalByDegree(modeName: ModeName): Record<ModeDegree, Interval>;
export type Mode = IonianMode | DorianMode | PhrygianMode | LydianMode | MixolydianMode | AeolianMode | LocrianMode;
export declare function ionianMode(): IonianMode;
export declare function dorianMode(): DorianMode;
export declare function phrygianMode(): PhrygianMode;
export declare function lydianMode(): LydianMode;
export declare function mixolydianMode(): MixolydianMode;
export declare function aeolianMode(): AeolianMode;
export declare function locrianMode(): LocrianMode;
export declare const modeByName: {
Ionian: IonianMode;
Dorian: DorianMode;
Phrygian: PhrygianMode;
Lydian: LydianMode;
Mixolydian: MixolydianMode;
Aeolian: AeolianMode;
Locrian: LocrianMode;
};
export declare function mode(modeName: 'Ionian'): IonianMode;
export declare function mode(modeName: 'Dorian'): DorianMode;
export declare function mode(modeName: 'Phrygian'): PhrygianMode;
export declare function mode(modeName: 'Lydian'): LydianMode;
export declare function mode(modeName: 'Mixolydian'): MixolydianMode;
export declare function mode(modeName: 'Aeolian'): AeolianMode;
export declare function mode(modeName: 'Locrian'): LocrianMode;
export declare function mode(modeName: 'Ionian' | 'Dorian' | 'Phrygian' | 'Lydian' | 'Mixolydian' | 'Aeolian' | 'Locrian'): Mode;
export {};