From df5c283692c0ffcd9b33ee873e0463db6b18c53c Mon Sep 17 00:00:00 2001 From: Sema Date: Sun, 1 Aug 2021 01:10:26 -0400 Subject: [PATCH] Minor fix and coverage --- javascript/JZZ.js | 2 +- minified/JZZ.js | 2 +- test/common.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/javascript/JZZ.js b/javascript/JZZ.js index e6dfe92..3930537 100644 --- a/javascript/JZZ.js +++ b/javascript/JZZ.js @@ -1765,7 +1765,7 @@ if (x < -1 || x > 1) throw RangeError('Out of range: ' + b[i]); v.push(MIDI.to14b((b[i] + 1) / 2)); } return _helperNC.sxScaleTuning2.call(this, a, v, c); }, - sxGM: function(gm) { return [0xF0, 0x7E, this._sxid, 0x09, gm ? gm == 2 ? 3 : 1 : 2, 0xF7]; }, + sxGM: function(gm) { if (typeof gm == 'undefined') gm = 1; return [0xF0, 0x7E, this._sxid, 0x09, gm ? gm == 2 ? 3 : 1 : 2, 0xF7]; }, sxGS: function(arg) { var arr = typeof arg == 'undefined' ? [0x40, 0, 0x7F, 0] : arg instanceof Array ? arg : arguments; var c = 0; var a = [0xF0, 0x41, this._sxid, 0x42, 0x12]; for (var i = 0; i < arr.length; i++) { var x = _7b(arr[i]); a.push(x); c += x; } diff --git a/minified/JZZ.js b/minified/JZZ.js index 3e260f8..f045f80 100644 --- a/minified/JZZ.js +++ b/minified/JZZ.js @@ -1 +1 @@ -!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define("JZZ",[],n):(t=t||window).JZZ&&t.JZZ.MIDI||(t.JZZ=n())}(this,function(){var o,r,n,i,t="undefined"==typeof window?global:window,e="1.3.8",s=Date.now||function(){return(new Date).getTime()},u=s(),a="undefined"!=typeof performance&&performance.now?function(){return performance.now()}:function(){return s()-u},h=function(t){setTimeout(t,0)};function c(){}function f(t){return"function"==typeof t}function l(){(this._orig=this)._ready=!1,this._queue=[],this._log=[]}function p(t,n){this._bad?f(n)&&n.apply(this,[new Error(this._err())]):f(t)&&t.apply(this,[this])}function d(t,n){this._bad?t._crash(this._err()):setTimeout(function(){t._resume()},n)}function _(t){this._bad&&t._break(this._err()),t._resume()}function m(t,e,r){t[r]=function(){var t=arguments,n=e._image();return this._push(_,[n]),n[r].apply(n,t)}}function g(t){this._bad||(f(t)?t.apply(this):console.log(t))}function v(t){this._bad&&(f(t)?t.apply(this):console.log(t))}function y(t){this._bad?t._crash(this._err()):(this._break("Closed"),t._resume())}function b(t){if(t.length){var n,e=t.shift();t.length&&(n=this)._slip(v,[function(){b.apply(n,[t])}]);try{this._repair(),e.apply(this)}catch(t){this._break(t.toString())}}else this._break()}function S(t,n){for(var e=0;e>1&3],(1&t[7])<<4|t[6],t[5]<<4|t[4],t[3]<<4|t[2],t[1]<<4|t[0]]}function pt(t){for(var n,e=[],r=0;r=this.type&&(this.frame=this.type-1),this},ct.prototype.setHour=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||24<=t)throw RangeError("Bad SMPTE hours value: "+t);return this.hour=t,this},ct.prototype.setMinute=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||60<=t)throw RangeError("Bad SMPTE minutes value: "+t);return this.minute=t,ft.apply(this),this},ct.prototype.setSecond=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||60<=t)throw RangeError("Bad SMPTE seconds value: "+t);return this.second=t,ft.apply(this),this},ct.prototype.setFrame=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||t>=this.type)throw RangeError("Bad SMPTE frame number: "+t);return this.frame=t,ft.apply(this),this},ct.prototype.setQuarter=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||8<=t)throw RangeError("Bad SMPTE quarter frame: "+t);return this.quarter=t,this},ct.prototype.incrFrame=function(){return this.frame++,this.frame>=this.type&&(this.frame=0,this.second++,60<=this.second&&(this.second=0,this.minute++,60<=this.minute&&(this.minute=0,this.hour=23<=this.hour?0:this.hour+1))),ft.apply(this),this},ct.prototype.decrFrame=function(){return!this.second&&2==this.frame&&29.97==this.type&&this.minute%10&&(this.frame=0),this.frame--,this.frame<0&&(this.frame=29.97==this.type?29:this.type-1,this.second--,this.second<0&&(this.second=59,this.minute--,this.minute<0&&(this.minute=59,this.hour=this.hour?this.hour-1:23))),this},ct.prototype.incrQF=function(){return this.backwards=!1,this.quarter=this.quarter+1&7,0!=this.quarter&&4!=this.quarter||this.incrFrame(),this},ct.prototype.decrQF=function(){return this.backwards=!0,this.quarter=this.quarter+7&7,3!=this.quarter&&7!=this.quarter||this.decrFrame(),this},ct.prototype.read=function(t){if(240==(t=!(t instanceof dt)?dt.apply(null,arguments):t)[0]&&127==t[1]&&1==t[3]&&1==t[4]&&247==t[9])return this.type=[24,25,29.97,30][t[5]>>5&3],this.hour=31&t[5],this.minute=t[6],this.second=t[7],this.frame=t[8],this.quarter=0,this._=void 0,this._b=void 0,!(this._f=void 0);if(241!=t[0]||void 0===t[1])return!1;var n=t[1]>>4,e=15&t[1];return 0==n?7==this._&&(7==this._f&&(this.reset(lt(this._a)),this.incrFrame()),this.incrFrame()):3==n?4==this._&&this.decrFrame():4==n?3==this._&&this.incrFrame():7==n&&0===this._&&(0===this._b&&(this.reset(lt(this._a)),this.decrFrame()),this.decrFrame()),this._a||(this._a=[]),this._a[n]=e,this._f=this._f===n-1||0==n?n:void 0,this._b=this._b===1+n||7==n?n:void 0,this._=n,this.quarter=n,!0},ct.prototype.toString=function(){return pt([this.hour,this.minute,this.second,this.frame])},ht.SMPTE=ct,M.prototype.SMPTE=ct,dt.prototype=[],dt.prototype.constructor=dt;var _t={};function mt(t){if(t!=parseFloat(t))throw TypeError("Not a number: "+t)}function gt(){}dt.noteValue=function(t){return void 0===t?void 0:_t[t.toString().toLowerCase()]},dt.programValue=function(t){return t},dt.freq=function(t,n){return mt(n=void 0===n?440:n),t!=parseFloat(t)&&(t=wt(t)),n*Math.pow(2,(t-69)/12)},dt.shift=function(t,n){return void 0===n&&(n=440),mt(t),mt(n),12*Math.log2(t/n)},dt.midi=function(t,n){return dt.shift(t,n)+69},dt.to14b=function(t){return mt(t),t<=0?0:1<=t?16383:Math.floor(16384*t)},dt.to21b=function(t){return void 0===t?2097151:(mt(t),t<=0?0:(t=(Math.floor(t)<<14)+dt.to14b(t-Math.floor(t)))<2097151?t:2097150)},(gt.prototype=dt)._sxid=127,dt.sxId=function(t){if((t=void 0===t?dt._sxid:t)==this._sxid)return this;t=St(t);var n=new gt;return n._ch=this._ch,n._sxid=t,n},dt.ch=function(t){if(t==this._ch||void 0===t&&void 0===this._ch)return this;var n=new gt;return void 0!==t&&(t=bt(t)),n._ch=t,n._sxid=this._sxid,n};var vt={c:0,d:2,e:4,f:5,g:7,a:9,b:11,h:11};for(x(vt,function(t){for(i=0;i<12&&!(127<(n=vt[t]+12*i));i++)0<(_t[t+i]=n)&&(_t[t+"b"+i]=n-1,_t[t+"bb"+i]=n-2),n<127&&(_t[t+"#"+i]=n+1,_t[t+"##"+i]=n+2)}),i=0;i<128;i++)_t[i]=i;function yt(t){throw RangeError("Bad MIDI value: "+t)}function bt(t){return V(t),parseInt(t)}function St(t,n){return(t!=parseInt(t)||t<0||127>7}function At(t){return[t>>14,t>>7&127,127&t]}function Tt(t,n){return t!=parseFloat(t)&&function(t){throw TypeError("Invalid value: "+t)}(void 0===n?t:n),(t<0||1>1){case 0:n=t.frame;break;case 1:n=t.second;break;case 2:n=t.minute;break;default:n=t.hour}return 1&t.quarter?n>>=4:n&=15,7==t.quarter&&(25==t.type?n|=2:29.97==t.type?n|=4:30==t.type&&(n|=6)),!t.backwards&&4<=t.quarter?t.incrFrame():t.backwards&&t.quarter<4&&t.decrFrame(),n|t.quarter<<4}(t)]},songPosition:function(t,n){return void 0===n?[242,Bt(t),It(t)]:[242,St(n),St(t)]},songSelect:function(t){return[243,St(t)]},tune:function(){return[246]},clock:function(){return[248]},start:function(){return[250]},continue:function(){return[251]},stop:function(){return[252]},active:function(){return[254]},sxIdRequest:function(){return[240,126,this._sxid,6,1,247]},sxTuningDumpRequest:function(t,n){return void 0===n?[240,126,this._sxid,8,0,St(t),247]:[240,126,this._sxid,8,3,St(t),St(n),247]},sxFullFrame:function(t){return[240,127,this._sxid,1,1,25==(n=t).type?32|n.hour:29.97==n.type?64|n.hour:30==n.type?96|n.hour:n.hour,t.getMinute(),t.getSecond(),t.getFrame(),247];var n},sxMasterVolume:function(t,n){return void 0===n?[240,127,this._sxid,4,1,Bt(t),It(t),247]:[240,127,this._sxid,4,1,St(n),St(t),247]},sxMasterVolumeF:function(t){return kt.sxMasterVolume.call(this,dt.to14b(Tt(t)))},sxMasterFineTuning:function(t,n){return void 0===n?[240,127,this._sxid,4,3,Bt(t),It(t),247]:[240,127,this._sxid,4,3,St(n),St(t),247]},sxMasterFineTuningF:function(t){return kt.sxMasterFineTuning.call(this,dt.to14b(Tt((t%1+1)/2,t)))},sxMasterCoarseTuning:function(t){return[240,127,this._sxid,4,4,0,St(t),247]},sxMasterCoarseTuningF:function(t){return kt.sxMasterCoarseTuning.call(this,t-t%1+64)},sxNoteTuning:function(t,n,e,r){return n==parseInt(n)?[240,Et(r),this._sxid,8,7,St(t),St(n)].concat(Ot(e),[247]):[240,127,this._sxid,8,2,St(t)].concat(Ot(n),[247])},sxNoteTuningF:function(t,n,e,r){return n==parseInt(n)?kt.sxNoteTuning.call(this,t,n,Ft(e),r):kt.sxNoteTuning.call(this,t,Ft(n))},sxNoteTuningHZ:function(t,n,e,r){return n==parseInt(n)?kt.sxNoteTuning.call(this,t,n,Pt(e),r):kt.sxNoteTuning.call(this,t,Pt(n))},sxScaleTuning1:function(t,n,e){return t==parseInt(t)?[240,Et(e),this._sxid,8,8].concat(At(xt(t)),function(t){var n=[];if(!(t instanceof Array)||12!=t.length)throw TypeError("Expected an array of size 12");for(var e=0;e<12;e++)n.push(St(t[e]));return n}(n),[247]):kt.sxScaleTuning1.call(this,65535,t,n)},sxScaleTuning1F:function(t,n,e){if(t!=parseInt(t))return kt.sxScaleTuning1F.call(this,65535,t,n);for(var r=[],i=0;i>8)+String.fromCharCode(255&t)}else if(0==(t=""+t).length)t="\0\0";else if(1==t.length)t="\0"+t;else if(2>16)+String.fromCharCode(t>>8&255)+String.fromCharCode(255&t));throw RangeError("Out of range"+Yt(Wt(t)))},smfBPM:function(t){return jt.smfTempo(Math.round(6e7/t))},smfSMPTE:function(t){if(t instanceof ct)return qt(84,String.fromCharCode(t.hour)+String.fromCharCode(t.minute)+String.fromCharCode(t.second)+String.fromCharCode(t.frame)+String.fromCharCode(t.quarter%4*25));if(5==(""+t).length)return qt(84,t);var n=t instanceof Array?t:Array.prototype.slice.call(arguments);return n.splice(0,0,30),jt.smfSMPTE(new ct(n))},smfTimeSignature:function(t,n,e,r){var i,o,s,u,a=(""+t).match(/^\s*(\d+)\s*\/\s*(\d+)\s*$/);if(a){if(i=parseInt(a[1]),o=parseInt(a[2]),0>=1;s;s>>=1)o++;return s=n==parseInt(n)?n:24,u=e==parseInt(e)?e:8,qt(88,String.fromCharCode(i)+String.fromCharCode(o)+String.fromCharCode(s)+String.fromCharCode(u))}if(4==(""+t).length)return qt(88,t)}else if(t==parseInt(t)&&n==parseInt(n)){if(0>=1;s;s>>=1)o++;return s=e==parseInt(e)?e:24,u=r==parseInt(r)?r:8,qt(88,String.fromCharCode(i)+String.fromCharCode(o)+String.fromCharCode(s)+String.fromCharCode(u))}if(4==(""+t).length)return qt(88,t);t=t+"/"+n}else if(4==(""+t).length)return qt(88,t);throw RangeError("Wrong time signature"+Yt(Wt(""+t)))},smfKeySignature:function(t){var n,e=(t=""+t).match(/^\s*([A-H][b#]?)\s*(|maj|major|dur|m|min|minor|moll)\s*$/i);if(e&&(n={CB:0,GB:1,DB:2,AB:3,EB:4,BB:5,F:6,C:7,G:8,D:9,A:10,E:11,B:12,H:12,"F#":13,"C#":14,"G#":15,"D#":16,"A#":17}[e[1].toUpperCase()],e={"":0,MAJ:0,MAJOR:0,DUR:0,M:1,MIN:1,MINOR:1,MOLL:1}[e[2].toUpperCase()],void 0!==n&&void 0!==e&&(e&&(n-=3),-7<=(n-=7)&&n<0?t=String.fromCharCode(256+n)+String.fromCharCode(e):0<=n&&n<=7&&(t=String.fromCharCode(n)+String.fromCharCode(e)))),2==t.length&&t.charCodeAt(1)<=1&&(t.charCodeAt(0)<=7||t.charCodeAt(0)<=255&&249<=t.charCodeAt(0)))return qt(89,t);throw RangeError("Incorrect key signature"+Yt(t))},smfSequencer:function(t){return qt(127,Wt(t))}},zt={};function Gt(n){x(zt,function(t){n.prototype[t]=zt[t]})}x(kt,function(t){var n;n=kt[t=t],dt[t]=function(){return new dt(n.apply(this,arguments))},zt[t]=function(){return this.send(n.apply(this,arguments))}}),x(jt,function(t){var n;n=jt[t=t],dt[t]=function(){return n.apply(this,arguments)},zt[t]=function(){return this.send(n.apply(this,arguments))}}),x(Nt,function(t){var r;r=Nt[t=t],dt[t]=function(){for(var t=[],n=r.apply(this,arguments),e=0;e>4;if(12==o)t._bm=this._cc[i].bm,t._bl=this._cc[i].bl,ht.MIDI.programName&&t.label(ht.MIDI.programName(t[1],t._bm,t._bl));else if(11==o)switch(t[1]){case 0:this._cc[i].bm=t[2];break;case 32:this._cc[i].bl=t[2];break;case 98:this._cc[i].nl=t[2],this._cc[i].rn="n";break;case 99:this._cc[i].nm=t[2],this._cc[i].rn="n";break;case 100:this._cc[i].rl=t[2],this._cc[i].rn="r";break;case 101:this._cc[i].rm=t[2],this._cc[i].rn="r";break;case 6:case 38:case 96:case 97:"r"==this._cc[i].rn&&(t._rm=this._cc[i].rm,t._rl=this._cc[i].rl,t.label((n=this._cc[i].rm,e=this._cc[i].rl,r=void 0===n?"??":Ht(n),n=void 0===e?"??":Ht(e),"RPN "+r+" "+n+((e={"0000":"Pitch Bend Sensitivity","0001":"Channel Fine Tune","0002":"Channel Coarse Tune","0003":"Select Tuning Program","0004":"Select Tuning Bank","0005":"Vibrato Depth Range","7f7f":"NONE"}[r+""+n])?": "+e:"")))),"n"==this._cc[i].rn&&(t._nm=this._cc[i].rm,t._nl=this._cc[i].nl,t.label((n=this._cc[i].nm,e=this._cc[i].nl,"NRPN "+(void 0===n?"??":Ht(n))+" "+(void 0===e?"??":Ht(e)))))}else t.isFullSysEx()&&(127==t[1]?4==t[3]&&(1==t[4]?t.label("Master Volume"):2==t[4]&&t.label("Master Balance")):126==t[1]?6==t[3]?1==t[4]?t.label("Device ID Request"):2==t[4]&&t.label("Device ID Response"):9==t[3]&&(1==t[4]?(t.label("GM1 System On"),this._clear(),this._gm="1"):2==t[4]?(t.label("GM System Off"),this._clear(),this._gm="0"):3==t[4]&&(t.label("GM2 System On"),this._clear(),this._gm="2")):67==t[1]?16==(240&t[2])&&76==t[3]&&0==t[4]&&0==t[5]&&126==t[6]&&0==t[7]&&(t.label("XG System On"),this._clear(),this._gm="Y"):65==t[1]&&66==t[3]&&18==t[4]&&64==t[5]&&0==t[6]&&127==t[7]&&0==t[8]&&65==t[9]&&(t.label("GS Reset"),this._clear(),this._gm="R"));return t}function nn(){var t=new N;return t._clear=$t,t._read=tn,t._receive=function(t){this._emit(this._read(t))},t._clear(),t._resume(),t}function en(){var t=this instanceof en?this:new en;return t.reset(),arguments.length&&en.prototype.setup.apply(t,arguments),t}dt.prototype.getChannel=function(){if(32==this.ff&&1==this.dd.length&&this.dd.charCodeAt(0)<16)return this.dd.charCodeAt(0);var t=this[0];return void 0===t||t<128||239>4;return 0>4;return(r={8:"Note Off",10:"Aftertouch",12:"Program Change",13:"Channel Aftertouch",14:"Pitch Wheel"}[e])?t+" -- "+r:9==e?t+" -- "+(this[2]?"Note On":"Note Off"):11!=e?t:(r={0:"Bank Select MSB",1:"Modulation Wheel MSB",2:"Breath Controller MSB",4:"Foot Controller MSB",5:"Portamento Time MSB",6:"Data Entry MSB",7:"Channel Volume MSB",8:"Balance MSB",10:"Pan MSB",11:"Expression Controller MSB",12:"Effect Control 1 MSB",13:"Effect Control 2 MSB",16:"General Purpose Controller 1 MSB",17:"General Purpose Controller 2 MSB",18:"General Purpose Controller 3 MSB",19:"General Purpose Controller 4 MSB",31:"Karaoke",32:"Bank Select LSB",33:"Modulation Wheel LSB",34:"Breath Controller LSB",36:"Foot Controller LSB",37:"Portamento Time LSB",38:"Data Entry LSB",39:"Channel Volume LSB",40:"Balance LSB",42:"Pan LSB",43:"Expression Controller LSB",44:"Effect control 1 LSB",45:"Effect control 2 LSB",48:"General Purpose Controller 1 LSB",49:"General Purpose Controller 2 LSB",50:"General Purpose Controller 3 LSB",51:"General Purpose Controller 4 LSB",64:"Damper Pedal",65:"Portamento",66:"Sostenuto",67:"Soft Pedal",68:"Legato",69:"Hold 2",70:"Sound Variation",71:"Filter Resonance",72:"Release Time",73:"Attack Time",74:"Brightness",75:"Decay Time",76:"Vibrato Rate",77:"Vibrato Depth",78:"Vibrato Delay",79:"Sound Controller 10",80:"General Purpose Controller 5",81:"General Purpose Controller 6",82:"General Purpose Controller 7",83:"General Purpose Controller 8",84:"Portamento Control",88:"High Resolution Velocity Prefix",91:"Effects 1 Depth",92:"Effects 2 Depth",93:"Effects 3 Depth",94:"Effects 4 Depth",95:"Effects 5 Depth",96:"Data Increment",97:"Data Decrement",98:"Non-Registered Parameter Number LSB",99:"Non-Registered Parameter Number MSB",100:"Registered Parameter Number LSB",101:"Registered Parameter Number MSB",120:"All Sound Off",121:"Reset All Controllers",122:"Local Control On/Off",123:"All Notes Off",124:"Omni Mode Off",125:"Omni Mode On",126:"Mono Mode On",127:"Poly Mode On"}[this[1]],64<=this[1]&&this[1]<=69&&(r+=this[2]<64?" Off":" On"),t+" -- "+(r=r||"Undefined"))},dt.prototype._stamp=function(t){return this._from.push(t._orig||t),this},dt.prototype._unstamp=function(t){return void 0===t?this._from=[]:(t._orig&&(t=t._orig),-1<(t=this._from.indexOf(t))&&this._from.splice(t,1)),this},dt.prototype._stamped=function(t){t._orig&&(t=t._orig);for(var n=0;nthis[e].notes.length&&(i=this[n=e].notes.length),r=0;r>2,e=(3&o)<<6|(s=rn.indexOf(t.charAt(a++))),u+=String.fromCharCode(r<<2|i>>4),64!=o&&(u+=String.fromCharCode(n)),64!=s&&(u+=String.fromCharCode(e));return u},ht.lib.toBase64=function(t){var n,e,r,i,o=0,s=0,u="",a=[];if(!t)return t;for(;n=(i=t.charCodeAt(o++)<<16|t.charCodeAt(o++)<<8|t.charCodeAt(o++))>>12&63,e=i>>6&63,r=63&i,a[s++]=rn.charAt(i>>18&63)+rn.charAt(n)+rn.charAt(e)+rn.charAt(r),o=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;n+=63&e,r+=String.fromCharCode(n)}else if(224==(240&n)){if(n=(15&n)<<12,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(n+=(63&e)<<6,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;n+=63&e,r+=String.fromCharCode(n)}else if(240==(248&n)){if(n=(7&n)<<18,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(n+=(63&e)<<12,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(n+=(63&e)<<6,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(1114111<(n+=63&e))return t;n-=65536,r+=String.fromCharCode(55296+(n>>10)),r+=String.fromCharCode(56320+(1023&n))}}return r},ht.lib.toUTF8=function(t){t=void 0===t?"":""+t;for(var n,e="",r=0;r>6)):(n<65536?e+=String.fromCharCode(224+(n>>12)):(e+=String.fromCharCode(240+(n>>18)),e+=String.fromCharCode(128+(n>>12&63))),e+=String.fromCharCode(128+(n>>6&63))),e+=String.fromCharCode(128+(63&n)));return e};var on=[],sn={},un={},an=t.Promise;function hn(t,n,e){this.name=t,this.message=n,this.code=e}function cn(t,n){this.bubbles=!1,this.cancelBubble=!1,this.cancelable=!1,this.currentTarget=n,this.defaultPrevented=!1,this.eventPhase=0,this.path=[],this.port=t,this.returnValue=!0,this.srcElement=n,this.target=n,this.timeStamp=a(),this.type="statechange"}function fn(t,n){this.bubbles=!1,this.cancelBubble=!1,this.cancelable=!1,this.currentTarget=t,this.data=n,this.defaultPrevented=!1,this.eventPhase=0,this.path=[],this.receivedTime=a(),this.returnValue=!0,this.srcElement=t,this.target=t,this.timeStamp=this.receivedTime,this.type="midimessage"}function ln(t,n){t&&(t.onstatechange&&t.onstatechange(new cn(t,t)),n.onstatechange&&n.onstatechange(new cn(t,n)))}function pn(e,r){var i=this,o=!1,n=null,s=null;this.type="input",this.id=r.id,this.name=r.name,this.manufacturer=r.man,this.version=r.ver,Object.defineProperty(this,"state",{get:function(){return r.connected?"connected":"disconnected"},enumerable:!0}),Object.defineProperty(this,"connection",{get:function(){return o?r.proxy?"open":"pending":"closed"},enumerable:!0}),Object.defineProperty(this,"onmidimessage",{get:function(){return s},set:function(t){f(t)?(s=t,o||i.open().then(c,c)):s=null},enumerable:!0}),Object.defineProperty(this,"onstatechange",{get:function(){return n},set:function(t){n=f(t)?t:null},enumerable:!0}),this.open=function(){return new an(function(t,n){o?t(i):r.open().then(function(){o||(o=!0,ln(i,e)),t(i)},function(){n(new hn("InvalidAccessError","Port is not available",15))})})},this.close=function(){return new an(function(t){o&&(o=!1,r.close(),ln(i,e)),t(i)})},Object.freeze(this)}function dn(t){for(var n,e;t.length;){for(n=0;nt.length)return;for(n=1;n>1&3],(1&t[7])<<4|t[6],t[5]<<4|t[4],t[3]<<4|t[2],t[1]<<4|t[0]]}function pt(t){for(var n,e=[],r=0;r=this.type&&(this.frame=this.type-1),this},ct.prototype.setHour=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||24<=t)throw RangeError("Bad SMPTE hours value: "+t);return this.hour=t,this},ct.prototype.setMinute=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||60<=t)throw RangeError("Bad SMPTE minutes value: "+t);return this.minute=t,ft.apply(this),this},ct.prototype.setSecond=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||60<=t)throw RangeError("Bad SMPTE seconds value: "+t);return this.second=t,ft.apply(this),this},ct.prototype.setFrame=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||t>=this.type)throw RangeError("Bad SMPTE frame number: "+t);return this.frame=t,ft.apply(this),this},ct.prototype.setQuarter=function(t){if((t=void 0===t?0:t)!=parseInt(t)||t<0||8<=t)throw RangeError("Bad SMPTE quarter frame: "+t);return this.quarter=t,this},ct.prototype.incrFrame=function(){return this.frame++,this.frame>=this.type&&(this.frame=0,this.second++,60<=this.second&&(this.second=0,this.minute++,60<=this.minute&&(this.minute=0,this.hour=23<=this.hour?0:this.hour+1))),ft.apply(this),this},ct.prototype.decrFrame=function(){return!this.second&&2==this.frame&&29.97==this.type&&this.minute%10&&(this.frame=0),this.frame--,this.frame<0&&(this.frame=29.97==this.type?29:this.type-1,this.second--,this.second<0&&(this.second=59,this.minute--,this.minute<0&&(this.minute=59,this.hour=this.hour?this.hour-1:23))),this},ct.prototype.incrQF=function(){return this.backwards=!1,this.quarter=this.quarter+1&7,0!=this.quarter&&4!=this.quarter||this.incrFrame(),this},ct.prototype.decrQF=function(){return this.backwards=!0,this.quarter=this.quarter+7&7,3!=this.quarter&&7!=this.quarter||this.decrFrame(),this},ct.prototype.read=function(t){if(240==(t=!(t instanceof dt)?dt.apply(null,arguments):t)[0]&&127==t[1]&&1==t[3]&&1==t[4]&&247==t[9])return this.type=[24,25,29.97,30][t[5]>>5&3],this.hour=31&t[5],this.minute=t[6],this.second=t[7],this.frame=t[8],this.quarter=0,this._=void 0,this._b=void 0,!(this._f=void 0);if(241!=t[0]||void 0===t[1])return!1;var n=t[1]>>4,e=15&t[1];return 0==n?7==this._&&(7==this._f&&(this.reset(lt(this._a)),this.incrFrame()),this.incrFrame()):3==n?4==this._&&this.decrFrame():4==n?3==this._&&this.incrFrame():7==n&&0===this._&&(0===this._b&&(this.reset(lt(this._a)),this.decrFrame()),this.decrFrame()),this._a||(this._a=[]),this._a[n]=e,this._f=this._f===n-1||0==n?n:void 0,this._b=this._b===1+n||7==n?n:void 0,this._=n,this.quarter=n,!0},ct.prototype.toString=function(){return pt([this.hour,this.minute,this.second,this.frame])},ht.SMPTE=ct,M.prototype.SMPTE=ct,dt.prototype=[],dt.prototype.constructor=dt;var _t={};function mt(t){if(t!=parseFloat(t))throw TypeError("Not a number: "+t)}function gt(){}dt.noteValue=function(t){return void 0===t?void 0:_t[t.toString().toLowerCase()]},dt.programValue=function(t){return t},dt.freq=function(t,n){return mt(n=void 0===n?440:n),t!=parseFloat(t)&&(t=wt(t)),n*Math.pow(2,(t-69)/12)},dt.shift=function(t,n){return void 0===n&&(n=440),mt(t),mt(n),12*Math.log2(t/n)},dt.midi=function(t,n){return dt.shift(t,n)+69},dt.to14b=function(t){return mt(t),t<=0?0:1<=t?16383:Math.floor(16384*t)},dt.to21b=function(t){return void 0===t?2097151:(mt(t),t<=0?0:(t=(Math.floor(t)<<14)+dt.to14b(t-Math.floor(t)))<2097151?t:2097150)},(gt.prototype=dt)._sxid=127,dt.sxId=function(t){if((t=void 0===t?dt._sxid:t)==this._sxid)return this;t=St(t);var n=new gt;return n._ch=this._ch,n._sxid=t,n},dt.ch=function(t){if(t==this._ch||void 0===t&&void 0===this._ch)return this;var n=new gt;return void 0!==t&&(t=bt(t)),n._ch=t,n._sxid=this._sxid,n};var vt={c:0,d:2,e:4,f:5,g:7,a:9,b:11,h:11};for(x(vt,function(t){for(i=0;i<12&&!(127<(n=vt[t]+12*i));i++)0<(_t[t+i]=n)&&(_t[t+"b"+i]=n-1,_t[t+"bb"+i]=n-2),n<127&&(_t[t+"#"+i]=n+1,_t[t+"##"+i]=n+2)}),i=0;i<128;i++)_t[i]=i;function yt(t){throw RangeError("Bad MIDI value: "+t)}function bt(t){return V(t),parseInt(t)}function St(t,n){return(t!=parseInt(t)||t<0||127>7}function At(t){return[t>>14,t>>7&127,127&t]}function Tt(t,n){return t!=parseFloat(t)&&function(t){throw TypeError("Invalid value: "+t)}(void 0===n?t:n),(t<0||1>1){case 0:n=t.frame;break;case 1:n=t.second;break;case 2:n=t.minute;break;default:n=t.hour}return 1&t.quarter?n>>=4:n&=15,7==t.quarter&&(25==t.type?n|=2:29.97==t.type?n|=4:30==t.type&&(n|=6)),!t.backwards&&4<=t.quarter?t.incrFrame():t.backwards&&t.quarter<4&&t.decrFrame(),n|t.quarter<<4}(t)]},songPosition:function(t,n){return void 0===n?[242,Bt(t),It(t)]:[242,St(n),St(t)]},songSelect:function(t){return[243,St(t)]},tune:function(){return[246]},clock:function(){return[248]},start:function(){return[250]},continue:function(){return[251]},stop:function(){return[252]},active:function(){return[254]},sxIdRequest:function(){return[240,126,this._sxid,6,1,247]},sxTuningDumpRequest:function(t,n){return void 0===n?[240,126,this._sxid,8,0,St(t),247]:[240,126,this._sxid,8,3,St(t),St(n),247]},sxFullFrame:function(t){return[240,127,this._sxid,1,1,25==(n=t).type?32|n.hour:29.97==n.type?64|n.hour:30==n.type?96|n.hour:n.hour,t.getMinute(),t.getSecond(),t.getFrame(),247];var n},sxMasterVolume:function(t,n){return void 0===n?[240,127,this._sxid,4,1,Bt(t),It(t),247]:[240,127,this._sxid,4,1,St(n),St(t),247]},sxMasterVolumeF:function(t){return kt.sxMasterVolume.call(this,dt.to14b(Tt(t)))},sxMasterFineTuning:function(t,n){return void 0===n?[240,127,this._sxid,4,3,Bt(t),It(t),247]:[240,127,this._sxid,4,3,St(n),St(t),247]},sxMasterFineTuningF:function(t){return kt.sxMasterFineTuning.call(this,dt.to14b(Tt((t%1+1)/2,t)))},sxMasterCoarseTuning:function(t){return[240,127,this._sxid,4,4,0,St(t),247]},sxMasterCoarseTuningF:function(t){return kt.sxMasterCoarseTuning.call(this,t-t%1+64)},sxNoteTuning:function(t,n,e,r){return n==parseInt(n)?[240,Et(r),this._sxid,8,7,St(t),St(n)].concat(Ot(e),[247]):[240,127,this._sxid,8,2,St(t)].concat(Ot(n),[247])},sxNoteTuningF:function(t,n,e,r){return n==parseInt(n)?kt.sxNoteTuning.call(this,t,n,Ft(e),r):kt.sxNoteTuning.call(this,t,Ft(n))},sxNoteTuningHZ:function(t,n,e,r){return n==parseInt(n)?kt.sxNoteTuning.call(this,t,n,Pt(e),r):kt.sxNoteTuning.call(this,t,Pt(n))},sxScaleTuning1:function(t,n,e){return t==parseInt(t)?[240,Et(e),this._sxid,8,8].concat(At(xt(t)),function(t){var n=[];if(!(t instanceof Array)||12!=t.length)throw TypeError("Expected an array of size 12");for(var e=0;e<12;e++)n.push(St(t[e]));return n}(n),[247]):kt.sxScaleTuning1.call(this,65535,t,n)},sxScaleTuning1F:function(t,n,e){if(t!=parseInt(t))return kt.sxScaleTuning1F.call(this,65535,t,n);for(var r=[],i=0;i>8)+String.fromCharCode(255&t)}else if(0==(t=""+t).length)t="\0\0";else if(1==t.length)t="\0"+t;else if(2>16)+String.fromCharCode(t>>8&255)+String.fromCharCode(255&t));throw RangeError("Out of range"+Yt(Wt(t)))},smfBPM:function(t){return jt.smfTempo(Math.round(6e7/t))},smfSMPTE:function(t){if(t instanceof ct)return qt(84,String.fromCharCode(t.hour)+String.fromCharCode(t.minute)+String.fromCharCode(t.second)+String.fromCharCode(t.frame)+String.fromCharCode(t.quarter%4*25));if(5==(""+t).length)return qt(84,t);var n=t instanceof Array?t:Array.prototype.slice.call(arguments);return n.splice(0,0,30),jt.smfSMPTE(new ct(n))},smfTimeSignature:function(t,n,e,r){var i,o,s,u,a=(""+t).match(/^\s*(\d+)\s*\/\s*(\d+)\s*$/);if(a){if(i=parseInt(a[1]),o=parseInt(a[2]),0>=1;s;s>>=1)o++;return s=n==parseInt(n)?n:24,u=e==parseInt(e)?e:8,qt(88,String.fromCharCode(i)+String.fromCharCode(o)+String.fromCharCode(s)+String.fromCharCode(u))}if(4==(""+t).length)return qt(88,t)}else if(t==parseInt(t)&&n==parseInt(n)){if(0>=1;s;s>>=1)o++;return s=e==parseInt(e)?e:24,u=r==parseInt(r)?r:8,qt(88,String.fromCharCode(i)+String.fromCharCode(o)+String.fromCharCode(s)+String.fromCharCode(u))}if(4==(""+t).length)return qt(88,t);t=t+"/"+n}else if(4==(""+t).length)return qt(88,t);throw RangeError("Wrong time signature"+Yt(Wt(""+t)))},smfKeySignature:function(t){var n,e=(t=""+t).match(/^\s*([A-H][b#]?)\s*(|maj|major|dur|m|min|minor|moll)\s*$/i);if(e&&(n={CB:0,GB:1,DB:2,AB:3,EB:4,BB:5,F:6,C:7,G:8,D:9,A:10,E:11,B:12,H:12,"F#":13,"C#":14,"G#":15,"D#":16,"A#":17}[e[1].toUpperCase()],e={"":0,MAJ:0,MAJOR:0,DUR:0,M:1,MIN:1,MINOR:1,MOLL:1}[e[2].toUpperCase()],void 0!==n&&void 0!==e&&(e&&(n-=3),-7<=(n-=7)&&n<0?t=String.fromCharCode(256+n)+String.fromCharCode(e):0<=n&&n<=7&&(t=String.fromCharCode(n)+String.fromCharCode(e)))),2==t.length&&t.charCodeAt(1)<=1&&(t.charCodeAt(0)<=7||t.charCodeAt(0)<=255&&249<=t.charCodeAt(0)))return qt(89,t);throw RangeError("Incorrect key signature"+Yt(t))},smfSequencer:function(t){return qt(127,Wt(t))}},zt={};function Gt(n){x(zt,function(t){n.prototype[t]=zt[t]})}x(kt,function(t){var n;n=kt[t=t],dt[t]=function(){return new dt(n.apply(this,arguments))},zt[t]=function(){return this.send(n.apply(this,arguments))}}),x(jt,function(t){var n;n=jt[t=t],dt[t]=function(){return n.apply(this,arguments)},zt[t]=function(){return this.send(n.apply(this,arguments))}}),x(Nt,function(t){var r;r=Nt[t=t],dt[t]=function(){for(var t=[],n=r.apply(this,arguments),e=0;e>4;if(12==o)t._bm=this._cc[i].bm,t._bl=this._cc[i].bl,ht.MIDI.programName&&t.label(ht.MIDI.programName(t[1],t._bm,t._bl));else if(11==o)switch(t[1]){case 0:this._cc[i].bm=t[2];break;case 32:this._cc[i].bl=t[2];break;case 98:this._cc[i].nl=t[2],this._cc[i].rn="n";break;case 99:this._cc[i].nm=t[2],this._cc[i].rn="n";break;case 100:this._cc[i].rl=t[2],this._cc[i].rn="r";break;case 101:this._cc[i].rm=t[2],this._cc[i].rn="r";break;case 6:case 38:case 96:case 97:"r"==this._cc[i].rn&&(t._rm=this._cc[i].rm,t._rl=this._cc[i].rl,t.label((n=this._cc[i].rm,e=this._cc[i].rl,r=void 0===n?"??":Ht(n),n=void 0===e?"??":Ht(e),"RPN "+r+" "+n+((e={"0000":"Pitch Bend Sensitivity","0001":"Channel Fine Tune","0002":"Channel Coarse Tune","0003":"Select Tuning Program","0004":"Select Tuning Bank","0005":"Vibrato Depth Range","7f7f":"NONE"}[r+""+n])?": "+e:"")))),"n"==this._cc[i].rn&&(t._nm=this._cc[i].rm,t._nl=this._cc[i].nl,t.label((n=this._cc[i].nm,e=this._cc[i].nl,"NRPN "+(void 0===n?"??":Ht(n))+" "+(void 0===e?"??":Ht(e)))))}else t.isFullSysEx()&&(127==t[1]?4==t[3]&&(1==t[4]?t.label("Master Volume"):2==t[4]&&t.label("Master Balance")):126==t[1]?6==t[3]?1==t[4]?t.label("Device ID Request"):2==t[4]&&t.label("Device ID Response"):9==t[3]&&(1==t[4]?(t.label("GM1 System On"),this._clear(),this._gm="1"):2==t[4]?(t.label("GM System Off"),this._clear(),this._gm="0"):3==t[4]&&(t.label("GM2 System On"),this._clear(),this._gm="2")):67==t[1]?16==(240&t[2])&&76==t[3]&&0==t[4]&&0==t[5]&&126==t[6]&&0==t[7]&&(t.label("XG System On"),this._clear(),this._gm="Y"):65==t[1]&&66==t[3]&&18==t[4]&&64==t[5]&&0==t[6]&&127==t[7]&&0==t[8]&&65==t[9]&&(t.label("GS Reset"),this._clear(),this._gm="R"));return t}function nn(){var t=new N;return t._clear=$t,t._read=tn,t._receive=function(t){this._emit(this._read(t))},t._clear(),t._resume(),t}function en(){var t=this instanceof en?this:new en;return t.reset(),arguments.length&&en.prototype.setup.apply(t,arguments),t}dt.prototype.getChannel=function(){if(32==this.ff&&1==this.dd.length&&this.dd.charCodeAt(0)<16)return this.dd.charCodeAt(0);var t=this[0];return void 0===t||t<128||239>4;return 0>4;return(r={8:"Note Off",10:"Aftertouch",12:"Program Change",13:"Channel Aftertouch",14:"Pitch Wheel"}[e])?t+" -- "+r:9==e?t+" -- "+(this[2]?"Note On":"Note Off"):11!=e?t:(r={0:"Bank Select MSB",1:"Modulation Wheel MSB",2:"Breath Controller MSB",4:"Foot Controller MSB",5:"Portamento Time MSB",6:"Data Entry MSB",7:"Channel Volume MSB",8:"Balance MSB",10:"Pan MSB",11:"Expression Controller MSB",12:"Effect Control 1 MSB",13:"Effect Control 2 MSB",16:"General Purpose Controller 1 MSB",17:"General Purpose Controller 2 MSB",18:"General Purpose Controller 3 MSB",19:"General Purpose Controller 4 MSB",31:"Karaoke",32:"Bank Select LSB",33:"Modulation Wheel LSB",34:"Breath Controller LSB",36:"Foot Controller LSB",37:"Portamento Time LSB",38:"Data Entry LSB",39:"Channel Volume LSB",40:"Balance LSB",42:"Pan LSB",43:"Expression Controller LSB",44:"Effect control 1 LSB",45:"Effect control 2 LSB",48:"General Purpose Controller 1 LSB",49:"General Purpose Controller 2 LSB",50:"General Purpose Controller 3 LSB",51:"General Purpose Controller 4 LSB",64:"Damper Pedal",65:"Portamento",66:"Sostenuto",67:"Soft Pedal",68:"Legato",69:"Hold 2",70:"Sound Variation",71:"Filter Resonance",72:"Release Time",73:"Attack Time",74:"Brightness",75:"Decay Time",76:"Vibrato Rate",77:"Vibrato Depth",78:"Vibrato Delay",79:"Sound Controller 10",80:"General Purpose Controller 5",81:"General Purpose Controller 6",82:"General Purpose Controller 7",83:"General Purpose Controller 8",84:"Portamento Control",88:"High Resolution Velocity Prefix",91:"Effects 1 Depth",92:"Effects 2 Depth",93:"Effects 3 Depth",94:"Effects 4 Depth",95:"Effects 5 Depth",96:"Data Increment",97:"Data Decrement",98:"Non-Registered Parameter Number LSB",99:"Non-Registered Parameter Number MSB",100:"Registered Parameter Number LSB",101:"Registered Parameter Number MSB",120:"All Sound Off",121:"Reset All Controllers",122:"Local Control On/Off",123:"All Notes Off",124:"Omni Mode Off",125:"Omni Mode On",126:"Mono Mode On",127:"Poly Mode On"}[this[1]],64<=this[1]&&this[1]<=69&&(r+=this[2]<64?" Off":" On"),t+" -- "+(r=r||"Undefined"))},dt.prototype._stamp=function(t){return this._from.push(t._orig||t),this},dt.prototype._unstamp=function(t){return void 0===t?this._from=[]:(t._orig&&(t=t._orig),-1<(t=this._from.indexOf(t))&&this._from.splice(t,1)),this},dt.prototype._stamped=function(t){t._orig&&(t=t._orig);for(var n=0;nthis[e].notes.length&&(i=this[n=e].notes.length),r=0;r>2,e=(3&o)<<6|(s=rn.indexOf(t.charAt(a++))),u+=String.fromCharCode(r<<2|i>>4),64!=o&&(u+=String.fromCharCode(n)),64!=s&&(u+=String.fromCharCode(e));return u},ht.lib.toBase64=function(t){var n,e,r,i,o=0,s=0,u="",a=[];if(!t)return t;for(;n=(i=t.charCodeAt(o++)<<16|t.charCodeAt(o++)<<8|t.charCodeAt(o++))>>12&63,e=i>>6&63,r=63&i,a[s++]=rn.charAt(i>>18&63)+rn.charAt(n)+rn.charAt(e)+rn.charAt(r),o=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;n+=63&e,r+=String.fromCharCode(n)}else if(224==(240&n)){if(n=(15&n)<<12,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(n+=(63&e)<<6,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;n+=63&e,r+=String.fromCharCode(n)}else if(240==(248&n)){if(n=(7&n)<<18,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(n+=(63&e)<<12,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(n+=(63&e)<<6,++i>=t.length)return t;if(128!=(192&(e=t.charCodeAt(i))))return t;if(1114111<(n+=63&e))return t;n-=65536,r+=String.fromCharCode(55296+(n>>10)),r+=String.fromCharCode(56320+(1023&n))}}return r},ht.lib.toUTF8=function(t){t=void 0===t?"":""+t;for(var n,e="",r=0;r>6)):(n<65536?e+=String.fromCharCode(224+(n>>12)):(e+=String.fromCharCode(240+(n>>18)),e+=String.fromCharCode(128+(n>>12&63))),e+=String.fromCharCode(128+(n>>6&63))),e+=String.fromCharCode(128+(63&n)));return e};var on=[],sn={},un={},an=t.Promise;function hn(t,n,e){this.name=t,this.message=n,this.code=e}function cn(t,n){this.bubbles=!1,this.cancelBubble=!1,this.cancelable=!1,this.currentTarget=n,this.defaultPrevented=!1,this.eventPhase=0,this.path=[],this.port=t,this.returnValue=!0,this.srcElement=n,this.target=n,this.timeStamp=a(),this.type="statechange"}function fn(t,n){this.bubbles=!1,this.cancelBubble=!1,this.cancelable=!1,this.currentTarget=t,this.data=n,this.defaultPrevented=!1,this.eventPhase=0,this.path=[],this.receivedTime=a(),this.returnValue=!0,this.srcElement=t,this.target=t,this.timeStamp=this.receivedTime,this.type="midimessage"}function ln(t,n){t&&(t.onstatechange&&t.onstatechange(new cn(t,t)),n.onstatechange&&n.onstatechange(new cn(t,n)))}function pn(e,r){var i=this,o=!1,n=null,s=null;this.type="input",this.id=r.id,this.name=r.name,this.manufacturer=r.man,this.version=r.ver,Object.defineProperty(this,"state",{get:function(){return r.connected?"connected":"disconnected"},enumerable:!0}),Object.defineProperty(this,"connection",{get:function(){return o?r.proxy?"open":"pending":"closed"},enumerable:!0}),Object.defineProperty(this,"onmidimessage",{get:function(){return s},set:function(t){f(t)?(s=t,o||i.open().then(c,c)):s=null},enumerable:!0}),Object.defineProperty(this,"onstatechange",{get:function(){return n},set:function(t){n=f(t)?t:null},enumerable:!0}),this.open=function(){return new an(function(t,n){o?t(i):r.open().then(function(){o||(o=!0,ln(i,e)),t(i)},function(){n(new hn("InvalidAccessError","Port is not available",15))})})},this.close=function(){return new an(function(t){o&&(o=!1,r.close(),ln(i,e)),t(i)})},Object.freeze(this)}function dn(t){for(var n,e;t.length;){for(n=0;nt.length)return;for(n=1;n