@tonaljs/note
Version:
Parse and manipulate music notes in scientific notation
160 lines • 3.67 kB
JavaScript
// index.ts
import { freqToMidi, midiToNoteName } from "@tonaljs/midi";
import { distance as _dist, transpose as _tr } from "@tonaljs/pitch-distance";
import {
note as props
} from "@tonaljs/pitch-note";
var NAMES = ["C", "D", "E", "F", "G", "A", "B"];
var toName = (n) => n.name;
var onlyNotes = (array) => array.map(props).filter((n) => !n.empty);
function names(array) {
if (array === void 0) {
return NAMES.slice();
} else if (!Array.isArray(array)) {
return [];
} else {
return onlyNotes(array).map(toName);
}
}
var get = props;
var name = (note) => get(note).name;
var pitchClass = (note) => get(note).pc;
var accidentals = (note) => get(note).acc;
var octave = (note) => get(note).oct;
var midi = (note) => get(note).midi;
var freq = (note) => get(note).freq;
var chroma = (note) => get(note).chroma;
function fromMidi(midi2) {
return midiToNoteName(midi2);
}
function fromFreq(freq2) {
return midiToNoteName(freqToMidi(freq2));
}
function fromFreqSharps(freq2) {
return midiToNoteName(freqToMidi(freq2), { sharps: true });
}
function fromMidiSharps(midi2) {
return midiToNoteName(midi2, { sharps: true });
}
var distance = _dist;
var transpose = _tr;
var tr = _tr;
var transposeBy = (interval) => (note) => transpose(note, interval);
var trBy = transposeBy;
var transposeFrom = (note) => (interval) => transpose(note, interval);
var trFrom = transposeFrom;
function transposeFifths(noteName, fifths) {
return transpose(noteName, [fifths, 0]);
}
var trFifths = transposeFifths;
function transposeOctaves(noteName, octaves) {
return transpose(noteName, [0, octaves]);
}
var ascending = (a, b) => a.height - b.height;
var descending = (a, b) => b.height - a.height;
function sortedNames(notes, comparator) {
comparator = comparator || ascending;
return onlyNotes(notes).sort(comparator).map(toName);
}
function sortedUniqNames(notes) {
return sortedNames(notes, ascending).filter(
(n, i, a) => i === 0 || n !== a[i - 1]
);
}
var simplify = (noteName) => {
const note = get(noteName);
if (note.empty) {
return "";
}
return midiToNoteName(note.midi || note.chroma, {
sharps: note.alt > 0,
pitchClass: note.midi === null
});
};
function enharmonic(noteName, destName) {
const src = get(noteName);
if (src.empty) {
return "";
}
const dest = get(
destName || midiToNoteName(src.midi || src.chroma, {
sharps: src.alt < 0,
pitchClass: true
})
);
if (dest.empty || dest.chroma !== src.chroma) {
return "";
}
if (src.oct === void 0) {
return dest.pc;
}
const srcChroma = src.chroma - src.alt;
const destChroma = dest.chroma - dest.alt;
const destOctOffset = srcChroma > 11 || destChroma < 0 ? -1 : srcChroma < 0 || destChroma > 11 ? 1 : 0;
const destOct = src.oct + destOctOffset;
return dest.pc + destOct;
}
var index_default = {
names,
get,
name,
pitchClass,
accidentals,
octave,
midi,
ascending,
descending,
distance,
sortedNames,
sortedUniqNames,
fromMidi,
fromMidiSharps,
freq,
fromFreq,
fromFreqSharps,
chroma,
transpose,
tr,
transposeBy,
trBy,
transposeFrom,
trFrom,
transposeFifths,
transposeOctaves,
trFifths,
simplify,
enharmonic
};
export {
accidentals,
ascending,
chroma,
index_default as default,
descending,
distance,
enharmonic,
freq,
fromFreq,
fromFreqSharps,
fromMidi,
fromMidiSharps,
get,
midi,
name,
names,
octave,
pitchClass,
simplify,
sortedNames,
sortedUniqNames,
tr,
trBy,
trFifths,
trFrom,
transpose,
transposeBy,
transposeFifths,
transposeFrom,
transposeOctaves
};
//# sourceMappingURL=index.mjs.map