UNPKG

midi-json-parser

Version:

This module is parsing midi files into a human-readable JSON object.

2 lines 6.41 kB
export declare const worker = "(()=>{var e={455:function(e,t){!function(e){\"use strict\";var t=function(e){return function(t){var n=e(t);return t.add(n),n}},n=function(e){return function(t,n){return e.set(t,n),n}},r=void 0===Number.MAX_SAFE_INTEGER?9007199254740991:Number.MAX_SAFE_INTEGER,o=536870912,s=2*o,i=function(e,t){return function(n){var i=t.get(n),a=void 0===i?n.size:i<s?i+1:0;if(!n.has(a))return e(n,a);if(n.size<o){for(;n.has(a);)a=Math.floor(Math.random()*s);return e(n,a)}if(n.size>r)throw new Error(\"Congratulations, you created a collection of unique numbers which uses all available integers!\");for(;n.has(a);)a=Math.floor(Math.random()*r);return e(n,a)}},a=new WeakMap,f=n(a),c=i(f,a),u=t(c);e.addUniqueNumber=u,e.generateUniqueNumber=c}(t)}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}(()=>{\"use strict\";const e=-32603,t=-32602,r=-32601,o=(e,t)=>Object.assign(new Error(e),{status:t}),s=t=>o('The handler of the method called \"'.concat(t,'\" returned an unexpected result.'),e),i=(t,n)=>async({data:{id:i,method:a,params:f}})=>{const c=n[a];try{if(void 0===c)throw(e=>o('The requested method called \"'.concat(e,'\" is not supported.'),r))(a);const n=void 0===f?c():c(f);if(void 0===n)throw(t=>o('The handler of the method called \"'.concat(t,'\" returned no required result.'),e))(a);const u=n instanceof Promise?await n:n;if(null===i){if(void 0!==u.result)throw s(a)}else{if(void 0===u.result)throw s(a);const{result:e,transferables:n=[]}=u;t.postMessage({id:i,result:e},n)}}catch(e){const{message:n,status:r=-32603}=e;t.postMessage({error:{code:r,message:n},id:i})}};var a=n(455);const f=new Map,c=(e,n,r)=>({...n,connect:({port:t})=>{t.start();const r=e(t,n),o=(0,a.generateUniqueNumber)(f);return f.set(o,(()=>{r(),t.close(),f.delete(o)})),{result:o}},disconnect:({portId:e})=>{const n=f.get(e);if(void 0===n)throw(e=>o('The specified parameter called \"portId\" with the given value \"'.concat(e,'\" does not identify a port connected to this worker.'),t))(e);return n(),{result:null}},isSupported:async()=>{if(await new Promise((e=>{const t=new ArrayBuffer(0),{port1:n,port2:r}=new MessageChannel;n.onmessage=({data:t})=>e(null!==t),r.postMessage(t,[t])}))){const e=r();return{result:e instanceof Promise?await e:e}}return{result:!1}}}),u=(e,t,n=()=>!0)=>{const r=c(u,t,n),o=i(e,r);return e.addEventListener(\"message\",o),()=>e.removeEventListener(\"message\",o)},l=e=>e.toString(16).toUpperCase().padStart(2,\"0\"),d=(e,t=0,n=e.byteLength-(t-e.byteOffset))=>{const r=t+e.byteOffset,o=[],s=new Uint8Array(e.buffer,r,n);for(let e=0;e<n;e+=1)o[e]=l(s[e]);return o.join(\"\")},g=(e,t=0,n=e.byteLength-(t-e.byteOffset))=>{const r=t+e.byteOffset,o=new Uint8Array(e.buffer,r,n);return String.fromCharCode.apply(null,o)},h=e=>{const t=new DataView(e),n=p(t);let r=14;const o=[];for(let e=0,s=n.numberOfTracks;e<s;e+=1){let e;({offset:r,track:e}=y(t,r)),o.push(e)}return{division:n.division,format:n.format,tracks:o}},m=(e,t,n)=>{let r;const{offset:o,value:s}=b(e,t),i=e.getUint8(o);return r=240===i?w(e,o+1):255===i?v(e,o+1):U(i,e,o+1,n),{...r,event:{...r.event,delta:s},eventTypeByte:i}},p=e=>{if(e.byteLength<14)throw new Error(\"Expected at least 14 bytes instead of \".concat(e.byteLength));if(\"MThd\"!==g(e,0,4))throw new Error('Unexpected characters \"'.concat(g(e,0,4),'\" found instead of \"MThd\"'));if(6!==e.getUint32(4))throw new Error(\"The header has an unexpected length of \".concat(e.getUint32(4),\" instead of 6\"));const t=e.getUint16(8),n=e.getUint16(10);return{division:e.getUint16(12),format:t,numberOfTracks:n}},v=(e,t)=>{let n;const r=e.getUint8(t),{offset:o,value:s}=b(e,t+1);if(1===r)n={text:g(e,o,s)};else if(2===r)n={copyrightNotice:g(e,o,s)};else if(3===r)n={trackName:g(e,o,s)};else if(4===r)n={instrumentName:g(e,o,s)};else if(5===r)n={lyric:g(e,o,s)};else if(6===r)n={marker:g(e,o,s)};else if(7===r)n={cuePoint:g(e,o,s)};else if(8===r)n={programName:g(e,o,s)};else if(9===r)n={deviceName:g(e,o,s)};else if(10===r||11===r||12===r||13===r||14===r||15===r)n={metaTypeByte:l(r),text:g(e,o,s)};else if(32===r)n={channelPrefix:e.getUint8(o)};else if(33===r)n={midiPort:e.getUint8(o)};else if(47===r)n={endOfTrack:!0};else if(81===r)n={setTempo:{microsecondsPerQuarter:(e.getUint8(o)<<16)+(e.getUint8(o+1)<<8)+e.getUint8(o+2)}};else if(84===r){let t;const r=e.getUint8(o);96&r?32==(96&r)?t=25:64==(96&r)?t=29:96&~r||(t=30):t=24,n={smpteOffset:{frame:e.getUint8(o+3),frameRate:t,hour:31&r,minutes:e.getUint8(o+1),seconds:e.getUint8(o+2),subFrame:e.getUint8(o+4)}}}else if(88===r)n={timeSignature:{denominator:Math.pow(2,e.getUint8(o+1)),metronome:e.getUint8(o+2),numerator:e.getUint8(o),thirtyseconds:e.getUint8(o+3)}};else if(89===r)n={keySignature:{key:e.getInt8(o),scale:e.getInt8(o+1)}};else{if(127!==r)throw new Error('Cannot parse a meta event with a type of \"'.concat(l(r),'\"'));n={sequencerSpecificData:d(e,o,s)}}return{event:n,offset:o+s}},U=(e,t,n,r)=>{const o=128&e?null:r,s=(null===o?e:o)>>4;let i,a=null===o?n:n-1;if(8===s)i={noteOff:{noteNumber:t.getUint8(a),velocity:t.getUint8(a+1)}},a+=2;else if(9===s){const e=t.getUint8(a),n=t.getUint8(a+1);i=0===n?{noteOff:{noteNumber:e,velocity:n}}:{noteOn:{noteNumber:e,velocity:n}},a+=2}else if(10===s)i={keyPressure:{noteNumber:t.getUint8(a),pressure:t.getUint8(a+1)}},a+=2;else if(11===s)i={controlChange:{type:t.getUint8(a),value:t.getUint8(a+1)}},a+=2;else if(12===s)i={programChange:{programNumber:t.getUint8(a)}},a+=1;else if(13===s)i={channelPressure:{pressure:t.getUint8(a)}},a+=1;else{if(14!==s)throw new Error('Cannot parse a midi event with a type of \"'.concat(l(s),'\"'));i={pitchBend:t.getUint8(a)|t.getUint8(a+1)<<7},a+=2}return i.channel=15&(null===o?e:o),{event:i,offset:a}},w=(e,t)=>{const{offset:n,value:r}=b(e,t);return{event:{sysex:d(e,n,r)},offset:n+r}},y=(e,t)=>{if(\"MTrk\"!==g(e,t,4))throw new Error('Unexpected characters \"'.concat(g(e,t,4),'\" found instead of \"MTrk\"'));const n=[],r=e.getUint32(t+4)+t+8;let o=null,s=t+8;for(;s<r;){const t=m(e,s,o),{event:r,eventTypeByte:i}=t;n.push(r),s=t.offset,void 0!==r.channel&&(128&i)>0&&(o=i)}return{offset:s,track:n}},b=(e,t)=>{let n=t,r=0;for(;;){const t=e.getUint8(n);if(n+=1,!(t>127))return r+=t,{offset:n,value:r};r+=127&t,r<<=7}};u(self,{parse:({arrayBuffer:e})=>({result:h(e)})})})()})();"; //# sourceMappingURL=worker.d.ts.map