UNPKG

@typedin/music-utilities

Version:

A set of resources and modules I use to develop music applications.

76 lines (75 loc) 1.87 kB
import { AlterationEnum, DiatonicNoteEnum } from "../constants.js"; export type IScale = any; export type DegreeBuilder = { function: string; callable: IntervalBuilder; }; export interface ScaleBuilder { (tonic: Note, degreeBuilders: Array<DegreeBuilder>): Array<DegreeBuilder>; } export type Semitones = { special: { up: number; down: number; }; normal: { up: number; down: number; }; }; export interface IReference extends Note { frequency: number; } export interface IScaleBuilder { tonic: Note; scaleSchema: any; tonicRepetition: boolean; withoutTonicRepetition: () => IScaleBuilder; scale: () => IScale; } export interface INotePosition extends Note { degree: number; frequency: number; function: string; order: number; position: number; } export interface Interval { direction?: "up" | "down"; compound: boolean; halfsteps: number; quality?: string; type: string; } export interface Note { name: DiatonicNoteEnum; alteration: AlterationEnum; octave: number; } export interface IScaleDegree extends Note { degree: number; function: string; order: number; } export interface IMusicalString extends Note { frequency: number; } export interface ReferenceUsedInStringStore extends Note { tuning: number; } export interface Alteration { name: string; visual: AlterationEnum.flat | AlterationEnum.sharp | AlterationEnum.natural | AlterationEnum.doubleFlat | AlterationEnum.doubleSharp; } export type IntervalBuilder = (note: Note, direction: "up" | "down") => Note; export interface StringInstumentPreset { strings: Array<IMusicalString>; stringLimits: Array<StringLimits>; } export interface StringLimits { string: IMusicalString; limits: { upper: Note; lower: Note; }; }