UNPKG

@typedin/music-utilities

Version:

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

48 lines 1.73 kB
import { DiatonicNoteEnum } from "../constants.js"; import { getNextAlteration, getPreviousAlteration } from "../helpers/index.js"; import { getAlterationForAugmentedInterval } from "./getAlteration.js"; import { getAlterationForPerfectInterval } from "./getAlterationForPerfectInterval.js"; import { getName } from "./getName.js"; import { getNoteOctave } from "./getNoteOctave.js"; const specialCases = { up: [], down: [], }; const notesThatMakeOctaveChange = { up: [], down: [], }; const semitones = { special: { up: 0, down: 0, }, normal: { up: 0, down: 0, }, }; function DiminishedUnison(note, direction = "up") { // technically Diminished Unisons don't exist return { name: getName(note, direction, semitones, specialCases), alteration: direction == "up" ? getPreviousAlteration(note.alteration) : getNextAlteration(note.alteration), octave: getNoteOctave(note, notesThatMakeOctaveChange[direction], direction), }; } function PerfectUnison(note, direction = "up") { return { name: getName(note, direction, semitones, specialCases), alteration: getAlterationForPerfectInterval(note, direction, specialCases), octave: getNoteOctave(note, notesThatMakeOctaveChange[direction], direction), }; } function AugmentedUnison(note, direction = "up") { return { name: getName(note, direction, semitones, specialCases), alteration: getAlterationForAugmentedInterval(note, direction, specialCases), octave: getNoteOctave(note, notesThatMakeOctaveChange[direction], direction), }; } export { PerfectUnison, DiminishedUnison, AugmentedUnison }; //# sourceMappingURL=Unison.js.map