@typedin/music-utilities
Version:
A set of resources and modules I use to develop music applications.
48 lines • 1.73 kB
JavaScript
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