@vue-skuilder/courseware 0.1.33 → 0.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CourseWare-BTFRjgBR.js +305 -0
- package/dist/CourseWare-BTFRjgBR.js.map +1 -0
- package/dist/CourseWare-DSeyTAtH.cjs +2 -0
- package/dist/CourseWare-DSeyTAtH.cjs.map +1 -0
- package/dist/assets/CourseWare.css +1 -0
- package/dist/assets/chess.css +1 -0
- package/dist/assets/index.css +1 -1
- package/dist/assets/math.css +1 -0
- package/dist/assets/piano.css +1 -0
- package/dist/assets/sightsing.css +1 -0
- package/dist/assets/typing.css +1 -0
- package/dist/backend.cjs.js +1 -1
- package/dist/backend.cjs.js.map +1 -1
- package/dist/backend.mjs +4 -3
- package/dist/backend.mjs.map +1 -1
- package/dist/chess/components/ChessBoard.vue.d.ts.map +1 -1
- package/dist/chess/composables/useChessgroundBounds.d.ts +24 -0
- package/dist/chess/composables/useChessgroundBounds.d.ts.map +1 -0
- package/dist/chess/questions/puzzle/puzzle.vue.d.ts.map +1 -1
- package/dist/chess-BbHATAzk.js +2949 -0
- package/dist/chess-BbHATAzk.js.map +1 -0
- package/dist/chess-BsgVZARV.cjs +7 -0
- package/dist/chess-BsgVZARV.cjs.map +1 -0
- package/dist/chess-C_2RQEuq.cjs +1 -0
- package/dist/chess-X1bmWmh3.js +3 -0
- package/dist/french-Bxet7hJm.cjs +2 -0
- package/dist/french-Bxet7hJm.cjs.map +1 -0
- package/dist/french-Dk7YG8Td.js +140 -0
- package/dist/french-Dk7YG8Td.js.map +1 -0
- package/dist/french-evUMlbbq.js +3 -0
- package/dist/french-x9P8RRn8.cjs +1 -0
- package/dist/index.cjs.js +2 -170
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +172 -62021
- package/dist/index.mjs.map +1 -1
- package/dist/math-B1oDAkOy.cjs +34 -0
- package/dist/math-B1oDAkOy.cjs.map +1 -0
- package/dist/math-B4HbgYf6.js +13391 -0
- package/dist/math-B4HbgYf6.js.map +1 -0
- package/dist/math-BWlIa6-l.cjs +1 -0
- package/dist/math-DYni7rRl.js +3 -0
- package/dist/piano-BN5Btq91.js +3 -0
- package/dist/piano-Btvkzjfz.cjs +1 -0
- package/dist/piano-CefQUc72.cjs +2 -0
- package/dist/piano-CefQUc72.cjs.map +1 -0
- package/dist/piano-DF1g6yaX.js +3603 -0
- package/dist/piano-DF1g6yaX.js.map +1 -0
- package/dist/pitch-C-lh9ezH.cjs +2 -0
- package/dist/pitch-C-lh9ezH.cjs.map +1 -0
- package/dist/pitch-CgGJFkZ1.js +106 -0
- package/dist/pitch-CgGJFkZ1.js.map +1 -0
- package/dist/pitch-Dn0iNqiS.js +3 -0
- package/dist/pitch-DsopN5IR.cjs +1 -0
- package/dist/{shapes-nszfsx3o.js → shapes-BQUVJdp5.js} +3 -21
- package/dist/shapes-BQUVJdp5.js.map +1 -0
- package/dist/shapes-C_-mvrCc.cjs +2 -0
- package/dist/shapes-C_-mvrCc.cjs.map +1 -0
- package/dist/shapes-DRq8J94A.cjs +2 -0
- package/dist/shapes-DRq8J94A.cjs.map +1 -0
- package/dist/shapes-ICeg46lr.js +25 -0
- package/dist/shapes-ICeg46lr.js.map +1 -0
- package/dist/sightsing-BFQ7HRig.js +41061 -0
- package/dist/sightsing-BFQ7HRig.js.map +1 -0
- package/dist/sightsing-CJX3k0Fd.js +3 -0
- package/dist/sightsing-Cr_SJ5Vc.cjs +133 -0
- package/dist/sightsing-Cr_SJ5Vc.cjs.map +1 -0
- package/dist/sightsing-CtagQ0FJ.cjs +1 -0
- package/dist/typing-BevtfWlp.js +184 -0
- package/dist/typing-BevtfWlp.js.map +1 -0
- package/dist/typing-CBPjtwrg.cjs +1 -0
- package/dist/typing-CK-glKhm.cjs +2 -0
- package/dist/typing-CK-glKhm.cjs.map +1 -0
- package/dist/typing-k-ojjO7G.js +3 -0
- package/dist/word-work-BOnRlZgd.js +108 -0
- package/dist/word-work-BOnRlZgd.js.map +1 -0
- package/dist/word-work-C5MTSapy.cjs +1 -0
- package/dist/word-work-Dd6tIKrt.js +3 -0
- package/dist/word-work-fNbCLNuN.cjs +2 -0
- package/dist/word-work-fNbCLNuN.cjs.map +1 -0
- package/package.json +6 -5
- package/dist/shapes-DJ-ujuDr.cjs +0 -2
- package/dist/shapes-DJ-ujuDr.cjs.map +0 -1
- package/dist/shapes-nszfsx3o.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./CourseWare-DSeyTAtH.cjs`);const e=require(`./math-B1oDAkOy.cjs`);exports.default=e.t;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./CourseWare-DSeyTAtH.cjs`);const e=require(`./piano-CefQUc72.cjs`);exports.default=e.t;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./shapes-C_-mvrCc.cjs`),t=require(`./CourseWare-DSeyTAtH.cjs`);let n=require(`vue`),r=require(`@vue-skuilder/common-ui`),i=require(`@vue-skuilder/common`),a=require(`moment`);a=e.i(a);var o=e.n(((e,t)=>{(function(e){"use strict";function WebMidi(){if(WebMidi.prototype._singleton)throw Error(`WebMidi is a singleton, it cannot be instantiated directly.`);(WebMidi.prototype._singleton=this)._inputs=[],this._outputs=[],this._userHandlers={},this._stateChangeQueue=[],this._processingStateChange=!1,this._midiInterfaceEvents=[`connected`,`disconnected`],this._nrpnBuffer=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],this._nrpnEventsEnabled=!0,this._nrpnTypes=[`entry`,`increment`,`decrement`],this._notes=[`C`,`C#`,`D`,`D#`,`E`,`F`,`F#`,`G`,`G#`,`A`,`A#`,`B`],this._semitones={C:0,D:2,E:4,F:5,G:7,A:9,B:11},Object.defineProperties(this,{MIDI_SYSTEM_MESSAGES:{value:{sysex:240,timecode:241,songposition:242,songselect:243,tuningrequest:246,sysexend:247,clock:248,start:250,continue:251,stop:252,activesensing:254,reset:255,midimessage:0,unknownsystemmessage:-1},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MESSAGES:{value:{noteoff:8,noteon:9,keyaftertouch:10,controlchange:11,channelmode:11,nrpn:11,programchange:12,channelaftertouch:13,pitchbend:14},writable:!1,enumerable:!0,configurable:!1},MIDI_REGISTERED_PARAMETER:{value:{pitchbendrange:[0,0],channelfinetuning:[0,1],channelcoarsetuning:[0,2],tuningprogram:[0,3],tuningbank:[0,4],modulationrange:[0,5],azimuthangle:[61,0],elevationangle:[61,1],gain:[61,2],distanceratio:[61,3],maximumdistance:[61,4],maximumdistancegain:[61,5],referencedistanceratio:[61,6],panspreadangle:[61,7],rollangle:[61,8]},writable:!1,enumerable:!0,configurable:!1},MIDI_CONTROL_CHANGE_MESSAGES:{value:{bankselectcoarse:0,modulationwheelcoarse:1,breathcontrollercoarse:2,footcontrollercoarse:4,portamentotimecoarse:5,dataentrycoarse:6,volumecoarse:7,balancecoarse:8,pancoarse:10,expressioncoarse:11,effectcontrol1coarse:12,effectcontrol2coarse:13,generalpurposeslider1:16,generalpurposeslider2:17,generalpurposeslider3:18,generalpurposeslider4:19,bankselectfine:32,modulationwheelfine:33,breathcontrollerfine:34,footcontrollerfine:36,portamentotimefine:37,dataentryfine:38,volumefine:39,balancefine:40,panfine:42,expressionfine:43,effectcontrol1fine:44,effectcontrol2fine:45,holdpedal:64,portamento:65,sustenutopedal:66,softpedal:67,legatopedal:68,hold2pedal:69,soundvariation:70,resonance:71,soundreleasetime:72,soundattacktime:73,brightness:74,soundcontrol6:75,soundcontrol7:76,soundcontrol8:77,soundcontrol9:78,soundcontrol10:79,generalpurposebutton1:80,generalpurposebutton2:81,generalpurposebutton3:82,generalpurposebutton4:83,reverblevel:91,tremololevel:92,choruslevel:93,celestelevel:94,phaserlevel:95,databuttonincrement:96,databuttondecrement:97,nonregisteredparametercoarse:98,nonregisteredparameterfine:99,registeredparametercoarse:100,registeredparameterfine:101},writable:!1,enumerable:!0,configurable:!1},MIDI_NRPN_MESSAGES:{value:{entrymsb:6,entrylsb:38,increment:96,decrement:97,paramlsb:98,parammsb:99,nullactiveparameter:127},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MODE_MESSAGES:{value:{allsoundoff:120,resetallcontrollers:121,localcontrol:122,allnotesoff:123,omnimodeoff:124,omnimodeon:125,monomodeon:126,polymodeon:127},writable:!1,enumerable:!0,configurable:!1},octaveOffset:{value:0,writable:!0,enumerable:!0,configurable:!1}}),Object.defineProperties(this,{supported:{enumerable:!0,get:function(){return`requestMIDIAccess`in navigator}},enabled:{enumerable:!0,get:function(){return this.interface!==void 0}.bind(this)},inputs:{enumerable:!0,get:function(){return this._inputs}.bind(this)},outputs:{enumerable:!0,get:function(){return this._outputs}.bind(this)},sysexEnabled:{enumerable:!0,get:function(){return!(!this.interface||!this.interface.sysexEnabled)}.bind(this)},nrpnEventsEnabled:{enumerable:!0,get:function(){return!!this._nrpnEventsEnabled}.bind(this),set:function(e){return this._nrpnEventsEnabled=e,this._nrpnEventsEnabled}},nrpnTypes:{enumerable:!0,get:function(){return this._nrpnTypes}.bind(this)},time:{enumerable:!0,get:function(){return performance.now()}}})}var n=new WebMidi;function Input(e){var t=this;this._userHandlers={channel:{},system:{}},this._midiInput=e,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return t._midiInput.connection}},id:{enumerable:!0,get:function(){return t._midiInput.id}},manufacturer:{enumerable:!0,get:function(){return t._midiInput.manufacturer}},name:{enumerable:!0,get:function(){return t._midiInput.name}},state:{enumerable:!0,get:function(){return t._midiInput.state}},type:{enumerable:!0,get:function(){return t._midiInput.type}}}),this._initializeUserHandlers(),this._midiInput.onmidimessage=this._onMidiMessage.bind(this)}function Output(e){var t=this;this._midiOutput=e,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return t._midiOutput.connection}},id:{enumerable:!0,get:function(){return t._midiOutput.id}},manufacturer:{enumerable:!0,get:function(){return t._midiOutput.manufacturer}},name:{enumerable:!0,get:function(){return t._midiOutput.name}},state:{enumerable:!0,get:function(){return t._midiOutput.state}},type:{enumerable:!0,get:function(){return t._midiOutput.type}}})}WebMidi.prototype.enable=function(e,t){this.enabled||(this.supported?navigator.requestMIDIAccess({sysex:t}).then(function(t){var n,r=[],i=[];this.interface=t,this._resetInterfaceUserHandlers(),this.interface.onstatechange=function(e){r.push(e)};for(var a=t.inputs.values(),o=a.next();o&&!o.done;o=a.next())i.push(o.value.open());for(var s=t.outputs.values(),c=s.next();c&&!c.done;c=s.next())i.push(c.value.open());function onPortsOpen(){clearTimeout(n),this._updateInputsAndOutputs(),this.interface.onstatechange=this._onInterfaceStateChange.bind(this),typeof e==`function`&&e.call(this),r.forEach(function(e){this._onInterfaceStateChange(e)}.bind(this))}n=setTimeout(onPortsOpen.bind(this),200),Promise&&Promise.all(i).catch(function(e){}).then(onPortsOpen.bind(this))}.bind(this),function(t){typeof e==`function`&&e.call(this,t)}.bind(this)):typeof e==`function`&&e(Error(`The Web MIDI API is not supported by your browser.`)))},WebMidi.prototype.disable=function(){if(!this.supported)throw Error(`The Web MIDI API is not supported by your browser.`);this.enabled&&(this.removeListener(),this.inputs.forEach(function(e){e.removeListener()})),this.interface&&(this.interface.onstatechange=void 0),this.interface=void 0,this._inputs=[],this._outputs=[],this._nrpnEventsEnabled=!0,this._resetInterfaceUserHandlers()},WebMidi.prototype.addListener=function(e,t){if(!this.enabled)throw Error(`WebMidi must be enabled before adding event listeners.`);if(typeof t!=`function`)throw TypeError(`The 'listener' parameter must be a function.`);if(!(0<=this._midiInterfaceEvents.indexOf(e)))throw TypeError(`The specified event type is not supported.`);return this._userHandlers[e].push(t),this},WebMidi.prototype.hasListener=function(e,t){if(!this.enabled)throw Error(`WebMidi must be enabled before checking event listeners.`);if(typeof t!=`function`)throw TypeError(`The 'listener' parameter must be a function.`);if(!(0<=this._midiInterfaceEvents.indexOf(e)))throw TypeError(`The specified event type is not supported.`);for(var n=0;n<this._userHandlers[e].length;n++)if(this._userHandlers[e][n]===t)return!0;return!1},WebMidi.prototype.removeListener=function(e,t){if(!this.enabled)throw Error(`WebMidi must be enabled before removing event listeners.`);if(t!==void 0&&typeof t!=`function`)throw TypeError(`The 'listener' parameter must be a function.`);if(0<=this._midiInterfaceEvents.indexOf(e))if(t)for(var n=0;n<this._userHandlers[e].length;n++)this._userHandlers[e][n]===t&&this._userHandlers[e].splice(n,1);else this._userHandlers[e]=[];else{if(e!==void 0)throw TypeError(`The specified event type is not supported.`);this._resetInterfaceUserHandlers()}return this},WebMidi.prototype.toMIDIChannels=function(e){var t;if(e===`all`||e===void 0)t=[`all`];else{if(e===`none`)return t=[];t=Array.isArray(e)?e:[e]}return-1<t.indexOf(`all`)&&(t=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]),t.map(function(e){return parseInt(e)}).filter(function(e){return 1<=e&&e<=16})},WebMidi.prototype.getInputById=function(e){if(!this.enabled)throw Error(`WebMidi is not enabled.`);e=String(e);for(var t=0;t<this.inputs.length;t++)if(this.inputs[t].id===e)return this.inputs[t];return!1},WebMidi.prototype.getOutputById=function(e){if(!this.enabled)throw Error(`WebMidi is not enabled.`);e=String(e);for(var t=0;t<this.outputs.length;t++)if(this.outputs[t].id===e)return this.outputs[t];return!1},WebMidi.prototype.getInputByName=function(e){if(!this.enabled)throw Error(`WebMidi is not enabled.`);for(var t=0;t<this.inputs.length;t++)if(~this.inputs[t].name.indexOf(e))return this.inputs[t];return!1},WebMidi.prototype.getOctave=function(e){if(e!=null&&0<=e&&e<=127)return Math.floor(Math.floor(e)/12-1)+Math.floor(n.octaveOffset)},WebMidi.prototype.getOutputByName=function(e){if(!this.enabled)throw Error(`WebMidi is not enabled.`);for(var t=0;t<this.outputs.length;t++)if(~this.outputs[t].name.indexOf(e))return this.outputs[t];return!1},WebMidi.prototype.guessNoteNumber=function(e){var t=!1;if(e&&e.toFixed&&0<=e&&e<=127?t=Math.round(e):0<=parseInt(e)&&parseInt(e)<=127?t=parseInt(e):(typeof e==`string`||e instanceof String)&&(t=this.noteNameToNumber(e)),!1===t)throw Error(`Invalid input value (`+e+`).`);return t},WebMidi.prototype.noteNameToNumber=function(e){typeof e!=`string`&&(e=``);var t=e.match(/([CDEFGAB])(#{0,2}|b{0,2})(-?\d+)/i);if(!t)throw RangeError(`Invalid note name.`);var r=n._semitones[t[1].toUpperCase()],i=12*(parseInt(t[3])+1-Math.floor(n.octaveOffset))+r;if(-1<t[2].toLowerCase().indexOf(`b`)?i-=t[2].length:-1<t[2].toLowerCase().indexOf(`#`)&&(i+=t[2].length),i<0||127<i)throw RangeError(`Invalid note name or note outside valid range.`);return i},WebMidi.prototype._updateInputsAndOutputs=function(){this._updateInputs(),this._updateOutputs()},WebMidi.prototype._updateInputs=function(){for(var e=0;e<this._inputs.length;e++){for(var t=!0,n=this.interface.inputs.values(),r=n.next();r&&!r.done;r=n.next())if(this._inputs[e]._midiInput===r.value){t=!1;break}t&&this._inputs.splice(e,1)}this.interface&&this.interface.inputs.forEach(function(e){for(var t=!0,n=0;n<this._inputs.length;n++)this._inputs[n]._midiInput===e&&(t=!1);t&&this._inputs.push(new Input(e))}.bind(this))},WebMidi.prototype._updateOutputs=function(){for(var e=0;e<this._outputs.length;e++){for(var t=!0,n=this.interface.outputs.values(),r=n.next();r&&!r.done;r=n.next())if(this._outputs[e]._midiOutput===r.value){t=!1;break}t&&this._outputs.splice(e,1)}this.interface&&this.interface.outputs.forEach(function(e){for(var t=!0,n=0;n<this._outputs.length;n++)this._outputs[n]._midiOutput===e&&(t=!1);t&&this._outputs.push(new Output(e))}.bind(this))},WebMidi.prototype._onInterfaceStateChange=function(e){this._updateInputsAndOutputs();var t={timestamp:e.timeStamp,type:e.port.state};this.interface&&e.port.state===`connected`?e.port.type===`output`?t.port=this.getOutputById(e.port.id):e.port.type===`input`&&(t.port=this.getInputById(e.port.id)):t.port={connection:`closed`,id:e.port.id,manufacturer:e.port.manufacturer,name:e.port.name,state:e.port.state,type:e.port.type},this._userHandlers[e.port.state].forEach(function(e){e(t)})},WebMidi.prototype._resetInterfaceUserHandlers=function(){for(var e=0;e<this._midiInterfaceEvents.length;e++)this._userHandlers[this._midiInterfaceEvents[e]]=[]},Input.prototype.on=Input.prototype.addListener=function(e,t,r){var i=this;if(t===void 0&&(t=`all`),Array.isArray(t)||(t=[t]),t.forEach(function(e){if(e!==`all`&&!(1<=e&&e<=16))throw RangeError(`The 'channel' parameter is invalid.`)}),typeof r!=`function`)throw TypeError(`The 'listener' parameter must be a function.`);if(n.MIDI_SYSTEM_MESSAGES[e]!==void 0)this._userHandlers.system[e]||(this._userHandlers.system[e]=[]),this._userHandlers.system[e].push(r);else{if(n.MIDI_CHANNEL_MESSAGES[e]===void 0)throw TypeError(`The specified event type is not supported.`);if(-1<t.indexOf(`all`)){t=[];for(var a=1;a<=16;a++)t.push(a)}this._userHandlers.channel[e]||(this._userHandlers.channel[e]=[]),t.forEach(function(t){i._userHandlers.channel[e][t]||(i._userHandlers.channel[e][t]=[]),i._userHandlers.channel[e][t].push(r)})}return this},Input.prototype.hasListener=function(e,t,r){var i=this;if(typeof r!=`function`)throw TypeError(`The 'listener' parameter must be a function.`);if(t===void 0&&(t=`all`),t.constructor!==Array&&(t=[t]),n.MIDI_SYSTEM_MESSAGES[e]!==void 0){for(var a=0;a<this._userHandlers.system[e].length;a++)if(this._userHandlers.system[e][a]===r)return!0}else if(n.MIDI_CHANNEL_MESSAGES[e]!==void 0){if(-1<t.indexOf(`all`)){t=[];for(var o=1;o<=16;o++)t.push(o)}return!!this._userHandlers.channel[e]&&t.every(function(t){var n=i._userHandlers.channel[e][t];return n&&-1<n.indexOf(r)})}return!1},Input.prototype.removeListener=function(e,t,r){var i=this;if(r!==void 0&&typeof r!=`function`)throw TypeError(`The 'listener' parameter must be a function.`);if(t===void 0&&(t=`all`),t.constructor!==Array&&(t=[t]),n.MIDI_SYSTEM_MESSAGES[e]!==void 0)if(r===void 0)this._userHandlers.system[e]=[];else for(var a=0;a<this._userHandlers.system[e].length;a++)this._userHandlers.system[e][a]===r&&this._userHandlers.system[e].splice(a,1);else if(n.MIDI_CHANNEL_MESSAGES[e]!==void 0){if(-1<t.indexOf(`all`)){t=[];for(var o=1;o<=16;o++)t.push(o)}if(!this._userHandlers.channel[e])return this;t.forEach(function(t){var n=i._userHandlers.channel[e][t];if(n)if(r===void 0)i._userHandlers.channel[e][t]=[];else for(var a=0;a<n.length;a++)n[a]===r&&n.splice(a,1)})}else{if(e!==void 0)throw TypeError(`The specified event type is not supported.`);this._initializeUserHandlers()}return this},Input.prototype._initializeUserHandlers=function(){for(var e in n.MIDI_CHANNEL_MESSAGES)Object.prototype.hasOwnProperty.call(n.MIDI_CHANNEL_MESSAGES,e)&&(this._userHandlers.channel[e]={});for(var t in n.MIDI_SYSTEM_MESSAGES)Object.prototype.hasOwnProperty.call(n.MIDI_SYSTEM_MESSAGES,t)&&(this._userHandlers.system[t]=[])},Input.prototype._onMidiMessage=function(e){if(0<this._userHandlers.system.midimessage.length){var t={target:this,data:e.data,timestamp:e.timeStamp,type:`midimessage`};this._userHandlers.system.midimessage.forEach(function(e){e(t)})}e.data[0]<240?(this._parseChannelEvent(e),this._parseNrpnEvent(e)):e.data[0]<=255&&this._parseSystemEvent(e)},Input.prototype._parseNrpnEvent=function(e){var t,r,i=e.data[0]>>4,a=15&e.data[0],o=1+a;if(1<e.data.length&&(t=e.data[1],r=2<e.data.length?e.data[2]:void 0),n.nrpnEventsEnabled&&i===n.MIDI_CHANNEL_MESSAGES.controlchange&&(t>=n.MIDI_NRPN_MESSAGES.increment&&t<=n.MIDI_NRPN_MESSAGES.parammsb||t===n.MIDI_NRPN_MESSAGES.entrymsb||t===n.MIDI_NRPN_MESSAGES.entrylsb)){var s={target:this,type:`controlchange`,data:e.data,timestamp:e.timeStamp,channel:o,controller:{number:t,name:this.getCcNameByNumber(t)},value:r};if(s.controller.number===n.MIDI_NRPN_MESSAGES.parammsb&&s.value!=n.MIDI_NRPN_MESSAGES.nullactiveparameter)n._nrpnBuffer[a]=[],n._nrpnBuffer[a][0]=s;else if(n._nrpnBuffer[a].length===1&&s.controller.number===n.MIDI_NRPN_MESSAGES.paramlsb)n._nrpnBuffer[a].push(s);else if(n._nrpnBuffer[a].length!==2||s.controller.number!==n.MIDI_NRPN_MESSAGES.increment&&s.controller.number!==n.MIDI_NRPN_MESSAGES.decrement&&s.controller.number!==n.MIDI_NRPN_MESSAGES.entrymsb)if(n._nrpnBuffer[a].length===3&&n._nrpnBuffer[a][2].number===n.MIDI_NRPN_MESSAGES.entrymsb&&s.controller.number===n.MIDI_NRPN_MESSAGES.entrylsb)n._nrpnBuffer[a].push(s);else if(3<=n._nrpnBuffer[a].length&&n._nrpnBuffer[a].length<=4&&s.controller.number===n.MIDI_NRPN_MESSAGES.parammsb&&s.value===n.MIDI_NRPN_MESSAGES.nullactiveparameter)n._nrpnBuffer[a].push(s);else if(4<=n._nrpnBuffer[a].length&&n._nrpnBuffer[a].length<=5&&s.controller.number===n.MIDI_NRPN_MESSAGES.paramlsb&&s.value===n.MIDI_NRPN_MESSAGES.nullactiveparameter){n._nrpnBuffer[a].push(s);var c=[];n._nrpnBuffer[a].forEach(function(e){c.push(e.data)});var l=n._nrpnBuffer[a][0].value<<7|n._nrpnBuffer[a][1].value,u=n._nrpnBuffer[a][2].value;n._nrpnBuffer[a].length===6&&(u=n._nrpnBuffer[a][2].value<<7|n._nrpnBuffer[a][3].value);var d=``;switch(n._nrpnBuffer[a][2].controller.number){case n.MIDI_NRPN_MESSAGES.entrymsb:d=n._nrpnTypes[0];break;case n.MIDI_NRPN_MESSAGES.increment:d=n._nrpnTypes[1];break;case n.MIDI_NRPN_MESSAGES.decrement:d=n._nrpnTypes[2];break;default:throw Error(`The NPRN type was unidentifiable.`)}var f={timestamp:s.timestamp,channel:s.channel,type:`nrpn`,data:c,controller:{number:l,type:d,name:`Non-Registered Parameter `+l},value:u};n._nrpnBuffer[a]=[],this._userHandlers.channel[f.type]&&this._userHandlers.channel[f.type][f.channel]&&this._userHandlers.channel[f.type][f.channel].forEach(function(e){e(f)})}else n._nrpnBuffer[a]=[];else n._nrpnBuffer[a].push(s)}},Input.prototype._parseChannelEvent=function(e){var t,r,i=e.data[0]>>4,a=1+(15&e.data[0]);1<e.data.length&&(t=e.data[1],r=2<e.data.length?e.data[2]:void 0);var o={target:this,data:e.data,timestamp:e.timeStamp,channel:a};i===n.MIDI_CHANNEL_MESSAGES.noteoff||i===n.MIDI_CHANNEL_MESSAGES.noteon&&r===0?(o.type=`noteoff`,o.note={number:t,name:n._notes[t%12],octave:n.getOctave(t)},o.velocity=r/127,o.rawVelocity=r):i===n.MIDI_CHANNEL_MESSAGES.noteon?(o.type=`noteon`,o.note={number:t,name:n._notes[t%12],octave:n.getOctave(t)},o.velocity=r/127,o.rawVelocity=r):i===n.MIDI_CHANNEL_MESSAGES.keyaftertouch?(o.type=`keyaftertouch`,o.note={number:t,name:n._notes[t%12],octave:n.getOctave(t)},o.value=r/127):i===n.MIDI_CHANNEL_MESSAGES.controlchange&&0<=t&&t<=119?(o.type=`controlchange`,o.controller={number:t,name:this.getCcNameByNumber(t)},o.value=r):i===n.MIDI_CHANNEL_MESSAGES.channelmode&&120<=t&&t<=127?(o.type=`channelmode`,o.controller={number:t,name:this.getChannelModeByNumber(t)},o.value=r):i===n.MIDI_CHANNEL_MESSAGES.programchange?(o.type=`programchange`,o.value=t):i===n.MIDI_CHANNEL_MESSAGES.channelaftertouch?(o.type=`channelaftertouch`,o.value=t/127):i===n.MIDI_CHANNEL_MESSAGES.pitchbend?(o.type=`pitchbend`,o.value=((r<<7)+t-8192)/8192):o.type=`unknownchannelmessage`,this._userHandlers.channel[o.type]&&this._userHandlers.channel[o.type][a]&&this._userHandlers.channel[o.type][a].forEach(function(e){e(o)})},Input.prototype.getCcNameByNumber=function(e){if(!(0<=(e=Math.floor(e))&&e<=119))throw RangeError(`The control change number must be between 0 and 119.`);for(var t in n.MIDI_CONTROL_CHANGE_MESSAGES)if(Object.prototype.hasOwnProperty.call(n.MIDI_CONTROL_CHANGE_MESSAGES,t)&&e===n.MIDI_CONTROL_CHANGE_MESSAGES[t])return t},Input.prototype.getChannelModeByNumber=function(e){if(!(120<=(e=Math.floor(e))&&status<=127))throw RangeError(`The control change number must be between 120 and 127.`);for(var t in n.MIDI_CHANNEL_MODE_MESSAGES)if(Object.prototype.hasOwnProperty.call(n.MIDI_CHANNEL_MODE_MESSAGES,t)&&e===n.MIDI_CHANNEL_MODE_MESSAGES[t])return t},Input.prototype._parseSystemEvent=function(e){var t=e.data[0],r={target:this,data:e.data,timestamp:e.timeStamp};t===n.MIDI_SYSTEM_MESSAGES.sysex?r.type=`sysex`:t===n.MIDI_SYSTEM_MESSAGES.timecode?r.type=`timecode`:t===n.MIDI_SYSTEM_MESSAGES.songposition?r.type=`songposition`:t===n.MIDI_SYSTEM_MESSAGES.songselect?(r.type=`songselect`,r.song=e.data[1]):t===n.MIDI_SYSTEM_MESSAGES.tuningrequest?r.type=`tuningrequest`:t===n.MIDI_SYSTEM_MESSAGES.clock?r.type=`clock`:t===n.MIDI_SYSTEM_MESSAGES.start?r.type=`start`:t===n.MIDI_SYSTEM_MESSAGES.continue?r.type=`continue`:t===n.MIDI_SYSTEM_MESSAGES.stop?r.type=`stop`:t===n.MIDI_SYSTEM_MESSAGES.activesensing?r.type=`activesensing`:t===n.MIDI_SYSTEM_MESSAGES.reset?r.type=`reset`:r.type=`unknownsystemmessage`,this._userHandlers.system[r.type]&&this._userHandlers.system[r.type].forEach(function(e){e(r)})},Output.prototype.send=function(e,t,n){if(!(128<=e&&e<=255))throw RangeError(`The status byte must be an integer between 128 (0x80) and 255 (0xFF).`);t===void 0&&(t=[]),Array.isArray(t)||(t=[t]);var r=[];return t.forEach(function(e){var t=Math.floor(e);if(!(0<=t&&t<=255))throw RangeError(`Data bytes must be integers between 0 (0x00) and 255 (0xFF).`);r.push(t)}),this._midiOutput.send([e].concat(r),parseFloat(n)||0),this},Output.prototype.sendSysex=function(e,t,r){if(!n.sysexEnabled)throw Error(`Sysex message support must first be activated.`);return r||={},e=[].concat(e),t.forEach(function(e){if(e<0||127<e)throw RangeError(`The data bytes of a sysex message must be integers between 0 (0x00) and 127 (0x7F).`)}),t=e.concat(t,n.MIDI_SYSTEM_MESSAGES.sysexend),this.send(n.MIDI_SYSTEM_MESSAGES.sysex,t,this._parseTimeParameter(r.time)),this},Output.prototype.sendTimecodeQuarterFrame=function(e,t){return t||={},this.send(n.MIDI_SYSTEM_MESSAGES.timecode,e,this._parseTimeParameter(t.time)),this},Output.prototype.sendSongPosition=function(e,t){t||={};var r=(e=Math.floor(e)||0)>>7&127,i=127&e;return this.send(n.MIDI_SYSTEM_MESSAGES.songposition,[r,i],this._parseTimeParameter(t.time)),this},Output.prototype.sendSongSelect=function(e,t){if(t||={},!(0<=(e=Math.floor(e))&&e<=127))throw RangeError(`The song number must be between 0 and 127.`);return this.send(n.MIDI_SYSTEM_MESSAGES.songselect,[e],this._parseTimeParameter(t.time)),this},Output.prototype.sendTuningRequest=function(e){return e||={},this.send(n.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(e.time)),this},Output.prototype.sendClock=function(e){return e||={},this.send(n.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(e.time)),this},Output.prototype.sendStart=function(e){return e||={},this.send(n.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(e.time)),this},Output.prototype.sendContinue=function(e){return e||={},this.send(n.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(e.time)),this},Output.prototype.sendStop=function(e){return e||={},this.send(n.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(e.time)),this},Output.prototype.sendActiveSensing=function(e){return e||={},this.send(n.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(e.time)),this},Output.prototype.sendReset=function(e){return e||={},this.send(n.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(e.time)),this},Output.prototype.stopNote=function(e,t,r){if(e===`all`)return this.sendChannelMode(`allnotesoff`,0,t,r);var i=64;return(r||={}).rawVelocity?!isNaN(r.velocity)&&0<=r.velocity&&r.velocity<=127&&(i=r.velocity):!isNaN(r.velocity)&&0<=r.velocity&&r.velocity<=1&&(i=127*r.velocity),this._convertNoteToArray(e).forEach(function(e){n.toMIDIChannels(t).forEach(function(t){this.send((n.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(t-1),[e,Math.round(i)],this._parseTimeParameter(r.time))}.bind(this))}.bind(this)),this},Output.prototype.playNote=function(e,t,r){var i,a=64;if((r||={}).rawVelocity?!isNaN(r.velocity)&&0<=r.velocity&&r.velocity<=127&&(a=r.velocity):!isNaN(r.velocity)&&0<=r.velocity&&r.velocity<=1&&(a=127*r.velocity),i=this._parseTimeParameter(r.time),this._convertNoteToArray(e).forEach(function(e){n.toMIDIChannels(t).forEach(function(t){this.send((n.MIDI_CHANNEL_MESSAGES.noteon<<4)+(t-1),[e,Math.round(a)],i)}.bind(this))}.bind(this)),!isNaN(r.duration)){r.duration<=0&&(r.duration=0);var o=64;r.rawVelocity?!isNaN(r.release)&&0<=r.release&&r.release<=127&&(o=r.release):!isNaN(r.release)&&0<=r.release&&r.release<=1&&(o=127*r.release),this._convertNoteToArray(e).forEach(function(e){n.toMIDIChannels(t).forEach(function(t){this.send((n.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(t-1),[e,Math.round(o)],(i||n.time)+r.duration)}.bind(this))}.bind(this))}return this},Output.prototype.sendKeyAftertouch=function(e,t,r,i){var a=this;if(i||={},t<1||16<t)throw RangeError(`The channel must be between 1 and 16.`);(isNaN(r)||r<0||1<r)&&(r=.5);var o=Math.round(127*r);return this._convertNoteToArray(e).forEach(function(e){n.toMIDIChannels(t).forEach(function(t){a.send((n.MIDI_CHANNEL_MESSAGES.keyaftertouch<<4)+(t-1),[e,o],a._parseTimeParameter(i.time))})}),this},Output.prototype.sendControlChange=function(e,t,r,i){if(i||={},typeof e==`string`){if((e=n.MIDI_CONTROL_CHANGE_MESSAGES[e])===void 0)throw TypeError(`Invalid controller name.`)}else if(!(0<=(e=Math.floor(e))&&e<=119))throw RangeError(`Controller numbers must be between 0 and 119.`);if(!(0<=(t=Math.floor(t)||0)&&t<=127))throw RangeError(`Controller value must be between 0 and 127.`);return n.toMIDIChannels(r).forEach(function(r){this.send((n.MIDI_CHANNEL_MESSAGES.controlchange<<4)+(r-1),[e,t],this._parseTimeParameter(i.time))}.bind(this)),this},Output.prototype._selectRegisteredParameter=function(e,t,r){var i=this;if(e[0]=Math.floor(e[0]),!(0<=e[0]&&e[0]<=127))throw RangeError(`The control65 value must be between 0 and 127`);if(e[1]=Math.floor(e[1]),!(0<=e[1]&&e[1]<=127))throw RangeError(`The control64 value must be between 0 and 127`);return n.toMIDIChannels(t).forEach(function(){i.sendControlChange(101,e[0],t,{time:r}),i.sendControlChange(100,e[1],t,{time:r})}),this},Output.prototype._selectNonRegisteredParameter=function(e,t,r){var i=this;if(e[0]=Math.floor(e[0]),!(0<=e[0]&&e[0]<=127))throw RangeError(`The control63 value must be between 0 and 127`);if(e[1]=Math.floor(e[1]),!(0<=e[1]&&e[1]<=127))throw RangeError(`The control62 value must be between 0 and 127`);return n.toMIDIChannels(t).forEach(function(){i.sendControlChange(99,e[0],t,{time:r}),i.sendControlChange(98,e[1],t,{time:r})}),this},Output.prototype._setCurrentRegisteredParameter=function(e,t,r){var i=this;if((e=[].concat(e))[0]=Math.floor(e[0]),!(0<=e[0]&&e[0]<=127))throw RangeError(`The msb value must be between 0 and 127`);return n.toMIDIChannels(t).forEach(function(){i.sendControlChange(6,e[0],t,{time:r})}),e[1]=Math.floor(e[1]),0<=e[1]&&e[1]<=127&&n.toMIDIChannels(t).forEach(function(){i.sendControlChange(38,e[1],t,{time:r})}),this},Output.prototype._deselectRegisteredParameter=function(e,t){var r=this;return n.toMIDIChannels(e).forEach(function(){r.sendControlChange(101,127,e,{time:t}),r.sendControlChange(100,127,e,{time:t})}),this},Output.prototype.setRegisteredParameter=function(e,t,r,i){var a=this;if(i||={},!Array.isArray(e)){if(!n.MIDI_REGISTERED_PARAMETER[e])throw Error(`The specified parameter is not available.`);e=n.MIDI_REGISTERED_PARAMETER[e]}return n.toMIDIChannels(r).forEach(function(){a._selectRegisteredParameter(e,r,i.time),a._setCurrentRegisteredParameter(t,r,i.time),a._deselectRegisteredParameter(r,i.time)}),this},Output.prototype.setNonRegisteredParameter=function(e,t,r,i){var a=this;if(i||={},!(0<=e[0]&&e[0]<=127&&0<=e[1]&&e[1]<=127))throw Error(`Position 0 and 1 of the 2-position parameter array must both be between 0 and 127.`);return t=[].concat(t),n.toMIDIChannels(r).forEach(function(){a._selectNonRegisteredParameter(e,r,i.time),a._setCurrentRegisteredParameter(t,r,i.time),a._deselectRegisteredParameter(r,i.time)}),this},Output.prototype.incrementRegisteredParameter=function(e,t,r){var i=this;if(r||={},!Array.isArray(e)){if(!n.MIDI_REGISTERED_PARAMETER[e])throw Error(`The specified parameter is not available.`);e=n.MIDI_REGISTERED_PARAMETER[e]}return n.toMIDIChannels(t).forEach(function(){i._selectRegisteredParameter(e,t,r.time),i.sendControlChange(96,0,t,{time:r.time}),i._deselectRegisteredParameter(t,r.time)}),this},Output.prototype.decrementRegisteredParameter=function(e,t,r){if(r||={},!Array.isArray(e)){if(!n.MIDI_REGISTERED_PARAMETER[e])throw TypeError(`The specified parameter is not available.`);e=n.MIDI_REGISTERED_PARAMETER[e]}return n.toMIDIChannels(t).forEach(function(){this._selectRegisteredParameter(e,t,r.time),this.sendControlChange(97,0,t,{time:r.time}),this._deselectRegisteredParameter(t,r.time)}.bind(this)),this},Output.prototype.setPitchBendRange=function(e,t,r,i){var a=this;if(i||={},!(0<=(e=Math.floor(e)||0)&&e<=127))throw RangeError(`The semitones value must be between 0 and 127`);if(!(0<=(t=Math.floor(t)||0)&&t<=127))throw RangeError(`The cents value must be between 0 and 127`);return n.toMIDIChannels(r).forEach(function(){a.setRegisteredParameter(`pitchbendrange`,[e,t],r,{time:i.time})}),this},Output.prototype.setModulationRange=function(e,t,r,i){var a=this;if(i||={},!(0<=(e=Math.floor(e)||0)&&e<=127))throw RangeError(`The semitones value must be between 0 and 127`);if(!(0<=(t=Math.floor(t)||0)&&t<=127))throw RangeError(`The cents value must be between 0 and 127`);return n.toMIDIChannels(r).forEach(function(){a.setRegisteredParameter(`modulationrange`,[e,t],r,{time:i.time})}),this},Output.prototype.setMasterTuning=function(e,t,r){var i=this;if(r||={},(e=parseFloat(e)||0)<=-65||64<=e)throw RangeError(`The value must be a decimal number larger than -65 and smaller than 64.`);var a=Math.floor(e)+64,o=e-Math.floor(e),s=(o=Math.round((o+1)/2*16383))>>7&127,c=127&o;return n.toMIDIChannels(t).forEach(function(){i.setRegisteredParameter(`channelcoarsetuning`,a,t,{time:r.time}),i.setRegisteredParameter(`channelfinetuning`,[s,c],t,{time:r.time})}),this},Output.prototype.setTuningProgram=function(e,t,r){var i=this;if(r||={},!(0<=(e=Math.floor(e))&&e<=127))throw RangeError(`The program value must be between 0 and 127`);return n.toMIDIChannels(t).forEach(function(){i.setRegisteredParameter(`tuningprogram`,e,t,{time:r.time})}),this},Output.prototype.setTuningBank=function(e,t,r){var i=this;if(r||={},!(0<=(e=Math.floor(e)||0)&&e<=127))throw RangeError(`The bank value must be between 0 and 127`);return n.toMIDIChannels(t).forEach(function(){i.setRegisteredParameter(`tuningbank`,e,t,{time:r.time})}),this},Output.prototype.sendChannelMode=function(e,t,r,i){if(i||={},typeof e==`string`){if(!(e=n.MIDI_CHANNEL_MODE_MESSAGES[e]))throw TypeError(`Invalid channel mode message name.`)}else if(!(120<=(e=Math.floor(e))&&e<=127))throw RangeError(`Channel mode numerical identifiers must be between 120 and 127.`);if((t=Math.floor(t)||0)<0||127<t)throw RangeError(`Value must be an integer between 0 and 127.`);return n.toMIDIChannels(r).forEach(function(r){this.send((n.MIDI_CHANNEL_MESSAGES.channelmode<<4)+(r-1),[e,t],this._parseTimeParameter(i.time))}.bind(this)),this},Output.prototype.sendProgramChange=function(e,t,r){var i=this;if(r||={},e=Math.floor(e),isNaN(e)||e<0||127<e)throw RangeError(`Program numbers must be between 0 and 127.`);return n.toMIDIChannels(t).forEach(function(t){i.send((n.MIDI_CHANNEL_MESSAGES.programchange<<4)+(t-1),[e],i._parseTimeParameter(r.time))}),this},Output.prototype.sendChannelAftertouch=function(e,t,r){var i=this;r||={},e=parseFloat(e),(isNaN(e)||e<0||1<e)&&(e=.5);var a=Math.round(127*e);return n.toMIDIChannels(t).forEach(function(e){i.send((n.MIDI_CHANNEL_MESSAGES.channelaftertouch<<4)+(e-1),[a],i._parseTimeParameter(r.time))}),this},Output.prototype.sendPitchBend=function(e,t,r){var i=this;if(r||={},isNaN(e)||e<-1||1<e)throw RangeError(`Pitch bend value must be between -1 and 1.`);var a=Math.round((e+1)/2*16383),o=a>>7&127,s=127&a;return n.toMIDIChannels(t).forEach(function(e){i.send((n.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(e-1),[s,o],i._parseTimeParameter(r.time))}),this},Output.prototype._parseTimeParameter=function(e){var t,r=parseFloat(e);return typeof e==`string`&&e.substring(0,1)===`+`?r&&0<r&&(t=n.time+r):r>n.time&&(t=r),t},Output.prototype._convertNoteToArray=function(e){var t=[];return Array.isArray(e)||(e=[e]),e.forEach(function(e){t.push(n.guessNoteNumber(e))}),t},typeof define==`function`&&typeof define.amd==`object`?define([],function(){return n}):t!==void 0&&t.exports?t.exports=n:e.WebMidi||=n})(e)})),fillStr=(e,t)=>Array(Math.abs(t)+1).join(e);function isNamed(e){return!!(typeof e==`object`&&e&&typeof e.name==`string`)}function isPitch(e){return!!(typeof e==`object`&&e&&typeof e.step==`number`&&typeof e.alt==`number`)}var s=[0,2,4,-1,1,3,5],c=s.map(e=>Math.floor(e*7/12));function encode(e){let{step:t,alt:n,oct:r,dir:i=1}=e,a=s[t]+7*n;if(r===void 0)return[i*a];let o=r-c[t]-4*n;return[i*a,i*o]}var l=[3,0,4,1,5,2,6];function decode(e){let[t,n,r]=e,i=l[unaltered(t)],a=Math.floor((t+1)/7);return n===void 0?{step:i,alt:a,dir:r}:{step:i,alt:a,oct:n+4*a+c[i],dir:r}}function unaltered(e){let t=(e+1)%7;return t<0?7+t:t}var u={empty:!0,name:``,pc:``,acc:``},d=new Map,stepToLetter=e=>`CDEFGAB`.charAt(e),altToAcc=e=>e<0?fillStr(`b`,-e):fillStr(`#`,e),accToAlt=e=>e[0]===`b`?-e.length:e.length;function note(e){let t=d.get(e);if(t)return t;let n=typeof e==`string`?parse$1(e):isPitch(e)?note(pitchName(e)):isNamed(e)?note(e.name):u;return d.set(e,n),n}var f=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function tokenizeNote(e){let t=f.exec(e);return[t[1].toUpperCase(),t[2].replace(/x/g,`##`),t[3],t[4]]}function coordToNote(e){return note(decode(e))}var mod=(e,t)=>(e%t+t)%t,p=[0,2,4,5,7,9,11];function parse$1(e){let t=tokenizeNote(e);if(t[0]===``||t[3]!==``)return u;let n=t[0],r=t[1],i=t[2],a=(n.charCodeAt(0)+3)%7,o=accToAlt(r),s=i.length?+i:void 0,c=encode({step:a,alt:o,oct:s}),l=n+r+i,d=n+r,f=(p[a]+o+120)%12,m=s===void 0?mod(p[a]+o,12)-1188:p[a]+o+12*(s+1),h=m>=0&&m<=127?m:null;return{empty:!1,acc:r,alt:o,chroma:f,coord:c,freq:s===void 0?null:2**((m-69)/12)*440,height:m,letter:n,midi:h,name:l,oct:s,pc:d,step:a}}e.r(parse$1,`parse`);function pitchName(e){let{step:t,alt:n,oct:r}=e,i=stepToLetter(t);if(!i)return``;let a=i+altToAcc(n);return r||r===0?a+r:a}var m={empty:!0,name:``,acc:``},h=RegExp(`^([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})|(AA|A|P|M|m|d|dd)([-+]?\\d+)$`);function tokenizeInterval(e){let t=h.exec(`${e}`);return t===null?[``,``]:t[1]?[t[1],t[2]]:[t[4],t[3]]}var g={};function interval(e){return typeof e==`string`?g[e]||(g[e]=parse$1$1(e)):isPitch(e)?interval(pitchName$1(e)):isNamed(e)?interval(e.name):m}var _=[0,2,4,5,7,9,11],v=`PMMPPMM`;function parse$1$1(e){let t=tokenizeInterval(e);if(t[0]===``)return m;let n=+t[0],r=t[1],i=(Math.abs(n)-1)%7,a=v[i];if(a===`M`&&r===`P`)return m;let o=a===`M`?`majorable`:`perfectable`,s=``+n+r,c=n<0?-1:1,l=n===8||n===-8?n:c*(i+1),u=qToAlt(o,r),d=Math.floor((Math.abs(n)-1)/7);return{empty:!1,name:s,num:n,q:r,step:i,alt:u,dir:c,type:o,simple:l,semitones:c*(_[i]+u+12*d),chroma:(c*(_[i]+u)%12+12)%12,coord:encode({step:i,alt:u,oct:d,dir:c}),oct:d}}e.r(parse$1$1,`parse$1`);function coordToInterval(e){let[t,n=0]=e;return interval(decode(t*7+n*12<0?[-t,-n,-1]:[t,n,1]))}function qToAlt(e,t){return t===`M`&&e===`majorable`||t===`P`&&e===`perfectable`?0:t===`m`&&e===`majorable`?-1:/^A+$/.test(t)?t.length:/^d+$/.test(t)?-1*(e===`perfectable`?t.length:t.length+1):0}function pitchName$1(e){let{step:t,alt:n,oct:r=0,dir:i}=e;if(!i)return``;let a=t+1+7*r,o=i<0?`-`:``,s=v[t]===`M`?`majorable`:`perfectable`;return o+a+altToQ(s,n)}function altToQ(e,t){return t===0?e===`majorable`?`M`:`P`:t===-1&&e===`majorable`?`m`:t>0?fillStr(`A`,t):fillStr(`d`,e===`perfectable`?t:t+1)}function transpose$2(e,t){let n=note(e),r=interval(t);if(n.empty||r.empty)return``;let i=n.coord,a=r.coord;return coordToNote(i.length===1?[i[0]+a[0]]:[i[0]+a[0],i[1]+a[1]]).name}e.r(transpose$2,`transpose`);function distance$1(e,t){let n=note(e),r=note(t);if(n.empty||r.empty)return``;let i=n.coord,a=r.coord,o=a[0]-i[0];return coordToInterval([o,i.length===2&&a.length===2?a[1]-i[1]:-Math.floor(o*7/12)]).name}e.r(distance$1,`distance`);function rotate(e,t){let n=t.length,r=(e%n+n)%n;return t.slice(r,n).concat(t.slice(0,r))}var y={empty:!0,name:``,setNum:0,chroma:`000000000000`,normalized:`000000000000`,intervals:[]},setNumToChroma=e=>Number(e).toString(2),chromaToNumber=e=>parseInt(e,2),b=/^[01]{12}$/;function isChroma(e){return b.test(e)}var isPcsetNum=e=>typeof e==`number`&&e>=0&&e<=4095,isPcset=e=>e&&isChroma(e.chroma),x={[y.chroma]:y};function get$8(e){let t=isChroma(e)?e:isPcsetNum(e)?setNumToChroma(e):Array.isArray(e)?listToChroma(e):isPcset(e)?e.chroma:y.chroma;return x[t]=x[t]||chromaToPcset(t)}e.r(get$8,`get`);var S=[`1P`,`2m`,`2M`,`3m`,`3M`,`4P`,`5d`,`5P`,`6m`,`6M`,`7m`,`7M`];function chromaToIntervals(e){let t=[];for(let n=0;n<12;n++)e.charAt(n)===`1`&&t.push(S[n]);return t}function chromaRotations(e){let t=e.split(``);return t.map((e,n)=>rotate(n,t).join(``))}function chromaToPcset(e){let t=chromaToNumber(e),n=chromaRotations(e).map(chromaToNumber).filter(e=>e>=2048).sort()[0];return{empty:!1,name:``,setNum:t,chroma:e,normalized:setNumToChroma(n),intervals:chromaToIntervals(e)}}function listToChroma(e){if(e.length===0)return y.chroma;let t,n=[0,0,0,0,0,0,0,0,0,0,0,0];for(let r=0;r<e.length;r++)t=note(e[r]),t.empty&&(t=interval(e[r])),t.empty||(n[t.chroma]=1);return n.join(``)}var C=[[`1P 3M 5P`,`major`,`M ^ `],[`1P 3M 5P 7M`,`major seventh`,`maj7 Δ ma7 M7 Maj7 ^7`],[`1P 3M 5P 7M 9M`,`major ninth`,`maj9 Δ9 ^9`],[`1P 3M 5P 7M 9M 13M`,`major thirteenth`,`maj13 Maj13 ^13`],[`1P 3M 5P 6M`,`sixth`,`6 add6 add13 M6`],[`1P 3M 5P 6M 9M`,`sixth/ninth`,`6/9 69 M69`],[`1P 3M 6m 7M`,`major seventh flat sixth`,`M7b6 ^7b6`],[`1P 3M 5P 7M 11A`,`major seventh sharp eleventh`,`maj#4 Δ#4 Δ#11 M7#11 ^7#11 maj7#11`],[`1P 3m 5P`,`minor`,`m min -`],[`1P 3m 5P 7m`,`minor seventh`,`m7 min7 mi7 -7`],[`1P 3m 5P 7M`,`minor/major seventh`,`m/ma7 m/maj7 mM7 mMaj7 m/M7 -Δ7 mΔ -^7`],[`1P 3m 5P 6M`,`minor sixth`,`m6 -6`],[`1P 3m 5P 7m 9M`,`minor ninth`,`m9 -9`],[`1P 3m 5P 7M 9M`,`minor/major ninth`,`mM9 mMaj9 -^9`],[`1P 3m 5P 7m 9M 11P`,`minor eleventh`,`m11 -11`],[`1P 3m 5P 7m 9M 13M`,`minor thirteenth`,`m13 -13`],[`1P 3m 5d`,`diminished`,`dim ° o`],[`1P 3m 5d 7d`,`diminished seventh`,`dim7 °7 o7`],[`1P 3m 5d 7m`,`half-diminished`,`m7b5 ø -7b5 h7 h`],[`1P 3M 5P 7m`,`dominant seventh`,`7 dom`],[`1P 3M 5P 7m 9M`,`dominant ninth`,`9`],[`1P 3M 5P 7m 9M 13M`,`dominant thirteenth`,`13`],[`1P 3M 5P 7m 11A`,`lydian dominant seventh`,`7#11 7#4`],[`1P 3M 5P 7m 9m`,`dominant flat ninth`,`7b9`],[`1P 3M 5P 7m 9A`,`dominant sharp ninth`,`7#9`],[`1P 3M 7m 9m`,`altered`,`alt7`],[`1P 4P 5P`,`suspended fourth`,`sus4 sus`],[`1P 2M 5P`,`suspended second`,`sus2`],[`1P 4P 5P 7m`,`suspended fourth seventh`,`7sus4 7sus`],[`1P 5P 7m 9M 11P`,`eleventh`,`11`],[`1P 4P 5P 7m 9m`,`suspended fourth flat ninth`,`b9sus phryg 7b9sus 7b9sus4`],[`1P 5P`,`fifth`,`5`],[`1P 3M 5A`,`augmented`,`aug + +5 ^#5`],[`1P 3m 5A`,`minor augmented`,`m#5 -#5 m+`],[`1P 3M 5A 7M`,`augmented seventh`,`maj7#5 maj7+5 +maj7 ^7#5`],[`1P 3M 5P 7M 9M 11A`,`major sharp eleventh (lydian)`,`maj9#11 Δ9#11 ^9#11`],[`1P 2M 4P 5P`,``,`sus24 sus4add9`],[`1P 3M 5A 7M 9M`,``,`maj9#5 Maj9#5`],[`1P 3M 5A 7m`,``,`7#5 +7 7+ 7aug aug7`],[`1P 3M 5A 7m 9A`,``,`7#5#9 7#9#5 7alt`],[`1P 3M 5A 7m 9M`,``,`9#5 9+`],[`1P 3M 5A 7m 9M 11A`,``,`9#5#11`],[`1P 3M 5A 7m 9m`,``,`7#5b9 7b9#5`],[`1P 3M 5A 7m 9m 11A`,``,`7#5b9#11`],[`1P 3M 5A 9A`,``,`+add#9`],[`1P 3M 5A 9M`,``,`M#5add9 +add9`],[`1P 3M 5P 6M 11A`,``,`M6#11 M6b5 6#11 6b5`],[`1P 3M 5P 6M 7M 9M`,``,`M7add13`],[`1P 3M 5P 6M 9M 11A`,``,`69#11`],[`1P 3m 5P 6M 9M`,``,`m69 -69`],[`1P 3M 5P 6m 7m`,``,`7b6`],[`1P 3M 5P 7M 9A 11A`,``,`maj7#9#11`],[`1P 3M 5P 7M 9M 11A 13M`,``,`M13#11 maj13#11 M13+4 M13#4`],[`1P 3M 5P 7M 9m`,``,`M7b9`],[`1P 3M 5P 7m 11A 13m`,``,`7#11b13 7b5b13`],[`1P 3M 5P 7m 13M`,``,`7add6 67 7add13`],[`1P 3M 5P 7m 9A 11A`,``,`7#9#11 7b5#9 7#9b5`],[`1P 3M 5P 7m 9A 11A 13M`,``,`13#9#11`],[`1P 3M 5P 7m 9A 11A 13m`,``,`7#9#11b13`],[`1P 3M 5P 7m 9A 13M`,``,`13#9`],[`1P 3M 5P 7m 9A 13m`,``,`7#9b13`],[`1P 3M 5P 7m 9M 11A`,``,`9#11 9+4 9#4`],[`1P 3M 5P 7m 9M 11A 13M`,``,`13#11 13+4 13#4`],[`1P 3M 5P 7m 9M 11A 13m`,``,`9#11b13 9b5b13`],[`1P 3M 5P 7m 9m 11A`,``,`7b9#11 7b5b9 7b9b5`],[`1P 3M 5P 7m 9m 11A 13M`,``,`13b9#11`],[`1P 3M 5P 7m 9m 11A 13m`,``,`7b9b13#11 7b9#11b13 7b5b9b13`],[`1P 3M 5P 7m 9m 13M`,``,`13b9`],[`1P 3M 5P 7m 9m 13m`,``,`7b9b13`],[`1P 3M 5P 7m 9m 9A`,``,`7b9#9`],[`1P 3M 5P 9M`,``,`Madd9 2 add9 add2`],[`1P 3M 5P 9m`,``,`Maddb9`],[`1P 3M 5d`,``,`Mb5`],[`1P 3M 5d 6M 7m 9M`,``,`13b5`],[`1P 3M 5d 7M`,``,`M7b5`],[`1P 3M 5d 7M 9M`,``,`M9b5`],[`1P 3M 5d 7m`,``,`7b5`],[`1P 3M 5d 7m 9M`,``,`9b5`],[`1P 3M 7m`,``,`7no5`],[`1P 3M 7m 13m`,``,`7b13`],[`1P 3M 7m 9M`,``,`9no5`],[`1P 3M 7m 9M 13M`,``,`13no5`],[`1P 3M 7m 9M 13m`,``,`9b13`],[`1P 3m 4P 5P`,``,`madd4`],[`1P 3m 5P 6m 7M`,``,`mMaj7b6`],[`1P 3m 5P 6m 7M 9M`,``,`mMaj9b6`],[`1P 3m 5P 7m 11P`,``,`m7add11 m7add4`],[`1P 3m 5P 9M`,``,`madd9`],[`1P 3m 5d 6M 7M`,``,`o7M7`],[`1P 3m 5d 7M`,``,`oM7`],[`1P 3m 6m 7M`,``,`mb6M7`],[`1P 3m 6m 7m`,``,`m7#5`],[`1P 3m 6m 7m 9M`,``,`m9#5`],[`1P 3m 5A 7m 9M 11P`,``,`m11A`],[`1P 3m 6m 9m`,``,`mb6b9`],[`1P 2M 3m 5d 7m`,``,`m9b5`],[`1P 4P 5A 7M`,``,`M7#5sus4`],[`1P 4P 5A 7M 9M`,``,`M9#5sus4`],[`1P 4P 5A 7m`,``,`7#5sus4`],[`1P 4P 5P 7M`,``,`M7sus4`],[`1P 4P 5P 7M 9M`,``,`M9sus4`],[`1P 4P 5P 7m 9M`,``,`9sus4 9sus`],[`1P 4P 5P 7m 9M 13M`,``,`13sus4 13sus`],[`1P 4P 5P 7m 9m 13m`,``,`7sus4b9b13 7b9b13sus4`],[`1P 4P 7m 10m`,``,`4 quartal`],[`1P 5P 7m 9m 11P`,``,`11b9`]],w={...y,name:``,quality:`Unknown`,intervals:[],aliases:[]},T=[],E={};function get$7(e){return E[e]||w}e.r(get$7,`get`);function all$2(){return T.slice()}e.r(all$2,`all`);function add$3(e,t,n){let r=getQuality(e),i={...get$8(e),name:n||``,quality:r,intervals:e,aliases:t};T.push(i),i.name&&(E[i.name]=i),E[i.setNum]=i,E[i.chroma]=i,i.aliases.forEach(e=>addAlias$1(i,e))}e.r(add$3,`add`);function addAlias$1(e,t){E[t]=e}e.r(addAlias$1,`addAlias`);function getQuality(e){let has=t=>e.indexOf(t)!==-1;return has(`5A`)?`Augmented`:has(`3M`)?`Major`:has(`5d`)?`Diminished`:has(`3m`)?`Minor`:`Unknown`}C.forEach(([e,t,n])=>add$3(e.split(` `),n.split(` `),t)),T.sort((e,t)=>e.setNum-t.setNum);var D=[[`1P 2M 3M 5P 6M`,`major pentatonic`,`pentatonic`],[`1P 3M 4P 5P 7M`,`ionian pentatonic`],[`1P 3M 4P 5P 7m`,`mixolydian pentatonic`,`indian`],[`1P 2M 4P 5P 6M`,`ritusen`],[`1P 2M 4P 5P 7m`,`egyptian`],[`1P 3M 4P 5d 7m`,`neopolitan major pentatonic`],[`1P 3m 4P 5P 6m`,`vietnamese 1`],[`1P 2m 3m 5P 6m`,`pelog`],[`1P 2m 4P 5P 6m`,`kumoijoshi`],[`1P 2M 3m 5P 6m`,`hirajoshi`],[`1P 2m 4P 5d 7m`,`iwato`],[`1P 2m 4P 5P 7m`,`in-sen`],[`1P 3M 4A 5P 7M`,`lydian pentatonic`,`chinese`],[`1P 3m 4P 6m 7m`,`malkos raga`],[`1P 3m 4P 5d 7m`,`locrian pentatonic`,`minor seven flat five pentatonic`],[`1P 3m 4P 5P 7m`,`minor pentatonic`,`vietnamese 2`],[`1P 3m 4P 5P 6M`,`minor six pentatonic`],[`1P 2M 3m 5P 6M`,`flat three pentatonic`,`kumoi`],[`1P 2M 3M 5P 6m`,`flat six pentatonic`],[`1P 2m 3M 5P 6M`,`scriabin`],[`1P 3M 5d 6m 7m`,`whole tone pentatonic`],[`1P 3M 4A 5A 7M`,`lydian #5P pentatonic`],[`1P 3M 4A 5P 7m`,`lydian dominant pentatonic`],[`1P 3m 4P 5P 7M`,`minor #7M pentatonic`],[`1P 3m 4d 5d 7m`,`super locrian pentatonic`],[`1P 2M 3m 4P 5P 7M`,`minor hexatonic`],[`1P 2A 3M 5P 5A 7M`,`augmented`],[`1P 2M 3m 3M 5P 6M`,`major blues`],[`1P 2M 4P 5P 6M 7m`,`piongio`],[`1P 2m 3M 4A 6M 7m`,`prometheus neopolitan`],[`1P 2M 3M 4A 6M 7m`,`prometheus`],[`1P 2m 3M 5d 6m 7m`,`mystery #1`],[`1P 2m 3M 4P 5A 6M`,`six tone symmetric`],[`1P 2M 3M 4A 5A 7m`,`whole tone`,`messiaen's mode #1`],[`1P 2m 4P 4A 5P 7M`,`messiaen's mode #5`],[`1P 3m 4P 5d 5P 7m`,`minor blues`,`blues`],[`1P 2M 3M 4P 5d 6m 7m`,`locrian major`,`arabian`],[`1P 2m 3M 4A 5P 6m 7M`,`double harmonic lydian`],[`1P 2M 3m 4P 5P 6m 7M`,`harmonic minor`],[`1P 2m 3m 4d 5d 6m 7m`,`altered`,`super locrian`,`diminished whole tone`,`pomeroy`],[`1P 2M 3m 4P 5d 6m 7m`,`locrian #2`,`half-diminished`,`aeolian b5`],[`1P 2M 3M 4P 5P 6m 7m`,`mixolydian b6`,`melodic minor fifth mode`,`hindu`],[`1P 2M 3M 4A 5P 6M 7m`,`lydian dominant`,`lydian b7`,`overtone`],[`1P 2M 3M 4A 5P 6M 7M`,`lydian`],[`1P 2M 3M 4A 5A 6M 7M`,`lydian augmented`],[`1P 2m 3m 4P 5P 6M 7m`,`dorian b2`,`phrygian #6`,`melodic minor second mode`],[`1P 2M 3m 4P 5P 6M 7M`,`melodic minor`],[`1P 2m 3m 4P 5d 6m 7m`,`locrian`],[`1P 2m 3m 4d 5d 6m 7d`,`ultralocrian`,`superlocrian bb7`,`·superlocrian diminished`],[`1P 2m 3m 4P 5d 6M 7m`,`locrian 6`,`locrian natural 6`,`locrian sharp 6`],[`1P 2A 3M 4P 5P 5A 7M`,`augmented heptatonic`],[`1P 2M 3m 5d 5P 6M 7m`,`romanian minor`],[`1P 2M 3m 4A 5P 6M 7m`,`dorian #4`],[`1P 2M 3m 4A 5P 6M 7M`,`lydian diminished`],[`1P 2m 3m 4P 5P 6m 7m`,`phrygian`],[`1P 2M 3M 4A 5A 7m 7M`,`leading whole tone`],[`1P 2M 3M 4A 5P 6m 7m`,`lydian minor`],[`1P 2m 3M 4P 5P 6m 7m`,`phrygian dominant`,`spanish`,`phrygian major`],[`1P 2m 3m 4P 5P 6m 7M`,`balinese`],[`1P 2m 3m 4P 5P 6M 7M`,`neopolitan major`],[`1P 2M 3m 4P 5P 6m 7m`,`aeolian`,`minor`],[`1P 2M 3M 4P 5P 6m 7M`,`harmonic major`],[`1P 2m 3M 4P 5P 6m 7M`,`double harmonic major`,`gypsy`],[`1P 2M 3m 4P 5P 6M 7m`,`dorian`],[`1P 2M 3m 4A 5P 6m 7M`,`hungarian minor`],[`1P 2A 3M 4A 5P 6M 7m`,`hungarian major`],[`1P 2m 3M 4P 5d 6M 7m`,`oriental`],[`1P 2m 3m 3M 4A 5P 7m`,`flamenco`],[`1P 2m 3m 4A 5P 6m 7M`,`todi raga`],[`1P 2M 3M 4P 5P 6M 7m`,`mixolydian`,`dominant`],[`1P 2m 3M 4P 5d 6m 7M`,`persian`],[`1P 2M 3M 4P 5P 6M 7M`,`major`,`ionian`],[`1P 2m 3M 5d 6m 7m 7M`,`enigmatic`],[`1P 2M 3M 4P 5A 6M 7M`,`major augmented`,`major #5`,`ionian augmented`,`ionian #5`],[`1P 2A 3M 4A 5P 6M 7M`,`lydian #9`],[`1P 2m 2M 4P 4A 5P 6m 7M`,`messiaen's mode #4`],[`1P 2m 3M 4P 4A 5P 6m 7M`,`purvi raga`],[`1P 2m 3m 3M 4P 5P 6m 7m`,`spanish heptatonic`],[`1P 2M 3M 4P 5P 6M 7m 7M`,`bebop`],[`1P 2M 3m 3M 4P 5P 6M 7m`,`bebop minor`],[`1P 2M 3M 4P 5P 5A 6M 7M`,`bebop major`],[`1P 2m 3m 4P 5d 5P 6m 7m`,`bebop locrian`],[`1P 2M 3m 4P 5P 6m 7m 7M`,`minor bebop`],[`1P 2M 3m 4P 5d 6m 6M 7M`,`diminished`,`whole-half diminished`],[`1P 2M 3M 4P 5d 5P 6M 7M`,`ichikosucho`],[`1P 2M 3m 4P 5P 6m 6M 7M`,`minor six diminished`],[`1P 2m 3m 3M 4A 5P 6M 7m`,`half-whole diminished`,`dominant diminished`,`messiaen's mode #2`],[`1P 3m 3M 4P 5P 6M 7m 7M`,`kafi raga`],[`1P 2M 3M 4P 4A 5A 6A 7M`,`messiaen's mode #6`],[`1P 2M 3m 3M 4P 5d 5P 6M 7m`,`composite blues`],[`1P 2M 3m 3M 4A 5P 6m 7m 7M`,`messiaen's mode #3`],[`1P 2m 2M 3m 4P 4A 5P 6m 6M 7M`,`messiaen's mode #7`],[`1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M`,`chromatic`]],ee={...y,intervals:[],aliases:[]},O=[],k={};function get$6(e){return k[e]||ee}e.r(get$6,`get`);function all$1(){return O.slice()}e.r(all$1,`all`);function add$2(e,t,n=[]){let r={...get$8(e),name:t,intervals:e,aliases:n};return O.push(r),k[r.name]=r,k[r.setNum]=r,k[r.chroma]=r,r.aliases.forEach(e=>addAlias(r,e)),r}e.r(add$2,`add`);function addAlias(e,t){k[t]=e}D.forEach(([e,t,...n])=>add$2(e.split(` `),t,n));var A={empty:!0,name:``,symbol:``,root:``,rootDegree:0,type:``,tonic:null,setNum:NaN,quality:`Unknown`,chroma:``,normalized:``,aliases:[],notes:[],intervals:[]},te=/^(6|64|7|9|11|13)$/;function tokenize$2(e){let[t,n,r,i]=tokenizeNote(e);return t===``?[``,e]:t===`A`&&i===`ug`?[``,`aug`]:!i&&(r===`4`||r===`5`)?[t+n,r]:te.test(r)?[t+n,r+i]:[t+n+r,i]}e.r(tokenize$2,`tokenize`);function get$5(e){if(e===``)return A;if(Array.isArray(e)&&e.length===2)return getChord(e[1],e[0]);{let[t,n]=tokenize$2(e),r=getChord(n,t);return r.empty?getChord(e):r}}e.r(get$5,`get`);function getChord(e,t,n){let r=get$7(e),i=note(t||``),a=note(n||``);if(r.empty||t&&i.empty||n&&a.empty)return A;let o=distance$1(i.pc,a.pc),s=r.intervals.indexOf(o)+1;if(!a.empty&&!s)return A;let c=Array.from(r.intervals);for(let e=1;e<s;e++){let e=c[0][0],t=c[0][1],n=parseInt(e,10)+7;c.push(`${n}${t}`),c.shift()}let l=i.empty?[]:c.map(e=>transpose$2(i,e));e=r.aliases.indexOf(e)===-1?r.aliases[0]:e;let u=`${i.empty?``:i.pc}${e}${a.empty||s<=1?``:`/`+a.pc}`,d=`${t?i.pc+` `:``}${r.name}${s>1&&n?` over `+a.pc:``}`;return{...r,name:d,symbol:u,type:r.name,root:a.name,intervals:c,rootDegree:s,tonic:i.name,notes:l}}var ne=[[.125,`dl`,[`large`,`duplex longa`,`maxima`,`octuple`,`octuple whole`]],[.25,`l`,[`long`,`longa`]],[.5,`d`,[`double whole`,`double`,`breve`]],[1,`w`,[`whole`,`semibreve`]],[2,`h`,[`half`,`minim`]],[4,`q`,[`quarter`,`crotchet`]],[8,`e`,[`eighth`,`quaver`]],[16,`s`,[`sixteenth`,`semiquaver`]],[32,`t`,[`thirty-second`,`demisemiquaver`]],[64,`sf`,[`sixty-fourth`,`hemidemisemiquaver`]],[128,`h`,[`hundred twenty-eighth`]],[256,`th`,[`two hundred fifty-sixth`]]],re=[];ne.forEach(([e,t,n])=>add$1(e,t,n));function add$1(e,t,n){re.push({empty:!1,dots:``,name:``,value:1/e,fraction:e<1?[1/e,1]:[1,e],shorthand:t,names:n})}e.r(add$1,`add`);function names$1(){return`1P 2M 3M 4P 5P 6m 7m`.split(` `)}e.r(names$1,`names`);var ie=interval,ae=e.r(e=>interval(e).name,`name`),semitones=e=>interval(e).semitones,quality=e=>interval(e).q,num=e=>interval(e).num;function simplify$1(e){let t=interval(e);return t.empty?``:t.simple+t.q}e.r(simplify$1,`simplify`);function invert(e){let t=interval(e);return t.empty?``:interval({step:(7-t.step)%7,alt:t.type===`perfectable`?-t.alt:-(t.alt+1),oct:t.oct,dir:t.dir}).name}var oe=[1,2,2,3,3,4,5,5,6,6,7,7],se=`P m M m M P d P m M m M`.split(` `);function fromSemitones(e){let t=e<0?-1:1,n=Math.abs(e),r=n%12,i=Math.floor(n/12);return t*(oe[r]+7*i)+se[r]}var ce=distance$1,j=combinator((e,t)=>[e[0]+t[0],e[1]+t[1]]),addTo=e=>t=>j(e,t),le={names:names$1,get:ie,name:ae,num,semitones,quality,fromSemitones,distance:ce,invert,simplify:simplify$1,add:j,addTo,substract:combinator((e,t)=>[e[0]-t[0],e[1]-t[1]])};function combinator(e){return(t,n)=>{let r=interval(t).coord,i=interval(n).coord;if(r&&i)return coordToInterval(e(r,i)).name}}var ue=Math.log(2),de=Math.log(440);function freqToMidi(e){let t=12*(Math.log(e)-de)/ue+69;return Math.round(t*100)/100}var fe=`C C# D D# E F F# G G# A A# B`.split(` `),pe=`C Db D Eb E F Gb G Ab A Bb B`.split(` `);function midiToNoteName(e,t={}){if(isNaN(e)||e===-1/0||e===1/0)return``;e=Math.round(e);let n=(t.sharps===!0?fe:pe)[e%12];return t.pitchClass?n:n+(Math.floor(e/12)-1)}var me=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],toName=e=>e.name,onlyNotes=e=>e.map(note).filter(e=>!e.empty);function names(e){return e===void 0?me.slice():Array.isArray(e)?onlyNotes(e).map(toName):[]}var M=note,name=e=>M(e).name,pitchClass=e=>M(e).pc,accidentals=e=>M(e).acc,octave=e=>M(e).oct,midi=e=>M(e).midi,freq=e=>M(e).freq,chroma=e=>M(e).chroma;function fromMidi(e){return midiToNoteName(e)}function fromFreq(e){return midiToNoteName(freqToMidi(e))}function fromFreqSharps(e){return midiToNoteName(freqToMidi(e),{sharps:!0})}function fromMidiSharps(e){return midiToNoteName(e,{sharps:!0})}var N=transpose$2,P=transpose$2,transposeBy=e=>t=>N(t,e),F=transposeBy,transposeFrom=e=>t=>N(e,t),I=transposeFrom;function transposeFifths(e,t){let n=M(e);if(n.empty)return``;let[r,i]=n.coord;return coordToNote(i===void 0?[r+t]:[r+t,i]).name}var L=transposeFifths,ascending=(e,t)=>e.height-t.height,descending=(e,t)=>t.height-e.height;function sortedNames(e,t){return t||=ascending,onlyNotes(e).sort(t).map(toName)}function sortedUniqNames(e){return sortedNames(e,ascending).filter((e,t,n)=>t===0||e!==n[t-1])}var R=nameBuilder(!0),z=nameBuilder(!1);function nameBuilder(e){return t=>{let n=M(t);if(n.empty)return``;let r=e?n.alt>0:n.alt<0,i=n.midi===null;return midiToNoteName(n.midi||n.chroma,{sharps:r,pitchClass:i})}}var B={names,get:M,name,pitchClass,accidentals,octave,midi,ascending,descending,sortedNames,sortedUniqNames,fromMidi,fromMidiSharps,freq,fromFreq,fromFreqSharps,chroma,transpose:N,tr:P,transposeBy,trBy:F,transposeFrom,trFrom:I,transposeFifths,trFifths:L,simplify:R,enharmonic:z},V={empty:!0,name:``,chordType:``},H={};function get$2(e){return typeof e==`string`?H[e]||(H[e]=parse(e)):typeof e==`number`?get$2(W[e]||``):isPitch(e)?fromPitch(e):isNamed(e)?get$2(e.name):V}e.r(get$2,`get`);function fromPitch(e){return get$2(altToAcc(e.alt)+W[e.step])}var he=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function tokenize$1(e){return he.exec(e)||[``,``,``,``]}e.r(tokenize$1,`tokenize`);var U=`I II III IV V VI VII`,W=U.split(` `);U.toLowerCase().split(` `);function parse(e){let[t,n,r,i]=tokenize$1(e);if(!r)return V;let a=r.toUpperCase(),o=W.indexOf(a),s=accToAlt(n);return{empty:!1,name:t,roman:r,interval:interval({step:o,alt:s,dir:1}).name,acc:n,chordType:i,alt:s,step:o,major:r===a,oct:0,dir:1}}var ge=[[0,2773,0,`ionian`,``,`Maj7`,`major`],[1,2902,2,`dorian`,`m`,`m7`],[2,3418,4,`phrygian`,`m`,`m7`],[3,2741,-1,`lydian`,``,`Maj7`],[4,2774,1,`mixolydian`,``,`7`],[5,2906,3,`aeolian`,`m`,`m7`,`minor`],[6,3434,5,`locrian`,`dim`,`m7b5`]],G={...y,name:``,alt:0,modeNum:NaN,triad:``,seventh:``,aliases:[]},_e=ge.map(toMode),K={};_e.forEach(e=>{K[e.name]=e,e.aliases.forEach(t=>{K[t]=e})});function get$1(e){return typeof e==`string`?K[e.toLowerCase()]||G:e&&e.name?get$1(e.name):G}e.r(get$1,`get`);function toMode(e){let[t,n,r,i,a,o,s]=e,c=s?[s]:[],l=Number(n).toString(2);return{empty:!1,intervals:chromaToIntervals(l),modeNum:t,chroma:l,normalized:l,name:i,setNum:n,alt:r,triad:a,seventh:o,aliases:c}}var ve=e.i(o(),1);function transpose(e,t){let n={...e},r=B.transpose(e.note.name+e.note.octave,le.fromSemitones(t));return n.note={name:B.pitchClass(r),number:e.note.number+t,octave:B.octave(r)},n}function transposeSyllableSeq(e,t){return e.map(e=>transpose(e,t))}function eventsToSyllableSequence(e){let t=[];e=e.filter(e=>e.type===`noteon`).sort((e,t)=>e.timestamp-t.timestamp);for(let n=10;n>0;n--)for(let r=0;r<e.length-n+1;r++)try{t.push(new J(e.slice(r,r+n))),e.splice(r,n),r=-1}catch{}return new q(t)}var q=class SyllableSequence{syllables;rootNote;append(e){if(this.syllables.length)try{let t=new J(this.syllables[this.syllables.length-1].notes.map(e=>({note:e.note,timestamp:e.timestamp,type:e.type,velocity:e.velocity})).concat(e));this.syllables.splice(this.syllables.length-1,1,t)}catch{this.syllables.push(new J([e]))}else this.syllables.push(new J([e])),this.rootNote=e.note}constructor(e){e.length>0?(this.syllables=e.sort((e,t)=>e.timestamp-t.timestamp),this.rootNote=this.syllables[0].notes.reduce((e,t)=>t.note.number<e.note.number?t:e).note):(this.syllables=[],this.rootNote={name:`C`,octave:4,number:0})}grade(e){let t=[];for(let n=0;n<this.syllables.length;n++)t.push(this.syllables[n].grade(e.syllables[n]));return new SyllableSequence(t)}toString(){let e=``;return this.syllables.forEach((t,n)=>{e+=`Syllable ${n+1}: {\n`,t.notes.forEach(t=>{e+=`\t${t.note.name}\t${t.note.number}\t${t.timestamp} ${t.isCorrect?``:`(incorrect)`} ${t.isMissing?`(missing)`:``}\n`}),e+=`} - ${t.timestamp}, correct: ${t.isCorrect}\n`}),e}isCorrect(){let e=!0;return this.syllables.forEach(t=>{t.isCorrect===!1?e=!1:t.notes.forEach(t=>{t.isCorrect===!1&&(e=!1)})}),e}},J=class Syllable{notes;isCorrect;get timestamp(){let e=0;return this.notes.forEach(t=>{if(t.timestamp===0)return 0;e+=t.timestamp}),e/=this.notes.length,e}constructor(e){e=e.filter(e=>e.type===`noteon`);let t=e.reduce((e,t)=>e.timestamp<t.timestamp?e:t),n=e.reduce((e,t)=>e.timestamp>t.timestamp?e:t).timestamp-t.timestamp;if(Syllable.gracePeriod(e.length)<n)throw Error(`Notes ${e.toString()} are not close enough together to be a syllable`);this.notes=e.map(e=>({...e,isCorrect:!0,isMissing:!1})).sort((e,t)=>e.note.number-t.note.number)}static gracePeriod(e){return 1.3*12*e}grade(e){return this.notes.length!==e.notes.length&&(e.isCorrect=!1),e.notes.forEach(t=>{let n=B.fromMidi(t.note.number),r=B.fromMidiSharps(t.note.number);n=B.pitchClass(n),r=B.pitchClass(r),t.isCorrect=this.notes.filter(e=>B.chroma(n)===B.chroma(e.note.name)||B.chroma(r)===B.chroma(e.note.name)).length>=1,t.isCorrect||(e.isCorrect=!1)}),this.notes.forEach(t=>{let n=B.fromMidi(t.note.number);n=B.pitchClass(n),e.notes.some(e=>B.chroma(e.note.name)===B.chroma(n))||e.notes.push({...t,isMissing:!0,isCorrect:!1})}),e}},Y=class SkMidi{static _instance;static OFFSET=5;recording=[];webmidi=ve.default;input;output;_noteonListeners=[];_noteoffListeners=[];static _initializedWithUserConfig=!1;midiAccess;_state=`initializing`;get state(){return this._state}_userLookup;constructor(e){this._userLookup=e??null}async init(){if(!this.midiAccess)try{navigator.requestMIDIAccess().then(e=>{this.midiAccess=e,this.midiAccess.onstatechange=e=>{(0,r.alertUser)({text:`Midi device ${e.port.name} is ${e.port.state}`,status:e.port.state===`connected`?i.Status.ok:i.Status.error})}})}catch(e){console.log(`Webmidi not enabled: ${e}`),this._state=`notsupported`}try{this.webmidi.disable()}catch(e){console.log(`Webmidi not enabled: ${e}`),this._state=`notsupported`}return new Promise((e,t)=>{this.webmidi.enable(async n=>{n?(this._state=`notsupported`,console.log(`Webmidi not enabled: ${n}`),t(n)):(console.log(`Webmidi enabled`),console.log(`Inputs: ${JSON.stringify(this.webmidi.inputs)}`),console.log(`Outputs: ${JSON.stringify(this.webmidi.outputs)}`),this.output=this.webmidi.outputs[0],this.input=this.webmidi.inputs[0],SkMidi._initializedWithUserConfig||=(await this.loadUserConfiguration(),!0),this.input&&this.output?(console.log(`midi init state: ready`),this._state=`ready`,this.attachListeners()):(console.log(`midi init state: nodevice`),this._state=`nodevice`),e(!0))})})}async loadUserConfiguration(){try{if(!this._userLookup){console.log(`User lookup function not provided - using default MIDI configuration`);return}let e=await this._userLookup();if(!e){console.log(`No user found, using default MIDI configuration`);return}let t=await e.getActiveCourses();for(let n of t){let t=await(await e.getCourseInterface(n.courseID)).getCourseSettings();if(t?.midiinput||t?.midioutput){t.midiinput&&this.webmidi.getInputById(t.midiinput.toString())&&(this.selectInput(t.midiinput.toString()),console.log(`Loaded saved MIDI input: ${t.midiinput}`)),t.midioutput&&this.webmidi.getOutputById(t.midioutput.toString())&&(this.selectOutput(t.midioutput.toString()),console.log(`Loaded saved MIDI output: ${t.midioutput}`));break}}}catch(e){console.error(`Failed to load user MIDI configuration:`,e)}}setStateChangeListener(e){if(this.midiAccess)this.midiAccess.onstatechange=t=>{this.init().then(()=>{console.log(`Midi state: ${this.state}`),e()}),(0,r.alertUser)({text:`Midi device ${t.port.name} is ${t.port.state}`,status:t.port.state===`connected`?i.Status.ok:i.Status.error})};else try{navigator.requestMIDIAccess().then(t=>{this.midiAccess=t,this.midiAccess.onstatechange=t=>{this.init().then(()=>{console.log(`Midi state: ${this.state}`),e()}),(0,r.alertUser)({text:`Midi device ${t.port.name} is ${t.port.state}`,status:t.port.state===`connected`?i.Status.ok:i.Status.error})}})}catch(e){console.log(`Webmidi not enabled: ${e}`),this._state=`notsupported`}}attachListeners(){this.input&&(this._noteonListeners.forEach(e=>{this.input?.on(`noteon`,`all`,e)}),this._noteoffListeners.forEach(e=>{this.input?.on(`noteoff`,`all`,e)}))}get hasRecording(){return this.record.length>0}get configuredInput(){return this.input?`${this.input.manufacturer}: ${this.input.name}`:`(Not Sure!)`}eraseRecording(){this.recording=[]}stopRecording(){this.input?.removeListener()}record(){let e=0;if(this.input===void 0)throw Error(`Midi input not configured!`);this.input.connection===`open`&&(this.stopRecording(),this.eraseRecording(),this.input.on(`noteon`,`all`,t=>{this.recording.length===0&&(e=t.timestamp),this.recording.push({note:t.note,type:t.type,velocity:t.velocity,timestamp:t.timestamp-e})}),this.input.on(`noteoff`,`all`,t=>{this.recording.length===0&&(e=t.timestamp),this.recording.push({note:t.note,velocity:t.velocity,type:t.type,timestamp:t.timestamp-e})}))}addNoteonListenter(e){this._noteonListeners.push(e),this.input&&this.input.on(`noteon`,`all`,e)}addNoteoffListenter(e){this._noteoffListeners.push(e),this.input&&this.input.on(`noteoff`,`all`,e)}play(e){let t=e||this.recording;t=t.map(e=>({...e,timestamp:e.timestamp+SkMidi.OFFSET})),t.forEach(e=>{e.type===`noteon`?this.output?.playNote(e.note.name+e.note.octave,1,{velocity:e.velocity,time:`+${e.timestamp}`,rawVelocity:!1}):this.output?.stopNote(e.note.name+e.note.octave,1,{velocity:e.velocity,time:`+${e.timestamp}`,rawVelocity:!1})})}static async instance(){return SkMidi._instance?SkMidi._instance:(console.log(`Buzz, whirr, Midi instance factory is at work`),SkMidi._instance=new SkMidi,await SkMidi._instance.init(),SkMidi._instance)}get inputs(){return this.webmidi.inputs}get outputs(){return this.webmidi.outputs}selectInput(e){this.webmidi.getInputById(e)===!1?this.webmidi.getInputByName(e)!==!1&&(this.input=this.webmidi.getInputByName(e)):this.input=this.webmidi.getInputById(e)}selectOutput(e){this.webmidi.getOutputById(e)===!1?this.webmidi.getOutputByName(e)!==!1&&(this.output=this.webmidi.getOutputByName(e)):this.output=this.webmidi.getOutputById(e)}},ye=(0,n.defineComponent)({name:`SyllableSeqVis`,props:{seq:{type:Object,required:!0},lastTSsuggestion:{type:Number,required:!1,default:0}},setup(e){let t=(0,n.ref)(0),r=(0,n.ref)(0),i=(0,n.ref)(0),a=(0,n.ref)(500),sayNote=e=>{console.log(`${JSON.stringify(e)}`)},o=(0,n.computed)(()=>{let t=e.seq.syllables[e.seq.syllables.length-1].timestamp;return Math.max(1,t,e.lastTSsuggestion)}),s=(0,n.computed)(()=>{let t=0,n=500;return e.seq.syllables.forEach(e=>{e.notes.forEach(e=>{e.note.number>t&&(t=e.note.number),e.note.number<n&&(n=e.note.number)})}),Math.max(3*(t-n)+10,0)}),updateBounds=()=>{try{t.value=e.seq.syllables[0].timestamp;let n=e.seq.syllables[e.seq.syllables.length-1].timestamp,i=t.value+e.lastTSsuggestion;r.value=Math.max(n,i)}catch(e){console.log(`[SyllableSeqVis] Error updating bounds: ${e}`)}e.seq.syllables.forEach(e=>{e.notes.forEach(e=>{e.note.number>i.value&&(i.value=e.note.number),e.note.number<a.value&&(a.value=e.note.number)})})};return(0,n.onMounted)(()=>{console.log(`SyllableSeqVis created w/ input: \n${e.seq}`),updateBounds()}),{firstTS:t,lastTS:r,high:i,low:a,sayNote,getLastTS:o,getHeight:s,updateBounds}}}),be=[`height`],xe=[`cx`,`cy`,`alt`,`fill`,`stroke`,`onMouseenter`];function _sfc_render$3(e,t,r,i,a,o){return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,null,[((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,{width:510,height:Math.max(3*(e.high-e.low)+10,0)},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(e.seq.syllables,t=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,null,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.notes,r=>((0,n.openBlock)(),(0,n.createElementBlock)(`circle`,{key:t.timestamp+`-`+r.note.number,cx:(t.timestamp-e.firstTS)*500/(e.lastTS-e.firstTS)+4,cy:3*(e.high-r.note.number)+4,alt:r.note.name,r:`3`,fill:r.isCorrect?`black`:r.isMissing?`none`:`red`,stroke:r.isMissing?`red`:`none`,onMouseenter:t=>e.sayNote(r)},null,40,xe))),128))],64))),256))],8,be))])}e.r(_sfc_render$3,`_sfc_render`);var X=t.r(ye,[[`render`,_sfc_render$3],[`__scopeId`,`data-v-2f79c080`]]),Z=(0,n.defineComponent)({name:`NoteDisplay`,props:{chroma:{type:Number,required:!0}},setup(e){let style=t=>{let n=`#ffffff`;return t===e.chroma?n=`#1976D2`:(t===1||t===3||t===6||t===8||t===10||t===-2)&&(n=`#000000`),{fill:n,"fill-opacity":1,stroke:`#000000`,"stroke-width":.79375,"stroke-miterlimit":4,"stroke-dasharray":`none`,"stroke-opacity":1}};return{style,white:-1,black:-2}}}),Se={id:`svg8`,width:`300px`,height:`auto`,"xmlns:dc":`http://purl.org/dc/elements/1.1/`,"xmlns:cc":`http://creativecommons.org/ns#`,"xmlns:rdf":`http://www.w3.org/1999/02/22-rdf-syntax-ns#`,"xmlns:svg":`http://www.w3.org/2000/svg`,xmlns:`http://www.w3.org/2000/svg`,"xmlns:sodipodi":`http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd`,"xmlns:inkscape":`http://www.inkscape.org/namespaces/inkscape`,"sodipodi:docname":`keys.svg`,"inkscape:version":`1.0rc1 (09960d6f05, 2020-04-09)`,version:`1.1`,viewBox:`0 0 175.24936 73.594925`},Ce={id:`metadata5`},we={id:`layer1`,transform:`translate(167.75219,-151.96011)`,"inkscape:groupmode":`layer`,"inkscape:label":`Layer 1`};function _sfc_render$2(e,t,r,i,a,o){let s=(0,n.resolveComponent)(`sodipodi:namedview`),c=(0,n.resolveComponent)(`dc:format`),l=(0,n.resolveComponent)(`dc:type`),u=(0,n.resolveComponent)(`dc:title`),d=(0,n.resolveComponent)(`cc:Work`),f=(0,n.resolveComponent)(`rdf:RDF`);return(0,n.openBlock)(),(0,n.createElementBlock)(`svg`,Se,[t[1]||=(0,n.createElementVNode)(`defs`,{id:`defs2`},null,-1),(0,n.createVNode)(s,{id:`base`,"inkscape:window-maximized":`1`,"inkscape:window-y":`726`,"inkscape:window-x":`1491`,"inkscape:window-height":`1321`,"inkscape:window-width":`2400`,showborder:`false`,showgrid:`false`,"inkscape:document-rotation":`0`,"inkscape:current-layer":`layer1`,"inkscape:document-units":`mm`,"inkscape:cy":`255.88343`,"inkscape:cx":`754.94284`,"inkscape:zoom":`0.98994949`,"inkscape:pageshadow":`2`,"inkscape:pageopacity":`0.0`,borderopacity:`1.0`,bordercolor:`#666666`,pagecolor:`#ffffff`}),(0,n.createElementVNode)(`metadata`,Ce,[(0,n.createVNode)(f,null,{default:(0,n.withCtx)(()=>[(0,n.createVNode)(d,{"rdf:about":``},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(c,null,{default:(0,n.withCtx)(()=>t[0]||=[(0,n.createTextVNode)(`image/svg+xml`)]),_:1}),(0,n.createVNode)(l,{"rdf:resource":`http://purl.org/dc/dcmitype/StillImage`}),(0,n.createVNode)(u)]),_:1})]),_:1})]),(0,n.createElementVNode)(`g`,we,[(0,n.createElementVNode)(`rect`,{id:`rect845`,y:`152.19064`,x:`-150.12129`,height:`73.220116`,width:`17.486626`,style:(0,n.normalizeStyle)(e.style(0))},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-9`,style:(0,n.normalizeStyle)(e.style(2)),width:`17.486626`,height:`73.220116`,x:`-132.63466`,y:`152.19064`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-6`,style:(0,n.normalizeStyle)(e.style(4)),width:`17.486626`,height:`73.220116`,x:`-115.14803`,y:`152.19064`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-4`,style:(0,n.normalizeStyle)(e.style(5)),width:`17.486626`,height:`73.220116`,x:`-97.661407`,y:`152.19064`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-92`,style:(0,n.normalizeStyle)(e.style(7)),width:`17.486626`,height:`73.220116`,x:`-80.174782`,y:`152.19064`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-3`,style:(0,n.normalizeStyle)(e.style(9)),width:`17.486626`,height:`73.220116`,x:`-62.688156`,y:`152.19064`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-0`,style:(0,n.normalizeStyle)(e.style(11)),width:`17.486626`,height:`73.220116`,x:`-45.20153`,y:`152.19064`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-30`,style:(0,n.normalizeStyle)(e.style(e.white)),width:`17.486626`,height:`73.220116`,x:`-27.714905`,y:`152.10745`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898`,ry:`0`,y:`152.10744`,x:`-138.43532`,height:`54.415863`,width:`10.466455`,style:(0,n.normalizeStyle)(e.style(1))},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898-3`,style:(0,n.normalizeStyle)(e.style(3)),width:`10.466455`,height:`54.415863`,x:`-120.84978`,y:`152.10744`,ry:`0`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898-7`,style:(0,n.normalizeStyle)(e.style(6)),width:`10.466455`,height:`54.415863`,x:`-85.678711`,y:`152.10744`,ry:`0`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898-8`,style:(0,n.normalizeStyle)(e.style(8)),width:`10.466455`,height:`54.415863`,x:`-68.09317`,y:`152.10744`,ry:`0`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898-1`,style:(0,n.normalizeStyle)(e.style(10)),width:`10.466455`,height:`54.415863`,x:`-50.507633`,y:`152.10744`,ry:`0`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-30-1`,y:`152.10745`,x:`-10.228278`,height:`73.220116`,width:`17.486626`,style:(0,n.normalizeStyle)(e.style(e.white))},null,4),(0,n.createElementVNode)(`rect`,{id:`rect845-30-9`,y:`152.10744`,x:`-167.60791`,height:`73.220116`,width:`17.486626`,style:(0,n.normalizeStyle)(e.style(e.white))},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898-4`,style:(0,n.normalizeStyle)(e.style(e.black)),width:`10.466455`,height:`54.415863`,x:`-15.336554`,y:`152.10744`,ry:`0`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898-74`,style:(0,n.normalizeStyle)(e.style(e.black)),width:`4.4679713`,height:`54.415863`,x:`-167.60791`,y:`152.10744`,ry:`0`},null,4),(0,n.createElementVNode)(`rect`,{id:`rect898-10`,style:(0,n.normalizeStyle)(e.style(e.black)),width:`5.1863246`,height:`54.507248`,x:`2.2092075`,y:`152.06175`,ry:`0`},null,4)])])}e.r(_sfc_render$2,`_sfc_render`);var Te=t.r(Z,[[`render`,_sfc_render$2]]),Ee=(0,n.defineComponent)({name:`Playback`,components:{SyllableSeqVis:X,NoteDisplay:Te},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let o=(0,r.useViewable)(e,t,`Playback`),s=(0,r.useQuestionView)(o),c=(0,n.ref)(),l=(0,n.ref)(!1),u=(0,n.ref)(`notSet`),d=(0,n.ref)(!1),f=(0,n.ref)(0),p=(0,n.ref)(a.default.utc()),m=(0,n.ref)(0),h=(0,n.ref)(0),g=(0,n.ref)(eventsToSyllableSequence([])),_=(0,n.ref)(!1),v=(0,n.ref)(eventsToSyllableSequence([])),y=(0,n.ref)(0),b=(0,n.ref)(``),x=(0,n.ref)(0),S=(0,n.ref)(0),C=(0,n.ref)(),w=(0,n.ref)();s.question.value=new Q(e.data);let T=(0,n.computed)(()=>new Q(e.data)),E=(0,n.computed)(()=>eventsToSyllableSequence(T.value.midi).syllables[0].notes.length>1?`Lowest note of first chord:`:`First note:`),D=(0,n.computed)(()=>l.value?eventsToSyllableSequence(T.value.midi).rootNote.number%12:0),init=()=>{u.value?u.value!==c.value?.state&&(l.value=!1,u.value=c.value?.state||`notSet`,l.value=!0):(u.value=c.value?.state||`notSet`,l.value=!0),o.logger.log(`Playback is running init with state: ${u.value}`),u.value===`ready`&&(m.value=T.value.duration,play())},runProgressBar=()=>{try{C.value&&(C.value.style.animationName=``,requestAnimationFrame(()=>{requestAnimationFrame(()=>{C.value&&(C.value.style.animationDuration=m.value+`ms`,C.value.style.animationName=`progress`)})}))}catch{setTimeout(runProgressBar,50)}},record=()=>{c.value?.record(),d.value=!0,c.value?.addNoteonListenter(e=>{x.value++,v.value.append(e),w.value?.updateBounds(),x.value+S.value>=T.value.midi.length&&submit()}),c.value?.addNoteoffListenter(()=>{S.value++,x.value+S.value>=T.value.midi.length&&submit()})},play=()=>{c.value?.stopRecording(),c.value?.eraseRecording(),p.value=a.default.utc(),x.value=0,S.value=0,d.value=!1,f.value=0,runProgressBar(),c.value?.play(T.value.midi),setTimeout(()=>{o.logger.log(`done playback...`),record()},T.value.lastNoteOnTimestamp)},submit=()=>{if(!c.value?.recording)return!1;let e=eventsToSyllableSequence(T.value.midi),t=eventsToSyllableSequence(c.value.recording);return g.value=e.grade(t),v.value=eventsToSyllableSequence([]),s.submitAnswer(c.value.recording).isCorrect?!0:(h.value++,_.value=!0,h.value<s.maxAttemptsPerView.value&&play(),!1)},clearAttempt=()=>{x.value>0?submit():play()};return(0,n.onMounted)(async()=>{try{c.value=await Y.instance(),c.value.setStateChangeListener(()=>{init()}),l.value=!0}catch(e){(0,r.alertUser)({status:i.Status.error,text:`Midi device not supported`}),b.value=JSON.stringify(e),u.value=`notsupported`,l.value=!0}init(),r.SkldrMouseTrap.addBinding([{hotkey:`space`,callback:clearAttempt,command:`Clear attempt or play again`}])}),(0,n.onBeforeUnmount)(()=>{r.SkldrMouseTrap.removeBinding(`space`)}),{...o,...s,initialized:l,state:u,recording:d,inputSeq:v,lastTSsuggestion:y,gradedSeq:g,graded:_,promptText:E,firstNoteChroma:D,progressBar:C,inputVisRef:w,clearAttempt,notesOn:x}}}),De={key:0,"data-viewable":`Playback`},Oe={key:0},ke={class:`text-h4`},Ae={class:`text-h5`},je={key:0},Me={class:`progressContainer`},Ne={id:`progress`,ref:`progressBar`},Pe={key:1},Fe={key:2};function _sfc_render$1(e,t,r,i,a,o){let s=(0,n.resolveComponent)(`note-display`),c=(0,n.resolveComponent)(`v-icon`),l=(0,n.resolveComponent)(`v-btn`),u=(0,n.resolveComponent)(`syllable-seq-vis`);return e.initialized?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,De,[e.state===`ready`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Oe,[(0,n.createElementVNode)(`div`,ke,[(0,n.createTextVNode)((0,n.toDisplayString)(e.promptText)+` `,1),(0,n.createVNode)(s,{chroma:e.firstNoteChroma},null,8,[`chroma`])]),(0,n.createElementVNode)(`div`,Ae,[t[0]||=(0,n.createTextVNode)(`Listen...`),e.recording?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,je,` and Repeat`)):(0,n.createCommentVNode)(``,!0)]),(0,n.createElementVNode)(`div`,Me,[(0,n.createElementVNode)(`div`,Ne,null,512)]),(0,n.createVNode)(l,{color:`primary`,autofocus:``,onClick:e.clearAttempt},{default:(0,n.withCtx)(()=>[t[2]||=(0,n.createTextVNode)(` Play again `),(0,n.createVNode)(c,{end:``},{default:(0,n.withCtx)(()=>t[1]||=[(0,n.createTextVNode)(`volume_up`)]),_:1})]),_:1},8,[`onClick`]),((0,n.openBlock)(),(0,n.createBlock)(u,{key:0,ref:`inputVisRef`,seq:e.inputSeq,"last-t-ssuggestion":e.lastTSsuggestion},null,8,[`seq`,`last-t-ssuggestion`])),e.graded?((0,n.openBlock)(),(0,n.createBlock)(u,{key:1,seq:e.gradedSeq},null,8,[`seq`])):(0,n.createCommentVNode)(``,!0)])):e.state===`nodevice`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Pe,`No midi device detected. Please attach one!`)):e.state===`notsupported`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Fe,t[3]||=[(0,n.createElementVNode)(`p`,null,`This exercise requires a midi input device, which is not supported by this browser ☹`,-1),(0,n.createElementVNode)(`div`,null,[(0,n.createElementVNode)(`p`,null,`Please try again with one of the following browsers:`),(0,n.createElementVNode)(`ul`,null,[(0,n.createElementVNode)(`li`,null,[(0,n.createElementVNode)(`a`,{href:`https://www.google.com/chrome/`},`Google Chrome`)]),(0,n.createElementVNode)(`li`,null,[(0,n.createElementVNode)(`a`,{href:`https://www.microsoft.com/edge`},`Microsoft Edge`)]),(0,n.createElementVNode)(`li`,null,[(0,n.createElementVNode)(`a`,{href:`https://brave.com/`},`Brave`)])])],-1)])):(0,n.createCommentVNode)(``,!0)])):(0,n.createCommentVNode)(``,!0)}e.r(_sfc_render$1,`_sfc_render`);var Ie=t.r(Ee,[[`render`,_sfc_render$1]]),Le=[{name:`Melody`,type:i.FieldType.MIDI}],Q=class EchoQuestion extends r.Question{static dataShapes=[{fields:Le,name:i.DataShapeName.PIANO_Echo}];static views=[Ie];midi;constructor(e){super(e),this.midi=e[0].Melody}get duration(){return this.midi.reduce((e,t)=>t.timestamp>e.timestamp?t:e).timestamp}get lastNoteOnTimestamp(){return this.midi.filter(e=>e.type===`noteon`).reduce((e,t)=>t.timestamp>e.timestamp?t:e).timestamp}isCorrect(e){let t=eventsToSyllableSequence(this.midi),n=eventsToSyllableSequence(e);try{return t.grade(n).isCorrect()}catch(e){return console.log(`ERROR grading this midi sequence!`,e),!1}}dataShapes(){return EchoQuestion.dataShapes}views(){return EchoQuestion.views}},Re=(0,n.defineComponent)({name:`NotePlayback`,components:{},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let i=(0,r.useViewable)(e,t,`NotePlayback`),o=(0,r.useQuestionView)(i),s=(0,n.ref)(),c=(0,n.ref)(!1),l=(0,n.ref)(!1),u=(0,n.ref)(0),d=(0,n.ref)(a.default.utc()),f=(0,n.ref)(0),p=(0,n.ref)(eventsToSyllableSequence([])),m=(0,n.ref)(!1),h=(0,n.ref)(eventsToSyllableSequence([])),g=(0,n.ref)(``);o.question.value=new $(e.data);let _=(0,n.computed)(()=>new $(e.data)),record=()=>{s.value?.record(),l.value=!0,s.value?.addNoteonListenter(e=>{h.value.append(e)}),s.value?.addNoteoffListenter(()=>{s.value?.recording?.length&&s.value?.recording?.length>=2&&submit()})},play=()=>{s.value?.stopRecording(),s.value?.eraseRecording(),d.value=a.default.utc(),l.value=!1,u.value=0,record()},submit=()=>s.value?.recording?(h.value=eventsToSyllableSequence([]),o.submitAnswer(s.value.recording).isCorrect?!0:(f.value++,m.value=!0,f.value<o.maxAttemptsPerView.value&&play(),!1)):!1;return(0,n.onMounted)(async()=>{try{s.value=await Y.instance(),g.value=_.value.note,play(),c.value=!0}catch(e){i.logger.error(`Failed to initialize MIDI:`,e)}}),{...i,...o,initialized:c,recording:l,inputSeq:h,gradedSeq:p,graded:m,note:g,attempts:f}}}),ze={"data-viewable":`NotePlayback`},Be={class:`text-h4`},Ve={class:`font-weight-bold`},He={key:0,id:`svg8`,width:`300px`,height:`auto`,"xmlns:dc":`http://purl.org/dc/elements/1.1/`,"xmlns:cc":`http://creativecommons.org/ns#`,"xmlns:rdf":`http://www.w3.org/1999/02/22-rdf-syntax-ns#`,"xmlns:svg":`http://www.w3.org/2000/svg`,xmlns:`http://www.w3.org/2000/svg`,"xmlns:sodipodi":`http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd`,"xmlns:inkscape":`http://www.inkscape.org/namespaces/inkscape`,"sodipodi:docname":`keys.svg`,"inkscape:version":`1.0rc1 (09960d6f05, 2020-04-09)`,version:`1.1`,viewBox:`0 0 175.24936 73.594925`},Ue={id:`metadata5`};function _sfc_render(e,t,r,i,a,o){let s=(0,n.resolveComponent)(`sodipodi:namedview`),c=(0,n.resolveComponent)(`dc:format`),l=(0,n.resolveComponent)(`dc:type`),u=(0,n.resolveComponent)(`dc:title`),d=(0,n.resolveComponent)(`cc:Work`),f=(0,n.resolveComponent)(`rdf:RDF`);return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,ze,[(0,n.createElementVNode)(`div`,Be,[t[0]||=(0,n.createTextVNode)(` Play the note: `),(0,n.createElementVNode)(`span`,Ve,(0,n.toDisplayString)(e.note),1)]),e.graded?((0,n.openBlock)(),(0,n.createElementBlock)(`svg`,He,[t[2]||=(0,n.createElementVNode)(`defs`,{id:`defs2`},null,-1),(0,n.createVNode)(s,{id:`base`,"inkscape:window-maximized":`1`,"inkscape:window-y":`726`,"inkscape:window-x":`1491`,"inkscape:window-height":`1321`,"inkscape:window-width":`2400`,showborder:`false`,showgrid:`false`,"inkscape:document-rotation":`0`,"inkscape:current-layer":`layer1`,"inkscape:document-units":`mm`,"inkscape:cy":`255.88343`,"inkscape:cx":`754.94284`,"inkscape:zoom":`0.98994949`,"inkscape:pageshadow":`2`,"inkscape:pageopacity":`0.0`,borderopacity:`1.0`,bordercolor:`#666666`,pagecolor:`#ffffff`}),(0,n.createElementVNode)(`metadata`,Ue,[(0,n.createVNode)(f,null,{default:(0,n.withCtx)(()=>[(0,n.createVNode)(d,{"rdf:about":``},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(c,null,{default:(0,n.withCtx)(()=>t[1]||=[(0,n.createTextVNode)(`image/svg+xml`)]),_:1}),(0,n.createVNode)(l,{"rdf:resource":`http://purl.org/dc/dcmitype/StillImage`}),(0,n.createVNode)(u)]),_:1})]),_:1})]),t[3]||=(0,n.createElementVNode)(`g`,{id:`layer1`,transform:`translate(167.75219,-151.96011)`,"inkscape:groupmode":`layer`,"inkscape:label":`Layer 1`},[(0,n.createElementVNode)(`rect`,{id:`rect845`,y:`152.19064`,x:`-150.12129`,height:`73.220116`,width:`17.486626`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`}}),(0,n.createElementVNode)(`rect`,{id:`rect845-9`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`17.486626`,height:`73.220116`,x:`-132.63466`,y:`152.19064`}),(0,n.createElementVNode)(`rect`,{id:`rect845-6`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`17.486626`,height:`73.220116`,x:`-115.14803`,y:`152.19064`}),(0,n.createElementVNode)(`rect`,{id:`rect845-0`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`17.486626`,height:`73.220116`,x:`-45.20153`,y:`152.19064`}),(0,n.createElementVNode)(`rect`,{id:`rect845-92`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`17.486626`,height:`73.220116`,x:`-80.174782`,y:`152.19064`}),(0,n.createElementVNode)(`rect`,{id:`rect845-3`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`17.486626`,height:`73.220116`,x:`-62.688156`,y:`152.19064`}),(0,n.createElementVNode)(`rect`,{id:`rect845-4`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`17.486626`,height:`73.220116`,x:`-97.661407`,y:`152.19064`}),(0,n.createElementVNode)(`rect`,{id:`rect845-30`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`17.486626`,height:`73.220116`,x:`-27.714905`,y:`152.10745`}),(0,n.createElementVNode)(`rect`,{id:`rect898`,ry:`0`,y:`152.10744`,x:`-138.43532`,height:`54.415863`,width:`10.466455`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`}}),(0,n.createElementVNode)(`rect`,{id:`rect898-3`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`10.466455`,height:`54.415863`,x:`-120.84978`,y:`152.10744`,ry:`0`}),(0,n.createElementVNode)(`rect`,{id:`rect898-7`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`10.466455`,height:`54.415863`,x:`-85.678711`,y:`152.10744`,ry:`0`}),(0,n.createElementVNode)(`rect`,{id:`rect898-8`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`10.466455`,height:`54.415863`,x:`-68.09317`,y:`152.10744`,ry:`0`}),(0,n.createElementVNode)(`rect`,{id:`rect898-1`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`10.466455`,height:`54.415863`,x:`-50.507633`,y:`152.10744`,ry:`0`}),(0,n.createElementVNode)(`rect`,{id:`rect845-30-1`,y:`152.10745`,x:`-10.228278`,height:`73.220116`,width:`17.486626`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`}}),(0,n.createElementVNode)(`rect`,{id:`rect845-30-9`,y:`152.10744`,x:`-167.60791`,height:`73.220116`,width:`17.486626`,style:{fill:`#ffffff`,"fill-opacity":`0`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`}}),(0,n.createElementVNode)(`rect`,{id:`rect898-4`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`10.466455`,height:`54.415863`,x:`-15.336554`,y:`152.10744`,ry:`0`}),(0,n.createElementVNode)(`rect`,{id:`rect898-74`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`4.4679713`,height:`54.415863`,x:`-167.60791`,y:`152.10744`,ry:`0`}),(0,n.createElementVNode)(`rect`,{id:`rect898-10`,style:{fill:`#000000`,"fill-opacity":`1`,stroke:`#000000`,"stroke-width":`0.79375`,"stroke-miterlimit":`4`,"stroke-dasharray":`none`,"stroke-opacity":`1`},width:`5.1863246`,height:`54.507248`,x:`2.2092075`,y:`152.06175`,ry:`0`})],-1)])):(0,n.createCommentVNode)(``,!0)])}var We=t.r(Re,[[`render`,_sfc_render]]),Ge=[{name:`Note`,type:i.FieldType.STRING}],Ke=[`A`,`B`,`C`,`D`,`E`,`F`,`G`,`A♯`,`C♯`,`D♯`,`F♯`,`G♯`,`D♭`,`E♭`,`G♭`,`A♭`,`B♭`],$=class PlayNote extends r.Question{static dataShapes=[{fields:Ge,name:i.DataShapeName.PIANO_PlayNote}];static seedData=Ke.map(e=>({Note:e}));static views=[We];note;constructor(e){super(e),this.note=e[0].Note}isCorrect(e){return e[0].note.name===this.note}dataShapes(){return PlayNote.dataShapes}views(){return PlayNote.views}},qe=new t.t(`piano`,[Q,$]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return eventsToSyllableSequence}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return transposeSyllableSeq}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return qe}});
|
|
2
|
+
//# sourceMappingURL=piano-CefQUc72.cjs.map
|