src/Constants.ts
import { Octave, PitchClass } from 'types.js';
export const PITCH_STANDARD: {
pitchClass: PitchClass;
octave: Octave;
midi: number;
frequency: number;
} = { pitchClass: 'A', octave: 4, midi: 69, frequency: 440 };
export const NUMBER_OF_PITCH_CLASSES = 12;
export const SEMITONE: number = Math.pow(2, 1 / 12);
export const SHARP_CLASS_NOTES = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'] as const;
export const FLAT_CLASS_NOTES = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B'] as const;
export const PITCH_CLASS_LETTERS = ['C', 'D', 'E', 'F', 'G', 'A', 'B'] as const;
export const PITCH_CLASSES = [
'C', 'C#', 'Db', 'D', 'D#', 'Eb', 'E', 'F', 'F#', 'Gb', 'G', 'G#', 'Ab', 'A', 'A#', 'Bb', 'B',
] as const;
export const INTERVALS = {
U: 0,
m2: 1,
M2: 2,
m3: 3,
M3: 4,
P4: 5,
aug4: 6,
dim5: 6,
P5: 7,
m6: 8,
M6: 9,
m7: 10,
M7: 11,
P8: 12,
} as const;
export const OCTAVES_ON_PIANO = 8 as const;
export const NOTE_DURATIONS = [1, 2, 4, 8, 16, 32, 64] as const;
export const TIME_SIG_NUMERATORS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] as const;
export const NOTE_DURATIONS_AS_SIZE_IN_MEASURE = {
'1n': 64,
'2n': 32,
'2n.': 48,
'2t': 21,
'4n': 16,
'8n': 8,
'16n': 4,
'32n': 2,
'64n': 1,
} as const;