UNPKG

@logue/smfplayer

Version:

smfplayer.js is JavaScript based Standard Midi Player for WebMidiLink based synthesizer.

2 lines 7.94 kB
/*! For license information please see smf.parser.min.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("SMF",[],t):"object"==typeof exports?exports.SMF=t():e.SMF=t()}("undefined"!=typeof self?self:this,(function(){return(()=>{"use strict";var e={656:(e,t,r)=>{r.d(t,{Z:()=>n});const n={version:"0.3.6",date:"2021-11-04T14:34:02.764Z"}},994:(e,t,r)=>{function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&a(e,t)}function a(e,t){return a=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},a(e,t)}function o(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=u(e);if(t){var i=u(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return s(this,r)}}function s(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function u(e){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},u(e)}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}r.d(t,{gQ:()=>l,Sj:()=>h,FL:()=>p});var f=function e(t,r,n){c(this,e),this.subtype=t,this.deltaTime=r,this.time=n},l=function(e){i(r,e);var t=o(r);function r(e,n,i,a,o,s){var u;return c(this,r),(u=t.call(this,e,n,i)).channel=a,u.parameter1=o,u.parameter2=s,u}return r}(f),h=function(e){i(r,e);var t=o(r);function r(e,n,i,a){var o;return c(this,r),(o=t.call(this,e,n,i)).data=a,o}return r}(f),p=function(e){i(r,e);var t=o(r);function r(e,n,i,a){var o;return c(this,r),(o=t.call(this,e,n,i)).data=a,o}return r}(f)},135:(e,t,r)=>{function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}r.d(t,{Z:()=>a});var a=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n(this,e),this.input=t,this.ip=r.index||0,this.length=r.length||t.length-this.ip,this.chunkList=[],this.offset=this.ip,this.padding=void 0===r.padding||r.padding,this.bigEndian=void 0!==r.bigEndian&&r.bigEndian}var t,r,a;return t=e,(r=[{key:"parse",value:function(){var e=this.length+this.offset;for(this.chunkList=[];this.ip<e;)this.parseChunk()}},{key:"parseChunk",value:function(){var e,t=this.input,r=this.ip;this.chunkList.push(new o(String.fromCharCode(t[r++],t[r++],t[r++],t[r++]),e=this.bigEndian?(t[r++]<<24|t[r++]<<16|t[r++]<<8|t[r++])>>>0:(t[r++]|t[r++]<<8|t[r++]<<16|t[r++]<<24)>>>0,r)),r+=e,this.padding&&1==(r-this.offset&1)&&r++,this.ip=r}},{key:"getChunk",value:function(e){var t=this.chunkList[e];return void 0===t?null:t}},{key:"getNumberOfChunks",value:function(){return this.chunkList.length}}])&&i(t.prototype,r),a&&i(t,a),e}(),o=function e(t,r,i){n(this,e),this.type=t,this.size=r,this.offset=i}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{r.r(n),r.d(n,{default:()=>s});var e=r(994),t=r(656),i=r(135);function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var s=function(){function r(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};a(this,r),n.padding=!1,n.bigEndian=!0,this.input=e,this.ip=n.index||0,this.chunkIndex=0,this.riffParser_=new i.Z(e,n),this.formatType=0,this.numberOfTracks=0,this.timeDivision=480,this.tracks=[],this.plainTracks=[],this.version=t.Z.version,this.build=t.Z.build}var n,s,u;return n=r,(s=[{key:"parse",value:function(){var e,t=0;for(this.riffParser_.parse(),this.parseHeaderChunk(),t=0,e=this.numberOfTracks;t<e;++t)this.parseTrackChunk()}},{key:"parseHeaderChunk",value:function(){var e=this.riffParser_.getChunk(this.chunkIndex++),t=this.input,r=e.offset;if(!e||"MThd"!==e.type)throw new Error("invalid header signature");this.formatType=t[r++]<<8|t[r++],this.numberOfTracks=t[r++]<<8|t[r++],this.timeDivision=t[r++]<<8|t[r++]}},{key:"parseTrackChunk",value:function(){var t,r,n,i=this.riffParser_.getChunk(this.chunkIndex++),a=this.input,o=i.offset,s=0,u=0,c=0,f=-1,l=-1,h=0,p=0,y=0,b=0,d=0,v=function(){var e=0;h=0;do{e=e<<7|127&(h=a[o++])}while(0!=(128&h));return e};if(!i||"MTrk"!==i.type)throw new Error("invalid header signature");t=i.offset+i.size;for(var k=[],m=[];o<t;){p+=s=v(),y=o,c=15&(d=a[o++]),(u=d>>4&15)<8?(u=f,c=l,d=f<<4|l,o--,y--):(f=u,l=c);var g=[null,null,null,null,null,null,null,null,"NoteOff","NoteOn","NoteAftertouch","ControlChange","ProgramChange","ChannelAftertouch","PitchBend"];switch(u){case 8:case 9:case 10:case 11:case 13:case 14:r=new e.gQ(g[u],s,p,c,a[o++],a[o++]);break;case 12:r=new e.gQ(g[u],s,p,c,a[o++]);break;case 15:switch(c){case 0:if(h=v(),247!==a[o+h-1])throw new Error("invalid SysEx event");r=new e.Sj("SystemExclusive",s,p,a.subarray(o,(o+=h)-1));break;case 7:h=v(),r=new e.Sj("SystemExclusive(F7)",s,p,a.subarray(o,o+=h));break;case 15:switch(u=a[o++],h=v(),u){case 0:r=new e.FL("SequenceNumber",s,p,[a[o++],a[o++]]);break;case 1:r=new e.FL("TextEvent",s,p,[String.fromCharCode.apply(null,a.subarray(o,o+=h))]);break;case 2:r=new e.FL("CopyrightNotice",s,p,[String.fromCharCode.apply(null,a.subarray(o,o+=h))]);break;case 3:r=new e.FL("SequenceTrackName",s,p,[String.fromCharCode.apply(null,a.subarray(o,o+=h))]);break;case 4:r=new e.FL("InstrumentName",s,p,[String.fromCharCode.apply(null,a.subarray(o,o+=h))]);break;case 5:r=new e.FL("Lyrics",s,p,[String.fromCharCode.apply(null,a.subarray(o,o+=h))]);break;case 6:r=new e.FL("Marker",s,p,[String.fromCharCode.apply(null,a.subarray(o,o+=h))]);break;case 7:r=new e.FL("CuePoint",s,p,[String.fromCharCode.apply(null,a.subarray(o,o+=h))]);break;case 32:r=new e.FL("MidiChannelPrefix",s,p,[a[o++]]);break;case 47:r=new e.FL("EndOfTrack",s,p,[]);break;case 81:r=new e.FL("SetTempo",s,p,[a[o++]<<16|a[o++]<<8|a[o++]]);break;case 84:r=new e.FL("SmpteOffset",s,p,[a[o++],a[o++],a[o++],a[o++],a[o++]]);break;case 88:r=new e.FL("TimeSignature",s,p,[a[o++],a[o++],a[o++],a[o++]]);break;case 89:r=new e.FL("KeySignature",s,p,[a[o++],a[o++]]);break;case 127:r=new e.FL("SequencerSpecific",s,p,[a.subarray(o,o+=h)]);break;default:r=new e.FL("Unknown",s,p,[u,a.subarray(o,o+=h)])}}break;default:throw new Error("invalid status")}b=o-y,(n=a.subarray(y,y+b))[0]=d,r instanceof e.gQ&&"NoteOn"===r.subtype&&0===r.parameter2&&(r.subtype=g[8],n=new Uint8Array([128|r.channel,r.parameter1,r.parameter2])),m.push(n),k.push(r)}this.tracks.push(k),this.plainTracks.push(m)}}])&&o(n.prototype,s),u&&o(n,u),r}()})(),n})()}));