UNPKG

12tet

Version:

Music theory library for generating and working with chords, modes, intervals, etc.

262 lines (261 loc) 22.2 kB
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 {};