export enum Interval { UNISON, MINOR_SECOND, MAJOR_SECOND, MINOR_THIRD, MAJOR_THIRD, PERFECT_FOURTH, DIMINISHED_FIFTH, PERFECT_FIFTH, AUGMENTED_FIFTH, MAJOR_SIXTH, DIMINISHED_SEVENTH = MAJOR_SIXTH, MINOR_SEVENTH, MAJOR_SEVENTH, OCTAVE, MINOR_NINTH, MAJOR_NINTH, AUGMENTED_NINTH, TENTH, MINOR_ELEVENTH, MAJOR_ELEVENTH, TWELFTH, MINOR_THIRTEENTH, MAJOR_THIRTEENTH, AUGMENTED_THIRTEENTH, } export enum ChordBase { MAJOR = 'MAJOR', MINOR = 'MINOR', DIMINISHED = 'DIMINISHED', AUGMENTED = 'AUGMENTED', } export enum ChordExtensionType { MAJOR = 'MAJOR', MINOR = 'MINOR', DOMINANT = 'DOMINANT', DIMINISHED = 'DIMINISHED', AUGMENTED = 'AUGMENTED', } export enum ChordModificationType { SUSPENDED = 'SUSPENDED', LOWERED = 'LOWERED', } export enum ChordComponent { ROOT = 'ROOT', SECOND = 'SECOND', THIRD = 'THIRD', FOURTH = 'FOURTH', FIFTH = 'FIFTH', SIXTH = 'SIXTH', SEVENTH = 'SEVENTH', NINTH = 'NINTH', ELEVENTH = 'ELEVENTH', THIRTEENTH = 'THIRTEENTH', } export const CHORD_COMPONENT_ORDERS = [ ChordComponent.ROOT, ChordComponent.SECOND, ChordComponent.THIRD, ChordComponent.FOURTH, ChordComponent.FIFTH, ChordComponent.SIXTH, ChordComponent.SEVENTH, ChordComponent.NINTH, ChordComponent.ELEVENTH, ChordComponent.THIRTEENTH, ]; export interface ChordModification { type: ChordModificationType; component: ChordComponent; } export interface ChordExtension { type: ChordExtensionType; component: ChordComponent; } export interface ChordAnalysis { base?: ChordBase; modifications?: ChordModification[]; extensions?: ChordExtension[]; omissions?: ChordComponent[]; }