UNPKG

@tonaljs/note

Version:

Parse and manipulate music notes in scientific notation

211 lines (210 loc) 5.72 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // index.ts var index_exports = {}; __export(index_exports, { accidentals: () => accidentals, ascending: () => ascending, chroma: () => chroma, default: () => index_default, descending: () => descending, distance: () => distance, enharmonic: () => enharmonic, freq: () => freq, fromFreq: () => fromFreq, fromFreqSharps: () => fromFreqSharps, fromMidi: () => fromMidi, fromMidiSharps: () => fromMidiSharps, get: () => get, midi: () => midi, name: () => name, names: () => names, octave: () => octave, pitchClass: () => pitchClass, simplify: () => simplify, sortedNames: () => sortedNames, sortedUniqNames: () => sortedUniqNames, tr: () => tr, trBy: () => trBy, trFifths: () => trFifths, trFrom: () => trFrom, transpose: () => transpose, transposeBy: () => transposeBy, transposeFifths: () => transposeFifths, transposeFrom: () => transposeFrom, transposeOctaves: () => transposeOctaves }); module.exports = __toCommonJS(index_exports); var import_midi = require("@tonaljs/midi"); var import_pitch_distance = require("@tonaljs/pitch-distance"); var import_pitch_note = require("@tonaljs/pitch-note"); var NAMES = ["C", "D", "E", "F", "G", "A", "B"]; var toName = (n) => n.name; var onlyNotes = (array) => array.map(import_pitch_note.note).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 = import_pitch_note.note; 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 (0, import_midi.midiToNoteName)(midi2); } function fromFreq(freq2) { return (0, import_midi.midiToNoteName)((0, import_midi.freqToMidi)(freq2)); } function fromFreqSharps(freq2) { return (0, import_midi.midiToNoteName)((0, import_midi.freqToMidi)(freq2), { sharps: true }); } function fromMidiSharps(midi2) { return (0, import_midi.midiToNoteName)(midi2, { sharps: true }); } var distance = import_pitch_distance.distance; var transpose = import_pitch_distance.transpose; var tr = import_pitch_distance.transpose; 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 (0, import_midi.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 || (0, import_midi.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 }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { accidentals, ascending, chroma, 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.js.map