🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@tonejs/midi

Package Overview
Dependencies
Maintainers
2
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tonejs/midi - npm Package Compare versions

Comparing version
2.0.27
to
2.0.28
+1
-1
build/Midi.js

@@ -1,2 +0,2 @@

!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}("undefined"!=typeof self?self:this,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=5)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(2),i=new WeakMap;e.keySignatureKeys=["Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#"];var a=function(){function t(t){var r=this;this.tempos=[],this.timeSignatures=[],this.keySignatures=[],this.meta=[],this.name="",i.set(this,480),t&&(i.set(this,t.header.ticksPerBeat),t.tracks.forEach((function(t){return t.forEach((function(t){t.meta&&("timeSignature"===t.type?r.timeSignatures.push({ticks:t.absoluteTime,timeSignature:[t.numerator,t.denominator]}):"setTempo"===t.type?r.tempos.push({bpm:6e7/t.microsecondsPerBeat,ticks:t.absoluteTime}):"keySignature"===t.type&&r.keySignatures.push({key:e.keySignatureKeys[t.key+7],scale:0===t.scale?"major":"minor",ticks:t.absoluteTime}))}))})),t.tracks[0].forEach((function(t){t.meta&&("trackName"===t.type?r.name=t.text:"text"!==t.type&&"cuePoint"!==t.type&&"marker"!==t.type&&"lyrics"!==t.type||r.meta.push({text:t.text,ticks:t.absoluteTime,type:t.type}))})),this.update())}return t.prototype.update=function(){var t=this,e=0,r=0;this.tempos.sort((function(t,e){return t.ticks-e.ticks})),this.tempos.forEach((function(n,i){var a=i>0?t.tempos[i-1].bpm:t.tempos[0].bpm,o=n.ticks/t.ppq-r,s=60/a*o;n.time=s+e,e=n.time,r+=o})),this.timeSignatures.sort((function(t,e){return t.ticks-e.ticks})),this.timeSignatures.forEach((function(e,r){var n=r>0?t.timeSignatures[r-1]:t.timeSignatures[0],i=(e.ticks-n.ticks)/t.ppq/n.timeSignature[0]/(n.timeSignature[1]/4);n.measures=n.measures||0,e.measures=i+n.measures}))},t.prototype.ticksToSeconds=function(t){var e=n.search(this.tempos,t);if(-1!==e){var r=this.tempos[e],i=r.time,a=(t-r.ticks)/this.ppq;return i+60/r.bpm*a}return.5*(t/this.ppq)},t.prototype.ticksToMeasures=function(t){var e=n.search(this.timeSignatures,t);if(-1!==e){var r=this.timeSignatures[e],i=(t-r.ticks)/this.ppq;return r.measures+i/(r.timeSignature[0]/r.timeSignature[1])/4}return t/this.ppq/4},Object.defineProperty(t.prototype,"ppq",{get:function(){return i.get(this)},enumerable:!0,configurable:!0}),t.prototype.secondsToTicks=function(t){var e=n.search(this.tempos,t,"time");if(-1!==e){var r=this.tempos[e],i=(t-r.time)/(60/r.bpm);return Math.round(r.ticks+i*this.ppq)}var a=t/.5;return Math.round(a*this.ppq)},t.prototype.toJSON=function(){return{keySignatures:this.keySignatures,meta:this.meta,name:this.name,ppq:this.ppq,tempos:this.tempos.map((function(t){return{bpm:t.bpm,ticks:t.ticks}})),timeSignatures:this.timeSignatures}},t.prototype.fromJSON=function(t){this.name=t.name,this.tempos=t.tempos.map((function(t){return Object.assign({},t)})),this.timeSignatures=t.timeSignatures.map((function(t){return Object.assign({},t)})),this.keySignatures=t.keySignatures.map((function(t){return Object.assign({},t)})),this.meta=t.meta.map((function(t){return Object.assign({},t)})),i.set(this,t.ppq),this.update()},t.prototype.setTempo=function(t){this.tempos=[{bpm:t,ticks:0}],this.update()},t}();e.Header=a},function(t,e,r){e.parseMidi=r(6),e.writeMidi=r(7)},function(t,e,r){"use strict";function n(t,e,r){void 0===r&&(r="ticks");var n=0,i=t.length,a=i;if(i>0&&t[i-1][r]<=e)return i-1;for(;n<a;){var o=Math.floor(n+(a-n)/2),s=t[o],c=t[o+1];if(s[r]===e){for(var u=o;u<t.length;u++){t[u][r]===e&&(o=u)}return o}if(s[r]<e&&c[r]>e)return o;s[r]>e?a=o:s[r]<e&&(n=o+1)}return-1}Object.defineProperty(e,"__esModule",{value:!0}),e.search=n,e.insert=function(t,e,r){if(void 0===r&&(r="ticks"),t.length){var i=n(t,e[r],r);t.splice(i+1,0,e)}else t.push(e)}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(2),i=r(4),a=r(10),o=r(11),s=r(12),c=r(14),u=new WeakMap,h=function(){function t(t,e){var r=this;if(this.name="",this.notes=[],this.controlChanges=a.createControlChanges(),this.pitchBends=[],u.set(this,e),t){var n=t.find((function(t){return"trackName"===t.type}));this.name=n?n.text:""}if(this.instrument=new s.Instrument(t,this),this.channel=0,t){for(var i=t.filter((function(t){return"noteOn"===t.type})),o=t.filter((function(t){return"noteOff"===t.type})),c=function(){var t=i.shift();h.channel=t.channel;var e=o.findIndex((function(e){return e.noteNumber===t.noteNumber&&e.absoluteTime>=t.absoluteTime}));if(-1!==e){var r=o.splice(e,1)[0];h.addNote({durationTicks:r.absoluteTime-t.absoluteTime,midi:t.noteNumber,noteOffVelocity:r.velocity/127,ticks:t.absoluteTime,velocity:t.velocity/127})}},h=this;i.length;)c();t.filter((function(t){return"controller"===t.type})).forEach((function(t){r.addCC({number:t.controllerType,ticks:t.absoluteTime,value:t.value/127})})),t.filter((function(t){return"pitchBend"===t.type})).forEach((function(t){r.addPitchBend({ticks:t.absoluteTime,value:t.value/Math.pow(2,13)})}));var f=t.find((function(t){return"endOfTrack"===t.type}));this.endOfTrackTicks=void 0!==f?f.absoluteTime:void 0}}return t.prototype.addNote=function(t){var e=u.get(this),r=new c.Note({midi:0,ticks:0,velocity:1},{ticks:0,velocity:0},e);return Object.assign(r,t),n.insert(this.notes,r,"ticks"),this},t.prototype.addCC=function(t){var e=u.get(this),r=new i.ControlChange({controllerType:t.number},e);return delete t.number,Object.assign(r,t),Array.isArray(this.controlChanges[r.number])||(this.controlChanges[r.number]=[]),n.insert(this.controlChanges[r.number],r,"ticks"),this},t.prototype.addPitchBend=function(t){var e=u.get(this),r=new o.PitchBend({},e);return Object.assign(r,t),n.insert(this.pitchBends,r,"ticks"),this},Object.defineProperty(t.prototype,"duration",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].time+this.notes[this.notes.length-1].duration,e=0;e<this.notes.length-1;e++){var r=this.notes[e].time+this.notes[e].duration;t<r&&(t=r)}return t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"durationTicks",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].ticks+this.notes[this.notes.length-1].durationTicks,e=0;e<this.notes.length-1;e++){var r=this.notes[e].ticks+this.notes[e].durationTicks;t<r&&(t=r)}return t},enumerable:!0,configurable:!0}),t.prototype.fromJSON=function(t){var e=this;for(var r in this.name=t.name,this.channel=t.channel,this.instrument=new s.Instrument(void 0,this),this.instrument.fromJSON(t.instrument),void 0!==t.endOfTrackTicks&&(this.endOfTrackTicks=t.endOfTrackTicks),t.controlChanges)t.controlChanges[r]&&t.controlChanges[r].forEach((function(t){e.addCC({number:t.number,ticks:t.ticks,value:t.value})}));t.notes.forEach((function(t){e.addNote({durationTicks:t.durationTicks,midi:t.midi,ticks:t.ticks,velocity:t.velocity})}))},t.prototype.toJSON=function(){for(var t={},e=0;e<127;e++)this.controlChanges.hasOwnProperty(e)&&(t[e]=this.controlChanges[e].map((function(t){return t.toJSON()})));var r={channel:this.channel,controlChanges:t,pitchBends:this.pitchBends.map((function(t){return t.toJSON()})),instrument:this.instrument.toJSON(),name:this.name,notes:this.notes.map((function(t){return t.toJSON()}))};return void 0!==this.endOfTrackTicks&&(r.endOfTrackTicks=this.endOfTrackTicks),r},t}();e.Track=h},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.controlChangeNames={1:"modulationWheel",2:"breath",4:"footController",5:"portamentoTime",7:"volume",8:"balance",10:"pan",64:"sustain",65:"portamentoTime",66:"sostenuto",67:"softPedal",68:"legatoFootswitch",84:"portamentoControl"},e.controlChangeIds=Object.keys(e.controlChangeNames).reduce((function(t,r){return t[e.controlChangeNames[r]]=r,t}),{});var n=new WeakMap,i=new WeakMap,a=function(){function t(t,e){n.set(this,e),i.set(this,t.controllerType),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"number",{get:function(){return i.get(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return e.controlChangeNames[this.number]?e.controlChangeNames[this.number]:null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return n.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=n.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!0,configurable:!0}),t.prototype.toJSON=function(){return{number:this.number,ticks:this.ticks,time:this.time,value:this.value}},t}();e.ControlChange=a},function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=e.call(t,o)}catch(t){a=[6,t],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(e,"__esModule",{value:!0});var a=r(1),o=r(8),s=r(0),c=r(3),u=function(){function t(t){var e=this,r=null;t&&(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(r=a.parseMidi(t)).tracks.forEach((function(t){var e=0;t.forEach((function(t){e+=t.deltaTime,t.absoluteTime=e}))})),r.tracks=function(t){for(var e=[],r=0;r<t.length;r++)for(var n=e.length,i=new Map,a=Array(16).fill(0),o=0,s=t[r];o<s.length;o++){var c=s[o],u=n,h=c.channel;if(void 0!==h){"programChange"===c.type&&(a[h]=c.programNumber);var f=a[h]+" "+h;i.has(f)?u=i.get(f):(u=n+i.size,i.set(f,u))}e[u]||e.push([]),e[u].push(c)}return e}(r.tracks)),this.header=new s.Header(r),this.tracks=[],t&&(this.tracks=r.tracks.map((function(t){return new c.Track(t,e.header)})),1===r.header.format&&0===this.tracks[0].duration&&this.tracks.shift())}return t.fromUrl=function(e){return n(this,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,fetch(e)];case 1:return(r=n.sent()).ok?[4,r.arrayBuffer()]:[3,3];case 2:return[2,new t(n.sent())];case 3:throw new Error("could not load "+e)}}))}))},Object.defineProperty(t.prototype,"name",{get:function(){return this.header.name},set:function(t){this.header.name=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=this.tracks.map((function(t){return t.duration}));return Math.max.apply(Math,t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"durationTicks",{get:function(){var t=this.tracks.map((function(t){return t.durationTicks}));return Math.max.apply(Math,t)},enumerable:!0,configurable:!0}),t.prototype.addTrack=function(){var t=new c.Track(void 0,this.header);return this.tracks.push(t),t},t.prototype.toArray=function(){return o.encode(this)},t.prototype.toJSON=function(){return{header:this.header.toJSON(),tracks:this.tracks.map((function(t){return t.toJSON()}))}},t.prototype.fromJSON=function(t){var e=this;this.header=new s.Header,this.header.fromJSON(t.header),this.tracks=t.tracks.map((function(t){var r=new c.Track(void 0,e.header);return r.fromJSON(t),r}))},t.prototype.clone=function(){var e=new t;return e.fromJSON(this.toJSON()),e},t}();e.Midi=u;var h=r(3);e.Track=h.Track;var f=r(0);e.Header=f.Header},function(t,e){function r(t){for(var e,r=new n(t),i=[];!r.eof();){var a=o();i.push(a)}return i;function o(){var t={};t.deltaTime=r.readVarInt();var n=r.readUInt8();if(240==(240&n)){if(255!==n){if(240==n){t.type="sysEx";a=r.readVarInt();return t.data=r.readBytes(a),t}if(247==n){t.type="endSysEx";a=r.readVarInt();return t.data=r.readBytes(a),t}throw"Unrecognised MIDI event type byte: "+n}t.meta=!0;var i=r.readUInt8(),a=r.readVarInt();switch(i){case 0:if(t.type="sequenceNumber",2!==a)throw"Expected length for sequenceNumber event is 2, got "+a;return t.number=r.readUInt16(),t;case 1:return t.type="text",t.text=r.readString(a),t;case 2:return t.type="copyrightNotice",t.text=r.readString(a),t;case 3:return t.type="trackName",t.text=r.readString(a),t;case 4:return t.type="instrumentName",t.text=r.readString(a),t;case 5:return t.type="lyrics",t.text=r.readString(a),t;case 6:return t.type="marker",t.text=r.readString(a),t;case 7:return t.type="cuePoint",t.text=r.readString(a),t;case 32:if(t.type="channelPrefix",1!=a)throw"Expected length for channelPrefix event is 1, got "+a;return t.channel=r.readUInt8(),t;case 33:if(t.type="portPrefix",1!=a)throw"Expected length for portPrefix event is 1, got "+a;return t.port=r.readUInt8(),t;case 47:if(t.type="endOfTrack",0!=a)throw"Expected length for endOfTrack event is 0, got "+a;return t;case 81:if(t.type="setTempo",3!=a)throw"Expected length for setTempo event is 3, got "+a;return t.microsecondsPerBeat=r.readUInt24(),t;case 84:if(t.type="smpteOffset",5!=a)throw"Expected length for smpteOffset event is 5, got "+a;var o=r.readUInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&o],t.hour=31&o,t.min=r.readUInt8(),t.sec=r.readUInt8(),t.frame=r.readUInt8(),t.subFrame=r.readUInt8(),t;case 88:if(t.type="timeSignature",4!=a)throw"Expected length for timeSignature event is 4, got "+a;return t.numerator=r.readUInt8(),t.denominator=1<<r.readUInt8(),t.metronome=r.readUInt8(),t.thirtyseconds=r.readUInt8(),t;case 89:if(t.type="keySignature",2!=a)throw"Expected length for keySignature event is 2, got "+a;return t.key=r.readInt8(),t.scale=r.readUInt8(),t;case 127:return t.type="sequencerSpecific",t.data=r.readBytes(a),t;default:return t.type="unknownMeta",t.data=r.readBytes(a),t.metatypeByte=i,t}}else{var s;if(0==(128&n)){if(null===e)throw"Running status byte encountered before status byte";s=n,n=e,t.running=!0}else s=r.readUInt8(),e=n;var c=n>>4;switch(t.channel=15&n,c){case 8:return t.type="noteOff",t.noteNumber=s,t.velocity=r.readUInt8(),t;case 9:var u=r.readUInt8();return t.type=0===u?"noteOff":"noteOn",t.noteNumber=s,t.velocity=u,0===u&&(t.byte9=!0),t;case 10:return t.type="noteAftertouch",t.noteNumber=s,t.amount=r.readUInt8(),t;case 11:return t.type="controller",t.controllerType=s,t.value=r.readUInt8(),t;case 12:return t.type="programChange",t.programNumber=s,t;case 13:return t.type="channelAftertouch",t.amount=s,t;case 14:return t.type="pitchBend",t.value=s+(r.readUInt8()<<7)-8192,t;default:throw"Unrecognised MIDI event type: "+c}}}}function n(t){this.buffer=t,this.bufferLen=this.buffer.length,this.pos=0}n.prototype.eof=function(){return this.pos>=this.bufferLen},n.prototype.readUInt8=function(){var t=this.buffer[this.pos];return this.pos+=1,t},n.prototype.readInt8=function(){var t=this.readUInt8();return 128&t?t-256:t},n.prototype.readUInt16=function(){return(this.readUInt8()<<8)+this.readUInt8()},n.prototype.readInt16=function(){var t=this.readUInt16();return 32768&t?t-65536:t},n.prototype.readUInt24=function(){return(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},n.prototype.readInt24=function(){var t=this.readUInt24();return 8388608&t?t-16777216:t},n.prototype.readUInt32=function(){return(this.readUInt8()<<24)+(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},n.prototype.readBytes=function(t){var e=this.buffer.slice(this.pos,this.pos+t);return this.pos+=t,e},n.prototype.readString=function(t){var e=this.readBytes(t);return String.fromCharCode.apply(null,e)},n.prototype.readVarInt=function(){for(var t=0;!this.eof();){var e=this.readUInt8();if(!(128&e))return t+e;t+=127&e,t<<=7}return t},n.prototype.readChunk=function(){var t=this.readString(4),e=this.readUInt32();return{id:t,length:e,data:this.readBytes(e)}},t.exports=function(t){var e=new n(t),i=e.readChunk();if("MThd"!=i.id)throw"Bad MIDI file. Expected 'MHdr', got: '"+i.id+"'";for(var a=function(t){var e=new n(t),r=e.readUInt16(),i=e.readUInt16(),a={format:r,numTracks:i},o=e.readUInt16();32768&o?(a.framesPerSecond=256-(o>>8),a.ticksPerFrame=255&o):a.ticksPerBeat=o;return a}(i.data),o=[],s=0;!e.eof()&&s<a.numTracks;s++){var c=e.readChunk();if("MTrk"!=c.id)throw"Bad MIDI file. Expected 'MTrk', got: '"+c.id+"'";var u=r(c.data);o.push(u)}return{header:a,tracks:o}}},function(t,e){function r(t,e,r){var a,o=new i,s=e.length,c=null;for(a=0;a<s;a++)!1!==r.running&&(r.running||e[a].running)||(c=null),c=n(o,e[a],c,r.useByte9ForNoteOff);t.writeChunk("MTrk",o.buffer)}function n(t,e,r,n){var i=e.type,a=e.deltaTime,o=e.text||"",s=e.data||[],c=null;switch(t.writeVarInt(a),i){case"sequenceNumber":t.writeUInt8(255),t.writeUInt8(0),t.writeVarInt(2),t.writeUInt16(e.number);break;case"text":t.writeUInt8(255),t.writeUInt8(1),t.writeVarInt(o.length),t.writeString(o);break;case"copyrightNotice":t.writeUInt8(255),t.writeUInt8(2),t.writeVarInt(o.length),t.writeString(o);break;case"trackName":t.writeUInt8(255),t.writeUInt8(3),t.writeVarInt(o.length),t.writeString(o);break;case"instrumentName":t.writeUInt8(255),t.writeUInt8(4),t.writeVarInt(o.length),t.writeString(o);break;case"lyrics":t.writeUInt8(255),t.writeUInt8(5),t.writeVarInt(o.length),t.writeString(o);break;case"marker":t.writeUInt8(255),t.writeUInt8(6),t.writeVarInt(o.length),t.writeString(o);break;case"cuePoint":t.writeUInt8(255),t.writeUInt8(7),t.writeVarInt(o.length),t.writeString(o);break;case"channelPrefix":t.writeUInt8(255),t.writeUInt8(32),t.writeVarInt(1),t.writeUInt8(e.channel);break;case"portPrefix":t.writeUInt8(255),t.writeUInt8(33),t.writeVarInt(1),t.writeUInt8(e.port);break;case"endOfTrack":t.writeUInt8(255),t.writeUInt8(47),t.writeVarInt(0);break;case"setTempo":t.writeUInt8(255),t.writeUInt8(81),t.writeVarInt(3),t.writeUInt24(e.microsecondsPerBeat);break;case"smpteOffset":t.writeUInt8(255),t.writeUInt8(84),t.writeVarInt(5);var u=31&e.hour|{24:0,25:32,29:64,30:96}[e.frameRate];t.writeUInt8(u),t.writeUInt8(e.min),t.writeUInt8(e.sec),t.writeUInt8(e.frame),t.writeUInt8(e.subFrame);break;case"timeSignature":t.writeUInt8(255),t.writeUInt8(88),t.writeVarInt(4),t.writeUInt8(e.numerator);var h=255&Math.floor(Math.log(e.denominator)/Math.LN2);t.writeUInt8(h),t.writeUInt8(e.metronome),t.writeUInt8(e.thirtyseconds||8);break;case"keySignature":t.writeUInt8(255),t.writeUInt8(89),t.writeVarInt(2),t.writeInt8(e.key),t.writeUInt8(e.scale);break;case"sequencerSpecific":t.writeUInt8(255),t.writeUInt8(127),t.writeVarInt(s.length),t.writeBytes(s);break;case"unknownMeta":null!=e.metatypeByte&&(t.writeUInt8(255),t.writeUInt8(e.metatypeByte),t.writeVarInt(s.length),t.writeBytes(s));break;case"sysEx":t.writeUInt8(240),t.writeVarInt(s.length),t.writeBytes(s);break;case"endSysEx":t.writeUInt8(247),t.writeVarInt(s.length),t.writeBytes(s);break;case"noteOff":(c=(!1!==n&&e.byte9||n&&0==e.velocity?144:128)|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.noteNumber),t.writeUInt8(e.velocity);break;case"noteOn":(c=144|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.noteNumber),t.writeUInt8(e.velocity);break;case"noteAftertouch":(c=160|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.noteNumber),t.writeUInt8(e.amount);break;case"controller":(c=176|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.controllerType),t.writeUInt8(e.value);break;case"programChange":(c=192|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.programNumber);break;case"channelAftertouch":(c=208|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.amount);break;case"pitchBend":(c=224|e.channel)!==r&&t.writeUInt8(c);var f=8192+e.value,p=127&f,l=f>>7&127;t.writeUInt8(p),t.writeUInt8(l);break;default:throw"Unrecognized event type: "+i}return c}function i(){this.buffer=[]}i.prototype.writeUInt8=function(t){this.buffer.push(255&t)},i.prototype.writeInt8=i.prototype.writeUInt8,i.prototype.writeUInt16=function(t){var e=t>>8&255,r=255&t;this.writeUInt8(e),this.writeUInt8(r)},i.prototype.writeInt16=i.prototype.writeUInt16,i.prototype.writeUInt24=function(t){var e=t>>16&255,r=t>>8&255,n=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n)},i.prototype.writeInt24=i.prototype.writeUInt24,i.prototype.writeUInt32=function(t){var e=t>>24&255,r=t>>16&255,n=t>>8&255,i=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n),this.writeUInt8(i)},i.prototype.writeInt32=i.prototype.writeUInt32,i.prototype.writeBytes=function(t){this.buffer=this.buffer.concat(Array.prototype.slice.call(t,0))},i.prototype.writeString=function(t){var e,r=t.length,n=[];for(e=0;e<r;e++)n.push(t.codePointAt(e));this.writeBytes(n)},i.prototype.writeVarInt=function(t){if(t<0)throw"Cannot write negative variable-length integer";if(t<=127)this.writeUInt8(t);else{var e=t,r=[];for(r.push(127&e),e>>=7;e;){var n=127&e|128;r.push(n),e>>=7}this.writeBytes(r.reverse())}},i.prototype.writeChunk=function(t,e){this.writeString(t),this.writeUInt32(e.length),this.writeBytes(e)},t.exports=function(t,e){if("object"!=typeof t)throw"Invalid MIDI data";e=e||{};var n,a=t.header||{},o=t.tracks||[],s=o.length,c=new i;for(function(t,e,r){var n=null==e.format?1:e.format,a=128;e.timeDivision?a=e.timeDivision:e.ticksPerFrame&&e.framesPerSecond?a=-(255&e.framesPerSecond)<<8|255&e.ticksPerFrame:e.ticksPerBeat&&(a=32767&e.ticksPerBeat);var o=new i;o.writeUInt16(n),o.writeUInt16(r),o.writeUInt16(a),t.writeChunk("MThd",o.buffer)}(c,a,s),n=0;n<s;n++)r(c,o[n],e);return c.buffer}},function(t,e,r){"use strict";var n=this&&this.__spreadArrays||function(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),i=0;for(e=0;e<r;e++)for(var a=arguments[e],o=0,s=a.length;o<s;o++,i++)n[i]=a[o];return n},i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=r(1),o=r(0),s=i(r(9));function c(t){return s.default(t.notes.map((function(e){return function(t,e){return[{absoluteTime:t.ticks,channel:e,deltaTime:0,noteNumber:t.midi,type:"noteOn",velocity:Math.floor(127*t.velocity)},{absoluteTime:t.ticks+t.durationTicks,channel:e,deltaTime:0,noteNumber:t.midi,type:"noteOff",velocity:Math.floor(127*t.noteOffVelocity)}]}(e,t.channel)})))}function u(t,e){return{absoluteTime:t.ticks,channel:e,controllerType:t.number,deltaTime:0,type:"controller",value:Math.floor(127*t.value)}}function h(t){return{absoluteTime:0,channel:t.channel,deltaTime:0,programNumber:t.instrument.number,type:"programChange"}}e.encode=function(t){var e={header:{format:1,numTracks:t.tracks.length+1,ticksPerBeat:t.header.ppq},tracks:n([n([{absoluteTime:0,deltaTime:0,meta:!0,text:t.header.name,type:"trackName"}],t.header.keySignatures.map((function(t){return function(t){var e=o.keySignatureKeys.indexOf(t.key);return{absoluteTime:t.ticks,deltaTime:0,key:e+7,meta:!0,scale:"major"===t.scale?0:1,type:"keySignature"}}(t)})),t.header.meta.map((function(t){return{absoluteTime:(e=t).ticks,deltaTime:0,meta:!0,text:e.text,type:e.type};var e})),t.header.tempos.map((function(t){return function(t){return{absoluteTime:t.ticks,deltaTime:0,meta:!0,microsecondsPerBeat:Math.floor(6e7/t.bpm),type:"setTempo"}}(t)})),t.header.timeSignatures.map((function(t){return function(t){return{absoluteTime:t.ticks,deltaTime:0,denominator:t.timeSignature[1],meta:!0,metronome:24,numerator:t.timeSignature[0],thirtyseconds:8,type:"timeSignature"}}(t)})))],t.tracks.map((function(t){return n([(e=t.name,{absoluteTime:0,deltaTime:0,meta:!0,text:e,type:"trackName"}),h(t)],c(t),function(t){for(var e=[],r=0;r<127;r++)t.controlChanges.hasOwnProperty(r)&&t.controlChanges[r].forEach((function(r){e.push(u(r,t.channel))}));return e}(t),function(t){var e=[];return t.pitchBends.forEach((function(r){e.push(function(t,e){return{absoluteTime:t.ticks,channel:e,deltaTime:0,type:"pitchBend",value:t.value}}(r,t.channel))})),e}(t));var e})))};return e.tracks=e.tracks.map((function(t){t=t.sort((function(t,e){return t.absoluteTime-e.absoluteTime}));var e=0;return t.forEach((function(t){t.deltaTime=t.absoluteTime-e,e=t.absoluteTime,delete t.absoluteTime})),t.push({deltaTime:0,meta:!0,type:"endOfTrack"}),t})),new Uint8Array(a.writeMidi(e))}},function(t,e,r){"use strict";function n(t){return function t(e,r){for(var n=0;n<e.length;n++){var i=e[n];Array.isArray(i)?t(i,r):r.push(i)}return r}(t,[])}function i(t,e){if("number"!=typeof e)throw new TypeError("Expected the depth to be a number");return function t(e,r,n){n--;for(var i=0;i<e.length;i++){var a=e[i];n>-1&&Array.isArray(a)?t(a,r,n):r.push(a)}return r}(t,[],e)}t.exports=function(t){if(!Array.isArray(t))throw new TypeError("Expected value to be an array");return n(t)},t.exports.from=n,t.exports.depth=function(t,e){if(!Array.isArray(t))throw new TypeError("Expected value to be an array");return i(t,e)},t.exports.fromDepth=i},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(4);e.createControlChanges=function(){return new Proxy({},{get:function(t,e){return t[e]?t[e]:n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]:void 0},set:function(t,e,r){return n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]=r:t[e]=r,!0}})}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=new WeakMap,i=function(){function t(t,e){n.set(this,e),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"time",{get:function(){return n.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=n.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!0,configurable:!0}),t.prototype.toJSON=function(){return{ticks:this.ticks,time:this.time,value:this.value}},t}();e.PitchBend=i},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(13),i=new WeakMap,a=function(){function t(t,e){if(this.number=0,i.set(this,e),this.number=0,t){var r=t.find((function(t){return"programChange"===t.type}));r&&(this.number=r.programNumber)}}return Object.defineProperty(t.prototype,"name",{get:function(){return this.percussion?n.DrumKitByPatchID[this.number]:n.instrumentByPatchID[this.number]},set:function(t){var e=n.instrumentByPatchID.indexOf(t);-1!==e&&(this.number=e)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"family",{get:function(){return this.percussion?"drums":n.InstrumentFamilyByID[Math.floor(this.number/8)]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"percussion",{get:function(){return 9===i.get(this).channel},enumerable:!0,configurable:!0}),t.prototype.toJSON=function(){return{family:this.family,name:this.name,number:this.number}},t.prototype.fromJSON=function(t){this.number=t.number},t}();e.Instrument=a},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.instrumentByPatchID=["acoustic grand piano","bright acoustic piano","electric grand piano","honky-tonk piano","electric piano 1","electric piano 2","harpsichord","clavi","celesta","glockenspiel","music box","vibraphone","marimba","xylophone","tubular bells","dulcimer","drawbar organ","percussive organ","rock organ","church organ","reed organ","accordion","harmonica","tango accordion","acoustic guitar (nylon)","acoustic guitar (steel)","electric guitar (jazz)","electric guitar (clean)","electric guitar (muted)","overdriven guitar","distortion guitar","guitar harmonics","acoustic bass","electric bass (finger)","electric bass (pick)","fretless bass","slap bass 1","slap bass 2","synth bass 1","synth bass 2","violin","viola","cello","contrabass","tremolo strings","pizzicato strings","orchestral harp","timpani","string ensemble 1","string ensemble 2","synthstrings 1","synthstrings 2","choir aahs","voice oohs","synth voice","orchestra hit","trumpet","trombone","tuba","muted trumpet","french horn","brass section","synthbrass 1","synthbrass 2","soprano sax","alto sax","tenor sax","baritone sax","oboe","english horn","bassoon","clarinet","piccolo","flute","recorder","pan flute","blown bottle","shakuhachi","whistle","ocarina","lead 1 (square)","lead 2 (sawtooth)","lead 3 (calliope)","lead 4 (chiff)","lead 5 (charang)","lead 6 (voice)","lead 7 (fifths)","lead 8 (bass + lead)","pad 1 (new age)","pad 2 (warm)","pad 3 (polysynth)","pad 4 (choir)","pad 5 (bowed)","pad 6 (metallic)","pad 7 (halo)","pad 8 (sweep)","fx 1 (rain)","fx 2 (soundtrack)","fx 3 (crystal)","fx 4 (atmosphere)","fx 5 (brightness)","fx 6 (goblins)","fx 7 (echoes)","fx 8 (sci-fi)","sitar","banjo","shamisen","koto","kalimba","bag pipe","fiddle","shanai","tinkle bell","agogo","steel drums","woodblock","taiko drum","melodic tom","synth drum","reverse cymbal","guitar fret noise","breath noise","seashore","bird tweet","telephone ring","helicopter","applause","gunshot"],e.InstrumentFamilyByID=["piano","chromatic percussion","organ","guitar","bass","strings","ensemble","brass","reed","pipe","synth lead","synth pad","synth effects","world","percussive","sound effects"],e.DrumKitByPatchID={0:"standard kit",8:"room kit",16:"power kit",24:"electronic kit",25:"tr-808 kit",32:"jazz kit",40:"brush kit",48:"orchestra kit",56:"sound fx kit"}},function(t,e,r){"use strict";function n(t){return["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][t%12]}Object.defineProperty(e,"__esModule",{value:!0});var i,a,o=(i=/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,a={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},function(t){var e=i.exec(t),r=e[1],n=e[2];return a[r.toLowerCase()]+12*(parseInt(n,10)+1)}),s=new WeakMap,c=function(){function t(t,e,r){s.set(this,r),this.midi=t.midi,this.velocity=t.velocity,this.noteOffVelocity=e.velocity,this.ticks=t.ticks,this.durationTicks=e.ticks-t.ticks}return Object.defineProperty(t.prototype,"name",{get:function(){return t=this.midi,e=Math.floor(t/12)-1,n(t)+e.toString();var t,e},set:function(t){this.midi=o(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"octave",{get:function(){return Math.floor(this.midi/12)-1},set:function(t){var e=t-this.octave;this.midi+=12*e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"pitch",{get:function(){return n(this.midi)},set:function(t){this.midi=12*(this.octave+1)+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=s.get(this);return t.ticksToSeconds(this.ticks+this.durationTicks)-t.ticksToSeconds(this.ticks)},set:function(t){var e=s.get(this).secondsToTicks(this.time+t);this.durationTicks=e-this.ticks},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return s.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=s.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bars",{get:function(){return s.get(this).ticksToMeasures(this.ticks)},enumerable:!0,configurable:!0}),t.prototype.toJSON=function(){return{duration:this.duration,durationTicks:this.durationTicks,midi:this.midi,name:this.name,ticks:this.ticks,time:this.time,velocity:this.velocity}},t}();e.Note=c}])}));
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={507:(t,e,r)=>{"use strict";function n(t){var e=[];return i(t,e),e}function i(t,e){for(var r=0;r<t.length;r++){var n=t[r];Array.isArray(n)?i(n,e):e.push(n)}}r.r(e),r.d(e,{flatten:()=>n})},289:(t,e,r)=>{e.parseMidi=r(666),e.writeMidi=r(865)},666:t=>{function e(t){for(var e,n=new r(t),i=[];!n.eof();){var a=o();i.push(a)}return i;function o(){var t={};t.deltaTime=n.readVarInt();var r=n.readUInt8();if(240==(240&r)){if(255!==r){if(240==r)return t.type="sysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;if(247==r)return t.type="endSysEx",a=n.readVarInt(),t.data=n.readBytes(a),t;throw"Unrecognised MIDI event type byte: "+r}t.meta=!0;var i=n.readUInt8(),a=n.readVarInt();switch(i){case 0:if(t.type="sequenceNumber",2!==a)throw"Expected length for sequenceNumber event is 2, got "+a;return t.number=n.readUInt16(),t;case 1:return t.type="text",t.text=n.readString(a),t;case 2:return t.type="copyrightNotice",t.text=n.readString(a),t;case 3:return t.type="trackName",t.text=n.readString(a),t;case 4:return t.type="instrumentName",t.text=n.readString(a),t;case 5:return t.type="lyrics",t.text=n.readString(a),t;case 6:return t.type="marker",t.text=n.readString(a),t;case 7:return t.type="cuePoint",t.text=n.readString(a),t;case 32:if(t.type="channelPrefix",1!=a)throw"Expected length for channelPrefix event is 1, got "+a;return t.channel=n.readUInt8(),t;case 33:if(t.type="portPrefix",1!=a)throw"Expected length for portPrefix event is 1, got "+a;return t.port=n.readUInt8(),t;case 47:if(t.type="endOfTrack",0!=a)throw"Expected length for endOfTrack event is 0, got "+a;return t;case 81:if(t.type="setTempo",3!=a)throw"Expected length for setTempo event is 3, got "+a;return t.microsecondsPerBeat=n.readUInt24(),t;case 84:if(t.type="smpteOffset",5!=a)throw"Expected length for smpteOffset event is 5, got "+a;var o=n.readUInt8();return t.frameRate={0:24,32:25,64:29,96:30}[96&o],t.hour=31&o,t.min=n.readUInt8(),t.sec=n.readUInt8(),t.frame=n.readUInt8(),t.subFrame=n.readUInt8(),t;case 88:if(t.type="timeSignature",4!=a)throw"Expected length for timeSignature event is 4, got "+a;return t.numerator=n.readUInt8(),t.denominator=1<<n.readUInt8(),t.metronome=n.readUInt8(),t.thirtyseconds=n.readUInt8(),t;case 89:if(t.type="keySignature",2!=a)throw"Expected length for keySignature event is 2, got "+a;return t.key=n.readInt8(),t.scale=n.readUInt8(),t;case 127:return t.type="sequencerSpecific",t.data=n.readBytes(a),t;default:return t.type="unknownMeta",t.data=n.readBytes(a),t.metatypeByte=i,t}}else{var s;if(0==(128&r)){if(null===e)throw"Running status byte encountered before status byte";s=r,r=e,t.running=!0}else s=n.readUInt8(),e=r;var c=r>>4;switch(t.channel=15&r,c){case 8:return t.type="noteOff",t.noteNumber=s,t.velocity=n.readUInt8(),t;case 9:var u=n.readUInt8();return t.type=0===u?"noteOff":"noteOn",t.noteNumber=s,t.velocity=u,0===u&&(t.byte9=!0),t;case 10:return t.type="noteAftertouch",t.noteNumber=s,t.amount=n.readUInt8(),t;case 11:return t.type="controller",t.controllerType=s,t.value=n.readUInt8(),t;case 12:return t.type="programChange",t.programNumber=s,t;case 13:return t.type="channelAftertouch",t.amount=s,t;case 14:return t.type="pitchBend",t.value=s+(n.readUInt8()<<7)-8192,t;default:throw"Unrecognised MIDI event type: "+c}}}}function r(t){this.buffer=t,this.bufferLen=this.buffer.length,this.pos=0}r.prototype.eof=function(){return this.pos>=this.bufferLen},r.prototype.readUInt8=function(){var t=this.buffer[this.pos];return this.pos+=1,t},r.prototype.readInt8=function(){var t=this.readUInt8();return 128&t?t-256:t},r.prototype.readUInt16=function(){return(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt16=function(){var t=this.readUInt16();return 32768&t?t-65536:t},r.prototype.readUInt24=function(){return(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readInt24=function(){var t=this.readUInt24();return 8388608&t?t-16777216:t},r.prototype.readUInt32=function(){return(this.readUInt8()<<24)+(this.readUInt8()<<16)+(this.readUInt8()<<8)+this.readUInt8()},r.prototype.readBytes=function(t){var e=this.buffer.slice(this.pos,this.pos+t);return this.pos+=t,e},r.prototype.readString=function(t){var e=this.readBytes(t);return String.fromCharCode.apply(null,e)},r.prototype.readVarInt=function(){for(var t=0;!this.eof();){var e=this.readUInt8();if(!(128&e))return t+e;t+=127&e,t<<=7}return t},r.prototype.readChunk=function(){var t=this.readString(4),e=this.readUInt32();return{id:t,length:e,data:this.readBytes(e)}},t.exports=function(t){var n=new r(t),i=n.readChunk();if("MThd"!=i.id)throw"Bad MIDI file. Expected 'MHdr', got: '"+i.id+"'";for(var a=function(t){var e=new r(t),n={format:e.readUInt16(),numTracks:e.readUInt16()},i=e.readUInt16();return 32768&i?(n.framesPerSecond=256-(i>>8),n.ticksPerFrame=255&i):n.ticksPerBeat=i,n}(i.data),o=[],s=0;!n.eof()&&s<a.numTracks;s++){var c=n.readChunk();if("MTrk"!=c.id)throw"Bad MIDI file. Expected 'MTrk', got: '"+c.id+"'";var u=e(c.data);o.push(u)}return{header:a,tracks:o}}},865:t=>{function e(t,e,i){var a,o=new n,s=e.length,c=null;for(a=0;a<s;a++)!1!==i.running&&(i.running||e[a].running)||(c=null),c=r(o,e[a],c,i.useByte9ForNoteOff);t.writeChunk("MTrk",o.buffer)}function r(t,e,r,n){var i=e.type,a=e.deltaTime,o=e.text||"",s=e.data||[],c=null;switch(t.writeVarInt(a),i){case"sequenceNumber":t.writeUInt8(255),t.writeUInt8(0),t.writeVarInt(2),t.writeUInt16(e.number);break;case"text":t.writeUInt8(255),t.writeUInt8(1),t.writeVarInt(o.length),t.writeString(o);break;case"copyrightNotice":t.writeUInt8(255),t.writeUInt8(2),t.writeVarInt(o.length),t.writeString(o);break;case"trackName":t.writeUInt8(255),t.writeUInt8(3),t.writeVarInt(o.length),t.writeString(o);break;case"instrumentName":t.writeUInt8(255),t.writeUInt8(4),t.writeVarInt(o.length),t.writeString(o);break;case"lyrics":t.writeUInt8(255),t.writeUInt8(5),t.writeVarInt(o.length),t.writeString(o);break;case"marker":t.writeUInt8(255),t.writeUInt8(6),t.writeVarInt(o.length),t.writeString(o);break;case"cuePoint":t.writeUInt8(255),t.writeUInt8(7),t.writeVarInt(o.length),t.writeString(o);break;case"channelPrefix":t.writeUInt8(255),t.writeUInt8(32),t.writeVarInt(1),t.writeUInt8(e.channel);break;case"portPrefix":t.writeUInt8(255),t.writeUInt8(33),t.writeVarInt(1),t.writeUInt8(e.port);break;case"endOfTrack":t.writeUInt8(255),t.writeUInt8(47),t.writeVarInt(0);break;case"setTempo":t.writeUInt8(255),t.writeUInt8(81),t.writeVarInt(3),t.writeUInt24(e.microsecondsPerBeat);break;case"smpteOffset":t.writeUInt8(255),t.writeUInt8(84),t.writeVarInt(5);var u=31&e.hour|{24:0,25:32,29:64,30:96}[e.frameRate];t.writeUInt8(u),t.writeUInt8(e.min),t.writeUInt8(e.sec),t.writeUInt8(e.frame),t.writeUInt8(e.subFrame);break;case"timeSignature":t.writeUInt8(255),t.writeUInt8(88),t.writeVarInt(4),t.writeUInt8(e.numerator);var h=255&Math.floor(Math.log(e.denominator)/Math.LN2);t.writeUInt8(h),t.writeUInt8(e.metronome),t.writeUInt8(e.thirtyseconds||8);break;case"keySignature":t.writeUInt8(255),t.writeUInt8(89),t.writeVarInt(2),t.writeInt8(e.key),t.writeUInt8(e.scale);break;case"sequencerSpecific":t.writeUInt8(255),t.writeUInt8(127),t.writeVarInt(s.length),t.writeBytes(s);break;case"unknownMeta":null!=e.metatypeByte&&(t.writeUInt8(255),t.writeUInt8(e.metatypeByte),t.writeVarInt(s.length),t.writeBytes(s));break;case"sysEx":t.writeUInt8(240),t.writeVarInt(s.length),t.writeBytes(s);break;case"endSysEx":t.writeUInt8(247),t.writeVarInt(s.length),t.writeBytes(s);break;case"noteOff":(c=(!1!==n&&e.byte9||n&&0==e.velocity?144:128)|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.noteNumber),t.writeUInt8(e.velocity);break;case"noteOn":(c=144|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.noteNumber),t.writeUInt8(e.velocity);break;case"noteAftertouch":(c=160|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.noteNumber),t.writeUInt8(e.amount);break;case"controller":(c=176|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.controllerType),t.writeUInt8(e.value);break;case"programChange":(c=192|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.programNumber);break;case"channelAftertouch":(c=208|e.channel)!==r&&t.writeUInt8(c),t.writeUInt8(e.amount);break;case"pitchBend":(c=224|e.channel)!==r&&t.writeUInt8(c);var f=8192+e.value,p=127&f,l=f>>7&127;t.writeUInt8(p),t.writeUInt8(l);break;default:throw"Unrecognized event type: "+i}return c}function n(){this.buffer=[]}n.prototype.writeUInt8=function(t){this.buffer.push(255&t)},n.prototype.writeInt8=n.prototype.writeUInt8,n.prototype.writeUInt16=function(t){var e=t>>8&255,r=255&t;this.writeUInt8(e),this.writeUInt8(r)},n.prototype.writeInt16=n.prototype.writeUInt16,n.prototype.writeUInt24=function(t){var e=t>>16&255,r=t>>8&255,n=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n)},n.prototype.writeInt24=n.prototype.writeUInt24,n.prototype.writeUInt32=function(t){var e=t>>24&255,r=t>>16&255,n=t>>8&255,i=255&t;this.writeUInt8(e),this.writeUInt8(r),this.writeUInt8(n),this.writeUInt8(i)},n.prototype.writeInt32=n.prototype.writeUInt32,n.prototype.writeBytes=function(t){this.buffer=this.buffer.concat(Array.prototype.slice.call(t,0))},n.prototype.writeString=function(t){var e,r=t.length,n=[];for(e=0;e<r;e++)n.push(t.codePointAt(e));this.writeBytes(n)},n.prototype.writeVarInt=function(t){if(t<0)throw"Cannot write negative variable-length integer";if(t<=127)this.writeUInt8(t);else{var e=t,r=[];for(r.push(127&e),e>>=7;e;){var n=127&e|128;r.push(n),e>>=7}this.writeBytes(r.reverse())}},n.prototype.writeChunk=function(t,e){this.writeString(t),this.writeUInt32(e.length),this.writeBytes(e)},t.exports=function(t,r){if("object"!=typeof t)throw"Invalid MIDI data";r=r||{};var i,a=t.header||{},o=t.tracks||[],s=o.length,c=new n;for(function(t,e,r){var i=null==e.format?1:e.format,a=128;e.timeDivision?a=e.timeDivision:e.ticksPerFrame&&e.framesPerSecond?a=-(255&e.framesPerSecond)<<8|255&e.ticksPerFrame:e.ticksPerBeat&&(a=32767&e.ticksPerBeat);var o=new n;o.writeUInt16(i),o.writeUInt16(r),o.writeUInt16(a),t.writeChunk("MThd",o.buffer)}(c,a,s),i=0;i<s;i++)e(c,o[i],r);return c.buffer}},805:(t,e)=>{"use strict";function r(t,e,r){void 0===r&&(r="ticks");var n=0,i=t.length,a=i;if(i>0&&t[i-1][r]<=e)return i-1;for(;n<a;){var o=Math.floor(n+(a-n)/2),s=t[o],c=t[o+1];if(s[r]===e){for(var u=o;u<t.length;u++)t[u][r]===e&&(o=u);return o}if(s[r]<e&&c[r]>e)return o;s[r]>e?a=o:s[r]<e&&(n=o+1)}return-1}Object.defineProperty(e,"__esModule",{value:!0}),e.insert=e.search=void 0,e.search=r,e.insert=function(t,e,n){if(void 0===n&&(n="ticks"),t.length){var i=r(t,e[n],n);t.splice(i+1,0,e)}else t.push(e)}},543:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ControlChange=e.controlChangeIds=e.controlChangeNames=void 0,e.controlChangeNames={1:"modulationWheel",2:"breath",4:"footController",5:"portamentoTime",7:"volume",8:"balance",10:"pan",64:"sustain",65:"portamentoTime",66:"sostenuto",67:"softPedal",68:"legatoFootswitch",84:"portamentoControl"},e.controlChangeIds=Object.keys(e.controlChangeNames).reduce((function(t,r){return t[e.controlChangeNames[r]]=r,t}),{});var r=new WeakMap,n=new WeakMap,i=function(){function t(t,e){r.set(this,e),n.set(this,t.controllerType),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"number",{get:function(){return n.get(this)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"name",{get:function(){return e.controlChangeNames[this.number]?e.controlChangeNames[this.number]:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{number:this.number,ticks:this.ticks,time:this.time,value:this.value}},t}();e.ControlChange=i},906:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createControlChanges=void 0;var n=r(543);e.createControlChanges=function(){return new Proxy({},{get:function(t,e){return t[e]?t[e]:n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]:void 0},set:function(t,e,r){return n.controlChangeIds.hasOwnProperty(e)?t[n.controlChangeIds[e]]=r:t[e]=r,!0}})}},54:function(t,e,r){"use strict";var n=this&&this.__spreadArray||function(t,e,r){if(r||2===arguments.length)for(var n,i=0,a=e.length;i<a;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))};Object.defineProperty(e,"__esModule",{value:!0}),e.encode=void 0;var i=r(289),a=r(535),o=r(507);function s(t,e){return{absoluteTime:t.ticks,channel:e,controllerType:t.number,deltaTime:0,type:"controller",value:Math.floor(127*t.value)}}function c(t){return{absoluteTime:0,channel:t.channel,deltaTime:0,programNumber:t.instrument.number,type:"programChange"}}e.encode=function(t){var e={header:{format:1,numTracks:t.tracks.length+1,ticksPerBeat:t.header.ppq},tracks:n([n(n(n(n([{absoluteTime:0,deltaTime:0,meta:!0,text:t.header.name,type:"trackName"}],t.header.keySignatures.map((function(t){return function(t){var e=a.keySignatureKeys.indexOf(t.key);return{absoluteTime:t.ticks,deltaTime:0,key:e+7,meta:!0,scale:"major"===t.scale?0:1,type:"keySignature"}}(t)})),!0),t.header.meta.map((function(t){return{absoluteTime:(e=t).ticks,deltaTime:0,meta:!0,text:e.text,type:e.type};var e})),!0),t.header.tempos.map((function(t){return function(t){return{absoluteTime:t.ticks,deltaTime:0,meta:!0,microsecondsPerBeat:Math.floor(6e7/t.bpm),type:"setTempo"}}(t)})),!0),t.header.timeSignatures.map((function(t){return function(t){return{absoluteTime:t.ticks,deltaTime:0,denominator:t.timeSignature[1],meta:!0,metronome:24,numerator:t.timeSignature[0],thirtyseconds:8,type:"timeSignature"}}(t)})),!0)],t.tracks.map((function(t){return n(n(n([(e=t.name,{absoluteTime:0,deltaTime:0,meta:!0,text:e,type:"trackName"}),c(t)],function(t){return(0,o.flatten)(t.notes.map((function(e){return function(t,e){return[{absoluteTime:t.ticks,channel:e,deltaTime:0,noteNumber:t.midi,type:"noteOn",velocity:Math.floor(127*t.velocity)},{absoluteTime:t.ticks+t.durationTicks,channel:e,deltaTime:0,noteNumber:t.midi,type:"noteOff",velocity:Math.floor(127*t.noteOffVelocity)}]}(e,t.channel)})))}(t),!0),function(t){for(var e=[],r=0;r<127;r++)t.controlChanges.hasOwnProperty(r)&&t.controlChanges[r].forEach((function(r){e.push(s(r,t.channel))}));return e}(t),!0),function(t){var e=[];return t.pitchBends.forEach((function(r){e.push(function(t,e){return{absoluteTime:t.ticks,channel:e,deltaTime:0,type:"pitchBend",value:t.value}}(r,t.channel))})),e}(t),!0);var e})),!0)};return e.tracks=e.tracks.map((function(t){t=t.sort((function(t,e){return t.absoluteTime-e.absoluteTime}));var e=0;return t.forEach((function(t){t.deltaTime=t.absoluteTime-e,e=t.absoluteTime,delete t.absoluteTime})),t.push({deltaTime:0,meta:!0,type:"endOfTrack"}),t})),new Uint8Array((0,i.writeMidi)(e))}},535:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Header=e.keySignatureKeys=void 0;var n=r(805),i=new WeakMap;e.keySignatureKeys=["Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#"];var a=function(){function t(t){var r=this;if(this.tempos=[],this.timeSignatures=[],this.keySignatures=[],this.meta=[],this.name="",i.set(this,480),t){i.set(this,t.header.ticksPerBeat),t.tracks.forEach((function(t){t.forEach((function(t){t.meta&&("timeSignature"===t.type?r.timeSignatures.push({ticks:t.absoluteTime,timeSignature:[t.numerator,t.denominator]}):"setTempo"===t.type?r.tempos.push({bpm:6e7/t.microsecondsPerBeat,ticks:t.absoluteTime}):"keySignature"===t.type&&r.keySignatures.push({key:e.keySignatureKeys[t.key+7],scale:0===t.scale?"major":"minor",ticks:t.absoluteTime}))}))}));var n=0;t.tracks[0].forEach((function(t){n+=t.deltaTime,t.meta&&("trackName"===t.type?r.name=t.text:"text"!==t.type&&"cuePoint"!==t.type&&"marker"!==t.type&&"lyrics"!==t.type||r.meta.push({text:t.text,ticks:n,type:t.type}))})),this.update()}}return t.prototype.update=function(){var t=this,e=0,r=0;this.tempos.sort((function(t,e){return t.ticks-e.ticks})),this.tempos.forEach((function(n,i){var a=i>0?t.tempos[i-1].bpm:t.tempos[0].bpm,o=n.ticks/t.ppq-r,s=60/a*o;n.time=s+e,e=n.time,r+=o})),this.timeSignatures.sort((function(t,e){return t.ticks-e.ticks})),this.timeSignatures.forEach((function(e,r){var n=r>0?t.timeSignatures[r-1]:t.timeSignatures[0],i=(e.ticks-n.ticks)/t.ppq/n.timeSignature[0]/(n.timeSignature[1]/4);n.measures=n.measures||0,e.measures=i+n.measures}))},t.prototype.ticksToSeconds=function(t){var e=(0,n.search)(this.tempos,t);if(-1!==e){var r=this.tempos[e],i=r.time,a=(t-r.ticks)/this.ppq;return i+60/r.bpm*a}return t/this.ppq*.5},t.prototype.ticksToMeasures=function(t){var e=(0,n.search)(this.timeSignatures,t);if(-1!==e){var r=this.timeSignatures[e],i=(t-r.ticks)/this.ppq;return r.measures+i/(r.timeSignature[0]/r.timeSignature[1])/4}return t/this.ppq/4},Object.defineProperty(t.prototype,"ppq",{get:function(){return i.get(this)},enumerable:!1,configurable:!0}),t.prototype.secondsToTicks=function(t){var e=(0,n.search)(this.tempos,t,"time");if(-1!==e){var r=this.tempos[e],i=(t-r.time)/(60/r.bpm);return Math.round(r.ticks+i*this.ppq)}var a=t/.5;return Math.round(a*this.ppq)},t.prototype.toJSON=function(){return{keySignatures:this.keySignatures,meta:this.meta,name:this.name,ppq:this.ppq,tempos:this.tempos.map((function(t){return{bpm:t.bpm,ticks:t.ticks}})),timeSignatures:this.timeSignatures}},t.prototype.fromJSON=function(t){this.name=t.name,this.tempos=t.tempos.map((function(t){return Object.assign({},t)})),this.timeSignatures=t.timeSignatures.map((function(t){return Object.assign({},t)})),this.keySignatures=t.keySignatures.map((function(t){return Object.assign({},t)})),this.meta=t.meta.map((function(t){return Object.assign({},t)})),i.set(this,t.ppq),this.update()},t.prototype.setTempo=function(t){this.tempos=[{bpm:t,ticks:0}],this.update()},t}();e.Header=a},362:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Instrument=void 0;var n=r(438),i=new WeakMap,a=function(){function t(t,e){if(this.number=0,i.set(this,e),this.number=0,t){var r=t.find((function(t){return"programChange"===t.type}));r&&(this.number=r.programNumber)}}return Object.defineProperty(t.prototype,"name",{get:function(){return this.percussion?n.DrumKitByPatchID[this.number]:n.instrumentByPatchID[this.number]},set:function(t){var e=n.instrumentByPatchID.indexOf(t);-1!==e&&(this.number=e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"family",{get:function(){return this.percussion?"drums":n.InstrumentFamilyByID[Math.floor(this.number/8)]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"percussion",{get:function(){return 9===i.get(this).channel},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{family:this.family,number:this.number,name:this.name}},t.prototype.fromJSON=function(t){this.number=t.number},t}();e.Instrument=a},438:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DrumKitByPatchID=e.InstrumentFamilyByID=e.instrumentByPatchID=void 0,e.instrumentByPatchID=["acoustic grand piano","bright acoustic piano","electric grand piano","honky-tonk piano","electric piano 1","electric piano 2","harpsichord","clavi","celesta","glockenspiel","music box","vibraphone","marimba","xylophone","tubular bells","dulcimer","drawbar organ","percussive organ","rock organ","church organ","reed organ","accordion","harmonica","tango accordion","acoustic guitar (nylon)","acoustic guitar (steel)","electric guitar (jazz)","electric guitar (clean)","electric guitar (muted)","overdriven guitar","distortion guitar","guitar harmonics","acoustic bass","electric bass (finger)","electric bass (pick)","fretless bass","slap bass 1","slap bass 2","synth bass 1","synth bass 2","violin","viola","cello","contrabass","tremolo strings","pizzicato strings","orchestral harp","timpani","string ensemble 1","string ensemble 2","synthstrings 1","synthstrings 2","choir aahs","voice oohs","synth voice","orchestra hit","trumpet","trombone","tuba","muted trumpet","french horn","brass section","synthbrass 1","synthbrass 2","soprano sax","alto sax","tenor sax","baritone sax","oboe","english horn","bassoon","clarinet","piccolo","flute","recorder","pan flute","blown bottle","shakuhachi","whistle","ocarina","lead 1 (square)","lead 2 (sawtooth)","lead 3 (calliope)","lead 4 (chiff)","lead 5 (charang)","lead 6 (voice)","lead 7 (fifths)","lead 8 (bass + lead)","pad 1 (new age)","pad 2 (warm)","pad 3 (polysynth)","pad 4 (choir)","pad 5 (bowed)","pad 6 (metallic)","pad 7 (halo)","pad 8 (sweep)","fx 1 (rain)","fx 2 (soundtrack)","fx 3 (crystal)","fx 4 (atmosphere)","fx 5 (brightness)","fx 6 (goblins)","fx 7 (echoes)","fx 8 (sci-fi)","sitar","banjo","shamisen","koto","kalimba","bag pipe","fiddle","shanai","tinkle bell","agogo","steel drums","woodblock","taiko drum","melodic tom","synth drum","reverse cymbal","guitar fret noise","breath noise","seashore","bird tweet","telephone ring","helicopter","applause","gunshot"],e.InstrumentFamilyByID=["piano","chromatic percussion","organ","guitar","bass","strings","ensemble","brass","reed","pipe","synth lead","synth pad","synth effects","world","percussive","sound effects"],e.DrumKitByPatchID={0:"standard kit",8:"room kit",16:"power kit",24:"electronic kit",25:"tr-808 kit",32:"jazz kit",40:"brush kit",48:"orchestra kit",56:"sound fx kit"}},233:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,a){function o(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}c((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=e.call(t,o)}catch(t){a=[6,t],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}};Object.defineProperty(e,"__esModule",{value:!0}),e.Header=e.Track=e.Midi=void 0;var a=r(289),o=r(535),s=r(334),c=r(54),u=function(){function t(t){var e=this,r=null;if(t){var n=t instanceof ArrayBuffer?new Uint8Array(t):t;(r=(0,a.parseMidi)(n)).tracks.forEach((function(t){var e=0;t.forEach((function(t){e+=t.deltaTime,t.absoluteTime=e}))})),r.tracks=function(t){for(var e=[],r=0;r<t.length;r++)for(var n=e.length,i=new Map,a=Array(16).fill(0),o=0,s=t[r];o<s.length;o++){var c=s[o],u=n,h=c.channel;if(void 0!==h){"programChange"===c.type&&(a[h]=c.programNumber);var f=a[h],p="".concat(f," ").concat(h);i.has(p)?u=i.get(p):(u=n+i.size,i.set(p,u))}e[u]||e.push([]),e[u].push(c)}return e}(r.tracks)}this.header=new o.Header(r),this.tracks=[],t&&(this.tracks=r.tracks.map((function(t){return new s.Track(t,e.header)})),1===r.header.format&&0===this.tracks[0].duration&&this.tracks.shift())}return t.fromUrl=function(e){return n(this,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,fetch(e)];case 1:return(r=n.sent()).ok?[4,r.arrayBuffer()]:[3,3];case 2:return[2,new t(n.sent())];case 3:throw new Error("Could not load '".concat(e,"'"))}}))}))},Object.defineProperty(t.prototype,"name",{get:function(){return this.header.name},set:function(t){this.header.name=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=this.tracks.map((function(t){return t.duration}));return Math.max.apply(Math,t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"durationTicks",{get:function(){var t=this.tracks.map((function(t){return t.durationTicks}));return Math.max.apply(Math,t)},enumerable:!1,configurable:!0}),t.prototype.addTrack=function(){var t=new s.Track(void 0,this.header);return this.tracks.push(t),t},t.prototype.toArray=function(){return(0,c.encode)(this)},t.prototype.toJSON=function(){return{header:this.header.toJSON(),tracks:this.tracks.map((function(t){return t.toJSON()}))}},t.prototype.fromJSON=function(t){var e=this;this.header=new o.Header,this.header.fromJSON(t.header),this.tracks=t.tracks.map((function(t){var r=new s.Track(void 0,e.header);return r.fromJSON(t),r}))},t.prototype.clone=function(){var e=new t;return e.fromJSON(this.toJSON()),e},t}();e.Midi=u;var h=r(334);Object.defineProperty(e,"Track",{enumerable:!0,get:function(){return h.Track}});var f=r(535);Object.defineProperty(e,"Header",{enumerable:!0,get:function(){return f.Header}})},518:(t,e)=>{"use strict";function r(t){return["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"][t%12]}Object.defineProperty(e,"__esModule",{value:!0}),e.Note=void 0;var n,i,a=(n=/^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,i={cbb:-2,cb:-1,c:0,"c#":1,cx:2,dbb:0,db:1,d:2,"d#":3,dx:4,ebb:2,eb:3,e:4,"e#":5,ex:6,fbb:3,fb:4,f:5,"f#":6,fx:7,gbb:5,gb:6,g:7,"g#":8,gx:9,abb:7,ab:8,a:9,"a#":10,ax:11,bbb:9,bb:10,b:11,"b#":12,bx:13},function(t){var e=n.exec(t),r=e[1],a=e[2];return i[r.toLowerCase()]+12*(parseInt(a,10)+1)}),o=new WeakMap,s=function(){function t(t,e,r){o.set(this,r),this.midi=t.midi,this.velocity=t.velocity,this.noteOffVelocity=e.velocity,this.ticks=t.ticks,this.durationTicks=e.ticks-t.ticks}return Object.defineProperty(t.prototype,"name",{get:function(){return t=this.midi,e=Math.floor(t/12)-1,r(t)+e.toString();var t,e},set:function(t){this.midi=a(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"octave",{get:function(){return Math.floor(this.midi/12)-1},set:function(t){var e=t-this.octave;this.midi+=12*e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"pitch",{get:function(){return r(this.midi)},set:function(t){this.midi=12*(this.octave+1)+["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"].indexOf(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"duration",{get:function(){var t=o.get(this);return t.ticksToSeconds(this.ticks+this.durationTicks)-t.ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this).secondsToTicks(this.time+t);this.durationTicks=e-this.ticks},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"time",{get:function(){return o.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=o.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bars",{get:function(){return o.get(this).ticksToMeasures(this.ticks)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{duration:this.duration,durationTicks:this.durationTicks,midi:this.midi,name:this.name,ticks:this.ticks,time:this.time,velocity:this.velocity}},t}();e.Note=s},882:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.PitchBend=void 0;var r=new WeakMap,n=function(){function t(t,e){r.set(this,e),this.ticks=t.absoluteTime,this.value=t.value}return Object.defineProperty(t.prototype,"time",{get:function(){return r.get(this).ticksToSeconds(this.ticks)},set:function(t){var e=r.get(this);this.ticks=e.secondsToTicks(t)},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{ticks:this.ticks,time:this.time,value:this.value}},t}();e.PitchBend=n},334:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Track=void 0;var n=r(805),i=r(543),a=r(906),o=r(882),s=r(362),c=r(518),u=new WeakMap,h=function(){function t(t,e){var r=this;if(this.name="",this.notes=[],this.controlChanges=(0,a.createControlChanges)(),this.pitchBends=[],u.set(this,e),t){var n=t.find((function(t){return"trackName"===t.type}));this.name=n?n.text:""}if(this.instrument=new s.Instrument(t,this),this.channel=0,t){for(var i=t.filter((function(t){return"noteOn"===t.type})),o=t.filter((function(t){return"noteOff"===t.type})),c=function(){var t=i.shift();h.channel=t.channel;var e=o.findIndex((function(e){return e.noteNumber===t.noteNumber&&e.absoluteTime>=t.absoluteTime}));if(-1!==e){var r=o.splice(e,1)[0];h.addNote({durationTicks:r.absoluteTime-t.absoluteTime,midi:t.noteNumber,noteOffVelocity:r.velocity/127,ticks:t.absoluteTime,velocity:t.velocity/127})}},h=this;i.length;)c();t.filter((function(t){return"controller"===t.type})).forEach((function(t){r.addCC({number:t.controllerType,ticks:t.absoluteTime,value:t.value/127})})),t.filter((function(t){return"pitchBend"===t.type})).forEach((function(t){r.addPitchBend({ticks:t.absoluteTime,value:t.value/Math.pow(2,13)})}));var f=t.find((function(t){return"endOfTrack"===t.type}));this.endOfTrackTicks=void 0!==f?f.absoluteTime:void 0}}return t.prototype.addNote=function(t){var e=u.get(this),r=new c.Note({midi:0,ticks:0,velocity:1},{ticks:0,velocity:0},e);return Object.assign(r,t),(0,n.insert)(this.notes,r,"ticks"),this},t.prototype.addCC=function(t){var e=u.get(this),r=new i.ControlChange({controllerType:t.number},e);return delete t.number,Object.assign(r,t),Array.isArray(this.controlChanges[r.number])||(this.controlChanges[r.number]=[]),(0,n.insert)(this.controlChanges[r.number],r,"ticks"),this},t.prototype.addPitchBend=function(t){var e=u.get(this),r=new o.PitchBend({},e);return Object.assign(r,t),(0,n.insert)(this.pitchBends,r,"ticks"),this},Object.defineProperty(t.prototype,"duration",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].time+this.notes[this.notes.length-1].duration,e=0;e<this.notes.length-1;e++){var r=this.notes[e].time+this.notes[e].duration;t<r&&(t=r)}return t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"durationTicks",{get:function(){if(!this.notes.length)return 0;for(var t=this.notes[this.notes.length-1].ticks+this.notes[this.notes.length-1].durationTicks,e=0;e<this.notes.length-1;e++){var r=this.notes[e].ticks+this.notes[e].durationTicks;t<r&&(t=r)}return t},enumerable:!1,configurable:!0}),t.prototype.fromJSON=function(t){var e=this;for(var r in this.name=t.name,this.channel=t.channel,this.instrument=new s.Instrument(void 0,this),this.instrument.fromJSON(t.instrument),void 0!==t.endOfTrackTicks&&(this.endOfTrackTicks=t.endOfTrackTicks),t.controlChanges)t.controlChanges[r]&&t.controlChanges[r].forEach((function(t){e.addCC({number:t.number,ticks:t.ticks,value:t.value})}));t.notes.forEach((function(t){e.addNote({durationTicks:t.durationTicks,midi:t.midi,ticks:t.ticks,velocity:t.velocity})}))},t.prototype.toJSON=function(){for(var t={},e=0;e<127;e++)this.controlChanges.hasOwnProperty(e)&&(t[e]=this.controlChanges[e].map((function(t){return t.toJSON()})));var r={channel:this.channel,controlChanges:t,pitchBends:this.pitchBends.map((function(t){return t.toJSON()})),instrument:this.instrument.toJSON(),name:this.name,notes:this.notes.map((function(t){return t.toJSON()}))};return void 0!==this.endOfTrackTicks&&(r.endOfTrackTicks=this.endOfTrackTicks),r},t}();e.Track=h}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var a=e[n]={exports:{}};return t[n].call(a.exports,a,a.exports,r),a.exports}return r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r(233)})()}));
//# sourceMappingURL=Midi.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.insert = exports.search = void 0;
/**

@@ -4,0 +5,0 @@ * Return the index of the element at or before the given property

@@ -1,1 +0,1 @@

{"version":3,"file":"BinarySearch.js","sourceRoot":"","sources":["../src/BinarySearch.ts"],"names":[],"mappings":";;AAAA;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAY,EAAE,KAAU,EAAE,IAAa;IAAb,qBAAA,EAAA,cAAa;IAC7D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE;QAC7C,OAAO,GAAG,GAAG,CAAC,CAAC;KACf;IACD,OAAO,SAAS,GAAG,GAAG,EAAE;QACvB,qDAAqD;QACrD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAM,OAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,OAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;YAC1B,8CAA8C;YAC9C,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;oBAC9B,QAAQ,GAAG,CAAC,CAAC;iBACb;aACD;YACD,OAAO,QAAQ,CAAC;SAChB;aAAM,IAAI,OAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;YAC1D,OAAO,QAAQ,CAAC;SAChB;aAAM,IAAI,OAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;YAC/B,eAAe;YACf,GAAG,GAAG,QAAQ,CAAC;SACf;aAAM,IAAI,OAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;YAC/B,eAAe;YACf,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;SACzB;KACD;IACD,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAhCD,wBAgCC;AAED;;;;GAIG;AACH,SAAgB,MAAM,CAAC,KAAY,EAAE,KAAa,EAAE,IAAc;IAAd,qBAAA,EAAA,cAAc;IACjE,IAAI,KAAK,CAAC,MAAM,EAAE;QACjB,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KAClC;SAAM;QACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClB;AACF,CAAC;AAPD,wBAOC"}
{"version":3,"file":"BinarySearch.js","sourceRoot":"","sources":["../src/BinarySearch.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,MAAM,CAAC,KAAY,EAAE,KAAU,EAAE,IAAc;IAAd,qBAAA,EAAA,cAAc;IAC9D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE;QAC7C,OAAO,GAAG,GAAG,CAAC,CAAC;KACf;IACD,OAAO,SAAS,GAAG,GAAG,EAAE;QACvB,qDAAqD;QACrD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,IAAM,OAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,OAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;YAC1B,8CAA8C;YAC9C,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;oBAC9B,QAAQ,GAAG,CAAC,CAAC;iBACb;aACD;YACD,OAAO,QAAQ,CAAC;SAChB;aAAM,IAAI,OAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;YAC1D,OAAO,QAAQ,CAAC;SAChB;aAAM,IAAI,OAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;YAC/B,eAAe;YACf,GAAG,GAAG,QAAQ,CAAC;SACf;aAAM,IAAI,OAAK,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE;YAC/B,eAAe;YACf,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;SACzB;KACD;IACD,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAhCD,wBAgCC;AAED;;;;GAIG;AACH,SAAgB,MAAM,CAAC,KAAY,EAAE,KAAa,EAAE,IAAc;IAAd,qBAAA,EAAA,cAAc;IACjE,IAAI,KAAK,CAAC,MAAM,EAAE;QACjB,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KAClC;SAAM;QACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClB;AACF,CAAC;AAPD,wBAOC"}

@@ -0,3 +1,3 @@

import type { MidiControllerEvent } from "midi-file";
import { Header } from "./Header";
import { MidiControllerEvent } from "midi-file";
/**

@@ -36,3 +36,5 @@ * @hidden

*/
constructor(event: Partial<MidiControllerEvent>, header: Header);
constructor(event: Partial<MidiControllerEvent & {
absoluteTime: number;
}>, header: Header);
/**

@@ -39,0 +41,0 @@ * The controller number

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ControlChange = exports.controlChangeIds = exports.controlChangeNames = void 0;
/**

@@ -53,3 +54,3 @@ * A map of values to control change names

},
enumerable: true,
enumerable: false,
configurable: true

@@ -69,3 +70,3 @@ });

},
enumerable: true,
enumerable: false,
configurable: true

@@ -85,3 +86,3 @@ });

},
enumerable: true,
enumerable: false,
configurable: true

@@ -88,0 +89,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"ControlChange.js","sourceRoot":"","sources":["../src/ControlChange.ts"],"names":[],"mappings":";;AAWA;;;GAGG;AACU,QAAA,kBAAkB,GAAqB;IACnD,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,SAAS;IACZ,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,mBAAmB;CACvB,CAAC;AAEF;;;GAGG;AACU,QAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,0BAAkB,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG;IAC/E,GAAG,CAAC,0BAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACnC,OAAO,GAAG,CAAC;AACZ,CAAC,EAAE,EAAE,CAAC,CAAC;AAEP,IAAM,gBAAgB,GAAG,IAAI,OAAO,EAAyB,CAAC;AAC9D,IAAM,kBAAkB,GAAG,IAAI,OAAO,EAAyB,CAAC;AAEhE;;GAEG;AACH;IAYC;;;OAGG;IACH,uBAAY,KAAmC,EAAE,MAAc;QAC9D,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAKD,sBAAI,iCAAM;QAHV;;WAEG;aACH;YACC,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;;;OAAA;IAKD,sBAAI,+BAAI;QAHR;;WAEG;aACH;YACC,IAAI,0BAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACpC,OAAO,0BAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvC;iBAAM;gBACN,OAAO,IAAI,CAAC;aACZ;QACF,CAAC;;;OAAA;IAKD,sBAAI,+BAAI;QAHR;;WAEG;aACH;YACC,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAED,UAAS,CAAS;YACjB,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;;;OALA;IAOD,8BAAM,GAAN;QACC,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;IACH,CAAC;IACF,oBAAC;AAAD,CAAC,AA/DD,IA+DC;AA/DY,sCAAa"}
{"version":3,"file":"ControlChange.js","sourceRoot":"","sources":["../src/ControlChange.ts"],"names":[],"mappings":";;;AAwBA;;;GAGG;AACU,QAAA,kBAAkB,GAAqB;IACnD,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,SAAS;IACZ,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,kBAAkB;IACtB,EAAE,EAAE,mBAAmB;CACvB,CAAC;AAEF;;;GAGG;AACU,QAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,0BAAkB,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG;IAC/E,GAAG,CAAC,0BAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACnC,OAAO,GAAG,CAAC;AACZ,CAAC,EAAE,EAAE,CAAC,CAAC;AAEP,IAAM,gBAAgB,GAAG,IAAI,OAAO,EAAyB,CAAC;AAC9D,IAAM,kBAAkB,GAAG,IAAI,OAAO,EAAyB,CAAC;AAEhE;;GAEG;AACH;IAYC;;;OAGG;IACH,uBAAY,KAA8D,EAAE,MAAc;QACzF,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAKD,sBAAI,iCAAM;QAHV;;WAEG;aACH;YACC,OAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;;;OAAA;IAKD,sBAAI,+BAAI;QAHR;;WAEG;aACH;YACC,IAAI,0BAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACpC,OAAO,0BAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvC;iBAAM;gBACN,OAAO,IAAI,CAAC;aACZ;QACF,CAAC;;;OAAA;IAKD,sBAAI,+BAAI;QAHR;;WAEG;aACH;YACC,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAED,UAAS,CAAS;YACjB,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;;;OALA;IAOD,8BAAM,GAAN;QACC,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;IACH,CAAC;IACF,oBAAC;AAAD,CAAC,AA/DD,IA+DC;AA/DY,sCAAa"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createControlChanges = void 0;
var ControlChange_1 = require("./ControlChange");

@@ -4,0 +5,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"ControlChanges.js","sourceRoot":"","sources":["../src/ControlChanges.ts"],"names":[],"mappings":";;AAAA,iDAAmD;AAanD;;;GAGG;AACH,SAAgB,oBAAoB;IACnC,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;QACpB,oCAAoC;QACpC,GAAG,YAAC,MAAM,EAAE,OAAO;YAClB,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;gBACpB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;aACvB;iBAAM,IAAI,gCAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBACpD,OAAO,MAAM,CAAC,gCAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;aACzC;QACF,CAAC;QACD,oCAAoC;QACpC,GAAG,YAAC,MAAM,EAAE,OAAO,EAAE,KAAK;YACzB,IAAI,gCAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAC7C,MAAM,CAAC,gCAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;aAC1C;iBAAM;gBACN,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;aACxB;YACD,OAAO,IAAI,CAAC;QACb,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AApBD,oDAoBC"}
{"version":3,"file":"ControlChanges.js","sourceRoot":"","sources":["../src/ControlChanges.ts"],"names":[],"mappings":";;;AAAA,iDAAmD;AAanD;;;GAGG;AACH,SAAgB,oBAAoB;IACnC,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;QACpB,oCAAoC;QACpC,GAAG,YAAC,MAAM,EAAE,OAAO;YAClB,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;gBACpB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;aACvB;iBAAM,IAAI,gCAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBACpD,OAAO,MAAM,CAAC,gCAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;aACzC;QACF,CAAC;QACD,oCAAoC;QACpC,GAAG,YAAC,MAAM,EAAE,OAAO,EAAE,KAAK;YACzB,IAAI,gCAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAC7C,MAAM,CAAC,gCAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;aAC1C;iBAAM;gBACN,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;aACxB;YACD,OAAO,IAAI,CAAC;QACb,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AApBD,oDAoBC"}
import { Midi } from "./Midi";
/**
* Convert the midi object to an array
* Convert the MIDI object to an array.
*/
export declare function encode(midi: Midi): Uint8Array;
"use strict";
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.encode = void 0;
var midi_file_1 = require("midi-file");
var Header_1 = require("./Header");
var array_flatten_1 = __importDefault(require("array-flatten"));
var array_flatten_1 = require("array-flatten");
function encodeNote(note, channel) {

@@ -35,3 +35,3 @@ return [{

function encodeNotes(track) {
return array_flatten_1.default(track.notes.map(function (note) { return encodeNote(note, track.channel); }));
return (0, array_flatten_1.flatten)(track.notes.map(function (note) { return encodeNote(note, track.channel); }));
}

@@ -136,3 +136,3 @@ function encodeControlChange(cc, channel) {

/**
* Convert the midi object to an array
* Convert the MIDI object to an array.
*/

@@ -146,5 +146,5 @@ function encode(midi) {

},
tracks: __spreadArrays([
__spreadArrays([
// the name data
tracks: __spreadArray([
__spreadArray(__spreadArray(__spreadArray(__spreadArray([
// The name data.
{

@@ -157,13 +157,13 @@ absoluteTime: 0,

}
], midi.header.keySignatures.map(function (keySig) { return encodeKeySignature(keySig); }), midi.header.meta.map(function (e) { return encodeText(e); }), midi.header.tempos.map(function (tempo) { return encodeTempo(tempo); }), midi.header.timeSignatures.map(function (timeSig) { return encodeTimeSignature(timeSig); }))
], midi.header.keySignatures.map(function (keySig) { return encodeKeySignature(keySig); }), true), midi.header.meta.map(function (e) { return encodeText(e); }), true), midi.header.tempos.map(function (tempo) { return encodeTempo(tempo); }), true), midi.header.timeSignatures.map(function (timeSig) { return encodeTimeSignature(timeSig); }), true)
], midi.tracks.map(function (track) {
return __spreadArrays([
// add the name
return __spreadArray(__spreadArray(__spreadArray([
// Add the name
encodeTrackName(track.name),
// the instrument
encodeInstrument(track)
], encodeNotes(track), encodeControlChanges(track), encodePitchBends(track));
})),
], encodeNotes(track), true), encodeControlChanges(track), true), encodePitchBends(track), true);
}), true),
};
// sort and set deltaTime of all of the tracks
// Sort and set `deltaTime` of all of the tracks.
midiData.tracks = midiData.tracks.map(function (track) {

@@ -177,3 +177,3 @@ track = track.sort(function (a, b) { return a.absoluteTime - b.absoluteTime; });

});
// end of track
// End of track.
track.push({

@@ -186,6 +186,6 @@ deltaTime: 0,

});
// return midiData
return new Uint8Array(midi_file_1.writeMidi(midiData));
// Rreturn `midiData`.
return new Uint8Array((0, midi_file_1.writeMidi)(midiData));
}
exports.encode = encode;
//# sourceMappingURL=Encode.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"Encode.js","sourceRoot":"","sources":["../src/Encode.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Encode.js","sourceRoot":"","sources":["../src/Encode.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,2 @@

import { MidiData } from "midi-file";
import type { MidiData } from "midi-file";
export interface TempoEvent {

@@ -26,22 +26,24 @@ ticks: number;

export declare const keySignatureKeys: string[];
/** The parsed midi file header */
/**
* The parsed MIDI file header.
*/
export declare class Header {
/**
* The array of all the tempo events
* The array of all the tempo events.
*/
tempos: TempoEvent[];
/**
* The time signatures
* The time signatures.
*/
timeSignatures: TimeSignatureEvent[];
/**
* The time signatures
* The time signatures.
*/
keySignatures: KeySignatureEvent[];
/**
* Additional meta events
* Additional meta events.
*/
meta: MetaEvent[];
/**
* The name of the midi file
* The name of the MIDI file;
*/

@@ -56,15 +58,15 @@ name: string;

/**
* Convert ticks into seconds based on the tempo changes
* Convert ticks into seconds based on the tempo changes.
*/
ticksToSeconds(ticks: number): number;
/**
* Convert ticks into measures based off of the time signatures
* Convert ticks into measures based off of the time signatures.
*/
ticksToMeasures(ticks: number): number;
/**
* The number of ticks per quarter note
* The number of ticks per quarter note.
*/
get ppq(): number;
/**
* Convert seconds to ticks based on the tempo events
* Convert seconds to ticks based on the tempo events.
*/

@@ -77,3 +79,3 @@ secondsToTicks(seconds: number): number;

/**
* parse a header json object.
* Parse a header json object.
*/

@@ -84,3 +86,3 @@ fromJSON(json: HeaderJSON): void;

* any other tempos currently set and update all of the event timing.
* @param bpm The tempo in beats per second
* @param bpm The tempo in beats per second.
*/

@@ -87,0 +89,0 @@ setTempo(bpm: number): void;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Header = exports.keySignatureKeys = void 0;
var BinarySearch_1 = require("./BinarySearch");

@@ -25,33 +26,35 @@ var privatePPQMap = new WeakMap();

];
/** The parsed midi file header */
/**
* The parsed MIDI file header.
*/
var Header = /** @class */ (function () {
function Header(midiData) {
// look through all the tracks for tempo changes
var _this = this;
/**
* The array of all the tempo events
* The array of all the tempo events.
*/
this.tempos = [];
/**
* The time signatures
* The time signatures.
*/
this.timeSignatures = [];
/**
* The time signatures
* The time signatures.
*/
this.keySignatures = [];
/**
* Additional meta events
* Additional meta events.
*/
this.meta = [];
/**
* The name of the midi file
* The name of the MIDI file;
*/
this.name = "";
// Look through all the tracks for tempo changes.
privatePPQMap.set(this, 480);
if (midiData) {
privatePPQMap.set(this, midiData.header.ticksPerBeat);
// check time signature and tempo events from all of the tracks
// Check time signature and tempo events from all of the tracks.
midiData.tracks.forEach(function (track) {
return track.forEach(function (event) {
track.forEach(function (event) {
if (event.meta) {

@@ -83,4 +86,6 @@ if (event.type === "timeSignature") {

});
// check the first track for other relevant data
// Check the first track for other relevant data.
var firstTrackCurrentTicks_1 = 0; // Used for absolute times.
midiData.tracks[0].forEach(function (event) {
firstTrackCurrentTicks_1 += event.deltaTime;
if (event.meta) {

@@ -96,3 +101,3 @@ if (event.type === "trackName") {

text: event.text,
ticks: event.absoluteTime,
ticks: firstTrackCurrentTicks_1,
type: event.type,

@@ -114,3 +119,3 @@ });

var lastEventBeats = 0;
// make sure it's sorted
// Make sure it's sorted;
this.tempos.sort(function (a, b) { return a.ticks - b.ticks; });

@@ -139,7 +144,7 @@ this.tempos.forEach(function (event, index) {

/**
* Convert ticks into seconds based on the tempo changes
* Convert ticks into seconds based on the tempo changes.
*/
Header.prototype.ticksToSeconds = function (ticks) {
// find the relevant position
var index = BinarySearch_1.search(this.tempos, ticks);
// Find the relevant position.
var index = (0, BinarySearch_1.search)(this.tempos, ticks);
if (index !== -1) {

@@ -152,3 +157,3 @@ var tempo = this.tempos[index];

else {
// assume 120
// Assume 120.
var beats = ticks / this.ppq;

@@ -159,6 +164,6 @@ return (60 / 120) * beats;

/**
* Convert ticks into measures based off of the time signatures
* Convert ticks into measures based off of the time signatures.
*/
Header.prototype.ticksToMeasures = function (ticks) {
var index = BinarySearch_1.search(this.timeSignatures, ticks);
var index = (0, BinarySearch_1.search)(this.timeSignatures, ticks);
if (index !== -1) {

@@ -179,3 +184,3 @@ var timeSigEvent = this.timeSignatures[index];

/**
* The number of ticks per quarter note
* The number of ticks per quarter note.
*/

@@ -185,11 +190,11 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true
});
/**
* Convert seconds to ticks based on the tempo events
* Convert seconds to ticks based on the tempo events.
*/
Header.prototype.secondsToTicks = function (seconds) {
// find the relevant position
var index = BinarySearch_1.search(this.tempos, seconds, "time");
// Find the relevant position.
var index = (0, BinarySearch_1.search)(this.tempos, seconds, "time");
if (index !== -1) {

@@ -203,3 +208,3 @@ var tempo = this.tempos[index];

else {
// assume 120
// Assume 120.
var beats = seconds / (60 / 120);

@@ -228,7 +233,7 @@ return Math.round(beats * this.ppq);

/**
* parse a header json object.
* Parse a header json object.
*/
Header.prototype.fromJSON = function (json) {
this.name = json.name;
// clone all the attributes
// Clone all the attributes.
this.tempos = json.tempos.map(function (t) { return Object.assign({}, t); });

@@ -248,3 +253,3 @@ this.timeSignatures = json.timeSignatures.map(function (t) {

* any other tempos currently set and update all of the event timing.
* @param bpm The tempo in beats per second
* @param bpm The tempo in beats per second.
*/

@@ -251,0 +256,0 @@ Header.prototype.setTempo = function (bpm) {

@@ -1,1 +0,1 @@

{"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/Header.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../src/Header.ts"],"names":[],"mappings":";;;AACA,+CAAwC;AAExC,IAAM,aAAa,GAAG,IAAI,OAAO,EAAkB,CAAC;AA0BpD;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC/B,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;CACJ,CAAC;AAEF;;GAEG;AACH;IA0BC,gBAAY,QAAmB;QAA/B,iBA4DC;QArFD;;WAEG;QACH,WAAM,GAAiB,EAAE,CAAC;QAE1B;;WAEG;QACH,mBAAc,GAAyB,EAAE,CAAC;QAE1C;;WAEG;QACH,kBAAa,GAAwB,EAAE,CAAC;QAExC;;WAEG;QACH,SAAI,GAAgB,EAAE,CAAC;QAEvB;;WAEG;QACH,SAAI,GAAG,EAAE,CAAC;QAGT,iDAAiD;QACjD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE7B,IAAI,QAAQ,EAAE;YACb,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAEtD,gEAAgE;YAChE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,KAAK;gBAC5B,KAAK,CAAC,OAAO,CAAC,UAAC,KAA4D;oBAC1E,IAAI,KAAK,CAAC,IAAI,EAAE;wBACf,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;4BACnC,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gCACxB,KAAK,EAAE,KAAK,CAAC,YAAY;gCACzB,aAAa,EAAE;oCACd,KAAK,CAAC,SAAS;oCACf,KAAK,CAAC,WAAW;iCACjB;6BACD,CAAC,CAAC;yBACH;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;4BACrC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gCAChB,GAAG,EAAE,QAAQ,GAAG,KAAK,CAAC,mBAAmB;gCACzC,KAAK,EAAE,KAAK,CAAC,YAAY;6BACzB,CAAC,CAAC;yBACH;6BAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;4BACzC,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gCACvB,GAAG,EAAE,wBAAgB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gCACpC,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;gCAC5C,KAAK,EAAE,KAAK,CAAC,YAAY;6BACzB,CAAC,CAAC;yBACH;qBACD;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,iDAAiD;YACjD,IAAI,wBAAsB,GAAG,CAAC,CAAC,CAAC,2BAA2B;YAC3D,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,KAAsC;gBACjE,wBAAsB,IAAI,KAAK,CAAC,SAAS,CAAC;gBAE1C,IAAI,KAAK,CAAC,IAAI,EAAE;oBACf,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;wBAC/B,KAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;qBACvB;yBAAM,IACN,KAAK,CAAC,IAAI,KAAK,MAAM;wBACrB,KAAK,CAAC,IAAI,KAAK,UAAU;wBACzB,KAAK,CAAC,IAAI,KAAK,QAAQ;wBACvB,KAAK,CAAC,IAAI,KAAK,QAAQ,EACtB;wBACD,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,KAAK,EAAE,wBAAsB;4BAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;yBAChB,CAAC,CAAC;qBACH;iBACD;YACF,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,EAAE,CAAC;SACd;IACF,CAAC;IAED;;;OAGG;IACH,uBAAM,GAAN;QAAA,iBAiCC;QAhCA,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,yBAAyB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAjB,CAAiB,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK;YAChC,IAAM,OAAO,GACZ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC7D,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAI,CAAC,GAAG,GAAG,cAAc,CAAC;YACtD,IAAM,cAAc,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC;YAE9C,KAAK,CAAC,IAAI,GAAG,cAAc,GAAG,WAAW,CAAC;YAC1C,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;YACzB,cAAc,IAAI,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAjB,CAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK;YACxC,IAAM,SAAS,GACd,KAAK,GAAG,CAAC;gBACR,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;gBAChC,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAE3B,IAAM,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAI,CAAC,GAAG,CAAC;YAChE,IAAM,eAAe,GACpB,YAAY;gBACZ,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1B,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAElC,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC;YAC7C,KAAK,CAAC,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC;QACvD,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,+BAAc,GAAd,UAAe,KAAa;QAC3B,8BAA8B;QAC9B,IAAM,KAAK,GAAG,IAAA,qBAAM,EAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEzC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAEtD,OAAO,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;SACnD;aAAM;YACN,cAAc;YACd,IAAM,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YAC/B,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;SAC1B;IACF,CAAC;IAED;;OAEG;IACH,gCAAe,GAAf,UAAgB,KAAa;QAC5B,IAAM,KAAK,GAAG,IAAA,qBAAM,EAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAEjD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,IAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAChD,IAAM,YAAY,GAAG,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YAE7D,OAAO,CACN,YAAY,CAAC,QAAQ;gBACrB,YAAY;oBACX,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;wBAC7B,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBAC/B,CAAC,CACF,CAAC;SACF;aAAM;YACN,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;SAC5B;IACF,CAAC;IAKD,sBAAI,uBAAG;QAHP;;WAEG;aACH;YACC,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;;;OAAA;IAED;;OAEG;IACH,+BAAc,GAAd,UAAe,OAAe;QAC7B,8BAA8B;QAC9B,IAAM,KAAK,GAAG,IAAA,qBAAM,EAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEnD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;YACxC,IAAM,YAAY,GAAG,WAAW,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAEpD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACzD;aAAM;YACN,cAAc;YACd,IAAM,KAAK,GAAG,OAAO,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACpC;IACF,CAAC;IAED;;OAEG;IACH,uBAAM,GAAN;QACC,OAAO;YACN,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,CAAC;gBACzB,OAAO;oBACN,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,KAAK,EAAE,CAAC,CAAC,KAAK;iBACd,CAAC;YACH,CAAC,CAAC;YACF,cAAc,EAAE,IAAI,CAAC,cAAc;SACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,yBAAQ,GAAR,UAAS,IAAgB;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEtB,4BAA4B;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAApB,CAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,CAAC;YAC/C,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAApB,CAAoB,CACpB,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAC,CAAC;YAC7C,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAApB,CAAoB,CACpB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAApB,CAAoB,CAAC,CAAC;QAEvD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,yBAAQ,GAAR,UAAS,GAAW;QACnB,IAAI,CAAC,MAAM,GAAG;YACb;gBACC,GAAG,KAAA;gBACH,KAAK,EAAE,CAAC;aACR;SACD,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;IACF,aAAC;AAAD,CAAC,AA1PD,IA0PC;AA1PY,wBAAM"}

@@ -1,9 +0,9 @@

import { MidiTrackData } from "midi-file";
import type { MidiEvent } from "midi-file";
import { Track } from "./Track";
/**
* Describes the midi instrument of a track
* Describes the MIDI instrument of a track.
*/
export declare class Instrument {
/**
* The instrument number
* The instrument number. Defaults to 0.
*/

@@ -15,5 +15,5 @@ number: number;

*/
constructor(trackData: MidiTrackData, track: Track);
constructor(trackData: MidiEvent[], track: Track);
/**
* The common name of the instrument
* The common name of the instrument.
*/

@@ -27,11 +27,11 @@ get name(): string;

/**
* If the instrument is a percussion instrument
* If the instrument is a percussion instrument.
*/
get percussion(): boolean;
/**
* Convert it to JSON form
* Convert it to JSON form.
*/
toJSON(): InstrumentJSON;
/**
* Convert from JSON form
* Convert from JSON form.
*/

@@ -41,5 +41,5 @@ fromJSON(json: InstrumentJSON): void;

export interface InstrumentJSON {
family: string;
number: number;
name: string;
family: string;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Instrument = void 0;
var InstrumentMaps_1 = require("./InstrumentMaps");

@@ -9,3 +10,3 @@ /**

/**
* Describes the midi instrument of a track
* Describes the MIDI instrument of a track.
*/

@@ -19,3 +20,3 @@ var Instrument = /** @class */ (function () {

/**
* The instrument number
* The instrument number. Defaults to 0.
*/

@@ -27,2 +28,3 @@ this.number = 0;

var programChange = trackData.find(function (e) { return e.type === "programChange"; });
// Set 'number' from 'programNumber' if exists.
if (programChange) {

@@ -35,3 +37,3 @@ this.number = programChange.programNumber;

/**
* The common name of the instrument
* The common name of the instrument.
*/

@@ -52,3 +54,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -68,3 +70,3 @@ });

},
enumerable: true,
enumerable: false,
configurable: true

@@ -74,3 +76,3 @@ });

/**
* If the instrument is a percussion instrument
* If the instrument is a percussion instrument.
*/

@@ -81,7 +83,7 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true
});
/**
* Convert it to JSON form
* Convert it to JSON form.
*/

@@ -91,8 +93,8 @@ Instrument.prototype.toJSON = function () {

family: this.family,
name: this.name,
number: this.number,
name: this.name
};
};
/**
* Convert from JSON form
* Convert from JSON form.
*/

@@ -99,0 +101,0 @@ Instrument.prototype.fromJSON = function (json) {

@@ -1,1 +0,1 @@

{"version":3,"file":"Instrument.js","sourceRoot":"","sources":["../src/Instrument.ts"],"names":[],"mappings":";;AACA,mDAA+F;AAG/F;;GAEG;AACH,IAAM,eAAe,GAAG,IAAI,OAAO,EAAqB,CAAC;AAEzD;;GAEG;AACH;IAOC;;;OAGG;IACH,oBAAY,SAAwB,EAAE,KAAY;QATlD;;WAEG;QACH,WAAM,GAAG,CAAC,CAAC;QAQV,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,SAAS,EAAE;YACd,IAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,KAAK,eAAe,EAA1B,CAA0B,CAAwB,CAAC;YAC7F,IAAI,aAAa,EAAE;gBAClB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC;aAC1C;SACD;IACF,CAAC;IAKD,sBAAI,4BAAI;QAHR;;WAEG;aACH;YACC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,iCAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrC;iBAAM;gBACN,OAAO,oCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxC;QACF,CAAC;aAED,UAAS,CAAS;YACjB,IAAM,WAAW,GAAG,oCAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;aAC1B;QACF,CAAC;;;OAPA;IAYD,sBAAI,8BAAM;QAHV;;WAEG;aACH;YACC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,OAAO,CAAC;aACf;iBAAM;gBACN,OAAO,qCAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;aACzD;QACF,CAAC;;;OAAA;IAKD,sBAAI,kCAAU;QAHd;;WAEG;aACH;YACC,IAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAED;;OAEG;IACH,2BAAM,GAAN;QACC,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,6BAAQ,GAAR,UAAS,IAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,CAAC;IACF,iBAAC;AAAD,CAAC,AA7ED,IA6EC;AA7EY,gCAAU"}
{"version":3,"file":"Instrument.js","sourceRoot":"","sources":["../src/Instrument.ts"],"names":[],"mappings":";;;AAKA,mDAA+F;AAG/F;;GAEG;AACH,IAAM,eAAe,GAAG,IAAI,OAAO,EAAqB,CAAC;AAEzD;;GAEG;AACH;IAOC;;;OAGG;IACH,oBAAY,SAAsB,EAAE,KAAY;QAThD;;WAEG;QACH,WAAM,GAAG,CAAC,CAAC;QAOV,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhB,IAAI,SAAS,EAAE;YACd,IAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CACnC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,KAAK,eAAe,EAA1B,CAA0B,CACL,CAAC;YAE5B,+CAA+C;YAC/C,IAAI,aAAa,EAAE;gBAClB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC;aAC1C;SACD;IACF,CAAC;IAKD,sBAAI,4BAAI;QAHR;;WAEG;aACH;YACC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,iCAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrC;iBAAM;gBACN,OAAO,oCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxC;QACF,CAAC;aAED,UAAS,CAAS;YACjB,IAAM,WAAW,GAAG,oCAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;aAC1B;QACF,CAAC;;;OAPA;IAYD,sBAAI,8BAAM;QAHV;;WAEG;aACH;YACC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,OAAO,CAAC;aACf;iBAAM;gBACN,OAAO,qCAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;aACzD;QACF,CAAC;;;OAAA;IAKD,sBAAI,kCAAU;QAHd;;WAEG;aACH;YACC,IAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAED;;OAEG;IACH,2BAAM,GAAN;QACC,OAAO;YACN,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,6BAAQ,GAAR,UAAS,IAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,CAAC;IACF,iBAAC;AAAD,CAAC,AAjFD,IAiFC;AAjFY,gCAAU"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DrumKitByPatchID = exports.InstrumentFamilyByID = exports.instrumentByPatchID = void 0;
exports.instrumentByPatchID = [

@@ -4,0 +5,0 @@ "acoustic grand piano",

@@ -1,1 +0,1 @@

{"version":3,"file":"InstrumentMaps.js","sourceRoot":"","sources":["../src/InstrumentMaps.ts"],"names":[],"mappings":";;AAAa,QAAA,mBAAmB,GAAG;IAClC,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,aAAa;IACb,OAAO;IACP,SAAS;IACT,cAAc;IACd,WAAW;IACX,YAAY;IACZ,SAAS;IACT,WAAW;IACX,eAAe;IACf,UAAU;IACV,eAAe;IACf,kBAAkB;IAClB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,wBAAwB;IACxB,sBAAsB;IACtB,eAAe;IACf,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,QAAQ;IACR,OAAO;IACP,OAAO;IACP,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,SAAS;IACT,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,eAAe;IACf,SAAS;IACT,UAAU;IACV,MAAM;IACN,eAAe;IACf,aAAa;IACb,eAAe;IACf,cAAc;IACd,cAAc;IACd,aAAa;IACb,UAAU;IACV,WAAW;IACX,cAAc;IACd,MAAM;IACN,cAAc;IACd,SAAS;IACT,UAAU;IACV,SAAS;IACT,OAAO;IACP,UAAU;IACV,WAAW;IACX,cAAc;IACd,YAAY;IACZ,SAAS;IACT,SAAS;IACT,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;IACtB,iBAAiB;IACjB,cAAc;IACd,mBAAmB;IACnB,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,SAAS;IACT,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,OAAO;IACP,aAAa;IACb,WAAW;IACX,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;IACd,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,SAAS;CACT,CAAC;AAEW,QAAA,oBAAoB,GAAG;IACnC,OAAO;IACP,sBAAsB;IACtB,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,UAAU;IACV,OAAO;IACP,MAAM;IACN,MAAM;IACN,YAAY;IACZ,WAAW;IACX,eAAe;IACf,OAAO;IACP,YAAY;IACZ,eAAe;CACf,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC/B,CAAC,EAAE,cAAc;IACjB,CAAC,EAAE,UAAU;IACb,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,cAAc;CAClB,CAAC"}
{"version":3,"file":"InstrumentMaps.js","sourceRoot":"","sources":["../src/InstrumentMaps.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG;IAClC,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,aAAa;IACb,OAAO;IACP,SAAS;IACT,cAAc;IACd,WAAW;IACX,YAAY;IACZ,SAAS;IACT,WAAW;IACX,eAAe;IACf,UAAU;IACV,eAAe;IACf,kBAAkB;IAClB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,yBAAyB;IACzB,yBAAyB;IACzB,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,wBAAwB;IACxB,sBAAsB;IACtB,eAAe;IACf,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,QAAQ;IACR,OAAO;IACP,OAAO;IACP,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,SAAS;IACT,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,eAAe;IACf,SAAS;IACT,UAAU;IACV,MAAM;IACN,eAAe;IACf,aAAa;IACb,eAAe;IACf,cAAc;IACd,cAAc;IACd,aAAa;IACb,UAAU;IACV,WAAW;IACX,cAAc;IACd,MAAM;IACN,cAAc;IACd,SAAS;IACT,UAAU;IACV,SAAS;IACT,OAAO;IACP,UAAU;IACV,WAAW;IACX,cAAc;IACd,YAAY;IACZ,SAAS;IACT,SAAS;IACT,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;IACtB,iBAAiB;IACjB,cAAc;IACd,mBAAmB;IACnB,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,aAAa;IACb,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,SAAS;IACT,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,OAAO;IACP,aAAa;IACb,WAAW;IACX,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,mBAAmB;IACnB,cAAc;IACd,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,YAAY;IACZ,UAAU;IACV,SAAS;CACT,CAAC;AAEW,QAAA,oBAAoB,GAAG;IACnC,OAAO;IACP,sBAAsB;IACtB,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,UAAU;IACV,OAAO;IACP,MAAM;IACN,MAAM;IACN,YAAY;IACZ,WAAW;IACX,eAAe;IACf,OAAO;IACP,YAAY;IACZ,eAAe;CACf,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC/B,CAAC,EAAE,cAAc;IACjB,CAAC,EAAE,UAAU;IACb,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,cAAc;CAClB,CAAC"}
import { Header, HeaderJSON } from "./Header";
import { Track, TrackJSON } from "./Track";
/**
* The main midi parsing class
* The main midi parsing class.
*/

@@ -9,4 +9,4 @@ export declare class Midi {

* Download and parse the MIDI file. Returns a promise
* which resolves to the generated midi file
* @param url The url to fetch
* which resolves to the generated MIDI file.
* @param url The URL to fetch.
*/

@@ -27,3 +27,3 @@ static fromUrl(url: string): Promise<Midi>;

/**
* The name of the midi file, taken from the first track
* The name of the midi file, taken from the first track.
*/

@@ -33,19 +33,19 @@ get name(): string;

/**
* The total length of the file in seconds
* The total length of the file in seconds.
*/
get duration(): number;
/**
* The total length of the file in ticks
* The total length of the file in ticks.
*/
get durationTicks(): number;
/**
* Add a track to the midi file
* Add a track to the MIDI file.
*/
addTrack(): Track;
/**
* Encode the midi as a Uint8Array.
* Encode the MIDI as a Uint8Array.
*/
toArray(): Uint8Array;
/**
* Convert the midi object to JSON.
* Convert the MIDI object to JSON.
*/

@@ -59,3 +59,3 @@ toJSON(): MidiJSON;

/**
* Clone the entire object midi object
* Clone the entire object MIDI object.
*/

@@ -65,3 +65,3 @@ clone(): Midi;

/**
* The MIDI data in JSON format
* The MIDI data in JSON format.
*/

@@ -68,0 +68,0 @@ export interface MidiJSON {

@@ -39,8 +39,9 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.Header = exports.Track = exports.Midi = void 0;
var midi_file_1 = require("midi-file");
var Encode_1 = require("./Encode");
var Header_1 = require("./Header");
var Track_1 = require("./Track");
var Encode_1 = require("./Encode");
/**
* The main midi parsing class
* The main midi parsing class.
*/

@@ -53,10 +54,13 @@ var Midi = /** @class */ (function () {

var _this = this;
// parse the midi data if there is any
// Parse the MIDI data if there is any.
var midiData = null;
if (midiArray) {
if (midiArray instanceof ArrayBuffer) {
midiArray = new Uint8Array(midiArray);
}
midiData = midi_file_1.parseMidi(midiArray);
// add the absolute times to each of the tracks
// Transform midiArray to ArrayLike<number>
// only if it's an ArrayBuffer.
var midiArrayLike = midiArray instanceof ArrayBuffer
? new Uint8Array(midiArray)
: midiArray;
// Parse MIDI data.
midiData = (0, midi_file_1.parseMidi)(midiArrayLike);
// Add the absolute times to each of the tracks.
midiData.tracks.forEach(function (track) {

@@ -69,3 +73,3 @@ var currentTicks = 0;

});
// ensure at most one instrument per track
// Ensure at most one instrument per track.
midiData.tracks = splitTracks(midiData.tracks);

@@ -75,7 +79,7 @@ }

this.tracks = [];
// parse the midi data
// Parse MIDI data.
if (midiArray) {
// format 0, everything is on the same track
// Format 0, everything is on the same track.
this.tracks = midiData.tracks.map(function (trackData) { return new Track_1.Track(trackData, _this.header); });
// if it's format 1 and there are no notes on the first track, remove it
// If it's format 1 and there are no notes on the first track, remove it.
if (midiData.header.format === 1 && this.tracks[0].duration === 0) {

@@ -88,4 +92,4 @@ this.tracks.shift();

* Download and parse the MIDI file. Returns a promise
* which resolves to the generated midi file
* @param url The url to fetch
* which resolves to the generated MIDI file.
* @param url The URL to fetch.
*/

@@ -105,3 +109,3 @@ Midi.fromUrl = function (url) {

return [2 /*return*/, new Midi(arrayBuffer)];
case 3: throw new Error("could not load " + url);
case 3: throw new Error("Could not load '".concat(url, "'"));
}

@@ -113,3 +117,3 @@ });

/**
* The name of the midi file, taken from the first track
* The name of the midi file, taken from the first track.
*/

@@ -122,3 +126,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -128,10 +132,10 @@ });

/**
* The total length of the file in seconds
* The total length of the file in seconds.
*/
get: function () {
// get the max of the last note of all the tracks
// Get the max of the last note of all the tracks.
var durations = this.tracks.map(function (t) { return t.duration; });
return Math.max.apply(Math, durations);
},
enumerable: true,
enumerable: false,
configurable: true

@@ -141,14 +145,14 @@ });

/**
* The total length of the file in ticks
* The total length of the file in ticks.
*/
get: function () {
// get the max of the last note of all the tracks
// Get the max of the last note of all the tracks.
var durationTicks = this.tracks.map(function (t) { return t.durationTicks; });
return Math.max.apply(Math, durationTicks);
},
enumerable: true,
enumerable: false,
configurable: true
});
/**
* Add a track to the midi file
* Add a track to the MIDI file.
*/

@@ -161,9 +165,9 @@ Midi.prototype.addTrack = function () {

/**
* Encode the midi as a Uint8Array.
* Encode the MIDI as a Uint8Array.
*/
Midi.prototype.toArray = function () {
return Encode_1.encode(this);
return (0, Encode_1.encode)(this);
};
/**
* Convert the midi object to JSON.
* Convert the MIDI object to JSON.
*/

@@ -191,3 +195,3 @@ Midi.prototype.toJSON = function () {

/**
* Clone the entire object midi object
* Clone the entire object MIDI object.
*/

@@ -203,5 +207,5 @@ Midi.prototype.clone = function () {

var Track_2 = require("./Track");
exports.Track = Track_2.Track;
Object.defineProperty(exports, "Track", { enumerable: true, get: function () { return Track_2.Track; } });
var Header_2 = require("./Header");
exports.Header = Header_2.Header;
Object.defineProperty(exports, "Header", { enumerable: true, get: function () { return Header_2.Header; } });
/**

@@ -232,3 +236,3 @@ * Given a list of MIDI tracks, make sure that each channel corresponds to at

var program = currentProgram[channel];
var trackKey = program + " " + channel;
var trackKey = "".concat(program, " ").concat(channel);
if (trackMap.has(trackKey)) {

@@ -235,0 +239,0 @@ targetTrack = trackMap.get(trackKey);

@@ -1,1 +0,1 @@

{"version":3,"file":"Midi.js","sourceRoot":"","sources":["../src/Midi.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Midi.js","sourceRoot":"","sources":["../src/Midi.ts"],"names":[],"mappings":"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"}
import { Header } from "./Header";
/**
* A Note consists of a noteOn and noteOff event
* A Note consists of a `noteOn` and `noteOff` event.
*/
export declare class Note implements NoteInterface {
/**
* The notes midi value
* The notes MIDI value.
*/
midi: number;
/**
* The normalized velocity (0-1)
* The normalized velocity (0-1).
*/
velocity: number;
/**
* The velocity of the note off
* The velocity of the note off.
*/
noteOffVelocity: number;
/**
* The start time in ticks
* The start time in ticks.
*/
ticks: number;
/**
* The duration in ticks
* The duration in ticks.
*/

@@ -28,3 +28,3 @@ durationTicks: number;

/**
* The note name and octave in scientific pitch notation, e.g. "C4"
* The note name and octave in scientific pitch notation, e.g. "C4".
*/

@@ -34,3 +34,3 @@ get name(): string;

/**
* The notes octave number
* The notes octave number.
*/

@@ -40,3 +40,3 @@ get octave(): number;

/**
* The pitch class name. e.g. "A"
* The pitch class name. e.g. "A".
*/

@@ -46,3 +46,3 @@ get pitch(): string;

/**
* The duration of the segment in seconds
* The duration of the segment in seconds.
*/

@@ -52,3 +52,3 @@ get duration(): number;

/**
* The time of the event in seconds
* The time of the event in seconds.
*/

@@ -59,3 +59,3 @@ get time(): number;

* The number of measures (and partial measures) to this beat.
* Takes into account time signature changes
* Takes into account time signature changes.
* @readonly

@@ -62,0 +62,0 @@ */

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Note = void 0;
/**
* Convert a midi note into a pitch
* Convert a MIDI note into a pitch.
*/

@@ -11,3 +12,3 @@ function midiToPitch(midi) {

/**
* Convert a midi note to a pitch class (just the pitch no octave)
* Convert a MIDI note to a pitch class (just the pitch no octave).
*/

@@ -20,3 +21,3 @@ function midiToPitchClass(midi) {

/**
* Convert a pitch class to a MIDI note
* Convert a pitch class to a MIDI note.
*/

@@ -28,3 +29,3 @@ function pitchClassToMidi(pitch) {

/**
* Convert a pitch to a midi number
* Convert a pitch to a MIDI number.
*/

@@ -54,3 +55,3 @@ // tslint:disable-next-line: only-arrow-functions typedef

/**
* A Note consists of a noteOn and noteOff event
* A Note consists of a `noteOn` and `noteOff` event.
*/

@@ -68,3 +69,3 @@ var Note = /** @class */ (function () {

/**
* The note name and octave in scientific pitch notation, e.g. "C4"
* The note name and octave in scientific pitch notation, e.g. "C4".
*/

@@ -77,3 +78,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -83,3 +84,3 @@ });

/**
* The notes octave number
* The notes octave number.
*/

@@ -93,3 +94,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -99,3 +100,3 @@ });

/**
* The pitch class name. e.g. "A"
* The pitch class name. e.g. "A".
*/

@@ -108,3 +109,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -114,3 +115,3 @@ });

/**
* The duration of the segment in seconds
* The duration of the segment in seconds.
*/

@@ -126,3 +127,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -132,3 +133,3 @@ });

/**
* The time of the event in seconds
* The time of the event in seconds.
*/

@@ -143,3 +144,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -150,3 +151,3 @@ });

* The number of measures (and partial measures) to this beat.
* Takes into account time signature changes
* Takes into account time signature changes.
* @readonly

@@ -158,3 +159,3 @@ */

},
enumerable: true,
enumerable: false,
configurable: true

@@ -161,0 +162,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"Note.js","sourceRoot":"","sources":["../src/Note.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Note.js","sourceRoot":"","sources":["../src/Note.ts"],"names":[],"mappings":"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"}
import { Header } from "./Header";
import { MidiPitchBendEvent } from "midi-file";
/**
* Represents a pitch bend event
* Represents a pitch bend event.
*/

@@ -12,3 +12,3 @@ export declare class PitchBend implements PitchBendInterface {

/**
* The tick time of the event
* The tick time of the event.
*/

@@ -20,3 +20,5 @@ ticks: number;

*/
constructor(event: Partial<MidiPitchBendEvent>, header: Header);
constructor(event: Partial<MidiPitchBendEvent & {
absoluteTime: number;
}>, header: Header);
/**

@@ -23,0 +25,0 @@ * The time of the event in seconds

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PitchBend = void 0;
var privateHeaderMap = new WeakMap();
/**
* Represents a pitch bend event
* Represents a pitch bend event.
*/

@@ -29,3 +30,3 @@ var PitchBend = /** @class */ (function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -32,0 +33,0 @@ });

@@ -1,1 +0,1 @@

{"version":3,"file":"PitchBend.js","sourceRoot":"","sources":["../src/PitchBend.ts"],"names":[],"mappings":";;AAGA,IAAM,gBAAgB,GAAG,IAAI,OAAO,EAAqB,CAAC;AAE1D;;GAEG;AACH;IAYC;;;OAGG;IACH,mBAAY,KAAkC,EAAE,MAAc;QAC7D,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAKD,sBAAI,2BAAI;QAHR;;WAEG;aACH;YACC,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAED,UAAS,CAAS;YACjB,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;;;OALA;IAOD,0BAAM,GAAN;QACC,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;IACH,CAAC;IACF,gBAAC;AAAD,CAAC,AA3CD,IA2CC;AA3CY,8BAAS"}
{"version":3,"file":"PitchBend.js","sourceRoot":"","sources":["../src/PitchBend.ts"],"names":[],"mappings":";;;AAGA,IAAM,gBAAgB,GAAG,IAAI,OAAO,EAAqB,CAAC;AAE1D;;GAEG;AACH;IAYC;;;OAGG;IACH,mBAAY,KAA8D,EAAE,MAAc;QACzF,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAKD,sBAAI,2BAAI;QAHR;;WAEG;aACH;YACC,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAED,UAAS,CAAS;YACjB,IAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;;;OALA;IAOD,0BAAM,GAAN;QACC,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC;IACH,CAAC;IACF,gBAAC;AAAD,CAAC,AA3CD,IA2CC;AA3CY,8BAAS"}

@@ -1,2 +0,2 @@

import { MidiTrackData } from "midi-file";
import type { MidiEvent } from "midi-file";
import { ControlChangeInterface } from "./ControlChange";

@@ -9,15 +9,15 @@ import { ControlChangesJSON } from "./ControlChanges";

/**
* A Track is a collection of notes and controlChanges
* A Track is a collection of 'notes' and 'controlChanges'.
*/
export declare class Track {
/**
* The name of the track
* The name of the track.
*/
name: string;
/**
* The instrument associated with the track
* The instrument associated with the track.
*/
instrument: Instrument;
/**
* The track's note events
* The track's note events.
*/

@@ -27,25 +27,25 @@ notes: Note[];

* The channel number of the track. Applies this channel
* to all events associated with the channel
* to all events associated with the channel.
*/
channel: number;
/**
* The control change events
* The control change events.
*/
controlChanges: import("./ControlChanges").ControlChanges;
/**
* The end of track event (if it exists) in ticks
* The end of track event (if it exists) in ticks.
*/
endOfTrackTicks?: number;
/**
* The pitch bend events
* The pitch bend events.
*/
pitchBends: PitchBend[];
constructor(trackData: MidiTrackData, header: Header);
constructor(trackData: MidiEvent[], header: Header);
/**
* Add a note to the notes array
* @param props The note properties to add
* Add a note to the notes array.
* @param props The note properties to add.
*/
addNote(props: NoteConstructorInterface): this;
/**
* Add a control change to the track
* Add a control change to the track.
* @param props

@@ -55,19 +55,19 @@ */

/**
* Add a control change to the track
* Add a control change to the track.
*/
addPitchBend(props: Omit<PitchBendInterface, "ticks"> | Omit<PitchBendInterface, "time">): this;
/**
* The end time of the last event in the track
* The end time of the last event in the track.
*/
get duration(): number;
/**
* The end time of the last event in the track in ticks
* The end time of the last event in the track in ticks.
*/
get durationTicks(): number;
/**
* Assign the json values to this track
* Assign the JSON values to this track.
*/
fromJSON(json: TrackJSON): void;
/**
* Convert the track into a JSON format
* Convert the track into a JSON format.
*/

@@ -74,0 +74,0 @@ toJSON(): TrackJSON;

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Track = void 0;
var BinarySearch_1 = require("./BinarySearch");

@@ -11,3 +12,3 @@ var ControlChange_1 = require("./ControlChange");

/**
* A Track is a collection of notes and controlChanges
* A Track is a collection of 'notes' and 'controlChanges'.
*/

@@ -18,15 +19,15 @@ var Track = /** @class */ (function () {

/**
* The name of the track
* The name of the track.
*/
this.name = "";
/**
* The track's note events
* The track's note events.
*/
this.notes = [];
/**
* The control change events
* The control change events.
*/
this.controlChanges = ControlChanges_1.createControlChanges();
this.controlChanges = (0, ControlChanges_1.createControlChanges)();
/**
* The pitch bend events
* The pitch bend events.
*/

@@ -36,7 +37,9 @@ this.pitchBends = [];

if (trackData) {
// Get the name of the track.
var nameEvent = trackData.find(function (e) { return e.type === "trackName"; });
// Set empty name if 'trackName' event isn't found.
this.name = nameEvent ? nameEvent.text : "";
}
this.instrument = new Instrument_1.Instrument(trackData, this);
// defaults to 0
// Defaults to 0.
this.channel = 0;

@@ -48,5 +51,5 @@ if (trackData) {

var currentNote = noteOns.shift();
// set the channel based on the note
// Set the channel based on the note.
this_1.channel = currentNote.channel;
// find the corresponding note off
// Find the corresponding note off.
var offIndex = noteOffs.findIndex(function (note) {

@@ -57,3 +60,3 @@ return note.noteNumber === currentNote.noteNumber &&

if (offIndex !== -1) {
// once it's got the note off, add it
// Once it's got the note off, add it.
var noteOff = noteOffs.splice(offIndex, 1)[0];

@@ -85,3 +88,3 @@ this_1.addNote({

ticks: event.absoluteTime,
// scale the value between -2^13 to 2^13 to -2 to 2
// Scale the value between -2^13 to 2^13 to -2 to 2.
value: event.value / Math.pow(2, 13),

@@ -100,4 +103,4 @@ });

/**
* Add a note to the notes array
* @param props The note properties to add
* Add a note to the notes array.
* @param props The note properties to add.
*/

@@ -115,7 +118,7 @@ Track.prototype.addNote = function (props) {

Object.assign(note, props);
BinarySearch_1.insert(this.notes, note, "ticks");
(0, BinarySearch_1.insert)(this.notes, note, "ticks");
return this;
};
/**
* Add a control change to the track
* Add a control change to the track.
* @param props

@@ -133,7 +136,7 @@ */

}
BinarySearch_1.insert(this.controlChanges[cc.number], cc, "ticks");
(0, BinarySearch_1.insert)(this.controlChanges[cc.number], cc, "ticks");
return this;
};
/**
* Add a control change to the track
* Add a control change to the track.
*/

@@ -144,3 +147,3 @@ Track.prototype.addPitchBend = function (props) {

Object.assign(pb, props);
BinarySearch_1.insert(this.pitchBends, pb, "ticks");
(0, BinarySearch_1.insert)(this.pitchBends, pb, "ticks");
return this;

@@ -150,3 +153,3 @@ };

/**
* The end time of the last event in the track
* The end time of the last event in the track.
*/

@@ -167,3 +170,3 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true

@@ -173,3 +176,3 @@ });

/**
* The end time of the last event in the track in ticks
* The end time of the last event in the track in ticks.
*/

@@ -190,7 +193,7 @@ get: function () {

},
enumerable: true,
enumerable: false,
configurable: true
});
/**
* Assign the json values to this track
* Assign the JSON values to this track.
*/

@@ -227,6 +230,6 @@ Track.prototype.fromJSON = function (json) {

/**
* Convert the track into a JSON format
* Convert the track into a JSON format.
*/
Track.prototype.toJSON = function () {
// convert all the CCs to JSON
// Convert all the CCs to JSON.
var controlChanges = {};

@@ -233,0 +236,0 @@ for (var i = 0; i < 127; i++) {

@@ -1,1 +0,1 @@

{"version":3,"file":"Track.js","sourceRoot":"","sources":["../src/Track.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../src/Track.ts"],"names":[],"mappings":"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"}
{
"name": "@tonejs/midi",
"version": "2.0.27",
"version": "2.0.28",
"description": "Convert binary midi into JSON",

@@ -10,3 +10,3 @@ "main": "build/Midi.js",

"scripts": {
"build": "tsc && webpack -p --mode=production",
"build": "tsc && webpack --mode=production",
"codecov": "nyc report --reporter=text-lcov > coverage.lcov && codecov",

@@ -44,25 +44,25 @@ "docs": "typedoc",

"@types/mocha": "^8.0.1",
"@types/node": "^11.9.3",
"@typescript-eslint/eslint-plugin": "^2.6.0",
"@typescript-eslint/parser": "^2.6.0",
"@types/node": "^14.18.9",
"@typescript-eslint/eslint-plugin": "^5.10.0",
"@typescript-eslint/parser": "^5.10.0",
"chai": "^4.2.0",
"codecov": "^3.2.0",
"eslint": "^6.6.0",
"glob": "^7.1.3",
"http-server": "^0.12.3",
"eslint": "^8.7.0",
"glob": "^7.2.0",
"http-server": "^14.1.0",
"mocha": "^8.1.0",
"node-fetch": "^2.3.0",
"nyc": "^14.1.1",
"node-fetch": "^2.6.7",
"nyc": "^15.1.0",
"semver": "^5.6.0",
"source-map-support": "^0.5.12",
"ts-loader": "^5.4.5",
"ts-node": "^8.1.0",
"typedoc": "^0.15.0",
"typescript": "^3.7.2",
"webpack": "^4.44.1",
"webpack-cli": "^3.3.12"
"ts-loader": "^9.2.6",
"ts-node": "^10.4.0",
"typedoc": "^0.22.11",
"typescript": "^4.5.4",
"webpack": "^5.66.0",
"webpack-cli": "^4.9.1"
},
"dependencies": {
"array-flatten": "^2.1.2",
"midi-file": "^1.1.2"
"array-flatten": "^3.0.0",
"midi-file": "^1.2.2"
},

@@ -69,0 +69,0 @@ "nyc": {

@@ -5,3 +5,3 @@ /**

*/
export function search(array: any[], value: any, prop= "ticks"): number {
export function search(array: any[], value: any, prop = "ticks"): number {
let beginning = 0;

@@ -8,0 +8,0 @@ const len = array.length;

@@ -0,3 +1,3 @@

import type { MidiControllerEvent } from "midi-file";
import { Header } from "./Header";
import { MidiControllerEvent } from "midi-file";

@@ -7,3 +7,16 @@ /**

*/
export type ControlChangeName = "modulationWheel" | "breath" | "footController" | "portamentoTime" | "volume" | "balance" | "pan" | "sustain" | "portamentoTime" | "sostenuto" | "softPedal" | "legatoFootswitch" | "portamentoControl";
export type ControlChangeName =
| "modulationWheel"
| "breath"
| "footController"
| "portamentoTime"
| "volume"
| "balance"
| "pan"
| "sustain"
| "portamentoTime"
| "sostenuto"
| "softPedal"
| "legatoFootswitch"
| "portamentoControl";

@@ -64,3 +77,3 @@ interface ControlChangeMap {

*/
constructor(event: Partial<MidiControllerEvent>, header: Header) {
constructor(event: Partial<MidiControllerEvent & { absoluteTime: number }>, header: Header) {
privateHeaderMap.set(this, header);

@@ -67,0 +80,0 @@ privateCCNumberMap.set(this, event.controllerType);

@@ -1,14 +0,27 @@

import { MidiPitchBendEvent, writeMidi } from "midi-file";
import { MidiControllerEvent, MidiData, MidiEndOfTrackEvent,
MidiInstrumentEvent, MidiKeySignatureEvent, MidiNoteOffEvent,
MidiNoteOnEvent, MidiTempoEvent, MidiTextEvent, MidiTimeSignatureEvent, MidiTrackNameEvent } from "midi-file";
import { writeMidi } from "midi-file";
import type {
MidiControllerEvent, MidiData, MidiEndOfTrackEvent,
MidiEvent, MidiKeySignatureEvent,
MidiNoteOffEvent, MidiNoteOnEvent, MidiPitchBendEvent,
MidiProgramChangeEvent, MidiSetTempoEvent, MidiTextEvent,
MidiTimeSignatureEvent, MidiTrackNameEvent
} from "midi-file";
import { KeySignatureEvent, keySignatureKeys, MetaEvent, TempoEvent, TimeSignatureEvent } from "./Header";
import { ControlChange } from "./ControlChange";
import { PitchBend } from "./PitchBend";
import { KeySignatureEvent, keySignatureKeys, MetaEvent, TempoEvent, TimeSignatureEvent } from "./Header";
import { Midi } from "./Midi";
import { Note } from "./Note";
import { Track } from "./Track";
import flatten from "array-flatten";
function encodeNote(note: Note, channel: number): [MidiNoteOnEvent, MidiNoteOffEvent] {
import { flatten } from "array-flatten";
/** Used to add `absoluteTime` property. */
type WithAbsoluteTime = { absoluteTime: number };
function encodeNote(note: Note, channel: number): [
(MidiNoteOnEvent & WithAbsoluteTime),
(MidiNoteOffEvent & WithAbsoluteTime)
] {
return [{

@@ -36,3 +49,6 @@ absoluteTime: note.ticks,

function encodeControlChange(cc: ControlChange, channel: number): MidiControllerEvent {
function encodeControlChange(
cc: ControlChange,
channel: number
): (MidiControllerEvent & WithAbsoluteTime) {
return {

@@ -60,3 +76,6 @@ absoluteTime: cc.ticks,

function encodePitchBend(pb: PitchBend, channel: number): MidiPitchBendEvent {
function encodePitchBend(
pb: PitchBend,
channel: number
): (MidiPitchBendEvent & WithAbsoluteTime) {
return {

@@ -79,3 +98,3 @@ absoluteTime: pb.ticks,

function encodeInstrument(track: Track): MidiInstrumentEvent {
function encodeInstrument(track: Track): (MidiProgramChangeEvent & WithAbsoluteTime) {
return {

@@ -90,3 +109,3 @@ absoluteTime: 0,

function encodeTrackName(name: string): MidiTrackNameEvent {
function encodeTrackName(name: string): (MidiTrackNameEvent & WithAbsoluteTime) {
return {

@@ -101,3 +120,3 @@ absoluteTime: 0,

function encodeTempo(tempo: TempoEvent): MidiTempoEvent {
function encodeTempo(tempo: TempoEvent): (MidiSetTempoEvent & WithAbsoluteTime) {
return {

@@ -112,3 +131,3 @@ absoluteTime: tempo.ticks,

function encodeTimeSignature(timeSig: TimeSignatureEvent): MidiTimeSignatureEvent {
function encodeTimeSignature(timeSig: TimeSignatureEvent): (MidiTimeSignatureEvent & WithAbsoluteTime) {
return {

@@ -128,3 +147,3 @@ absoluteTime: timeSig.ticks,

function encodeKeySignature(keySig: KeySignatureEvent): MidiKeySignatureEvent {
function encodeKeySignature(keySig: KeySignatureEvent): (MidiKeySignatureEvent & WithAbsoluteTime) {
const keyIndex = keySignatureKeys.indexOf(keySig.key);

@@ -141,3 +160,5 @@ return {

function encodeText(textEvent: MetaEvent): MidiTextEvent {
function encodeText(
textEvent: (MetaEvent & { ticks: number; })
): (MidiTextEvent & WithAbsoluteTime) {
return {

@@ -149,7 +170,7 @@ absoluteTime: textEvent.ticks,

type: textEvent.type,
} as MidiTextEvent;
} as (MidiTextEvent & WithAbsoluteTime);
}
/**
* Convert the midi object to an array
* Convert the MIDI object to an array.
*/

@@ -165,3 +186,3 @@ export function encode(midi: Midi): Uint8Array {

[
// the name data
// The name data.
{

@@ -179,9 +200,9 @@ absoluteTime: 0,

...midi.header.tempos.map(tempo => encodeTempo(tempo)),
// and the time signature data
// and the time signature data.
...midi.header.timeSignatures.map(timeSig => encodeTimeSignature(timeSig)),
],
// the remaining tracks
...midi.tracks.map(track => {
// The remaining tracks.
...midi.tracks.map((track) => {
return [
// add the name
// Add the name
encodeTrackName(track.name),

@@ -194,3 +215,3 @@ // the instrument

...encodeControlChanges(track),
// and the pitch bends
// and the pitch bends.
...encodePitchBends(track)

@@ -202,5 +223,6 @@ ];

// sort and set deltaTime of all of the tracks
midiData.tracks = midiData.tracks.map(track => {
// Sort and set `deltaTime` of all of the tracks.
midiData.tracks = midiData.tracks.map((track: (MidiEvent & WithAbsoluteTime)[]) => {
track = track.sort((a, b) => a.absoluteTime - b.absoluteTime);
let lastTime = 0;

@@ -212,3 +234,4 @@ track.forEach(note => {

});
// end of track
// End of track.
track.push({

@@ -218,8 +241,8 @@ deltaTime: 0,

type: "endOfTrack",
} as MidiEndOfTrackEvent);
} as (MidiEndOfTrackEvent & WithAbsoluteTime));
return track;
});
// return midiData
// Rreturn `midiData`.
return new Uint8Array(writeMidi(midiData));
}

@@ -1,2 +0,2 @@

import { MidiData } from "midi-file";
import type { MidiData, MidiEvent } from "midi-file";
import { search } from "./BinarySearch";

@@ -51,6 +51,8 @@

/** The parsed midi file header */
/**
* The parsed MIDI file header.
*/
export class Header {
/**
* The array of all the tempo events
* The array of all the tempo events.
*/

@@ -60,3 +62,3 @@ tempos: TempoEvent[] = [];

/**
* The time signatures
* The time signatures.
*/

@@ -66,3 +68,3 @@ timeSignatures: TimeSignatureEvent[] = [];

/**
* The time signatures
* The time signatures.
*/

@@ -72,3 +74,3 @@ keySignatures: KeySignatureEvent[] = [];

/**
* Additional meta events
* Additional meta events.
*/

@@ -78,3 +80,3 @@ meta: MetaEvent[] = [];

/**
* The name of the midi file
* The name of the MIDI file;
*/

@@ -84,4 +86,3 @@ name = "";

constructor(midiData?: MidiData) {
// look through all the tracks for tempo changes
// Look through all the tracks for tempo changes.
privatePPQMap.set(this, 480);

@@ -91,5 +92,6 @@

privatePPQMap.set(this, midiData.header.ticksPerBeat);
// check time signature and tempo events from all of the tracks
midiData.tracks.forEach((track) =>
track.forEach((event) => {
// Check time signature and tempo events from all of the tracks.
midiData.tracks.forEach(track => {
track.forEach((event: MidiEvent & { absoluteTime: number; meta?: boolean; }) => {
if (event.meta) {

@@ -117,6 +119,10 @@ if (event.type === "timeSignature") {

}
})
);
// check the first track for other relevant data
midiData.tracks[0].forEach((event) => {
});
});
// Check the first track for other relevant data.
let firstTrackCurrentTicks = 0; // Used for absolute times.
midiData.tracks[0].forEach((event: MidiEvent & { meta?: boolean; }) => {
firstTrackCurrentTicks += event.deltaTime;
if (event.meta) {

@@ -133,3 +139,3 @@ if (event.type === "trackName") {

text: event.text,
ticks: event.absoluteTime,
ticks: firstTrackCurrentTicks,
type: event.type,

@@ -140,2 +146,3 @@ });

});
this.update();

@@ -152,3 +159,4 @@ }

let lastEventBeats = 0;
// make sure it's sorted
// Make sure it's sorted;
this.tempos.sort((a, b) => a.ticks - b.ticks);

@@ -160,2 +168,3 @@ this.tempos.forEach((event, index) => {

const elapsedSeconds = (60 / lastBPM) * beats;
event.time = elapsedSeconds + currentTime;

@@ -165,2 +174,3 @@ currentTime = event.time;

});
this.timeSignatures.sort((a, b) => a.ticks - b.ticks);

@@ -172,2 +182,3 @@ this.timeSignatures.forEach((event, index) => {

: this.timeSignatures[0];
const elapsedBeats = (event.ticks - lastEvent.ticks) / this.ppq;

@@ -178,2 +189,3 @@ const elapsedMeasures =

(lastEvent.timeSignature[1] / 4);
lastEvent.measures = lastEvent.measures || 0;

@@ -185,7 +197,8 @@ event.measures = elapsedMeasures + lastEvent.measures;

/**
* Convert ticks into seconds based on the tempo changes
* Convert ticks into seconds based on the tempo changes.
*/
ticksToSeconds(ticks: number): number {
// find the relevant position
// Find the relevant position.
const index = search(this.tempos, ticks);
if (index !== -1) {

@@ -195,5 +208,6 @@ const tempo = this.tempos[index];

const elapsedBeats = (ticks - tempo.ticks) / this.ppq;
return tempoTime + (60 / tempo.bpm) * elapsedBeats;
} else {
// assume 120
// Assume 120.
const beats = ticks / this.ppq;

@@ -205,9 +219,11 @@ return (60 / 120) * beats;

/**
* Convert ticks into measures based off of the time signatures
* Convert ticks into measures based off of the time signatures.
*/
ticksToMeasures(ticks: number): number {
const index = search(this.timeSignatures, ticks);
if (index !== -1) {
const timeSigEvent = this.timeSignatures[index];
const elapsedBeats = (ticks - timeSigEvent.ticks) / this.ppq;
return (

@@ -226,3 +242,3 @@ timeSigEvent.measures +

/**
* The number of ticks per quarter note
* The number of ticks per quarter note.
*/

@@ -234,7 +250,8 @@ get ppq(): number {

/**
* Convert seconds to ticks based on the tempo events
* Convert seconds to ticks based on the tempo events.
*/
secondsToTicks(seconds: number): number {
// find the relevant position
// Find the relevant position.
const index = search(this.tempos, seconds, "time");
if (index !== -1) {

@@ -245,5 +262,6 @@ const tempo = this.tempos[index];

const elapsedBeats = elapsedTime / (60 / tempo.bpm);
return Math.round(tempo.ticks + elapsedBeats * this.ppq);
} else {
// assume 120
// Assume 120.
const beats = seconds / (60 / 120);

@@ -274,7 +292,8 @@ return Math.round(beats * this.ppq);

/**
* parse a header json object.
* Parse a header json object.
*/
fromJSON(json: HeaderJSON): void {
this.name = json.name;
// clone all the attributes
// Clone all the attributes.
this.tempos = json.tempos.map((t) => Object.assign({}, t));

@@ -288,2 +307,3 @@ this.timeSignatures = json.timeSignatures.map((t) =>

this.meta = json.meta.map((t) => Object.assign({}, t));
privatePPQMap.set(this, json.ppq);

@@ -296,3 +316,3 @@ this.update();

* any other tempos currently set and update all of the event timing.
* @param bpm The tempo in beats per second
* @param bpm The tempo in beats per second.
*/

@@ -299,0 +319,0 @@ setTempo(bpm: number): void {

@@ -1,2 +0,6 @@

import { MidiInstrumentEvent, MidiTrackData } from "midi-file";
import type {
MidiEvent,
MidiProgramChangeEvent
} from "midi-file";
import { DrumKitByPatchID, instrumentByPatchID, InstrumentFamilyByID } from "./InstrumentMaps";

@@ -11,3 +15,3 @@ import { Track } from "./Track";

/**
* Describes the midi instrument of a track
* Describes the MIDI instrument of a track.
*/

@@ -17,3 +21,3 @@ export class Instrument {

/**
* The instrument number
* The instrument number. Defaults to 0.
*/

@@ -26,8 +30,12 @@ number = 0;

*/
constructor(trackData: MidiTrackData, track: Track) {
constructor(trackData: MidiEvent[], track: Track) {
privateTrackMap.set(this, track);
this.number = 0;
if (trackData) {
const programChange = trackData.find(e => e.type === "programChange") as MidiInstrumentEvent;
const programChange = trackData.find(
e => e.type === "programChange"
) as MidiProgramChangeEvent;
// Set 'number' from 'programNumber' if exists.
if (programChange) {

@@ -40,3 +48,3 @@ this.number = programChange.programNumber;

/**
* The common name of the instrument
* The common name of the instrument.
*/

@@ -70,3 +78,3 @@ get name(): string {

/**
* If the instrument is a percussion instrument
* If the instrument is a percussion instrument.
*/

@@ -79,3 +87,3 @@ get percussion(): boolean {

/**
* Convert it to JSON form
* Convert it to JSON form.
*/

@@ -85,4 +93,4 @@ toJSON(): InstrumentJSON {

family: this.family,
name: this.name,
number: this.number,
name: this.name
};

@@ -92,3 +100,3 @@ }

/**
* Convert from JSON form
* Convert from JSON form.
*/

@@ -101,5 +109,5 @@ fromJSON(json: InstrumentJSON): void {

export interface InstrumentJSON {
family: string;
number: number;
name: string;
family: string;
}

@@ -1,8 +0,14 @@

import { MidiChannelEvent, MidiTrackData, parseMidi } from "midi-file";
import { encode } from "./Encode";
import type {
MidiData,
MidiEvent
} from "midi-file";
import { parseMidi } from "midi-file";
import { Header, HeaderJSON } from "./Header";
import { Track, TrackJSON } from "./Track";
import { encode } from "./Encode";
/**
* The main midi parsing class
* The main midi parsing class.
*/

@@ -13,4 +19,4 @@ export class Midi {

* Download and parse the MIDI file. Returns a promise
* which resolves to the generated midi file
* @param url The url to fetch
* which resolves to the generated MIDI file.
* @param url The URL to fetch.
*/

@@ -23,3 +29,3 @@ static async fromUrl(url: string): Promise<Midi> {

} else {
throw new Error(`could not load ${url}`);
throw new Error(`Could not load '${url}'`);
}

@@ -42,15 +48,19 @@ }

constructor(midiArray?: (ArrayLike<number> | ArrayBuffer)) {
// parse the midi data if there is any
let midiData = null;
// Parse the MIDI data if there is any.
let midiData: (MidiData | null) = null;
if (midiArray) {
if (midiArray instanceof ArrayBuffer) {
midiArray = new Uint8Array(midiArray);
}
midiData = parseMidi(midiArray);
// Transform midiArray to ArrayLike<number>
// only if it's an ArrayBuffer.
const midiArrayLike: ArrayLike<number> = midiArray instanceof ArrayBuffer
? new Uint8Array(midiArray)
: midiArray;
// add the absolute times to each of the tracks
// Parse MIDI data.
midiData = parseMidi(midiArrayLike);
// Add the absolute times to each of the tracks.
midiData.tracks.forEach(track => {
let currentTicks = 0;
track.forEach(event => {
track.forEach((event: MidiEvent & { absoluteTime: number; }) => {
currentTicks += event.deltaTime;

@@ -61,3 +71,3 @@ event.absoluteTime = currentTicks;

// ensure at most one instrument per track
// Ensure at most one instrument per track.
midiData.tracks = splitTracks(midiData.tracks);

@@ -69,8 +79,8 @@ }

// parse the midi data
// Parse MIDI data.
if (midiArray) {
// format 0, everything is on the same track
// Format 0, everything is on the same track.
this.tracks = midiData.tracks.map(trackData => new Track(trackData, this.header));
// if it's format 1 and there are no notes on the first track, remove it
// If it's format 1 and there are no notes on the first track, remove it.
if (midiData.header.format === 1 && this.tracks[0].duration === 0) {

@@ -83,3 +93,3 @@ this.tracks.shift();

/**
* The name of the midi file, taken from the first track
* The name of the midi file, taken from the first track.
*/

@@ -89,2 +99,3 @@ get name(): string {

}
set name(n) {

@@ -95,6 +106,6 @@ this.header.name = n;

/**
* The total length of the file in seconds
* The total length of the file in seconds.
*/
get duration(): number {
// get the max of the last note of all the tracks
// Get the max of the last note of all the tracks.
const durations = this.tracks.map(t => t.duration);

@@ -105,6 +116,6 @@ return Math.max(...durations);

/**
* The total length of the file in ticks
* The total length of the file in ticks.
*/
get durationTicks(): number {
// get the max of the last note of all the tracks
// Get the max of the last note of all the tracks.
const durationTicks = this.tracks.map(t => t.durationTicks);

@@ -115,3 +126,3 @@ return Math.max(...durationTicks);

/**
* Add a track to the midi file
* Add a track to the MIDI file.
*/

@@ -121,2 +132,3 @@ addTrack(): Track {

this.tracks.push(track);
return track;

@@ -126,3 +138,3 @@ }

/**
* Encode the midi as a Uint8Array.
* Encode the MIDI as a Uint8Array.
*/

@@ -134,3 +146,3 @@ toArray(): Uint8Array {

/**
* Convert the midi object to JSON.
* Convert the MIDI object to JSON.
*/

@@ -154,2 +166,3 @@ toJSON(): MidiJSON {

track.fromJSON(trackJSON);
return track;

@@ -160,3 +173,3 @@ });

/**
* Clone the entire object midi object
* Clone the entire object MIDI object.
*/

@@ -166,2 +179,3 @@ clone(): Midi {

midi.fromJSON(this.toJSON());
return midi;

@@ -172,3 +186,3 @@ }

/**
* The MIDI data in JSON format
* The MIDI data in JSON format.
*/

@@ -188,3 +202,3 @@ export interface MidiJSON {

*/
function splitTracks(tracks: MidiTrackData[]): MidiTrackData[] {
function splitTracks(tracks: Array<MidiEvent[]>): Array<MidiEvent[]> {
const newTracks = [];

@@ -205,3 +219,3 @@

// pair.
const channel = (event as MidiChannelEvent).channel;
const channel = (event as (MidiEvent & { channel?: number })).channel;
if (channel !== undefined) {

@@ -211,4 +225,6 @@ if (event.type === "programChange") {

}
const program = currentProgram[channel];
const trackKey = `${program} ${channel}`;
if (trackMap.has(trackKey)) {

@@ -225,2 +241,3 @@ targetTrack = trackMap.get(trackKey);

}
newTracks[targetTrack].push(event);

@@ -227,0 +244,0 @@ }

@@ -1,6 +0,5 @@

import { MidiNoteEvent } from "midi-file";
import { Header } from "./Header";
/**
* Convert a midi note into a pitch
* Convert a MIDI note into a pitch.
*/

@@ -13,3 +12,3 @@ function midiToPitch(midi: number): string {

/**
* Convert a midi note to a pitch class (just the pitch no octave)
* Convert a MIDI note to a pitch class (just the pitch no octave).
*/

@@ -23,3 +22,3 @@ function midiToPitchClass(midi: number): string {

/**
* Convert a pitch class to a MIDI note
* Convert a pitch class to a MIDI note.
*/

@@ -32,3 +31,3 @@ function pitchClassToMidi(pitch: string): number {

/**
* Convert a pitch to a midi number
* Convert a pitch to a MIDI number.
*/

@@ -48,2 +47,3 @@ // tslint:disable-next-line: only-arrow-functions typedef

};
return (note) => {

@@ -61,3 +61,3 @@ const split = regexp.exec(note);

/**
* A Note consists of a noteOn and noteOff event
* A Note consists of a `noteOn` and `noteOff` event.
*/

@@ -67,3 +67,3 @@ export class Note implements NoteInterface {

/**
* The notes midi value
* The notes MIDI value.
*/

@@ -73,3 +73,3 @@ midi: number;

/**
* The normalized velocity (0-1)
* The normalized velocity (0-1).
*/

@@ -79,3 +79,3 @@ velocity: number;

/**
* The velocity of the note off
* The velocity of the note off.
*/

@@ -85,3 +85,3 @@ noteOffVelocity: number;

/**
* The start time in ticks
* The start time in ticks.
*/

@@ -91,3 +91,3 @@ ticks: number;

/**
* The duration in ticks
* The duration in ticks.
*/

@@ -97,3 +97,2 @@ durationTicks: number;

constructor(noteOn: NoteOnEvent, noteOff: NoteOffEvent, header: Header) {
privateHeaderMap.set(this, header);

@@ -113,3 +112,3 @@

/**
* The note name and octave in scientific pitch notation, e.g. "C4"
* The note name and octave in scientific pitch notation, e.g. "C4".
*/

@@ -125,3 +124,3 @@ get name(): string {

/**
* The notes octave number
* The notes octave number.
*/

@@ -138,3 +137,3 @@ get octave(): number {

/**
* The pitch class name. e.g. "A"
* The pitch class name. e.g. "A".
*/

@@ -150,3 +149,3 @@ get pitch(): string {

/**
* The duration of the segment in seconds
* The duration of the segment in seconds.
*/

@@ -165,3 +164,3 @@ get duration(): number {

/**
* The time of the event in seconds
* The time of the event in seconds.
*/

@@ -180,3 +179,3 @@ get time(): number {

* The number of measures (and partial measures) to this beat.
* Takes into account time signature changes
* Takes into account time signature changes.
* @readonly

@@ -183,0 +182,0 @@ */

@@ -7,3 +7,3 @@ import { Header } from "./Header";

/**
* Represents a pitch bend event
* Represents a pitch bend event.
*/

@@ -18,3 +18,3 @@ export class PitchBend implements PitchBendInterface {

/**
* The tick time of the event
* The tick time of the event.
*/

@@ -27,3 +27,3 @@ ticks: number;

*/
constructor(event: Partial<MidiPitchBendEvent>, header: Header) {
constructor(event: Partial<MidiPitchBendEvent & { absoluteTime: number; }>, header: Header) {
privateHeaderMap.set(this, header);

@@ -30,0 +30,0 @@

@@ -1,10 +0,12 @@

import {
import type {
MidiControllerEvent,
MidiEndOfTrackEvent,
MidiNoteOffEvent,
MidiNoteOnEvent,
MidiPitchBendEvent,
MidiTrackData,
MidiTrackNameEvent,
MidiEvent,
MidiNoteOffEvent, MidiNoteOnEvent,
MidiPitchBendEvent, MidiTrackNameEvent
} from "midi-file";
// Used to add `absoluteTime` property to 'MidiEvent's.
type WithAbsoluteTime = { absoluteTime: number; };
import { insert } from "./BinarySearch";

@@ -22,7 +24,7 @@ import { ControlChange, ControlChangeInterface } from "./ControlChange";

/**
* A Track is a collection of notes and controlChanges
* A Track is a collection of 'notes' and 'controlChanges'.
*/
export class Track {
/**
* The name of the track
* The name of the track.
*/

@@ -32,3 +34,3 @@ name = "";

/**
* The instrument associated with the track
* The instrument associated with the track.
*/

@@ -38,3 +40,3 @@ instrument: Instrument;

/**
* The track's note events
* The track's note events.
*/

@@ -45,3 +47,3 @@ notes: Note[] = [];

* The channel number of the track. Applies this channel
* to all events associated with the channel
* to all events associated with the channel.
*/

@@ -51,3 +53,3 @@ channel: number;

/**
* The control change events
* The control change events.
*/

@@ -57,3 +59,3 @@ controlChanges = createControlChanges();

/**
* The end of track event (if it exists) in ticks
* The end of track event (if it exists) in ticks.
*/

@@ -63,13 +65,16 @@ endOfTrackTicks?: number;

/**
* The pitch bend events
* The pitch bend events.
*/
pitchBends: PitchBend[] = [];
constructor(trackData: MidiTrackData, header: Header) {
constructor(trackData: MidiEvent[], header: Header) {
privateHeaderMap.set(this, header);
if (trackData) {
// Get the name of the track.
const nameEvent = trackData.find(
(e) => e.type === "trackName"
) as MidiTrackNameEvent;
// Set empty name if 'trackName' event isn't found.
this.name = nameEvent ? nameEvent.text : "";

@@ -80,3 +85,3 @@ }

// defaults to 0
// Defaults to 0.
this.channel = 0;

@@ -87,11 +92,15 @@

(event) => event.type === "noteOn"
) as MidiNoteOnEvent[];
) as (MidiNoteOnEvent & WithAbsoluteTime)[];
const noteOffs = trackData.filter(
(event) => event.type === "noteOff"
) as MidiNoteOffEvent[];
) as (MidiNoteOffEvent & WithAbsoluteTime)[];
while (noteOns.length) {
const currentNote = noteOns.shift();
// set the channel based on the note
// Set the channel based on the note.
this.channel = currentNote.channel;
// find the corresponding note off
// Find the corresponding note off.
const offIndex = noteOffs.findIndex(

@@ -102,5 +111,7 @@ (note) =>

);
if (offIndex !== -1) {
// once it's got the note off, add it
// Once it's got the note off, add it.
const noteOff = noteOffs.splice(offIndex, 1)[0];
this.addNote({

@@ -119,3 +130,3 @@ durationTicks:

(event) => event.type === "controller"
) as MidiControllerEvent[];
) as (MidiControllerEvent & WithAbsoluteTime)[];
controlChanges.forEach((event) => {

@@ -131,7 +142,7 @@ this.addCC({

(event) => event.type === "pitchBend"
) as MidiPitchBendEvent[];
) as (MidiPitchBendEvent & WithAbsoluteTime)[];
pitchBends.forEach((event) => {
this.addPitchBend({
ticks: event.absoluteTime,
// scale the value between -2^13 to 2^13 to -2 to 2
// Scale the value between -2^13 to 2^13 to -2 to 2.
value: event.value / Math.pow(2, 13),

@@ -142,5 +153,5 @@ });

const endOfTrackEvent:
| MidiEndOfTrackEvent
| (MidiEndOfTrackEvent & WithAbsoluteTime)
| undefined = trackData.find(
(event): event is MidiEndOfTrackEvent =>
(event): event is (MidiEndOfTrackEvent & WithAbsoluteTime) =>
event.type === "endOfTrack"

@@ -157,4 +168,4 @@ );

/**
* Add a note to the notes array
* @param props The note properties to add
* Add a note to the notes array.
* @param props The note properties to add.
*/

@@ -175,2 +186,3 @@ addNote(props: NoteConstructorInterface): this {

);
Object.assign(note, props);

@@ -182,3 +194,3 @@ insert(this.notes, note, "ticks");

/**
* Add a control change to the track
* Add a control change to the track.
* @param props

@@ -208,3 +220,3 @@ */

/**
* Add a control change to the track
* Add a control change to the track.
*/

@@ -224,3 +236,3 @@ addPitchBend(

/**
* The end time of the last event in the track
* The end time of the last event in the track.
*/

@@ -235,2 +247,3 @@ get duration(): number {

this.notes[this.notes.length - 1].duration;
for (let i = 0; i < this.notes.length - 1; i++) {

@@ -247,3 +260,3 @@ const duration = this.notes[i].time + this.notes[i].duration;

/**
* The end time of the last event in the track in ticks
* The end time of the last event in the track in ticks.
*/

@@ -269,3 +282,3 @@ get durationTicks(): number {

/**
* Assign the json values to this track
* Assign the JSON values to this track.
*/

@@ -277,5 +290,7 @@ fromJSON(json: TrackJSON): void {

this.instrument.fromJSON(json.instrument);
if (json.endOfTrackTicks !== undefined) {
this.endOfTrackTicks = json.endOfTrackTicks;
}
for (const number in json.controlChanges) {

@@ -292,2 +307,3 @@ if (json.controlChanges[number]) {

}
json.notes.forEach((n) => {

@@ -304,6 +320,6 @@ this.addNote({

/**
* Convert the track into a JSON format
* Convert the track into a JSON format.
*/
toJSON(): TrackJSON {
// convert all the CCs to JSON
// Convert all the CCs to JSON.
const controlChanges = {};

@@ -310,0 +326,0 @@ for (let i = 0; i < 127; i++) {

declare module "midi-file" {
// ////////////////////////////////////////////////////////
// THE EVENT TYPES
// ////////////////////////////////////////////////////////
export interface MidiEvent {
type: string;
deltaTime: number;
absoluteTime: number;
}
export interface MidiChannelEvent extends MidiEvent {
channel: number;
meta?: false;
}
export interface MidiNoteEvent extends MidiChannelEvent {
type: string;
velocity: number;
noteNumber: number;
running?: boolean;
}
export interface MidiNoteOnEvent extends MidiNoteEvent {
type: "noteOn";
}
export interface MidiNoteOffEvent extends MidiNoteEvent {
type: "noteOff";
}
export interface MidiControllerEvent extends MidiChannelEvent {
type: "controller";
controllerType: number;
value: number;
}
export interface MidiInstrumentEvent extends MidiChannelEvent {
type: "programChange";
programNumber: number;
}
// ////////////////////////////////////////////////////////
// META EVENTS
// ////////////////////////////////////////////////////////
export interface MidiMetaEvent extends MidiEvent {
meta: true;
type: string;
}
export interface MidiTimeSignatureEvent extends MidiMetaEvent {
type: "timeSignature";
numerator: number;
denominator: number;
thirtyseconds: number;
metronome: number;
}
export interface MidiTempoEvent extends MidiMetaEvent {
type: "setTempo";
microsecondsPerBeat: number;
}
export interface MidiTrackNameEvent extends MidiMetaEvent {
type: "trackName";
text: string;
}
export interface MidiEndOfTrackEvent extends MidiMetaEvent {
type: "endOfTrack";
}
export interface MidiCopyrightEvent extends MidiMetaEvent {
type: "copyrightNotice";
text: string;
}
export interface MidiTextEvent extends MidiMetaEvent {
type: "text" | "marker" | "lyrics" | "cuePoint";
text: string;
}
export interface MidiKeySignatureEvent extends MidiMetaEvent {
type: "keySignature";
key: number;
scale: number;
}
export interface MidiPitchBendEvent extends MidiChannelEvent {
type: "pitchBend";
value: number;
}
export type MidiTrackEvent = MidiTimeSignatureEvent | MidiTempoEvent | MidiTrackNameEvent | MidiEndOfTrackEvent | MidiNoteOnEvent | MidiNoteOffEvent | MidiControllerEvent | MidiPitchBendEvent | MidiInstrumentEvent | MidiKeySignatureEvent | MidiTextEvent;
export type MidiTrackData = MidiTrackEvent[];
export interface MidiData {
header: {
format: number;
ticksPerBeat: number;
numTracks: number;
};
tracks: MidiTrackData[];
}
// //////////////////////////////////////////////////////
// EXPORTED METHODS
// //////////////////////////////////////////////////////
export function parseMidi(midiArray: ArrayLike<number> | ArrayBuffer): MidiData;
export function writeMidi(midiData: MidiData): ArrayBuffer;
}

Sorry, the diff of this file is too big to display