diff options
Diffstat (limited to 'bundle.js')
| -rw-r--r-- | bundle.js | 142 |
1 files changed, 129 insertions, 13 deletions
@@ -38175,7 +38175,7 @@ var scales = exports.scales = [{ name: "natural", get: function get(i, j) { reset: function reset(x, y, w, h) { a = (0, _index.Arithmetic)(x + 1, x + 1).take(w).toJS(); b = (0, _index.Arithmetic)(y + 1, y + 1).take(h).toJS(); - console.log(a); + // console.log(a); }, get: function get(ii, jj, i, j) { return [a[i], b[j]]; @@ -39011,7 +39011,7 @@ function add(i, j) { j: j, playing: false, destroy: function destroy() { - div.parentNode && div.parentNode.removeChild(div); + return grid.removeChild(div); }, recolor: function recolor(numerator, denominator) { var aa = a / numerator; @@ -39158,16 +39158,15 @@ function bind() { _keys2.default.listen(trigger_index); // UI - document.querySelector("#help .close").addEventListener("click", function () { - return document.querySelector("#help").classList.remove("visible"); - }); document.querySelector("#help-button").addEventListener("click", function () { return document.querySelector("#help").classList.toggle("visible"); }); - toggleModus(); + document.querySelector("#root").addEventListener("click", function () { + return document.querySelector(".root-select").classList.toggle("visible"); + }); document.querySelector("#modus").addEventListener("click", toggleModus); Array.from(document.querySelectorAll(".mode")).forEach(function (el) { - console.log(el.getAttribute("name")); + // console.log(el.getAttribute("name")); el.addEventListener("click", function (event) { var name = el.getAttribute("name"); scaleMode = _scales.scales.findIndex(function (scale) { @@ -39177,6 +39176,9 @@ function bind() { }); }); + toggleModus(); + bindRoot(); + // Wheel to scroll if (_util.browser.isDesktop) { grid.addEventListener("wheel", function (e) { @@ -39245,6 +39247,10 @@ function keydown(e) { // \ _midi2.default.enable(trigger_index); break; + case 192: + // ~ + toggleModus(); + break; case 191: // ? document.querySelector("#help").classList.toggle("visible"); @@ -39255,9 +39261,7 @@ function keydown(e) { e.preventDefault(); e.stopPropagation(); if (e.altKey || e.metaKey) { - root = (0, _util.clamp)(root - (e.shiftKey ? 10 : 1), 1, 200000); - organ.setRoot(root); - showMessage("Root: " + root + " hz"); + setRoot(root - e.shiftKey ? 10 : 1); } else { scaleMode = (0, _util.mod)(scaleMode - 1, _scales.scales.length); rebuild(); @@ -39270,9 +39274,7 @@ function keydown(e) { e.preventDefault(); e.stopPropagation(); if (e.altKey || e.metaKey) { - root = (0, _util.clamp)(root + (e.shiftKey ? 10 : 1), 1, 200000); - organ.setRoot(root); - showMessage("Root: " + root + " hz"); + setRoot(root + e.shiftKey ? 10 : 1); } else { scaleMode = (0, _util.mod)(scaleMode + 1, _scales.scales.length); rebuild(); @@ -39281,6 +39283,120 @@ function keydown(e) { break; } } +function setRoot(newRoot) { + if (!newRoot) { + return; + } + root = (0, _util.clamp)(Math.round(newRoot), 1, 300000); + _sine2.default.setRoot(root); + _bandpass2.default.setRoot(root); + showMessage("Root: " + Math.round(root) + " hz"); + showRoot(root); + document.querySelector(".root-select input").value = Math.round(root); +} + +function showRoot(root) { + var el = document.querySelector("#root span"); + el.style.fontSize = root < 1000 ? "14px" : root < 10000 ? "12px" : "9px"; + el.innerHTML = Math.round(root); +} +function bindRoot() { + document.querySelector(".root-select").addEventListener("click", function () { + document.querySelector(".root-select").classList.remove("visible"); + }, false); + document.querySelector(".root-select > div").addEventListener("click", function (event) { + event.stopPropagation(); + }); + document.querySelector(".root-select input").addEventListener("input", function (event) { + setRoot(parseFloat(event.target.value)); + }); + Object.entries({ + ok: function ok() { + return document.querySelector(".root-select").classList.remove("visible"); + }, + "div-2": function div2() { + return setRoot(root / 2); + }, + "mul-2": function mul2() { + return setRoot(root * 2); + }, + "sub-10": function sub10() { + return setRoot(root - 10); + }, + "sub-1": function sub1() { + return setRoot(root - 1); + }, + "add-1": function add1() { + return setRoot(root + 1); + }, + "add-10": function add10() { + return setRoot(root + 10); + }, + "note-c": function noteC() { + return setRoot(440 * Math.pow(2, -9 / 12) * getOctave(root)); + }, + "note-db": function noteDb() { + return setRoot(440 * Math.pow(2, -8 / 12) * getOctave(root)); + }, + "note-d": function noteD() { + return setRoot(440 * Math.pow(2, -7 / 12) * getOctave(root)); + }, + "note-eb": function noteEb() { + return setRoot(440 * Math.pow(2, -6 / 12) * getOctave(root)); + }, + "note-e": function noteE() { + return setRoot(440 * Math.pow(2, -5 / 12) * getOctave(root)); + }, + "note-f": function noteF() { + return setRoot(440 * Math.pow(2, -4 / 12) * getOctave(root)); + }, + "note-gb": function noteGb() { + return setRoot(440 * Math.pow(2, -3 / 12) * getOctave(root)); + }, + "note-g": function noteG() { + return setRoot(440 * Math.pow(2, -2 / 12) * getOctave(root)); + }, + "note-ab": function noteAb() { + return setRoot(440 * Math.pow(2, -1 / 12) * getOctave(root)); + }, + "note-a": function noteA() { + return setRoot(440 * Math.pow(2, 0 / 12) * getOctave(root)); + }, + "note-bb": function noteBb() { + return setRoot(440 * Math.pow(2, 1 / 12) * getOctave(root)); + }, + "note-b": function noteB() { + return setRoot(440 * Math.pow(2, 2 / 12) * getOctave(root)); + }, + "note-c2": function noteC2() { + return setRoot(440 * Math.pow(2, 3 / 12) * getOctave(root)); + } + }).forEach(function (_ref, index) { + var _ref2 = _slicedToArray(_ref, 2), + key = _ref2[0], + fn = _ref2[1]; + + var el = document.querySelector(".root-select ." + key); + el.addEventListener("click", fn); + if (key.startsWith("note")) { + el.style.background = (0, _color2.default)(Math.pow(2, (index - 7) / 12), 0, 1.6); + } + }); +} + +var C_ROOT = Math.round(440 * Math.pow(2, 3 / 12)); +function getOctave(value) { + var octave = 0; + while (value < C_ROOT) { + octave -= 1; + value *= 2; + } + while (value > C_ROOT) { + octave += 1; + value /= 2; + } + return Math.pow(2, octave); +} var messageTransition = void 0; function showMessage(message) { |
