{"version":3,"sources":["jsdelivr-header.js","/npm/tonal-note@2.2.2/build/es5.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,OAAO,eAAe,QAAS,aAAc,CAAE,OAAO,IAEtD,IAAI,MAAQ,8CAA8C,MAAM,KAC5D,MAAQ,SAAU,GAClB,MAA2B,iBAAb,EACR,MAAM,QACN,MAAM,QAAO,SAAU,GACrB,IAAI,EAAM,EAAE,IAAM,IAClB,OAAkC,IAA3B,EAAS,QAAQ,EAC5B,GACR,EACI,OAAS,MAAM,MACf,MAAQ,MAAM,MACd,MAAQ,kDACZ,SAAS,SAAS,GACK,iBAAR,IACP,EAAM,IACV,IAAI,EAAI,MAAM,KAAK,GACnB,MAAO,CAAC,EAAE,GAAG,cAAe,EAAE,GAAG,QAAQ,KAAM,MAAO,EAAE,GAAI,EAAE,GAClE,CACA,IAAI,QAAU,OAAO,OAAO,CACxB,GAAI,KACJ,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,OAAQ,KACR,OAAQ,KACR,KAAM,KACN,KAAM,OAEN,KAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAC1B,WAAa,SAAU,GACvB,IAAI,EAAS,SAAS,GACtB,GAAkB,KAAd,EAAO,IAA2B,KAAd,EAAO,GAC3B,OAAO,QACX,IAAI,EAAS,EAAO,GAAI,EAAM,EAAO,GAAI,EAAS,EAAO,GACrD,EAAI,CACJ,OAAQ,EACR,IAAK,EACL,OAAQ,EACR,GAAI,EAAS,EACb,KAAM,EAAS,EAAM,EACrB,MAAO,EAAO,WAAW,GAAK,GAAK,EACnC,IAAgB,MAAX,EAAI,IAAc,EAAI,OAAS,EAAI,OACxC,IAAK,EAAO,QAAU,EAAS,KAC/B,OAAQ,EACR,KAAM,KACN,KAAM,MAKV,OAHA,EAAE,QAAU,KAAK,EAAE,MAAQ,EAAE,IAAM,KAAO,GAC1C,EAAE,KAAiB,OAAV,EAAE,IAAe,KAAK,EAAE,MAAQ,EAAE,IAAM,IAAM,EAAE,IAAM,GAAK,KACpE,EAAE,KAAO,WAAW,EAAE,MACf,OAAO,OAAO,EACzB,EACI,KAAO,SAAU,EAAI,GAErB,YADc,IAAV,IAAoB,EAAQ,CAAC,GAC1B,SAAU,GAAO,OAAO,EAAM,KAAS,EAAM,GAAO,EAAG,GAAO,CACzE,EACI,MAAQ,KAAK,YACb,KAAO,SAAU,GAAO,OAAO,MAAM,GAAK,IAAM,EAChD,GAAK,SAAU,GAAO,OAAO,MAAM,GAAK,EAAI,EAC5C,YAAc,SAAU,GAAK,OAAO,GAAK,GAAK,GAAK,GAAK,EACxD,KAAO,SAAU,GACjB,GAAoB,iBAAT,GAAqC,iBAAT,EACnC,OAAO,KAEX,IAAI,EAAO,MAAM,GAAM,KACnB,EAAQ,GAAiB,IAAT,EAAa,GAAQ,EACzC,OAAO,YAAY,GAAS,EAAQ,IACxC,EACI,WAAa,SAAU,EAAM,GAE7B,YADe,IAAX,IAAqB,EAAS,KACX,iBAAT,EAAoB,KAAK,IAAI,GAAI,EAAO,IAAM,IAAM,EAAS,IAC/E,EACI,KAAO,SAAU,GAAQ,OAAO,MAAM,GAAM,MAAQ,WAAW,EAAO,EACtE,GAAK,KAAK,IAAI,GACd,KAAO,KAAK,IAAI,KAChB,WAAa,SAAU,GACvB,IAAI,EAAK,IAAM,KAAK,IAAI,GAAQ,MAAS,GAAK,GAC9C,OAAO,KAAK,MAAU,IAAJ,GAAW,GACjC,EACI,OAAS,SAAU,GAAO,OAAO,MAAM,GAAK,MAAQ,EACpD,IAAM,SAAU,GAAO,OAAO,MAAM,GAAK,GAAK,EAC9C,QAAU,UACV,aAAe,SAAU,GAAQ,OAAO,QAAQ,EAAO,EACvD,QAAU,SAAU,EAAG,GAAK,OAAO,MAAM,EAAI,GAAG,KAAK,EAAI,EACzD,SAAW,SAAU,EAAK,GAC1B,MAAsB,iBAAR,EAAmB,GAAK,EAAG,EAC7C,EACI,SAAW,SAAU,GACrB,OAAO,SAAS,GAAK,SAAU,GAAO,OAAQ,EAAM,EAAI,QAAQ,KAAM,GAAO,QAAQ,IAAK,EAAO,GACrG,EACI,KAAO,SAAU,EAAW,QACV,IAAd,IAAwB,EAAY,CAAC,QACxB,IAAb,IAAuB,EAAW,MACtC,IAAI,EAAK,EACH,OAAO,OAAO,CAAC,EAAG,MAAM,GAAW,GACnC,EAAW,EAAO,EAAG,KAAM,EAAM,EAAG,IAAK,EAAM,EAAG,IACxD,GAAoB,iBAAT,EACP,OAAO,KACX,IAAI,EAAS,aAAa,GAC1B,IAAK,EACD,OAAO,KACX,IAAI,EAAK,EAAS,SAAS,GAC3B,OAAO,GAAe,IAAR,EAAY,EAAK,EAAM,CACzC,EACI,MAAQ,KACZ,SAAS,SAAS,EAAK,GAMnB,YALe,IAAX,IAAqB,GAAS,GAClC,EAAM,KAAK,MAAM,KACI,IAAX,EAAkB,OAAS,OACxB,EAAM,KACX,KAAK,MAAM,EAAM,IAAM,EAEnC,CACA,IAAI,SAAW,SAAU,EAAM,QACX,IAAZ,IAAsB,GAAU,GACpC,IAAI,EAAK,MAAM,GAAO,EAAM,EAAG,IAAK,EAAS,EAAG,OAAQ,EAAO,EAAG,KAClE,GAAe,OAAX,EACA,OAAO,KACX,IACI,GAAwB,IAAZ,EADC,EACgC,EADhC,EACiD,EAClE,OAAgB,OAAT,EACD,GAAG,SAAS,EAAQ,IACpB,SAAS,EAAM,EACzB,EACI,WAAa,SAAU,GAAQ,OAAO,SAAS,GAAM,EAAQ,EAEjE,QAAQ,MAAQ,MAChB,QAAQ,SAAW,SACnB,QAAQ,MAAQ,MAChB,QAAQ,KAAO,KACf,QAAQ,GAAK,GACb,QAAQ,KAAO,KACf,QAAQ,WAAa,WACrB,QAAQ,KAAO,KACf,QAAQ,WAAa,WACrB,QAAQ,OAAS,OACjB,QAAQ,IAAM,IACd,QAAQ,aAAe,aACvB,QAAQ,SAAW,SACnB,QAAQ,KAAO,KACf,QAAQ,MAAQ,MAChB,QAAQ,SAAW,SACnB,QAAQ,SAAW,SACnB,QAAQ,WAAa","file":"/npm/tonal-note@2.2.2/build/es5.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/tonal-note@2.2.2/build/es5.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar NAMES = \"C C# Db D D# Eb E F F# Gb G G# Ab A A# Bb B\".split(\" \");\r\nvar names = function (accTypes) {\r\n    return typeof accTypes !== \"string\"\r\n        ? NAMES.slice()\r\n        : NAMES.filter(function (n) {\r\n            var acc = n[1] || \" \";\r\n            return accTypes.indexOf(acc) !== -1;\r\n        });\r\n};\r\nvar SHARPS = names(\" #\");\r\nvar FLATS = names(\" b\");\r\nvar REGEX = /^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)$/;\r\nfunction tokenize(str) {\r\n    if (typeof str !== \"string\")\r\n        str = \"\";\r\n    var m = REGEX.exec(str);\r\n    return [m[1].toUpperCase(), m[2].replace(/x/g, \"##\"), m[3], m[4]];\r\n}\r\nvar NO_NOTE = Object.freeze({\r\n    pc: null,\r\n    name: null,\r\n    step: null,\r\n    alt: null,\r\n    oct: null,\r\n    octStr: null,\r\n    chroma: null,\r\n    midi: null,\r\n    freq: null\r\n});\r\nvar SEMI = [0, 2, 4, 5, 7, 9, 11];\r\nvar properties = function (str) {\r\n    var tokens = tokenize(str);\r\n    if (tokens[0] === \"\" || tokens[3] !== \"\")\r\n        return NO_NOTE;\r\n    var letter = tokens[0], acc = tokens[1], octStr = tokens[2];\r\n    var p = {\r\n        letter: letter,\r\n        acc: acc,\r\n        octStr: octStr,\r\n        pc: letter + acc,\r\n        name: letter + acc + octStr,\r\n        step: (letter.charCodeAt(0) + 3) % 7,\r\n        alt: acc[0] === \"b\" ? -acc.length : acc.length,\r\n        oct: octStr.length ? +octStr : null,\r\n        chroma: 0,\r\n        midi: null,\r\n        freq: null\r\n    };\r\n    p.chroma = (SEMI[p.step] + p.alt + 120) % 12;\r\n    p.midi = p.oct !== null ? SEMI[p.step] + p.alt + 12 * (p.oct + 1) : null;\r\n    p.freq = midiToFreq(p.midi);\r\n    return Object.freeze(p);\r\n};\r\nvar memo = function (fn, cache) {\r\n    if (cache === void 0) { cache = {}; }\r\n    return function (str) { return cache[str] || (cache[str] = fn(str)); };\r\n};\r\nvar props = memo(properties);\r\nvar name = function (str) { return props(str).name; };\r\nvar pc = function (str) { return props(str).pc; };\r\nvar isMidiRange = function (m) { return m >= 0 && m <= 127; };\r\nvar midi = function (note) {\r\n    if (typeof note !== \"number\" && typeof note !== \"string\") {\r\n        return null;\r\n    }\r\n    var midi = props(note).midi;\r\n    var value = midi || midi === 0 ? midi : +note;\r\n    return isMidiRange(value) ? value : null;\r\n};\r\nvar midiToFreq = function (midi, tuning) {\r\n    if (tuning === void 0) { tuning = 440; }\r\n    return typeof midi === \"number\" ? Math.pow(2, (midi - 69) / 12) * tuning : null;\r\n};\r\nvar freq = function (note) { return props(note).freq || midiToFreq(note); };\r\nvar L2 = Math.log(2);\r\nvar L440 = Math.log(440);\r\nvar freqToMidi = function (freq) {\r\n    var v = (12 * (Math.log(freq) - L440)) / L2 + 69;\r\n    return Math.round(v * 100) / 100;\r\n};\r\nvar chroma = function (str) { return props(str).chroma; };\r\nvar oct = function (str) { return props(str).oct; };\r\nvar LETTERS = \"CDEFGAB\";\r\nvar stepToLetter = function (step) { return LETTERS[step]; };\r\nvar fillStr = function (s, n) { return Array(n + 1).join(s); };\r\nvar numToStr = function (num, op) {\r\n    return typeof num !== \"number\" ? \"\" : op(num);\r\n};\r\nvar altToAcc = function (alt) {\r\n    return numToStr(alt, function (alt) { return (alt < 0 ? fillStr(\"b\", -alt) : fillStr(\"#\", alt)); });\r\n};\r\nvar from = function (fromProps, baseNote) {\r\n    if (fromProps === void 0) { fromProps = {}; }\r\n    if (baseNote === void 0) { baseNote = null; }\r\n    var _a = baseNote\r\n        ? Object.assign({}, props(baseNote), fromProps)\r\n        : fromProps, step = _a.step, alt = _a.alt, oct = _a.oct;\r\n    if (typeof step !== \"number\")\r\n        return null;\r\n    var letter = stepToLetter(step);\r\n    if (!letter)\r\n        return null;\r\n    var pc = letter + altToAcc(alt);\r\n    return oct || oct === 0 ? pc + oct : pc;\r\n};\r\nvar build = from;\r\nfunction fromMidi(num, sharps) {\r\n    if (sharps === void 0) { sharps = false; }\r\n    num = Math.round(num);\r\n    var pcs = sharps === true ? SHARPS : FLATS;\r\n    var pc = pcs[num % 12];\r\n    var o = Math.floor(num / 12) - 1;\r\n    return pc + o;\r\n}\r\nvar simplify = function (note, sameAcc) {\r\n    if (sameAcc === void 0) { sameAcc = true; }\r\n    var _a = props(note), alt = _a.alt, chroma = _a.chroma, midi = _a.midi;\r\n    if (chroma === null)\r\n        return null;\r\n    var alteration = alt;\r\n    var useSharps = sameAcc === false ? alteration < 0 : alteration > 0;\r\n    return midi === null\r\n        ? pc(fromMidi(chroma, useSharps))\r\n        : fromMidi(midi, useSharps);\r\n};\r\nvar enharmonic = function (note) { return simplify(note, false); };\n\nexports.names = names;\nexports.tokenize = tokenize;\nexports.props = props;\nexports.name = name;\nexports.pc = pc;\nexports.midi = midi;\nexports.midiToFreq = midiToFreq;\nexports.freq = freq;\nexports.freqToMidi = freqToMidi;\nexports.chroma = chroma;\nexports.oct = oct;\nexports.stepToLetter = stepToLetter;\nexports.altToAcc = altToAcc;\nexports.from = from;\nexports.build = build;\nexports.fromMidi = fromMidi;\nexports.simplify = simplify;\nexports.enharmonic = enharmonic;\n"]}