Seanitzel/Note-Art

View on GitHub
src/Constants.ts

Summary

Maintainability
A
0 mins
Test Coverage
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;