spessasynth_lib 3.24.39 → 3.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- var Vn=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});function _t(e){e=Math.floor(e);let A=Math.floor(e/60),t=Math.round(e-A*60);return{minutes:A,seconds:t,time:`${A.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`}}function On(e){return e.trim().replaceAll(".mid","").replaceAll(".kar","").replaceAll(".rmi","").replaceAll("_"," ").trim()}function RA(e){let A="";for(let t=0;t<e.length;t++){let n=e[t].toString(16).padStart(2,"0").toUpperCase();A+=n,A+=" "}return A}function Pn(e){let A=[];for(let t of e)(t===47||t===92)&&(t=10),A.push(t);return new Uint8Array(A)}var I={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};var qe={backwards:0,forwards:1,shuffleOn:2,shuffleOff:3},vA={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},wA={midiEvent:0,songChange:1,textEvent:2,timeChange:3,pause:4,getMIDI:5,midiError:6,metaEvent:7,loopCountChange:8};var U=class extends Uint8Array{currentIndex;constructor(A){super(A),this.currentIndex=0}};function dA(e){let A=e.reduce((o,s)=>o+s.length,0),t=new U(A),n=0;for(let o of e)t.set(o,n),n+=o.length;return t}var VA=class{ticks;messageStatusByte;messageData;constructor(A,t,n){this.ticks=A,this.messageStatusByte=t,this.messageData=n}};function Zn(e){let A=e&240,t=e&15,n=t;switch(A){case 128:case 144:case 160:case 176:case 192:case 208:case 224:break;case 240:switch(t){case 0:n=-3;break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:n=-1;break;case 15:n=-2;break}break;default:n=-1}return n}var w={noteOff:128,noteOn:144,polyPressure:160,controllerChange:176,programChange:192,channelPressure:208,pitchBend:224,systemExclusive:240,timecode:241,songPosition:242,songSelect:243,tuneRequest:246,clock:248,start:250,continue:251,stop:252,activeSensing:254,reset:255,sequenceNumber:0,text:1,copyright:2,trackName:3,instrumentName:4,lyric:5,marker:6,cuePoint:7,programName:8,midiChannelPrefix:32,midiPort:33,endOfTrack:47,setTempo:81,smpteOffset:84,timeSignature:88,keySignature:89,sequenceSpecific:127};function It(e){let A=e&240,t=e&15,n=-1,o=e;return A>=128&&A<=224&&(n=t,o=A),{status:o,channel:n}}var m={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,filterResonance:71,releaseTime:72,attackTime:73,brightness:74,decayTime:75,vibratoRate:76,vibratoDepth:77,vibratoDelay:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},Xn={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var Wn=!1,_n=!0,gt=!1,zn=!0;function jn(e,A,t,n){Wn=e,_n=A,gt=t,zn=n}function p(...e){Wn&&console.info(...e)}function J(...e){_n&&console.warn(...e)}function $n(...e){zn&&console.table(...e)}function OA(...e){gt&&console.group(...e)}function uA(...e){gt&&console.groupCollapsed(...e)}function Z(){gt&&console.groupEnd()}function ie(e,A){let t=0;for(let n=8*(A-1);n>=0;n-=8)t|=e[e.currentIndex++]<<n;return t>>>0}function Ve(e,A){let t=new Array(A).fill(0);for(let n=A-1;n>=0;n--)t[n]=e&255,e>>=8;return t}function Ao(e,A){if(this.sendMIDIMessages&&e.messageStatusByte>=128){this.sendMIDIMessage([e.messageStatusByte,...e.messageData]);return}let t=It(e.messageStatusByte),n=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(t.channel+=n,t.status){case w.noteOn:let o=e.messageData[1];if(o>0)this.synth.noteOn(t.channel,e.messageData[0],o),this.playingNotes.push({midiNote:e.messageData[0],channel:t.channel,velocity:o});else{this.synth.noteOff(t.channel,e.messageData[0]);let C=this.playingNotes.findIndex(d=>d.midiNote===e.messageData[0]&&d.channel===t.channel);C!==-1&&this.playingNotes.splice(C,1)}break;case w.noteOff:this.synth.noteOff(t.channel,e.messageData[0]);let s=this.playingNotes.findIndex(C=>C.midiNote===e.messageData[0]&&C.channel===t.channel);s!==-1&&this.playingNotes.splice(s,1);break;case w.pitchBend:this.synth.pitchWheel(t.channel,e.messageData[1],e.messageData[0]);break;case w.controllerChange:this.synth.controllerChange(t.channel,e.messageData[0],e.messageData[1]);break;case w.programChange:this.synth.programChange(t.channel,e.messageData[0]);break;case w.polyPressure:this.synth.polyPressure(t.channel,e.messageData[0],e.messageData[1]);break;case w.channelPressure:this.synth.channelPressure(t.channel,e.messageData[0]);break;case w.systemExclusive:this.synth.systemExclusive(e.messageData,n);break;case w.setTempo:e.messageData.currentIndex=0;let r=6e7/ie(e.messageData,3);this.oneTickToSeconds=60/(r*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),J("invalid tempo! falling back to 120 BPM"),r=120);break;case w.timeSignature:case w.endOfTrack:case w.midiChannelPrefix:case w.songPosition:case w.activeSensing:case w.keySignature:case w.sequenceNumber:case w.sequenceSpecific:break;case w.text:case w.lyric:case w.copyright:case w.trackName:case w.marker:case w.cuePoint:case w.instrumentName:case w.programName:let B=-1;t.status===w.lyric&&(B=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyrics.length-1));let a=t.status;this.midiData.isKaraokeFile&&(t.status===w.text||t.status===w.lyric)&&(B=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyricsTicks.length),a=w.lyric),this.post(wA.textEvent,[e.messageData,a,B]);break;case w.midiPort:this.assignMIDIPort(A,e.messageData[0]);break;case w.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:J(`%cUnrecognized Event: %c${e.messageStatusByte}%c status byte: %c${Object.keys(w).find(C=>w[C]===t.status)}`,I.warn,I.unrecognized,I.warn,I.value);break}t.status>=0&&t.status<128&&this.post(wA.metaEvent,[e.messageStatusByte,e.messageData,A])}function eo(){for(let e=0;e<16;e++)this.synth.createWorkletChannel(!0)}function to(){if(!this.isActive)return;let e=this.currentTime;for(;this.playedTime<e;){let A=this._findFirstEventIndex(),t=this.tracks[A][this.eventIndex[A]];if(this._processEvent(t,A),this.eventIndex[A]++,A=this._findFirstEventIndex(),this.tracks[A].length<=this.eventIndex[A]){if(this.loop){this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}let n=this.tracks[A][this.eventIndex[A]];this.playedTime+=this.oneTickToSeconds*(n.ticks-t.ticks);let o=this.loop&&(this.loopCount>0||this.loopCount===-1);if(this.midiData.loop.end<=t.ticks&&o){this.loopCount!==1/0&&(this.loopCount--,this.post(wA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}else if(e>=this.duration){if(o){this.loopCount!==1/0&&(this.loopCount--,this.post(wA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function no(){let e=0,A=1/0;return this.tracks.forEach((t,n)=>{this.eventIndex[n]>=t.length||t[this.eventIndex[n]].ticks<A&&(e=n,A=t[this.eventIndex[n]].ticks)}),e}var xe=class{timeDivision=0;duration=0;tempoChanges=[{ticks:0,tempo:120}];copyright="";tracksAmount=0;lyrics=[];lyricsTicks=[];firstNoteOn=0;keyRange={min:0,max:127};lastVoiceEventTick=0;midiPorts=[0];midiPortChannelOffsets=[0];usedChannelsOnTrack=[];loop={start:0,end:0};midiName="";midiNameUsesFileName=!1;fileName="";rawMidiName=void 0;format=0;RMIDInfo={};bankOffset=0;isKaraokeFile=!1;MIDIticksToSeconds(A){let t=0;for(;A>0;){let n=this.tempoChanges.find(s=>s.ticks<A),o=A-n.ticks;t+=o*60/(n.tempo*this.timeDivision),A-=o}return t}};var Ct=class extends xe{isEmbedded=!1;constructor(A){super(),this.timeDivision=A.timeDivision,this.duration=A.duration,this.tempoChanges=A.tempoChanges,this.copyright=A.copyright,this.tracksAmount=A.tracksAmount,this.lyrics=A.lyrics,this.lyricsTicks=A.lyricsTicks,this.firstNoteOn=A.firstNoteOn,this.keyRange=A.keyRange,this.lastVoiceEventTick=A.lastVoiceEventTick,this.midiPorts=A.midiPorts,this.midiPortChannelOffsets=A.midiPortChannelOffsets,this.usedChannelsOnTrack=A.usedChannelsOnTrack,this.loop=A.loop,this.midiName=A.midiName,this.midiNameUsesFileName=A.midiNameUsesFileName,this.fileName=A.fileName,this.rawMidiName=A.rawMidiName,this.format=A.format,this.RMIDInfo=A.RMIDInfo,this.bankOffset=A.bankOffset,this.isKaraokeFile=A.isKaraokeFile,this.isEmbedded=A.embeddedSoundFont!==void 0}},Wi={duration:99999,firstNoteOn:0,loop:{start:0,end:123456},lastVoiceEventTick:123456,lyrics:[],copyright:"",midiPorts:[],midiPortChannelOffsets:[],tracksAmount:0,tempoChanges:[{ticks:0,tempo:120}],fileName:"NOT_LOADED.mid",midiName:"Loading...",rawMidiName:new Uint8Array([76,111,97,100,105,110,103,46,46,46]),usedChannelsOnTrack:[],timeDivision:0,keyRange:{min:0,max:127},isEmbedded:!1,RMIDInfo:{},bankOffset:0,midiNameUsesFileName:!1,format:0};function N(e,A){let t=0;for(let n=0;n<A;n++)t|=e[e.currentIndex++]<<n*8;return t>>>0}function ye(e,A,t){for(let n=0;n<t;n++)e[e.currentIndex++]=A>>n*8&255}function T(e,A){e[e.currentIndex++]=A&255,e[e.currentIndex++]=A>>8}function z(e,A){ye(e,A,4)}function Ce(e,A){let t=A<<8|e;return t>32767?t-65536:t}function oo(e){return e>127?e-256:e}function AA(e,A,t=void 0,n=!0){if(t){let o=e.slice(e.currentIndex,e.currentIndex+A);return e.currentIndex+=A,new TextDecoder(t.replace(/[^\x20-\x7E]/g,"")).decode(o.buffer)}else{let o=!1,s="";for(let r=0;r<A;r++){let B=e[e.currentIndex++];if(!o){if((B<32||B>127)&&B!==10){if(n){o=!0;continue}else if(B===0){o=!0;continue}}s+=String.fromCharCode(B)}}return s}}function Me(e,A=0){let t=e.length;A>0&&(t=A);let n=new U(t);return FA(n,e,A),n}function ne(e){return Me(e,e.length+1)}function FA(e,A,t=0){t>0&&A.length>t&&(A=A.slice(0,t));for(let n=0;n<A.length;n++)e[e.currentIndex++]=A.charCodeAt(n);if(t>A.length)for(let n=0;n<t-A.length;n++)e[e.currentIndex++]=0;return e}var iA=class{constructor(A,t,n){this.header=A,this.size=t,this.chunkData=n}};function eA(e,A=!0,t=!1){let n=AA(e,4),o=N(e,4),s;return A&&(s=new U(e.buffer.slice(e.currentIndex,e.currentIndex+o))),(A||t)&&(e.currentIndex+=o),o%2!==0&&e[e.currentIndex]===0&&e.currentIndex++,new iA(n,o,s)}function EA(e,A=void 0){let t=8+e.size;e.size%2!==0&&t++,A&&(t+=A.length);let n=new U(t);return A&&(n.set(A,n.currentIndex),n.currentIndex+=A.length),FA(n,e.header),z(n,t-8-(A?.length||0)),n.set(e.chunkData,n.currentIndex),n}function X(e,A,t=!1,n=!1){if(t){let C=new Uint8Array(A.length+1);C.set(A),A=C}let o=8,s=o+A.length,r=A.length;s%2!==0&&s++;let B=e;n&&(s+=4,r+=4,o+=4,B="LIST");let a=new U(s);return FA(a,B),z(a,r),n&&FA(a,e),a.set(A,o),a}function LA(e,A){return e.find(t=>t.header!=="LIST"?!1:(t.chunkData.currentIndex=0,AA(t.chunkData,4)===A))}function Et(e){let A=0;for(;e;){let t=e[e.currentIndex++];if(A=A<<7|t&127,t>>7!==1)break}return A}function Bt(e){let A=[e&127];for(e>>=7;e>0;)A.unshift(e&127|128),e>>=7;return A}var i={INVALID:-1,startAddrsOffset:0,endAddrOffset:1,startloopAddrsOffset:2,endloopAddrsOffset:3,startAddrsCoarseOffset:4,modLfoToPitch:5,vibLfoToPitch:6,modEnvToPitch:7,initialFilterFc:8,initialFilterQ:9,modLfoToFilterFc:10,modEnvToFilterFc:11,endAddrsCoarseOffset:12,modLfoToVolume:13,unused1:14,chorusEffectsSend:15,reverbEffectsSend:16,pan:17,unused2:18,unused3:19,unused4:20,delayModLFO:21,freqModLFO:22,delayVibLFO:23,freqVibLFO:24,delayModEnv:25,attackModEnv:26,holdModEnv:27,decayModEnv:28,sustainModEnv:29,releaseModEnv:30,keyNumToModEnvHold:31,keyNumToModEnvDecay:32,delayVolEnv:33,attackVolEnv:34,holdVolEnv:35,decayVolEnv:36,sustainVolEnv:37,releaseVolEnv:38,keyNumToVolEnvHold:39,keyNumToVolEnvDecay:40,instrument:41,reserved1:42,keyRange:43,velRange:44,startloopAddrsCoarseOffset:45,keyNum:46,velocity:47,initialAttenuation:48,reserved2:49,endloopAddrsCoarseOffset:50,coarseTune:51,fineTune:52,sampleID:53,sampleModes:54,reserved3:55,scaleTuning:56,exclusiveClass:57,overridingRootKey:58,unused5:59,endOper:60},q=[];q[i.startAddrsOffset]={min:0,max:32768,def:0};q[i.endAddrOffset]={min:-32768,max:32768,def:0};q[i.startloopAddrsOffset]={min:-32768,max:32768,def:0};q[i.endloopAddrsOffset]={min:-32768,max:32768,def:0};q[i.startAddrsCoarseOffset]={min:0,max:32768,def:0};q[i.modLfoToPitch]={min:-12e3,max:12e3,def:0};q[i.vibLfoToPitch]={min:-12e3,max:12e3,def:0};q[i.modEnvToPitch]={min:-12e3,max:12e3,def:0};q[i.initialFilterFc]={min:1500,max:13500,def:13500};q[i.initialFilterQ]={min:0,max:960,def:0};q[i.modLfoToFilterFc]={min:-12e3,max:12e3,def:0};q[i.modEnvToFilterFc]={min:-12e3,max:12e3,def:0};q[i.endAddrsCoarseOffset]={min:-32768,max:32768,def:0};q[i.modLfoToVolume]={min:-960,max:960,def:0};q[i.chorusEffectsSend]={min:0,max:1e3,def:0};q[i.reverbEffectsSend]={min:0,max:1e3,def:0};q[i.pan]={min:-500,max:500,def:0};q[i.delayModLFO]={min:-12e3,max:5e3,def:-12e3};q[i.freqModLFO]={min:-16e3,max:4500,def:0};q[i.delayVibLFO]={min:-12e3,max:5e3,def:-12e3};q[i.freqVibLFO]={min:-16e3,max:4500,def:0};q[i.delayModEnv]={min:-32768,max:5e3,def:-32768};q[i.attackModEnv]={min:-32768,max:8e3,def:-32768};q[i.holdModEnv]={min:-12e3,max:5e3,def:-12e3};q[i.decayModEnv]={min:-12e3,max:8e3,def:-12e3};q[i.sustainModEnv]={min:0,max:1e3,def:0};q[i.releaseModEnv]={min:-7200,max:8e3,def:-12e3};q[i.keyNumToModEnvHold]={min:-1200,max:1200,def:0};q[i.keyNumToModEnvDecay]={min:-1200,max:1200,def:0};q[i.delayVolEnv]={min:-12e3,max:5e3,def:-12e3};q[i.attackVolEnv]={min:-12e3,max:8e3,def:-12e3};q[i.holdVolEnv]={min:-12e3,max:5e3,def:-12e3};q[i.decayVolEnv]={min:-12e3,max:8e3,def:-12e3};q[i.sustainVolEnv]={min:0,max:1440,def:0};q[i.releaseVolEnv]={min:-7200,max:8e3,def:-12e3};q[i.keyNumToVolEnvHold]={min:-1200,max:1200,def:0};q[i.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0};q[i.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};q[i.keyNum]={min:-1,max:127,def:-1};q[i.velocity]={min:-1,max:127,def:-1};q[i.initialAttenuation]={min:-250,max:1440,def:0};q[i.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};q[i.coarseTune]={min:-120,max:120,def:0};q[i.fineTune]={min:-12700,max:12700,def:0};q[i.scaleTuning]={min:0,max:1200,def:100};q[i.exclusiveClass]={min:0,max:99999,def:0};q[i.overridingRootKey]={min:-1,max:127,def:-1};q[i.sampleModes]={min:0,max:3,def:0};var L=class{generatorType=i.INVALID;generatorValue=0;constructor(A=i.INVALID,t=0,n=!0){if(this.generatorType=A,t===void 0)throw new Error("No value provided.");if(this.generatorValue=Math.round(t),n){let o=q[A];o!==void 0&&(this.generatorValue=Math.max(o.min,Math.min(o.max,this.generatorValue)))}}};function so(e,A,t){let n=q[e]||{min:0,max:32768,def:0},o=A.find(C=>C.generatorType===e),s=0;o&&(s=o.generatorValue);let r=t.find(C=>C.generatorType===e),B=n.def;r&&(B=r.generatorValue);let a=B+s;return e===i.initialAttenuation?a:Math.max(n.min,Math.min(n.max,a))}var W={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},fA={linear:0,concave:1,convex:2,switch:3},P=class e{currentValue=0;sourceEnum;secondarySourceEnum;modulatorDestination;transformAmount;transformType;constructor(A,t,n,o,s){this.sourceEnum=A,this.modulatorDestination=n,this.secondarySourceEnum=t,this.transformAmount=o,this.transformType=s,this.modulatorDestination>58&&(this.modulatorDestination=i.INVALID),this.sourcePolarity=this.sourceEnum>>9&1,this.sourceDirection=this.sourceEnum>>8&1,this.sourceUsesCC=this.sourceEnum>>7&1,this.sourceIndex=this.sourceEnum&127,this.sourceCurveType=this.sourceEnum>>10&3,this.secSrcPolarity=this.secondarySourceEnum>>9&1,this.secSrcDirection=this.secondarySourceEnum>>8&1,this.secSrcUsesCC=this.secondarySourceEnum>>7&1,this.secSrcIndex=this.secondarySourceEnum&127,this.secSrcCurveType=this.secondarySourceEnum>>10&3,this.isEffectModulator=(this.sourceEnum===219||this.sourceEnum===221)&&this.secondarySourceEnum===0&&(this.modulatorDestination===i.reverbEffectsSend||this.modulatorDestination===i.chorusEffectsSend)}static copy(A){return new e(A.sourceEnum,A.secondarySourceEnum,A.modulatorDestination,A.transformAmount,A.transformType)}static isIdentical(A,t,n=!1){return A.sourceEnum===t.sourceEnum&&A.modulatorDestination===t.modulatorDestination&&A.secondarySourceEnum===t.secondarySourceEnum&&A.transformType===t.transformType&&(!n||A.transformAmount===t.transformAmount)}static debugString(A){function t(s,r){return Object.keys(s).find(B=>s[B]===r)}let n=t(fA,A.sourceCurveType);n+=A.sourcePolarity===0?" unipolar ":" bipolar ",n+=A.sourceDirection===0?"forwards ":"backwards ",A.sourceUsesCC?n+=t(m,A.sourceIndex):n+=t(W,A.sourceIndex);let o=t(fA,A.secSrcCurveType);return o+=A.secSrcPolarity===0?" unipolar ":" bipolar ",o+=A.secSrcCurveType===0?"forwards ":"backwards ",A.secSrcUsesCC?o+=t(m,A.secSrcIndex):o+=t(W,A.secSrcIndex),`Modulator:
1
+ var uo=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});function Rn(e){e=Math.floor(e);let A=Math.floor(e/60),t=Math.round(e-A*60);return{minutes:A,seconds:t,time:`${A.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}`}}function fo(e){return e.trim().replaceAll(".mid","").replaceAll(".kar","").replaceAll(".rmi","").replaceAll(".xmf","").replaceAll(".mxmf","").replaceAll("_"," ").trim()}function TA(e){let A="";for(let t=0;t<e.length;t++){let n=e[t].toString(16).padStart(2,"0").toUpperCase();A+=n,A+=" "}return A}function mo(e){let A=[];for(let t of e)(t===47||t===92)&&(t=10),A.push(t);return new Uint8Array(A)}var I={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};var mt={backwards:0,forwards:1,shuffleOn:2,shuffleOff:3},_A={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},LA={midiEvent:0,songChange:1,textEvent:2,timeChange:3,pause:4,getMIDI:5,midiError:6,metaEvent:7,loopCountChange:8};var L=class extends Uint8Array{currentIndex=0;constructor(A){super(A)}slice(A,t){let n=super.slice(A,t);return n.currentIndex=0,n}};function wA(e){let A=e.reduce((o,s)=>o+s.length,0),t=new L(A),n=0;for(let o of e)t.set(o,n),n+=o.length;return t}var te=class{ticks;messageStatusByte;messageData;constructor(A,t,n){this.ticks=A,this.messageStatusByte=t,this.messageData=n}};function po(e){let A=e&240,t=e&15,n=t;switch(A){case 128:case 144:case 160:case 176:case 192:case 208:case 224:break;case 240:switch(t){case 0:n=-3;break;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:n=-1;break;case 15:n=-2;break}break;default:n=-1}return n}var R={noteOff:128,noteOn:144,polyPressure:160,controllerChange:176,programChange:192,channelPressure:208,pitchBend:224,systemExclusive:240,timecode:241,songPosition:242,songSelect:243,tuneRequest:246,clock:248,start:250,continue:251,stop:252,activeSensing:254,reset:255,sequenceNumber:0,text:1,copyright:2,trackName:3,instrumentName:4,lyric:5,marker:6,cuePoint:7,programName:8,midiChannelPrefix:32,midiPort:33,endOfTrack:47,setTempo:81,smpteOffset:84,timeSignature:88,keySignature:89,sequenceSpecific:127};function Kt(e){let A=e&240,t=e&15,n=-1,o=e;return A>=128&&A<=224&&(n=t,o=A),{status:o,channel:n}}var p={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,filterResonance:71,releaseTime:72,attackTime:73,brightness:74,decayTime:75,vibratoRate:76,vibratoDepth:77,vibratoDelay:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},yo={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var So=!1,Do=!0,qt=!1,ko=!0;function wo(e,A,t,n){So=e,Do=A,qt=t,ko=n}function y(...e){So&&console.info(...e)}function H(...e){Do&&console.warn(...e)}function Fo(...e){ko&&console.table(...e)}function OA(...e){qt&&console.group(...e)}function FA(...e){qt&&console.groupCollapsed(...e)}function P(){qt&&console.groupEnd()}function ne(e,A){let t=0;for(let n=8*(A-1);n>=0;n-=8)t|=e[e.currentIndex++]<<n;return t>>>0}function pt(e,A){let t=new Array(A).fill(0);for(let n=A-1;n>=0;n--)t[n]=e&255,e>>=8;return t}function Ro(e,A){if(this.sendMIDIMessages&&e.messageStatusByte>=128){this.sendMIDIMessage([e.messageStatusByte,...e.messageData]);return}let t=Kt(e.messageStatusByte),n=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(t.channel+=n,t.status){case R.noteOn:let o=e.messageData[1];if(o>0)this.synth.noteOn(t.channel,e.messageData[0],o),this.playingNotes.push({midiNote:e.messageData[0],channel:t.channel,velocity:o});else{this.synth.noteOff(t.channel,e.messageData[0]);let g=this.playingNotes.findIndex(d=>d.midiNote===e.messageData[0]&&d.channel===t.channel);g!==-1&&this.playingNotes.splice(g,1)}break;case R.noteOff:this.synth.noteOff(t.channel,e.messageData[0]);let s=this.playingNotes.findIndex(g=>g.midiNote===e.messageData[0]&&g.channel===t.channel);s!==-1&&this.playingNotes.splice(s,1);break;case R.pitchBend:this.synth.pitchWheel(t.channel,e.messageData[1],e.messageData[0]);break;case R.controllerChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[A].size===0)return;this.synth.controllerChange(t.channel,e.messageData[0],e.messageData[1]);break;case R.programChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[A].size===0)return;this.synth.programChange(t.channel,e.messageData[0]);break;case R.polyPressure:this.synth.polyPressure(t.channel,e.messageData[0],e.messageData[1]);break;case R.channelPressure:this.synth.channelPressure(t.channel,e.messageData[0]);break;case R.systemExclusive:this.synth.systemExclusive(e.messageData,n);break;case R.setTempo:e.messageData.currentIndex=0;let r=6e7/ne(e.messageData,3);this.oneTickToSeconds=60/(r*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),H("invalid tempo! falling back to 120 BPM"),r=120);break;case R.timeSignature:case R.endOfTrack:case R.midiChannelPrefix:case R.songPosition:case R.activeSensing:case R.keySignature:case R.sequenceNumber:case R.sequenceSpecific:break;case R.text:case R.lyric:case R.copyright:case R.trackName:case R.marker:case R.cuePoint:case R.instrumentName:case R.programName:let B=-1;t.status===R.lyric&&(B=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyrics.length-1));let a=t.status;this.midiData.isKaraokeFile&&(t.status===R.text||t.status===R.lyric)&&(B=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyricsTicks.length),a=R.lyric),this.post(LA.textEvent,[e.messageData,a,B]);break;case R.midiPort:this.assignMIDIPort(A,e.messageData[0]);break;case R.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:H(`%cUnrecognized Event: %c${e.messageStatusByte}%c status byte: %c${Object.keys(R).find(g=>R[g]===t.status)}`,I.warn,I.unrecognized,I.warn,I.value);break}t.status>=0&&t.status<128&&this.post(LA.metaEvent,[e.messageStatusByte,e.messageData,A])}function Go(){for(let e=0;e<16;e++)this.synth.createWorkletChannel(!0)}function xo(){if(!this.isActive)return;let e=this.currentTime;for(;this.playedTime<e;){let A=this._findFirstEventIndex(),t=this.tracks[A][this.eventIndex[A]];if(this._processEvent(t,A),this.eventIndex[A]++,A=this._findFirstEventIndex(),this.tracks[A].length<=this.eventIndex[A]){if(this.loop){this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}let n=this.tracks[A][this.eventIndex[A]];this.playedTime+=this.oneTickToSeconds*(n.ticks-t.ticks);let o=this.loop&&(this.loopCount>0||this.loopCount===-1);if(this.midiData.loop.end<=t.ticks&&o){this.loopCount!==1/0&&(this.loopCount--,this.post(LA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}else if(e>=this.duration){if(o){this.loopCount!==1/0&&(this.loopCount--,this.post(LA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function Mo(){let e=0,A=1/0;return this.tracks.forEach((t,n)=>{this.eventIndex[n]>=t.length||t[this.eventIndex[n]].ticks<A&&(e=n,A=t[this.eventIndex[n]].ticks)}),e}var st=class{timeDivision=0;duration=0;tempoChanges=[{ticks:0,tempo:120}];copyright="";tracksAmount=0;lyrics=[];lyricsTicks=[];firstNoteOn=0;keyRange={min:0,max:127};lastVoiceEventTick=0;midiPorts=[0];midiPortChannelOffsets=[0];usedChannelsOnTrack=[];loop={start:0,end:0};midiName="";midiNameUsesFileName=!1;fileName="";rawMidiName=void 0;format=0;RMIDInfo={};bankOffset=0;isKaraokeFile=!1;isMultiPort=!1;MIDIticksToSeconds(A){let t=0;for(;A>0;){let n=this.tempoChanges.find(s=>s.ticks<A),o=A-n.ticks;t+=o*60/(n.tempo*this.timeDivision),A-=o}return t}};var Ot=class extends st{isEmbedded=!1;constructor(A){super(),this.timeDivision=A.timeDivision,this.duration=A.duration,this.tempoChanges=A.tempoChanges,this.copyright=A.copyright,this.tracksAmount=A.tracksAmount,this.lyrics=A.lyrics,this.lyricsTicks=A.lyricsTicks,this.firstNoteOn=A.firstNoteOn,this.keyRange=A.keyRange,this.lastVoiceEventTick=A.lastVoiceEventTick,this.midiPorts=A.midiPorts,this.midiPortChannelOffsets=A.midiPortChannelOffsets,this.usedChannelsOnTrack=A.usedChannelsOnTrack,this.loop=A.loop,this.midiName=A.midiName,this.midiNameUsesFileName=A.midiNameUsesFileName,this.fileName=A.fileName,this.rawMidiName=A.rawMidiName,this.format=A.format,this.RMIDInfo=A.RMIDInfo,this.bankOffset=A.bankOffset,this.isKaraokeFile=A.isKaraokeFile,this.isMultiPort=A.isMultiPort,this.isEmbedded=A.embeddedSoundFont!==void 0}},na={duration:99999,firstNoteOn:0,loop:{start:0,end:123456},lastVoiceEventTick:123456,lyrics:[],copyright:"",midiPorts:[],midiPortChannelOffsets:[],tracksAmount:0,tempoChanges:[{ticks:0,tempo:120}],fileName:"NOT_LOADED.mid",midiName:"Loading...",rawMidiName:new Uint8Array([76,111,97,100,105,110,103,46,46,46]),usedChannelsOnTrack:[],timeDivision:0,keyRange:{min:0,max:127},isEmbedded:!1,RMIDInfo:{},bankOffset:0,midiNameUsesFileName:!1,format:0};function N(e,A){let t=0;for(let n=0;n<A;n++)t|=e[e.currentIndex++]<<n*8;return t>>>0}function Pe(e,A,t){for(let n=0;n<t;n++)e[e.currentIndex++]=A>>n*8&255}function T(e,A){e[e.currentIndex++]=A&255,e[e.currentIndex++]=A>>8}function AA(e,A){Pe(e,A,4)}function xe(e,A){let t=A<<8|e;return t>32767?t-65536:t}function No(e){return e>127?e-256:e}function eA(e,A,t=void 0,n=!0){if(t){let o=e.slice(e.currentIndex,e.currentIndex+A);return e.currentIndex+=A,new TextDecoder(t.replace(/[^\x20-\x7E]/g,"")).decode(o.buffer)}else{let o=!1,s="";for(let r=0;r<A;r++){let B=e[e.currentIndex++];if(!o){if((B<32||B>127)&&B!==10){if(n){o=!0;continue}else if(B===0){o=!0;continue}}s+=String.fromCharCode(B)}}return s}}function rt(e,A=0){let t=e.length;A>0&&(t=A);let n=new L(t);return UA(n,e,A),n}function Qe(e){return rt(e,e.length+1)}function UA(e,A,t=0){t>0&&A.length>t&&(A=A.slice(0,t));for(let n=0;n<A.length;n++)e[e.currentIndex++]=A.charCodeAt(n);if(t>A.length)for(let n=0;n<t-A.length;n++)e[e.currentIndex++]=0;return e}var hA=class{constructor(A,t,n){this.header=A,this.size=t,this.chunkData=n}};function iA(e,A=!0,t=!1){let n=eA(e,4),o=N(e,4),s;return A&&(s=new L(e.buffer.slice(e.currentIndex,e.currentIndex+o))),(A||t)&&(e.currentIndex+=o),o%2!==0&&e[e.currentIndex]===0&&e.currentIndex++,new hA(n,o,s)}function uA(e,A=void 0){let t=8+e.size;e.size%2!==0&&t++,A&&(t+=A.length);let n=new L(t);return A&&(n.set(A,n.currentIndex),n.currentIndex+=A.length),UA(n,e.header),AA(n,t-8-(A?.length||0)),n.set(e.chunkData,n.currentIndex),n}function _(e,A,t=!1,n=!1){if(t){let g=new Uint8Array(A.length+1);g.set(A),A=g}let o=8,s=o+A.length,r=A.length;s%2!==0&&s++;let B=e;n&&(s+=4,r+=4,o+=4,B="LIST");let a=new L(s);return UA(a,B),AA(a,r),n&&UA(a,e),a.set(A,o),a}function PA(e,A){return e.find(t=>t.header!=="LIST"?!1:(t.chunkData.currentIndex=0,eA(t.chunkData,4)===A))}function yA(e){let A=0;for(;e;){let t=e[e.currentIndex++];if(A=A<<7|t&127,t>>7!==1)break}return A}function Pt(e){let A=[e&127];for(e>>=7;e>0;)A.unshift(e&127|128),e>>=7;return A}var i={INVALID:-1,startAddrsOffset:0,endAddrOffset:1,startloopAddrsOffset:2,endloopAddrsOffset:3,startAddrsCoarseOffset:4,modLfoToPitch:5,vibLfoToPitch:6,modEnvToPitch:7,initialFilterFc:8,initialFilterQ:9,modLfoToFilterFc:10,modEnvToFilterFc:11,endAddrsCoarseOffset:12,modLfoToVolume:13,unused1:14,chorusEffectsSend:15,reverbEffectsSend:16,pan:17,unused2:18,unused3:19,unused4:20,delayModLFO:21,freqModLFO:22,delayVibLFO:23,freqVibLFO:24,delayModEnv:25,attackModEnv:26,holdModEnv:27,decayModEnv:28,sustainModEnv:29,releaseModEnv:30,keyNumToModEnvHold:31,keyNumToModEnvDecay:32,delayVolEnv:33,attackVolEnv:34,holdVolEnv:35,decayVolEnv:36,sustainVolEnv:37,releaseVolEnv:38,keyNumToVolEnvHold:39,keyNumToVolEnvDecay:40,instrument:41,reserved1:42,keyRange:43,velRange:44,startloopAddrsCoarseOffset:45,keyNum:46,velocity:47,initialAttenuation:48,reserved2:49,endloopAddrsCoarseOffset:50,coarseTune:51,fineTune:52,sampleID:53,sampleModes:54,reserved3:55,scaleTuning:56,exclusiveClass:57,overridingRootKey:58,unused5:59,endOper:60},Z=[];Z[i.startAddrsOffset]={min:0,max:32768,def:0};Z[i.endAddrOffset]={min:-32768,max:32768,def:0};Z[i.startloopAddrsOffset]={min:-32768,max:32768,def:0};Z[i.endloopAddrsOffset]={min:-32768,max:32768,def:0};Z[i.startAddrsCoarseOffset]={min:0,max:32768,def:0};Z[i.modLfoToPitch]={min:-12e3,max:12e3,def:0};Z[i.vibLfoToPitch]={min:-12e3,max:12e3,def:0};Z[i.modEnvToPitch]={min:-12e3,max:12e3,def:0};Z[i.initialFilterFc]={min:1500,max:13500,def:13500};Z[i.initialFilterQ]={min:0,max:960,def:0};Z[i.modLfoToFilterFc]={min:-12e3,max:12e3,def:0};Z[i.modEnvToFilterFc]={min:-12e3,max:12e3,def:0};Z[i.endAddrsCoarseOffset]={min:-32768,max:32768,def:0};Z[i.modLfoToVolume]={min:-960,max:960,def:0};Z[i.chorusEffectsSend]={min:0,max:1e3,def:0};Z[i.reverbEffectsSend]={min:0,max:1e3,def:0};Z[i.pan]={min:-500,max:500,def:0};Z[i.delayModLFO]={min:-12e3,max:5e3,def:-12e3};Z[i.freqModLFO]={min:-16e3,max:4500,def:0};Z[i.delayVibLFO]={min:-12e3,max:5e3,def:-12e3};Z[i.freqVibLFO]={min:-16e3,max:4500,def:0};Z[i.delayModEnv]={min:-32768,max:5e3,def:-32768};Z[i.attackModEnv]={min:-32768,max:8e3,def:-32768};Z[i.holdModEnv]={min:-12e3,max:5e3,def:-12e3};Z[i.decayModEnv]={min:-12e3,max:8e3,def:-12e3};Z[i.sustainModEnv]={min:0,max:1e3,def:0};Z[i.releaseModEnv]={min:-7200,max:8e3,def:-12e3};Z[i.keyNumToModEnvHold]={min:-1200,max:1200,def:0};Z[i.keyNumToModEnvDecay]={min:-1200,max:1200,def:0};Z[i.delayVolEnv]={min:-12e3,max:5e3,def:-12e3};Z[i.attackVolEnv]={min:-12e3,max:8e3,def:-12e3};Z[i.holdVolEnv]={min:-12e3,max:5e3,def:-12e3};Z[i.decayVolEnv]={min:-12e3,max:8e3,def:-12e3};Z[i.sustainVolEnv]={min:0,max:1440,def:0};Z[i.releaseVolEnv]={min:-7200,max:8e3,def:-12e3};Z[i.keyNumToVolEnvHold]={min:-1200,max:1200,def:0};Z[i.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0};Z[i.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};Z[i.keyNum]={min:-1,max:127,def:-1};Z[i.velocity]={min:-1,max:127,def:-1};Z[i.initialAttenuation]={min:-250,max:1440,def:0};Z[i.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};Z[i.coarseTune]={min:-120,max:120,def:0};Z[i.fineTune]={min:-12700,max:12700,def:0};Z[i.scaleTuning]={min:0,max:1200,def:100};Z[i.exclusiveClass]={min:0,max:99999,def:0};Z[i.overridingRootKey]={min:-1,max:127,def:-1};Z[i.sampleModes]={min:0,max:3,def:0};var U=class{generatorType=i.INVALID;generatorValue=0;constructor(A=i.INVALID,t=0,n=!0){if(this.generatorType=A,t===void 0)throw new Error("No value provided.");if(this.generatorValue=Math.round(t),n){let o=Z[A];o!==void 0&&(this.generatorValue=Math.max(o.min,Math.min(o.max,this.generatorValue)))}}};function bo(e,A,t){let n=Z[e]||{min:0,max:32768,def:0},o=A.find(g=>g.generatorType===e),s=0;o&&(s=o.generatorValue);let r=t.find(g=>g.generatorType===e),B=n.def;r&&(B=r.generatorValue);let a=B+s;return e===i.initialAttenuation?a:Math.max(n.min,Math.min(n.max,a))}var z={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},RA={linear:0,concave:1,convex:2,switch:3},W=class e{currentValue=0;sourceEnum;secondarySourceEnum;modulatorDestination;transformAmount;transformType;constructor(A,t,n,o,s){this.sourceEnum=A,this.modulatorDestination=n,this.secondarySourceEnum=t,this.transformAmount=o,this.transformType=s,this.modulatorDestination>58&&(this.modulatorDestination=i.INVALID),this.sourcePolarity=this.sourceEnum>>9&1,this.sourceDirection=this.sourceEnum>>8&1,this.sourceUsesCC=this.sourceEnum>>7&1,this.sourceIndex=this.sourceEnum&127,this.sourceCurveType=this.sourceEnum>>10&3,this.secSrcPolarity=this.secondarySourceEnum>>9&1,this.secSrcDirection=this.secondarySourceEnum>>8&1,this.secSrcUsesCC=this.secondarySourceEnum>>7&1,this.secSrcIndex=this.secondarySourceEnum&127,this.secSrcCurveType=this.secondarySourceEnum>>10&3,this.isEffectModulator=(this.sourceEnum===219||this.sourceEnum===221)&&this.secondarySourceEnum===0&&(this.modulatorDestination===i.reverbEffectsSend||this.modulatorDestination===i.chorusEffectsSend)}static copy(A){return new e(A.sourceEnum,A.secondarySourceEnum,A.modulatorDestination,A.transformAmount,A.transformType)}static isIdentical(A,t,n=!1){return A.sourceEnum===t.sourceEnum&&A.modulatorDestination===t.modulatorDestination&&A.secondarySourceEnum===t.secondarySourceEnum&&A.transformType===t.transformType&&(!n||A.transformAmount===t.transformAmount)}static debugString(A){function t(s,r){return Object.keys(s).find(B=>s[B]===r)}let n=t(RA,A.sourceCurveType);n+=A.sourcePolarity===0?" unipolar ":" bipolar ",n+=A.sourceDirection===0?"forwards ":"backwards ",A.sourceUsesCC?n+=t(p,A.sourceIndex):n+=t(z,A.sourceIndex);let o=t(RA,A.secSrcCurveType);return o+=A.secSrcPolarity===0?" unipolar ":" bipolar ",o+=A.secSrcCurveType===0?"forwards ":"backwards ",A.secSrcUsesCC?o+=t(p,A.secSrcIndex):o+=t(z,A.secSrcIndex),`Modulator:
2
2
  Source: ${n}
3
3
  Secondary source: ${o}
4
4
  Destination: ${t(i,A.modulatorDestination)}
@@ -6,16 +6,16 @@ var Vn=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(
6
6
  Transform type: ${A.transformType}
7
7
 
8
8
 
9
- `}sumTransform(A){return new e(this.sourceEnum,this.secondarySourceEnum,this.modulatorDestination,this.transformAmount+A.transformAmount,this.transformType)}},zt=960,jt=fA.concave;function PA(e,A,t,n,o){return e<<10|A<<9|t<<8|n<<7|o}var kr=[new P(PA(jt,0,1,0,W.noteOnVelocity),0,i.initialAttenuation,zt,0),new P(129,0,i.vibLfoToPitch,50,0),new P(PA(jt,0,1,1,m.mainVolume),0,i.initialAttenuation,zt,0),new P(13,0,i.vibLfoToPitch,50,0),new P(526,16,i.fineTune,12700,0),new P(650,0,i.pan,500,0),new P(PA(jt,0,1,1,m.expressionController),0,i.initialAttenuation,zt,0),new P(219,0,i.reverbEffectsSend,200,0),new P(221,0,i.chorusEffectsSend,200,0)],wr=[new P(PA(fA.linear,0,0,0,W.polyPressure),0,i.vibLfoToPitch,50,0),new P(PA(fA.linear,0,0,1,m.tremoloDepth),0,i.modLfoToVolume,24,0),new P(PA(fA.convex,1,0,1,m.attackTime),0,i.attackVolEnv,6e3,0),new P(PA(fA.linear,1,0,1,m.releaseTime),0,i.releaseVolEnv,3600,0),new P(PA(fA.linear,1,0,1,m.brightness),0,i.initialFilterFc,6e3,0),new P(PA(fA.linear,1,0,1,m.filterResonance),0,i.initialFilterQ,250,0)],ht=kr.concat(wr);var mA=128,lt=147,Ee=new Int16Array(lt).fill(0),pA=(e,A)=>Ee[e]=A<<7;pA(m.mainVolume,100);pA(m.balance,64);pA(m.expressionController,127);pA(m.pan,64);pA(m.portamentoOnOff,127);pA(m.filterResonance,64);pA(m.releaseTime,64);pA(m.attackTime,64);pA(m.brightness,64);pA(m.decayTime,64);pA(m.vibratoRate,64);pA(m.vibratoDepth,64);pA(m.vibratoDelay,64);pA(m.generalPurposeController6,64);pA(m.generalPurposeController8,64);pA(m.RPNLsb,127);pA(m.RPNMsb,127);pA(m.NRPNLsb,127);pA(m.NRPNMsb,127);var ct=1;Ee[m.portamentoControl]=ct;pA(mA+W.pitchWheel,64);pA(mA+W.pitchWheelRange,2);var aA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},$t=Object.keys(aA).length,An=new Float32Array($t);An[aA.modulationMultiplier]=1;var GA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},ro={velocityOverride:128};var io="spessasynth-worklet-system";var Qt="gs";function en(e){return new VA(e,w.systemExclusive,new U([65,16,66,18,64,0,127,0,65,247]))}function Se(e,A,t,n){return new VA(n,w.controllerChange|e%16,new U([A,t]))}function Fr(e,A){let t=16|[1,2,3,4,5,6,7,8,0,9,10,11,12,13,14,15][e%16],n=[65,16,66,18,64,t,21,1],s=128-(64+t+21+1)%128;return new VA(A,w.systemExclusive,new U([...n,s,247]))}function ao(e=[],A=[],t=[],n=[]){let o=this;uA("%cApplying changes to the MIDI file...",I.info);let s=new Set;e.forEach(x=>{s.add(x.channel)});let r="gs",B=!1,a=Array(o.tracks.length).fill(0),C=o.tracks.length;function d(){let x=0,b=1/0;return o.tracks.forEach((G,g)=>{a[g]>=G.length||G[a[g]].ticks<b&&(x=g,b=G[a[g]].ticks)}),x}let E=o.midiPorts.slice(),Q={},h=0;function y(x,b){o.usedChannelsOnTrack[x].size!==0&&(h===0&&(h+=16,Q[b]=0),Q[b]===void 0&&(Q[b]=h,h+=16),E[x]=b)}o.midiPorts.forEach((x,b)=>{y(b,x)});let f=h,S=Array(f).fill(!0),k=Array(f).fill(0),M=Array(f).fill(0);for(n.forEach(x=>{let b=Math.trunc(x.keyShift),G=x.keyShift-b;k[x.channel]=b,M[x.channel]=G});C>0;){let x=d(),b=o.tracks[x];if(a[x]>=b.length){C--;continue}let G=a[x]++,g=b[G],F=()=>{b.splice(G,1),a[x]--},H=(rA,V=0)=>{b.splice(G+V,0,rA),a[x]++},oA=Q[E[x]]||0;if(g.messageStatusByte===w.midiPort){y(x,g.messageData[0]);continue}if(g.messageStatusByte<=w.sequenceSpecific&&g.messageStatusByte>=w.sequenceNumber)continue;let tA=g.messageStatusByte&240,O=g.messageStatusByte&15,_=O+oA;if(t.indexOf(_)!==-1){F();continue}switch(tA){case w.noteOn:if(S[_]){S[_]=!1,A.filter(IA=>IA.channel===_).forEach(IA=>{let UA=Se(O,IA.controllerNumber,IA.controllerValue,g.ticks);H(UA)});let nA=M[_];if(nA!==0){let IA=nA*64+64,UA=Se(O,m.RPNMsb,0,g.ticks),WA=Se(O,m.RPNLsb,1,g.ticks),Ue=Se(_,m.dataEntryMsb,IA,g.ticks),se=Se(O,m.lsbForControl6DataEntry,0,g.ticks);H(se),H(Ue),H(WA),H(UA)}if(s.has(_)){let IA=e.find(Te=>Te.channel===_),UA=IA.bank,WA=IA.program;p(`%cSetting %c${IA.channel}%c to %c${UA}:${WA}%c. Track num: %c${x}`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized);let Ue=new VA(g.ticks,w.programChange|O,new U([WA]));if(H(Ue),!IA.isDrum&&r==="xg"){let Te=Se(O,m.lsbForControl0BankSelect,UA,g.ticks);H(Te)}let se=Se(O,m.bankSelect,UA,g.ticks);H(se),IA.isDrum&&(r==="gs"&&O!==9?(p(`%cAdding GS Drum change on track %c${x}`,I.recognized,I.value),H(Fr(O,g.ticks))):r==="xg"&&(p(`%cAdding XG Drum change on track %c${x}`,I.recognized,I.value),UA=127))}}g.messageData[0]+=k[_];break;case w.noteOff:g.messageData[0]+=k[_];break;case w.programChange:if(s.has(_)){F();continue}break;case w.controllerChange:let rA=g.messageData[0];if(A.find(nA=>nA.channel===_&&rA===nA.controllerNumber)!==void 0){F();continue}if((rA===m.bankSelect||rA===m.lsbForControl0BankSelect)&&s.has(_)){F();continue}break;case w.systemExclusive:if(g.messageData[0]===67&&g.messageData[2]===76&&g.messageData[5]===126&&g.messageData[6]===0)p("%cXG system on detected",I.info),r="xg",B=!0;else if(g.messageData[0]===67&&g.messageData[2]===76&&g.messageData[3]===8&&g.messageData[5]===3)s.has(g.messageData[4]+oA)&&F();else if(g.messageData[0]===65&&g.messageData[2]===66&&g.messageData[6]===127){B=!0,p("%cGS on detected!",I.recognized);break}else g.messageData[0]===126&&g.messageData[2]===9&&(p("%cGM/2 on detected, removing!",I.info),F(),B=!1)}}if(!B){let x=0;o.tracks[0][0].messageStatusByte===w.trackName&&x++,o.tracks[0].splice(x,0,en(0)),p("%cGS on not detected. Adding it.",I.info)}Z()}function Io(e){let A=[],t=[],n=[],o=[];e.channelSnapshots.forEach((s,r)=>{if(s.isMuted){t.push(r);return}let B=s.channelTransposeKeyShift+s.customControllers[aA.channelTransposeFine]/100;B!==0&&A.push({channel:r,keyShift:B}),s.lockPreset&&n.push({channel:r,program:s.program,bank:s.bank,isDrum:s.drumChannel}),s.lockedControllers.forEach((a,C)=>{if(!a||C>127||C===m.bankSelect)return;let d=s.midiControllers[C]>>7;o.push({channel:r,controllerNumber:C,controllerValue:d})})}),this.modifyMIDI(n,o,t,A)}var yA={name:"INAM",album:"IPRD",album2:"IALB",artist:"IART",genre:"IGNR",picture:"IPIC",copyright:"ICOP",creationDate:"ICRD",comment:"ICMT",engineer:"IENG",software:"ISFT",encoding:"IENC",midiEncoding:"MENC",bankOffset:"DBNK"},Be="utf-8",Rr="Created using SpessaSynth";function go(e,A,t=0,n="Shift_JIS",o={},s=!0){let r=this;if(OA("%cWriting the RMIDI File...",I.info),p(`%cConfiguration: Bank offset: %c${t}%c, encoding: %c${n}`,I.info,I.value,I.info,I.value),p("metadata",o),p("Initial bank offset",r.bankOffset),s){let k=function(){let G=0,g=1/0;return r.tracks.forEach((F,H)=>{f[H]>=F.length||F[f[H]].ticks<g&&(G=H,g=F[f[H]].ticks)}),G},h="gm",y=[],f=Array(r.tracks.length).fill(0),S=r.tracks.length,M=Array(r.tracks.length).fill(0),x=16+r.midiPortChannelOffsets.reduce((G,g)=>g>G?g:G),b=[];for(let G=0;G<x;G++)b.push({program:0,drums:G%16===9,lastBank:void 0,hasBankSelect:!1});for(;S>0;){let G=k(),g=r.tracks[G];if(f[G]>=g.length){S--;continue}let F=g[f[G]];f[G]++;let H=r.midiPortChannelOffsets[M[G]];if(F.messageStatusByte===w.midiPort){M[G]=F.messageData[0];continue}let oA=F.messageStatusByte&240;if(oA!==w.controllerChange&&oA!==w.programChange&&oA!==w.systemExclusive)continue;if(oA===w.systemExclusive){if(F.messageData[0]!==65||F.messageData[2]!==66||F.messageData[3]!==18||F.messageData[4]!==64||(F.messageData[5]&16)===0||F.messageData[6]!==21){F.messageData[0]===67&&F.messageData[2]===76&&F.messageData[5]===126&&F.messageData[6]===0?h="xg":F.messageData[0]===65&&F.messageData[2]===66&&F.messageData[6]===127?h="gs":F.messageData[0]===126&&F.messageData[2]===9&&(h="gm",y.push({tNum:G,e:F}));continue}let _=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][F.messageData[5]&15]+H;b[_].drums=!!(F.messageData[7]>0&&F.messageData[5]>>4);continue}let tA=(F.messageStatusByte&15)+H,O=b[tA];if(oA===w.programChange){O.drums?A.presets.findIndex(V=>V.program===F.messageData[0]&&V.bank===128)===-1&&(F.messageData[0]=A.presets.find(V=>V.bank===128)?.program||0):A.presets.findIndex(V=>V.program===F.messageData[0]&&V.bank!==128)===-1&&(F.messageData[0]=A.presets.find(V=>V.bank!==128)?.program||0),O.program=F.messageData[0];let _=Math.max(0,O.lastBank?.messageData[1]-r.bankOffset),rA=O.drums?128:_;if(O.lastBank===void 0)continue;if(h==="xg"&&O.drums&&(b[tA].lastBank.messageData[1]=127),A.presets.findIndex(V=>V.bank===rA&&V.program===F.messageData[0])===-1){let V=A.presets.find(nA=>nA.program===F.messageData[0])?.bank+t||t;O.lastBank.messageData[1]=V,p(`%cNo preset %c${rA}:${F.messageData[0]}%c. Changing bank to ${V}.`,I.info,I.recognized,I.info)}else{let nA=(rA===128?h==="xg"?127:0:_)+t;O.lastBank.messageData[1]=nA,p(`%cPreset %c${rA}:${F.messageData[0]}%c exists. Changing bank to ${nA}.`,I.info,I.recognized,I.info)}continue}F.messageData[0]===m.bankSelect&&(O.hasBankSelect=!0,h==="xg"&&(O.drums=F.messageData[1]===120||F.messageData[1]===126||F.messageData[1]===127),O.lastBank=F)}if(b.forEach((G,g)=>{if(G.hasBankSelect===!0)return;let F=g%16,H=w.programChange|F,oA=Math.floor(g/16)*16,tA=r.midiPortChannelOffsets.indexOf(oA),O=r.tracks.find((nA,IA)=>r.midiPorts[IA]===tA&&r.usedChannelsOnTrack[IA].has(F));if(O===void 0)return;let _=O.findIndex(nA=>nA.messageStatusByte===H);if(_===-1){let nA=O.findIndex(WA=>WA.messageStatusByte>128&&WA.messageStatusByte<240&&(WA.messageStatusByte&15)===F);if(nA===-1)return;let IA=O[nA].ticks,UA=A.getPreset(0,0).program;O.splice(nA,0,new VA(IA,w.programChange|F,new U([UA]))),_=nA}p(`%cAdding bank select for %c${g}`,I.info,I.recognized);let rA=O[_].ticks,V=A.getPreset(0,G.program)?.bank+t||t;O.splice(_,0,new VA(rA,w.controllerChange|F,new U([m.bankSelect,V])))}),h!=="gs"&&h!=="xg"){for(let g of y)r.tracks[g.tNum].splice(r.tracks[g.tNum].indexOf(g.e),1);let G=0;r.tracks[0][0].messageStatusByte===w.trackName&&G++,r.tracks[0].splice(G,0,en(0))}}let B=new U(r.writeMIDI().buffer),a=[Me("INFO")],C=new TextEncoder;if(a.push(X(yA.software,C.encode("SpessaSynth"),!0)),o.name!==void 0?(a.push(X(yA.name,C.encode(o.name),!0)),n=Be):a.push(X(yA.name,r.rawMidiName,!0)),o.creationDate!==void 0)n=Be,a.push(X(yA.creationDate,C.encode(o.creationDate),!0));else{let h=new Date().toLocaleString(void 0,{weekday:"long",year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"});a.push(X(yA.creationDate,ne(h),!0))}if(o.comment!==void 0&&(n=Be,a.push(X(yA.comment,C.encode(o.comment)))),o.engineer!==void 0&&a.push(X(yA.engineer,C.encode(o.engineer),!0)),o.album!==void 0&&(n=Be,a.push(X(yA.album,C.encode(o.album),!0)),a.push(X(yA.album2,C.encode(o.album),!0))),o.artist!==void 0&&(n=Be,a.push(X(yA.artist,C.encode(o.artist),!0))),o.genre!==void 0&&(n=Be,a.push(X(yA.genre,C.encode(o.genre),!0))),o.picture!==void 0&&a.push(X(yA.picture,new Uint8Array(o.picture))),o.copyright!==void 0)n=Be,a.push(X(yA.copyright,C.encode(o.copyright),!0));else{let h=r.copyright.length>0?r.copyright:Rr;a.push(X(yA.copyright,ne(h)))}let d=new U(2);ye(d,t,2),a.push(X(yA.bankOffset,d)),o.midiEncoding!==void 0&&(a.push(X(yA.midiEncoding,C.encode(o.midiEncoding))),n=Be),a.push(X(yA.encoding,ne(n)));let E=dA(a),Q=dA([Me("RMID"),X("data",B),X("LIST",E),e]);return p("%cFinished!",I.info),Z(),X("RIFF",Q)}function Co(){let e=this;if(!e.tracks)throw new Error("MIDI has no tracks!");let A=[];for(let o of e.tracks){let s=[],r=0,B;for(let a of o){let C=a.ticks-r,d;a.messageStatusByte<=w.keySignature||a.messageStatusByte===w.sequenceSpecific?d=[255,a.messageStatusByte,...Bt(a.messageData.length),...a.messageData]:a.messageStatusByte===w.systemExclusive?d=[240,...Bt(a.messageData.length),...a.messageData]:(d=[],B!==a.messageStatusByte&&(B=a.messageStatusByte,d.push(a.messageStatusByte)),d.push(...a.messageData)),s.push(...Bt(C)),s.push(...d),r+=C}A.push(new Uint8Array(s))}function t(o,s){for(let r=0;r<o.length;r++)s.push(o.charCodeAt(r))}let n=[];t("MThd",n),n.push(...Ve(6,4)),n.push(0,e.format),n.push(...Ve(e.tracksAmount,2)),n.push(...Ve(e.timeDivision,2));for(let o of A)t("MTrk",n),n.push(...Ve(o.length,4)),n.push(...o);return new Uint8Array(n)}function Eo(e){let A=this;uA("%cSearching for all used programs and keys...",I.info);let t=16+A.midiPortChannelOffsets.reduce((E,Q)=>Q>E?Q:E),n=[];for(let E=0;E<t;E++){let Q=E%16===9?128:0;n.push({program:0,bank:Q,drums:E%16===9,string:`${Q}:0`})}function o(E){let Q=e.getPreset(E.bank,E.program);E.bank=Q.bank,E.program=Q.program,E.string=E.bank+":"+E.program,s[E.string]||(p(`%cDetected a new preset: %c${E.string}`,I.info,I.recognized),s[E.string]=new Set)}let s={},r=Array(A.tracks.length).fill(0),B=A.tracks.length;function a(){let E=0,Q=1/0;return A.tracks.forEach((h,y)=>{r[y]>=h.length||h[r[y]].ticks<Q&&(E=y,Q=h[r[y]].ticks)}),E}let C=A.midiPorts.slice(),d="gs";for(;B>0;){let E=a(),Q=A.tracks[E];if(r[E]>=Q.length){B--;continue}let h=Q[r[E]];if(r[E]++,h.messageStatusByte===w.midiPort){C[E]=h.messageData[0];continue}let y=h.messageStatusByte&240;if(y!==w.noteOn&&y!==w.controllerChange&&y!==w.programChange&&y!==w.systemExclusive)continue;let f=(h.messageStatusByte&15)+A.midiPortChannelOffsets[C[E]]||0,S=n[f];switch(y){case w.programChange:S.program=h.messageData[0],o(S);break;case w.controllerChange:if(h.messageData[0]!==m.bankSelect||d==="gs"&&S.drums)continue;let k=h.messageData[1],M=Math.max(0,k-A.bankOffset);if(d==="xg"){let G=k===120||k===126||k===127;G!==S.drums?(S.drums=G,S.bank=S.drums?128:M,o(S)):S.bank=S.drums?128:M;continue}n[f].bank=M;break;case w.noteOn:if(h.messageData[1]===0)continue;o(S),s[S.string].add(`${h.messageData[0]}-${h.messageData[1]}`);break;case w.systemExclusive:if(h.messageData[0]!==65||h.messageData[2]!==66||h.messageData[3]!==18||h.messageData[4]!==64||(h.messageData[5]&16)===0||h.messageData[6]!==21){h.messageData[0]===67&&h.messageData[2]===76&&h.messageData[5]===126&&h.messageData[6]===0&&(d="xg");continue}let x=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][h.messageData[5]&15]+A.midiPortChannelOffsets[C[E]],b=!!(h.messageData[7]>0&&h.messageData[5]>>4);S=n[x],S.drums=b,S.bank=b?128:0,o(S);break}}for(let E of Object.keys(s))s[E].size===0&&(p(`%cDetected change but no keys for %c${E}`,I.info,I.value),delete s[E]);return Z(),s}var _A=class e extends xe{embeddedSoundFont=void 0;tracks=[];isDLSRMIDI=!1;static copyFrom(A){let t=new e;return t.midiName=A.midiName,t.midiNameUsesFileName=A.midiNameUsesFileName,t.fileName=A.fileName,t.timeDivision=A.timeDivision,t.duration=A.duration,t.copyright=A.copyright,t.tracksAmount=A.tracksAmount,t.firstNoteOn=A.firstNoteOn,t.keyRange={...A.keyRange},t.lastVoiceEventTick=A.lastVoiceEventTick,t.loop={...A.loop},t.format=A.format,t.bankOffset=A.bankOffset,t.isKaraokeFile=A.isKaraokeFile,t.isDLSRMIDI=A.isDLSRMIDI,t.tempoChanges=[...A.tempoChanges],t.lyrics=A.lyrics.map(n=>new Uint8Array(n)),t.lyricsTicks=[...A.lyricsTicks],t.midiPorts=[...A.midiPorts],t.midiPortChannelOffsets=[...A.midiPortChannelOffsets],t.usedChannelsOnTrack=A.usedChannelsOnTrack.map(n=>new Set(n)),t.rawMidiName=A.rawMidiName?new Uint8Array(A.rawMidiName):void 0,t.embeddedSoundFont=A.embeddedSoundFont?A.embeddedSoundFont.slice(0):void 0,t.RMIDInfo={...A.RMIDInfo},t.tracks=A.tracks.map(n=>[...n]),t}_parseInternal(){OA("%cInterpreting MIDI events...",I.info);let A=!1;this.keyRange={max:0,min:127};let t=[],n=!1;typeof this.RMIDInfo.ICOP<"u"&&(n=!0);let o=!1;typeof this.RMIDInfo.INAM<"u"&&(o=!0);let s=null,r=null;for(let E=0;E<this.tracks.length;E++){let Q=this.tracks[E],h=new Set,y=!1;for(let f of Q){if(f.messageStatusByte>=128&&f.messageStatusByte<240){y=!0;for(let k=0;k<f.messageData.length;k++)f.messageData[k]=Math.min(127,f.messageData[k]);switch(f.ticks>this.lastVoiceEventTick&&(this.lastVoiceEventTick=f.ticks),f.messageStatusByte&240){case w.controllerChange:switch(f.messageData[0]){case 2:case 116:s=f.ticks;break;case 4:case 117:r===null?r=f.ticks:r=0;break;case 0:this.isDLSRMIDI&&f.messageData[1]!==0&&f.messageData[1]!==127&&(p("%cDLS RMIDI with offset 1 detected!",I.recognized),this.bankOffset=1)}break;case w.noteOn:h.add(f.messageStatusByte&15);let k=f.messageData[0];this.keyRange.min=Math.min(this.keyRange.min,k),this.keyRange.max=Math.max(this.keyRange.max,k);break}}f.messageData.currentIndex=0;let S=AA(f.messageData,f.messageData.length);switch(f.messageData.currentIndex=0,f.messageStatusByte){case w.setTempo:f.messageData.currentIndex=0,this.tempoChanges.push({ticks:f.ticks,tempo:6e7/ie(f.messageData,3)}),f.messageData.currentIndex=0;break;case w.marker:switch(S.trim().toLowerCase()){default:break;case"start":case"loopstart":s=f.ticks;break;case"loopend":r=f.ticks}f.messageData.currentIndex=0;break;case w.copyright:n||(f.messageData.currentIndex=0,t.push(AA(f.messageData,f.messageData.length,void 0,!1)),f.messageData.currentIndex=0);break;case w.lyric:if(S.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,p("%cKaraoke MIDI detected!",I.recognized)),this.isKaraokeFile)f.messageStatusByte=w.text;else{this.lyrics.push(f.messageData),this.lyricsTicks.push(f.ticks);break}case w.text:let M=S.trim();M.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,p("%cKaraoke MIDI detected!",I.recognized)):this.isKaraokeFile&&(M.startsWith("@T")||M.startsWith("@A")?A?t.push(M.substring(2).trim()):(this.midiName=M.substring(2).trim(),A=!0,o=!0,this.rawMidiName=Me(this.midiName)):M[0]!=="@"&&(this.lyrics.push(Pn(f.messageData)),this.lyricsTicks.push(f.ticks)));break}}if(this.usedChannelsOnTrack.push(h),!y){let f=Q.find(S=>S.messageStatusByte===w.trackName);if(f){f.messageData.currentIndex=0;let S=AA(f.messageData,f.messageData.length);t.push(S)}}}this.tempoChanges.reverse(),p("%cCorrecting loops, ports and detecting notes...",I.info);let B=[];for(let E of this.tracks){let Q=E.find(h=>(h.messageStatusByte&240)===w.noteOn);Q&&B.push(Q.ticks)}this.firstNoteOn=Math.min(...B),p(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,I.info,I.recognized,I.info),s!==null&&r===null?(s=this.firstNoteOn,r=this.lastVoiceEventTick):(s===null&&(s=this.firstNoteOn),(r===null||r===0)&&(r=this.lastVoiceEventTick)),this.loop={start:s,end:r},p(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,I.info,I.recognized,I.info,I.recognized);let a=0;this.midiPorts=[],this.midiPortChannelOffsets=[];for(let E=0;E<this.tracks.length;E++)if(this.midiPorts.push(-1),this.usedChannelsOnTrack[E].size!==0)for(let Q of this.tracks[E]){if(Q.messageStatusByte!==w.midiPort)continue;let h=Q.messageData[0];this.midiPorts[E]=h,this.midiPortChannelOffsets[h]===void 0&&(this.midiPortChannelOffsets[h]=a,a+=16)}let C=1/0;for(let E of this.midiPorts)E!==-1&&C>E&&(C=E);if(C===1/0&&(C=0),this.midiPorts=this.midiPorts.map(E=>E===-1?C:E),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?p("%cNo additional MIDI Ports detected.",I.info):p("%cMIDI Ports detected!",I.recognized),!o)if(this.tracks.length>1){if(this.tracks[0].find(E=>E.messageStatusByte>=w.noteOn&&E.messageStatusByte<w.polyPressure)===void 0){let E=this.tracks[0].find(Q=>Q.messageStatusByte===w.trackName);E&&(this.rawMidiName=E.messageData,E.messageData.currentIndex=0,this.midiName=AA(E.messageData,E.messageData.length,void 0,!1))}}else{let E=this.tracks[0].find(Q=>Q.messageStatusByte===w.trackName);E&&(this.rawMidiName=E.messageData,E.messageData.currentIndex=0,this.midiName=AA(E.messageData,E.messageData.length,void 0,!1))}if(n||(this.copyright=t.map(E=>E.trim().replace(/(\r?\n)+/g,`
9
+ `}sumTransform(A){return new e(this.sourceEnum,this.secondarySourceEnum,this.modulatorDestination,this.transformAmount+A.transformAmount,this.transformType)}},Gn=960,xn=RA.concave;function oe(e,A,t,n,o){return e<<10|A<<9|t<<8|n<<7|o}var jr=[new W(oe(xn,0,1,0,z.noteOnVelocity),0,i.initialAttenuation,Gn,0),new W(129,0,i.vibLfoToPitch,50,0),new W(oe(xn,0,1,1,p.mainVolume),0,i.initialAttenuation,Gn,0),new W(13,0,i.vibLfoToPitch,50,0),new W(526,16,i.fineTune,12700,0),new W(650,0,i.pan,500,0),new W(oe(xn,0,1,1,p.expressionController),0,i.initialAttenuation,Gn,0),new W(219,0,i.reverbEffectsSend,200,0),new W(221,0,i.chorusEffectsSend,200,0)],$r=[new W(oe(RA.linear,0,0,0,z.polyPressure),0,i.vibLfoToPitch,50,0),new W(oe(RA.linear,0,0,1,p.tremoloDepth),0,i.modLfoToVolume,24,0),new W(oe(RA.convex,1,0,1,p.attackTime),0,i.attackVolEnv,6e3,0),new W(oe(RA.linear,1,0,1,p.releaseTime),0,i.releaseVolEnv,3600,0),new W(oe(RA.linear,1,0,1,p.brightness),0,i.initialFilterFc,6e3,0),new W(oe(RA.linear,1,0,1,p.filterResonance),0,i.initialFilterQ,250,0)],Vt=jr.concat($r);var GA=128,Zt=147,Me=new Int16Array(Zt).fill(0),xA=(e,A)=>Me[e]=A<<7;xA(p.mainVolume,100);xA(p.balance,64);xA(p.expressionController,127);xA(p.pan,64);xA(p.portamentoOnOff,127);xA(p.filterResonance,64);xA(p.releaseTime,64);xA(p.attackTime,64);xA(p.brightness,64);xA(p.decayTime,64);xA(p.vibratoRate,64);xA(p.vibratoDepth,64);xA(p.vibratoDelay,64);xA(p.generalPurposeController6,64);xA(p.generalPurposeController8,64);xA(p.RPNLsb,127);xA(p.RPNMsb,127);xA(p.NRPNLsb,127);xA(p.NRPNMsb,127);var Xt=1;Me[p.portamentoControl]=Xt;xA(GA+z.pitchWheel,64);xA(GA+z.pitchWheelRange,2);var lA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},Mn=Object.keys(lA).length,Nn=new Float32Array(Mn);Nn[lA.modulationMultiplier]=1;var vA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},Lo={velocityOverride:128};var Uo="spessasynth-worklet-system";var Wt="gs";function bn(e){return new te(e,R.systemExclusive,new L([65,16,66,18,64,0,127,0,65,247]))}function Ve(e,A,t,n){return new te(n,R.controllerChange|e%16,new L([A,t]))}function Ai(e,A){let t=16|[1,2,3,4,5,6,7,8,0,9,10,11,12,13,14,15][e%16],n=[65,16,66,18,64,t,21,1],s=128-(64+t+21+1)%128;return new te(A,R.systemExclusive,new L([...n,s,247]))}function To(e=[],A=[],t=[],n=[]){let o=this;FA("%cApplying changes to the MIDI file...",I.info);let s=new Set;e.forEach(M=>{s.add(M.channel)});let r="gs",B=!1,a=Array(o.tracks.length).fill(0),g=o.tracks.length;function d(){let M=0,b=1/0;return o.tracks.forEach((x,C)=>{a[C]>=x.length||x[a[C]].ticks<b&&(M=C,b=x[a[C]].ticks)}),M}let E=o.midiPorts.slice(),c={},h=0;function m(M,b){o.usedChannelsOnTrack[M].size!==0&&(h===0&&(h+=16,c[b]=0),c[b]===void 0&&(c[b]=h,h+=16),E[M]=b)}o.midiPorts.forEach((M,b)=>{m(b,M)});let u=h,S=Array(u).fill(!0),w=Array(u).fill(0),D=Array(u).fill(0);for(n.forEach(M=>{let b=Math.trunc(M.keyShift),x=M.keyShift-b;w[M.channel]=b,D[M.channel]=x});g>0;){let M=d(),b=o.tracks[M];if(a[M]>=b.length){g--;continue}let x=a[M]++,C=b[x],F=()=>{b.splice(x,1),a[M]--},J=(EA,X=0)=>{b.splice(x+X,0,EA),a[M]++},aA=c[E[M]]||0;if(C.messageStatusByte===R.midiPort){m(M,C.messageData[0]);continue}if(C.messageStatusByte<=R.sequenceSpecific&&C.messageStatusByte>=R.sequenceNumber)continue;let sA=C.messageStatusByte&240,K=C.messageStatusByte&15,j=K+aA;if(t.indexOf(j)!==-1){F();continue}switch(sA){case R.noteOn:if(S[j]){S[j]=!1,A.filter(BA=>BA.channel===j).forEach(BA=>{let v=Ve(K,BA.controllerNumber,BA.controllerValue,C.ticks);J(v)});let rA=D[j];if(rA!==0){let BA=rA*64+64,v=Ve(K,p.RPNMsb,0,C.ticks),q=Ve(K,p.RPNLsb,1,C.ticks),$=Ve(j,p.dataEntryMsb,BA,C.ticks),gA=Ve(K,p.lsbForControl6DataEntry,0,C.ticks);J(gA),J($),J(q),J(v)}if(s.has(j)){let BA=e.find(IA=>IA.channel===j),v=BA.bank,q=BA.program;y(`%cSetting %c${BA.channel}%c to %c${v}:${q}%c. Track num: %c${M}`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized);let $=new te(C.ticks,R.programChange|K,new L([q]));if(J($),!BA.isDrum&&r==="xg"){let IA=Ve(K,p.lsbForControl0BankSelect,v,C.ticks);J(IA)}let gA=Ve(K,p.bankSelect,v,C.ticks);J(gA),BA.isDrum&&(r==="gs"&&K!==9?(y(`%cAdding GS Drum change on track %c${M}`,I.recognized,I.value),J(Ai(K,C.ticks))):r==="xg"&&(y(`%cAdding XG Drum change on track %c${M}`,I.recognized,I.value),v=127))}}C.messageData[0]+=w[j];break;case R.noteOff:C.messageData[0]+=w[j];break;case R.programChange:if(s.has(j)){F();continue}break;case R.controllerChange:let EA=C.messageData[0];if(A.find(rA=>rA.channel===j&&EA===rA.controllerNumber)!==void 0){F();continue}if((EA===p.bankSelect||EA===p.lsbForControl0BankSelect)&&s.has(j)){F();continue}break;case R.systemExclusive:if(C.messageData[0]===67&&C.messageData[2]===76&&C.messageData[5]===126&&C.messageData[6]===0)y("%cXG system on detected",I.info),r="xg",B=!0;else if(C.messageData[0]===67&&C.messageData[2]===76&&C.messageData[3]===8&&C.messageData[5]===3)s.has(C.messageData[4]+aA)&&F();else if(C.messageData[0]===65&&C.messageData[2]===66&&C.messageData[6]===127){B=!0,y("%cGS on detected!",I.recognized);break}else C.messageData[0]===126&&C.messageData[2]===9&&(y("%cGM/2 on detected, removing!",I.info),F(),B=!1)}}if(!B){let M=0;o.tracks[0][0].messageStatusByte===R.trackName&&M++,o.tracks[0].splice(M,0,bn(0)),y("%cGS on not detected. Adding it.",I.info)}P()}function vo(e){let A=[],t=[],n=[],o=[];e.channelSnapshots.forEach((s,r)=>{if(s.isMuted){t.push(r);return}let B=s.channelTransposeKeyShift+s.customControllers[lA.channelTransposeFine]/100;B!==0&&A.push({channel:r,keyShift:B}),s.lockPreset&&n.push({channel:r,program:s.program,bank:s.bank,isDrum:s.drumChannel}),s.lockedControllers.forEach((a,g)=>{if(!a||g>127||g===p.bankSelect)return;let d=s.midiControllers[g]>>7;o.push({channel:r,controllerNumber:g,controllerValue:d})})}),this.modifyMIDI(n,o,t,A)}var fA={name:"INAM",album:"IPRD",album2:"IALB",artist:"IART",genre:"IGNR",picture:"IPIC",copyright:"ICOP",creationDate:"ICRD",comment:"ICMT",engineer:"IENG",software:"ISFT",encoding:"IENC",midiEncoding:"MENC",bankOffset:"DBNK"},Ne="utf-8",ei="Created using SpessaSynth";function Ho(e,A,t=0,n="Shift_JIS",o={},s=!0){let r=this;if(OA("%cWriting the RMIDI File...",I.info),y(`%cConfiguration: Bank offset: %c${t}%c, encoding: %c${n}`,I.info,I.value,I.info,I.value),y("metadata",o),y("Initial bank offset",r.bankOffset),s){let w=function(){let x=0,C=1/0;return r.tracks.forEach((F,J)=>{u[J]>=F.length||F[u[J]].ticks<C&&(x=J,C=F[u[J]].ticks)}),x},h="gm",m=[],u=Array(r.tracks.length).fill(0),S=r.tracks.length,D=Array(r.tracks.length).fill(0),M=16+r.midiPortChannelOffsets.reduce((x,C)=>C>x?C:x),b=[];for(let x=0;x<M;x++)b.push({program:0,drums:x%16===9,lastBank:void 0,hasBankSelect:!1});for(;S>0;){let x=w(),C=r.tracks[x];if(u[x]>=C.length){S--;continue}let F=C[u[x]];u[x]++;let J=r.midiPortChannelOffsets[D[x]];if(F.messageStatusByte===R.midiPort){D[x]=F.messageData[0];continue}let aA=F.messageStatusByte&240;if(aA!==R.controllerChange&&aA!==R.programChange&&aA!==R.systemExclusive)continue;if(aA===R.systemExclusive){if(F.messageData[0]!==65||F.messageData[2]!==66||F.messageData[3]!==18||F.messageData[4]!==64||(F.messageData[5]&16)===0||F.messageData[6]!==21){F.messageData[0]===67&&F.messageData[2]===76&&F.messageData[5]===126&&F.messageData[6]===0?h="xg":F.messageData[0]===65&&F.messageData[2]===66&&F.messageData[6]===127?h="gs":F.messageData[0]===126&&F.messageData[2]===9&&(h="gm",m.push({tNum:x,e:F}));continue}let j=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][F.messageData[5]&15]+J;b[j].drums=!!(F.messageData[7]>0&&F.messageData[5]>>4);continue}let sA=(F.messageStatusByte&15)+J,K=b[sA];if(aA===R.programChange){K.drums?A.presets.findIndex(X=>X.program===F.messageData[0]&&X.bank===128)===-1&&(F.messageData[0]=A.presets.find(X=>X.bank===128)?.program||0):A.presets.findIndex(X=>X.program===F.messageData[0]&&X.bank!==128)===-1&&(F.messageData[0]=A.presets.find(X=>X.bank!==128)?.program||0),K.program=F.messageData[0];let j=Math.max(0,K.lastBank?.messageData[1]-r.bankOffset),EA=K.drums?128:j;if(K.lastBank===void 0)continue;if(h==="xg"&&K.drums&&(b[sA].lastBank.messageData[1]=127),A.presets.findIndex(X=>X.bank===EA&&X.program===F.messageData[0])===-1){let X=A.presets.find(rA=>rA.program===F.messageData[0])?.bank+t||t;K.lastBank.messageData[1]=X,y(`%cNo preset %c${EA}:${F.messageData[0]}%c. Changing bank to ${X}.`,I.info,I.recognized,I.info)}else{let rA=(EA===128?h==="xg"?127:0:j)+t;K.lastBank.messageData[1]=rA,y(`%cPreset %c${EA}:${F.messageData[0]}%c exists. Changing bank to ${rA}.`,I.info,I.recognized,I.info)}continue}F.messageData[0]===p.bankSelect&&(K.hasBankSelect=!0,h==="xg"&&(K.drums=F.messageData[1]===120||F.messageData[1]===126||F.messageData[1]===127),K.lastBank=F)}if(b.forEach((x,C)=>{if(x.hasBankSelect===!0)return;let F=C%16,J=R.programChange|F,aA=Math.floor(C/16)*16,sA=r.midiPortChannelOffsets.indexOf(aA),K=r.tracks.find((rA,BA)=>r.midiPorts[BA]===sA&&r.usedChannelsOnTrack[BA].has(F));if(K===void 0)return;let j=K.findIndex(rA=>rA.messageStatusByte===J);if(j===-1){let rA=K.findIndex(q=>q.messageStatusByte>128&&q.messageStatusByte<240&&(q.messageStatusByte&15)===F);if(rA===-1)return;let BA=K[rA].ticks,v=A.getPreset(0,0).program;K.splice(rA,0,new te(BA,R.programChange|F,new L([v]))),j=rA}y(`%cAdding bank select for %c${C}`,I.info,I.recognized);let EA=K[j].ticks,X=A.getPreset(0,x.program)?.bank+t||t;K.splice(j,0,new te(EA,R.controllerChange|F,new L([p.bankSelect,X])))}),h!=="gs"&&h!=="xg"){for(let C of m)r.tracks[C.tNum].splice(r.tracks[C.tNum].indexOf(C.e),1);let x=0;r.tracks[0][0].messageStatusByte===R.trackName&&x++,r.tracks[0].splice(x,0,bn(0))}}let B=new L(r.writeMIDI().buffer),a=[rt("INFO")],g=new TextEncoder;if(a.push(_(fA.software,g.encode("SpessaSynth"),!0)),o.name!==void 0?(a.push(_(fA.name,g.encode(o.name),!0)),n=Ne):a.push(_(fA.name,r.rawMidiName,!0)),o.creationDate!==void 0)n=Ne,a.push(_(fA.creationDate,g.encode(o.creationDate),!0));else{let h=new Date().toLocaleString(void 0,{weekday:"long",year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"numeric"});a.push(_(fA.creationDate,Qe(h),!0))}if(o.comment!==void 0&&(n=Ne,a.push(_(fA.comment,g.encode(o.comment)))),o.engineer!==void 0&&a.push(_(fA.engineer,g.encode(o.engineer),!0)),o.album!==void 0&&(n=Ne,a.push(_(fA.album,g.encode(o.album),!0)),a.push(_(fA.album2,g.encode(o.album),!0))),o.artist!==void 0&&(n=Ne,a.push(_(fA.artist,g.encode(o.artist),!0))),o.genre!==void 0&&(n=Ne,a.push(_(fA.genre,g.encode(o.genre),!0))),o.picture!==void 0&&a.push(_(fA.picture,new Uint8Array(o.picture))),o.copyright!==void 0)n=Ne,a.push(_(fA.copyright,g.encode(o.copyright),!0));else{let h=r.copyright.length>0?r.copyright:ei;a.push(_(fA.copyright,Qe(h)))}let d=new L(2);Pe(d,t,2),a.push(_(fA.bankOffset,d)),o.midiEncoding!==void 0&&(a.push(_(fA.midiEncoding,g.encode(o.midiEncoding))),n=Ne),a.push(_(fA.encoding,Qe(n)));let E=wA(a),c=wA([rt("RMID"),_("data",B),_("LIST",E),e]);return y("%cFinished!",I.info),P(),_("RIFF",c)}function Yo(){let e=this;if(!e.tracks)throw new Error("MIDI has no tracks!");let A=[];for(let o of e.tracks){let s=[],r=0,B;for(let a of o){let g=a.ticks-r,d;a.messageStatusByte<=R.sequenceSpecific?d=[255,a.messageStatusByte,...Pt(a.messageData.length),...a.messageData]:a.messageStatusByte===R.systemExclusive?d=[240,...Pt(a.messageData.length),...a.messageData]:(d=[],B!==a.messageStatusByte&&(B=a.messageStatusByte,d.push(a.messageStatusByte)),d.push(...a.messageData)),s.push(...Pt(g)),s.push(...d),r+=g}A.push(new Uint8Array(s))}function t(o,s){for(let r=0;r<o.length;r++)s.push(o.charCodeAt(r))}let n=[];t("MThd",n),n.push(...pt(6,4)),n.push(0,e.format),n.push(...pt(e.tracksAmount,2)),n.push(...pt(e.timeDivision,2));for(let o of A)t("MTrk",n),n.push(...pt(o.length,4)),n.push(...o);return new Uint8Array(n)}function Jo(e){let A=this;FA("%cSearching for all used programs and keys...",I.info);let t=16+A.midiPortChannelOffsets.reduce((E,c)=>c>E?c:E),n=[];for(let E=0;E<t;E++){let c=E%16===9?128:0;n.push({program:0,bank:c,drums:E%16===9,string:`${c}:0`})}function o(E){let c=e.getPreset(E.bank,E.program);E.bank=c.bank,E.program=c.program,E.string=E.bank+":"+E.program,s[E.string]||(y(`%cDetected a new preset: %c${E.string}`,I.info,I.recognized),s[E.string]=new Set)}let s={},r=Array(A.tracks.length).fill(0),B=A.tracks.length;function a(){let E=0,c=1/0;return A.tracks.forEach((h,m)=>{r[m]>=h.length||h[r[m]].ticks<c&&(E=m,c=h[r[m]].ticks)}),E}let g=A.midiPorts.slice(),d="gs";for(;B>0;){let E=a(),c=A.tracks[E];if(r[E]>=c.length){B--;continue}let h=c[r[E]];if(r[E]++,h.messageStatusByte===R.midiPort){g[E]=h.messageData[0];continue}let m=h.messageStatusByte&240;if(m!==R.noteOn&&m!==R.controllerChange&&m!==R.programChange&&m!==R.systemExclusive)continue;let u=(h.messageStatusByte&15)+A.midiPortChannelOffsets[g[E]]||0,S=n[u];switch(m){case R.programChange:S.program=h.messageData[0],o(S);break;case R.controllerChange:if(h.messageData[0]!==p.bankSelect||d==="gs"&&S.drums)continue;let w=h.messageData[1],D=Math.max(0,w-A.bankOffset);if(d==="xg"){let x=w===120||w===126||w===127;x!==S.drums?(S.drums=x,S.bank=S.drums?128:D,o(S)):S.bank=S.drums?128:D;continue}n[u].bank=D;break;case R.noteOn:if(h.messageData[1]===0)continue;o(S),s[S.string].add(`${h.messageData[0]}-${h.messageData[1]}`);break;case R.systemExclusive:if(h.messageData[0]!==65||h.messageData[2]!==66||h.messageData[3]!==18||h.messageData[4]!==64||(h.messageData[5]&16)===0||h.messageData[6]!==21){h.messageData[0]===67&&h.messageData[2]===76&&h.messageData[5]===126&&h.messageData[6]===0&&(d="xg");continue}let M=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][h.messageData[5]&15]+A.midiPortChannelOffsets[g[E]],b=!!(h.messageData[7]>0&&h.messageData[5]>>4);S=n[M],S.drums=b,S.bank=b?128:0,o(S);break}}for(let E of Object.keys(s))s[E].size===0&&(y(`%cDetected change but no keys for %c${E}`,I.info,I.value),delete s[E]);return P(),s}var ie=class e extends st{embeddedSoundFont=void 0;tracks=[];isDLSRMIDI=!1;static copyFrom(A){let t=new e;return t.midiName=A.midiName,t.midiNameUsesFileName=A.midiNameUsesFileName,t.fileName=A.fileName,t.timeDivision=A.timeDivision,t.duration=A.duration,t.copyright=A.copyright,t.tracksAmount=A.tracksAmount,t.firstNoteOn=A.firstNoteOn,t.keyRange={...A.keyRange},t.lastVoiceEventTick=A.lastVoiceEventTick,t.loop={...A.loop},t.format=A.format,t.bankOffset=A.bankOffset,t.isKaraokeFile=A.isKaraokeFile,t.isMultiPort=A.isMultiPort,t.isDLSRMIDI=A.isDLSRMIDI,t.tempoChanges=[...A.tempoChanges],t.lyrics=A.lyrics.map(n=>new Uint8Array(n)),t.lyricsTicks=[...A.lyricsTicks],t.midiPorts=[...A.midiPorts],t.midiPortChannelOffsets=[...A.midiPortChannelOffsets],t.usedChannelsOnTrack=A.usedChannelsOnTrack.map(n=>new Set(n)),t.rawMidiName=A.rawMidiName?new Uint8Array(A.rawMidiName):void 0,t.embeddedSoundFont=A.embeddedSoundFont?A.embeddedSoundFont.slice(0):void 0,t.RMIDInfo={...A.RMIDInfo},t.tracks=A.tracks.map(n=>[...n]),t}_parseInternal(){OA("%cInterpreting MIDI events...",I.info);let A=!1;this.keyRange={max:0,min:127};let t=[],n=!1;typeof this.RMIDInfo.ICOP<"u"&&(n=!0);let o=!1;typeof this.RMIDInfo.INAM<"u"&&(o=!0);let s=null,r=null;for(let E=0;E<this.tracks.length;E++){let c=this.tracks[E],h=new Set,m=!1;for(let u of c){if(u.messageStatusByte>=128&&u.messageStatusByte<240){m=!0;for(let w=0;w<u.messageData.length;w++)u.messageData[w]=Math.min(127,u.messageData[w]);switch(u.ticks>this.lastVoiceEventTick&&(this.lastVoiceEventTick=u.ticks),u.messageStatusByte&240){case R.controllerChange:switch(u.messageData[0]){case 2:case 116:s=u.ticks;break;case 4:case 117:r===null?r=u.ticks:r=0;break;case 0:this.isDLSRMIDI&&u.messageData[1]!==0&&u.messageData[1]!==127&&(y("%cDLS RMIDI with offset 1 detected!",I.recognized),this.bankOffset=1)}break;case R.noteOn:h.add(u.messageStatusByte&15);let w=u.messageData[0];this.keyRange.min=Math.min(this.keyRange.min,w),this.keyRange.max=Math.max(this.keyRange.max,w);break}}u.messageData.currentIndex=0;let S=eA(u.messageData,u.messageData.length);switch(u.messageData.currentIndex=0,u.messageStatusByte){case R.setTempo:u.messageData.currentIndex=0,this.tempoChanges.push({ticks:u.ticks,tempo:6e7/ne(u.messageData,3)}),u.messageData.currentIndex=0;break;case R.marker:switch(S.trim().toLowerCase()){default:break;case"start":case"loopstart":s=u.ticks;break;case"loopend":r=u.ticks}u.messageData.currentIndex=0;break;case R.copyright:n||(u.messageData.currentIndex=0,t.push(eA(u.messageData,u.messageData.length,void 0,!1)),u.messageData.currentIndex=0);break;case R.lyric:if(S.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",I.recognized)),this.isKaraokeFile)u.messageStatusByte=R.text;else{this.lyrics.push(u.messageData),this.lyricsTicks.push(u.ticks);break}case R.text:let D=S.trim();D.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",I.recognized)):this.isKaraokeFile&&(D.startsWith("@T")||D.startsWith("@A")?A?t.push(D.substring(2).trim()):(this.midiName=D.substring(2).trim(),A=!0,o=!0,this.rawMidiName=rt(this.midiName)):D[0]!=="@"&&(this.lyrics.push(mo(u.messageData)),this.lyricsTicks.push(u.ticks)));break}}if(this.usedChannelsOnTrack.push(h),!m){let u=c.find(S=>S.messageStatusByte===R.trackName);if(u){u.messageData.currentIndex=0;let S=eA(u.messageData,u.messageData.length);t.push(S)}}}this.tempoChanges.reverse(),y("%cCorrecting loops, ports and detecting notes...",I.info);let B=[];for(let E of this.tracks){let c=E.find(h=>(h.messageStatusByte&240)===R.noteOn);c&&B.push(c.ticks)}this.firstNoteOn=Math.min(...B),y(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,I.info,I.recognized,I.info),s!==null&&r===null?(s=this.firstNoteOn,r=this.lastVoiceEventTick):(s===null&&(s=this.firstNoteOn),(r===null||r===0)&&(r=this.lastVoiceEventTick)),this.loop={start:s,end:r},y(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,I.info,I.recognized,I.info,I.recognized);let a=0;this.midiPorts=[],this.midiPortChannelOffsets=[];for(let E=0;E<this.tracks.length;E++)if(this.midiPorts.push(-1),this.usedChannelsOnTrack[E].size!==0)for(let c of this.tracks[E]){if(c.messageStatusByte!==R.midiPort)continue;let h=c.messageData[0];this.midiPorts[E]=h,this.midiPortChannelOffsets[h]===void 0&&(this.midiPortChannelOffsets[h]=a,a+=16)}let g=1/0;for(let E of this.midiPorts)E!==-1&&g>E&&(g=E);if(g===1/0&&(g=0),this.midiPorts=this.midiPorts.map(E=>E===-1?g:E),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?y("%cNo additional MIDI Ports detected.",I.info):(this.isMultiPort=!0,y("%cMIDI Ports detected!",I.recognized)),!o)if(this.tracks.length>1){if(this.tracks[0].find(E=>E.messageStatusByte>=R.noteOn&&E.messageStatusByte<R.polyPressure)===void 0){let E=this.tracks[0].find(c=>c.messageStatusByte===R.trackName);E&&(this.rawMidiName=E.messageData,E.messageData.currentIndex=0,this.midiName=eA(E.messageData,E.messageData.length,void 0,!1))}}else{let E=this.tracks[0].find(c=>c.messageStatusByte===R.trackName);E&&(this.rawMidiName=E.messageData,E.messageData.currentIndex=0,this.midiName=eA(E.messageData,E.messageData.length,void 0,!1))}if(n||(this.copyright=t.map(E=>E.trim().replace(/(\r?\n)+/g,`
10
10
  `)).filter(E=>E.length>0).join(`
11
- `)||""),this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){p("%cNo name detected. Using the alt name!",I.info),this.midiName=On(this.fileName),this.midiNameUsesFileName=!0,this.rawMidiName=new Uint8Array(this.midiName.length);for(let E=0;E<this.midiName.length;E++)this.rawMidiName[E]=this.midiName.charCodeAt(E)}else p(`%cMIDI Name detected! %c"${this.midiName}"`,I.info,I.recognized);let d=!0;for(let E of this.lyrics)if(E[0]===32||E[E.length-1]===32){d=!1;break}d&&(this.lyrics=this.lyrics.map(E=>{if(E[E.length-1]===45)return E;let Q=new Uint8Array(E.length+1);return Q.set(E,0),Q[E.length]=32,Q})),this.duration=this.MIDIticksToSeconds(this.lastVoiceEventTick),p("%cSuccess!",I.recognized),Z()}flush(){for(let A of this.tracks)A.sort((t,n)=>t.ticks-n.ticks);this._parseInternal()}};_A.prototype.writeMIDI=Co;_A.prototype.modifyMIDI=ao;_A.prototype.applySnapshotToMIDI=Io;_A.prototype.writeRMIDI=go;_A.prototype.getUsedProgramsAndKeys=Eo;var dt=class extends _A{constructor(A,t=""){super(),uA("%cParsing MIDI File...",I.info),this.fileName=t;let n=new U(A),o,s=AA(n,4);if(n.currentIndex-=4,s==="RIFF"){n.currentIndex+=8;let B=AA(n,4,void 0,!1);if(B!=="RMID")throw Z(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${B}"`);let a=eA(n);if(a.header!=="data")throw Z(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${B}"`);for(o=a.chunkData;n.currentIndex<=n.length;){let C=n.currentIndex,d=eA(n,!0);if(d.header==="RIFF"){let E=AA(d.chunkData,4).toLowerCase();E==="sfbk"||E==="sfpk"||E==="dls "?(p("%cFound embedded soundfont!",I.recognized),this.embeddedSoundFont=n.slice(C,C+d.size).buffer):J(`Unknown RIFF chunk: "${E}"`),E==="dls "&&(this.isDLSRMIDI=!0)}else if(d.header==="LIST"&&AA(d.chunkData,4)==="INFO"){for(p("%cFound RMIDI INFO chunk!",I.recognized),this.RMIDInfo={};d.chunkData.currentIndex<=d.size;){let Q=eA(d.chunkData,!0);this.RMIDInfo[Q.header]=Q.chunkData}this.RMIDInfo.ICOP&&(this.copyright=AA(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
12
- `," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[yA.name],this.midiName=AA(this.rawMidiName,this.rawMidiName.length,void 0,!1).replaceAll(`
13
- `," ")),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.IPRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[yA.bankOffset]&&(this.bankOffset=N(this.RMIDInfo[yA.bankOffset],2))}}this.isDLSRMIDI&&(this.bankOffset=0),this.embeddedSoundFont===void 0&&(this.bankOffset=0)}else o=n;let r=this.readMIDIChunk(o);if(r.type!=="MThd")throw Z(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${r.type}"`);if(r.size!==6)throw Z(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${r.size}`);this.format=ie(r.data,2),this.tracksAmount=ie(r.data,2),this.timeDivision=ie(r.data,2);for(let B=0;B<this.tracksAmount;B++){let a=[],C=this.readMIDIChunk(o);if(C.type!=="MTrk")throw Z(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${C.type}"`);let d,E=0;for(this.format===2&&B>0&&(E+=this.tracks[B-1][this.tracks[B-1].length-1].ticks);C.data.currentIndex<C.size;){E+=Et(C.data);let Q=C.data[C.data.currentIndex],h;if(d!==void 0&&Q<128)h=d;else{if(!d&&Q<128)throw Z(),new SyntaxError(`Unexpected byte with no running byte. (${Q})`);h=C.data[C.data.currentIndex++]}let y=Zn(h),f;switch(y){case-1:f=0;break;case-2:h=C.data[C.data.currentIndex++],f=Et(C.data);break;case-3:f=Et(C.data);break;default:f=Xn[h>>4],d=h;break}let S=new U(f);S.set(C.data.slice(C.data.currentIndex,C.data.currentIndex+f),0);let k=new VA(E,h,S);a.push(k),C.data.currentIndex+=f}this.tracks.push(a),p(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,I.info,I.value,I.info,I.value)}p("%cAll tracks parsed correctly!",I.recognized),this._parseInternal(),Z(),p(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,I.info,I.recognized,I.info,I.recognized)}readMIDIChunk(A){let t={};t.type=AA(A,4),t.size=ie(A,4),t.data=new U(t.size);let n=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(n,0),A.currentIndex+=t.size,t}};function Bo(e,A){this.midiData.usedChannelsOnTrack[e].size!==0&&(this.midiPortChannelOffset===0&&(this.midiPortChannelOffset+=16,this.midiPortChannelOffsets[A]=0),this.midiPortChannelOffsets[A]===void 0&&(this.synth.workletProcessorChannels.length<this.midiPortChannelOffset+15&&this._addNewMidiPort(),this.midiPortChannelOffsets[A]=this.midiPortChannelOffset,this.midiPortChannelOffset+=16),this.midiPorts[e]=A)}function ho(e,A=!0){if(this.stop(),!e.tracks)throw new Error("This MIDI has no tracks!");if(this.oneTickToSeconds=60/(120*e.timeDivision),this.midiData=e,this.midiData.embeddedSoundFont!==void 0)p("%cEmbedded soundfont detected! Using it.",I.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),uA("%cPreloading samples...",I.info);let t=this.midiData.getUsedProgramsAndKeys(this.synth.soundfontManager);for(let[n,o]of Object.entries(t)){let s=parseInt(n.split(":")[0]),r=parseInt(n.split(":")[1]),B=this.synth.getPreset(s,r);p(`%cPreloading used samples on %c${B.presetName}%c...`,I.info,I.recognized,I.info);for(let a of o){let C=a.split("-");B.preloadSpecific(parseInt(C[0]),parseInt(C[1]))}}Z()}if(this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts.slice(),this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((t,n)=>{this.assignMIDIPort(n,t)}),this.duration=this.midiData.duration,this.firstNoteTime=this.midiData.MIDIticksToSeconds(this.midiData.firstNoteOn),p(`%cTotal song time: ${_t(Math.ceil(this.duration)).time}`,I.recognized),this.post(wA.songChange,[new Ct(this.midiData),this.songIndex,A]),this.duration<=1&&(J(`%cVery short song: (${_t(Math.round(this.duration)).time}). Disabling loop!`,I.warn),this.loop=!1),A)this.play(!0);else{let t=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(t),this.pause()}}function lo(e,A=!0){this.songs=e.reduce((t,n)=>{if(n.duration)return t.push(_A.copyFrom(n)),t;try{t.push(new dt(n.binary,n.altName||""))}catch(o){return this.post(wA.midiError,o.message),t}return t},[]),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.shuffleSongIndexes(),this.loadCurrentSong(A))}function co(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadCurrentSong()}function Qo(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadCurrentSong()}function uo(e=!0){e&&p("%cResetting all controllers!",I.info),this.callEvent("allcontrollerreset",void 0);for(let A=0;A<this.workletProcessorChannels.length;A++){this.workletProcessorChannels[A].resetControllers();let t=this.workletProcessorChannels[A];t.lockPreset?this.callEvent("drumchange",{channel:A,isDrumChannel:t.drumChannel}):(t.presetUsesOverride=!0,t.setBankSelect(0),A%16===9?(this.workletProcessorChannels[A].setPreset(this.drumPreset),t.drumChannel=!0,this.callEvent("drumchange",{channel:A,isDrumChannel:!0})):(t.drumChannel=!1,t.setPreset(this.defaultPreset),this.callEvent("drumchange",{channel:A,isDrumChannel:!1}))),this.callEvent("programchange",{channel:A,program:t.preset.program,bank:t.getBankSelect(),userCalled:!1});for(let n=0;n<128;n++)this.workletProcessorChannels[A].lockedControllers[n]&&this.callEvent("controllerchange",{channel:A,controllerNumber:n,controllerValue:this.workletProcessorChannels[A].midiControllers[n]>>7});if(this.workletProcessorChannels[A].lockedControllers[mA+W.pitchWheel]===!1){let n=this.workletProcessorChannels[A].midiControllers[mA+W.pitchWheel],o=n>>7,s=n&127;this.callEvent("pitchwheel",{channel:A,MSB:o,LSB:s})}}this.tunings=[],this.tunings=[];for(let A=0;127>A;A++)this.tunings.push([]);this.setMIDIVolume(1),this.system=Qt}function fo(){this.channelOctaveTuning.fill(0);for(let A=0;A<Ee.length;A++){if(this.lockedControllers[A])continue;let t=Ee[A];this.midiControllers[A]!==t&&A<127?A===m.portamentoControl?this.midiControllers[A]=ct:this.controllerChange(A,t>>7):this.midiControllers[A]=t}this.channelVibrato={rate:0,depth:0,delay:0},this.holdPedal=!1,this.randomPan=!1;let e=this.customControllers[aA.channelTransposeFine];this.customControllers.set(An),this.setCustomController(aA.channelTransposeFine,e),this.resetParameters()}var tn=new Set([m.bankSelect,m.lsbForControl0BankSelect,m.mainVolume,m.lsbForControl7MainVolume,m.pan,m.lsbForControl10Pan,m.reverbDepth,m.tremoloDepth,m.chorusDepth,m.detuneDepth,m.phaserDepth,m.soundVariation,m.filterResonance,m.releaseTime,m.attackTime,m.brightness,m.decayTime,m.vibratoRate,m.vibratoDepth,m.vibratoDelay,m.soundController10]);function mo(){this.channelOctaveTuning.fill(0),this.pitchWheel(64,0),this.channelVibrato={rate:0,depth:0,delay:0};for(let e=0;e<128;e++){let A=Ee[e];!tn.has(e)&&A!==this.midiControllers[e]&&(e===m.portamentoControl?this.midiControllers[e]=ct:this.controllerChange(e,A>>7))}}function po(){this.dataEntryState=GA.Idle,p("%cResetting Registered and Non-Registered Parameters!",I.info)}var De=Ee.slice(0,128);function yo(e,A=void 0){this.oneTickToSeconds=60/(120*this.midiData.timeDivision),this.synth.resetAllControllers(),this.sendMIDIReset(),this._resetTimers();let t=this.synth.workletProcessorChannels.length,n=Array(t).fill(8192),o=[];for(let a=0;a<t;a++)o.push({program:-1,bank:0,actualBank:0});let s=a=>a===m.dataDecrement||a===m.dataIncrement||a===m.dataEntryMsb||a===m.dataDecrement||a===m.lsbForControl6DataEntry||a===m.RPNLsb||a===m.RPNMsb||a===m.NRPNLsb||a===m.NRPNMsb||a===m.bankSelect||a===m.lsbForControl0BankSelect||a===m.resetAllControllers,r=[];for(let a=0;a<t;a++)r.push(Array.from(De));function B(a){if(n[a]=8192,r?.[a]!==void 0)for(let C=0;C<De.length;C++)tn.has(C)||(r[a][C]=De[C])}for(;;){let a=this._findFirstEventIndex(),C=this.tracks[a][this.eventIndex[a]];if(A!==void 0){if(C.ticks>=A)break}else if(this.playedTime>=e)break;let d=It(C.messageStatusByte),E=d.channel+(this.midiPortChannelOffsets[this.midiPorts[a]]||0);switch(d.status){case w.noteOn:r[E]===void 0&&(r[E]=Array.from(De)),r[E][m.portamentoControl]=C.messageData[0];break;case w.noteOff:break;case w.pitchBend:n[E]=C.messageData[1]<<7|C.messageData[0];break;case w.programChange:let h=o[E];h.program=C.messageData[0],h.actualBank=h.bank;break;case w.controllerChange:let y=C.messageData[0];if(s(y)){let f=C.messageData[1];if(y===m.bankSelect){o[E].bank=f;break}else y===m.resetAllControllers&&B(E);this.sendMIDIMessages?this.sendMIDICC(E,y,f):this.synth.controllerChange(E,y,f)}else r[E]===void 0&&(r[E]=Array.from(De)),r[E][y]=C.messageData[1];break;default:this._processEvent(C,a);break}this.eventIndex[a]++,a=this._findFirstEventIndex();let Q=this.tracks[a][this.eventIndex[a]];if(Q===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(Q.ticks-C.ticks)}if(this.sendMIDIMessages){for(let a=0;a<t;a++)if(n[a]!==void 0&&this.sendMIDIPitchWheel(a,n[a]>>7,n[a]&127),r[a]!==void 0&&r[a].forEach((C,d)=>{C!==De[d]&&!s(d)&&this.sendMIDICC(a,d,C)}),o[a].program>=0&&o[a].actualBank>=0){let C=o[a].actualBank;this.sendMIDICC(a,m.bankSelect,C),this.sendMIDIProgramChange(a,o[a].program)}}else for(let a=0;a<t;a++)if(n[a]!==void 0&&this.synth.pitchWheel(a,n[a]>>7,n[a]&127),r[a]!==void 0&&r[a].forEach((C,d)=>{C!==De[d]&&!s(d)&&this.synth.controllerChange(a,d,C)}),o[a].program>=0&&o[a].actualBank>=0){let C=o[a].actualBank;this.synth.controllerChange(a,m.bankSelect,C),this.synth.programChange(a,o[a].program)}return!0}function So(e=!1){if(this.midiData!==void 0){if(e){this.pausedTime=void 0,this.currentTime=0;return}if(this.currentTime>=this.duration){this.pausedTime=void 0,this.currentTime=0;return}this.paused&&(this._recalculateStartTime(this.pausedTime),this.pausedTime=void 0),this.sendMIDIMessages||this.playingNotes.forEach(A=>{this.synth.noteOn(A.channel,A.midiNote,A.velocity,!1,!0)}),this.setProcessHandler()}}function Do(e){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(wA.timeChange,currentTime-this.midiData.MIDIticksToSeconds(e));let A=this._playTo(0,e);this._recalculateStartTime(this.playedTime),A&&this.play()}function ko(e){this.absoluteStartTime=currentTime-e/this._playbackRate}var gA={noteOff:0,noteOn:1,ccChange:2,programChange:3,channelPressure:4,polyPressure:5,killNote:6,ccReset:7,setChannelVibrato:8,soundFontManager:9,stopAll:10,killNotes:11,muteChannel:12,addNewChannel:13,customcCcChange:14,debugMessage:15,systemExclusive:16,setMasterParameter:17,setDrums:18,pitchWheel:19,transpose:20,highPerformanceMode:21,lockController:22,sequencerSpecific:23,requestSynthesizerSnapshot:24,setLogLevel:25,keyModifierManager:26,setEffectsGain:27,destroyWorklet:28},Oe={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3},ZA=-1,MA={channelProperties:0,eventCall:1,reportedCurrentTime:2,sequencerSpecific:3,synthesizerSnapshot:4,ready:5,soundfontError:6,identify:7};function wo(e,A){switch(e){default:break;case vA.loadNewSongList:this.loadNewSongList(A[0],A[1]);break;case vA.pause:this.pause();break;case vA.play:this.play(A);break;case vA.stop:this.stop();break;case vA.setTime:this.currentTime=A;break;case vA.changeMIDIMessageSending:this.sendMIDIMessages=A;break;case vA.setPlaybackRate:this.playbackRate=A;break;case vA.setLoop:let[t,n]=A;this.loop=t,n===ZA?this.loopCount=1/0:this.loopCount=n;break;case vA.changeSong:switch(A){case qe.forwards:this.nextSong();break;case qe.backwards:this.previousSong();break;case qe.shuffleOff:this.shuffleMode=!1,this.songIndex=this.shuffledSongIndexes[this.songIndex];break;case qe.shuffleOn:this.shuffleMode=!0,this.shuffleSongIndexes(),this.songIndex=0,this.loadCurrentSong()}break;case vA.getMIDI:this.post(wA.getMIDI,this.midiData);break;case vA.setSkipToFirstNote:this._skipToFirstNoteOn=A;break;case vA.setPreservePlaybackState:this.preservePlaybackState=A}}function Fo(e,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:MA.sequencerSpecific,messageData:{messageType:e,messageData:A}})}function Ro(e){this.post(wA.midiEvent,e)}function Go(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([w.controllerChange|e,A,t])}function xo(e,A){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([w.programChange|e,A])}function Mo(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([w.pitchBend|e,t,A])}function No(){if(this.sendMIDIMessages){this.sendMIDIMessage([w.reset]);for(let e=0;e<16;e++)this.sendMIDIMessage([w.controllerChange|e,m.allSoundOff,0]),this.sendMIDIMessage([w.controllerChange|e,m.resetAllControllers,0])}}var QA=class{songs=[];songIndex=0;shuffledSongIndexes=[];synth;isActive=!1;sendMIDIMessages=!1;loopCount=1/0;eventIndex=[];playedTime=0;pausedTime=void 0;absoluteStartTime=currentTime;playingNotes=[];loop=!0;shuffleMode=!1;midiData=void 0;midiPorts=[];midiPortChannelOffset=0;midiPortChannelOffsets={};_skipToFirstNoteOn=!0;preservePlaybackState=!1;constructor(A){this.synth=A}_playbackRate=1;set playbackRate(A){let t=this.currentTime;this._playbackRate=A,this.currentTime=t}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(currentTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(A>this.duration||A<0){this._skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this._skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let t=this.paused&&this.preservePlaybackState;if(this.pausedTime=void 0,this.post(wA.timeChange,currentTime-A),this.midiData.duration===0){J("No duration!"),this.post(wA.pause,!0);return}this._playTo(A),this._recalculateStartTime(A),t?this.pause():this.play()}get paused(){return this.pausedTime!==void 0}pause(A=!1){if(this.paused){J("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this.post(wA.pause,A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,m.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages){for(let A of this.playingNotes)this.sendMIDIMessage([w.noteOff|A.channel%16,A.midiNote]);for(let A=0;A<16;A++)this.sendMIDICC(A,m.allNotesOff,0)}}loadCurrentSong(A=!0){let t=this.songIndex;this.shuffleMode&&(t=this.shuffledSongIndexes[this.songIndex]),this.loadNewSequence(this.songs[t],A)}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}shuffleSongIndexes(){let A=this.songs.map((t,n)=>n);for(this.shuffledSongIndexes=[];A.length>0;){let t=A[Math.floor(Math.random()*A.length)];this.shuffledSongIndexes.push(t),A.splice(A.indexOf(t),1)}}};QA.prototype.sendMIDIMessage=Ro;QA.prototype.sendMIDIReset=No;QA.prototype.sendMIDICC=Go;QA.prototype.sendMIDIProgramChange=xo;QA.prototype.sendMIDIPitchWheel=Mo;QA.prototype.assignMIDIPort=Bo;QA.prototype.post=Fo;QA.prototype.processMessage=wo;QA.prototype._processEvent=Ao;QA.prototype._addNewMidiPort=eo;QA.prototype.processTick=to;QA.prototype._findFirstEventIndex=no;QA.prototype.loadNewSequence=ho;QA.prototype.loadNewSongList=lo;QA.prototype.nextSong=co;QA.prototype.previousSong=Qo;QA.prototype.play=So;QA.prototype._playTo=yo;QA.prototype.setTimeTicks=Do;QA.prototype._recalculateStartTime=ko;function Gr(e,A){let t=0;return e.drumChannel&&(t+=5),A.isInRelease&&(t-=5),t+=A.velocity/25,t-=A.volumeEnvelope.state,A.isInRelease&&(t-=5),t-=A.volumeEnvelope.currentAttenuationDb/50,t}function bo(e){let A=[];for(let n of this.workletProcessorChannels)for(let o of n.voices)if(!o.finished){let s=Gr(n,o);A.push({channel:n,voice:o,priority:s})}A.sort((n,o)=>n.priority-o.priority);let t=A.slice(0,e);for(let{channel:n,voice:o}of t){let s=n.voices.indexOf(o);s>-1&&n.voices.splice(s,1)}}var oe=oe!==void 0?oe:{},Lo=!1,Uo;oe.isInitialized=new Promise(e=>Uo=e);var xr=function(e){var A,t,n,o,s,r,B,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",C="",d=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=a.indexOf(e.charAt(d++)),s=a.indexOf(e.charAt(d++)),r=a.indexOf(e.charAt(d++)),B=a.indexOf(e.charAt(d++)),A=o<<2|s>>4,t=(15&s)<<4|r>>2,n=(3&r)<<6|B,C+=String.fromCharCode(A),r!==64&&(C+=String.fromCharCode(t)),B!==64&&(C+=String.fromCharCode(n));while(d<e.length);return C};(function(){var e,A,t,n,o,s,r,B,a,C,d,E,Q,h,y,f,S,k,M,x,b,G,g=g!==void 0?g:{};g.wasmBinary=Uint8Array.from(xr("AGFzbQEAAAABpQEYYAJ/fwF/YAF/AGAAAX9gBH9/f38AYAAAYAN/f38Bf2ABfwF/YAJ/fwBgBn9/f39/fwF/YAR/f39/AX9gBX9/f39/AX9gB39/f39/f38Bf2AGf39/f39/AGAIf39/f39/f38Bf2AFf39/f38AYAd/f39/f39/AGADf39/AGABfwF9YAF9AX1gAnx/AXxgAnx/AX9gA3x8fwF8YAJ8fAF8YAF8AXwCngIPA2VudgZtZW1vcnkCAIACA2VudgV0YWJsZQFwAQQEA2Vudgl0YWJsZUJhc2UDfwADZW52DkRZTkFNSUNUT1BfUFRSA38AA2VudghTVEFDS1RPUAN/AANlbnYJU1RBQ0tfTUFYA38ABmdsb2JhbAhJbmZpbml0eQN8AANlbnYFYWJvcnQAAQNlbnYNZW5sYXJnZU1lbW9yeQACA2Vudg5nZXRUb3RhbE1lbW9yeQACA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQACA2Vudg5fX19hc3NlcnRfZmFpbAADA2VudgtfX19zZXRFcnJObwABA2VudgZfYWJvcnQABANlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA3d2BgYCAQcHAQIBAQcBCAcFAAkGCQoHBgYGBgEFBgIBBgYKAAgLAAYGBgYGBgYBAAoMDAMGBQANCAoJAAwODA8OAQAGBgcEABAJEAERAAADBQwAAAMHBxIGAQAABwIFEwMOBw8HBgYQFAoVExYXFxcXFgQFBQYFAAYkB38BIwELfwEjAgt/ASMDC38BQQALfwFBAAt8ASMEC38BQQALB9MCFRBfX2dyb3dXYXNtTWVtb3J5AAgRX19fZXJybm9fbG9jYXRpb24AYwVfZnJlZQBfB19tYWxsb2MAXgdfbWVtY3B5AHkHX21lbXNldAB6BV9zYnJrAHsXX3N0Yl92b3JiaXNfanNfY2hhbm5lbHMAJhRfc3RiX3ZvcmJpc19qc19jbG9zZQAlFV9zdGJfdm9yYmlzX2pzX2RlY29kZQAoE19zdGJfdm9yYmlzX2pzX29wZW4AJBpfc3RiX3ZvcmJpc19qc19zYW1wbGVfcmF0ZQAnC2R5bkNhbGxfaWlpAHwTZXN0YWJsaXNoU3RhY2tTcGFjZQAMC2dldFRlbXBSZXQwAA8LcnVuUG9zdFNldHMAeAtzZXRUZW1wUmV0MAAOCHNldFRocmV3AA0Kc3RhY2tBbGxvYwAJDHN0YWNrUmVzdG9yZQALCXN0YWNrU2F2ZQAKCQoBACMACwR9VFl9Csb2A3YGACAAQAALGwEBfyMGIQEjBiAAaiQGIwZBD2pBcHEkBiABCwQAIwYLBgAgACQGCwoAIAAkBiABJAcLEAAjCEUEQCAAJAggASQJCwsGACAAJAsLBAAjCwsRACAABEAgABARIAAgABASCwvvBwEKfyAAQYADaiEHIAcoAgAhBQJAIAUEQCAAQfwBaiEEIAQoAgAhASABQQBKBEAgAEHwAGohCANAIAUgAkEYbGpBEGohCSAJKAIAIQEgAQRAIAgoAgAhAyAFIAJBGGxqQQ1qIQogCi0AACEGIAZB/wFxIQYgAyAGQbAQbGpBBGohAyADKAIAIQMgA0EASgRAQQAhAwNAIAEgA0ECdGohASABKAIAIQEgACABEBIgA0EBaiEDIAgoAgAhASAKLQAAIQYgBkH/AXEhBiABIAZBsBBsakEEaiEBIAEoAgAhBiAJKAIAIQEgAyAGSA0ACwsgACABEBILIAUgAkEYbGpBFGohASABKAIAIQEgACABEBIgAkEBaiECIAQoAgAhASACIAFODQMgBygCACEFDAAACwALCwsgAEHwAGohAyADKAIAIQEgAQRAIABB7ABqIQUgBSgCACECIAJBAEoEQEEAIQIDQAJAIAEgAkGwEGxqQQhqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQRxqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQSBqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQaQQaiEEIAQoAgAhBCAAIAQQEiABIAJBsBBsakGoEGohASABKAIAIQEgAUUhBCABQXxqIQFBACABIAQbIQEgACABEBIgAkEBaiECIAUoAgAhASACIAFODQAgAygCACEBDAELCyADKAIAIQELIAAgARASCyAAQfgBaiEBIAEoAgAhASAAIAEQEiAHKAIAIQEgACABEBIgAEGIA2ohAyADKAIAIQEgAQRAIABBhANqIQUgBSgCACECIAJBAEoEQEEAIQIDQCABIAJBKGxqQQRqIQEgASgCACEBIAAgARASIAJBAWohAiAFKAIAIQcgAygCACEBIAIgB0gNAAsLIAAgARASCyAAQQRqIQIgAigCACEBIAFBAEoEQEEAIQEDQCAAQZQGaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQZQHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQdgHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiABQQFqIQEgAigCACEDIAEgA0ghAyABQRBJIQUgBSADcQ0ACwtBACEBA0AgAEGgCGogAUECdGohAiACKAIAIQIgACACEBIgAEGoCGogAUECdGohAiACKAIAIQIgACACEBIgAEGwCGogAUECdGohAiACKAIAIQIgACACEBIgAEG4CGogAUECdGohAiACKAIAIQIgACACEBIgAEHACGogAUECdGohAiACKAIAIQIgACACEBIgAUEBaiEBIAFBAkcNAAsLGwAgAEHEAGohACAAKAIAIQAgAEUEQCABEF8LC3wBAX8gAEHUB2ohASABQQA2AgAgAEGAC2ohASABQQA2AgAgAEH4CmohASABQQA2AgAgAEGcCGohASABQQA2AgAgAEHVCmohASABQQA6AAAgAEH8CmohASABQQA2AgAgAEHUC2ohASABQQA2AgAgAEHYC2ohACAAQQA2AgAL8AQBB38jBiELIwZBEGokBiALQQhqIQcgC0EEaiEKIAshCCAAQSRqIQYgBiwAACEGAn8gBgR/IABBgAtqIQYgBigCACEGIAZBf0oEQCAFQQA2AgAgACABIAIQFgwCCyAAQRRqIQYgBiABNgIAIAEgAmohAiAAQRxqIQkgCSACNgIAIABB2ABqIQIgAkEANgIAIABBABAXIQkgCUUEQCAFQQA2AgBBAAwCCyAAIAcgCCAKEBghCSAJBEAgBygCACECIAgoAgAhCSAKKAIAIQggACACIAkgCBAaIQogByAKNgIAIABBBGohAiACKAIAIQggCEEASgRAQQAhAgNAIABBlAZqIAJBAnRqIQcgBygCACEHIAcgCUECdGohByAAQdQGaiACQQJ0aiEMIAwgBzYCACACQQFqIQIgAiAISA0ACwsgAwRAIAMgCDYCAAsgBSAKNgIAIABB1AZqIQAgBCAANgIAIAYoAgAhACAAIAFrDAILAkACQAJAAkACQCACKAIAIgNBIGsOBAECAgACCyACQQA2AgAgAEHUAGohAiAAEBkhAwJAIANBf0cEQANAIAIoAgAhAyADDQIgABAZIQMgA0F/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ACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGoh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IwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOi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mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA=="),function(l){return l.charCodeAt(0)});var g=g!==void 0?g:{},F={};for(e in g)g.hasOwnProperty(e)&&(F[e]=g[e]);g.arguments=[],g.thisProgram="./this.program",g.quit=function(l,c){throw c},g.preRun=[],g.postRun=[];var H=!1,oA=!1,tA=!1,O=!1;H=typeof window=="object",oA=typeof importScripts=="function",tA=typeof process=="object"&&typeof Vn=="function"&&!H&&!oA,O=!H&&!tA&&!oA;var _="";function rA(l){return g.locateFile?g.locateFile(l,_):_+l}tA?(_=__dirname+"/",g.read=function(c,u){var D;return A||(A=void 0),t||(t=void 0),c=t.normalize(c),D=A.readFileSync(c),u?D:D.toString()},g.readBinary=function(c){var u=g.read(c,!0);return u.buffer||(u=new Uint8Array(u)),ge(u.buffer),u},process.argv.length>1&&(g.thisProgram=process.argv[1].replace(/\\/g,"/")),g.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(l){if(!(l instanceof Ye))throw l}),process.on("unhandledRejection",function(l,c){process.exit(1)}),g.quit=function(l){process.exit(l)},g.inspect=function(){return"[Emscripten Module object]"}):O?(typeof read<"u"&&(g.read=function(c){return read(c)}),g.readBinary=function(c){var u;return typeof readbuffer=="function"?new Uint8Array(readbuffer(c)):(ge(typeof(u=read(c,"binary"))=="object"),u)},typeof scriptArgs<"u"?g.arguments=scriptArgs:typeof arguments<"u"&&(g.arguments=arguments),typeof quit=="function"&&(g.quit=function(l){quit(l)})):(H||oA)&&(H?document.currentScript&&(_=document.currentScript.src):_=self.location.href,_=_.indexOf("blob:")!==0?_.split("/").slice(0,-1).join("/")+"/":"",g.read=function(c){var u=new XMLHttpRequest;return u.open("GET",c,!1),u.send(null),u.responseText},oA&&(g.readBinary=function(c){var u=new XMLHttpRequest;return u.open("GET",c,!1),u.responseType="arraybuffer",u.send(null),new Uint8Array(u.response)}),g.readAsync=function(c,u,D){var v=new XMLHttpRequest;v.open("GET",c,!0),v.responseType="arraybuffer",v.onload=function(){if(v.status==200||v.status==0&&v.response){u(v.response);return}D()},v.onerror=D,v.send(null)},g.setWindowTitle=function(l){document.title=l});var V=g.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),nA=g.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||V);for(e in F)F.hasOwnProperty(e)&&(g[e]=F[e]);function IA(l){var c=h;return h=h+l+15&-16,c}function UA(l){var c=a[x>>2],u=c+l+15&-16;return a[x>>2]=u,u>=DA&&!bn()?(a[x>>2]=c,0):c}function WA(l,c){return c||(c=16),l=Math.ceil(l/c)*c}function Ue(l){switch(l){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(l[l.length-1]==="*")return 4;if(l[0]!=="i")return 0;var c=parseInt(l.substr(1));return ge(c%8==0),c/8}}function se(l){se.shown||(se.shown={}),se.shown[l]||(se.shown[l]=1,nA(l))}F=void 0;var Te={"f64-rem":function(l,c){return l%c},debugger:function(){}},Ut=[];function zr(l,c){for(var u=0,D=u;D<u+0;D++)if(!Ut[D])return Ut[D]=l,1+D;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function jr(l){Ut[l-1]=null}var Tt={};function $r(l,c){if(l){ge(c),Tt[c]||(Tt[c]={});var u=Tt[c];return u[l]||(c.length===1?u[l]=function(){return vt(c,l)}:c.length===2?u[l]=function(v){return vt(c,l,[v])}:u[l]=function(){return vt(c,l,Array.prototype.slice.call(arguments))}),u[l]}}function Ai(l,c,u){return u?+(l>>>0)+4294967296*+(c>>>0):+(l>>>0)+4294967296*+(0|c)}function vt(l,c,u){return u&&u.length?g["dynCall_"+l].apply(null,[c].concat(u)):g["dynCall_"+l].call(null,c)}var et=0,kn=0;function ge(l,c){l||re("Assertion failed: "+c)}function wn(l){var c=g["_"+l];return ge(c,"Cannot call unknown function "+l+", make sure it is exported"),c}var Fn={stackSave:function(){Pt()},stackRestore:function(){Ot()},arrayToC:function(l){var c,u,D=it(l.length);return c=l,u=D,o.set(c,u),D},stringToC:function(l){var c=0;if(l!=null&&l!==0){var u=(l.length<<2)+1;c=it(u),xn(l,c,u)}return c}},lr={string:Fn.stringToC,array:Fn.arrayToC};function Rn(l,c,u,D,v){var $=wn(l),sA=[],K=0;if(D)for(var kA=0;kA<D.length;kA++){var BA=lr[u[kA]];BA?(K===0&&(K=Pt()),sA[kA]=BA(D[kA])):sA[kA]=D[kA]}var hA,CA=$.apply(null,sA);return CA=(hA=CA,c==="string"?tt(hA):c==="boolean"?!!hA:hA),K!==0&&Ot(K),CA}function cr(l,c,u,D){switch((u=u||"i8").charAt(u.length-1)==="*"&&(u="i32"),u){case"i1":case"i8":o[l>>0]=c;break;case"i16":r[l>>1]=c;break;case"i32":a[l>>2]=c;break;case"i64":tempI64=[c>>>0,+mr(tempDouble=c)>=1?tempDouble>0?(0|yr(+Hn(tempDouble/4294967296),4294967295))>>>0:~~+pr((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],a[l>>2]=tempI64[0],a[l+4>>2]=tempI64[1];break;case"float":d[l>>2]=c;break;case"double":E[l>>3]=c;break;default:re("invalid type for setValue: "+u)}}function ei(l,c,u){switch((c=c||"i8").charAt(c.length-1)==="*"&&(c="i32"),c){case"i1":case"i8":return o[l>>0];case"i16":return r[l>>1];case"i32":case"i64":return a[l>>2];case"float":return d[l>>2];case"double":return E[l>>3];default:re("invalid type for getValue: "+c)}return null}function ti(l,c,u,D){typeof l=="number"?($=!0,sA=l):($=!1,sA=l.length);var v=typeof c=="string"?c:null;if(K=u==4?D:[typeof rt=="function"?rt:IA,it,IA,UA][u===void 0?2:u](Math.max(sA,v?1:c.length)),$){for(D=K,ge((3&K)==0),kA=K+(-4&sA);D<kA;D+=4)a[D>>2]=0;for(kA=K+sA;D<kA;)o[D++>>0]=0;return K}if(v==="i8")return l.subarray||l.slice?s.set(l,K):s.set(new Uint8Array(l),K),K;for(var $,sA,K,kA,BA,hA,CA,j=0;j<sA;){var bA=l[j];if((BA=v||c[j])===0){j++;continue}BA=="i64"&&(BA="i32"),cr(K+j,bA,BA),CA!==BA&&(hA=Ue(BA),CA=BA),j+=hA}return K}function ni(l){return y?qt?rt(l):UA(l):IA(l)}function tt(l,c){if(c===0||!l)return"";for(var u,D,v,$=0,sA=0;$|=D=s[l+sA>>0],(D!=0||c)&&(sA++,!c||sA!=c););c||(c=sA);var K="";if($<128){for(;c>0;)v=String.fromCharCode.apply(String,s.subarray(l,l+Math.min(c,1024))),K=K?K+v:v,l+=1024,c-=1024;return K}return u=l,function(BA,hA){for(var CA=hA;BA[CA];)++CA;if(CA-hA>16&&BA.subarray&&Gn)return Gn.decode(BA.subarray(hA,CA));for(var j,bA,YA,JA,KA,pe,qA="";;){if(!(j=BA[hA++]))return qA;if(!(128&j)){qA+=String.fromCharCode(j);continue}if(bA=63&BA[hA++],(224&j)==192){qA+=String.fromCharCode((31&j)<<6|bA);continue}if(YA=63&BA[hA++],(240&j)==224?j=(15&j)<<12|bA<<6|YA:(JA=63&BA[hA++],(248&j)==240?j=(7&j)<<18|bA<<12|YA<<6|JA:(KA=63&BA[hA++],j=(252&j)==248?(3&j)<<24|bA<<18|YA<<12|JA<<6|KA:(1&j)<<30|bA<<24|YA<<18|JA<<12|KA<<6|(pe=63&BA[hA++]))),j<65536)qA+=String.fromCharCode(j);else{var Je=j-65536;qA+=String.fromCharCode(55296|Je>>10,56320|1023&Je)}}}(s,u)}function oi(l){for(var c="";;){var u=o[l++>>0];if(!u)return c;c+=String.fromCharCode(u)}}function si(l,c){return function(D,v,$){for(var sA=0;sA<D.length;++sA)o[v++>>0]=D.charCodeAt(sA);$||(o[v>>0]=0)}(l,c,!1)}var Gn=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function nt(l,c,u,D){if(!(D>0))return 0;for(var v=u,$=u+D-1,sA=0;sA<l.length;++sA){var K=l.charCodeAt(sA);if(K>=55296&&K<=57343&&(K=65536+((1023&K)<<10)|1023&l.charCodeAt(++sA)),K<=127){if(u>=$)break;c[u++]=K}else if(K<=2047){if(u+1>=$)break;c[u++]=192|K>>6,c[u++]=128|63&K}else if(K<=65535){if(u+2>=$)break;c[u++]=224|K>>12,c[u++]=128|K>>6&63,c[u++]=128|63&K}else if(K<=2097151){if(u+3>=$)break;c[u++]=240|K>>18,c[u++]=128|K>>12&63,c[u++]=128|K>>6&63,c[u++]=128|63&K}else if(K<=67108863){if(u+4>=$)break;c[u++]=248|K>>24,c[u++]=128|K>>18&63,c[u++]=128|K>>12&63,c[u++]=128|K>>6&63,c[u++]=128|63&K}else{if(u+5>=$)break;c[u++]=252|K>>30,c[u++]=128|K>>24&63,c[u++]=128|K>>18&63,c[u++]=128|K>>12&63,c[u++]=128|K>>6&63,c[u++]=128|63&K}}return c[u]=0,u-v}function xn(l,c,u){return nt(l,s,c,u)}function ot(l){for(var c=0,u=0;u<l.length;++u){var D=l.charCodeAt(u);D>=55296&&D<=57343&&(D=65536+((1023&D)<<10)|1023&l.charCodeAt(++u)),D<=127?++c:D<=2047?c+=2:D<=65535?c+=3:D<=2097151?c+=4:D<=67108863?c+=5:c+=6}return c}var Mn=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function ri(l){for(var c=l,u=c>>1;r[u];)++u;if((c=u<<1)-l>32&&Mn)return Mn.decode(s.subarray(l,c));for(var D=0,v="";;){var $=r[l+2*D>>1];if($==0)return v;++D,v+=String.fromCharCode($)}}function ii(l,c,u){if(u===void 0&&(u=2147483647),u<2)return 0;for(var D=c,v=(u-=2)<2*l.length?u/2:l.length,$=0;$<v;++$){var sA=l.charCodeAt($);r[c>>1]=sA,c+=2}return r[c>>1]=0,c-D}function ai(l){return 2*l.length}function Ii(l){for(var c=0,u="";;){var D=a[l+4*c>>2];if(D==0)return u;if(++c,D>=65536){var v=D-65536;u+=String.fromCharCode(55296|v>>10,56320|1023&v)}else u+=String.fromCharCode(D)}}function gi(l,c,u){if(u===void 0&&(u=2147483647),u<4)return 0;for(var D=c,v=D+u-4,$=0;$<l.length;++$){var sA=l.charCodeAt($);if(sA>=55296&&sA<=57343&&(sA=65536+((1023&sA)<<10)|1023&l.charCodeAt(++$)),a[c>>2]=sA,(c+=4)+4>v)break}return a[c>>2]=0,c-D}function Ci(l){for(var c=0,u=0;u<l.length;++u){var D=l.charCodeAt(u);D>=55296&&D<=57343&&++u,c+=4}return c}function Ei(l){var c=ot(l)+1,u=rt(c);return u&&nt(l,o,u,c),u}function Bi(l){var c=ot(l)+1,u=it(c);return nt(l,o,u,c),u}function hi(l){return l}function li(){var l,c=function(){var D=Error();if(!D.stack){try{throw Error(0)}catch(v){D=v}if(!D.stack)return"(no stack trace available)"}return D.stack.toString()}();return g.extraStackTrace&&(c+=`
14
- `+g.extraStackTrace()),(l=c).replace(/__Z[\w\d_]+/g,function(u){var D,v=D=u;return u===v?u:u+" ["+v+"]"})}function Ht(l,c){return l%c>0&&(l+=c-l%c),l}function Nn(l){g.buffer=n=l}function Yt(){g.HEAP8=o=new Int8Array(n),g.HEAP16=r=new Int16Array(n),g.HEAP32=a=new Int32Array(n),g.HEAPU8=s=new Uint8Array(n),g.HEAPU16=B=new Uint16Array(n),g.HEAPU32=C=new Uint32Array(n),g.HEAPF32=d=new Float32Array(n),g.HEAPF64=E=new Float64Array(n)}function bn(){var l=g.usingWasm?65536:16777216,c=2147483648-l;if(a[x>>2]>c)return!1;var u=DA;for(DA=Math.max(DA,16777216);DA<a[x>>2];)DA=DA<=536870912?Ht(2*DA,l):Math.min(Ht((3*DA+2147483648)/4,l),c);var D=g.reallocBuffer(DA);return D&&D.byteLength==DA?(Nn(D),Yt(),!0):(DA=u,!1)}Q=h=f=S=k=M=x=0,y=!1,g.reallocBuffer||(g.reallocBuffer=function(l){try{if(ArrayBuffer.transfer)c=ArrayBuffer.transfer(n,l);else{var c,u=o;c=new ArrayBuffer(l),new Int8Array(c).set(u)}}catch{return!1}return!!Sr(c)&&c});try{(b=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{b=function(c){return c.byteLength}}var Jt=g.TOTAL_STACK||5242880,DA=g.TOTAL_MEMORY||16777216;function Qr(){return DA}function ve(l){for(;l.length>0;){var c=l.shift();if(typeof c=="function"){c();continue}var u=c.func;typeof u=="number"?c.arg===void 0?g.dynCall_v(u):g.dynCall_vi(u,c.arg):u(c.arg===void 0?null:c.arg)}}DA<Jt&&nA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+DA+"! (TOTAL_STACK="+Jt+")"),g.buffer?n=g.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(g.wasmMemory=new WebAssembly.Memory({initial:DA/65536}),n=g.wasmMemory.buffer):n=new ArrayBuffer(DA),g.buffer=n),Yt();var Ln=[],Kt=[],Un=[],Tn=[],vn=[],qt=!1,dr=!1;function ur(l){Ln.unshift(l)}function ci(l){Kt.unshift(l)}function Qi(l){Un.unshift(l)}function di(l){Tn.unshift(l)}function fr(l){vn.unshift(l)}function ui(l,c,u){var D,v;se("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),u&&(D=o[v=c+ot(l)]),xn(l,c,1/0),u&&(o[v]=D)}function fi(l,c,u){return l>=0?l:c<=32?2*Math.abs(1<<c-1)+l:Math.pow(2,c)+l}function mi(l,c,u){if(l<=0)return l;var D=c<=32?Math.abs(1<<c-1):Math.pow(2,c-1);return l>=D&&(c<=32||l>D)&&(l=-2*D+l),l}var mr=Math.abs,pr=Math.ceil,Hn=Math.floor,yr=Math.min,me=0,Vt=null,He=null;function pi(l){return l}g.preloadedImages={},g.preloadedAudios={};var Yn="data:application/octet-stream;base64,";function st(l){return String.prototype.startsWith?l.startsWith(Yn):l.indexOf(Yn)===0}(function(){var c="main.wast",u="main.wasm",D="main.temp.asm.js";st(c)||(c=rA(c)),st(u)||(u=rA(u)),st(D)||(D=rA(D));var v={global:null,env:null,asm2wasm:Te,parent:g},$=null;function sA(CA){return CA}function K(){try{if(g.wasmBinary)return new Uint8Array(g.wasmBinary);if(g.readBinary)return g.readBinary(u);throw"both async and sync fetching of the wasm failed"}catch(CA){re(CA)}}g.asmPreload=g.asm;var kA=g.reallocBuffer,BA=function(CA){CA=Ht(CA,g.usingWasm?65536:16777216);var j=g.buffer.byteLength;if(g.usingWasm)try{var bA=g.wasmMemory.grow((CA-j)/65536);return bA!==-1?g.buffer=g.wasmMemory.buffer:null}catch{return null}};g.reallocBuffer=function(CA){return hA==="asmjs"?kA(CA):BA(CA)};var hA="";g.asm=function(CA,j,bA){var YA;if(!(j=YA=j).table){var JA,KA=g.wasmTableSize;KA===void 0&&(KA=1024);var pe=g.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?pe!==void 0?j.table=new WebAssembly.Table({initial:KA,maximum:pe,element:"anyfunc"}):j.table=new WebAssembly.Table({initial:KA,element:"anyfunc"}):j.table=Array(KA),g.wasmTable=j.table}return j.memoryBase||(j.memoryBase=g.STATIC_BASE),j.tableBase||(j.tableBase=0),JA=function(Je,Re,Xt){if(typeof WebAssembly!="object")return nA("no native wasm support detected"),!1;if(!(g.wasmMemory instanceof WebAssembly.Memory))return nA("no native wasm Memory in use"),!1;function at(ee,te){if(($=ee.exports).memory){var Ke,Wt,qn;Ke=$.memory,Wt=g.buffer,Ke.byteLength<Wt.byteLength&&nA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),qn=new Int8Array(Wt),new Int8Array(Ke).set(qn),Nn(Ke),Yt()}g.asm=$,g.usingWasm=!0,function(Ri){if(me--,g.monitorRunDependencies&&g.monitorRunDependencies(me),me==0&&(Vt!==null&&(clearInterval(Vt),Vt=null),He)){var Dr=He;He=null,Dr()}}("wasm-instantiate")}if(Re.memory=g.wasmMemory,v.global={NaN:NaN,Infinity:1/0},v["global.Math"]=Math,v.env=Re,me++,g.monitorRunDependencies&&g.monitorRunDependencies(me),g.instantiateWasm)try{return g.instantiateWasm(v,at)}catch(ee){return nA("Module.instantiateWasm callback failed with error: "+ee),!1}function Ge(ee){at(ee.instance,ee.module)}function Kn(ee){(!g.wasmBinary&&(H||oA)&&typeof fetch=="function"?fetch(u,{credentials:"same-origin"}).then(function(te){if(!te.ok)throw"failed to load wasm binary file at '"+u+"'";return te.arrayBuffer()}).catch(function(){return K()}):new Promise(function(te,Ke){te(K())})).then(function(te){return WebAssembly.instantiate(te,v)}).then(ee).catch(function(te){nA("failed to asynchronously prepare wasm: "+te),re(te)})}return g.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||st(u)||typeof fetch!="function"?Kn(Ge):WebAssembly.instantiateStreaming(fetch(u,{credentials:"same-origin"}),v).then(Ge).catch(function(ee){nA("wasm streaming compile failed: "+ee),nA("falling back to ArrayBuffer instantiation"),Kn(Ge)}),{}}(CA,j,bA),ge(JA,"no binaryen method succeeded."),JA},g.asm})(),h=(Q=1024)+4816,Kt.push(),g.STATIC_BASE=Q,g.STATIC_BUMP=4816;var TA=h;function yi(l){o[TA]=o[l],o[TA+1]=o[l+1],o[TA+2]=o[l+2],o[TA+3]=o[l+3]}function Si(l){o[TA]=o[l],o[TA+1]=o[l+1],o[TA+2]=o[l+2],o[TA+3]=o[l+3],o[TA+4]=o[l+4],o[TA+5]=o[l+5],o[TA+6]=o[l+6],o[TA+7]=o[l+7]}function Di(l,c,u){var D=u>0?u:ot(l)+1,v=Array(D),$=nt(l,v,0,v.length);return c&&(v.length=$),v}function ki(l){for(var c=[],u=0;u<l.length;u++){var D=l[u];D>255&&(D&=255),c.push(String.fromCharCode(D))}return c.join("")}h+=16,x=IA(4),k=(f=S=WA(h))+Jt,M=WA(k),a[x>>2]=M,y=!0,g.wasmTableSize=4,g.wasmMaxTableSize=4,g.asmGlobalArg={},g.asmLibraryArg={abort:re,assert:ge,enlargeMemory:bn,getTotalMemory:Qr,abortOnCannotGrowMemory:function(){re("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+DA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(c,u,D){var v=Pt();try{return g.dynCall_iii(c,u,D)}catch($){if(Ot(v),typeof $!="number"&&$!=="longjmp")throw $;g.setThrew(1,0)}},___assert_fail:function(c,u,D,v){re("Assertion failed: "+tt(c)+", at: "+[u?tt(u):"unknown filename",D,v?tt(v):"unknown function"])},___setErrNo:function(c){return g.___errno_location&&(a[g.___errno_location()>>2]=c),c},_abort:function(){g.abort()},_emscripten_memcpy_big:function(c,u,D){return s.set(s.subarray(u,u+D),c),c},_llvm_floor_f64:Hn,DYNAMICTOP_PTR:x,tempDoublePtr:TA,ABORT:et,STACKTOP:S,STACK_MAX:k};var Jn=g.asm(g.asmGlobalArg,g.asmLibraryArg,n);g.asm=Jn,g.___errno_location=function(){return g.asm.___errno_location.apply(null,arguments)};var Sr=g._emscripten_replace_memory=function(){return g.asm._emscripten_replace_memory.apply(null,arguments)};g._free=function(){return g.asm._free.apply(null,arguments)};var rt=g._malloc=function(){return g.asm._malloc.apply(null,arguments)};g._memcpy=function(){return g.asm._memcpy.apply(null,arguments)},g._memset=function(){return g.asm._memset.apply(null,arguments)},g._sbrk=function(){return g.asm._sbrk.apply(null,arguments)},g._stb_vorbis_js_channels=function(){return g.asm._stb_vorbis_js_channels.apply(null,arguments)},g._stb_vorbis_js_close=function(){return g.asm._stb_vorbis_js_close.apply(null,arguments)},g._stb_vorbis_js_decode=function(){return g.asm._stb_vorbis_js_decode.apply(null,arguments)},g._stb_vorbis_js_open=function(){return g.asm._stb_vorbis_js_open.apply(null,arguments)},g._stb_vorbis_js_sample_rate=function(){return g.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},g.establishStackSpace=function(){return g.asm.establishStackSpace.apply(null,arguments)},g.getTempRet0=function(){return g.asm.getTempRet0.apply(null,arguments)},g.runPostSets=function(){return g.asm.runPostSets.apply(null,arguments)},g.setTempRet0=function(){return g.asm.setTempRet0.apply(null,arguments)},g.setThrew=function(){return g.asm.setThrew.apply(null,arguments)};var it=g.stackAlloc=function(){return g.asm.stackAlloc.apply(null,arguments)},Ot=g.stackRestore=function(){return g.asm.stackRestore.apply(null,arguments)},Pt=g.stackSave=function(){return g.asm.stackSave.apply(null,arguments)};function Ye(l){this.name="ExitStatus",this.message="Program terminated with exit("+l+")",this.status=l}function Zt(l){l=l||g.arguments,!(me>0)&&(function(){if(g.preRun)for(typeof g.preRun=="function"&&(g.preRun=[g.preRun]);g.preRun.length;)ur(g.preRun.shift());ve(Ln)}(),!(me>0)&&(g.calledRun||(g.setStatus?(g.setStatus("Running..."),setTimeout(function(){setTimeout(function(){g.setStatus("")},1),c()},1)):c())));function c(){!g.calledRun&&(g.calledRun=!0,et||(qt||(qt=!0,ve(Kt)),ve(Un),g.onRuntimeInitialized&&g.onRuntimeInitialized(),function(){if(g.postRun)for(typeof g.postRun=="function"&&(g.postRun=[g.postRun]);g.postRun.length;)fr(g.postRun.shift());ve(vn)}()))}}function wi(l,c){(!c||!g.noExitRuntime||l!==0)&&(g.noExitRuntime||(et=!0,kn=l,S=G,ve(Tn),dr=!0,g.onExit&&g.onExit(l)),g.quit(l,new Ye(l)))}function re(l){throw g.onAbort&&g.onAbort(l),l!==void 0?(V(l),nA(l),l=JSON.stringify(l)):l="",et=!0,kn=1,"abort("+l+"). Build with -s ASSERTIONS=1 for more info."}if(g.dynCall_iii=function(){return g.asm.dynCall_iii.apply(null,arguments)},g.asm=Jn,g.ccall=Rn,g.cwrap=function(c,u,D,v){var $=(D=D||[]).every(function(sA){return sA==="number"});return u!=="string"&&$&&!v?wn(c):function(){return Rn(c,u,D,arguments,v)}},Ye.prototype=Error(),Ye.prototype.constructor=Ye,He=function l(){g.calledRun||Zt(),g.calledRun||(He=l)},g.run=Zt,g.abort=re,g.preInit)for(typeof g.preInit=="function"&&(g.preInit=[g.preInit]);g.preInit.length>0;)g.preInit.pop()();g.noExitRuntime=!0,Zt(),g.onRuntimeInitialized=()=>{Lo=!0,Uo()},oe.decode=function(l){return function(u){if(!Lo)throw Error("Not initialized");var D={};function v(Re){return new Int32Array(g.HEAPU8.buffer,Re,1)[0]}function $(Re,Xt){var at=new ArrayBuffer(Xt*Float32Array.BYTES_PER_ELEMENT),Ge=new Float32Array(at);return Ge.set(new Float32Array(g.HEAPU8.buffer,Re,Xt)),Ge}D.open=g.cwrap("stb_vorbis_js_open","number",[]),D.close=g.cwrap("stb_vorbis_js_close","void",["number"]),D.channels=g.cwrap("stb_vorbis_js_channels","number",["number"]),D.sampleRate=g.cwrap("stb_vorbis_js_sample_rate","number",["number"]),D.decode=g.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var sA,K,kA,BA,hA=D.open(),CA=(sA=u,K=u.byteLength,kA=g._malloc(K),(BA=new Uint8Array(g.HEAPU8.buffer,kA,K)).set(new Uint8Array(sA,0,K)),BA),j=g._malloc(4),bA=g._malloc(4),YA=D.decode(hA,CA.byteOffset,CA.byteLength,j,bA);if(g._free(CA.byteOffset),YA<0)throw D.close(hA),g._free(j),Error("stbvorbis decode failed: "+YA);for(var JA=D.channels(hA),KA=Array(JA),pe=new Int32Array(g.HEAPU32.buffer,v(j),JA),qA=0;qA<JA;qA++)KA[qA]=$(pe[qA],YA),g._free(pe[qA]);var Je=D.sampleRate(hA);return D.close(hA),g._free(v(j)),g._free(j),{data:KA,sampleRate:Je,eof:!0,error:null}}(l)}})();var on=new Float32Array(30001);for(let e=0;e<on.length;e++){let A=-15e3+e;on[e]=Math.pow(2,A/1200)}function zA(e){return e<=-32767?0:on[e- -15e3]}var ut=-2e4,To=16500,sn=new Float32Array(To-ut+1);for(let e=0;e<sn.length;e++){let A=ut+e;sn[e]=440*Math.pow(2,(A-6900)/1200)}function Pe(e){return e<ut||e>To?440*Math.pow(2,(e-6900)/1200):sn[~~e-ut]}var an=-1660,Mr=1600,rn=new Float32Array((Mr-an)*100+1);for(let e=0;e<rn.length;e++){let A=(an*100+e)/100;rn[e]=Math.pow(10,-A/20)}function XA(e){return rn[Math.floor((e-an)*100)]}var vo=.01,HA=100,In=90,Nr=15e-6,jA=class e{currentSampleTime=0;sampleRate;currentAttenuationDb=HA;state=0;releaseStartDb=HA;releaseStartTimeSamples=0;currentReleaseGain=1;attackDuration=0;decayDuration=0;releaseDuration=0;attenuation=0;attenuationTargetGain=0;attenuationTarget=0;sustainDbRelative=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;constructor(A,t){this.sampleRate=A,this.canEndOnSilentSustain=t/10>=In}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=XA(A.volumeEnvelope.currentAttenuationDb),e.recalculate(A)}static recalculate(A){let t=A.volumeEnvelope,n=C=>Math.max(0,Math.floor(zA(C)*t.sampleRate));t.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[i.initialAttenuation],1440))/10,t.attenuationTargetGain=XA(t.attenuationTarget),t.sustainDbRelative=Math.min(HA,A.modulatedGenerators[i.sustainVolEnv]/10);let o=Math.min(HA,t.sustainDbRelative);t.attackDuration=n(A.modulatedGenerators[i.attackVolEnv]);let s=A.modulatedGenerators[i.decayVolEnv],r=(60-A.targetKey)*A.modulatedGenerators[i.keyNumToVolEnvDecay],B=o/HA;t.decayDuration=n(s+r)*B,t.releaseDuration=n(A.modulatedGenerators[i.releaseVolEnv]),t.delayEnd=n(A.modulatedGenerators[i.delayVolEnv]),t.attackEnd=t.attackDuration+t.delayEnd;let a=(60-A.targetKey)*A.modulatedGenerators[i.keyNumToVolEnvHold];if(t.holdEnd=n(A.modulatedGenerators[i.holdVolEnv]+a)+t.attackEnd,t.decayEnd=t.decayDuration+t.holdEnd,t.state===0&&t.attackEnd===0&&(t.state=2),A.isInRelease){let C=Math.max(0,Math.min(HA,t.sustainDbRelative)),d=C/HA;switch(t.decayDuration=n(s+r)*d,t.state){case 0:t.releaseStartDb=HA;break;case 1:let Q=1-(t.attackEnd-t.releaseStartTimeSamples)/t.attackDuration;t.releaseStartDb=20*Math.log10(Q)*-1;break;case 2:t.releaseStartDb=0;break;case 3:t.releaseStartDb=(1-(t.decayEnd-t.releaseStartTimeSamples)/t.decayDuration)*C;break;case 4:t.releaseStartDb=C;break}t.releaseStartDb=Math.max(0,Math.min(t.releaseStartDb,HA)),t.releaseStartDb>=In&&(A.finished=!0),t.currentReleaseGain=XA(t.releaseStartDb);let E=(HA-t.releaseStartDb)/HA;t.releaseDuration*=E}}static apply(A,t,n,o){let s=A.volumeEnvelope,r=n/10,B=o;if(A.isInRelease){let C=s.currentSampleTime-s.releaseStartTimeSamples;if(C>=s.releaseDuration){for(let E=0;E<t.length;E++)t[E]=0;A.finished=!0;return}let d=HA-s.releaseStartDb;for(let E=0;E<t.length;E++){s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B;let Q=C/s.releaseDuration*d+s.releaseStartDb;s.currentReleaseGain=s.attenuation*XA(Q+r),t[E]*=s.currentReleaseGain,s.currentSampleTime++,C++}s.currentReleaseGain<=Nr&&(A.finished=!0);return}let a=0;switch(s.state){case 0:for(;s.currentSampleTime<s.delayEnd;)if(s.currentAttenuationDb=HA,t[a]=0,s.currentSampleTime++,++a>=t.length)return;s.state++;case 1:for(;s.currentSampleTime<s.attackEnd;){s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B;let C=1-(s.attackEnd-s.currentSampleTime)/s.attackDuration;if(t[a]*=C*s.attenuation*XA(r),s.currentAttenuationDb=0,s.currentSampleTime++,++a>=t.length)return}s.state++;case 2:for(;s.currentSampleTime<s.holdEnd;)if(s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B,t[a]*=s.attenuation*XA(r),s.currentAttenuationDb=0,s.currentSampleTime++,++a>=t.length)return;s.state++;case 3:for(;s.currentSampleTime<s.decayEnd;)if(s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B,s.currentAttenuationDb=(1-(s.decayEnd-s.currentSampleTime)/s.decayDuration)*s.sustainDbRelative,t[a]*=s.attenuation*XA(s.currentAttenuationDb+r),s.currentSampleTime++,++a>=t.length)return;s.state++;case 4:for(s.canEndOnSilentSustain&&s.sustainDbRelative>=In&&(A.finished=!0);;)if(s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B,t[a]*=s.attenuation*XA(s.sustainDbRelative+r),s.currentAttenuationDb=s.sustainDbRelative,s.currentSampleTime++,++a>=t.length)return}}};function Ho(e){let A=e.messageData,t=e.channelNumber,n;if(t>=0&&(n=this.workletProcessorChannels[t],n===void 0)){J(`Trying to access channel ${t} which does not exist... ignoring!`);return}switch(e.messageType){case gA.noteOn:n.noteOn(...A);break;case gA.noteOff:n.noteOff(A);break;case gA.pitchWheel:n.pitchWheel(...A);break;case gA.ccChange:n.controllerChange(...A);break;case gA.customcCcChange:n.setCustomController(A[0],A[1]),n.updateChannelTuning();break;case gA.killNote:n.killNote(A);break;case gA.programChange:this.programChange(t,A[0],A[1]);break;case gA.channelPressure:n.channelPressure(A);break;case gA.polyPressure:n.polyPressure(...A);break;case gA.ccReset:t===ZA?this.resetAllControllers():n.resetControllers();break;case gA.systemExclusive:this.systemExclusive(A[0],A[1]);break;case gA.setChannelVibrato:if(t===ZA)for(let r=0;r<this.workletProcessorChannels.length;r++){let B=this.workletProcessorChannels[r];A.rate===-1?B.disableAndLockGSNRPN():B.setVibrato(A.depth,A.rate,A.delay)}else A.rate===-1?n.disableAndLockGSNRPN():n.setVibrato(A.depth,A.rate,A.delay);break;case gA.stopAll:t===ZA?this.stopAllChannels(A===1):n.stopAllNotes(A===1);break;case gA.killNotes:this.voiceKilling(A);break;case gA.muteChannel:n.muteChannel(A);break;case gA.addNewChannel:this.createWorkletChannel(!0);break;case gA.debugMessage:this.debugMessage();break;case gA.setMasterParameter:let o=A[0],s=A[1];switch(o){case Oe.masterPan:this.setMasterPan(s);break;case Oe.mainVolume:this.setMasterGain(s);break;case Oe.voicesCap:this.voiceCap=s;break;case Oe.interpolationType:this.interpolationType=s;break}break;case gA.setDrums:n.setDrums(A);break;case gA.transpose:t===ZA?this.transposeAllChannels(A[0],A[1]):n.transposeChannel(A[0],A[1]);break;case gA.highPerformanceMode:this.highPerformanceMode=A;break;case gA.lockController:A[0]===ZA?n.lockPreset=A[1]:n.lockedControllers[A[0]]=A[1];break;case gA.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case gA.soundFontManager:try{this.soundfontManager.handleMessage(A[0],A[1])}catch(r){this.post({messageType:MA.soundfontError,messageData:r})}this.clearSoundFont(!0,!1);break;case gA.keyModifierManager:this.keyModifierManager.handleMessage(A[0],A[1]);break;case gA.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case gA.setLogLevel:jn(A[0],A[1],A[2],A[3]);break;case gA.setEffectsGain:this.reverbGain=A[0],this.chorusGain=A[1];break;case gA.destroyWorklet:this.alive=!1,this.destroyWorkletProcessor();break;default:J("Unrecognized event:",A);break}}function Yo(e,A){this.enableEventSystem&&this.post({messageType:MA.eventCall,messageData:{eventName:e,eventData:A}})}function Jo(){if(!this.enableEventSystem)return;let e=this.workletProcessorChannels.map(A=>({voicesAmount:A.voices.length,pitchBend:A.midiControllers[mA+W.pitchWheel],pitchBendRangeSemitones:A.midiControllers[mA+W.pitchWheelRange]/128,isMuted:A.isMuted,isDrum:A.drumChannel,transposition:A.channelTransposeKeyShift+A.customControllers[aA.channelTransposeFine]/100}));this.post({messageType:MA.channelProperties,messageData:e})}function br(e,A,t){let n=e,o=A<<7|t;return e===127&&A===127&&t===127?{midiNote:-1,centTuning:null}:{midiNote:n,centTuning:o*.0061}}var gn={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};function Ko(e,A=0){let t=e[0];if(!(this.deviceID!==ZA&&e[1]!==127&&this.deviceID!==e[1]))switch(t){default:J(`%cUnrecognized SysEx: %c${RA(e)}`,I.warn,I.unrecognized);break;case 126:case 127:switch(e[2]){case 4:let o;switch(e[3]){case 1:let s=e[5]<<7|e[4];this.setMIDIVolume(s/16384),p(`%cMaster Volume. Volume: %c${s}`,I.info,I.value);break;case 2:let B=((e[5]<<7|e[4])-8192)/8192;this.setMasterPan(B),p(`%cMaster Pan. Pan: %c${B}`,I.info,I.value);break;case 3:let a=(e[5]<<7|e[6])-8192;o=Math.floor(a/81.92),this.setMasterTuning(o),p(`%cMaster Fine Tuning. Cents: %c${o}`,I.info,I.value);break;case 4:o=(e[5]-64)*100,this.setMasterTuning(o),p(`%cMaster Coarse Tuning. Cents: %c${o}`,I.info,I.value);break;default:J(`%cUnrecognized MIDI Device Control Real-time message: %c${RA(e)}`,I.warn,I.unrecognized)}break;case 9:e[3]===1?(p("%cGM system on",I.info),this.system="gm"):e[3]===3?(p("%cGM2 system on",I.info),this.system="gm2"):(p("%cGM system off, defaulting to GS",I.info),this.system="gs");break;case 8:switch(e[3]){case 2:case 7:let s=4;e[3]===7&&s++;let r=e[s++],B=e[s++];for(let C=0;C<B;C++)this.tunings[r][e[s++]]=br(e[s++],e[s++],e[s++]);p(`%cSingle Note Tuning. Program: %c${r}%c Keys affected: %c${B}`,I.info,I.recognized,I.info,I.recognized);break;case 9:case 8:let a=new Int8Array(12);if(e[3]===8)for(let C=0;C<12;C++)a[C]=e[7+C]-64;else for(let C=0;C<24;C+=2){let d=(e[7+C]<<7|e[8+C])-8192;a[C/2]=Math.floor(d/81.92)}(e[4]&1)===1&&this.workletProcessorChannels[14+A].setOctaveTuning(a),(e[4]>>1&1)===1&&this.workletProcessorChannels[15+A].setOctaveTuning(a);for(let C=0;C<7;C++)(e[5]>>C&1)===1&&this.workletProcessorChannels[7+C+A].setOctaveTuning(a);for(let C=0;C<7;C++)(e[6]>>C&1)===1&&this.workletProcessorChannels[C+A].setOctaveTuning(a);p(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${a.join(" ")}`,I.info,I.value);break;default:J(`%cUnrecognized MIDI Tuning standard message: %c${RA(e)}`,I.warn,I.unrecognized);break}break;default:J(`%cUnrecognized MIDI Realtime/non realtime message: %c${RA(e)}`,I.warn,I.unrecognized)}break;case 65:let n=function(){J(`%cUnrecognized Roland %cGS %cSysEx: %c${RA(e)}`,I.warn,I.recognized,I.warn,I.unrecognized)};if(e[2]===66&&e[3]===18){let o=e[7];if(e[6]===127){o===0?(p("%cGS Reset received!",I.info),this.resetAllControllers(!1),this.system="gs"):o===127&&(p("%cGS system off, switching to GM2",I.info),this.resetAllControllers(!1),this.system="gm2");return}else if(e[4]===64){if((e[5]&16)>0){let s=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A,r=this.workletProcessorChannels[s];switch(e[6]){default:n();break;case 21:let B=o>0&&e[5]>>4;r.setDrums(B),p(`%cChannel %c${s}%c ${B?"is now a drum channel":"now isn't a drum channel"}%c via: %c${RA(e)}`,I.info,I.value,I.recognized,I.info,I.value);return;case 22:let a=o-64;r.transposeChannel(a),p(`%cChannel %c${s}%c pitch shift. Semitones %c${a}%c, with %c${RA(e)}`,I.info,I.recognized,I.info,I.value,I.info,I.value);return;case 28:let C=o;C===0?(r.randomPan=!0,p(`%cRandom pan is set to %cON%c for %c${s}`,I.info,I.recognized,I.info,I.value)):(r.randomPan=!1,r.controllerChange(m.pan,C));break;case 33:r.controllerChange(m.chorusDepth,o);break;case 34:r.controllerChange(m.reverbDepth,o);break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:let d=e.length-9,E=new Int8Array(12);for(let h=0;h<d;h++)E[h]=e[h+7]-64;r.setOctaveTuning(E);let Q=o-64;p(`%cChannel %c${s}%c octave scale tuning. Cents %c${E.join(" ")}%c, with %c${RA(e)}`,I.info,I.recognized,I.info,I.value,I.info,I.value),r.setTuning(Q);break}return}else if(e[5]===0&&e[6]===6){p(`%cRoland GS Master Pan set to: %c${o}%c with: %c${RA(e)}`,I.info,I.value,I.info,I.value),this.setMasterPan((o-64)/64);return}else if(e[5]===0&&e[6]===5){let s=o-64;p(`%cRoland GS Master Key-Shift set to: %c${s}%c with: %c${RA(e)}`,I.info,I.value,I.info,I.value),this.setMasterTuning(s*100);return}else if(e[5]===0&&e[6]===4){p(`%cRoland GS Master Volume set to: %c${o}%c with: %c${RA(e)}`,I.info,I.value,I.info,I.value),this.setMIDIVolume(o/127);return}}n();return}else if(e[2]===69&&e[3]===18){if(e[4]===16&&e[6]===0)if(e[5]===0){let o=new Uint8Array(e.slice(7,e.length-2));this.callEvent("synthdisplay",{displayData:o,displayType:gn.SoundCanvasText})}else if(e[5]===1){let o=new Uint8Array(e.slice(7,e.length-3));this.callEvent("synthdisplay",{displayData:o,displayType:gn.SoundCanvasDotDisplay}),p(`%cRoland SC Display Dot Matrix via: %c${RA(e)}`,I.info,I.value)}else n()}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),p(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${RA(e)}`,I.info,I.value,I.info,I.value);return}else{J(`%cUnrecognized Roland SysEx: %c${RA(e)}`,I.warn,I.unrecognized);return}break;case 67:if(e[2]===76)if(e[3]===0&&e[4]===0)switch(e[5]){case 4:let o=e[6];this.setMIDIVolume(o/127),p(`%cXG master volume. Volume: %c${o}`,I.info,I.recognized);break;case 6:let s=e[6]-64;this.transposeAllChannels(s),p(`%cXG master transpose. Volume: %c${s}`,I.info,I.recognized);break;case 126:p("%cXG system on",I.info),this.resetAllControllers(!1),this.system="xg";break}else if(e[3]===8){if(this.system!=="xg")return;let o=e[4]+A;if(o>=this.workletProcessorChannels.length)return;let s=this.workletProcessorChannels[o],r=e[6];switch(e[5]){case 1:s.controllerChange(m.bankSelect,r);break;case 2:s.controllerChange(m.lsbForControl0BankSelect,r);break;case 3:s.programChange(r);break;case 8:if(s.drumChannel)return;let B=r-64;s.channelTransposeKeyShift=B;break;case 11:s.controllerChange(m.mainVolume,r);break;case 14:let a=r;a===0?(s.randomPan=!0,p(`%cRandom pan is set to %cON%c for %c${o}`,I.info,I.recognized,I.info,I.value)):s.controllerChange(m.pan,a);break;case 19:s.controllerChange(m.reverbDepth,r);break;case 18:s.controllerChange(m.chorusDepth,r);break;default:J(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,I.warn,I.unrecognized)}}else if(e[3]===6&&e[4]===0){let o=new Uint8Array(e.slice(5,e.length-1));this.callEvent("synthdisplay",{displayData:o,displayType:gn.XGText})}else this.system==="xg"&&J(`%cUnrecognized Yamaha XG SysEx: %c${RA(e)}`,I.warn,I.unrecognized);else this.system==="xg"&&J(`%cUnrecognized Yamaha SysEx: %c${RA(e)}`,I.warn,I.unrecognized);break}}function qo(e){this.midiVolume=e,this.setMasterPan(this.pan)}function Vo(e){this.masterGain=e*Cn,this.setMasterPan(this.pan)}function Oo(e){this.pan=e,e=e/2+.5,this.panLeft=1-e,this.panRight=e}var Ze={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};function Po(){let e=4;for(let n of this.instruments)e+=n.instrumentZones.reduce((o,s)=>(s.generators=s.generators.filter(r=>r.generatorType!==i.sampleID&&r.generatorType!==i.keyRange&&r.generatorType!==i.velRange),(s.velRange.max!==127||s.velRange.min!==0)&&s.generators.unshift(new L(i.velRange,s.velRange.max<<8|Math.max(s.velRange.min,0),!1)),(s.keyRange.max!==127||s.keyRange.min!==0)&&s.generators.unshift(new L(i.keyRange,s.keyRange.max<<8|Math.max(s.keyRange.min,0),!1)),s.isGlobal||s.generators.push(new L(i.sampleID,this.samples.indexOf(s.sample),!1)),s.generators.length*4+o),0);let A=new U(e),t=0;for(let n of this.instruments)for(let o of n.instrumentZones){o.generatorZoneStartIndex=t;for(let s of o.generators)T(A,s.generatorType),T(A,s.generatorValue),t++}return z(A,0),EA(new iA("igen",A.length,A))}function Zo(e,A,t,n,o){let s=this.samples.map((C,d)=>{t&&C.compressSample(n,o);let E=C.getRawData();return p(`%cEncoded sample %c${d}. ${C.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${C.isCompressed}%c.`,I.info,I.recognized,I.info,I.recognized,I.info,C.isCompressed?I.recognized:I.unrecognized,I.info),E}),r=this.samples.reduce((C,d,E)=>C+s[E].length+46,0),B=new U(r);this.samples.forEach((C,d)=>{let E=s[d],Q,h,y=E.length;C.isCompressed?(Q=B.currentIndex,h=Q+E.length):(Q=B.currentIndex/2,h=Q+E.length/2,y+=46),e.push(Q),B.set(E,B.currentIndex),B.currentIndex+=y,A.push(h)});let a=EA(new iA("smpl",B.length,B),new U([115,100,116,97]));return EA(new iA("LIST",a.length,a))}function Xo(e,A){let n=new U(46*(this.samples.length+1));return this.samples.forEach((o,s)=>{FA(n,o.sampleName,20);let r=e[s];z(n,r);let B=A[s];z(n,B);let a=o.sampleLoopStartIndex+r,C=o.sampleLoopEndIndex+r;o.isCompressed&&(a-=r,C-=r),z(n,a),z(n,C),z(n,o.sampleRate),n[n.currentIndex++]=o.samplePitch,n[n.currentIndex++]=o.samplePitchCorrection,T(n,o.sampleLink),T(n,o.sampleType)}),FA(n,"EOS",46),EA(new iA("shdr",n.length,n))}function Wo(){let e=10;for(let n of this.instruments)e+=n.instrumentZones.reduce((o,s)=>s.modulators.length*10+o,0);let A=new U(e),t=0;for(let n of this.instruments)for(let o of n.instrumentZones){o.modulatorZoneStartIndex=t;for(let s of o.modulators)T(A,s.sourceEnum),T(A,s.modulatorDestination),T(A,s.transformAmount),T(A,s.secondarySourceEnum),T(A,s.transformType),t++}return ye(A,0,10),EA(new iA("imod",A.length,A))}function _o(){let e=this.instruments.reduce((s,r)=>r.instrumentZones.length*4+s,4),A=new U(e),t=0,n=0,o=0;for(let s of this.instruments){s.instrumentZoneIndex=t;for(let r of s.instrumentZones)r.zoneID=t,T(A,n),T(A,o),n+=r.generators.length,o+=r.modulators.length,t++}return T(A,n),T(A,o),EA(new iA("ibag",A.length,A))}function zo(){let e=this.instruments.length*22+22,A=new U(e),t=0,n=0;for(let o of this.instruments)FA(A,o.instrumentName,20),T(A,t),t+=o.instrumentZones.length,o.instrumentID=n,n++;return FA(A,"EOI",20),T(A,t),EA(new iA("inst",A.length,A))}function jo(){let e=4;for(let n of this.presets)e+=n.presetZones.reduce((o,s)=>(s.generators=s.generators.filter(r=>r.generatorType!==i.instrument&&r.generatorType!==i.keyRange&&r.generatorType!==i.velRange),(s.velRange.max!==127||s.velRange.min!==0)&&s.generators.unshift(new L(i.velRange,s.velRange.max<<8|Math.max(s.velRange.min,0),!1)),(s.keyRange.max!==127||s.keyRange.min!==0)&&s.generators.unshift(new L(i.keyRange,s.keyRange.max<<8|Math.max(s.keyRange.min,0),!1)),s.isGlobal||s.generators.push(new L(i.instrument,this.instruments.indexOf(s.instrument),!1)),s.generators.length*4+o),0);let A=new U(e),t=0;for(let n of this.presets)for(let o of n.presetZones){o.generatorZoneStartIndex=t;for(let s of o.generators)T(A,s.generatorType),T(A,s.generatorValue);t+=o.generators.length}return T(A,0),T(A,0),EA(new iA("pgen",A.length,A))}function $o(){let e=10;for(let n of this.presets)e+=n.presetZones.reduce((o,s)=>s.modulators.length*10+o,0);let A=new U(e),t=0;for(let n of this.presets)for(let o of n.presetZones){o.modulatorZoneStartIndex=t;for(let s of o.modulators)T(A,s.sourceEnum),T(A,s.modulatorDestination),T(A,s.transformAmount),T(A,s.secondarySourceEnum),T(A,s.transformType),t++}return ye(A,0,10),EA(new iA("pmod",A.length,A))}function As(){let e=this.presets.reduce((s,r)=>r.presetZones.length*4+s,4),A=new U(e),t=0,n=0,o=0;for(let s of this.presets){s.presetZoneStartIndex=t;for(let r of s.presetZones)r.zoneID=t,T(A,n),T(A,o),n+=r.generators.length,o+=r.modulators.length,t++}return T(A,n),T(A,o),EA(new iA("pbag",A.length,A))}function es(){let e=this.presets.length*38+38,A=new U(e),t=0;for(let n of this.presets)FA(A,n.presetName,20),T(A,n.program),T(A,n.bank),T(A,t),z(A,n.library),z(A,n.genre),z(A,n.morphology),t+=n.presetZones.length;return FA(A,"EOP",20),T(A,0),T(A,0),T(A,t),z(A,0),z(A,0),z(A,0),EA(new iA("phdr",A.length,A))}var Lr={compress:!1,compressionQuality:.5,compressionFunction:void 0};function ts(e=Lr){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");uA("%cSaving soundfont...",I.info),p(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,I.info,I.recognized,I.info,I.recognized),p("%cWriting INFO...",I.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0");for(let[b,G]of Object.entries(this.soundFontInfo))if(b==="ifil"||b==="iver"){let g=parseInt(G.split(".")[0]),F=parseInt(G.split(".")[1]),H=new U(4);T(H,g),T(H,F),A.push(EA(new iA(b,4,H)))}else if(b==="DMOD")A.push(EA(new iA(b,G.length,G)));else{let g=new U(G.length);FA(g,G),A.push(EA(new iA(b,G.length,g)))}let t=dA([new U([73,78,70,79]),...A]),n=EA(new iA("LIST",t.length,t));p("%cWriting SDTA...",I.info);let o=[],s=[],r=Zo.call(this,o,s,e?.compress,e?.compressionQuality??.5,e.compressionFunction);p("%cWriting PDTA...",I.info),p("%cWriting SHDR...",I.info);let B=Xo.call(this,o,s);p("%cWriting IGEN...",I.info);let a=Po.call(this);p("%cWriting IMOD...",I.info);let C=Wo.call(this);p("%cWriting IBAG...",I.info);let d=_o.call(this);p("%cWriting INST...",I.info);let E=zo.call(this),Q=jo.call(this);p("%cWriting PMOD...",I.info);let h=$o.call(this);p("%cWriting PBAG...",I.info);let y=As.call(this);p("%cWriting PHDR...",I.info);let f=es.call(this),S=dA([new U([112,100,116,97]),f,y,h,Q,E,d,C,a,B]),k=EA(new iA("LIST",S.length,S));p("%cWriting the output file...",I.info);let M=dA([new U([115,102,98,107]),n,r,k]),x=EA(new iA("RIFF",M.length,M));return p(`%cSaved succesfully! Final file size: %c${x.length}`,I.info,I.recognized),Z(),x}var Xe=class{velRange={min:-1,max:127};keyRange={min:-1,max:127};isGlobal=!1;generators=[];modulators=[];get hasKeyRange(){return this.keyRange.min!==-1}get hasVelRange(){return this.velRange.min!==-1}getGeneratorValue(A,t){return this.generators.find(n=>n.generatorType===A)?.generatorValue??t}};var NA=class extends Xe{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},he=class extends Xe{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var Ur=new Set([i.velRange,i.keyRange,i.instrument,i.exclusiveClass,i.endOper,i.sampleModes,i.startloopAddrsOffset,i.startloopAddrsCoarseOffset,i.endloopAddrsOffset,i.endloopAddrsCoarseOffset,i.startAddrsOffset,i.startAddrsCoarseOffset,i.endAddrOffset,i.endAddrsCoarseOffset,i.initialAttenuation,i.fineTune,i.coarseTune,i.keyNumToVolEnvHold,i.keyNumToVolEnvDecay,i.keyNumToModEnvHold,i.keyNumToModEnvDecay]);function ns(e,A=!0){function t(E,Q){E.push(...Q.filter(h=>!E.find(y=>y.generatorType===h.generatorType)))}function n(E,Q){return{min:Math.max(E.min,Q.min),max:Math.min(E.max,Q.max)}}function o(E,Q){E.push(...Q.filter(h=>!E.find(y=>P.isIdentical(h,y))))}let s=[],r=[],B=[],a={min:0,max:127},C={min:0,max:127},d=e.presetZones.find(E=>E.isGlobal);d&&(r.push(...d.generators),B.push(...d.modulators),a=d.keyRange,C=d.velRange);for(let E of e.presetZones){if(E.isGlobal)continue;let Q=E.keyRange;E.hasKeyRange||(Q=a);let h=E.velRange;E.hasVelRange||(h=C);let y=E.generators.map(g=>new L(g.generatorType,g.generatorValue));t(y,r);let f=[...E.modulators];o(f,B);let S=E.instrument.instrumentZones,k=[],M=[],x={min:0,max:127},b={min:0,max:127},G=S.find(g=>g.isGlobal);G&&(k.push(...G.generators),M.push(...G.modulators),x=G.keyRange,b=G.velRange);for(let g of S){if(g.isGlobal)continue;let F=g.keyRange;g.hasKeyRange||(F=x);let H=g.velRange;if(g.hasVelRange||(H=b),F=n(F,Q),H=n(H,h),F.max<F.min||H.max<H.min)continue;let oA=g.generators.map(V=>new L(V.generatorType,V.generatorValue));t(oA,k);let tA=[...g.modulators];o(tA,M);let O=[...tA];for(let V of f){let nA=O.findIndex(IA=>P.isIdentical(V,IA));nA!==-1?O[nA]=O[nA].sumTransform(V):O.push(V)}let _=oA.map(V=>new L(V.generatorType,V.generatorValue));for(let V of y){if(V.generatorType===i.velRange||V.generatorType===i.keyRange||V.generatorType===i.instrument||V.generatorType===i.endOper||V.generatorType===i.sampleModes)continue;let nA=oA.findIndex(IA=>IA.generatorType===V.generatorType);if(nA!==-1){let IA=_[nA].generatorValue+V.generatorValue;_[nA]=new L(V.generatorType,IA)}else{let IA=q[V.generatorType].def+V.generatorValue;_.push(new L(V.generatorType,IA))}}_=_.filter(V=>V.generatorType!==i.sampleID&&V.generatorType!==i.keyRange&&V.generatorType!==i.velRange&&V.generatorType!==i.endOper&&V.generatorType!==i.instrument&&V.generatorValue!==q[V.generatorType].def);let rA=new NA;rA.keyRange=F,rA.velRange=H,rA.keyRange.min===0&&rA.keyRange.max===127&&(rA.keyRange.min=-1),rA.velRange.min===0&&rA.velRange.max===127&&(rA.velRange.min=-1),rA.isGlobal=!1,rA.sample=g.sample,rA.generators=_,rA.modulators=O,s.push(rA)}}if(A){let E=new NA;E.isGlobal=!0;for(let y=0;y<58;y++){if(Ur.has(y))continue;let f={},S=q[y]?.def||0;f[S]=0;for(let k of s){let M=k.generators.find(G=>G.generatorType===y);if(M){let G=M.generatorValue;f[G]===void 0?f[G]=1:f[G]++}else f[S]++;let x;switch(y){default:continue;case i.decayVolEnv:x=i.keyNumToVolEnvDecay;break;case i.holdVolEnv:x=i.keyNumToVolEnvHold;break;case i.decayModEnv:x=i.keyNumToModEnvDecay;break;case i.holdModEnv:x=i.keyNumToModEnvHold}if(k.generators.find(G=>G.generatorType===x)!==void 0){f={};break}}if(Object.keys(f).length>0){let k=Object.entries(f).reduce((x,b)=>x[1]<b[1]?b:x,[0,0]),M=parseInt(k[0]);M!==S&&E.generators.push(new L(y,M)),s.forEach(x=>{let b=x.generators.findIndex(G=>G.generatorType===y);b!==-1?x.generators[b].generatorValue===M&&x.generators.splice(b,1):M!==S&&x.generators.push(new L(y,S))})}}let h=s.find(y=>!y.isGlobal).modulators.map(y=>P.copy(y));for(let y of h){let f=!0;for(let S of s){if(S.isGlobal||!f)continue;S.modulators.find(M=>P.isIdentical(M,y))||(f=!1)}if(f===!0){E.modulators.push(P.copy(y));for(let S of s){let k=S.modulators.find(M=>P.isIdentical(M,y));k.transformAmount===y.transformAmount&&S.modulators.splice(S.modulators.indexOf(k),1)}}}s.splice(0,0,E)}return s}var os=20;function ft(e,A,t,n,o,s,r){let B=r===0?0:1,a=new U(os+B*16);z(a,os),T(a,A),T(a,t);let C=n*.4,d=Math.floor(C*-65536);z(a,d),z(a,2);let E=s-o,Q=0;switch(r){default:case 0:B=0;break;case 1:Q=0,B=1;break;case 3:Q=1,B=1}return z(a,B),B===1&&(z(a,16),z(a,Q),z(a,o),z(a,E)),X("wsmp",a)}var Y={none:0,modLfo:1,velocity:2,keyNum:3,volEnv:4,modEnv:5,pitchWheel:6,polyPressure:7,channelPressure:8,vibratoLfo:9,modulationWheel:129,volume:135,pan:138,expression:139,chorus:219,reverb:221,pitchWheelRange:256,fineTune:257,coarseTune:258},mt=new P(219,0,i.reverbEffectsSend,1e3,0),pt=new P(221,0,i.chorusEffectsSend,1e3,0),yt=new P(129,0,i.vibLfoToPitch,0,0),St=new P(13,0,i.vibLfoToPitch,0,0);var R={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var We=class{source;control;destination;scale;transform;constructor(A,t,n,o,s){this.source=A,this.control=t,this.destination=n,this.scale=o,this.transform=s}writeArticulator(){let A=new U(12);return T(A,this.source),T(A,this.control),T(A,this.destination),T(A,this.transform),z(A,this.scale<<16),A}};function ss(e,A){if(e)switch(A){default:return;case m.modulationWheel:return Y.modulationWheel;case m.mainVolume:return Y.volume;case m.pan:return Y.pan;case m.expressionController:return Y.expression;case m.chorusDepth:return Y.chorus;case m.reverbDepth:return Y.reverb}else switch(A){default:return;case W.noteOnKeyNum:return Y.keyNum;case W.noteOnVelocity:return Y.velocity;case W.noController:return Y.none;case W.polyPressure:return Y.polyPressure;case W.channelPressure:return Y.channelPressure;case W.pitchWheel:return Y.pitchWheel;case W.pitchWheelRange:return Y.pitchWheelRange}}function rs(e,A){switch(e){default:return;case i.initialAttenuation:return{dest:R.gain,amount:-A};case i.fineTune:return R.pitch;case i.pan:return R.pan;case i.keyNum:return R.keyNum;case i.reverbEffectsSend:return R.reverbSend;case i.chorusEffectsSend:return R.chorusSend;case i.freqModLFO:return R.modLfoFreq;case i.delayModLFO:return R.modLfoDelay;case i.delayVibLFO:return R.vibLfoDelay;case i.freqVibLFO:return R.vibLfoFreq;case i.delayVolEnv:return R.volEnvDelay;case i.attackVolEnv:return R.volEnvAttack;case i.holdVolEnv:return R.volEnvHold;case i.decayVolEnv:return R.volEnvDecay;case i.sustainVolEnv:return{dest:R.volEnvSustain,amount:1e3-A};case i.releaseVolEnv:return R.volEnvRelease;case i.delayModEnv:return R.modEnvDelay;case i.attackModEnv:return R.modEnvAttack;case i.holdModEnv:return R.modEnvHold;case i.decayModEnv:return R.modEnvDecay;case i.sustainModEnv:return{dest:R.modEnvSustain,amount:1e3-A};case i.releaseModEnv:return R.modEnvRelease;case i.initialFilterFc:return R.filterCutoff;case i.initialFilterQ:return R.filterQ}}function is(e,A){switch(e){default:return;case i.modEnvToFilterFc:return{source:Y.modEnv,dest:R.filterCutoff,amt:A,isBipolar:!1};case i.modEnvToPitch:return{source:Y.modEnv,dest:R.pitch,amt:A,isBipolar:!1};case i.modLfoToFilterFc:return{source:Y.modLfo,dest:R.filterCutoff,amt:A,isBipolar:!0};case i.modLfoToVolume:return{source:Y.modLfo,dest:R.gain,amt:A,isBipolar:!0};case i.modLfoToPitch:return{source:Y.modLfo,dest:R.pitch,amt:A,isBipolar:!0};case i.vibLfoToPitch:return{source:Y.vibratoLfo,dest:R.pitch,amt:A,isBipolar:!0};case i.keyNumToVolEnvHold:return{source:Y.keyNum,dest:R.volEnvHold,amt:A,isBipolar:!0};case i.keyNumToVolEnvDecay:return{source:Y.keyNum,dest:R.volEnvDecay,amt:A,isBipolar:!0};case i.keyNumToModEnvHold:return{source:Y.keyNum,dest:R.modEnvHold,amt:A,isBipolar:!0};case i.keyNumToModEnvDecay:return{source:Y.keyNum,dest:R.modEnvDecay,amt:A,isBipolar:!0};case i.scaleTuning:return{source:Y.keyNum,dest:R.pitch,amt:A*128,isBipolar:!1}}}function as(e){let A=rs(e.generatorType,e.generatorValue),t=A,n=0,o=e.generatorValue;A?.amount!==void 0&&(o=A.amount,t=A.dest);let s=is(e.generatorType,e.generatorValue);if(s!==void 0)o=s.amt,t=s.dest,n=s.source;else if(t===void 0){J(`Invalid generator type: ${e.generatorType}`);return}return new We(n,0,t,o,0)}function Is(e){if(e.transformType!==0){J("Other transform types are not supported.");return}let A=ss(e.sourceUsesCC,e.sourceIndex),t=e.sourceCurveType,n=e.sourcePolarity,o=e.sourceDirection;if(A===void 0){J(`Invalid source: ${e.sourceIndex}, CC: ${e.sourceUsesCC}`);return}e.modulatorDestination===i.initialAttenuation&&(o=o===1?0:1);let s=ss(e.secSrcUsesCC,e.secSrcIndex),r=e.secSrcCurveType,B=e.secSrcPolarity,a=e.secSrcDirection;if(s===void 0){J(`Invalid secondary source: ${e.secSrcIndex}, CC: ${e.secSrcUsesCC}`);return}let C=rs(e.modulatorDestination,e.transformAmount),d=C,E=e.transformAmount;C?.dest!==void 0&&(d=C.dest,E=C.amount);let Q=is(e.modulatorDestination,e.transformAmount);if(Q!==void 0)E=Q.amt,s=A,r=t,B=n,a=o,t=fA.linear,n=Q.isBipolar?1:0,o=0,A=Q.source,d=Q.dest;else if(d===void 0){J(`Invalid destination: ${e.modulatorDestination}`);return}let h=0;return h|=r<<4,h|=B<<8,h|=a<<9,h|=t,h|=n<<14,h|=o<<15,new We(A,s,d,E,h)}var Tr=new Set([i.sampleModes,i.initialAttenuation,i.keyRange,i.velRange,i.sampleID,i.fineTune,i.coarseTune,i.startAddrsOffset,i.startAddrsCoarseOffset,i.endAddrOffset,i.endAddrsCoarseOffset,i.startloopAddrsOffset,i.startloopAddrsCoarseOffset,i.endloopAddrsOffset,i.endloopAddrsCoarseOffset,i.overridingRootKey,i.exclusiveClass]);function Dt(e){for(let s=0;s<e.generators.length;s++){let r=e.generators[s];(r.generatorType===i.delayVolEnv||r.generatorType===i.attackVolEnv||r.generatorType===i.holdVolEnv||r.generatorType===i.decayVolEnv||r.generatorType===i.releaseVolEnv||r.generatorType===i.delayModEnv||r.generatorType===i.attackModEnv||r.generatorType===i.holdModEnv||r.generatorType===i.decayModEnv)&&(e.generators[s]=new L(r.generatorType,Math.min(r.generatorValue,6386),!1))}for(let s=0;s<e.generators.length;s++){let r=e.generators[s],B;switch(r.generatorType){default:continue;case i.keyNumToVolEnvDecay:B=i.decayVolEnv;break;case i.keyNumToVolEnvHold:B=i.holdVolEnv;break;case i.keyNumToModEnvDecay:B=i.decayModEnv;break;case i.keyNumToModEnvHold:B=i.holdModEnv}let a=e.generators.find(y=>y.generatorType===B);if(a===void 0)continue;let C=r.generatorValue*-128,d=60/128*C,E=a.generatorValue-d,Q=e.generators.indexOf(r),h=e.generators.indexOf(a);e.generators[h]=new L(B,E,!1),e.generators[Q]=new L(r.generatorType,C,!1)}let A=e.generators.reduce((s,r)=>{if(Tr.has(r.generatorType))return s;let B=as(r);return B!==void 0?(s.push(B),p("%cSucceeded converting to DLS Articulator!",I.recognized)):J("Failed converting to DLS Articulator!"),s},[]),t=e.modulators.reduce((s,r)=>{if(P.isIdentical(r,pt,!0)||P.isIdentical(r,mt,!0)||P.isIdentical(r,yt,!0)||P.isIdentical(r,St,!0))return s;let B=Is(r);return B!==void 0?(s.push(B),p("%cSucceeded converting to DLS Articulator!",I.recognized)):J("Failed converting to DLS Articulator!"),s},[]);A.push(...t);let n=new U(8);z(n,8),z(n,A.length);let o=A.map(s=>s.writeArticulator());return X("art2",dA([n,...o]))}function gs(e,A){let t=new U(12);T(t,Math.max(e.keyRange.min,0)),T(t,e.keyRange.max),T(t,Math.max(e.velRange.min,0)),T(t,e.velRange.max),T(t,0);let n=e.getGeneratorValue(i.exclusiveClass,0);T(t,n),T(t,0);let o=X("rgnh",t),s=e.getGeneratorValue(i.overridingRootKey,e.sample.samplePitch);e.getGeneratorValue(i.scaleTuning,A.getGeneratorValue(i.scaleTuning,100))===0&&e.keyRange.max-e.keyRange.min===0&&(s=e.keyRange.min);let B=ft(e.sample,s,e.getGeneratorValue(i.fineTune,0)+e.getGeneratorValue(i.coarseTune,0)*100+e.sample.samplePitchCorrection,e.getGeneratorValue(i.initialAttenuation,0),e.sample.sampleLoopStartIndex+e.getGeneratorValue(i.startloopAddrsOffset,0)+e.getGeneratorValue(i.startloopAddrsCoarseOffset,0)*32768,e.sample.sampleLoopEndIndex+e.getGeneratorValue(i.endloopAddrsOffset,0)+e.getGeneratorValue(i.endloopAddrsCoarseOffset,0)*32768,e.getGeneratorValue(i.sampleModes,0)),a=new U(12);T(a,0),T(a,0),z(a,1),z(a,this.samples.indexOf(e.sample));let C=X("wlnk",a),d=new U(0);if(e.modulators.length+e.generators.length>0){let E=Dt(e);d=X("lar2",E,!1,!0)}return X("rgn2",dA([o,B,C,d]),!1,!0)}function Cs(e){uA(`%cWriting %c${e.presetName}%c...`,I.info,I.recognized,I.info);let A=ns(e),t=A.reduce((Q,h)=>h.isGlobal?Q:Q+1,0),n=new U(12);z(n,t);let o=(e.bank&127)<<8;e.bank===128&&(o|=1<<31),z(n,o),z(n,e.program&127);let s=X("insh",n),r=new U(0),B=A.find(Q=>Q.isGlobal===!0);if(B){let Q=Dt(B);r=X("lar2",Q,!1,!0)}let a=dA(A.reduce((Q,h)=>(h.isGlobal||Q.push(gs.apply(this,[h,B])),Q),[])),C=X("lrgn",a,!1,!0),d=X("INAM",ne(e.presetName)),E=X("INFO",d,!1,!0);return Z(),X("ins ",dA([s,C,r,E]),!1,!0)}function Es(){let e=dA(this.presets.map(A=>Cs.apply(this,[A])));return X("lins",e,!1,!0)}function Bs(e){let A=new U(18);T(A,1),T(A,1),z(A,e.sampleRate),z(A,e.sampleRate*2),T(A,2),T(A,16);let t=X("fmt ",A),n=1;e.sampleLoopStartIndex+Math.abs(e.getAudioData().length-e.sampleLoopEndIndex)<2&&(n=0);let o=ft(e,e.samplePitch,e.samplePitchCorrection,0,e.sampleLoopStartIndex,e.sampleLoopEndIndex,n),s=e.getAudioData(),r;if(e.isCompressed){let C=new Int16Array(s.length);for(let d=0;d<s.length;d++)C[d]=s[d]*32767;r=X("data",new U(C.buffer))}else r=X("data",e.getRawData());let B=X("INAM",ne(e.sampleName)),a=X("INFO",B,!1,!0);return p(`%cSaved %c${e.sampleName}%c succesfully!`,I.recognized,I.value,I.recognized),X("wave",dA([t,o,r,a]),!1,!0)}function hs(){let e=0,A=[],t=this.samples.map(n=>{let o=Bs(n);return A.push(e),e+=o.length,o});return{data:X("wvpl",dA(t),!1,!0),indexes:A}}function ls(){uA("%cSaving DLS...",I.info);let e=new U(4);z(e,this.presets.length);let A=X("colh",e);uA("%cWriting instruments...",I.info);let t=Es.apply(this);p("%cSuccess!",I.recognized),Z(),uA("%cWriting WAVE samples...",I.info);let n=hs.apply(this),o=n.data,s=n.indexes;p("%cSucceeded!",I.recognized),Z();let r=new U(8+4*s.length);z(r,8),z(r,s.length);for(let E of s)z(r,E);let B=X("ptbl",r);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
15
- Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let a=[];for(let[E,Q]of Object.entries(this.soundFontInfo))E!=="ICMT"&&E!=="INAM"&&E!=="ICRD"&&E!=="IENG"&&E!=="ICOP"&&E!=="ISFT"&&E!=="ISBJ"||a.push(X(E,ne(Q),!0));let C=X("INFO",dA(a),!1,!0),d=new U(A.length+t.length+B.length+o.length+C.length+4);return FA(d,"DLS "),d.set(dA([A,t,B,o,C]),4),p("%cSaved succesfully!",I.recognized),Z(),X("RIFF",d)}var vr=48e3,le=class{constructor(A,t,n,o,s,r,B,a){this.sampleName=A,this.sampleRate=t,this.samplePitch=n,this.samplePitchCorrection=o,this.sampleLink=s,this.sampleType=r,this.sampleLoopStartIndex=B,this.sampleLoopEndIndex=a,this.isCompressed=(r&16)>0,this.compressedData=void 0,this.useCount=0,this.sampleData=void 0}getRawData(){let A=new Uint8Array(this.sampleData.length*2);for(let t=0;t<this.sampleData.length;t++){let n=Math.floor(this.sampleData[t]*32768);A[t*2]=n&255,A[t*2+1]=n>>8&255}return A}resampleData(A){let t=this.getAudioData(),n=A/this.sampleRate,o=new Float32Array(Math.floor(t.length*n));for(let s=0;s<o.length;s++)o[s]=t[Math.floor(s*(1/n))];t=o,this.sampleRate=A,this.sampleLoopStartIndex=Math.floor(this.sampleLoopStartIndex*n),this.sampleLoopEndIndex=Math.floor(this.sampleLoopEndIndex*n),this.sampleData=t}compressSample(A,t){if(!this.isCompressed)try{let n=this.getAudioData();(this.sampleRate<8e3||this.sampleRate>96e3)&&(this.resampleData(vr),n=this.getAudioData()),this.compressedData=t([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{J(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var ce=class{constructor(){this.instrumentName="",this.instrumentZones=[],this._useCount=0}get useCount(){return this._useCount}addUseCount(){this._useCount++,this.instrumentZones.forEach(A=>A.useCount++)}removeUseCount(){this._useCount--;for(let A=0;A<this.instrumentZones.length;A++)this.safeDeleteZone(A)&&A--}deleteInstrument(){this.instrumentZones.forEach(A=>A.deleteZone()),this.instrumentZones.length=0}safeDeleteZone(A){return this.instrumentZones[A].useCount--,this.instrumentZones[A].useCount<1?(this.deleteZone(A),!0):!1}deleteZone(A){this.instrumentZones[A].deleteZone(),this.instrumentZones.splice(A,1)}};var Qe=class{constructor(A){this.presetName="",this.program=0,this.bank=0,this.presetZones=[],this.sampleIDOffset=0,this.foundSamplesAndGenerators=[];for(let t=0;t<128;t++)this.foundSamplesAndGenerators[t]=[];this.library=0,this.genre=0,this.morphology=0,this.defaultModulators=A}deletePreset(){this.presetZones.forEach(A=>A.deleteZone()),this.presetZones.length=0}deleteZone(A){this.presetZones[A].deleteZone(),this.presetZones.splice(A,1)}preload(A,t){for(let n=A;n<t+1;n++)for(let o=0;o<128;o++)this.getSamplesAndGenerators(n,o).forEach(s=>{s.sample.isSampleLoaded||s.sample.getAudioData()})}preloadSpecific(A,t){this.getSamplesAndGenerators(A,t).forEach(n=>{n.sample.isSampleLoaded||n.sample.getAudioData()})}getSamplesAndGenerators(A,t){let n=this.foundSamplesAndGenerators[A][t];if(n)return n;if(this.presetZones.length<1)return[];function o(h,y){return y>=h.min&&y<=h.max}function s(h,y){h.push(...y.filter(f=>!h.find(S=>S.generatorType===f.generatorType)))}function r(h,y){h.push(...y.filter(f=>!h.find(S=>P.isIdentical(f,S))))}let B=[],a=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],C=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[],d=this.presetZones[0].isGlobal?this.presetZones[0].keyRange:{min:0,max:127},E=this.presetZones[0].isGlobal?this.presetZones[0].velRange:{min:0,max:127};return this.presetZones.filter(h=>o(h.hasKeyRange?h.keyRange:d,A)&&o(h.hasVelRange?h.velRange:E,t)&&!h.isGlobal).forEach(h=>{if(h.instrument.instrumentZones.length<1)return;let y=h.generators,f=h.modulators,S=h.instrument.instrumentZones[0],k=S.isGlobal?[...S.generators]:[],M=S.isGlobal?[...S.modulators]:[],x=S.isGlobal?S.keyRange:{min:0,max:127},b=S.isGlobal?S.velRange:{min:0,max:127};h.instrument.instrumentZones.filter(g=>o(g.hasKeyRange?g.keyRange:x,A)&&o(g.hasVelRange?g.velRange:b,t)&&!g.isGlobal).forEach(g=>{let F=[...g.generators],H=[...g.modulators];s(y,a),s(F,k),r(f,C),r(H,M),r(H,this.defaultModulators);let oA=[...H];for(let tA=0;tA<f.length;tA++){let O=f[tA],_=oA.findIndex(rA=>P.isIdentical(O,rA));_!==-1?oA[_]=oA[_].sumTransform(O):oA.push(O)}B.push({instrumentGenerators:F,presetGenerators:y,modulators:oA,sample:g.sample,sampleID:g.generators.find(tA=>tA.generatorType===i.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][t]=B,B}};var de=class e{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=ht.map(t=>P.copy(t)),A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}static mergeSoundBanks(...A){let t=A.shift(),n=t.presets;for(;A.length;)A.shift().presets.forEach(s=>{n.find(r=>r.bank===s.bank&&r.program===s.program)===void 0&&n.push(s)});return new e({presets:n,info:t.soundFontInfo})}static getDummySoundfontFile(){let A=new e,t=new le("Saw",44100,65,20,0,0,0,127);t.sampleData=new Float32Array(128);for(let C=0;C<128;C++)t.sampleData[C]=C/128*2-1;A.samples.push(t);let n=new NA;n.isGlobal=!0,n.generators.push(new L(i.initialAttenuation,375)),n.generators.push(new L(i.releaseVolEnv,-1e3)),n.generators.push(new L(i.sampleModes,1));let o=new NA;o.sample=t;let s=new NA;s.sample=t,s.generators.push(new L(i.fineTune,-9));let r=new ce;r.instrumentName="Saw Wave",r.instrumentZones.push(n),r.instrumentZones.push(o),r.instrumentZones.push(s),A.instruments.push(r);let B=new he;B.instrument=r;let a=new Qe(A.defaultModulators);return a.presetName="Saw Wave",a.presetZones.push(B),A.presets.push(a),A.soundFontInfo.ifil="2.1",A.soundFontInfo.isng="EMU8000",A.soundFontInfo.INAM="Dummy",A.write().buffer}trimSoundBank(A){let t=this;function n(s,r){let B=0;for(let a=0;a<s.instrumentZones.length;a++){let C=s.instrumentZones[a];if(C.isGlobal)continue;let d=C.keyRange,E=C.velRange,Q=!1;for(let h of r)if(h.key>=d.min&&h.key<=d.max&&h.velocity>=E.min&&h.velocity<=E.max){Q=!0;break}Q||(p(`%c${C.sample.sampleName} %cremoved from %c${s.instrumentName}%c. Use count: %c${C.useCount-1}`,I.recognized,I.info,I.recognized,I.info,I.recognized),s.safeDeleteZone(a)&&(B++,a--,p(`%c${C.sample.sampleName} %cdeleted`,I.recognized,I.info)),C.sample.useCount<1&&t.deleteSample(C.sample))}return B}OA("%cTrimming soundfont...",I.info);let o=A.getUsedProgramsAndKeys(t);uA("%cModifying soundfont...",I.info),p("Detected keys for midi:",o);for(let s=0;s<t.presets.length;s++){let r=t.presets[s],B=r.bank+":"+r.program,a=o[B];if(a===void 0)p(`%cDeleting preset %c${r.presetName}%c and its zones`,I.info,I.recognized,I.info),t.deletePreset(r),s--;else{let C=[...a].map(E=>{let Q=E.split("-");return{key:parseInt(Q[0]),velocity:parseInt(Q[1])}});uA(`%cTrimming %c${r.presetName}`,I.info,I.recognized),p(`Keys for ${r.presetName}:`,C);let d=0;for(let E=0;E<r.presetZones.length;E++){let Q=r.presetZones[E];if(Q.isGlobal)continue;let h=Q.keyRange,y=Q.velRange,f=!1;for(let S of C)if(S.key>=h.min&&S.key<=h.max&&S.velocity>=y.min&&S.velocity<=y.max){f=!0;let k=n(Q.instrument,C);p(`%cTrimmed off %c${k}%c zones from %c${Q.instrument.instrumentName}`,I.info,I.recognized,I.info,I.recognized);break}f||(d++,r.deleteZone(E),Q.instrument.useCount<1&&t.deleteInstrument(Q.instrument),E--)}p(`%cTrimmed off %c${d}%c zones from %c${r.presetName}`,I.info,I.recognized,I.info,I.recognized),Z()}}t.removeUnusedElements(),t.soundFontInfo.ICMT=`NOTE: This soundfont was trimmed by SpessaSynth to only contain presets used in "${A.midiName}"
11
+ `)||""),this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){y("%cNo name detected. Using the alt name!",I.info),this.midiName=fo(this.fileName),this.midiNameUsesFileName=!0,this.rawMidiName=new Uint8Array(this.midiName.length);for(let E=0;E<this.midiName.length;E++)this.rawMidiName[E]=this.midiName.charCodeAt(E)}else y(`%cMIDI Name detected! %c"${this.midiName}"`,I.info,I.recognized);let d=!0;for(let E of this.lyrics)if(E[0]===32||E[E.length-1]===32){d=!1;break}d&&(this.lyrics=this.lyrics.map(E=>{if(E[E.length-1]===45)return E;let c=new Uint8Array(E.length+1);return c.set(E,0),c[E.length]=32,c})),this.duration=this.MIDIticksToSeconds(this.lastVoiceEventTick),y("%cSuccess!",I.recognized),P()}flush(){for(let A of this.tracks)A.sort((t,n)=>t.ticks-n.ticks);this._parseInternal()}};ie.prototype.writeMIDI=Yo;ie.prototype.modifyMIDI=To;ie.prototype.applySnapshotToMIDI=vo;ie.prototype.writeRMIDI=Ho;ie.prototype.getUsedProgramsAndKeys=Jo;var Ln;(()=>{var e=Uint8Array,A=Uint16Array,t=Int32Array,n=new e([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),o=new e([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),s=new e([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),r=function(v,q){for(var $=new A(31),gA=0;gA<31;++gA)$[gA]=q+=1<<v[gA-1];for(var IA=new t($[30]),gA=1;gA<30;++gA)for(var VA=$[gA];VA<$[gA+1];++VA)IA[VA]=VA-$[gA]<<5|gA;return{b:$,r:IA}},B=r(n,2),a=B.b,g=B.r;a[28]=258,g[258]=28;var d=r(o,0),E=d.b,c=d.r,h=new A(32768);for(D=0;D<32768;++D)m=(D&43690)>>1|(D&21845)<<1,m=(m&52428)>>2|(m&13107)<<2,m=(m&61680)>>4|(m&3855)<<4,h[D]=((m&65280)>>8|(m&255)<<8)>>1;var m,D,u=function(v,q,$){for(var gA=v.length,IA=0,VA=new A(q);IA<gA;++IA)v[IA]&&++VA[v[IA]-1];var ue=new A(q);for(IA=1;IA<q;++IA)ue[IA]=ue[IA-1]+VA[IA-1]<<1;var Ee;if($){Ee=new A(1<<q);var Be=15-q;for(IA=0;IA<gA;++IA)if(v[IA])for(var ze=IA<<4|v[IA],fe=q-v[IA],oA=ue[v[IA]-1]++<<fe,QA=oA|(1<<fe)-1;oA<=QA;++oA)Ee[h[oA]>>Be]=ze}else for(Ee=new A(gA),IA=0;IA<gA;++IA)v[IA]&&(Ee[IA]=h[ue[v[IA]-1]++]>>15-v[IA]);return Ee},S=new e(288);for(D=0;D<144;++D)S[D]=8;var D;for(D=144;D<256;++D)S[D]=9;var D;for(D=256;D<280;++D)S[D]=7;var D;for(D=280;D<288;++D)S[D]=8;var D,w=new e(32);for(D=0;D<32;++D)w[D]=5;var D,M=u(S,9,1),b=u(w,5,1),x=function(v){for(var q=v[0],$=1;$<v.length;++$)v[$]>q&&(q=v[$]);return q},C=function(v,q,$){var gA=q/8|0;return(v[gA]|v[gA+1]<<8)>>(q&7)&$},F=function(v,q){var $=q/8|0;return(v[$]|v[$+1]<<8|v[$+2]<<16)>>(q&7)},J=function(v){return(v+7)/8|0},aA=function(v,q,$){return(q==null||q<0)&&(q=0),($==null||$>v.length)&&($=v.length),new e(v.subarray(q,$))},sA=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],K=function(v,q,$){var gA=new Error(q||sA[v]);if(gA.code=v,Error.captureStackTrace&&Error.captureStackTrace(gA,K),!$)throw gA;return gA},j=function(v,q,$,gA){var IA=v.length,VA=gA?gA.length:0;if(!IA||q.f&&!q.l)return $||new e(0);var ue=!$,Ee=ue||q.i!=2,Be=q.i;ue&&($=new e(IA*3));var ze=function(Tt){var Ge=$.length;if(Tt>Ge){var ct=new e(Math.max(Ge*2,Tt));ct.set($),$=ct}},fe=q.f||0,oA=q.p||0,QA=q.b||0,he=q.l,ZA=q.d,we=q.m,Fe=q.n,Ct=IA*8;do{if(!he){fe=C(v,oA,1);var je=C(v,oA+1,3);if(oA+=3,je)if(je==1)he=M,ZA=b,we=9,Fe=5;else if(je==2){var Et=C(v,oA,31)+257,cn=C(v,oA+10,15)+4,Qn=Et+C(v,oA+5,31)+1;oA+=14;for(var $e=new e(Qn),Re=new e(19),XA=0;XA<cn;++XA)Re[s[XA]]=C(v,oA+XA*3,7);oA+=cn*3;for(var dn=x(Re),Nt=(1<<dn)-1,At=u(Re,dn,1),XA=0;XA<Qn;){var Bt=At[C(v,oA,Nt)];oA+=Bt&15;var YA=Bt>>4;if(YA<16)$e[XA++]=YA;else{var me=0,ht=0;for(YA==16?(ht=3+C(v,oA,3),oA+=2,me=$e[XA-1]):YA==17?(ht=3+C(v,oA,7),oA+=3):YA==18&&(ht=11+C(v,oA,127),oA+=7);ht--;)$e[XA++]=me}}var un=$e.subarray(0,Et),pe=$e.subarray(Et);we=x(un),Fe=x(pe),he=u(un,we,1),ZA=u(pe,Fe,1)}else K(1);else{var YA=J(oA)+4,bt=v[YA-4]|v[YA-3]<<8,Lt=YA+bt;if(Lt>IA){Be&&K(0);break}Ee&&ze(QA+bt),$.set(v.subarray(YA,Lt),QA),q.b=QA+=bt,q.p=oA=Lt*8,q.f=fe;continue}if(oA>Ct){Be&&K(0);break}}Ee&&ze(QA+131072);for(var ao=(1<<we)-1,Io=(1<<Fe)-1,Ut=oA;;Ut=oA){var me=he[F(v,oA)&ao],Je=me>>4;if(oA+=me&15,oA>Ct){Be&&K(0);break}if(me||K(2),Je<256)$[QA++]=Je;else if(Je==256){Ut=oA,he=null;break}else{var fn=Je-254;if(Je>264){var XA=Je-257,ye=n[XA];fn=C(v,oA,(1<<ye)-1)+a[XA],oA+=ye}var et=ZA[F(v,oA)&Io],Ke=et>>4;et||K(3),oA+=et&15;var pe=E[Ke];if(Ke>3){var ye=o[Ke];pe+=F(v,oA)&(1<<ye)-1,oA+=ye}if(oA>Ct){Be&&K(0);break}Ee&&ze(QA+131072);var lt=QA+fn;if(QA<pe){var tt=VA-pe,MA=Math.min(pe,lt);for(tt+QA<0&&K(3);QA<MA;++QA)$[QA]=gA[tt+QA]}for(;QA<lt;++QA)$[QA]=$[QA-pe]}}q.l=he,q.p=Ut,q.b=QA,q.f=fe,he&&(fe=1,q.m=we,q.d=ZA,q.n=Fe)}while(!fe);return QA!=$.length&&ue?aA($,0,QA):$.subarray(0,QA)},EA=new e(0);function X(v,q){return j(v,{i:2},q&&q.out,q&&q.dictionary)}var rA=typeof TextDecoder<"u"&&new TextDecoder,BA=0;try{rA.decode(EA,{stream:!0}),BA=1}catch{}Ln=X})();var Un={XMFFileType:0,nodeName:1,nodeIDNumber:2,resourceFormat:3,filenameOnDisk:4,filenameExtensionOnDisk:5,macOSFileTypeAndCreator:6,mimeType:7,title:8,copyrightNotice:9,comment:10,autoStart:11,preload:12,contentDescription:13,ID3Metadata:14},it={inLineResource:1,inFileResource:2,inFileNode:3,externalFile:4,externalXMF:5,XMFFileURIandNodeID:6},Tn={StandardMIDIFile:0,StandardMIDIFileType1:1,DLS1:2,DLS2:3,DLS22:4,mobileDLS:5},ti={standard:0,MMA:1,registered:2,nonRegistered:3},_t={none:0,MMAUnpacker:1,registered:2,nonRegistered:3},vn=class e{length;itemCount;metadataLength;metadata={};nodeData;innerNodes=[];packedContent=!1;nodeUnpackers=[];resourceFormat="unknown";constructor(A){let t=A.currentIndex;this.length=yA(A),this.itemCount=yA(A);let n=yA(A),o=A.currentIndex-t,s=n-o,r=A.slice(A.currentIndex,A.currentIndex+s);A.currentIndex+=s,this.metadataLength=yA(r);let B=r.slice(r.currentIndex,r.currentIndex+this.metadataLength);r.currentIndex+=this.metadataLength;let a,g;for(;B.currentIndex<B.length;){if(B[B.currentIndex]===0)B.currentIndex++,a=yA(B),Object.values(Un).indexOf(a)===-1?(H(`Unknown field specifier: ${a}`),g=`unknown_${a}`):g=Object.keys(Un).find(u=>Un[u]===a);else{let u=yA(B);a=eA(B,u),g=a}let m=yA(B);if(m===0){let u=yA(B),S=B.slice(B.currentIndex,B.currentIndex+u);B.currentIndex+=u,yA(S)<4?this.metadata[g]=eA(S,u-1):this.metadata[g]=S.slice(S.currentIndex)}else H(`International content: ${m}`),B.currentIndex+=yA(B)}let d=r.currentIndex,E=yA(r),c=r.slice(r.currentIndex,d+E);if(r.currentIndex=d+E,E>0)for(this.packedContent=!0;c.currentIndex<E;){let h={};switch(h.id=yA(c),h.id){case _t.nonRegistered:case _t.registered:throw P(),new Error(`Unsupported unpacker ID: ${h.id}`);default:throw P(),new Error(`Unknown unpacker ID: ${h.id}`);case _t.none:h.standardID=yA(c);break;case _t.MMAUnpacker:let m=c[c.currentIndex++];m===0&&(m<<=8,m|=c[c.currentIndex++],m<<=8,m|=c[c.currentIndex++]);let u=yA(c);h.manufacturerID=m,h.manufacturerInternalID=u;break}h.decodedSize=yA(c),this.nodeUnpackers.push(h)}switch(A.currentIndex=t+n,this.referenceTypeID=yA(A),this.nodeData=A.slice(A.currentIndex,t+this.length),A.currentIndex=t+this.length,this.referenceTypeID){case it.inLineResource:break;case it.externalXMF:case it.inFileNode:case it.XMFFileURIandNodeID:case it.externalFile:case it.inFileResource:throw P(),new Error(`Unsupported reference type: ${this.referenceTypeID}`);default:throw P(),new Error(`Unknown reference type: ${this.referenceTypeID}`)}if(this.isFile){if(this.packedContent){let m=this.nodeData.slice(2,this.nodeData.length);y(`%cPacked content. Attemting to deflate. Target size: %c${this.nodeUnpackers[0].decodedSize}`,I.warn,I.value);try{this.nodeData=new L(Ln(m).buffer)}catch(u){throw P(),new Error(`Error unpacking XMF file contents: ${u.message}.`)}}let h=this.metadata.resourceFormat;if(h===void 0)H("No resource format for this file node!");else{h[0]!==ti.standard&&(H(`Non-standard formatTypeID: ${h}`),this.resourceFormat=h.toString());let u=h[1];Object.values(Tn).indexOf(u)===-1?H(`Unrecognized resource format: ${u}`):this.resourceFormat=Object.keys(Tn).find(S=>Tn[S]===u)}}else for(this.resourceFormat="folder";this.nodeData.currentIndex<this.nodeData.length;){let h=this.nodeData.currentIndex,m=yA(this.nodeData),u=this.nodeData.slice(h,h+m);this.nodeData.currentIndex=h+m,this.innerNodes.push(new e(u))}}get isFile(){return this.itemCount===0}};function Ko(e,A){e.bankOffset=0;let t=eA(A,4);if(t!=="XMF_")throw P(),new SyntaxError(`Invalid XMF Header! Expected "_XMF", got "${t}"`);OA("%cParsing XMF file...",I.info);let n=eA(A,4);if(y(`%cXMF version: %c${n}`,I.info,I.recognized),n==="2.00"){let a=ne(A,4),g=ne(A,4);y(`%cFile Type ID: %c${a}%c, File Type Revision ID: %c${g}`,I.info,I.recognized,I.info,I.recognized)}yA(A);let o=yA(A);A.currentIndex+=o,A.currentIndex=yA(A);let s=new vn(A),r,B=a=>{let g=(d,E)=>{a.metadata[d]!==void 0&&typeof a.metadata[d]=="string"&&(e.RMIDInfo[E]=a.metadata[d])};if(g("nodeName",fA.name),g("title",fA.name),g("copyrightNotice",fA.copyright),g("comment",fA.comment),a.isFile)switch(a.resourceFormat){default:return;case"DLS1":case"DLS2":case"DLS22":case"mobileDLS":y("%cFound embedded DLS!",I.recognized),e.embeddedSoundFont=a.nodeData.buffer;break;case"StandardMIDIFile":case"StandardMIDIFileType1":y("%cFound embedded MIDI!",I.recognized),r=a.nodeData;break}else for(let d of a.innerNodes)B(d)};return B(s),P(),r}var zt=class extends ie{constructor(A,t=""){super(),FA("%cParsing MIDI File...",I.info),this.fileName=t;let n=new L(A),o,s=eA(n,4);if(n.currentIndex-=4,s==="RIFF"){n.currentIndex+=8;let B=eA(n,4,void 0,!1);if(B!=="RMID")throw P(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${B}"`);let a=iA(n);if(a.header!=="data")throw P(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${B}"`);for(o=a.chunkData;n.currentIndex<=n.length;){let g=n.currentIndex,d=iA(n,!0);if(d.header==="RIFF"){let E=eA(d.chunkData,4).toLowerCase();E==="sfbk"||E==="sfpk"||E==="dls "?(y("%cFound embedded soundfont!",I.recognized),this.embeddedSoundFont=n.slice(g,g+d.size).buffer):H(`Unknown RIFF chunk: "${E}"`),E==="dls "&&(this.isDLSRMIDI=!0)}else if(d.header==="LIST"&&eA(d.chunkData,4)==="INFO"){for(y("%cFound RMIDI INFO chunk!",I.recognized),this.RMIDInfo={};d.chunkData.currentIndex<=d.size;){let c=iA(d.chunkData,!0);this.RMIDInfo[c.header]=c.chunkData}this.RMIDInfo.ICOP&&(this.copyright=eA(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
12
+ `," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[fA.name],this.midiName=eA(this.rawMidiName,this.rawMidiName.length,void 0,!1).replaceAll(`
13
+ `," ")),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.IPRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[fA.bankOffset]&&(this.bankOffset=N(this.RMIDInfo[fA.bankOffset],2))}}this.isDLSRMIDI&&(this.bankOffset=0),this.embeddedSoundFont===void 0&&(this.bankOffset=0)}else s==="XMF_"?o=Ko(this,n):o=n;let r=this.readMIDIChunk(o);if(r.type!=="MThd")throw P(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${r.type}"`);if(r.size!==6)throw P(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${r.size}`);this.format=ne(r.data,2),this.tracksAmount=ne(r.data,2),this.timeDivision=ne(r.data,2);for(let B=0;B<this.tracksAmount;B++){let a=[],g=this.readMIDIChunk(o);if(g.type!=="MTrk")throw P(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${g.type}"`);let d,E=0;for(this.format===2&&B>0&&(E+=this.tracks[B-1][this.tracks[B-1].length-1].ticks);g.data.currentIndex<g.size;){E+=yA(g.data);let c=g.data[g.data.currentIndex],h;if(d!==void 0&&c<128)h=d;else{if(d===void 0&&c<128)throw P(),new SyntaxError(`Unexpected byte with no running byte. (${c})`);h=g.data[g.data.currentIndex++]}let m=po(h),u;switch(m){case-1:u=0;break;case-2:h=g.data[g.data.currentIndex++],u=yA(g.data);break;case-3:u=yA(g.data);break;default:u=yo[h>>4],d=h;break}let S=new L(u);S.set(g.data.slice(g.data.currentIndex,g.data.currentIndex+u),0);let w=new te(E,h,S);a.push(w),g.data.currentIndex+=u}this.tracks.push(a),y(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,I.info,I.value,I.info,I.value)}y("%cAll tracks parsed correctly!",I.recognized),this._parseInternal(),P(),y(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,I.info,I.recognized,I.info,I.recognized)}readMIDIChunk(A){let t={};t.type=eA(A,4),t.size=ne(A,4),t.data=new L(t.size);let n=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(n,0),A.currentIndex+=t.size,t}};function qo(e,A){this.midiData.usedChannelsOnTrack[e].size!==0&&(this.midiPortChannelOffset===0&&(this.midiPortChannelOffset+=16,this.midiPortChannelOffsets[A]=0),this.midiPortChannelOffsets[A]===void 0&&(this.synth.workletProcessorChannels.length<this.midiPortChannelOffset+15&&this._addNewMidiPort(),this.midiPortChannelOffsets[A]=this.midiPortChannelOffset,this.midiPortChannelOffset+=16),this.midiPorts[e]=A)}function Oo(e,A=!0){if(this.stop(),!e.tracks)throw new Error("This MIDI has no tracks!");if(this.oneTickToSeconds=60/(120*e.timeDivision),this.midiData=e,this.midiData.embeddedSoundFont!==void 0)y("%cEmbedded soundfont detected! Using it.",I.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),FA("%cPreloading samples...",I.info);let t=this.midiData.getUsedProgramsAndKeys(this.synth.soundfontManager);for(let[n,o]of Object.entries(t)){let s=parseInt(n.split(":")[0]),r=parseInt(n.split(":")[1]),B=this.synth.getPreset(s,r);y(`%cPreloading used samples on %c${B.presetName}%c...`,I.info,I.recognized,I.info);for(let a of o){let g=a.split("-");B.preloadSpecific(parseInt(g[0]),parseInt(g[1]))}}P()}if(this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts.slice(),this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((t,n)=>{this.assignMIDIPort(n,t)}),this.duration=this.midiData.duration,this.firstNoteTime=this.midiData.MIDIticksToSeconds(this.midiData.firstNoteOn),y(`%cTotal song time: ${Rn(Math.ceil(this.duration)).time}`,I.recognized),this.post(LA.songChange,[new Ot(this.midiData),this.songIndex,A]),this.duration<=1&&(H(`%cVery short song: (${Rn(Math.round(this.duration)).time}). Disabling loop!`,I.warn),this.loop=!1),A)this.play(!0);else{let t=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(t),this.pause()}}function Po(e,A=!0){this.songs=e.reduce((t,n)=>{if(n.duration)return t.push(ie.copyFrom(n)),t;try{t.push(new zt(n.binary,n.altName||""))}catch(o){return console.error(o),this.post(LA.midiError,o),t}return t},[]),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.shuffleSongIndexes(),this.loadCurrentSong(A))}function Vo(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadCurrentSong()}function Zo(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadCurrentSong()}function Xo(e=!0){e&&y("%cResetting all controllers!",I.info),this.callEvent("allcontrollerreset",void 0);for(let A=0;A<this.workletProcessorChannels.length;A++){this.workletProcessorChannels[A].resetControllers();let t=this.workletProcessorChannels[A];t.lockPreset?this.callEvent("drumchange",{channel:A,isDrumChannel:t.drumChannel}):(t.presetUsesOverride=!0,t.setBankSelect(0),A%16===9?(this.workletProcessorChannels[A].setPreset(this.drumPreset),t.drumChannel=!0,this.callEvent("drumchange",{channel:A,isDrumChannel:!0})):(t.drumChannel=!1,t.setPreset(this.defaultPreset),this.callEvent("drumchange",{channel:A,isDrumChannel:!1}))),this.callEvent("programchange",{channel:A,program:t.preset.program,bank:t.getBankSelect(),userCalled:!1});for(let n=0;n<128;n++)this.workletProcessorChannels[A].lockedControllers[n]&&this.callEvent("controllerchange",{channel:A,controllerNumber:n,controllerValue:this.workletProcessorChannels[A].midiControllers[n]>>7});if(this.workletProcessorChannels[A].lockedControllers[GA+z.pitchWheel]===!1){let n=this.workletProcessorChannels[A].midiControllers[GA+z.pitchWheel],o=n>>7,s=n&127;this.callEvent("pitchwheel",{channel:A,MSB:o,LSB:s})}}this.tunings=[],this.tunings=[];for(let A=0;127>A;A++)this.tunings.push([]);this.setMIDIVolume(1),this.system=Wt}function Wo(){this.channelOctaveTuning.fill(0);for(let A=0;A<Me.length;A++){if(this.lockedControllers[A])continue;let t=Me[A];this.midiControllers[A]!==t&&A<127?A===p.portamentoControl?this.midiControllers[A]=Xt:this.controllerChange(A,t>>7):this.midiControllers[A]=t}this.channelVibrato={rate:0,depth:0,delay:0},this.holdPedal=!1,this.randomPan=!1;let e=this.customControllers[lA.channelTransposeFine];this.customControllers.set(Nn),this.setCustomController(lA.channelTransposeFine,e),this.resetParameters()}var Hn=new Set([p.bankSelect,p.lsbForControl0BankSelect,p.mainVolume,p.lsbForControl7MainVolume,p.pan,p.lsbForControl10Pan,p.reverbDepth,p.tremoloDepth,p.chorusDepth,p.detuneDepth,p.phaserDepth,p.soundVariation,p.filterResonance,p.releaseTime,p.attackTime,p.brightness,p.decayTime,p.vibratoRate,p.vibratoDepth,p.vibratoDelay,p.soundController10]);function _o(){this.channelOctaveTuning.fill(0),this.pitchWheel(64,0),this.channelVibrato={rate:0,depth:0,delay:0};for(let e=0;e<128;e++){let A=Me[e];!Hn.has(e)&&A!==this.midiControllers[e]&&(e===p.portamentoControl?this.midiControllers[e]=Xt:this.controllerChange(e,A>>7))}}function zo(){this.dataEntryState=vA.Idle,y("%cResetting Registered and Non-Registered Parameters!",I.info)}var Ze=Me.slice(0,128);function jo(e,A=void 0){this.oneTickToSeconds=60/(120*this.midiData.timeDivision),this.synth.resetAllControllers(),this.sendMIDIReset(),this._resetTimers();let t=this.synth.workletProcessorChannels.length,n=Array(t).fill(8192),o=[];for(let a=0;a<t;a++)o.push({program:-1,bank:0,actualBank:0});let s=a=>a===p.dataDecrement||a===p.dataIncrement||a===p.dataEntryMsb||a===p.dataDecrement||a===p.lsbForControl6DataEntry||a===p.RPNLsb||a===p.RPNMsb||a===p.NRPNLsb||a===p.NRPNMsb||a===p.bankSelect||a===p.lsbForControl0BankSelect||a===p.resetAllControllers,r=[];for(let a=0;a<t;a++)r.push(Array.from(Ze));function B(a){if(n[a]=8192,r?.[a]!==void 0)for(let g=0;g<Ze.length;g++)Hn.has(g)||(r[a][g]=Ze[g])}for(;;){let a=this._findFirstEventIndex(),g=this.tracks[a][this.eventIndex[a]];if(A!==void 0){if(g.ticks>=A)break}else if(this.playedTime>=e)break;let d=Kt(g.messageStatusByte),E=d.channel+(this.midiPortChannelOffsets[this.midiPorts[a]]||0);switch(d.status){case R.noteOn:r[E]===void 0&&(r[E]=Array.from(Ze)),r[E][p.portamentoControl]=g.messageData[0];break;case R.noteOff:break;case R.pitchBend:n[E]=g.messageData[1]<<7|g.messageData[0];break;case R.programChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[a].size===0)break;let h=o[E];h.program=g.messageData[0],h.actualBank=h.bank;break;case R.controllerChange:if(this.midiData.isMultiPort&&this.midiData.usedChannelsOnTrack[a].size===0)break;let m=g.messageData[0];if(s(m)){let u=g.messageData[1];if(m===p.bankSelect){o[E].bank=u;break}else m===p.resetAllControllers&&B(E);this.sendMIDIMessages?this.sendMIDICC(E,m,u):this.synth.controllerChange(E,m,u)}else r[E]===void 0&&(r[E]=Array.from(Ze)),r[E][m]=g.messageData[1];break;default:this._processEvent(g,a);break}this.eventIndex[a]++,a=this._findFirstEventIndex();let c=this.tracks[a][this.eventIndex[a]];if(c===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(c.ticks-g.ticks)}if(this.sendMIDIMessages){for(let a=0;a<t;a++)if(n[a]!==void 0&&this.sendMIDIPitchWheel(a,n[a]>>7,n[a]&127),r[a]!==void 0&&r[a].forEach((g,d)=>{g!==Ze[d]&&!s(d)&&this.sendMIDICC(a,d,g)}),o[a].program>=0&&o[a].actualBank>=0){let g=o[a].actualBank;this.sendMIDICC(a,p.bankSelect,g),this.sendMIDIProgramChange(a,o[a].program)}}else for(let a=0;a<t;a++)if(n[a]!==void 0&&this.synth.pitchWheel(a,n[a]>>7,n[a]&127),r[a]!==void 0&&r[a].forEach((g,d)=>{g!==Ze[d]&&!s(d)&&this.synth.controllerChange(a,d,g)}),o[a].program>=0&&o[a].actualBank>=0){let g=o[a].actualBank;this.synth.controllerChange(a,p.bankSelect,g),this.synth.programChange(a,o[a].program)}return!0}function $o(e=!1){if(this.midiData!==void 0){if(e){this.pausedTime=void 0,this.currentTime=0;return}if(this.currentTime>=this.duration){this.pausedTime=void 0,this.currentTime=0;return}this.paused&&(this._recalculateStartTime(this.pausedTime),this.pausedTime=void 0),this.sendMIDIMessages||this.playingNotes.forEach(A=>{this.synth.noteOn(A.channel,A.midiNote,A.velocity,!1,!0)}),this.setProcessHandler()}}function As(e){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(LA.timeChange,currentTime-this.midiData.MIDIticksToSeconds(e));let A=this._playTo(0,e);this._recalculateStartTime(this.playedTime),A&&this.play()}function es(e){this.absoluteStartTime=currentTime-e/this._playbackRate}var cA={noteOff:0,noteOn:1,ccChange:2,programChange:3,channelPressure:4,polyPressure:5,killNote:6,ccReset:7,setChannelVibrato:8,soundFontManager:9,stopAll:10,killNotes:11,muteChannel:12,addNewChannel:13,customcCcChange:14,debugMessage:15,systemExclusive:16,setMasterParameter:17,setDrums:18,pitchWheel:19,transpose:20,highPerformanceMode:21,lockController:22,sequencerSpecific:23,requestSynthesizerSnapshot:24,setLogLevel:25,keyModifierManager:26,setEffectsGain:27,destroyWorklet:28},yt={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3},se=-1,JA={channelProperties:0,eventCall:1,reportedCurrentTime:2,sequencerSpecific:3,synthesizerSnapshot:4,ready:5,soundfontError:6,identify:7};function ts(e,A){switch(e){default:break;case _A.loadNewSongList:this.loadNewSongList(A[0],A[1]);break;case _A.pause:this.pause();break;case _A.play:this.play(A);break;case _A.stop:this.stop();break;case _A.setTime:this.currentTime=A;break;case _A.changeMIDIMessageSending:this.sendMIDIMessages=A;break;case _A.setPlaybackRate:this.playbackRate=A;break;case _A.setLoop:let[t,n]=A;this.loop=t,n===se?this.loopCount=1/0:this.loopCount=n;break;case _A.changeSong:switch(A){case mt.forwards:this.nextSong();break;case mt.backwards:this.previousSong();break;case mt.shuffleOff:this.shuffleMode=!1,this.songIndex=this.shuffledSongIndexes[this.songIndex];break;case mt.shuffleOn:this.shuffleMode=!0,this.shuffleSongIndexes(),this.songIndex=0,this.loadCurrentSong()}break;case _A.getMIDI:this.post(LA.getMIDI,this.midiData);break;case _A.setSkipToFirstNote:this._skipToFirstNoteOn=A;break;case _A.setPreservePlaybackState:this.preservePlaybackState=A}}function ns(e,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:JA.sequencerSpecific,messageData:{messageType:e,messageData:A}})}function os(e){this.post(LA.midiEvent,e)}function ss(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.controllerChange|e,A,t])}function rs(e,A){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.programChange|e,A])}function is(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.pitchBend|e,t,A])}function as(){if(this.sendMIDIMessages){this.sendMIDIMessage([R.reset]);for(let e=0;e<16;e++)this.sendMIDIMessage([R.controllerChange|e,p.allSoundOff,0]),this.sendMIDIMessage([R.controllerChange|e,p.resetAllControllers,0])}}var kA=class{songs=[];songIndex=0;shuffledSongIndexes=[];synth;isActive=!1;sendMIDIMessages=!1;loopCount=1/0;eventIndex=[];playedTime=0;pausedTime=void 0;absoluteStartTime=currentTime;playingNotes=[];loop=!0;shuffleMode=!1;midiData=void 0;midiPorts=[];midiPortChannelOffset=0;midiPortChannelOffsets={};_skipToFirstNoteOn=!0;preservePlaybackState=!1;constructor(A){this.synth=A}_playbackRate=1;set playbackRate(A){let t=this.currentTime;this._playbackRate=A,this.currentTime=t}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(currentTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(A>this.duration||A<0){this._skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this._skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let t=this.paused&&this.preservePlaybackState;if(this.pausedTime=void 0,this.post(LA.timeChange,currentTime-A),this.midiData.duration===0){H("No duration!"),this.post(LA.pause,!0);return}this._playTo(A),this._recalculateStartTime(A),t?this.pause():this.play()}get paused(){return this.pausedTime!==void 0}pause(A=!1){if(this.paused){H("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this.post(LA.pause,A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,p.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages){for(let A of this.playingNotes)this.sendMIDIMessage([R.noteOff|A.channel%16,A.midiNote]);for(let A=0;A<16;A++)this.sendMIDICC(A,p.allNotesOff,0)}}loadCurrentSong(A=!0){let t=this.songIndex;this.shuffleMode&&(t=this.shuffledSongIndexes[this.songIndex]),this.loadNewSequence(this.songs[t],A)}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}shuffleSongIndexes(){let A=this.songs.map((t,n)=>n);for(this.shuffledSongIndexes=[];A.length>0;){let t=A[Math.floor(Math.random()*A.length)];this.shuffledSongIndexes.push(t),A.splice(A.indexOf(t),1)}}};kA.prototype.sendMIDIMessage=os;kA.prototype.sendMIDIReset=as;kA.prototype.sendMIDICC=ss;kA.prototype.sendMIDIProgramChange=rs;kA.prototype.sendMIDIPitchWheel=is;kA.prototype.assignMIDIPort=qo;kA.prototype.post=ns;kA.prototype.processMessage=ts;kA.prototype._processEvent=Ro;kA.prototype._addNewMidiPort=Go;kA.prototype.processTick=xo;kA.prototype._findFirstEventIndex=Mo;kA.prototype.loadNewSequence=Oo;kA.prototype.loadNewSongList=Po;kA.prototype.nextSong=Vo;kA.prototype.previousSong=Zo;kA.prototype.play=$o;kA.prototype._playTo=jo;kA.prototype.setTimeTicks=As;kA.prototype._recalculateStartTime=es;function ni(e,A){let t=0;return e.drumChannel&&(t+=5),A.isInRelease&&(t-=5),t+=A.velocity/25,t-=A.volumeEnvelope.state,A.isInRelease&&(t-=5),t-=A.volumeEnvelope.currentAttenuationDb/50,t}function Is(e){let A=[];for(let n of this.workletProcessorChannels)for(let o of n.voices)if(!o.finished){let s=ni(n,o);A.push({channel:n,voice:o,priority:s})}A.sort((n,o)=>n.priority-o.priority);let t=A.slice(0,e);for(let{channel:n,voice:o}of t){let s=n.voices.indexOf(o);s>-1&&n.voices.splice(s,1)}}var de=de!==void 0?de:{},gs=!1,Cs;de.isInitialized=new Promise(e=>Cs=e);var oi=function(e){var A,t,n,o,s,r,B,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",g="",d=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=a.indexOf(e.charAt(d++)),s=a.indexOf(e.charAt(d++)),r=a.indexOf(e.charAt(d++)),B=a.indexOf(e.charAt(d++)),A=o<<2|s>>4,t=(15&s)<<4|r>>2,n=(3&r)<<6|B,g+=String.fromCharCode(A),r!==64&&(g+=String.fromCharCode(t)),B!==64&&(g+=String.fromCharCode(n));while(d<e.length);return g};(function(){var e,A,t,n,o,s,r,B,a,g,d,E,c,h,m,u,S,w,D,M,b,x,C=C!==void 0?C:{};C.wasmBinary=Uint8Array.from(oi("AGFzbQEAAAABpQEYYAJ/fwF/YAF/AGAAAX9gBH9/f38AYAAAYAN/f38Bf2ABfwF/YAJ/fwBgBn9/f39/fwF/YAR/f39/AX9gBX9/f39/AX9gB39/f39/f38Bf2AGf39/f39/AGAIf39/f39/f38Bf2AFf39/f38AYAd/f39/f39/AGADf39/AGABfwF9YAF9AX1gAnx/AXxgAnx/AX9gA3x8fwF8YAJ8fAF8YAF8AXwCngIPA2VudgZtZW1vcnkCAIACA2VudgV0YWJsZQFwAQQEA2Vudgl0YWJsZUJhc2UDfwADZW52DkRZTkFNSUNUT1BfUFRSA38AA2VudghTVEFDS1RPUAN/AANlbnYJU1RBQ0tfTUFYA38ABmdsb2JhbAhJbmZpbml0eQN8AANlbnYFYWJvcnQAAQNlbnYNZW5sYXJnZU1lbW9yeQACA2Vudg5nZXRUb3RhbE1lbW9yeQACA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQACA2Vudg5fX19hc3NlcnRfZmFpbAADA2VudgtfX19zZXRFcnJObwABA2VudgZfYWJvcnQABANlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA3d2BgYCAQcHAQIBAQcBCAcFAAkGCQoHBgYGBgEFBgIBBgYKAAgLAAYGBgYGBgYBAAoMDAMGBQANCAoJAAwODA8OAQAGBgcEABAJEAERAAADBQwAAAMHBxIGAQAABwIFEwMOBw8HBgYQFAoVExYXFxcXFgQFBQYFAAYkB38BIwELfwEjAgt/ASMDC38BQQALfwFBAAt8ASMEC38BQQALB9MCFRBfX2dyb3dXYXNtTWVtb3J5AAgRX19fZXJybm9fbG9jYXRpb24AYwVfZnJlZQBfB19tYWxsb2MAXgdfbWVtY3B5AHkHX21lbXNldAB6BV9zYnJrAHsXX3N0Yl92b3JiaXNfanNfY2hhbm5lbHMAJhRfc3RiX3ZvcmJpc19qc19jbG9zZQAlFV9zdGJfdm9yYmlzX2pzX2RlY29kZQAoE19zdGJfdm9yYmlzX2pzX29wZW4AJBpfc3RiX3ZvcmJpc19qc19zYW1wbGVfcmF0ZQAnC2R5bkNhbGxfaWlpAHwTZXN0YWJsaXNoU3RhY2tTcGFjZQAMC2dldFRlbXBSZXQwAA8LcnVuUG9zdFNldHMAeAtzZXRUZW1wUmV0MAAOCHNldFRocmV3AA0Kc3RhY2tBbGxvYwAJDHN0YWNrUmVzdG9yZQALCXN0YWNrU2F2ZQAKCQoBACMACwR9VFl9Csb2A3YGACAAQAALGwEBfyMGIQEjBiAAaiQGIwZBD2pBcHEkBiABCwQAIwYLBgAgACQGCwoAIAAkBiABJAcLEAAjCEUEQCAAJAggASQJCwsGACAAJAsLBAAjCwsRACAABEAgABARIAAgABASCwvvBwEKfyAAQYADaiEHIAcoAgAhBQJAIAUEQCAAQfwBaiEEIAQoAgAhASABQQBKBEAgAEHwAGohCANAIAUgAkEYbGpBEGohCSAJKAIAIQEgAQRAIAgoAgAhAyAFIAJBGGxqQQ1qIQogCi0AACEGIAZB/wFxIQYgAyAGQbAQbGpBBGohAyADKAIAIQMgA0EASgRAQQAhAwNAIAEgA0ECdGohASABKAIAIQEgACABEBIgA0EBaiEDIAgoAgAhASAKLQAAIQYgBkH/AXEhBiABIAZBsBBsakEEaiEBIAEoAgAhBiAJKAIAIQEgAyAGSA0ACwsgACABEBILIAUgAkEYbGpBFGohASABKAIAIQEgACABEBIgAkEBaiECIAQoAgAhASACIAFODQMgBygCACEFDAAACwALCwsgAEHwAGohAyADKAIAIQEgAQRAIABB7ABqIQUgBSgCACECIAJBAEoEQEEAIQIDQAJAIAEgAkGwEGxqQQhqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQRxqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQSBqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQaQQaiEEIAQoAgAhBCAAIAQQEiABIAJBsBBsakGoEGohASABKAIAIQEgAUUhBCABQXxqIQFBACABIAQbIQEgACABEBIgAkEBaiECIAUoAgAhASACIAFODQAgAygCACEBDAELCyADKAIAIQELIAAgARASCyAAQfgBaiEBIAEoAgAhASAAIAEQEiAHKAIAIQEgACABEBIgAEGIA2ohAyADKAIAIQEgAQRAIABBhANqIQUgBSgCACECIAJBAEoEQEEAIQIDQCABIAJBKGxqQQRqIQEgASgCACEBIAAgARASIAJBAWohAiAFKAIAIQcgAygCACEBIAIgB0gNAAsLIAAgARASCyAAQQRqIQIgAigCACEBIAFBAEoEQEEAIQEDQCAAQZQGaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQZQHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQdgHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiABQQFqIQEgAigCACEDIAEgA0ghAyABQRBJIQUgBSADcQ0ACwtBACEBA0AgAEGgCGogAUECdGohAiACKAIAIQIgACACEBIgAEGoCGogAUECdGohAiACKAIAIQIgACACEBIgAEGwCGogAUECdGohAiACKAIAIQIgACACEBIgAEG4CGogAUECdGohAiACKAIAIQIgACACEBIgAEHACGogAUECdGohAiACKAIAIQIgACACEBIgAUEBaiEBIAFBAkcNAAsLGwAgAEHEAGohACAAKAIAIQAgAEUEQCABEF8LC3wBAX8gAEHUB2ohASABQQA2AgAgAEGAC2ohASABQQA2AgAgAEH4CmohASABQQA2AgAgAEGcCGohASABQQA2AgAgAEHVCmohASABQQA6AAAgAEH8CmohASABQQA2AgAgAEHUC2ohASABQQA2AgAgAEHYC2ohACAAQQA2AgAL8AQBB38jBiELIwZBEGokBiALQQhqIQcgC0EEaiEKIAshCCAAQSRqIQYgBiwAACEGAn8gBgR/IABBgAtqIQYgBigCACEGIAZBf0oEQCAFQQA2AgAgACABIAIQFgwCCyAAQRRqIQYgBiABNgIAIAEgAmohAiAAQRxqIQkgCSACNgIAIABB2ABqIQIgAkEANgIAIABBABAXIQkgCUUEQCAFQQA2AgBBAAwCCyAAIAcgCCAKEBghCSAJBEAgBygCACECIAgoAgAhCSAKKAIAIQggACACIAkgCBAaIQogByAKNgIAIABBBGohAiACKAIAIQggCEEASgRAQQAhAgNAIABBlAZqIAJBAnRqIQcgBygCACEHIAcgCUECdGohByAAQdQGaiACQQJ0aiEMIAwgBzYCACACQQFqIQIgAiAISA0ACwsgAwRAIAMgCDYCAAsgBSAKNgIAIABB1AZqIQAgBCAANgIAIAYoAgAhACAAIAFrDAILAkACQAJAAkACQCACKAIAIgNBIGsOBAECAgACCyACQQA2AgAgAEHUAGohAiAAEBkhAwJAIANBf0cEQANAIAIoAgAhAyADDQIgABAZIQMgA0F/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ACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGoh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IwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOi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mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA=="),function(l){return l.charCodeAt(0)});var C=C!==void 0?C:{},F={};for(e in C)C.hasOwnProperty(e)&&(F[e]=C[e]);C.arguments=[],C.thisProgram="./this.program",C.quit=function(l,Q){throw Q},C.preRun=[],C.postRun=[];var J=!1,aA=!1,sA=!1,K=!1;J=typeof window=="object",aA=typeof importScripts=="function",sA=typeof process=="object"&&typeof uo=="function"&&!J&&!aA,K=!J&&!sA&&!aA;var j="";function EA(l){return C.locateFile?C.locateFile(l,j):j+l}sA?(j=__dirname+"/",C.read=function(Q,f){var k;return A||(A=void 0),t||(t=void 0),Q=t.normalize(Q),k=A.readFileSync(Q),f?k:k.toString()},C.readBinary=function(Q){var f=C.read(Q,!0);return f.buffer||(f=new Uint8Array(f)),ZA(f.buffer),f},process.argv.length>1&&(C.thisProgram=process.argv[1].replace(/\\/g,"/")),C.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(l){if(!(l instanceof dt))throw l}),process.on("unhandledRejection",function(l,Q){process.exit(1)}),C.quit=function(l){process.exit(l)},C.inspect=function(){return"[Emscripten Module object]"}):K?(typeof read<"u"&&(C.read=function(Q){return read(Q)}),C.readBinary=function(Q){var f;return typeof readbuffer=="function"?new Uint8Array(readbuffer(Q)):(ZA(typeof(f=read(Q,"binary"))=="object"),f)},typeof scriptArgs<"u"?C.arguments=scriptArgs:typeof arguments<"u"&&(C.arguments=arguments),typeof quit=="function"&&(C.quit=function(l){quit(l)})):(J||aA)&&(J?document.currentScript&&(j=document.currentScript.src):j=self.location.href,j=j.indexOf("blob:")!==0?j.split("/").slice(0,-1).join("/")+"/":"",C.read=function(Q){var f=new XMLHttpRequest;return f.open("GET",Q,!1),f.send(null),f.responseText},aA&&(C.readBinary=function(Q){var f=new XMLHttpRequest;return f.open("GET",Q,!1),f.responseType="arraybuffer",f.send(null),new Uint8Array(f.response)}),C.readAsync=function(Q,f,k){var Y=new XMLHttpRequest;Y.open("GET",Q,!0),Y.responseType="arraybuffer",Y.onload=function(){if(Y.status==200||Y.status==0&&Y.response){f(Y.response);return}k()},Y.onerror=k,Y.send(null)},C.setWindowTitle=function(l){document.title=l});var X=C.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),rA=C.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||X);for(e in F)F.hasOwnProperty(e)&&(C[e]=F[e]);function BA(l){var Q=h;return h=h+l+15&-16,Q}function v(l){var Q=a[M>>2],f=Q+l+15&-16;return a[M>>2]=f,f>=MA&&!lt()?(a[M>>2]=Q,0):Q}function q(l,Q){return Q||(Q=16),l=Math.ceil(l/Q)*Q}function $(l){switch(l){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(l[l.length-1]==="*")return 4;if(l[0]!=="i")return 0;var Q=parseInt(l.substr(1));return ZA(Q%8==0),Q/8}}function gA(l){gA.shown||(gA.shown={}),gA.shown[l]||(gA.shown[l]=1,rA(l))}F=void 0;var IA={"f64-rem":function(l,Q){return l%Q},debugger:function(){}},VA=[];function ue(l,Q){for(var f=0,k=f;k<f+0;k++)if(!VA[k])return VA[k]=l,1+k;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function Ee(l){VA[l-1]=null}var Be={};function ze(l,Q){if(l){ZA(Q),Be[Q]||(Be[Q]={});var f=Be[Q];return f[l]||(Q.length===1?f[l]=function(){return oA(Q,l)}:Q.length===2?f[l]=function(Y){return oA(Q,l,[Y])}:f[l]=function(){return oA(Q,l,Array.prototype.slice.call(arguments))}),f[l]}}function fe(l,Q,f){return f?+(l>>>0)+4294967296*+(Q>>>0):+(l>>>0)+4294967296*+(0|Q)}function oA(l,Q,f){return f&&f.length?C["dynCall_"+l].apply(null,[Q].concat(f)):C["dynCall_"+l].call(null,Q)}var QA=0,he=0;function ZA(l,Q){l||Se("Assertion failed: "+Q)}function we(l){var Q=C["_"+l];return ZA(Q,"Cannot call unknown function "+l+", make sure it is exported"),Q}var Fe={stackSave:function(){Dn()},stackRestore:function(){Sn()},arrayToC:function(l){var Q,f,k=Yt(l.length);return Q=l,f=k,o.set(Q,f),k},stringToC:function(l){var Q=0;if(l!=null&&l!==0){var f=(l.length<<2)+1;Q=Yt(f),Bt(l,Q,f)}return Q}},Ct={string:Fe.stringToC,array:Fe.arrayToC};function je(l,Q,f,k,Y){var nA=we(l),CA=[],V=0;if(k)for(var bA=0;bA<k.length;bA++){var mA=Ct[f[bA]];mA?(V===0&&(V=Dn()),CA[bA]=mA(k[bA])):CA[bA]=k[bA]}var pA,dA=nA.apply(null,CA);return dA=(pA=dA,Q==="string"?Re(pA):Q==="boolean"?!!pA:pA),V!==0&&Sn(V),dA}function Et(l,Q,f,k){switch((f=f||"i8").charAt(f.length-1)==="*"&&(f="i32"),f){case"i1":case"i8":o[l>>0]=Q;break;case"i16":r[l>>1]=Q;break;case"i32":a[l>>2]=Q;break;case"i64":tempI64=[Q>>>0,+Zr(tempDouble=Q)>=1?tempDouble>0?(0|Wr(+Bo(tempDouble/4294967296),4294967295))>>>0:~~+Xr((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],a[l>>2]=tempI64[0],a[l+4>>2]=tempI64[1];break;case"float":d[l>>2]=Q;break;case"double":E[l>>3]=Q;break;default:Se("invalid type for setValue: "+f)}}function cn(l,Q,f){switch((Q=Q||"i8").charAt(Q.length-1)==="*"&&(Q="i32"),Q){case"i1":case"i8":return o[l>>0];case"i16":return r[l>>1];case"i32":case"i64":return a[l>>2];case"float":return d[l>>2];case"double":return E[l>>3];default:Se("invalid type for getValue: "+Q)}return null}function Qn(l,Q,f,k){typeof l=="number"?(nA=!0,CA=l):(nA=!1,CA=l.length);var Y=typeof Q=="string"?Q:null;if(V=f==4?k:[typeof Ht=="function"?Ht:BA,Yt,BA,v][f===void 0?2:f](Math.max(CA,Y?1:Q.length)),nA){for(k=V,ZA((3&V)==0),bA=V+(-4&CA);k<bA;k+=4)a[k>>2]=0;for(bA=V+CA;k<bA;)o[k++>>0]=0;return V}if(Y==="i8")return l.subarray||l.slice?s.set(l,V):s.set(new Uint8Array(l),V),V;for(var nA,CA,V,bA,mA,pA,dA,tA=0;tA<CA;){var qA=l[tA];if((mA=Y||Q[tA])===0){tA++;continue}mA=="i64"&&(mA="i32"),Et(V+tA,qA,mA),dA!==mA&&(pA=$(mA),dA=mA),tA+=pA}return V}function $e(l){return m?pn?Ht(l):v(l):BA(l)}function Re(l,Q){if(Q===0||!l)return"";for(var f,k,Y,nA=0,CA=0;nA|=k=s[l+CA>>0],(k!=0||Q)&&(CA++,!Q||CA!=Q););Q||(Q=CA);var V="";if(nA<128){for(;Q>0;)Y=String.fromCharCode.apply(String,s.subarray(l,l+Math.min(Q,1024))),V=V?V+Y:Y,l+=1024,Q-=1024;return V}return f=l,function(mA,pA){for(var dA=pA;mA[dA];)++dA;if(dA-pA>16&&mA.subarray&&Nt)return Nt.decode(mA.subarray(pA,dA));for(var tA,qA,jA,$A,Ae,Oe,ee="";;){if(!(tA=mA[pA++]))return ee;if(!(128&tA)){ee+=String.fromCharCode(tA);continue}if(qA=63&mA[pA++],(224&tA)==192){ee+=String.fromCharCode((31&tA)<<6|qA);continue}if(jA=63&mA[pA++],(240&tA)==224?tA=(15&tA)<<12|qA<<6|jA:($A=63&mA[pA++],(248&tA)==240?tA=(7&tA)<<18|qA<<12|jA<<6|$A:(Ae=63&mA[pA++],tA=(252&tA)==248?(3&tA)<<24|qA<<18|jA<<12|$A<<6|Ae:(1&tA)<<30|qA<<24|jA<<18|$A<<12|Ae<<6|(Oe=63&mA[pA++]))),tA<65536)ee+=String.fromCharCode(tA);else{var ut=tA-65536;ee+=String.fromCharCode(55296|ut>>10,56320|1023&ut)}}}(s,f)}function XA(l){for(var Q="";;){var f=o[l++>>0];if(!f)return Q;Q+=String.fromCharCode(f)}}function dn(l,Q){return function(k,Y,nA){for(var CA=0;CA<k.length;++CA)o[Y++>>0]=k.charCodeAt(CA);nA||(o[Y>>0]=0)}(l,Q,!1)}var Nt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function At(l,Q,f,k){if(!(k>0))return 0;for(var Y=f,nA=f+k-1,CA=0;CA<l.length;++CA){var V=l.charCodeAt(CA);if(V>=55296&&V<=57343&&(V=65536+((1023&V)<<10)|1023&l.charCodeAt(++CA)),V<=127){if(f>=nA)break;Q[f++]=V}else if(V<=2047){if(f+1>=nA)break;Q[f++]=192|V>>6,Q[f++]=128|63&V}else if(V<=65535){if(f+2>=nA)break;Q[f++]=224|V>>12,Q[f++]=128|V>>6&63,Q[f++]=128|63&V}else if(V<=2097151){if(f+3>=nA)break;Q[f++]=240|V>>18,Q[f++]=128|V>>12&63,Q[f++]=128|V>>6&63,Q[f++]=128|63&V}else if(V<=67108863){if(f+4>=nA)break;Q[f++]=248|V>>24,Q[f++]=128|V>>18&63,Q[f++]=128|V>>12&63,Q[f++]=128|V>>6&63,Q[f++]=128|63&V}else{if(f+5>=nA)break;Q[f++]=252|V>>30,Q[f++]=128|V>>24&63,Q[f++]=128|V>>18&63,Q[f++]=128|V>>12&63,Q[f++]=128|V>>6&63,Q[f++]=128|63&V}}return Q[f]=0,f-Y}function Bt(l,Q,f){return At(l,s,Q,f)}function YA(l){for(var Q=0,f=0;f<l.length;++f){var k=l.charCodeAt(f);k>=55296&&k<=57343&&(k=65536+((1023&k)<<10)|1023&l.charCodeAt(++f)),k<=127?++Q:k<=2047?Q+=2:k<=65535?Q+=3:k<=2097151?Q+=4:k<=67108863?Q+=5:Q+=6}return Q}var me=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function ht(l){for(var Q=l,f=Q>>1;r[f];)++f;if((Q=f<<1)-l>32&&me)return me.decode(s.subarray(l,Q));for(var k=0,Y="";;){var nA=r[l+2*k>>1];if(nA==0)return Y;++k,Y+=String.fromCharCode(nA)}}function un(l,Q,f){if(f===void 0&&(f=2147483647),f<2)return 0;for(var k=Q,Y=(f-=2)<2*l.length?f/2:l.length,nA=0;nA<Y;++nA){var CA=l.charCodeAt(nA);r[Q>>1]=CA,Q+=2}return r[Q>>1]=0,Q-k}function pe(l){return 2*l.length}function bt(l){for(var Q=0,f="";;){var k=a[l+4*Q>>2];if(k==0)return f;if(++Q,k>=65536){var Y=k-65536;f+=String.fromCharCode(55296|Y>>10,56320|1023&Y)}else f+=String.fromCharCode(k)}}function Lt(l,Q,f){if(f===void 0&&(f=2147483647),f<4)return 0;for(var k=Q,Y=k+f-4,nA=0;nA<l.length;++nA){var CA=l.charCodeAt(nA);if(CA>=55296&&CA<=57343&&(CA=65536+((1023&CA)<<10)|1023&l.charCodeAt(++nA)),a[Q>>2]=CA,(Q+=4)+4>Y)break}return a[Q>>2]=0,Q-k}function ao(l){for(var Q=0,f=0;f<l.length;++f){var k=l.charCodeAt(f);k>=55296&&k<=57343&&++f,Q+=4}return Q}function Io(l){var Q=YA(l)+1,f=Ht(Q);return f&&At(l,o,f,Q),f}function Ut(l){var Q=YA(l)+1,f=Yt(Q);return At(l,o,f,Q),f}function Je(l){return l}function fn(){var l,Q=function(){var k=Error();if(!k.stack){try{throw Error(0)}catch(Y){k=Y}if(!k.stack)return"(no stack trace available)"}return k.stack.toString()}();return C.extraStackTrace&&(Q+=`
14
+ `+C.extraStackTrace()),(l=Q).replace(/__Z[\w\d_]+/g,function(f){var k,Y=k=f;return f===Y?f:f+" ["+Y+"]"})}function ye(l,Q){return l%Q>0&&(l+=Q-l%Q),l}function et(l){C.buffer=n=l}function Ke(){C.HEAP8=o=new Int8Array(n),C.HEAP16=r=new Int16Array(n),C.HEAP32=a=new Int32Array(n),C.HEAPU8=s=new Uint8Array(n),C.HEAPU16=B=new Uint16Array(n),C.HEAPU32=g=new Uint32Array(n),C.HEAPF32=d=new Float32Array(n),C.HEAPF64=E=new Float64Array(n)}function lt(){var l=C.usingWasm?65536:16777216,Q=2147483648-l;if(a[M>>2]>Q)return!1;var f=MA;for(MA=Math.max(MA,16777216);MA<a[M>>2];)MA=MA<=536870912?ye(2*MA,l):Math.min(ye((3*MA+2147483648)/4,l),Q);var k=C.reallocBuffer(MA);return k&&k.byteLength==MA?(et(k),Ke(),!0):(MA=f,!1)}c=h=u=S=w=D=M=0,m=!1,C.reallocBuffer||(C.reallocBuffer=function(l){try{if(ArrayBuffer.transfer)Q=ArrayBuffer.transfer(n,l);else{var Q,f=o;Q=new ArrayBuffer(l),new Int8Array(Q).set(f)}}catch{return!1}return!!_r(Q)&&Q});try{(b=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{b=function(Q){return Q.byteLength}}var tt=C.TOTAL_STACK||5242880,MA=C.TOTAL_MEMORY||16777216;function Tt(){return MA}function Ge(l){for(;l.length>0;){var Q=l.shift();if(typeof Q=="function"){Q();continue}var f=Q.func;typeof f=="number"?Q.arg===void 0?C.dynCall_v(f):C.dynCall_vi(f,Q.arg):f(Q.arg===void 0?null:Q.arg)}}MA<tt&&rA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+MA+"! (TOTAL_STACK="+tt+")"),C.buffer?n=C.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(C.wasmMemory=new WebAssembly.Memory({initial:MA/65536}),n=C.wasmMemory.buffer):n=new ArrayBuffer(MA),C.buffer=n),Ke();var ct=[],mn=[],go=[],Co=[],Eo=[],pn=!1,Or=!1;function Pr(l){ct.unshift(l)}function Si(l){mn.unshift(l)}function Di(l){go.unshift(l)}function ki(l){Co.unshift(l)}function Vr(l){Eo.unshift(l)}function wi(l,Q,f){var k,Y;gA("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),f&&(k=o[Y=Q+YA(l)]),Bt(l,Q,1/0),f&&(o[Y]=k)}function Fi(l,Q,f){return l>=0?l:Q<=32?2*Math.abs(1<<Q-1)+l:Math.pow(2,Q)+l}function Ri(l,Q,f){if(l<=0)return l;var k=Q<=32?Math.abs(1<<Q-1):Math.pow(2,Q-1);return l>=k&&(Q<=32||l>k)&&(l=-2*k+l),l}var Zr=Math.abs,Xr=Math.ceil,Bo=Math.floor,Wr=Math.min,qe=0,yn=null,Qt=null;function Gi(l){return l}C.preloadedImages={},C.preloadedAudios={};var ho="data:application/octet-stream;base64,";function vt(l){return String.prototype.startsWith?l.startsWith(ho):l.indexOf(ho)===0}(function(){var Q="main.wast",f="main.wasm",k="main.temp.asm.js";vt(Q)||(Q=EA(Q)),vt(f)||(f=EA(f)),vt(k)||(k=EA(k));var Y={global:null,env:null,asm2wasm:IA,parent:C},nA=null;function CA(dA){return dA}function V(){try{if(C.wasmBinary)return new Uint8Array(C.wasmBinary);if(C.readBinary)return C.readBinary(f);throw"both async and sync fetching of the wasm failed"}catch(dA){Se(dA)}}C.asmPreload=C.asm;var bA=C.reallocBuffer,mA=function(dA){dA=ye(dA,C.usingWasm?65536:16777216);var tA=C.buffer.byteLength;if(C.usingWasm)try{var qA=C.wasmMemory.grow((dA-tA)/65536);return qA!==-1?C.buffer=C.wasmMemory.buffer:null}catch{return null}};C.reallocBuffer=function(dA){return pA==="asmjs"?bA(dA):mA(dA)};var pA="";C.asm=function(dA,tA,qA){var jA;if(!(tA=jA=tA).table){var $A,Ae=C.wasmTableSize;Ae===void 0&&(Ae=1024);var Oe=C.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?Oe!==void 0?tA.table=new WebAssembly.Table({initial:Ae,maximum:Oe,element:"anyfunc"}):tA.table=new WebAssembly.Table({initial:Ae,element:"anyfunc"}):tA.table=Array(Ae),C.wasmTable=tA.table}return tA.memoryBase||(tA.memoryBase=C.STATIC_BASE),tA.tableBase||(tA.tableBase=0),$A=function(ut,nt,wn){if(typeof WebAssembly!="object")return rA("no native wasm support detected"),!1;if(!(C.wasmMemory instanceof WebAssembly.Memory))return rA("no native wasm Memory in use"),!1;function Jt(le,ce){if((nA=le.exports).memory){var ft,Fn,Qo;ft=nA.memory,Fn=C.buffer,ft.byteLength<Fn.byteLength&&rA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),Qo=new Int8Array(Fn),new Int8Array(ft).set(Qo),et(ft),Ke()}C.asm=nA,C.usingWasm=!0,function(Ti){if(qe--,C.monitorRunDependencies&&C.monitorRunDependencies(qe),qe==0&&(yn!==null&&(clearInterval(yn),yn=null),Qt)){var zr=Qt;Qt=null,zr()}}("wasm-instantiate")}if(nt.memory=C.wasmMemory,Y.global={NaN:NaN,Infinity:1/0},Y["global.Math"]=Math,Y.env=nt,qe++,C.monitorRunDependencies&&C.monitorRunDependencies(qe),C.instantiateWasm)try{return C.instantiateWasm(Y,Jt)}catch(le){return rA("Module.instantiateWasm callback failed with error: "+le),!1}function ot(le){Jt(le.instance,le.module)}function co(le){(!C.wasmBinary&&(J||aA)&&typeof fetch=="function"?fetch(f,{credentials:"same-origin"}).then(function(ce){if(!ce.ok)throw"failed to load wasm binary file at '"+f+"'";return ce.arrayBuffer()}).catch(function(){return V()}):new Promise(function(ce,ft){ce(V())})).then(function(ce){return WebAssembly.instantiate(ce,Y)}).then(le).catch(function(ce){rA("failed to asynchronously prepare wasm: "+ce),Se(ce)})}return C.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||vt(f)||typeof fetch!="function"?co(ot):WebAssembly.instantiateStreaming(fetch(f,{credentials:"same-origin"}),Y).then(ot).catch(function(le){rA("wasm streaming compile failed: "+le),rA("falling back to ArrayBuffer instantiation"),co(ot)}),{}}(dA,tA,qA),ZA($A,"no binaryen method succeeded."),$A},C.asm})(),h=(c=1024)+4816,mn.push(),C.STATIC_BASE=c,C.STATIC_BUMP=4816;var WA=h;function xi(l){o[WA]=o[l],o[WA+1]=o[l+1],o[WA+2]=o[l+2],o[WA+3]=o[l+3]}function Mi(l){o[WA]=o[l],o[WA+1]=o[l+1],o[WA+2]=o[l+2],o[WA+3]=o[l+3],o[WA+4]=o[l+4],o[WA+5]=o[l+5],o[WA+6]=o[l+6],o[WA+7]=o[l+7]}function Ni(l,Q,f){var k=f>0?f:YA(l)+1,Y=Array(k),nA=At(l,Y,0,Y.length);return Q&&(Y.length=nA),Y}function bi(l){for(var Q=[],f=0;f<l.length;f++){var k=l[f];k>255&&(k&=255),Q.push(String.fromCharCode(k))}return Q.join("")}h+=16,M=BA(4),w=(u=S=q(h))+tt,D=q(w),a[M>>2]=D,m=!0,C.wasmTableSize=4,C.wasmMaxTableSize=4,C.asmGlobalArg={},C.asmLibraryArg={abort:Se,assert:ZA,enlargeMemory:lt,getTotalMemory:Tt,abortOnCannotGrowMemory:function(){Se("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+MA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(Q,f,k){var Y=Dn();try{return C.dynCall_iii(Q,f,k)}catch(nA){if(Sn(Y),typeof nA!="number"&&nA!=="longjmp")throw nA;C.setThrew(1,0)}},___assert_fail:function(Q,f,k,Y){Se("Assertion failed: "+Re(Q)+", at: "+[f?Re(f):"unknown filename",k,Y?Re(Y):"unknown function"])},___setErrNo:function(Q){return C.___errno_location&&(a[C.___errno_location()>>2]=Q),Q},_abort:function(){C.abort()},_emscripten_memcpy_big:function(Q,f,k){return s.set(s.subarray(f,f+k),Q),Q},_llvm_floor_f64:Bo,DYNAMICTOP_PTR:M,tempDoublePtr:WA,ABORT:QA,STACKTOP:S,STACK_MAX:w};var lo=C.asm(C.asmGlobalArg,C.asmLibraryArg,n);C.asm=lo,C.___errno_location=function(){return C.asm.___errno_location.apply(null,arguments)};var _r=C._emscripten_replace_memory=function(){return C.asm._emscripten_replace_memory.apply(null,arguments)};C._free=function(){return C.asm._free.apply(null,arguments)};var Ht=C._malloc=function(){return C.asm._malloc.apply(null,arguments)};C._memcpy=function(){return C.asm._memcpy.apply(null,arguments)},C._memset=function(){return C.asm._memset.apply(null,arguments)},C._sbrk=function(){return C.asm._sbrk.apply(null,arguments)},C._stb_vorbis_js_channels=function(){return C.asm._stb_vorbis_js_channels.apply(null,arguments)},C._stb_vorbis_js_close=function(){return C.asm._stb_vorbis_js_close.apply(null,arguments)},C._stb_vorbis_js_decode=function(){return C.asm._stb_vorbis_js_decode.apply(null,arguments)},C._stb_vorbis_js_open=function(){return C.asm._stb_vorbis_js_open.apply(null,arguments)},C._stb_vorbis_js_sample_rate=function(){return C.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},C.establishStackSpace=function(){return C.asm.establishStackSpace.apply(null,arguments)},C.getTempRet0=function(){return C.asm.getTempRet0.apply(null,arguments)},C.runPostSets=function(){return C.asm.runPostSets.apply(null,arguments)},C.setTempRet0=function(){return C.asm.setTempRet0.apply(null,arguments)},C.setThrew=function(){return C.asm.setThrew.apply(null,arguments)};var Yt=C.stackAlloc=function(){return C.asm.stackAlloc.apply(null,arguments)},Sn=C.stackRestore=function(){return C.asm.stackRestore.apply(null,arguments)},Dn=C.stackSave=function(){return C.asm.stackSave.apply(null,arguments)};function dt(l){this.name="ExitStatus",this.message="Program terminated with exit("+l+")",this.status=l}function kn(l){l=l||C.arguments,!(qe>0)&&(function(){if(C.preRun)for(typeof C.preRun=="function"&&(C.preRun=[C.preRun]);C.preRun.length;)Pr(C.preRun.shift());Ge(ct)}(),!(qe>0)&&(C.calledRun||(C.setStatus?(C.setStatus("Running..."),setTimeout(function(){setTimeout(function(){C.setStatus("")},1),Q()},1)):Q())));function Q(){!C.calledRun&&(C.calledRun=!0,QA||(pn||(pn=!0,Ge(mn)),Ge(go),C.onRuntimeInitialized&&C.onRuntimeInitialized(),function(){if(C.postRun)for(typeof C.postRun=="function"&&(C.postRun=[C.postRun]);C.postRun.length;)Vr(C.postRun.shift());Ge(Eo)}()))}}function Li(l,Q){(!Q||!C.noExitRuntime||l!==0)&&(C.noExitRuntime||(QA=!0,he=l,S=x,Ge(Co),Or=!0,C.onExit&&C.onExit(l)),C.quit(l,new dt(l)))}function Se(l){throw C.onAbort&&C.onAbort(l),l!==void 0?(X(l),rA(l),l=JSON.stringify(l)):l="",QA=!0,he=1,"abort("+l+"). Build with -s ASSERTIONS=1 for more info."}if(C.dynCall_iii=function(){return C.asm.dynCall_iii.apply(null,arguments)},C.asm=lo,C.ccall=je,C.cwrap=function(Q,f,k,Y){var nA=(k=k||[]).every(function(CA){return CA==="number"});return f!=="string"&&nA&&!Y?we(Q):function(){return je(Q,f,k,arguments,Y)}},dt.prototype=Error(),dt.prototype.constructor=dt,Qt=function l(){C.calledRun||kn(),C.calledRun||(Qt=l)},C.run=kn,C.abort=Se,C.preInit)for(typeof C.preInit=="function"&&(C.preInit=[C.preInit]);C.preInit.length>0;)C.preInit.pop()();C.noExitRuntime=!0,kn(),C.onRuntimeInitialized=()=>{gs=!0,Cs()},de.decode=function(l){return function(f){if(!gs)throw Error("Not initialized");var k={};function Y(nt){return new Int32Array(C.HEAPU8.buffer,nt,1)[0]}function nA(nt,wn){var Jt=new ArrayBuffer(wn*Float32Array.BYTES_PER_ELEMENT),ot=new Float32Array(Jt);return ot.set(new Float32Array(C.HEAPU8.buffer,nt,wn)),ot}k.open=C.cwrap("stb_vorbis_js_open","number",[]),k.close=C.cwrap("stb_vorbis_js_close","void",["number"]),k.channels=C.cwrap("stb_vorbis_js_channels","number",["number"]),k.sampleRate=C.cwrap("stb_vorbis_js_sample_rate","number",["number"]),k.decode=C.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var CA,V,bA,mA,pA=k.open(),dA=(CA=f,V=f.byteLength,bA=C._malloc(V),(mA=new Uint8Array(C.HEAPU8.buffer,bA,V)).set(new Uint8Array(CA,0,V)),mA),tA=C._malloc(4),qA=C._malloc(4),jA=k.decode(pA,dA.byteOffset,dA.byteLength,tA,qA);if(C._free(dA.byteOffset),jA<0)throw k.close(pA),C._free(tA),Error("stbvorbis decode failed: "+jA);for(var $A=k.channels(pA),Ae=Array($A),Oe=new Int32Array(C.HEAPU32.buffer,Y(tA),$A),ee=0;ee<$A;ee++)Ae[ee]=nA(Oe[ee],jA),C._free(Oe[ee]);var ut=k.sampleRate(pA);return k.close(pA),C._free(Y(tA)),C._free(tA),{data:Ae,sampleRate:ut,eof:!0,error:null}}(l)}})();var Jn=new Float32Array(30001);for(let e=0;e<Jn.length;e++){let A=-15e3+e;Jn[e]=Math.pow(2,A/1200)}function ae(e){return e<=-32767?0:Jn[e- -15e3]}var jt=-2e4,Es=16500,Kn=new Float32Array(Es-jt+1);for(let e=0;e<Kn.length;e++){let A=jt+e;Kn[e]=440*Math.pow(2,(A-6900)/1200)}function St(e){return e<jt||e>Es?440*Math.pow(2,(e-6900)/1200):Kn[~~e-jt]}var On=-1660,si=1600,qn=new Float32Array((si-On)*100+1);for(let e=0;e<qn.length;e++){let A=(On*100+e)/100;qn[e]=Math.pow(10,-A/20)}function re(e){return qn[Math.floor((e-On)*100)]}var Bs=.01,zA=100,Pn=90,ri=15e-6,Ie=class e{currentSampleTime=0;sampleRate;currentAttenuationDb=zA;state=0;releaseStartDb=zA;releaseStartTimeSamples=0;currentReleaseGain=1;attackDuration=0;decayDuration=0;releaseDuration=0;attenuation=0;attenuationTargetGain=0;attenuationTarget=0;sustainDbRelative=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;constructor(A,t){this.sampleRate=A,this.canEndOnSilentSustain=t/10>=Pn}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=re(A.volumeEnvelope.currentAttenuationDb),e.recalculate(A)}static recalculate(A){let t=A.volumeEnvelope,n=g=>Math.max(0,Math.floor(ae(g)*t.sampleRate));t.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[i.initialAttenuation],1440))/10,t.attenuationTargetGain=re(t.attenuationTarget),t.sustainDbRelative=Math.min(zA,A.modulatedGenerators[i.sustainVolEnv]/10);let o=Math.min(zA,t.sustainDbRelative);t.attackDuration=n(A.modulatedGenerators[i.attackVolEnv]);let s=A.modulatedGenerators[i.decayVolEnv],r=(60-A.targetKey)*A.modulatedGenerators[i.keyNumToVolEnvDecay],B=o/zA;t.decayDuration=n(s+r)*B,t.releaseDuration=n(A.modulatedGenerators[i.releaseVolEnv]),t.delayEnd=n(A.modulatedGenerators[i.delayVolEnv]),t.attackEnd=t.attackDuration+t.delayEnd;let a=(60-A.targetKey)*A.modulatedGenerators[i.keyNumToVolEnvHold];if(t.holdEnd=n(A.modulatedGenerators[i.holdVolEnv]+a)+t.attackEnd,t.decayEnd=t.decayDuration+t.holdEnd,t.state===0&&t.attackEnd===0&&(t.state=2),A.isInRelease){let g=Math.max(0,Math.min(zA,t.sustainDbRelative)),d=g/zA;switch(t.decayDuration=n(s+r)*d,t.state){case 0:t.releaseStartDb=zA;break;case 1:let c=1-(t.attackEnd-t.releaseStartTimeSamples)/t.attackDuration;t.releaseStartDb=20*Math.log10(c)*-1;break;case 2:t.releaseStartDb=0;break;case 3:t.releaseStartDb=(1-(t.decayEnd-t.releaseStartTimeSamples)/t.decayDuration)*g;break;case 4:t.releaseStartDb=g;break}t.releaseStartDb=Math.max(0,Math.min(t.releaseStartDb,zA)),t.releaseStartDb>=Pn&&(A.finished=!0),t.currentReleaseGain=re(t.releaseStartDb);let E=(zA-t.releaseStartDb)/zA;t.releaseDuration*=E}}static apply(A,t,n,o){let s=A.volumeEnvelope,r=n/10,B=o;if(A.isInRelease){let g=s.currentSampleTime-s.releaseStartTimeSamples;if(g>=s.releaseDuration){for(let E=0;E<t.length;E++)t[E]=0;A.finished=!0;return}let d=zA-s.releaseStartDb;for(let E=0;E<t.length;E++){s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B;let c=g/s.releaseDuration*d+s.releaseStartDb;s.currentReleaseGain=s.attenuation*re(c+r),t[E]*=s.currentReleaseGain,s.currentSampleTime++,g++}s.currentReleaseGain<=ri&&(A.finished=!0);return}let a=0;switch(s.state){case 0:for(;s.currentSampleTime<s.delayEnd;)if(s.currentAttenuationDb=zA,t[a]=0,s.currentSampleTime++,++a>=t.length)return;s.state++;case 1:for(;s.currentSampleTime<s.attackEnd;){s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B;let g=1-(s.attackEnd-s.currentSampleTime)/s.attackDuration;if(t[a]*=g*s.attenuation*re(r),s.currentAttenuationDb=0,s.currentSampleTime++,++a>=t.length)return}s.state++;case 2:for(;s.currentSampleTime<s.holdEnd;)if(s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B,t[a]*=s.attenuation*re(r),s.currentAttenuationDb=0,s.currentSampleTime++,++a>=t.length)return;s.state++;case 3:for(;s.currentSampleTime<s.decayEnd;)if(s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B,s.currentAttenuationDb=(1-(s.decayEnd-s.currentSampleTime)/s.decayDuration)*s.sustainDbRelative,t[a]*=s.attenuation*re(s.currentAttenuationDb+r),s.currentSampleTime++,++a>=t.length)return;s.state++;case 4:for(s.canEndOnSilentSustain&&s.sustainDbRelative>=Pn&&(A.finished=!0);;)if(s.attenuation+=(s.attenuationTargetGain-s.attenuation)*B,t[a]*=s.attenuation*re(s.sustainDbRelative+r),s.currentAttenuationDb=s.sustainDbRelative,s.currentSampleTime++,++a>=t.length)return}}};function hs(e){let A=e.messageData,t=e.channelNumber,n;if(t>=0&&(n=this.workletProcessorChannels[t],n===void 0)){H(`Trying to access channel ${t} which does not exist... ignoring!`);return}switch(e.messageType){case cA.noteOn:n.noteOn(...A);break;case cA.noteOff:n.noteOff(A);break;case cA.pitchWheel:n.pitchWheel(...A);break;case cA.ccChange:n.controllerChange(...A);break;case cA.customcCcChange:n.setCustomController(A[0],A[1]),n.updateChannelTuning();break;case cA.killNote:n.killNote(A);break;case cA.programChange:this.programChange(t,A[0],A[1]);break;case cA.channelPressure:n.channelPressure(A);break;case cA.polyPressure:n.polyPressure(...A);break;case cA.ccReset:t===se?this.resetAllControllers():n.resetControllers();break;case cA.systemExclusive:this.systemExclusive(A[0],A[1]);break;case cA.setChannelVibrato:if(t===se)for(let r=0;r<this.workletProcessorChannels.length;r++){let B=this.workletProcessorChannels[r];A.rate===-1?B.disableAndLockGSNRPN():B.setVibrato(A.depth,A.rate,A.delay)}else A.rate===-1?n.disableAndLockGSNRPN():n.setVibrato(A.depth,A.rate,A.delay);break;case cA.stopAll:t===se?this.stopAllChannels(A===1):n.stopAllNotes(A===1);break;case cA.killNotes:this.voiceKilling(A);break;case cA.muteChannel:n.muteChannel(A);break;case cA.addNewChannel:this.createWorkletChannel(!0);break;case cA.debugMessage:this.debugMessage();break;case cA.setMasterParameter:let o=A[0],s=A[1];switch(o){case yt.masterPan:this.setMasterPan(s);break;case yt.mainVolume:this.setMasterGain(s);break;case yt.voicesCap:this.voiceCap=s;break;case yt.interpolationType:this.interpolationType=s;break}break;case cA.setDrums:n.setDrums(A);break;case cA.transpose:t===se?this.transposeAllChannels(A[0],A[1]):n.transposeChannel(A[0],A[1]);break;case cA.highPerformanceMode:this.highPerformanceMode=A;break;case cA.lockController:A[0]===se?n.lockPreset=A[1]:n.lockedControllers[A[0]]=A[1];break;case cA.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case cA.soundFontManager:try{this.soundfontManager.handleMessage(A[0],A[1])}catch(r){this.post({messageType:JA.soundfontError,messageData:r})}this.clearSoundFont(!0,!1);break;case cA.keyModifierManager:this.keyModifierManager.handleMessage(A[0],A[1]);break;case cA.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case cA.setLogLevel:wo(A[0],A[1],A[2],A[3]);break;case cA.setEffectsGain:this.reverbGain=A[0],this.chorusGain=A[1];break;case cA.destroyWorklet:this.alive=!1,this.destroyWorkletProcessor();break;default:H("Unrecognized event:",A);break}}function ls(e,A){this.enableEventSystem&&this.post({messageType:JA.eventCall,messageData:{eventName:e,eventData:A}})}function cs(){if(!this.enableEventSystem)return;let e=this.workletProcessorChannels.map(A=>({voicesAmount:A.voices.length,pitchBend:A.midiControllers[GA+z.pitchWheel],pitchBendRangeSemitones:A.midiControllers[GA+z.pitchWheelRange]/128,isMuted:A.isMuted,isDrum:A.drumChannel,transposition:A.channelTransposeKeyShift+A.customControllers[lA.channelTransposeFine]/100}));this.post({messageType:JA.channelProperties,messageData:e})}function ii(e,A,t){let n=e,o=A<<7|t;return e===127&&A===127&&t===127?{midiNote:-1,centTuning:null}:{midiNote:n,centTuning:o*.0061}}var Vn={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};function Qs(e,A=0){let t=e[0];if(!(this.deviceID!==se&&e[1]!==127&&this.deviceID!==e[1]))switch(t){default:H(`%cUnrecognized SysEx: %c${TA(e)}`,I.warn,I.unrecognized);break;case 126:case 127:switch(e[2]){case 4:let o;switch(e[3]){case 1:let s=e[5]<<7|e[4];this.setMIDIVolume(s/16384),y(`%cMaster Volume. Volume: %c${s}`,I.info,I.value);break;case 2:let B=((e[5]<<7|e[4])-8192)/8192;this.setMasterPan(B),y(`%cMaster Pan. Pan: %c${B}`,I.info,I.value);break;case 3:let a=(e[5]<<7|e[6])-8192;o=Math.floor(a/81.92),this.setMasterTuning(o),y(`%cMaster Fine Tuning. Cents: %c${o}`,I.info,I.value);break;case 4:o=(e[5]-64)*100,this.setMasterTuning(o),y(`%cMaster Coarse Tuning. Cents: %c${o}`,I.info,I.value);break;default:H(`%cUnrecognized MIDI Device Control Real-time message: %c${TA(e)}`,I.warn,I.unrecognized)}break;case 9:e[3]===1?(y("%cGM system on",I.info),this.system="gm"):e[3]===3?(y("%cGM2 system on",I.info),this.system="gm2"):(y("%cGM system off, defaulting to GS",I.info),this.system="gs");break;case 8:switch(e[3]){case 2:case 7:let s=4;e[3]===7&&s++;let r=e[s++],B=e[s++];for(let g=0;g<B;g++)this.tunings[r][e[s++]]=ii(e[s++],e[s++],e[s++]);y(`%cSingle Note Tuning. Program: %c${r}%c Keys affected: %c${B}`,I.info,I.recognized,I.info,I.recognized);break;case 9:case 8:let a=new Int8Array(12);if(e[3]===8)for(let g=0;g<12;g++)a[g]=e[7+g]-64;else for(let g=0;g<24;g+=2){let d=(e[7+g]<<7|e[8+g])-8192;a[g/2]=Math.floor(d/81.92)}(e[4]&1)===1&&this.workletProcessorChannels[14+A].setOctaveTuning(a),(e[4]>>1&1)===1&&this.workletProcessorChannels[15+A].setOctaveTuning(a);for(let g=0;g<7;g++)(e[5]>>g&1)===1&&this.workletProcessorChannels[7+g+A].setOctaveTuning(a);for(let g=0;g<7;g++)(e[6]>>g&1)===1&&this.workletProcessorChannels[g+A].setOctaveTuning(a);y(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${a.join(" ")}`,I.info,I.value);break;default:H(`%cUnrecognized MIDI Tuning standard message: %c${TA(e)}`,I.warn,I.unrecognized);break}break;default:H(`%cUnrecognized MIDI Realtime/non realtime message: %c${TA(e)}`,I.warn,I.unrecognized)}break;case 65:let n=function(){H(`%cUnrecognized Roland %cGS %cSysEx: %c${TA(e)}`,I.warn,I.recognized,I.warn,I.unrecognized)};if(e[2]===66&&e[3]===18){let o=e[7];if(e[6]===127){o===0?(y("%cGS Reset received!",I.info),this.resetAllControllers(!1),this.system="gs"):o===127&&(y("%cGS system off, switching to GM2",I.info),this.resetAllControllers(!1),this.system="gm2");return}else if(e[4]===64){if((e[5]&16)>0){let s=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A,r=this.workletProcessorChannels[s];switch(e[6]){default:n();break;case 21:let B=o>0&&e[5]>>4;r.setDrums(B),y(`%cChannel %c${s}%c ${B?"is now a drum channel":"now isn't a drum channel"}%c via: %c${TA(e)}`,I.info,I.value,I.recognized,I.info,I.value);return;case 22:let a=o-64;r.transposeChannel(a),y(`%cChannel %c${s}%c pitch shift. Semitones %c${a}%c, with %c${TA(e)}`,I.info,I.recognized,I.info,I.value,I.info,I.value);return;case 28:let g=o;g===0?(r.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${s}`,I.info,I.recognized,I.info,I.value)):(r.randomPan=!1,r.controllerChange(p.pan,g));break;case 33:r.controllerChange(p.chorusDepth,o);break;case 34:r.controllerChange(p.reverbDepth,o);break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:let d=e.length-9,E=new Int8Array(12);for(let h=0;h<d;h++)E[h]=e[h+7]-64;r.setOctaveTuning(E);let c=o-64;y(`%cChannel %c${s}%c octave scale tuning. Cents %c${E.join(" ")}%c, with %c${TA(e)}`,I.info,I.recognized,I.info,I.value,I.info,I.value),r.setTuning(c);break}return}else if(e[5]===0&&e[6]===6){y(`%cRoland GS Master Pan set to: %c${o}%c with: %c${TA(e)}`,I.info,I.value,I.info,I.value),this.setMasterPan((o-64)/64);return}else if(e[5]===0&&e[6]===5){let s=o-64;y(`%cRoland GS Master Key-Shift set to: %c${s}%c with: %c${TA(e)}`,I.info,I.value,I.info,I.value),this.setMasterTuning(s*100);return}else if(e[5]===0&&e[6]===4){y(`%cRoland GS Master Volume set to: %c${o}%c with: %c${TA(e)}`,I.info,I.value,I.info,I.value),this.setMIDIVolume(o/127);return}}n();return}else if(e[2]===69&&e[3]===18){if(e[4]===16&&e[6]===0)if(e[5]===0){let o=new Uint8Array(e.slice(7,e.length-2));this.callEvent("synthdisplay",{displayData:o,displayType:Vn.SoundCanvasText})}else if(e[5]===1){let o=new Uint8Array(e.slice(7,e.length-3));this.callEvent("synthdisplay",{displayData:o,displayType:Vn.SoundCanvasDotDisplay}),y(`%cRoland SC Display Dot Matrix via: %c${TA(e)}`,I.info,I.value)}else n()}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),y(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${TA(e)}`,I.info,I.value,I.info,I.value);return}else{H(`%cUnrecognized Roland SysEx: %c${TA(e)}`,I.warn,I.unrecognized);return}break;case 67:if(e[2]===76)if(e[3]===0&&e[4]===0)switch(e[5]){case 4:let o=e[6];this.setMIDIVolume(o/127),y(`%cXG master volume. Volume: %c${o}`,I.info,I.recognized);break;case 6:let s=e[6]-64;this.transposeAllChannels(s),y(`%cXG master transpose. Volume: %c${s}`,I.info,I.recognized);break;case 126:y("%cXG system on",I.info),this.resetAllControllers(!1),this.system="xg";break}else if(e[3]===8){if(this.system!=="xg")return;let o=e[4]+A;if(o>=this.workletProcessorChannels.length)return;let s=this.workletProcessorChannels[o],r=e[6];switch(e[5]){case 1:s.controllerChange(p.bankSelect,r);break;case 2:s.controllerChange(p.lsbForControl0BankSelect,r);break;case 3:s.programChange(r);break;case 8:if(s.drumChannel)return;let B=r-64;s.channelTransposeKeyShift=B;break;case 11:s.controllerChange(p.mainVolume,r);break;case 14:let a=r;a===0?(s.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${o}`,I.info,I.recognized,I.info,I.value)):s.controllerChange(p.pan,a);break;case 19:s.controllerChange(p.reverbDepth,r);break;case 18:s.controllerChange(p.chorusDepth,r);break;default:H(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,I.warn,I.unrecognized)}}else if(e[3]===6&&e[4]===0){let o=new Uint8Array(e.slice(5,e.length-1));this.callEvent("synthdisplay",{displayData:o,displayType:Vn.XGText})}else this.system==="xg"&&H(`%cUnrecognized Yamaha XG SysEx: %c${TA(e)}`,I.warn,I.unrecognized);else this.system==="xg"&&H(`%cUnrecognized Yamaha SysEx: %c${TA(e)}`,I.warn,I.unrecognized);break}}function ds(e){this.midiVolume=e,this.setMasterPan(this.pan)}function us(e){this.masterGain=e*Zn,this.setMasterPan(this.pan)}function fs(e){this.pan=e,e=e/2+.5,this.panLeft=1-e,this.panRight=e}var Dt={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};function ms(){let e=4;for(let n of this.instruments)e+=n.instrumentZones.reduce((o,s)=>(s.generators=s.generators.filter(r=>r.generatorType!==i.sampleID&&r.generatorType!==i.keyRange&&r.generatorType!==i.velRange),(s.velRange.max!==127||s.velRange.min!==0)&&s.generators.unshift(new U(i.velRange,s.velRange.max<<8|Math.max(s.velRange.min,0),!1)),(s.keyRange.max!==127||s.keyRange.min!==0)&&s.generators.unshift(new U(i.keyRange,s.keyRange.max<<8|Math.max(s.keyRange.min,0),!1)),s.isGlobal||s.generators.push(new U(i.sampleID,this.samples.indexOf(s.sample),!1)),s.generators.length*4+o),0);let A=new L(e),t=0;for(let n of this.instruments)for(let o of n.instrumentZones){o.generatorZoneStartIndex=t;for(let s of o.generators)T(A,s.generatorType),T(A,s.generatorValue),t++}return AA(A,0),uA(new hA("igen",A.length,A))}function ps(e,A,t,n,o){let s=this.samples.map((g,d)=>{t&&g.compressSample(n,o);let E=g.getRawData();return y(`%cEncoded sample %c${d}. ${g.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${g.isCompressed}%c.`,I.info,I.recognized,I.info,I.recognized,I.info,g.isCompressed?I.recognized:I.unrecognized,I.info),E}),r=this.samples.reduce((g,d,E)=>g+s[E].length+46,0),B=new L(r);this.samples.forEach((g,d)=>{let E=s[d],c,h,m=E.length;g.isCompressed?(c=B.currentIndex,h=c+E.length):(c=B.currentIndex/2,h=c+E.length/2,m+=46),e.push(c),B.set(E,B.currentIndex),B.currentIndex+=m,A.push(h)});let a=uA(new hA("smpl",B.length,B),new L([115,100,116,97]));return uA(new hA("LIST",a.length,a))}function ys(e,A){let n=new L(46*(this.samples.length+1));return this.samples.forEach((o,s)=>{UA(n,o.sampleName,20);let r=e[s];AA(n,r);let B=A[s];AA(n,B);let a=o.sampleLoopStartIndex+r,g=o.sampleLoopEndIndex+r;o.isCompressed&&(a-=r,g-=r),AA(n,a),AA(n,g),AA(n,o.sampleRate),n[n.currentIndex++]=o.samplePitch,n[n.currentIndex++]=o.samplePitchCorrection,T(n,o.sampleLink),T(n,o.sampleType)}),UA(n,"EOS",46),uA(new hA("shdr",n.length,n))}function Ss(){let e=10;for(let n of this.instruments)e+=n.instrumentZones.reduce((o,s)=>s.modulators.length*10+o,0);let A=new L(e),t=0;for(let n of this.instruments)for(let o of n.instrumentZones){o.modulatorZoneStartIndex=t;for(let s of o.modulators)T(A,s.sourceEnum),T(A,s.modulatorDestination),T(A,s.transformAmount),T(A,s.secondarySourceEnum),T(A,s.transformType),t++}return Pe(A,0,10),uA(new hA("imod",A.length,A))}function Ds(){let e=this.instruments.reduce((s,r)=>r.instrumentZones.length*4+s,4),A=new L(e),t=0,n=0,o=0;for(let s of this.instruments){s.instrumentZoneIndex=t;for(let r of s.instrumentZones)r.zoneID=t,T(A,n),T(A,o),n+=r.generators.length,o+=r.modulators.length,t++}return T(A,n),T(A,o),uA(new hA("ibag",A.length,A))}function ks(){let e=this.instruments.length*22+22,A=new L(e),t=0,n=0;for(let o of this.instruments)UA(A,o.instrumentName,20),T(A,t),t+=o.instrumentZones.length,o.instrumentID=n,n++;return UA(A,"EOI",20),T(A,t),uA(new hA("inst",A.length,A))}function ws(){let e=4;for(let n of this.presets)e+=n.presetZones.reduce((o,s)=>(s.generators=s.generators.filter(r=>r.generatorType!==i.instrument&&r.generatorType!==i.keyRange&&r.generatorType!==i.velRange),(s.velRange.max!==127||s.velRange.min!==0)&&s.generators.unshift(new U(i.velRange,s.velRange.max<<8|Math.max(s.velRange.min,0),!1)),(s.keyRange.max!==127||s.keyRange.min!==0)&&s.generators.unshift(new U(i.keyRange,s.keyRange.max<<8|Math.max(s.keyRange.min,0),!1)),s.isGlobal||s.generators.push(new U(i.instrument,this.instruments.indexOf(s.instrument),!1)),s.generators.length*4+o),0);let A=new L(e),t=0;for(let n of this.presets)for(let o of n.presetZones){o.generatorZoneStartIndex=t;for(let s of o.generators)T(A,s.generatorType),T(A,s.generatorValue);t+=o.generators.length}return T(A,0),T(A,0),uA(new hA("pgen",A.length,A))}function Fs(){let e=10;for(let n of this.presets)e+=n.presetZones.reduce((o,s)=>s.modulators.length*10+o,0);let A=new L(e),t=0;for(let n of this.presets)for(let o of n.presetZones){o.modulatorZoneStartIndex=t;for(let s of o.modulators)T(A,s.sourceEnum),T(A,s.modulatorDestination),T(A,s.transformAmount),T(A,s.secondarySourceEnum),T(A,s.transformType),t++}return Pe(A,0,10),uA(new hA("pmod",A.length,A))}function Rs(){let e=this.presets.reduce((s,r)=>r.presetZones.length*4+s,4),A=new L(e),t=0,n=0,o=0;for(let s of this.presets){s.presetZoneStartIndex=t;for(let r of s.presetZones)r.zoneID=t,T(A,n),T(A,o),n+=r.generators.length,o+=r.modulators.length,t++}return T(A,n),T(A,o),uA(new hA("pbag",A.length,A))}function Gs(){let e=this.presets.length*38+38,A=new L(e),t=0;for(let n of this.presets)UA(A,n.presetName,20),T(A,n.program),T(A,n.bank),T(A,t),AA(A,n.library),AA(A,n.genre),AA(A,n.morphology),t+=n.presetZones.length;return UA(A,"EOP",20),T(A,0),T(A,0),T(A,t),AA(A,0),AA(A,0),AA(A,0),uA(new hA("phdr",A.length,A))}var ai={compress:!1,compressionQuality:.5,compressionFunction:void 0};function xs(e=ai){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");FA("%cSaving soundfont...",I.info),y(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,I.info,I.recognized,I.info,I.recognized),y("%cWriting INFO...",I.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0");for(let[b,x]of Object.entries(this.soundFontInfo))if(b==="ifil"||b==="iver"){let C=parseInt(x.split(".")[0]),F=parseInt(x.split(".")[1]),J=new L(4);T(J,C),T(J,F),A.push(uA(new hA(b,4,J)))}else if(b==="DMOD")A.push(uA(new hA(b,x.length,x)));else{let C=new L(x.length);UA(C,x),A.push(uA(new hA(b,x.length,C)))}let t=wA([new L([73,78,70,79]),...A]),n=uA(new hA("LIST",t.length,t));y("%cWriting SDTA...",I.info);let o=[],s=[],r=ps.call(this,o,s,e?.compress,e?.compressionQuality??.5,e.compressionFunction);y("%cWriting PDTA...",I.info),y("%cWriting SHDR...",I.info);let B=ys.call(this,o,s);y("%cWriting IGEN...",I.info);let a=ms.call(this);y("%cWriting IMOD...",I.info);let g=Ss.call(this);y("%cWriting IBAG...",I.info);let d=Ds.call(this);y("%cWriting INST...",I.info);let E=ks.call(this),c=ws.call(this);y("%cWriting PMOD...",I.info);let h=Fs.call(this);y("%cWriting PBAG...",I.info);let m=Rs.call(this);y("%cWriting PHDR...",I.info);let u=Gs.call(this),S=wA([new L([112,100,116,97]),u,m,h,c,E,d,g,a,B]),w=uA(new hA("LIST",S.length,S));y("%cWriting the output file...",I.info);let D=wA([new L([115,102,98,107]),n,r,w]),M=uA(new hA("RIFF",D.length,D));return y(`%cSaved succesfully! Final file size: %c${M.length}`,I.info,I.recognized),P(),M}var kt=class{velRange={min:-1,max:127};keyRange={min:-1,max:127};isGlobal=!1;generators=[];modulators=[];get hasKeyRange(){return this.keyRange.min!==-1}get hasVelRange(){return this.velRange.min!==-1}getGeneratorValue(A,t){return this.generators.find(n=>n.generatorType===A)?.generatorValue??t}};var KA=class extends kt{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},be=class extends kt{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var Ii=new Set([i.velRange,i.keyRange,i.instrument,i.exclusiveClass,i.endOper,i.sampleModes,i.startloopAddrsOffset,i.startloopAddrsCoarseOffset,i.endloopAddrsOffset,i.endloopAddrsCoarseOffset,i.startAddrsOffset,i.startAddrsCoarseOffset,i.endAddrOffset,i.endAddrsCoarseOffset,i.initialAttenuation,i.fineTune,i.coarseTune,i.keyNumToVolEnvHold,i.keyNumToVolEnvDecay,i.keyNumToModEnvHold,i.keyNumToModEnvDecay]);function Ms(e,A=!0){function t(E,c){E.push(...c.filter(h=>!E.find(m=>m.generatorType===h.generatorType)))}function n(E,c){return{min:Math.max(E.min,c.min),max:Math.min(E.max,c.max)}}function o(E,c){E.push(...c.filter(h=>!E.find(m=>W.isIdentical(h,m))))}let s=[],r=[],B=[],a={min:0,max:127},g={min:0,max:127},d=e.presetZones.find(E=>E.isGlobal);d&&(r.push(...d.generators),B.push(...d.modulators),a=d.keyRange,g=d.velRange);for(let E of e.presetZones){if(E.isGlobal)continue;let c=E.keyRange;E.hasKeyRange||(c=a);let h=E.velRange;E.hasVelRange||(h=g);let m=E.generators.map(C=>new U(C.generatorType,C.generatorValue));t(m,r);let u=[...E.modulators];o(u,B);let S=E.instrument.instrumentZones,w=[],D=[],M={min:0,max:127},b={min:0,max:127},x=S.find(C=>C.isGlobal);x&&(w.push(...x.generators),D.push(...x.modulators),M=x.keyRange,b=x.velRange);for(let C of S){if(C.isGlobal)continue;let F=C.keyRange;C.hasKeyRange||(F=M);let J=C.velRange;if(C.hasVelRange||(J=b),F=n(F,c),J=n(J,h),F.max<F.min||J.max<J.min)continue;let aA=C.generators.map(X=>new U(X.generatorType,X.generatorValue));t(aA,w);let sA=[...C.modulators];o(sA,D);let K=[...sA];for(let X of u){let rA=K.findIndex(BA=>W.isIdentical(X,BA));rA!==-1?K[rA]=K[rA].sumTransform(X):K.push(X)}let j=aA.map(X=>new U(X.generatorType,X.generatorValue));for(let X of m){if(X.generatorType===i.velRange||X.generatorType===i.keyRange||X.generatorType===i.instrument||X.generatorType===i.endOper||X.generatorType===i.sampleModes)continue;let rA=aA.findIndex(BA=>BA.generatorType===X.generatorType);if(rA!==-1){let BA=j[rA].generatorValue+X.generatorValue;j[rA]=new U(X.generatorType,BA)}else{let BA=Z[X.generatorType].def+X.generatorValue;j.push(new U(X.generatorType,BA))}}j=j.filter(X=>X.generatorType!==i.sampleID&&X.generatorType!==i.keyRange&&X.generatorType!==i.velRange&&X.generatorType!==i.endOper&&X.generatorType!==i.instrument&&X.generatorValue!==Z[X.generatorType].def);let EA=new KA;EA.keyRange=F,EA.velRange=J,EA.keyRange.min===0&&EA.keyRange.max===127&&(EA.keyRange.min=-1),EA.velRange.min===0&&EA.velRange.max===127&&(EA.velRange.min=-1),EA.isGlobal=!1,EA.sample=C.sample,EA.generators=j,EA.modulators=K,s.push(EA)}}if(A){let E=new KA;E.isGlobal=!0;for(let m=0;m<58;m++){if(Ii.has(m))continue;let u={},S=Z[m]?.def||0;u[S]=0;for(let w of s){let D=w.generators.find(x=>x.generatorType===m);if(D){let x=D.generatorValue;u[x]===void 0?u[x]=1:u[x]++}else u[S]++;let M;switch(m){default:continue;case i.decayVolEnv:M=i.keyNumToVolEnvDecay;break;case i.holdVolEnv:M=i.keyNumToVolEnvHold;break;case i.decayModEnv:M=i.keyNumToModEnvDecay;break;case i.holdModEnv:M=i.keyNumToModEnvHold}if(w.generators.find(x=>x.generatorType===M)!==void 0){u={};break}}if(Object.keys(u).length>0){let w=Object.entries(u).reduce((M,b)=>M[1]<b[1]?b:M,[0,0]),D=parseInt(w[0]);D!==S&&E.generators.push(new U(m,D)),s.forEach(M=>{let b=M.generators.findIndex(x=>x.generatorType===m);b!==-1?M.generators[b].generatorValue===D&&M.generators.splice(b,1):D!==S&&M.generators.push(new U(m,S))})}}let h=s.find(m=>!m.isGlobal).modulators.map(m=>W.copy(m));for(let m of h){let u=!0;for(let S of s){if(S.isGlobal||!u)continue;S.modulators.find(D=>W.isIdentical(D,m))||(u=!1)}if(u===!0){E.modulators.push(W.copy(m));for(let S of s){let w=S.modulators.find(D=>W.isIdentical(D,m));w.transformAmount===m.transformAmount&&S.modulators.splice(S.modulators.indexOf(w),1)}}}s.splice(0,0,E)}return s}var Ns=20;function $t(e,A,t,n,o,s,r){let B=r===0?0:1,a=new L(Ns+B*16);AA(a,Ns),T(a,A),T(a,t);let g=n*.4,d=Math.floor(g*-65536);AA(a,d),AA(a,2);let E=s-o,c=0;switch(r){default:case 0:B=0;break;case 1:c=0,B=1;break;case 3:c=1,B=1}return AA(a,B),B===1&&(AA(a,16),AA(a,c),AA(a,o),AA(a,E)),_("wsmp",a)}var O={none:0,modLfo:1,velocity:2,keyNum:3,volEnv:4,modEnv:5,pitchWheel:6,polyPressure:7,channelPressure:8,vibratoLfo:9,modulationWheel:129,volume:135,pan:138,expression:139,chorus:219,reverb:221,pitchWheelRange:256,fineTune:257,coarseTune:258},An=new W(219,0,i.reverbEffectsSend,1e3,0),en=new W(221,0,i.chorusEffectsSend,1e3,0),tn=new W(129,0,i.vibLfoToPitch,0,0),nn=new W(13,0,i.vibLfoToPitch,0,0);var G={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var wt=class{source;control;destination;scale;transform;constructor(A,t,n,o,s){this.source=A,this.control=t,this.destination=n,this.scale=o,this.transform=s}writeArticulator(){let A=new L(12);return T(A,this.source),T(A,this.control),T(A,this.destination),T(A,this.transform),AA(A,this.scale<<16),A}};function bs(e,A){if(e)switch(A){default:return;case p.modulationWheel:return O.modulationWheel;case p.mainVolume:return O.volume;case p.pan:return O.pan;case p.expressionController:return O.expression;case p.chorusDepth:return O.chorus;case p.reverbDepth:return O.reverb}else switch(A){default:return;case z.noteOnKeyNum:return O.keyNum;case z.noteOnVelocity:return O.velocity;case z.noController:return O.none;case z.polyPressure:return O.polyPressure;case z.channelPressure:return O.channelPressure;case z.pitchWheel:return O.pitchWheel;case z.pitchWheelRange:return O.pitchWheelRange}}function Ls(e,A){switch(e){default:return;case i.initialAttenuation:return{dest:G.gain,amount:-A};case i.fineTune:return G.pitch;case i.pan:return G.pan;case i.keyNum:return G.keyNum;case i.reverbEffectsSend:return G.reverbSend;case i.chorusEffectsSend:return G.chorusSend;case i.freqModLFO:return G.modLfoFreq;case i.delayModLFO:return G.modLfoDelay;case i.delayVibLFO:return G.vibLfoDelay;case i.freqVibLFO:return G.vibLfoFreq;case i.delayVolEnv:return G.volEnvDelay;case i.attackVolEnv:return G.volEnvAttack;case i.holdVolEnv:return G.volEnvHold;case i.decayVolEnv:return G.volEnvDecay;case i.sustainVolEnv:return{dest:G.volEnvSustain,amount:1e3-A};case i.releaseVolEnv:return G.volEnvRelease;case i.delayModEnv:return G.modEnvDelay;case i.attackModEnv:return G.modEnvAttack;case i.holdModEnv:return G.modEnvHold;case i.decayModEnv:return G.modEnvDecay;case i.sustainModEnv:return{dest:G.modEnvSustain,amount:1e3-A};case i.releaseModEnv:return G.modEnvRelease;case i.initialFilterFc:return G.filterCutoff;case i.initialFilterQ:return G.filterQ}}function Us(e,A){switch(e){default:return;case i.modEnvToFilterFc:return{source:O.modEnv,dest:G.filterCutoff,amt:A,isBipolar:!1};case i.modEnvToPitch:return{source:O.modEnv,dest:G.pitch,amt:A,isBipolar:!1};case i.modLfoToFilterFc:return{source:O.modLfo,dest:G.filterCutoff,amt:A,isBipolar:!0};case i.modLfoToVolume:return{source:O.modLfo,dest:G.gain,amt:A,isBipolar:!0};case i.modLfoToPitch:return{source:O.modLfo,dest:G.pitch,amt:A,isBipolar:!0};case i.vibLfoToPitch:return{source:O.vibratoLfo,dest:G.pitch,amt:A,isBipolar:!0};case i.keyNumToVolEnvHold:return{source:O.keyNum,dest:G.volEnvHold,amt:A,isBipolar:!0};case i.keyNumToVolEnvDecay:return{source:O.keyNum,dest:G.volEnvDecay,amt:A,isBipolar:!0};case i.keyNumToModEnvHold:return{source:O.keyNum,dest:G.modEnvHold,amt:A,isBipolar:!0};case i.keyNumToModEnvDecay:return{source:O.keyNum,dest:G.modEnvDecay,amt:A,isBipolar:!0};case i.scaleTuning:return{source:O.keyNum,dest:G.pitch,amt:A*128,isBipolar:!1}}}function Ts(e){let A=Ls(e.generatorType,e.generatorValue),t=A,n=0,o=e.generatorValue;A?.amount!==void 0&&(o=A.amount,t=A.dest);let s=Us(e.generatorType,e.generatorValue);if(s!==void 0)o=s.amt,t=s.dest,n=s.source;else if(t===void 0){H(`Invalid generator type: ${e.generatorType}`);return}return new wt(n,0,t,o,0)}function vs(e){if(e.transformType!==0){H("Other transform types are not supported.");return}let A=bs(e.sourceUsesCC,e.sourceIndex),t=e.sourceCurveType,n=e.sourcePolarity,o=e.sourceDirection;if(A===void 0){H(`Invalid source: ${e.sourceIndex}, CC: ${e.sourceUsesCC}`);return}e.modulatorDestination===i.initialAttenuation&&(o=o===1?0:1);let s=bs(e.secSrcUsesCC,e.secSrcIndex),r=e.secSrcCurveType,B=e.secSrcPolarity,a=e.secSrcDirection;if(s===void 0){H(`Invalid secondary source: ${e.secSrcIndex}, CC: ${e.secSrcUsesCC}`);return}let g=Ls(e.modulatorDestination,e.transformAmount),d=g,E=e.transformAmount;g?.dest!==void 0&&(d=g.dest,E=g.amount);let c=Us(e.modulatorDestination,e.transformAmount);if(c!==void 0)E=c.amt,s=A,r=t,B=n,a=o,t=RA.linear,n=c.isBipolar?1:0,o=0,A=c.source,d=c.dest;else if(d===void 0){H(`Invalid destination: ${e.modulatorDestination}`);return}let h=0;return h|=r<<4,h|=B<<8,h|=a<<9,h|=t,h|=n<<14,h|=o<<15,new wt(A,s,d,E,h)}var gi=new Set([i.sampleModes,i.initialAttenuation,i.keyRange,i.velRange,i.sampleID,i.fineTune,i.coarseTune,i.startAddrsOffset,i.startAddrsCoarseOffset,i.endAddrOffset,i.endAddrsCoarseOffset,i.startloopAddrsOffset,i.startloopAddrsCoarseOffset,i.endloopAddrsOffset,i.endloopAddrsCoarseOffset,i.overridingRootKey,i.exclusiveClass]);function on(e){for(let s=0;s<e.generators.length;s++){let r=e.generators[s];(r.generatorType===i.delayVolEnv||r.generatorType===i.attackVolEnv||r.generatorType===i.holdVolEnv||r.generatorType===i.decayVolEnv||r.generatorType===i.releaseVolEnv||r.generatorType===i.delayModEnv||r.generatorType===i.attackModEnv||r.generatorType===i.holdModEnv||r.generatorType===i.decayModEnv)&&(e.generators[s]=new U(r.generatorType,Math.min(r.generatorValue,6386),!1))}for(let s=0;s<e.generators.length;s++){let r=e.generators[s],B;switch(r.generatorType){default:continue;case i.keyNumToVolEnvDecay:B=i.decayVolEnv;break;case i.keyNumToVolEnvHold:B=i.holdVolEnv;break;case i.keyNumToModEnvDecay:B=i.decayModEnv;break;case i.keyNumToModEnvHold:B=i.holdModEnv}let a=e.generators.find(m=>m.generatorType===B);if(a===void 0)continue;let g=r.generatorValue*-128,d=60/128*g,E=a.generatorValue-d,c=e.generators.indexOf(r),h=e.generators.indexOf(a);e.generators[h]=new U(B,E,!1),e.generators[c]=new U(r.generatorType,g,!1)}let A=e.generators.reduce((s,r)=>{if(gi.has(r.generatorType))return s;let B=Ts(r);return B!==void 0?(s.push(B),y("%cSucceeded converting to DLS Articulator!",I.recognized)):H("Failed converting to DLS Articulator!"),s},[]),t=e.modulators.reduce((s,r)=>{if(W.isIdentical(r,en,!0)||W.isIdentical(r,An,!0)||W.isIdentical(r,tn,!0)||W.isIdentical(r,nn,!0))return s;let B=vs(r);return B!==void 0?(s.push(B),y("%cSucceeded converting to DLS Articulator!",I.recognized)):H("Failed converting to DLS Articulator!"),s},[]);A.push(...t);let n=new L(8);AA(n,8),AA(n,A.length);let o=A.map(s=>s.writeArticulator());return _("art2",wA([n,...o]))}function Hs(e,A){let t=new L(12);T(t,Math.max(e.keyRange.min,0)),T(t,e.keyRange.max),T(t,Math.max(e.velRange.min,0)),T(t,e.velRange.max),T(t,0);let n=e.getGeneratorValue(i.exclusiveClass,0);T(t,n),T(t,0);let o=_("rgnh",t),s=e.getGeneratorValue(i.overridingRootKey,e.sample.samplePitch);e.getGeneratorValue(i.scaleTuning,A.getGeneratorValue(i.scaleTuning,100))===0&&e.keyRange.max-e.keyRange.min===0&&(s=e.keyRange.min);let B=$t(e.sample,s,e.getGeneratorValue(i.fineTune,0)+e.getGeneratorValue(i.coarseTune,0)*100+e.sample.samplePitchCorrection,e.getGeneratorValue(i.initialAttenuation,0),e.sample.sampleLoopStartIndex+e.getGeneratorValue(i.startloopAddrsOffset,0)+e.getGeneratorValue(i.startloopAddrsCoarseOffset,0)*32768,e.sample.sampleLoopEndIndex+e.getGeneratorValue(i.endloopAddrsOffset,0)+e.getGeneratorValue(i.endloopAddrsCoarseOffset,0)*32768,e.getGeneratorValue(i.sampleModes,0)),a=new L(12);T(a,0),T(a,0),AA(a,1),AA(a,this.samples.indexOf(e.sample));let g=_("wlnk",a),d=new L(0);if(e.modulators.length+e.generators.length>0){let E=on(e);d=_("lar2",E,!1,!0)}return _("rgn2",wA([o,B,g,d]),!1,!0)}function Ys(e){FA(`%cWriting %c${e.presetName}%c...`,I.info,I.recognized,I.info);let A=Ms(e),t=A.reduce((c,h)=>h.isGlobal?c:c+1,0),n=new L(12);AA(n,t);let o=(e.bank&127)<<8;e.bank===128&&(o|=1<<31),AA(n,o),AA(n,e.program&127);let s=_("insh",n),r=new L(0),B=A.find(c=>c.isGlobal===!0);if(B){let c=on(B);r=_("lar2",c,!1,!0)}let a=wA(A.reduce((c,h)=>(h.isGlobal||c.push(Hs.apply(this,[h,B])),c),[])),g=_("lrgn",a,!1,!0),d=_("INAM",Qe(e.presetName)),E=_("INFO",d,!1,!0);return P(),_("ins ",wA([s,g,r,E]),!1,!0)}function Js(){let e=wA(this.presets.map(A=>Ys.apply(this,[A])));return _("lins",e,!1,!0)}function Ks(e){let A=new L(18);T(A,1),T(A,1),AA(A,e.sampleRate),AA(A,e.sampleRate*2),T(A,2),T(A,16);let t=_("fmt ",A),n=1;e.sampleLoopStartIndex+Math.abs(e.getAudioData().length-e.sampleLoopEndIndex)<2&&(n=0);let o=$t(e,e.samplePitch,e.samplePitchCorrection,0,e.sampleLoopStartIndex,e.sampleLoopEndIndex,n),s=e.getAudioData(),r;if(e.isCompressed){let g=new Int16Array(s.length);for(let d=0;d<s.length;d++)g[d]=s[d]*32767;r=_("data",new L(g.buffer))}else r=_("data",e.getRawData());let B=_("INAM",Qe(e.sampleName)),a=_("INFO",B,!1,!0);return y(`%cSaved %c${e.sampleName}%c succesfully!`,I.recognized,I.value,I.recognized),_("wave",wA([t,o,r,a]),!1,!0)}function qs(){let e=0,A=[],t=this.samples.map(n=>{let o=Ks(n);return A.push(e),e+=o.length,o});return{data:_("wvpl",wA(t),!1,!0),indexes:A}}function Os(){FA("%cSaving DLS...",I.info);let e=new L(4);AA(e,this.presets.length);let A=_("colh",e);FA("%cWriting instruments...",I.info);let t=Js.apply(this);y("%cSuccess!",I.recognized),P(),FA("%cWriting WAVE samples...",I.info);let n=qs.apply(this),o=n.data,s=n.indexes;y("%cSucceeded!",I.recognized),P();let r=new L(8+4*s.length);AA(r,8),AA(r,s.length);for(let E of s)AA(r,E);let B=_("ptbl",r);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
15
+ Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let a=[];for(let[E,c]of Object.entries(this.soundFontInfo))E!=="ICMT"&&E!=="INAM"&&E!=="ICRD"&&E!=="IENG"&&E!=="ICOP"&&E!=="ISFT"&&E!=="ISBJ"||a.push(_(E,Qe(c),!0));let g=_("INFO",wA(a),!1,!0),d=new L(A.length+t.length+B.length+o.length+g.length+4);return UA(d,"DLS "),d.set(wA([A,t,B,o,g]),4),y("%cSaved succesfully!",I.recognized),P(),_("RIFF",d)}var Ci=48e3,Le=class{constructor(A,t,n,o,s,r,B,a){this.sampleName=A,this.sampleRate=t,this.samplePitch=n,this.samplePitchCorrection=o,this.sampleLink=s,this.sampleType=r,this.sampleLoopStartIndex=B,this.sampleLoopEndIndex=a,this.isCompressed=(r&16)>0,this.compressedData=void 0,this.useCount=0,this.sampleData=void 0}getRawData(){let A=new Uint8Array(this.sampleData.length*2);for(let t=0;t<this.sampleData.length;t++){let n=Math.floor(this.sampleData[t]*32768);A[t*2]=n&255,A[t*2+1]=n>>8&255}return A}resampleData(A){let t=this.getAudioData(),n=A/this.sampleRate,o=new Float32Array(Math.floor(t.length*n));for(let s=0;s<o.length;s++)o[s]=t[Math.floor(s*(1/n))];t=o,this.sampleRate=A,this.sampleLoopStartIndex=Math.floor(this.sampleLoopStartIndex*n),this.sampleLoopEndIndex=Math.floor(this.sampleLoopEndIndex*n),this.sampleData=t}compressSample(A,t){if(!this.isCompressed)try{let n=this.getAudioData();(this.sampleRate<8e3||this.sampleRate>96e3)&&(this.resampleData(Ci),n=this.getAudioData()),this.compressedData=t([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{H(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var Ue=class{constructor(){this.instrumentName="",this.instrumentZones=[],this._useCount=0}get useCount(){return this._useCount}addUseCount(){this._useCount++,this.instrumentZones.forEach(A=>A.useCount++)}removeUseCount(){this._useCount--;for(let A=0;A<this.instrumentZones.length;A++)this.safeDeleteZone(A)&&A--}deleteInstrument(){this.instrumentZones.forEach(A=>A.deleteZone()),this.instrumentZones.length=0}safeDeleteZone(A){return this.instrumentZones[A].useCount--,this.instrumentZones[A].useCount<1?(this.deleteZone(A),!0):!1}deleteZone(A){this.instrumentZones[A].deleteZone(),this.instrumentZones.splice(A,1)}};var Te=class{constructor(A){this.presetName="",this.program=0,this.bank=0,this.presetZones=[],this.sampleIDOffset=0,this.foundSamplesAndGenerators=[];for(let t=0;t<128;t++)this.foundSamplesAndGenerators[t]=[];this.library=0,this.genre=0,this.morphology=0,this.defaultModulators=A}deletePreset(){this.presetZones.forEach(A=>A.deleteZone()),this.presetZones.length=0}deleteZone(A){this.presetZones[A].deleteZone(),this.presetZones.splice(A,1)}preload(A,t){for(let n=A;n<t+1;n++)for(let o=0;o<128;o++)this.getSamplesAndGenerators(n,o).forEach(s=>{s.sample.isSampleLoaded||s.sample.getAudioData()})}preloadSpecific(A,t){this.getSamplesAndGenerators(A,t).forEach(n=>{n.sample.isSampleLoaded||n.sample.getAudioData()})}getSamplesAndGenerators(A,t){let n=this.foundSamplesAndGenerators[A][t];if(n)return n;if(this.presetZones.length<1)return[];function o(h,m){return m>=h.min&&m<=h.max}function s(h,m){h.push(...m.filter(u=>!h.find(S=>S.generatorType===u.generatorType)))}function r(h,m){h.push(...m.filter(u=>!h.find(S=>W.isIdentical(u,S))))}let B=[],a=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],g=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[],d=this.presetZones[0].isGlobal?this.presetZones[0].keyRange:{min:0,max:127},E=this.presetZones[0].isGlobal?this.presetZones[0].velRange:{min:0,max:127};return this.presetZones.filter(h=>o(h.hasKeyRange?h.keyRange:d,A)&&o(h.hasVelRange?h.velRange:E,t)&&!h.isGlobal).forEach(h=>{if(h.instrument.instrumentZones.length<1)return;let m=h.generators,u=h.modulators,S=h.instrument.instrumentZones[0],w=S.isGlobal?[...S.generators]:[],D=S.isGlobal?[...S.modulators]:[],M=S.isGlobal?S.keyRange:{min:0,max:127},b=S.isGlobal?S.velRange:{min:0,max:127};h.instrument.instrumentZones.filter(C=>o(C.hasKeyRange?C.keyRange:M,A)&&o(C.hasVelRange?C.velRange:b,t)&&!C.isGlobal).forEach(C=>{let F=[...C.generators],J=[...C.modulators];s(m,a),s(F,w),r(u,g),r(J,D),r(J,this.defaultModulators);let aA=[...J];for(let sA=0;sA<u.length;sA++){let K=u[sA],j=aA.findIndex(EA=>W.isIdentical(K,EA));j!==-1?aA[j]=aA[j].sumTransform(K):aA.push(K)}B.push({instrumentGenerators:F,presetGenerators:m,modulators:aA,sample:C.sample,sampleID:C.generators.find(sA=>sA.generatorType===i.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][t]=B,B}};var ve=class e{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=Vt.map(t=>W.copy(t)),A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}static mergeSoundBanks(...A){let t=A.shift(),n=t.presets;for(;A.length;)A.shift().presets.forEach(s=>{n.find(r=>r.bank===s.bank&&r.program===s.program)===void 0&&n.push(s)});return new e({presets:n,info:t.soundFontInfo})}static getDummySoundfontFile(){let A=new e,t=new Le("Saw",44100,65,20,0,0,0,127);t.sampleData=new Float32Array(128);for(let g=0;g<128;g++)t.sampleData[g]=g/128*2-1;A.samples.push(t);let n=new KA;n.isGlobal=!0,n.generators.push(new U(i.initialAttenuation,375)),n.generators.push(new U(i.releaseVolEnv,-1e3)),n.generators.push(new U(i.sampleModes,1));let o=new KA;o.sample=t;let s=new KA;s.sample=t,s.generators.push(new U(i.fineTune,-9));let r=new Ue;r.instrumentName="Saw Wave",r.instrumentZones.push(n),r.instrumentZones.push(o),r.instrumentZones.push(s),A.instruments.push(r);let B=new be;B.instrument=r;let a=new Te(A.defaultModulators);return a.presetName="Saw Wave",a.presetZones.push(B),A.presets.push(a),A.soundFontInfo.ifil="2.1",A.soundFontInfo.isng="EMU8000",A.soundFontInfo.INAM="Dummy",A.write().buffer}trimSoundBank(A){let t=this;function n(s,r){let B=0;for(let a=0;a<s.instrumentZones.length;a++){let g=s.instrumentZones[a];if(g.isGlobal)continue;let d=g.keyRange,E=g.velRange,c=!1;for(let h of r)if(h.key>=d.min&&h.key<=d.max&&h.velocity>=E.min&&h.velocity<=E.max){c=!0;break}c||(y(`%c${g.sample.sampleName} %cremoved from %c${s.instrumentName}%c. Use count: %c${g.useCount-1}`,I.recognized,I.info,I.recognized,I.info,I.recognized),s.safeDeleteZone(a)&&(B++,a--,y(`%c${g.sample.sampleName} %cdeleted`,I.recognized,I.info)),g.sample.useCount<1&&t.deleteSample(g.sample))}return B}OA("%cTrimming soundfont...",I.info);let o=A.getUsedProgramsAndKeys(t);FA("%cModifying soundfont...",I.info),y("Detected keys for midi:",o);for(let s=0;s<t.presets.length;s++){let r=t.presets[s],B=r.bank+":"+r.program,a=o[B];if(a===void 0)y(`%cDeleting preset %c${r.presetName}%c and its zones`,I.info,I.recognized,I.info),t.deletePreset(r),s--;else{let g=[...a].map(E=>{let c=E.split("-");return{key:parseInt(c[0]),velocity:parseInt(c[1])}});FA(`%cTrimming %c${r.presetName}`,I.info,I.recognized),y(`Keys for ${r.presetName}:`,g);let d=0;for(let E=0;E<r.presetZones.length;E++){let c=r.presetZones[E];if(c.isGlobal)continue;let h=c.keyRange,m=c.velRange,u=!1;for(let S of g)if(S.key>=h.min&&S.key<=h.max&&S.velocity>=m.min&&S.velocity<=m.max){u=!0;let w=n(c.instrument,g);y(`%cTrimmed off %c${w}%c zones from %c${c.instrument.instrumentName}`,I.info,I.recognized,I.info,I.recognized);break}u||(d++,r.deleteZone(E),c.instrument.useCount<1&&t.deleteInstrument(c.instrument),E--)}y(`%cTrimmed off %c${d}%c zones from %c${r.presetName}`,I.info,I.recognized,I.info,I.recognized),P()}}t.removeUnusedElements(),t.soundFontInfo.ICMT=`NOTE: This soundfont was trimmed by SpessaSynth to only contain presets used in "${A.midiName}"
16
16
 
17
- `+t.soundFontInfo.ICMT,p("%cSoundfont modified!",I.recognized),Z(),Z()}removeUnusedElements(){this.instruments.forEach(A=>{A.useCount<1&&A.instrumentZones.forEach(t=>{t.isGlobal||t.sample.useCount--})}),this.instruments=this.instruments.filter(A=>A.useCount>0),this.samples=this.samples.filter(A=>A.useCount>0)}deleteInstrument(A){if(A.useCount>0)throw new Error(`Cannot delete an instrument that has ${A.useCount} usages.`);this.instruments.splice(this.instruments.indexOf(A),1),A.deleteInstrument(),this.removeUnusedElements()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1),this.removeUnusedElements()}deleteSample(A){if(A.useCount>0)throw new Error(`Cannot delete sample that has ${A.useCount} usages.`);this.samples.splice(this.samples.indexOf(A),1),this.removeUnusedElements()}setSampleIDOffset(A){this.presets.forEach(t=>t.sampleIDOffset=A)}getPresetNoFallback(A,t,n=!1){let o=this.presets.find(s=>s.bank===A&&s.program===t);if(o)return o;if(n!==!1)return A===128?this.presets.find(s=>s.bank===128):this.presets.find(s=>s.program===t)}getPreset(A,t){let n=this.presets.find(o=>o.bank===A&&o.program===t);return n||(A===128?(n=this.presets.find(o=>o.bank===128&&o.program===t),n||(n=this.presets.find(o=>o.bank===128))):n=this.presets.find(o=>o.program===t&&o.bank!==128),n&&J(`%cPreset ${A}.${t} not found. Replaced with %c${n.presetName} (${n.bank}.${n.program})`,I.warn,I.recognized)),n||(J(`Preset ${t} not found. Defaulting to`,this.presets[0].presetName),n=this.presets[0]),n}getPresetByName(A){let t=this.presets.find(n=>n.presetName===A);return t||(J("Preset not found. Defaulting to:",this.presets[0].presetName),t=this.presets[0]),t}parsingError(A){throw new Error(`SF parsing error: ${A} The file may be corrupted.`)}destroySoundBank(){delete this.presets,delete this.instruments,delete this.samples}};de.prototype.write=ts;de.prototype.writeDLS=ls;function cs(e){uA("%cLoading instruments...",I.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(eA(e.chunkData));Z()}var kt=class extends Qe{constructor(A,t){super(ht),this.program=t&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new ce,this.DLSInstrument.addUseCount();let o=new he;o.instrument=this.DLSInstrument,this.presetZones=[o]}};function Qs(e){this.verifyHeader(e,"LIST"),this.verifyText(AA(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(eA(e.chunkData));let t=A.find(h=>h.header==="insh");if(!t)throw Z(),new Error("No instrument header!");let n=N(t.chunkData,4),o=N(t.chunkData,4),s=N(t.chunkData,4),r=new kt(o,s),B="unnamedPreset",a=LA(A,"INFO");if(a){let h=eA(a.chunkData);for(;h.header!=="INAM";)h=eA(a.chunkData);B=AA(h.chunkData,h.chunkData.length).trim()}r.presetName=B,r.DLSInstrument.instrumentName=B,OA(`%cParsing %c"${B}"%c...`,I.info,I.recognized,I.info);let C=LA(A,"lrgn");if(!C)throw Z(),new Error("No region list!");let d=new NA;d.isGlobal=!0;let E=LA(A,"lart"),Q=LA(A,"lar2");(Q!==void 0||E!==void 0)&&this.readLart(E,Q,d),d.generators=d.generators.filter(h=>h.generatorValue!==q[h.generatorType].def),d.modulators.find(h=>h.modulatorDestination===i.reverbEffectsSend)===void 0&&d.modulators.push(P.copy(mt)),d.modulators.find(h=>h.modulatorDestination===i.chorusEffectsSend)===void 0&&d.modulators.push(P.copy(pt)),r.DLSInstrument.instrumentZones.push(d);for(let h=0;h<n;h++){let y=eA(C.chunkData);this.verifyHeader(y,"LIST");let f=AA(y.chunkData,4);f!=="rgn "&&f!=="rgn2"&&(Z(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${f}"`));let S=this.readRegion(y);S&&r.DLSInstrument.instrumentZones.push(S)}this.presets.push(r),this.instruments.push(r.DLSInstrument),Z()}function ds(e){let A,t=!1;switch(e){default:case Y.modLfo:case Y.vibratoLfo:case Y.coarseTune:case Y.fineTune:case Y.modEnv:return;case Y.keyNum:A=W.noteOnKeyNum;break;case Y.none:A=W.noController;break;case Y.modulationWheel:A=m.modulationWheel,t=!0;break;case Y.pan:A=m.pan,t=!0;break;case Y.reverb:A=m.reverbDepth,t=!0;break;case Y.chorus:A=m.chorusDepth,t=!0;break;case Y.expression:A=m.expressionController,t=!0;break;case Y.volume:A=m.mainVolume,t=!0;break;case Y.velocity:A=W.noteOnVelocity;break;case Y.polyPressure:A=W.polyPressure;break;case Y.channelPressure:A=W.channelPressure;break;case Y.pitchWheel:A=W.pitchWheel;break;case Y.pitchWheelRange:A=W.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${e}`);return{enum:A,isCC:t}}function Hr(e,A){switch(e){default:case R.none:return;case R.pan:return i.pan;case R.gain:return{gen:i.initialAttenuation,newAmount:A*-1};case R.pitch:return i.fineTune;case R.keyNum:return i.overridingRootKey;case R.volEnvDelay:return i.delayVolEnv;case R.volEnvAttack:return i.attackVolEnv;case R.volEnvHold:return i.holdVolEnv;case R.volEnvDecay:return i.decayVolEnv;case R.volEnvSustain:return{gen:i.sustainVolEnv,newAmount:1e3-A};case R.volEnvRelease:return i.releaseVolEnv;case R.modEnvDelay:return i.delayModEnv;case R.modEnvAttack:return i.attackModEnv;case R.modEnvHold:return i.holdModEnv;case R.modEnvDecay:return i.decayModEnv;case R.modEnvSustain:return{gen:i.sustainModEnv,newAmount:(1e3-A)/10};case R.modEnvRelease:return i.releaseModEnv;case R.filterCutoff:return i.initialFilterFc;case R.filterQ:return i.initialFilterQ;case R.chorusSend:return i.chorusEffectsSend;case R.reverbSend:return i.reverbEffectsSend;case R.modLfoFreq:return i.freqModLFO;case R.modLfoDelay:return i.delayModLFO;case R.vibLfoFreq:return i.freqVibLFO;case R.vibLfoDelay:return i.delayVibLFO}}function Yr(e,A){return e===Y.vibratoLfo&&A===R.pitch?i.vibLfoToPitch:e===Y.modLfo&&A===R.pitch?i.modLfoToPitch:e===Y.modLfo&&A===R.filterCutoff?i.modLfoToFilterFc:e===Y.modLfo&&A===R.gain?i.modLfoToVolume:e===Y.modEnv&&A===R.filterCutoff?i.modEnvToFilterFc:e===Y.modEnv&&A===R.pitch?i.modEnvToPitch:void 0}function us(e,A,t,n,o){let s=Yr(e,t),r,B,a=!1,C=!1,d=o;if(s===void 0){let k=Hr(t,o);if(k===void 0){J(`Invalid destination: ${t}`);return}if(r=k,k.newAmount!==void 0&&(d=k.newAmount,r=k.gen),B=ds(e),B===void 0){J(`Invalid source: ${e}`);return}}else r=s,a=!0,B={enum:W.noController,isCC:!1},C=!0;let E=ds(A);if(E===void 0){J(`Invalid control: ${A}`);return}let Q;if(C)Q=0;else{let k=n&15,M=n>>10&15;M===fA.linear&&k!==fA.linear&&(M=k);let x=n>>14&1,b=n>>15&1;r===i.initialAttenuation&&o<0&&(b=1),Q=PA(M,x,b,B.isCC,B.enum)}r===i.initialAttenuation&&(d=Math.max(960,Math.min(0,d)));let h=n>>4&15,y=n>>8&1,f=n>>9&1,S=PA(h,y,f,E.isCC,E.enum);if(a){let k=S;S=Q,Q=k}return new P(Q,S,r,d,0)}function En(e,A){let t=e.chunkData,n=[],o=[];N(t,4);let s=N(t,4);for(let r=0;r<s;r++){let B=N(t,2),a=N(t,2),C=N(t,2),d=N(t,2),Q=(N(t,4)|0)>>16;if(B===0&&a===0&&d===0){let h;switch(C){case R.pan:h=new L(i.pan,Q);break;case R.gain:h=new L(i.initialAttenuation,-Q*10/.4);break;case R.filterCutoff:h=new L(i.initialFilterFc,Q);break;case R.filterQ:h=new L(i.initialFilterQ,Q);break;case R.modLfoFreq:h=new L(i.freqModLFO,Q);break;case R.modLfoDelay:h=new L(i.delayModLFO,Q);break;case R.vibLfoFreq:h=new L(i.freqVibLFO,Q);break;case R.vibLfoDelay:h=new L(i.delayVibLFO,Q);break;case R.volEnvDelay:h=new L(i.delayVolEnv,Q);break;case R.volEnvAttack:h=new L(i.attackVolEnv,Q);break;case R.volEnvHold:h=new L(i.holdVolEnv,Q,!1);break;case R.volEnvDecay:h=new L(i.decayVolEnv,Q,!1);break;case R.volEnvRelease:h=new L(i.releaseVolEnv,Q);break;case R.volEnvSustain:let y=1e3-Q;h=new L(i.sustainVolEnv,y);break;case R.modEnvDelay:h=new L(i.delayModEnv,Q);break;case R.modEnvAttack:h=new L(i.attackModEnv,Q);break;case R.modEnvHold:h=new L(i.holdModEnv,Q,!1);break;case R.modEnvDecay:h=new L(i.decayModEnv,Q,!1);break;case R.modEnvRelease:h=new L(i.releaseModEnv,Q);break;case R.modEnvSustain:let f=1e3-Q;h=new L(i.sustainModEnv,f);break;case R.reverbSend:h=new L(i.reverbEffectsSend,Q);break;case R.chorusSend:h=new L(i.chorusEffectsSend,Q);break;case R.pitch:let S=Math.floor(Q/100),k=Math.floor(Q-S*100);h=new L(i.fineTune,k),n.push(new L(i.coarseTune,S));break}h&&n.push(h)}else{let h=!0;if(a===Y.none)if(B===Y.modLfo&&C===R.pitch)n.push(new L(i.modLfoToPitch,Q));else if(B===Y.modLfo&&C===R.gain)n.push(new L(i.modLfoToVolume,Q));else if(B===Y.modLfo&&C===R.filterCutoff)n.push(new L(i.modLfoToFilterFc,Q));else if(B===Y.vibratoLfo&&C===R.pitch)n.push(new L(i.vibLfoToPitch,Q));else if(B===Y.modEnv&&C===R.pitch)n.push(new L(i.modEnvToPitch,Q));else if(B===Y.modEnv&&C===R.filterCutoff)n.push(new L(i.modEnvToFilterFc,Q));else if(B===Y.keyNum&&C===R.pitch)n.push(new L(i.scaleTuning,Q/128));else if(B===Y.keyNum&&C===R.volEnvHold){n.push(new L(i.keyNumToVolEnvHold,Q/-128));let y=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===i.holdVolEnv&&(f.generatorValue+=y)})}else if(B===Y.keyNum&&C===R.volEnvDecay){n.push(new L(i.keyNumToVolEnvDecay,Q/-128));let y=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===i.decayVolEnv&&(f.generatorValue+=y)})}else if(B===Y.keyNum&&C===R.modEnvHold){n.push(new L(i.keyNumToModEnvHold,Q/-128));let y=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===i.holdModEnv&&(f.generatorValue+=y)})}else if(B===Y.keyNum&&C===R.modEnvDecay){n.push(new L(i.keyNumToModEnvDecay,Q/-128));let y=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===i.decayModEnv&&(f.generatorValue+=y)})}else h=!1;else h=!1;if(h===!1){let y=us(B,a,C,d,Q);y?(o.push(y),p("%cSucceeded converting to SF2 Modulator!",I.recognized)):J("Failed converting to SF2 Modulator!")}}}return A&&o.push(P.copy(yt),P.copy(St)),{modulators:o,generators:n}}function fs(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let n=eA(e.chunkData);this.verifyHeader(n,"art1","art2");let o=En(n,!0);t.generators.push(...o.generators),t.modulators.push(...o.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=eA(A.chunkData);this.verifyHeader(n,"art2","art1");let o=En(n,!1);t.generators.push(...o.generators),t.modulators.push(...o.modulators)}}var wt=class extends NA{constructor(A,t){super(),this.keyRange=A,this.velRange=t,this.isGlobal=!0}setWavesample(A,t,n,o,s,r,B){t!==0&&this.generators.push(new L(i.sampleModes,t)),this.generators.push(new L(i.initialAttenuation,A)),this.isGlobal=!1,B-=s.samplePitchCorrection;let a=Math.trunc(B/100);a!==0&&this.generators.push(new L(i.coarseTune,a));let C=B-a*100;if(C!==0&&this.generators.push(new L(i.fineTune,C)),t!==0){let d=n.start-s.sampleLoopStartIndex,E=n.end-s.sampleLoopEndIndex;if(d!==0){let Q=d%32768;this.generators.push(new L(i.startloopAddrsOffset,Q));let h=Math.trunc(d/32768);h!==0&&this.generators.push(new L(i.startloopAddrsCoarseOffset,h))}if(E!==0){let Q=E%32768;this.generators.push(new L(i.endloopAddrsOffset,Q));let h=Math.trunc(E/32768);h!==0&&this.generators.push(new L(i.endloopAddrsCoarseOffset,h))}}o!==s.samplePitch&&this.generators.push(new L(i.overridingRootKey,o)),this.generators.push(new L(i.sampleID,r)),this.sample=s,s.useCount++}};function ms(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(eA(e.chunkData));let t=A.find(H=>H.header==="rgnh"),n=N(t.chunkData,2),o=N(t.chunkData,2),s=N(t.chunkData,2),r=N(t.chunkData,2);s===0&&r===0&&(r=127,s=0),n===0&&o===0&&(o=127,n=0);let B=new wt({min:n,max:o},{min:s,max:r});N(t.chunkData,2);let a=N(t.chunkData,2);a!==0&&B.generators.push(new L(i.exclusiveClass,a));let C=LA(A,"lart"),d=LA(A,"lar2");this.readLart(C,d,B),B.isGlobal=!1;let E=A.find(H=>H.header==="wsmp");N(E.chunkData,4);let Q=N(E.chunkData,2),h=Ce(E.chunkData[E.chunkData.currentIndex++],E.chunkData[E.chunkData.currentIndex++]),f=(N(E.chunkData,4)|0)/-655360;N(E.chunkData,4);let S=N(E.chunkData,4),k,M={start:0,end:0};if(S===0)k=0;else{N(E.chunkData,4),N(E.chunkData,4)===0?k=1:k=3,M.start=N(E.chunkData,4);let oA=N(E.chunkData,4);M.end=M.start+oA}let x=A.find(H=>H.header==="wlnk");if(x===void 0)return;N(x.chunkData,2),N(x.chunkData,2),N(x.chunkData,4);let b=N(x.chunkData,4),G=this.samples[b];if(G===void 0)throw new Error("Invalid sample ID!");let F=(f||G.sampleDbAttenuation)*10/.4;return B.setWavesample(F,k,M,Q,G,b,h),B}var Ft=class extends le{sampleDbAttenuation;sampleData;constructor(A,t,n,o,s,r,B,a){super(A,t,n,o,0,1,s,r),this.sampleData=B,this.sampleDbAttenuation=a}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}return super.getRawData()}};var ps={PCM:1,ALAW:6};function Jr(e,A){let t=Math.pow(2,A*8-1),n=Math.pow(2,A*8),o,s=!1;A===1?(o=255,s=!0):o=t;let r=e.size/A,B=new Float32Array(r);for(let a=0;a<B.length;a++){let C=N(e.chunkData,A);s?B[a]=C/o-.5:(C>=t&&(C-=n),B[a]=C/o)}return B}function Kr(e,A){let t=e.size/A,n=new Float32Array(t);for(let o=0;o<n.length;o++){let s=N(e.chunkData,A),r=s^85;r&=127;let B=r>>4,a=r&15;B>0&&(a+=16),a=(a<<4)+8,B>1&&(a=a<<B-1);let C=s>127?a:-a;n[o]=C/32678}return n}function ys(e){uA("%cLoading Wave samples...",I.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=eA(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(AA(t.chunkData,4),"wave");let n=[];for(;t.chunkData.currentIndex<t.chunkData.length;)n.push(eA(t.chunkData));let o=n.find(G=>G.header==="fmt ");if(!o)throw new Error("No fmt chunk in the wave file!");let s=N(o.chunkData,2),r=N(o.chunkData,2);if(r!==1)throw new Error(`Only mono samples are supported. Fmt reports ${r} channels`);let B=N(o.chunkData,4);N(o.chunkData,4),N(o.chunkData,2);let C=N(o.chunkData,2)/8,d=!1,E=n.find(G=>G.header==="data");E||this.parsingError("No data chunk in the WAVE chunk!");let Q;switch(s){default:d=!0,Q=new Float32Array(E.size/C);break;case ps.PCM:Q=Jr(E,C);break;case ps.ALAW:Q=Kr(E,C);break}let h=LA(n,"INFO"),y=`Unnamed ${A}`;if(h){let G=eA(h.chunkData);for(;G.header!=="INAM"&&h.chunkData.currentIndex<h.chunkData.length;)G=eA(h.chunkData);G.header==="INAM"&&(y=AA(G.chunkData,G.size).trim())}let f=60,S=0,k=0,M=Q.length-1,x=0,b=n.find(G=>G.header==="wsmp");if(b){N(b.chunkData,4),f=N(b.chunkData,2),S=Ce(b.chunkData[b.chunkData.currentIndex++],b.chunkData[b.chunkData.currentIndex++]);let G=Math.trunc(S/100);if(f+=G,S-=G*100,x=(N(b.chunkData,4)|0)/-655360,N(b.chunkData,4),N(b.chunkData,4)===1){N(b.chunkData,8),k=N(b.chunkData,4);let H=N(b.chunkData,4);M=k+H}}else J("No wsmp chunk in wave... using sane defaults.");d&&console.error(`Failed to load '${y}': Unsupported format: (${s})`),this.samples.push(new Ft(y,B,f,S,k,M,Q,x)),A++,p(`%cLoaded sample %c${y}`,I.info,I.recognized)}Z()}var ae=class extends de{constructor(A){super(),this.dataArray=new U(A),OA("%cParsing DLS...",I.info),this.dataArray||(Z(),this.parsingError("No data provided!"));let t=eA(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(AA(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push(eA(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.INAM="Unnamed DLS",this.soundFontInfo.IENG="Unknown",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let o=LA(n,"INFO");if(o)for(;o.chunkData.currentIndex<o.chunkData.length;){let a=eA(o.chunkData);this.soundFontInfo[a.header]=AA(a.chunkData,a.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
17
+ `+t.soundFontInfo.ICMT,y("%cSoundfont modified!",I.recognized),P(),P()}removeUnusedElements(){this.instruments.forEach(A=>{A.useCount<1&&A.instrumentZones.forEach(t=>{t.isGlobal||t.sample.useCount--})}),this.instruments=this.instruments.filter(A=>A.useCount>0),this.samples=this.samples.filter(A=>A.useCount>0)}deleteInstrument(A){if(A.useCount>0)throw new Error(`Cannot delete an instrument that has ${A.useCount} usages.`);this.instruments.splice(this.instruments.indexOf(A),1),A.deleteInstrument(),this.removeUnusedElements()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1),this.removeUnusedElements()}deleteSample(A){if(A.useCount>0)throw new Error(`Cannot delete sample that has ${A.useCount} usages.`);this.samples.splice(this.samples.indexOf(A),1),this.removeUnusedElements()}setSampleIDOffset(A){this.presets.forEach(t=>t.sampleIDOffset=A)}getPresetNoFallback(A,t,n=!1){let o=this.presets.find(s=>s.bank===A&&s.program===t);if(o)return o;if(n!==!1)return A===128?this.presets.find(s=>s.bank===128):this.presets.find(s=>s.program===t)}getPreset(A,t){let n=this.presets.find(o=>o.bank===A&&o.program===t);return n||(A===128?(n=this.presets.find(o=>o.bank===128&&o.program===t),n||(n=this.presets.find(o=>o.bank===128))):n=this.presets.find(o=>o.program===t&&o.bank!==128),n&&H(`%cPreset ${A}.${t} not found. Replaced with %c${n.presetName} (${n.bank}.${n.program})`,I.warn,I.recognized)),n||(H(`Preset ${t} not found. Defaulting to`,this.presets[0].presetName),n=this.presets[0]),n}getPresetByName(A){let t=this.presets.find(n=>n.presetName===A);return t||(H("Preset not found. Defaulting to:",this.presets[0].presetName),t=this.presets[0]),t}parsingError(A){throw new Error(`SF parsing error: ${A} The file may be corrupted.`)}destroySoundBank(){delete this.presets,delete this.instruments,delete this.samples}};ve.prototype.write=xs;ve.prototype.writeDLS=Os;function Ps(e){FA("%cLoading instruments...",I.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(iA(e.chunkData));P()}var sn=class extends Te{constructor(A,t){super(Vt),this.program=t&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new Ue,this.DLSInstrument.addUseCount();let o=new be;o.instrument=this.DLSInstrument,this.presetZones=[o]}};function Vs(e){this.verifyHeader(e,"LIST"),this.verifyText(eA(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(iA(e.chunkData));let t=A.find(h=>h.header==="insh");if(!t)throw P(),new Error("No instrument header!");let n=N(t.chunkData,4),o=N(t.chunkData,4),s=N(t.chunkData,4),r=new sn(o,s),B="unnamedPreset",a=PA(A,"INFO");if(a){let h=iA(a.chunkData);for(;h.header!=="INAM";)h=iA(a.chunkData);B=eA(h.chunkData,h.chunkData.length).trim()}r.presetName=B,r.DLSInstrument.instrumentName=B,OA(`%cParsing %c"${B}"%c...`,I.info,I.recognized,I.info);let g=PA(A,"lrgn");if(!g)throw P(),new Error("No region list!");let d=new KA;d.isGlobal=!0;let E=PA(A,"lart"),c=PA(A,"lar2");(c!==void 0||E!==void 0)&&this.readLart(E,c,d),d.generators=d.generators.filter(h=>h.generatorValue!==Z[h.generatorType].def),d.modulators.find(h=>h.modulatorDestination===i.reverbEffectsSend)===void 0&&d.modulators.push(W.copy(An)),d.modulators.find(h=>h.modulatorDestination===i.chorusEffectsSend)===void 0&&d.modulators.push(W.copy(en)),r.DLSInstrument.instrumentZones.push(d);for(let h=0;h<n;h++){let m=iA(g.chunkData);this.verifyHeader(m,"LIST");let u=eA(m.chunkData,4);u!=="rgn "&&u!=="rgn2"&&(P(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${u}"`));let S=this.readRegion(m);S&&r.DLSInstrument.instrumentZones.push(S)}this.presets.push(r),this.instruments.push(r.DLSInstrument),P()}function Zs(e){let A,t=!1;switch(e){default:case O.modLfo:case O.vibratoLfo:case O.coarseTune:case O.fineTune:case O.modEnv:return;case O.keyNum:A=z.noteOnKeyNum;break;case O.none:A=z.noController;break;case O.modulationWheel:A=p.modulationWheel,t=!0;break;case O.pan:A=p.pan,t=!0;break;case O.reverb:A=p.reverbDepth,t=!0;break;case O.chorus:A=p.chorusDepth,t=!0;break;case O.expression:A=p.expressionController,t=!0;break;case O.volume:A=p.mainVolume,t=!0;break;case O.velocity:A=z.noteOnVelocity;break;case O.polyPressure:A=z.polyPressure;break;case O.channelPressure:A=z.channelPressure;break;case O.pitchWheel:A=z.pitchWheel;break;case O.pitchWheelRange:A=z.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${e}`);return{enum:A,isCC:t}}function Ei(e,A){switch(e){default:case G.none:return;case G.pan:return i.pan;case G.gain:return{gen:i.initialAttenuation,newAmount:A*-1};case G.pitch:return i.fineTune;case G.keyNum:return i.overridingRootKey;case G.volEnvDelay:return i.delayVolEnv;case G.volEnvAttack:return i.attackVolEnv;case G.volEnvHold:return i.holdVolEnv;case G.volEnvDecay:return i.decayVolEnv;case G.volEnvSustain:return{gen:i.sustainVolEnv,newAmount:1e3-A};case G.volEnvRelease:return i.releaseVolEnv;case G.modEnvDelay:return i.delayModEnv;case G.modEnvAttack:return i.attackModEnv;case G.modEnvHold:return i.holdModEnv;case G.modEnvDecay:return i.decayModEnv;case G.modEnvSustain:return{gen:i.sustainModEnv,newAmount:(1e3-A)/10};case G.modEnvRelease:return i.releaseModEnv;case G.filterCutoff:return i.initialFilterFc;case G.filterQ:return i.initialFilterQ;case G.chorusSend:return i.chorusEffectsSend;case G.reverbSend:return i.reverbEffectsSend;case G.modLfoFreq:return i.freqModLFO;case G.modLfoDelay:return i.delayModLFO;case G.vibLfoFreq:return i.freqVibLFO;case G.vibLfoDelay:return i.delayVibLFO}}function Bi(e,A){return e===O.vibratoLfo&&A===G.pitch?i.vibLfoToPitch:e===O.modLfo&&A===G.pitch?i.modLfoToPitch:e===O.modLfo&&A===G.filterCutoff?i.modLfoToFilterFc:e===O.modLfo&&A===G.gain?i.modLfoToVolume:e===O.modEnv&&A===G.filterCutoff?i.modEnvToFilterFc:e===O.modEnv&&A===G.pitch?i.modEnvToPitch:void 0}function Xs(e,A,t,n,o){let s=Bi(e,t),r,B,a=!1,g=!1,d=o;if(s===void 0){let w=Ei(t,o);if(w===void 0){H(`Invalid destination: ${t}`);return}if(r=w,w.newAmount!==void 0&&(d=w.newAmount,r=w.gen),B=Zs(e),B===void 0){H(`Invalid source: ${e}`);return}}else r=s,a=!0,B={enum:z.noController,isCC:!1},g=!0;let E=Zs(A);if(E===void 0){H(`Invalid control: ${A}`);return}let c;if(g)c=0;else{let w=n&15,D=n>>10&15;D===RA.linear&&w!==RA.linear&&(D=w);let M=n>>14&1,b=n>>15&1;r===i.initialAttenuation&&o<0&&(b=1),c=oe(D,M,b,B.isCC,B.enum)}r===i.initialAttenuation&&(d=Math.max(960,Math.min(0,d)));let h=n>>4&15,m=n>>8&1,u=n>>9&1,S=oe(h,m,u,E.isCC,E.enum);if(a){let w=S;S=c,c=w}return new W(c,S,r,d,0)}function Xn(e,A){let t=e.chunkData,n=[],o=[];N(t,4);let s=N(t,4);for(let r=0;r<s;r++){let B=N(t,2),a=N(t,2),g=N(t,2),d=N(t,2),c=(N(t,4)|0)>>16;if(B===0&&a===0&&d===0){let h;switch(g){case G.pan:h=new U(i.pan,c);break;case G.gain:h=new U(i.initialAttenuation,-c*10/.4);break;case G.filterCutoff:h=new U(i.initialFilterFc,c);break;case G.filterQ:h=new U(i.initialFilterQ,c);break;case G.modLfoFreq:h=new U(i.freqModLFO,c);break;case G.modLfoDelay:h=new U(i.delayModLFO,c);break;case G.vibLfoFreq:h=new U(i.freqVibLFO,c);break;case G.vibLfoDelay:h=new U(i.delayVibLFO,c);break;case G.volEnvDelay:h=new U(i.delayVolEnv,c);break;case G.volEnvAttack:h=new U(i.attackVolEnv,c);break;case G.volEnvHold:h=new U(i.holdVolEnv,c,!1);break;case G.volEnvDecay:h=new U(i.decayVolEnv,c,!1);break;case G.volEnvRelease:h=new U(i.releaseVolEnv,c);break;case G.volEnvSustain:let m=1e3-c;h=new U(i.sustainVolEnv,m);break;case G.modEnvDelay:h=new U(i.delayModEnv,c);break;case G.modEnvAttack:h=new U(i.attackModEnv,c);break;case G.modEnvHold:h=new U(i.holdModEnv,c,!1);break;case G.modEnvDecay:h=new U(i.decayModEnv,c,!1);break;case G.modEnvRelease:h=new U(i.releaseModEnv,c);break;case G.modEnvSustain:let u=1e3-c;h=new U(i.sustainModEnv,u);break;case G.reverbSend:h=new U(i.reverbEffectsSend,c);break;case G.chorusSend:h=new U(i.chorusEffectsSend,c);break;case G.pitch:let S=Math.floor(c/100),w=Math.floor(c-S*100);h=new U(i.fineTune,w),n.push(new U(i.coarseTune,S));break}h&&n.push(h)}else{let h=!0;if(a===O.none)if(B===O.modLfo&&g===G.pitch)n.push(new U(i.modLfoToPitch,c));else if(B===O.modLfo&&g===G.gain)n.push(new U(i.modLfoToVolume,c));else if(B===O.modLfo&&g===G.filterCutoff)n.push(new U(i.modLfoToFilterFc,c));else if(B===O.vibratoLfo&&g===G.pitch)n.push(new U(i.vibLfoToPitch,c));else if(B===O.modEnv&&g===G.pitch)n.push(new U(i.modEnvToPitch,c));else if(B===O.modEnv&&g===G.filterCutoff)n.push(new U(i.modEnvToFilterFc,c));else if(B===O.keyNum&&g===G.pitch)n.push(new U(i.scaleTuning,c/128));else if(B===O.keyNum&&g===G.volEnvHold){n.push(new U(i.keyNumToVolEnvHold,c/-128));let m=Math.round(60/128*c);n.forEach(u=>{u.generatorType===i.holdVolEnv&&(u.generatorValue+=m)})}else if(B===O.keyNum&&g===G.volEnvDecay){n.push(new U(i.keyNumToVolEnvDecay,c/-128));let m=Math.round(60/128*c);n.forEach(u=>{u.generatorType===i.decayVolEnv&&(u.generatorValue+=m)})}else if(B===O.keyNum&&g===G.modEnvHold){n.push(new U(i.keyNumToModEnvHold,c/-128));let m=Math.round(60/128*c);n.forEach(u=>{u.generatorType===i.holdModEnv&&(u.generatorValue+=m)})}else if(B===O.keyNum&&g===G.modEnvDecay){n.push(new U(i.keyNumToModEnvDecay,c/-128));let m=Math.round(60/128*c);n.forEach(u=>{u.generatorType===i.decayModEnv&&(u.generatorValue+=m)})}else h=!1;else h=!1;if(h===!1){let m=Xs(B,a,g,d,c);m?(o.push(m),y("%cSucceeded converting to SF2 Modulator!",I.recognized)):H("Failed converting to SF2 Modulator!")}}}return A&&o.push(W.copy(tn),W.copy(nn)),{modulators:o,generators:n}}function Ws(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let n=iA(e.chunkData);this.verifyHeader(n,"art1","art2");let o=Xn(n,!0);t.generators.push(...o.generators),t.modulators.push(...o.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=iA(A.chunkData);this.verifyHeader(n,"art2","art1");let o=Xn(n,!1);t.generators.push(...o.generators),t.modulators.push(...o.modulators)}}var rn=class extends KA{constructor(A,t){super(),this.keyRange=A,this.velRange=t,this.isGlobal=!0}setWavesample(A,t,n,o,s,r,B){t!==0&&this.generators.push(new U(i.sampleModes,t)),this.generators.push(new U(i.initialAttenuation,A)),this.isGlobal=!1,B-=s.samplePitchCorrection;let a=Math.trunc(B/100);a!==0&&this.generators.push(new U(i.coarseTune,a));let g=B-a*100;if(g!==0&&this.generators.push(new U(i.fineTune,g)),t!==0){let d=n.start-s.sampleLoopStartIndex,E=n.end-s.sampleLoopEndIndex;if(d!==0){let c=d%32768;this.generators.push(new U(i.startloopAddrsOffset,c));let h=Math.trunc(d/32768);h!==0&&this.generators.push(new U(i.startloopAddrsCoarseOffset,h))}if(E!==0){let c=E%32768;this.generators.push(new U(i.endloopAddrsOffset,c));let h=Math.trunc(E/32768);h!==0&&this.generators.push(new U(i.endloopAddrsCoarseOffset,h))}}o!==s.samplePitch&&this.generators.push(new U(i.overridingRootKey,o)),this.generators.push(new U(i.sampleID,r)),this.sample=s,s.useCount++}};function _s(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(iA(e.chunkData));let t=A.find(J=>J.header==="rgnh"),n=N(t.chunkData,2),o=N(t.chunkData,2),s=N(t.chunkData,2),r=N(t.chunkData,2);s===0&&r===0&&(r=127,s=0),n===0&&o===0&&(o=127,n=0);let B=new rn({min:n,max:o},{min:s,max:r});N(t.chunkData,2);let a=N(t.chunkData,2);a!==0&&B.generators.push(new U(i.exclusiveClass,a));let g=PA(A,"lart"),d=PA(A,"lar2");this.readLart(g,d,B),B.isGlobal=!1;let E=A.find(J=>J.header==="wsmp");N(E.chunkData,4);let c=N(E.chunkData,2),h=xe(E.chunkData[E.chunkData.currentIndex++],E.chunkData[E.chunkData.currentIndex++]),u=(N(E.chunkData,4)|0)/-655360;N(E.chunkData,4);let S=N(E.chunkData,4),w,D={start:0,end:0};if(S===0)w=0;else{N(E.chunkData,4),N(E.chunkData,4)===0?w=1:w=3,D.start=N(E.chunkData,4);let aA=N(E.chunkData,4);D.end=D.start+aA}let M=A.find(J=>J.header==="wlnk");if(M===void 0)return;N(M.chunkData,2),N(M.chunkData,2),N(M.chunkData,4);let b=N(M.chunkData,4),x=this.samples[b];if(x===void 0)throw new Error("Invalid sample ID!");let F=(u||x.sampleDbAttenuation)*10/.4;return B.setWavesample(F,w,D,c,x,b,h),B}var an=class extends Le{sampleDbAttenuation;sampleData;constructor(A,t,n,o,s,r,B,a){super(A,t,n,o,0,1,s,r),this.sampleData=B,this.sampleDbAttenuation=a}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}return super.getRawData()}};var zs={PCM:1,ALAW:6};function hi(e,A){let t=Math.pow(2,A*8-1),n=Math.pow(2,A*8),o,s=!1;A===1?(o=255,s=!0):o=t;let r=e.size/A,B=new Float32Array(r);for(let a=0;a<B.length;a++){let g=N(e.chunkData,A);s?B[a]=g/o-.5:(g>=t&&(g-=n),B[a]=g/o)}return B}function li(e,A){let t=e.size/A,n=new Float32Array(t);for(let o=0;o<n.length;o++){let s=N(e.chunkData,A),r=s^85;r&=127;let B=r>>4,a=r&15;B>0&&(a+=16),a=(a<<4)+8,B>1&&(a=a<<B-1);let g=s>127?a:-a;n[o]=g/32678}return n}function js(e){FA("%cLoading Wave samples...",I.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=iA(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(eA(t.chunkData,4),"wave");let n=[];for(;t.chunkData.currentIndex<t.chunkData.length;)n.push(iA(t.chunkData));let o=n.find(x=>x.header==="fmt ");if(!o)throw new Error("No fmt chunk in the wave file!");let s=N(o.chunkData,2),r=N(o.chunkData,2);if(r!==1)throw new Error(`Only mono samples are supported. Fmt reports ${r} channels`);let B=N(o.chunkData,4);N(o.chunkData,4),N(o.chunkData,2);let g=N(o.chunkData,2)/8,d=!1,E=n.find(x=>x.header==="data");E||this.parsingError("No data chunk in the WAVE chunk!");let c;switch(s){default:d=!0,c=new Float32Array(E.size/g);break;case zs.PCM:c=hi(E,g);break;case zs.ALAW:c=li(E,g);break}let h=PA(n,"INFO"),m=`Unnamed ${A}`;if(h){let x=iA(h.chunkData);for(;x.header!=="INAM"&&h.chunkData.currentIndex<h.chunkData.length;)x=iA(h.chunkData);x.header==="INAM"&&(m=eA(x.chunkData,x.size).trim())}let u=60,S=0,w=0,D=c.length-1,M=0,b=n.find(x=>x.header==="wsmp");if(b){N(b.chunkData,4),u=N(b.chunkData,2),S=xe(b.chunkData[b.chunkData.currentIndex++],b.chunkData[b.chunkData.currentIndex++]);let x=Math.trunc(S/100);if(u+=x,S-=x*100,M=(N(b.chunkData,4)|0)/-655360,N(b.chunkData,4),N(b.chunkData,4)===1){N(b.chunkData,8),w=N(b.chunkData,4);let J=N(b.chunkData,4);D=w+J}}else H("No wsmp chunk in wave... using sane defaults.");d&&console.error(`Failed to load '${m}': Unsupported format: (${s})`),this.samples.push(new an(m,B,u,S,w,D,c,M)),A++,y(`%cLoaded sample %c${m}`,I.info,I.recognized)}P()}var De=class extends ve{constructor(A){super(),this.dataArray=new L(A),OA("%cParsing DLS...",I.info),this.dataArray||(P(),this.parsingError("No data provided!"));let t=iA(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(eA(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push(iA(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.INAM="Unnamed DLS",this.soundFontInfo.IENG="Unknown",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let o=PA(n,"INFO");if(o)for(;o.chunkData.currentIndex<o.chunkData.length;){let a=iA(o.chunkData);this.soundFontInfo[a.header]=eA(a.chunkData,a.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
18
18
  `+this.soundFontInfo.ISBJ,delete this.soundFontInfo.ISBJ),this.soundFontInfo.ICMT+=`
19
- Converted from DLS to SF2 with SpessaSynth`;for(let[a,C]of Object.entries(this.soundFontInfo))p(`%c"${a}": %c"${C}"`,I.info,I.recognized);let s=n.find(a=>a.header==="colh");s||(Z(),this.parsingError("No colh chunk!")),this.instrumentAmount=N(s.chunkData,4),p(`%cInstruments amount: %c${this.instrumentAmount}`,I.info,I.recognized);let r=LA(n,"wvpl");r||(Z(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(r);let B=LA(n,"lins");B||(Z(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(B),this.presets.sort((a,C)=>a.program-C.program+(a.bank-C.bank)),p(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
20
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),Z()}verifyHeader(A,...t){for(let n of t)if(A.header.toLowerCase()===n.toLowerCase())return;Z(),this.parsingError(`Invalid DLS chunk header! Expected "${t.toString()}" got "${A.header.toLowerCase()}"`)}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(Z(),this.parsingError(`FourCC error: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};ae.prototype.readDLSInstrumentList=cs;ae.prototype.readDLSInstrument=Qs;ae.prototype.readRegion=ms;ae.prototype.readLart=fs;ae.prototype.readDLSSamples=ys;var Bn=class extends le{constructor(A,t,n,o,s,r,B,a,C,d,E,Q,h){super(A,r,B,a,C,d,o-t/2,s-t/2),this.sampleName=A,this.sampleStartIndex=t,this.sampleEndIndex=n,this.isSampleLoaded=!1,this.sampleID=Q,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=E,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=h}getRawData(){let A=this.sampleDataArray;if(this.isCompressed){if(this.compressedData)return this.compressedData;let t=A.currentIndex;return A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t)}else{this.isDataRaw||super.getRawData();let t=A.currentIndex;return A.slice(t+this.sampleStartIndex,t+this.sampleEndIndex)}}decodeVorbis(){if(this.sampleLength<1)return;let A=this.sampleDataArray,t=A.currentIndex,n=A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t);this.sampleData=new Float32Array(0);try{let o=oe.decode(n.buffer);this.sampleData=o.data[0],this.sampleData===void 0&&J(`Error decoding sample ${this.sampleName}: Vorbis decode returned undefined.`)}catch(o){J(`Error decoding sample ${this.sampleName}: ${o}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?(J(`Invalid sample ${this.sampleName}! Invalid length: ${this.sampleLength}`),new Float32Array(1)):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return J("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),t=this.sampleDataArray.currentIndex,n=new Int16Array(this.sampleDataArray.slice(t+this.sampleStartIndex,t+this.sampleEndIndex).buffer);for(let o=0;o<n.length;o++)A[o]=n[o]/32768;return this.sampleData=A,this.isSampleLoaded=!0,A}getUncompressedReadyData(){let A=this.sampleDataArray.slice(this.sampleStartIndex/2,this.sampleEndIndex/2);return this.sampleData=A,this.isSampleLoaded=!0,A}};function Ss(e,A,t=!0){let n=[],o=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let s=qr(o,e.chunkData,A,t);n.push(s),o++}return n.length>1&&n.pop(),n}function qr(e,A,t,n){let o=AA(A,20),s=N(A,4)*2,r=N(A,4)*2,B=N(A,4),a=N(A,4),C=N(A,4),d=A[A.currentIndex++];d===255&&(d=60);let E=oo(A[A.currentIndex++]),Q=N(A,2),h=N(A,2);return new Bn(o,s,r,B,a,C,d,E,Q,h,t,e,n)}var hn=class extends L{constructor(A){super();let t=A.currentIndex;this.generatorType=A[t+1]<<8|A[t],this.generatorValue=Ce(A[t+2],A[t+3]),A.currentIndex+=4}};function ln(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new hn(e.chunkData));return A.length>1&&A.pop(),A}var cn=class extends ce{constructor(A){super(),this.instrumentName=AA(A.chunkData,20).trim(),this.instrumentZoneIndex=N(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,t){this.instrumentZonesAmount=A;for(let n=this.instrumentZoneIndex;n<this.instrumentZonesAmount+this.instrumentZoneIndex;n++)this.instrumentZones.push(t[n])}};function Ds(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let n=new cn(e);if(t.length>0){let o=n.instrumentZoneIndex-t[t.length-1].instrumentZoneIndex;t[t.length-1].getInstrumentZones(o,A)}t.push(n)}return t.length>1&&t.pop(),t}var Qn=class extends NA{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++)this.generators.push(A[t])}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++)this.modulators.push(A[t])}getSample(A){let t=this.generators.find(n=>n.generatorType===i.sampleID);t&&(this.sample=A[t.generatorValue],this.isGlobal=!1,this.sample.useCount++)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===i.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===i.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function ks(e,A,t,n){let o=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new Qn(e.chunkData);if(o.length>0){let r=s.modulatorZoneStartIndex-o[o.length-1].modulatorZoneStartIndex,B=s.generatorZoneStartIndex-o[o.length-1].generatorZoneStartIndex;o[o.length-1].setZoneSize(r,B),o[o.length-1].getGenerators(A),o[o.length-1].getModulators(t),o[o.length-1].getSample(n),o[o.length-1].getKeyRange(),o[o.length-1].getVelRange()}o.push(s)}return o.length>1&&o.pop(),o}var dn=class extends he{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++)this.generators.push(A[t])}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++)this.modulators.push(A[t])}getInstrument(A){let t=this.generators.find(n=>n.generatorType===i.instrument);t&&(this.instrument=A[t.generatorValue],this.instrument.addUseCount(),this.isGlobal=!1)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===i.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===i.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function ws(e,A,t,n){let o=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new dn(e.chunkData);if(o.length>0){let r=s.modulatorZoneStartIndex-o[o.length-1].modulatorZoneStartIndex,B=s.generatorZoneStartIndex-o[o.length-1].generatorZoneStartIndex;o[o.length-1].setZoneSize(r,B),o[o.length-1].getGenerators(A),o[o.length-1].getModulators(t),o[o.length-1].getInstrument(n),o[o.length-1].getKeyRange(),o[o.length-1].getVelRange()}o.push(s)}return o.length>1&&o.pop(),o}var un=class extends Qe{constructor(A,t){super(t),this.presetName=AA(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=N(A.chunkData,2),this.bank=N(A.chunkData,2),this.presetZoneStartIndex=N(A.chunkData,2),this.library=N(A.chunkData,4),this.genre=N(A.chunkData,4),this.morphology=N(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,t){this.presetZonesAmount=A;for(let n=this.presetZoneStartIndex;n<this.presetZonesAmount+this.presetZoneStartIndex;n++)this.presetZones.push(t[n])}};function Fs(e,A,t){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new un(e,t);if(n.length>0){let s=o.presetZoneStartIndex-n[n.length-1].presetZoneStartIndex;n[n.length-1].getPresetZones(s,A)}n.push(o)}return n.length>1&&n.pop(),n}var fn=class extends P{constructor(A){let t=N(A,2),n=N(A,2),o=Ce(A[A.currentIndex++],A[A.currentIndex++]),s=N(A,2),r=N(A,2);super(t,s,n,o,r)}};function Rt(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new fn(e.chunkData));return A}var Gt=class extends de{constructor(A,t=!0){super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new U(A),OA("%cParsing SoundFont...",I.info),this.dataArray||(Z(),this.parsingError("No data provided!"));let n=eA(this.dataArray,!1);this.verifyHeader(n,"riff");let o=AA(this.dataArray,4).toLowerCase();if(o!=="sfbk"&&o!=="sfpk")throw Z(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${o}"`);let s=o==="sfpk",r=eA(this.dataArray);for(this.verifyHeader(r,"list"),AA(r.chunkData,4);r.chunkData.length>r.chunkData.currentIndex;){let tA=eA(r.chunkData),O;switch(tA.header.toLowerCase()){case"ifil":case"iver":O=`${N(tA.chunkData,2)}.${N(tA.chunkData,2)}`,this.soundFontInfo[tA.header]=O;break;case"icmt":O=AA(tA.chunkData,tA.chunkData.length,void 0,!1),this.soundFontInfo[tA.header]=O;break;case"dmod":let _=Rt(tA);_.pop(),O=`Modulators: ${_.length}`;let rA=this.defaultModulators;this.defaultModulators=_,this.defaultModulators.push(...rA.filter(V=>!this.defaultModulators.find(nA=>P.isIdentical(V,nA)))),this.soundFontInfo[tA.header]=tA.chunkData;break;default:O=AA(tA.chunkData,tA.chunkData.length),this.soundFontInfo[tA.header]=O}p(`%c"${tA.header}": %c"${O}"`,I.info,I.recognized)}let B=eA(this.dataArray,!1);this.verifyHeader(B,"list"),this.verifyText(AA(this.dataArray,4),"sdta"),p("%cVerifying smpl chunk...",I.warn);let a=eA(this.dataArray,!1);this.verifyHeader(a,"smpl");let C;if(s){p("%cSF2Pack detected, attempting to decode the smpl chunk...",I.info);try{C=oe.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+B.size-12)).data[0]}catch(tA){throw Z(),new Error(`SF2Pack Ogg Vorbis decode error: ${tA}`)}p(`%cDecoded the smpl chunk! Length: %c${C.length}`,I.info,I.value)}else C=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;p(`%cSkipping sample chunk, length: %c${B.size-12}`,I.info,I.value),this.dataArray.currentIndex+=B.size-12,p("%cLoading preset data chunk...",I.warn);let d=eA(this.dataArray);this.verifyHeader(d,"list"),AA(d.chunkData,4);let E=eA(d.chunkData);this.verifyHeader(E,"phdr");let Q=eA(d.chunkData);this.verifyHeader(Q,"pbag");let h=eA(d.chunkData);this.verifyHeader(h,"pmod");let y=eA(d.chunkData);this.verifyHeader(y,"pgen");let f=eA(d.chunkData);this.verifyHeader(f,"inst");let S=eA(d.chunkData);this.verifyHeader(S,"ibag");let k=eA(d.chunkData);this.verifyHeader(k,"imod");let M=eA(d.chunkData);this.verifyHeader(M,"igen");let x=eA(d.chunkData);this.verifyHeader(x,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...Ss(x,C,!s));let b=ln(M),G=Rt(k),g=ks(S,b,G,this.samples);this.instruments=Ds(f,g);let F=ln(y),H=Rt(h),oA=ws(Q,F,H,this.instruments);this.presets.push(...Fs(E,oA,this.defaultModulators)),this.presets.sort((tA,O)=>tA.program-O.program+(tA.bank-O.bank)),p(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
21
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),Z(),s&&delete this.dataArray}verifyHeader(A,t){A.header.toLowerCase()!==t.toLowerCase()&&(Z(),this.parsingError(`Invalid chunk header! Expected "${t.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(Z(),this.parsingError(`Invalid FourCC: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};function _e(e){let A=e.slice(8,12),t=new U(A);return AA(t,4,void 0,!1).toLowerCase()==="dls "?new ae(e):new Gt(e,!1)}var xt=class{constructor(A,t){this.ready=t,this.totalSoundfontOffset=0,this.reloadManager(A)}_assingSampleOffsets(){let A=0;this.soundfontList.forEach(t=>{t.soundfont.setSampleIDOffset(A),A+=t.soundfont.samples.length}),this.totalSoundfontOffset=A}generatePresetList(){this._assingSampleOffsets();let A={};for(let t=this.soundfontList.length-1;t>=0;t--){let n=this.soundfontList[t],o=new Set;for(let s of n.soundfont.presets){let r=`${s.bank+n.bankOffset}-${s.program}`;o.has(r)||(o.add(r),A[r]=s.presetName)}}this.presetList=[];for(let[t,n]of Object.entries(A)){let o=t.split("-");this.presetList.push({presetName:n,program:parseInt(o[1]),bank:parseInt(o[0])})}}handleMessage(A,t){switch(A){case Ze.addNewSoundFont:this.addNewSoundFont(t[0],t[1],t[2]);break;case Ze.reloadSoundFont:this.reloadManager(t);break;case Ze.deleteSoundFont:this.deleteSoundFont(t);break;case Ze.rearrangeSoundFonts:this.rearrangeSoundFonts(t)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let t=_e(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:t}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){J("1 soundfont left. Aborting!");return}let t=this.soundfontList.findIndex(n=>n.id===A);if(t===-1){J(`No soundfont with id of "${A}" found. Aborting!`);return}delete this.soundfontList[t].soundfont.presets,delete this.soundfontList[t].soundfont.instruments,delete this.soundfontList[t].soundfont.samples,this.soundfontList.splice(t,1),this.generatePresetList()}addNewSoundFont(A,t,n){if(this.soundfontList.find(o=>o.id===t)!==void 0)throw new Error("Cannot overwrite the existing soundfont. Use soundfontManager.delete(id) instead.");this.soundfontList.push({id:t,soundfont:_e(A),bankOffset:n}),this.generatePresetList(),this.ready()}rearrangeSoundFonts(A){this.soundfontList.sort((t,n)=>A.indexOf(t.id)-A.indexOf(n.id)),this.generatePresetList()}getPreset(A,t){if(this.soundfontList.length<1)throw new Error("No soundfonts! This should never happen.");for(let n of this.soundfontList){let o=n.soundfont.getPresetNoFallback(A-n.bankOffset,t);if(o!==void 0)return o}if(A!==128){for(let n of this.soundfontList){let o=n.soundfont.presets.find(s=>s.program===t);if(o)return o}return this.soundfontList[0].soundfont.presets[0]}else{for(let n of this.soundfontList){let o=n.soundfont.presets.find(s=>s.bank===128);if(o)return o}return this.soundfontList[0].soundfont.presets[0]}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundBank()}),delete this.soundfontList}};var be={linear:0,nearestNeighbor:1,fourthOrder:2},Ne=class{static getSampleLinear(A,t){let n=A.sample,o=n.cursor,s=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let B=0;B<t.length;B++){for(;o>=n.loopEnd;)o-=r;let a=~~o,C=a+1;for(;C>=n.loopEnd;)C-=r;let d=o-a,E=s[C],Q=s[a];t[B]=Q+(E-Q)*d,o+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let B=~~o,a=B+1;if(a>=n.end){A.finished=!0;return}let C=o-B,d=s[a],E=s[B];t[r]=E+(d-E)*C,o+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=o}static getSampleNearest(A,t){let n=A.sample,o=n.cursor,s=n.loopEnd-n.loopStart,r=n.sampleData;if(A.sample.isLooping)for(let B=0;B<t.length;B++){for(;o>=n.loopEnd;)o-=s;let a=~~o+1;for(;a>=n.loopEnd;)a-=s;t[B]=r[a],o+=n.playbackStep*A.currentTuningCalculated}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let B=0;B<t.length;B++){let a=~~o+1;if(a>=n.end){A.finished=!0;return}t[B]=r[a],o+=n.playbackStep*A.currentTuningCalculated}}n.cursor=o}static getSampleCubic(A,t){let n=A.sample,o=n.cursor,s=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let B=0;B<t.length;B++){for(;o>=n.loopEnd;)o-=r;let a=~~o,C=a+1,d=C+1,E=d+1,Q=o-a;C>=n.loopEnd&&(C-=r),d>=n.loopEnd&&(d-=r),E>=n.loopEnd&&(E-=r);let h=s[a],y=s[C],f=s[d],S=s[E],k=.5*(f-h),M=h-2.5*y+2*f-.5*S,x=.5*(S-h)+1.5*(y-f);t[B]=((x*Q+M)*Q+k)*Q+y,o+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let B=~~o,a=B+1,C=a+1,d=C+1,E=o-B;if(a>=n.end||C>=n.end||d>=n.end){A.finished=!0;return}let Q=s[B],h=s[a],y=s[C],f=s[d],S=.5*(y-Q),k=Q-2.5*h+2*y-.5*f,M=.5*(f-Q)+1.5*(h-y);t[r]=((M*E+k)*E+S)*E+h,o+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=o}};var mn={addMapping:0,deleteMapping:1,clearMappings:2},Mt=class{_keyMappings=[];handleMessage(A,t){switch(A){default:return;case mn.addMapping:this.addMapping(...t);break;case mn.clearMappings:this.clearMappings();break;case mn.deleteMapping:this.deleteMapping(...t)}}addMapping(A,t,n){this._keyMappings[A]===void 0&&(this._keyMappings[A]=[]),this._keyMappings[A][t]=n}deleteMapping(A,t){this._keyMappings[A]?.[t]!==void 0&&(this._keyMappings[A][t]=void 0)}clearMappings(){this._keyMappings=[]}setMappings(A){this._keyMappings=A}getMappings(){return this._keyMappings}getVelocity(A,t){let n=this._keyMappings[A]?.[t];return n?n.velocity:-1}hasOverridePatch(A,t){let n=this._keyMappings[A]?.[t]?.patch?.bank;return n!==void 0&&n>=0}getPatch(A,t){let n=this._keyMappings[A]?.[t];if(n)return n.patch;throw new Error("No modifier.")}};var Rs=.1,ue=class e{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;resonanceCb=0;currentInitialFc=13500;lastTargetCutoff=1/0;initialized=!1;static apply(A,t,n,o){let s=A.modulatedGenerators[i.initialFilterFc],r=A.filter;r.initialized?r.currentInitialFc+=(s-r.currentInitialFc)*o:(r.initialized=!0,r.currentInitialFc=s);let B=r.currentInitialFc+n;if(r.currentInitialFc>13499&&B>13499&&r.resonanceCb===0){r.currentInitialFc=13500;return}let a=A.modulatedGenerators[i.initialFilterQ];(Math.abs(r.lastTargetCutoff-B)>1||r.resonanceCb!==a)&&(r.lastTargetCutoff=B,r.resonanceCb=a,e.calculateCoefficients(r,B));for(let C=0;C<t.length;C++){let d=t[C],E=r.a0*d+r.a1*r.x1+r.a2*r.x2-r.a3*r.y1-r.a4*r.y2;r.x2=r.x1,r.x1=d,r.y2=r.y1,r.y1=E,t[C]=E}}static calculateCoefficients(A,t){t=~~t;let n=A.resonanceCb,o=e.cachedCoefficients?.[n]?.[t];if(o!==void 0){A.a0=o.a0,A.a1=o.a1,A.a2=o.a2,A.a3=o.a3,A.a4=o.a4;return}let s=Pe(t);s=Math.min(s,.45*sampleRate);let r=n/10,B=XA(-1*(r-3.01)),a=1/Math.sqrt(XA(-r)),C=2*Math.PI*s/sampleRate,d=Math.cos(C),E=Math.sin(C)/(2*B),Q=(1-d)*a,h=Q/2,y=h,f=1+E,S=-2*d,k=1-E,M={};M.a0=h/f,M.a1=Q/f,M.a2=y/f,M.a3=S/f,M.a4=k/f,A.a0=M.a0,A.a1=M.a1,A.a2=M.a2,A.a3=M.a3,A.a4=M.a4,e.cachedCoefficients[n]===void 0&&(e.cachedCoefficients[n]=[]),e.cachedCoefficients[n][t]=M}},pn=new ue;pn.resonanceCb=0;for(let e=1500;e<13500;e++)pn.currentInitialFc=e,ue.calculateCoefficients(pn,e);var SA=16384,Ie=new Float32Array(SA+1),ke=new Float32Array(SA+1);Ie[0]=0;Ie[Ie.length-1]=1;ke[0]=0;ke[ke.length-1]=1;for(let e=1;e<SA-1;e++){let A=-.4166666666666667*Math.log(e/(Ie.length-1))/Math.LN10;ke[e]=1-A,Ie[Ie.length-1-e]=A}function we(e,A,t,n){switch(e&&(t=1-t),A){case fA.linear:return n?t*2-1:t;case fA.switch:return t=t>.5?1:0,n?t*2-1:t;case fA.concave:return n?(t=t*2-1,t<0?-Ie[~~(t*-SA)]:Ie[~~(t*SA)]):Ie[~~(t*SA)];case fA.convex:return n?(t=t*2-1,t<0?-ke[~~(t*-SA)]:ke[~~(t*SA)]):ke[~~(t*SA)]}}var yn=1,Sn=new Float32Array(1e3);for(let e=0;e<Sn.length;e++)Sn[e]=we(0,fA.convex,e/1e3,0);var $A=class e{attackDuration=0;decayDuration=0;holdDuration=0;releaseDuration=0;sustainLevel=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;releaseStartLevel=0;currentValue=0;static startRelease(A){e.recalculate(A)}static recalculate(A){let t=A.modulationEnvelope;A.isInRelease&&(t.releaseStartLevel=e.getValue(A,A.releaseStartTime,!0)),t.sustainLevel=1-A.modulatedGenerators[i.sustainModEnv]/1e3,t.attackDuration=zA(A.modulatedGenerators[i.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[i.keyNumToModEnvDecay],o=zA(A.modulatedGenerators[i.decayModEnv]+n);t.decayDuration=o*(1-t.sustainLevel);let s=(60-A.midiNote)*A.modulatedGenerators[i.keyNumToModEnvHold];t.holdDuration=zA(s+A.modulatedGenerators[i.holdModEnv]);let r=zA(A.modulatedGenerators[i.releaseModEnv]);t.releaseDuration=r*t.releaseStartLevel,t.delayEnd=A.startTime+zA(A.modulatedGenerators[i.delayModEnv]),t.attackEnd=t.delayEnd+t.attackDuration,t.holdEnd=t.attackEnd+t.holdDuration,t.decayEnd=t.holdEnd+t.decayDuration}static getValue(A,t,n=!1){let o=A.modulationEnvelope;return A.isInRelease&&!n?o.releaseStartLevel===0?0:Math.max(0,(1-(t-A.releaseStartTime)/o.releaseDuration)*o.releaseStartLevel):(t<o.delayEnd?o.currentValue=0:t<o.attackEnd?o.currentValue=Sn[~~((1-(o.attackEnd-t)/o.attackDuration)*1e3)]:t<o.holdEnd?o.currentValue=yn:t<o.decayEnd?o.currentValue=(1-(o.decayEnd-t)/o.decayDuration)*(o.sustainLevel-yn)+yn:o.currentValue=o.sustainLevel,o.currentValue)}};var Vr=-2320,Or=-1130,Nt=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,t,n,o,s,r,B,a){this.sampleData=A,this.playbackStep=t,this.cursor=n,this.rootKey=o,this.loopStart=s,this.loopEnd=r,this.end=B,this.loopingMode=a,this.isLooping=this.loopingMode===1||this.loopingMode===3}},ze=class e{sample;filter=new ue;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new $A;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;exclusiveClass=0;constructor(A,t,n,o,s,r,B,a,C,d){this.sample=t,this.generators=C,this.exclusiveClass=this.generators[i.exclusiveClass],this.modulatedGenerators=new Int16Array(C),this.modulators=d,this.velocity=o,this.midiNote=n,this.channelNumber=s,this.startTime=r,this.targetKey=B,this.realKey=a,this.volumeEnvelope=new jA(A,C[i.sustainVolEnv])}static copy(A,t){let n=A.sample,o=new Nt(n.sampleData,n.playbackStep,n.cursor,n.rootKey,n.loopStart,n.loopEnd,n.end,n.loopingMode);return new e(A.volumeEnvelope.sampleRate,o,A.midiNote,A.velocity,A.channelNumber,t,A.targetKey,A.realKey,A.generators,A.modulators.map(s=>P.copy(s)))}exclusiveRelease(){this.release(Ms),this.modulatedGenerators[i.releaseVolEnv]=Vr,this.modulatedGenerators[i.releaseModEnv]=Or,jA.recalculate(this),$A.recalculate(this)}release(A=xs){this.releaseStartTime=currentTime,this.releaseStartTime-this.startTime<A&&(this.releaseStartTime=this.startTime+A)}};function Gs(e,A,t,n,o,s=!1){let r,B=this.workletProcessorChannels[e],a=this.keyModifierManager.hasOverridePatch(e,A),C=B.getBankSelect(),d=B.preset.program;if(a){let h=this.keyModifierManager.getPatch(e,A);C=h.bank,d=h.program}let E=this.getCachedVoice(C,d,A,t);if(E!==void 0)return E.map(h=>ze.copy(h,n));let Q=B.preset;return a&&(Q=this.soundfontManager.getPreset(C,d)),r=Q.getSamplesAndGenerators(A,t).reduce((h,y)=>{if(y.sample.getAudioData()===void 0)return J(`Discarding invalid sample: ${y.sample.sampleName}`),h;let f=new Int16Array(60);for(let g=0;g<60;g++)f[g]=so(g,y.presetGenerators,y.instrumentGenerators);f[i.initialAttenuation]=Math.floor(f[i.initialAttenuation]*.4);let S=y.sample.samplePitch;f[i.overridingRootKey]>-1&&(S=f[i.overridingRootKey]);let k=A;f[i.keyNum]>-1&&(k=f[i.keyNum]);let M=y.sample.sampleLoopStartIndex,x=y.sample.sampleLoopEndIndex,b=f[i.sampleModes],G=new Nt(y.sample.sampleData,y.sample.sampleRate/sampleRate*Math.pow(2,y.sample.samplePitchCorrection/1200),0,S,M,x,Math.floor(y.sample.sampleData.length)-1,b);return f[i.velocity]>-1&&(t=f[i.velocity]),s&&$n([{Sample:y.sample.sampleName,Generators:f,Modulators:y.modulators.map(g=>P.debugString(g)),Velocity:t,TargetKey:k,MidiNote:A,WorkletSample:G}]),h.push(new ze(sampleRate,G,A,t,e,n,k,o,f,y.modulators.map(g=>P.copy(g)),this.filterSmoothingFactor)),h},[]),this.setCachedVoice(C,d,A,t,r.map(h=>ze.copy(h,n))),r}var bs=.05,Pr=4600,Zr=2e3,Ns=Math.PI/2,bt=-500,Ls=500,Dn=Ls-bt,Us=new Float32Array(Dn+1),Ts=new Float32Array(Dn+1);for(let e=bt;e<=Ls;e++){let A=(e-bt)/Dn,t=e-bt;Us[t]=Math.cos(Ns*A),Ts[t]=Math.sin(Ns*A)}function vs(e,A,t,n,o,s,r,B){if(isNaN(A[0]))return;let a;e.overridePan?a=e.overridePan:(e.currentPan+=(e.modulatedGenerators[i.pan]-e.currentPan)*this.synth.panSmoothingFactor,a=e.currentPan);let C=this.synth.currentGain,d=~~(a+500),E=Us[d]*C*this.synth.panLeft,Q=Ts[d]*C*this.synth.panRight;if(!this.synth.oneOutputMode){let h=e.modulatedGenerators[i.reverbEffectsSend];if(h>0){let f=this.synth.reverbGain*C*(h/Pr);for(let S=0;S<A.length;S++)o[S]+=f*A[S];s.set(o)}let y=e.modulatedGenerators[i.chorusEffectsSend];if(y>0){let f=this.synth.chorusGain*y/Zr,S=E*f,k=Q*f;for(let M=0;M<A.length;M++)r[M]+=S*A[M],B[M]+=k*A[M]}}if(E>0)for(let h=0;h<A.length;h++)t[h]+=E*A[h];if(Q>0)for(let h=0;h<A.length;h++)n[h]+=Q*A[h]}function Hs(e=!1){p("%cStop all received!",I.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].stopAllNotes(e);this.callEvent("stopall",void 0)}function Ys(e,A){this.soundfontBankOffset=A,this.reloadSoundFont(e,!0),this.overrideSoundfont.samples.forEach(t=>t.getAudioData()),this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers())}function Js(e,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=_e(e),this.overrideSoundfont.setSampleIDOffset(this.soundfontManager.totalSoundfontOffset)):this.soundfontManager.reloadManager(e)}catch(t){this.post({messageType:MA.soundfontError,messageData:t});return}this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels.forEach(t=>t.programChange(t.preset.program)),this.post({messageType:MA.ready,messageData:void 0}),this.sendPresetList(),p("%cSpessaSynth is ready!",I.recognized)}function Ks(e=!0,A=!0){this.stopAllChannels(!0),A&&(delete this.overrideSoundfont,this.overrideSoundfont=void 0),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.cachedVoices=[];for(let t=0;t<this.workletProcessorChannels.length;t++){let n=this.workletProcessorChannels[t];(!A||A&&n.presetUsesOverride)&&(n.lockPreset=!1),n.programChange(n.preset.program)}e&&this.sendPresetList()}function qs(){let e=this.soundfontManager.getPresetList();this.overrideSoundfont!==void 0&&this.overrideSoundfont.presets.forEach(A=>{let t=A.bank===128?128:A.bank+this.soundfontBankOffset,n=e.find(o=>o.bank===t&&o.program===A.program);n!==void 0?n.presetName=A.presetName:e.push({presetName:A.presetName,bank:t,program:A.program})}),this.callEvent("presetlistchange",e)}function Vs(e,A){if(this.overrideSoundfont){let t=e===128?128:e-this.soundfontBankOffset,n=this.overrideSoundfont.getPresetNoFallback(t,A);if(n)return n}return this.soundfontManager.getPreset(e,A)}function Os(e,A=!1){this.transposition=0;for(let t=0;t<this.workletProcessorChannels.length;t++)this.workletProcessorChannels[t].transposeChannel(e,A);this.transposition=e}function Ps(e){e=Math.round(e);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].setCustomController(aA.masterTuning,e)}var je=class e{program;bank;patchName;lockPreset;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,t){let n=A.workletProcessorChannels[t],o=new e;return o.program=n.preset.program,o.bank=n.getBankSelect(),o.lockPreset=n.lockPreset,o.patchName=n.preset.presetName,o.midiControllers=n.midiControllers,o.lockedControllers=n.lockedControllers,o.customControllers=n.customControllers,o.channelVibrato=n.channelVibrato,o.lockVibrato=n.lockGSNRPNParams,o.channelTransposeKeyShift=n.channelTransposeKeyShift,o.channelOctaveTuning=n.channelOctaveTuning,o.isMuted=n.isMuted,o.velocityOverride=n.velocityOverride,o.drumChannel=n.drumChannel,o}static applyChannelSnapshot(A,t,n){let o=A.workletProcessorChannels[t];o.muteChannel(n.isMuted),o.setDrums(n.drumChannel),o.midiControllers=n.midiControllers,o.lockedControllers=n.lockedControllers,o.customControllers=n.customControllers,o.updateChannelTuning(),o.channelVibrato=n.channelVibrato,o.lockGSNRPNParams=n.lockVibrato,o.channelTransposeKeyShift=n.channelTransposeKeyShift,o.channelOctaveTuning=n.channelOctaveTuning,o.velocityOverride=n.velocityOverride,o.lockPreset=!1,o.setBankSelect(n.bank),o.programChange(n.program),o.lockPreset=n.lockPreset}};var Le=class e{channelSnapshots;keyMappings;mainVolume;pan;interpolation;system;transposition;effectsConfig;static createSynthesizerSnapshot(A){let t=new e;return t.channelSnapshots=A.workletProcessorChannels.map((n,o)=>je.getChannelSnapshot(A,o)),t.keyMappings=A.keyModifierManager.getMappings(),t.mainVolume=A.midiVolume,t.pan=A.pan,t.system=A.system,t.interpolation=A.interpolationType,t.transposition=A.transposition,t.effectsConfig={},t}static applySnapshot(A,t){for(A.system=t.system,A.setMasterGain(t.mainVolume),A.setMasterPan(t.pan),A.transposeAllChannels(t.transposition),A.interpolationType=t.interpolation,A.keyModifierManager.setMappings(t.keyMappings);A.workletProcessorChannels.length<t.channelSnapshots.length;)A.createWorkletChannel();t.channelSnapshots.forEach((n,o)=>{je.applyChannelSnapshot(A,o,n)}),p("%cFinished restoring controllers!",I.info)}};function Zs(){this.post({messageType:MA.synthesizerSnapshot,messageData:Le.createSynthesizerSnapshot(this)})}function Xs(e){Le.applySnapshot(this,e),p("%cFinished applying snapshot!",I.info)}function Lt(e,A,t){if(t<e)return 0;let n=(t-e)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}function Ws(e,A,t,n,o,s,r){let B=currentTime;if(e.isInRelease||B>=e.releaseStartTime&&(e.isInRelease=!0,jA.startRelease(e),$A.startRelease(e),e.sample.loopingMode===3&&(e.sample.isLooping=!1)),e.modulatedGenerators[i.initialAttenuation]>2500)return e.isInRelease&&(e.finished=!0),e.finished;let a=e.targetKey,C=e.modulatedGenerators[i.fineTune]+this.channelOctaveTuning[e.midiNote]+this.channelTuningCents,d=e.modulatedGenerators[i.coarseTune],E=this.synth.tunings[this.preset.program]?.[e.realKey];if(E!==void 0&&E?.midiNote>=0&&(a=E.midiNote,C+=E.centTuning),e.portamentoFromKey>-1){let g=Math.min((B-e.startTime)/e.portamentoDuration,1),F=a-e.portamentoFromKey;d-=F*(1-g)}C+=(a-e.sample.rootKey)*e.modulatedGenerators[i.scaleTuning];let Q=e.modulatedGenerators[i.vibLfoToPitch];if(Q!==0){let g=e.startTime+zA(e.modulatedGenerators[i.delayVibLFO]),F=Pe(e.modulatedGenerators[i.freqVibLFO]),H=Lt(g,F,B);C+=H*(Q*this.customControllers[aA.modulationMultiplier])}let h=0,y=e.modulatedGenerators[i.modLfoToPitch],f=e.modulatedGenerators[i.modLfoToVolume],S=e.modulatedGenerators[i.modLfoToFilterFc],k=0;if(y!==0||S!==0||f!==0){let g=e.startTime+zA(e.modulatedGenerators[i.delayModLFO]),F=Pe(e.modulatedGenerators[i.freqModLFO]),H=Lt(g,F,B);C+=H*(y*this.customControllers[aA.modulationMultiplier]),k=-H*f,h+=H*S}if(this.channelVibrato.depth>0){let g=Lt(e.startTime+this.channelVibrato.delay,this.channelVibrato.rate,B);g&&(C+=g*this.channelVibrato.depth)}let M=e.modulatedGenerators[i.modEnvToPitch],x=e.modulatedGenerators[i.modEnvToFilterFc];if(x!==0||M!==0){let g=$A.getValue(e,B);h+=g*x,C+=g*M}let b=~~(C+d*100);b!==e.currentTuningCents&&(e.currentTuningCents=b,e.currentTuningCalculated=Math.pow(2,b/1200));let G=new Float32Array(A.length);switch(this.synth.interpolationType){case be.fourthOrder:Ne.getSampleCubic(e,G);break;case be.linear:default:Ne.getSampleLinear(e,G);break;case be.nearestNeighbor:Ne.getSampleNearest(e,G);break}return ue.apply(e,G,h,this.synth.filterSmoothingFactor),jA.apply(e,G,k,this.synth.volumeEnvelopeSmoothingFactor),this.panVoice(e,G,A,t,n,o,s,r),e.finished}function _s(e,A=-12e3){this.voices.forEach(t=>{t.realKey===e&&(t.modulatedGenerators[i.releaseVolEnv]=A,t.release())})}function zs(e,A=!0){e=Math.round(e),this.setCustomController(aA.channelTuning,e),A&&p(`%cFine tuning for %c${this.channelNumber}%c is now set to %c${e}%c cents.`,I.info,I.recognized,I.info,I.value,I.info)}function js(e){e=Math.round(e),p(`%cChannel ${this.channelNumber} modulation depth. Cents: %c${e}`,I.info,I.value),this.setCustomController(aA.modulationMultiplier,e/50)}function $s(e){switch(this.dataEntryState){default:break;case GA.RPCoarse:case GA.RPFine:switch(this.midiControllers[m.RPNMsb]|this.midiControllers[m.RPNLsb]>>7){default:break;case 0:if(e===0)break;this.midiControllers[mA+W.pitchWheelRange]|=e;let t=(this.midiControllers[mA+W.pitchWheelRange]>>7)+e/128;p(`%cChannel ${this.channelNumber} bend range. Semitones: %c${t}`,I.info,I.value);break;case 1:let o=this.customControllers[aA.channelTuning]<<7|e;this.setTuning(o*.01220703125);break;case 5:let r=this.customControllers[aA.modulationMultiplier]*50+e/128*100;this.setModulationDepth(r);break;case 16383:this.resetParameters();break}}}var Xr=1e3/200;function Ar(e,A,t){if(A.transformAmount===0)return A.currentValue=0,0;let n;if(A.sourceUsesCC)n=e[A.sourceIndex];else{let C=A.sourceIndex+mA;switch(A.sourceIndex){case W.noController:n=16383;break;case W.noteOnKeyNum:n=t.midiNote<<7;break;case W.noteOnVelocity:n=t.velocity<<7;break;case W.polyPressure:n=t.pressure<<7;break;default:n=e[C];break}}let o=Fe[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],s;if(A.secSrcUsesCC)s=e[A.secSrcIndex];else{let C=A.secSrcIndex+mA;switch(A.secSrcIndex){case W.noController:s=16383;break;case W.noteOnKeyNum:s=t.midiNote<<7;break;case W.noteOnVelocity:s=t.velocity<<7;break;case W.polyPressure:s=t.pressure<<7;break;default:s=e[C]}}let r=Fe[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][s],B=A.transformAmount;A.isEffectModulator&&B<=1e3&&(B*=Xr,B=Math.min(B,1e3));let a=o*r*B;return A.transformType===2&&(a=Math.abs(a)),A.currentValue=a,a}function Ae(e,A,t=-1,n=0){let o=e.modulators,s=e.generators,r=e.modulatedGenerators;if(t===-1){r.set(s),o.forEach(C=>{let d=q[C.modulatorDestination],E=r[C.modulatorDestination]+Ar(A,C,e);r[C.modulatorDestination]=Math.max(d.min,Math.min(E,d.max))}),jA.recalculate(e),$A.recalculate(e);return}let B=new Set([i.initialAttenuation,i.delayVolEnv,i.attackVolEnv,i.holdVolEnv,i.decayVolEnv,i.sustainVolEnv,i.releaseVolEnv,i.keyNumToVolEnvHold,i.keyNumToVolEnvDecay]),a=new Set;o.forEach(C=>{if(C.sourceUsesCC===t&&C.sourceIndex===n||C.secSrcUsesCC===t&&C.secSrcIndex===n){let d=C.modulatorDestination;a.has(d)||(r[d]=s[d],Ar(A,C,e),o.forEach(E=>{if(E.modulatorDestination===d){let Q=q[C.modulatorDestination],h=r[C.modulatorDestination]+E.currentValue;r[C.modulatorDestination]=Math.max(Q.min,Math.min(h,Q.max))}}),a.add(d))}}),[...a].some(C=>B.has(C))&&jA.recalculate(e),$A.recalculate(e)}var Fe=[];for(let e=0;e<4;e++){Fe[e]=[[new Float32Array(SA),new Float32Array(SA)],[new Float32Array(SA),new Float32Array(SA)]];for(let A=0;A<SA;A++)Fe[e][0][0][A]=we(0,e,A/SA,0),Fe[e][1][0][A]=we(0,e,A/SA,1),Fe[e][0][1][A]=we(1,e,A/SA,0),Fe[e][1][1][A]=we(1,e,A/SA,1)}function er(e,A,t=!1){if(e>127){if(!t)return;switch(e){default:return;case ro.velocityOverride:this.velocityOverride=A}}if(e>=m.lsbForControl1ModulationWheel&&e<=m.lsbForControl13EffectControl2&&e!==m.lsbForControl6DataEntry){let n=e-32;if(this.lockedControllers[n])return;this.midiControllers[n]=this.midiControllers[n]&16256|A&127,this.voices.forEach(o=>Ae(o,this.midiControllers,1,n))}if(!this.lockedControllers[e]){switch(this.midiControllers[e]=A<<7,e){case m.allNotesOff:this.stopAllNotes();break;case m.allSoundOff:this.stopAllNotes(!0);break;case m.bankSelect:let n=A;if(!t){switch(this.synth.system){case"gm":p(`%cIgnoring the Bank Select (${A}), as the synth is in GM mode.`,I.info);return;case"xg":n===120||n===126||n===127?this.setDrums(!0):this.channelNumber%16!==9&&this.setDrums(!1);break;case"gm2":n===120?this.setDrums(!0):this.channelNumber%16!==9&&this.setDrums(!1)}this.drumChannel&&(n=128),n===128&&!this.drumChannel&&(n=this.getBankSelect())}this.setBankSelect(n);break;case m.lsbForControl0BankSelect:this.synth.system==="xg"?this.drumChannel||A!==127&&this.setBankSelect(A):this.synth.system==="gm2"&&this.setBankSelect(A);break;case m.RPNLsb:this.dataEntryState=GA.RPFine;break;case m.RPNMsb:this.dataEntryState=GA.RPCoarse;break;case m.NRPNMsb:this.dataEntryState=GA.NRPCoarse;break;case m.NRPNLsb:this.dataEntryState=GA.NRPFine;break;case m.dataEntryMsb:this.dataEntryCoarse(A);break;case m.lsbForControl6DataEntry:this.dataEntryFine(A);break;case m.resetAllControllers:this.resetControllersRP15Compliant();break;case m.sustainPedal:A>=64?this.holdPedal=!0:(this.holdPedal=!1,this.sustainedVoices.forEach(o=>{o.release()}),this.sustainedVoices=[]);break;default:this.voices.forEach(o=>Ae(o,this.midiControllers,1,e));break}this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:e,controllerValue:A})}}function tr(e=!1){e?(this.voices.length=0,this.sustainedVoices.length=0,this.synth.sendChannelProperties()):(this.voices.forEach(A=>{A.isInRelease||A.release()}),this.sustainedVoices.forEach(A=>{A.release()}))}function nr(e){e&&this.stopAllNotes(!0),this.isMuted=e,this.synth.sendChannelProperties(),this.synth.callEvent("mutechannel",{channel:this.channelNumber,isMuted:e})}function or(e,A=!1){this.drumChannel||(e+=this.synth.transposition);let t=Math.trunc(e),n=this.channelTransposeKeyShift+this.customControllers[aA.channelTransposeFine]/100;this.drumChannel&&!A||e===n||(t!==this.channelTransposeKeyShift&&this.controllerChange(m.allNotesOff,127),this.channelTransposeKeyShift=t,this.setCustomController(aA.channelTransposeFine,(e-t)*100),this.synth.sendChannelProperties())}var $e={pitchBendRange:0,fineTuning:1,coarseTuning:2,modulationDepth:5,resetParameters:16383},fe={partParameter:1,vibratoRate:8,vibratoDepth:9,vibratoDelay:10,EGAttackTime:100,EGReleaseTime:102,TVFFilterCutoff:32,drumReverb:29};function sr(e){let A=()=>{this.channelVibrato.delay===0&&this.channelVibrato.rate===0&&this.channelVibrato.depth===0&&(this.channelVibrato.depth=50,this.channelVibrato.rate=8,this.channelVibrato.delay=.6)},t=(n,o,s)=>{s.length>0&&(s=" "+s),p(`%c${n} for %c${this.channelNumber}%c is now set to %c${o}%c${s}.`,I.info,I.recognized,I.info,I.value,I.info)};switch(this.dataEntryState){default:case GA.Idle:break;case GA.NRPFine:if(this.lockGSNRPNParams)return;let n=this.midiControllers[m.NRPNMsb]>>7,o=this.midiControllers[m.NRPNLsb]>>7;switch(n){default:if(e===64)return;J(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${o.toString(16).toUpperCase()} 0x${o.toString(16).toUpperCase()})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case fe.partParameter:switch(o){default:if(e===64)return;J(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${n.toString(16)} 0x${o.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case fe.vibratoRate:if(e===64)return;A(),this.channelVibrato.rate=e/64*8,t("Vibrato rate",`${e} = ${this.channelVibrato.rate}`,"Hz");break;case fe.vibratoDepth:if(e===64)return;A(),this.channelVibrato.depth=e/2,t("Vibrato depth",`${e} = ${this.channelVibrato.depth}`,"cents of detune");break;case fe.vibratoDelay:if(e===64)return;A(),this.channelVibrato.delay=e/64/3,t("Vibrato delay",`${e} = ${this.channelVibrato.delay}`,"seconds");break;case fe.TVFFilterCutoff:this.controllerChange(m.brightness,e),t("Filter cutoff",e.toString(),"");break;case fe.EGAttackTime:this.controllerChange(m.attackTime,e),t("EG attack time",e.toString(),"");break;case fe.EGReleaseTime:this.controllerChange(m.releaseTime,e),t("EG release time",e.toString(),"");break}break;case fe.drumReverb:let r=e;this.controllerChange(m.reverbDepth,r),t("GS Drum reverb",r.toString(),"percent");break}break;case GA.RPCoarse:case GA.RPFine:let s=this.midiControllers[m.RPNMsb]|this.midiControllers[m.RPNLsb]>>7;switch(s){default:J(`%cUnrecognized RPN for %c${this.channelNumber}%c: %c(0x${s.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case $e.pitchBendRange:this.midiControllers[mA+W.pitchWheelRange]=e<<7,t("Pitch bend range",e.toString(),"semitones");break;case $e.coarseTuning:let r=e-64;this.setCustomController(aA.channelTuningSemitones,r),t("Coarse tuning",r.toString(),"semitones");break;case $e.fineTuning:this.setTuning(e-64,!1);break;case $e.modulationDepth:this.setModulationDepth(e*100);break;case $e.resetParameters:this.resetParameters();break}}}var At={0:0,1:.006,2:.023,4:.05,8:.11,16:.25,32:.5,64:2.06,80:4.2,96:8.4,112:19.5,116:26.7,120:40,124:80,127:480};function Wr(e){if(At[e]!==void 0)return At[e];let A=null,t=null;for(let n of Object.keys(At))n=parseInt(n),n<e&&(A===null||n>A)&&(A=n),n>e&&(t===null||n<t)&&(t=n);if(A!==null&&t!==null){let n=At[A],o=At[t];return n+(e-A)*(o-n)/(t-A)}return 0}function rr(e,A){return Wr(e)*(A/30)}function ir(e,A,t=!1,n=!0,o=currentTime){if(A<1){this.noteOff(e);return}if(A=Math.min(127,A),this.synth.highPerformanceMode&&this.synth.totalVoicesAmount>200&&A<40||this.synth.highPerformanceMode&&A<10||this.isMuted)return;let s=e+this.channelTransposeKeyShift,r=s;if(s>127||s<0)return;let B=this.preset.program;this.synth.tunings[B]?.[s]?.midiNote>=0&&(r=this.synth.tunings[B]?.[s].midiNote),this.velocityOverride>0&&(A=this.velocityOverride);let a=this.synth.keyModifierManager.getVelocity(this.channelNumber,s);a>-1&&(A=a);let C=-1,d=0,E=this.midiControllers[m.portamentoTime]>>7,Q=this.midiControllers[m.portamentoControl],h=Q>>7;if(!this.drumChannel&&h!==r&&this.midiControllers[m.portamentoOnOff]>=8192&&E>0){if(Q!==1){let k=Math.abs(r-h);d=rr(E,k),C=h}this.controllerChange(m.portamentoControl,r)}let y=this.synth.getWorkletVoices(this.channelNumber,r,A,o,s,t),f=0;this.randomPan&&(f=Math.round(Math.random()*1e3-500));let S=this.voices;y.forEach(k=>{k.portamentoFromKey=C,k.portamentoDuration=d,k.overridePan=f;let M=k.exclusiveClass;M!==0&&S.forEach(oA=>{oA.exclusiveClass===M&&oA.exclusiveRelease()}),Ae(k,this.midiControllers);let x=k.modulatedGenerators[i.startAddrsOffset]+k.modulatedGenerators[i.startAddrsCoarseOffset]*32768,b=k.modulatedGenerators[i.endAddrOffset]+k.modulatedGenerators[i.endAddrsCoarseOffset]*32768,G=k.modulatedGenerators[i.startloopAddrsOffset]+k.modulatedGenerators[i.startloopAddrsCoarseOffset]*32768,g=k.modulatedGenerators[i.endloopAddrsOffset]+k.modulatedGenerators[i.endloopAddrsCoarseOffset]*32768,F=k.sample,H=oA=>Math.max(0,Math.min(F.sampleData.length-1,oA));if(F.cursor=H(F.cursor+x),F.end=H(F.end+b),F.loopStart=H(F.loopStart+G),F.loopEnd=H(F.loopEnd+g),F.loopEnd<F.loopStart){let oA=F.loopStart;F.loopStart=F.loopEnd,F.loopEnd=oA}F.loopEnd-F.loopStart<1&&(F.loopingMode=0,F.isLooping=!1),k.volumeEnvelope.attenuation=k.volumeEnvelope.attenuationTargetGain,k.currentPan=Math.max(-500,Math.min(500,k.modulatedGenerators[i.pan]))}),this.synth.totalVoicesAmount+=y.length,this.synth.totalVoicesAmount>this.synth.voiceCap&&this.synth.voiceKilling(y.length),S.push(...y),n&&(this.synth.sendChannelProperties(),this.synth.callEvent("noteon",{midiNote:e,channel:this.channelNumber,velocity:A}))}function ar(e){if(e>127||e<0){J("Received a noteOn for note",e,"Ignoring.");return}let A=e+this.channelTransposeKeyShift;if(this.synth.highPerformanceMode&&!this.drumChannel){this.killNote(A,-6950),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber});return}this.voices.forEach(n=>{n.realKey!==A||n.isInRelease===!0||(this.holdPedal?this.sustainedVoices.push(n):n.release())}),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber})}function Ir(e,A){this.voices.forEach(t=>{t.midiNote===e&&(t.pressure=A,Ae(t,this.midiControllers,0,W.polyPressure))}),this.synth.callEvent("polypressure",{channel:this.channelNumber,midiNote:e,pressure:A})}function gr(e){this.midiControllers[mA+W.channelPressure]=e<<7,this.voices.forEach(A=>Ae(A,this.midiControllers,0,W.channelPressure)),this.synth.callEvent("channelpressure",{channel:this.channelNumber,pressure:e})}function Cr(e,A){if(this.lockedControllers[mA+W.pitchWheel])return;let t=A|e<<7;this.synth.callEvent("pitchwheel",{channel:this.channelNumber,MSB:e,LSB:A}),this.midiControllers[mA+W.pitchWheel]=t,this.voices.forEach(n=>Ae(n,this.midiControllers,0,W.pitchWheel)),this.synth.sendChannelProperties()}function Er(e){if(e.length!==12)throw new Error("Tuning is not the length of 12.");this.channelOctaveTuning=new Int8Array(128);for(let A=0;A<128;A++)this.channelOctaveTuning[A]=e[A%12]}function Br(e,A=!1){if(this.lockPreset)return;let t=this.getBankSelect(),n,o;if(this.synth.overrideSoundfont){let s=t===128?128:t-this.synth.soundfontBankOffset,r=this.synth.overrideSoundfont.getPresetNoFallback(s,e);r?(n=t,o=r,this.presetUsesOverride=!0):(o=this.synth.soundfontManager.getPreset(t,e),n=o.bank,this.presetUsesOverride=!1)}else o=this.synth.soundfontManager.getPreset(t,e),n=o.bank,this.presetUsesOverride=!1;this.setPreset(o),this.synth.callEvent("programchange",{channel:this.channelNumber,program:o.program,bank:n,userCalled:A})}var lA=class{midiControllers=new Int16Array(lt);lockedControllers=Array(lt).fill(!1);customControllers=new Float32Array($t);channelTransposeKeyShift=0;channelOctaveTuning=new Int8Array(128);channelTuningCents=0;holdPedal=!1;drumChannel=!1;velocityOverride=0;randomPan=!1;dataEntryState=GA.Idle;bank=0;preset=void 0;lockPreset=!1;presetUsesOverride=!1;lockGSNRPNParams=!1;channelVibrato={delay:0,depth:0,rate:0};isMuted=!1;voices=[];sustainedVoices=[];channelNumber;synth;constructor(A,t,n){this.synth=A,this.preset=t,this.channelNumber=n}setCustomController(A,t){this.customControllers[A]=t,this.updateChannelTuning()}updateChannelTuning(){this.channelTuningCents=this.customControllers[aA.channelTuning]+this.customControllers[aA.channelTransposeFine]+this.customControllers[aA.masterTuning]+this.customControllers[aA.channelTuningSemitones]*100}renderAudio(A,t,n,o,s,r){this.voices=this.voices.filter(B=>!this.renderVoice(B,A,t,n,o,s,r))}setBankSelect(A){this.lockPreset||(this.bank=A)}getBankSelect(){return this.drumChannel?128:this.bank}setPreset(A){this.lockPreset||(delete this.preset,this.preset=A)}setDrums(A){this.lockPreset||this.drumChannel!==A&&(A?(this.channelTransposeKeyShift=0,this.drumChannel=!0,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))):(this.drumChannel=!1,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))),this.presetUsesOverride=!1,this.synth.callEvent("drumchange",{channel:this.channelNumber,isDrumChannel:this.drumChannel}),this.synth.sendChannelProperties())}setVibrato(A,t,n){this.lockGSNRPNParams||(this.channelVibrato.rate=t,this.channelVibrato.delay=n,this.channelVibrato.depth=A)}disableAndLockGSNRPN(){this.lockGSNRPNParams=!0,this.channelVibrato.rate=0,this.channelVibrato.delay=0,this.channelVibrato.depth=0}};lA.prototype.renderVoice=Ws;lA.prototype.panVoice=vs;lA.prototype.killNote=_s;lA.prototype.stopAllNotes=tr;lA.prototype.muteChannel=nr;lA.prototype.noteOn=ir;lA.prototype.noteOff=ar;lA.prototype.polyPressure=Ir;lA.prototype.channelPressure=gr;lA.prototype.pitchWheel=Cr;lA.prototype.programChange=Br;lA.prototype.setTuning=zs;lA.prototype.setOctaveTuning=Er;lA.prototype.setModulationDepth=js;lA.prototype.transposeChannel=or;lA.prototype.controllerChange=er;lA.prototype.resetControllers=fo;lA.prototype.resetControllersRP15Compliant=mo;lA.prototype.resetParameters=po;lA.prototype.dataEntryFine=$s;lA.prototype.dataEntryCoarse=sr;function hr(e=!1){let A=new lA(this,this.defaultPreset,this.workletProcessorChannels.length);this.workletProcessorChannels.push(A),A.resetControllers(),this.sendChannelProperties(),e&&this.callEvent("newchannel",void 0),A.channelNumber%16===9&&this.workletProcessorChannels[this.workletProcessorChannels.length-1].setDrums(!0)}var xs=.03,Ms=.07,Cn=1,cA=class extends AudioWorkletProcessor{cachedVoices=[];alive=!0;deviceID=ZA;interpolationType=be.fourthOrder;sequencer=new QA(this);transposition=0;tunings=[];soundfontBankOffset=0;masterGain=Cn;midiVolume=1;reverbGain=1;chorusGain=1;voiceCap=350;pan=0;panLeft=.5;panRight=.5;highPerformanceMode=!1;keyModifierManager=new Mt;overrideSoundfont=void 0;workletProcessorChannels=[];system=Qt;totalVoicesAmount=0;constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem;for(let t=0;t<127;t++)this.tunings.push([]);try{this.soundfontManager=new xt(A.processorOptions.soundfont,this.postReady.bind(this))}catch(t){throw this.post({messageType:MA.soundfontError,messageData:t}),t}this.sendPresetList(),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0);for(let t=0;t<A.processorOptions.midiChannels;t++)this.createWorkletChannel(!1);this.workletProcessorChannels[9].preset=this.drumPreset,this.workletProcessorChannels[9].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=vo*(44100/sampleRate),this.panSmoothingFactor=bs*(44100/sampleRate),this.filterSmoothingFactor=Rs*(44100/sampleRate),this._snapshot=A.processorOptions?.startRenderingData?.snapshot,this.port.onmessage=t=>this.handleMessage(t.data),A.processorOptions.startRenderingData&&(this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers()),p("%cRendering enabled! Starting render.",I.info),A.processorOptions.startRenderingData.parsedMIDI&&(A.processorOptions.startRenderingData?.loopCount!==void 0?(this.sequencer.loopCount=A.processorOptions.startRenderingData?.loopCount,this.sequencer.loop=!0):this.sequencer.loop=!1,this.voiceCap=1/0,this.sequencer.loadNewSongList([A.processorOptions.startRenderingData.parsedMIDI]))),oe.isInitialized.then(()=>{this.postReady(),p("%cSpessaSynth is ready!",I.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}getCachedVoice(A,t,n,o){return this.cachedVoices?.[A]?.[t]?.[n]?.[o]}setCachedVoice(A,t,n,o,s){this.cachedVoices||(this.cachedVoices=[]),this.cachedVoices[A]||(this.cachedVoices[A]=[]),this.cachedVoices[A][t]||(this.cachedVoices[A][t]=[]),this.cachedVoices[A][t][n]||(this.cachedVoices[A][t][n]=[]),this.cachedVoices[A][t][n][o]=s}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:MA.ready,messageData:void 0})}debugMessage(){p({channels:this.workletProcessorChannels,voicesAmount:this.totalVoicesAmount,outputAmount:this._outputsAmount,dumpedSamples:this.workletDumpedSamplesList})}process(A,t){if(!this.alive)return!1;this.sequencer.processTick();let n=0;return this.workletProcessorChannels.forEach((o,s)=>{if(o.voices.length<1||o.isMuted)return;let r,B,a,C,d,E,Q;if(this.oneOutputMode){let h=t[0];r=s%16*2,B=h[r],a=h[r+1]}else r=s%this._outputsAmount+2,B=t[r][0],a=t[r][1],C=t[0][0],d=t[0][1],E=t[1][0],Q=t[1][1];o.renderAudio(B,a,C,d,E,Q),n+=o.voices.length}),n!==this.totalVoicesAmount&&(this.totalVoicesAmount=n,this.sendChannelProperties()),!0}destroyWorkletProcessor(){this.alive=!1,this.workletProcessorChannels.forEach(A=>{delete A.midiControllers,delete A.voices,delete A.sustainedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.cachedVoices,delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}controllerChange(A,t,n,o=!1){this.workletProcessorChannels[A].controllerChange(t,n,o)}noteOn(A,t,n,o=!1,s=!0){this.workletProcessorChannels[A].noteOn(t,n,o,s)}noteOff(A,t){this.workletProcessorChannels[A].noteOff(t)}polyPressure(A,t,n){this.workletProcessorChannels[A].polyPressure(t,n)}channelPressure(A,t){this.workletProcessorChannels[A].channelPressure(t)}pitchWheel(A,t,n){this.workletProcessorChannels[A].pitchWheel(t,n)}programChange(A,t,n=!1){this.workletProcessorChannels[A].programChange(t,n)}};cA.prototype.voiceKilling=bo;cA.prototype.getWorkletVoices=Gs;cA.prototype.handleMessage=Ho;cA.prototype.sendChannelProperties=Jo;cA.prototype.callEvent=Yo;cA.prototype.systemExclusive=Ko;cA.prototype.stopAllChannels=Hs;cA.prototype.createWorkletChannel=hr;cA.prototype.resetAllControllers=uo;cA.prototype.setMasterGain=Vo;cA.prototype.setMasterPan=Oo;cA.prototype.setMIDIVolume=qo;cA.prototype.transposeAllChannels=Os;cA.prototype.setMasterTuning=Ps;cA.prototype.getPreset=Vs;cA.prototype.reloadSoundFont=Js;cA.prototype.clearSoundFont=Ks;cA.prototype.setEmbeddedSoundFont=Ys;cA.prototype.sendPresetList=qs;cA.prototype.sendSynthesizerSnapshot=Zs;cA.prototype.applySynthesizerSnapshot=Xs;registerProcessor(io,cA);p("%cProcessor succesfully registered!",I.recognized);
19
+ Converted from DLS to SF2 with SpessaSynth`;for(let[a,g]of Object.entries(this.soundFontInfo))y(`%c"${a}": %c"${g}"`,I.info,I.recognized);let s=n.find(a=>a.header==="colh");s||(P(),this.parsingError("No colh chunk!")),this.instrumentAmount=N(s.chunkData,4),y(`%cInstruments amount: %c${this.instrumentAmount}`,I.info,I.recognized);let r=PA(n,"wvpl");r||(P(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(r);let B=PA(n,"lins");B||(P(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(B),this.presets.sort((a,g)=>a.program-g.program+(a.bank-g.bank)),y(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
20
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),P()}verifyHeader(A,...t){for(let n of t)if(A.header.toLowerCase()===n.toLowerCase())return;P(),this.parsingError(`Invalid DLS chunk header! Expected "${t.toString()}" got "${A.header.toLowerCase()}"`)}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(P(),this.parsingError(`FourCC error: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};De.prototype.readDLSInstrumentList=Ps;De.prototype.readDLSInstrument=Vs;De.prototype.readRegion=_s;De.prototype.readLart=Ws;De.prototype.readDLSSamples=js;var Wn=class extends Le{constructor(A,t,n,o,s,r,B,a,g,d,E,c,h){super(A,r,B,a,g,d,o-t/2,s-t/2),this.sampleName=A,this.sampleStartIndex=t,this.sampleEndIndex=n,this.isSampleLoaded=!1,this.sampleID=c,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=E,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=h}getRawData(){let A=this.sampleDataArray;if(this.isCompressed){if(this.compressedData)return this.compressedData;let t=A.currentIndex;return A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t)}else{this.isDataRaw||super.getRawData();let t=A.currentIndex;return A.slice(t+this.sampleStartIndex,t+this.sampleEndIndex)}}decodeVorbis(){if(this.sampleLength<1)return;let A=this.sampleDataArray,t=A.currentIndex,n=A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t);this.sampleData=new Float32Array(0);try{let o=de.decode(n.buffer);this.sampleData=o.data[0],this.sampleData===void 0&&H(`Error decoding sample ${this.sampleName}: Vorbis decode returned undefined.`)}catch(o){H(`Error decoding sample ${this.sampleName}: ${o}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?(H(`Invalid sample ${this.sampleName}! Invalid length: ${this.sampleLength}`),new Float32Array(1)):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return H("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),t=this.sampleDataArray.currentIndex,n=new Int16Array(this.sampleDataArray.slice(t+this.sampleStartIndex,t+this.sampleEndIndex).buffer);for(let o=0;o<n.length;o++)A[o]=n[o]/32768;return this.sampleData=A,this.isSampleLoaded=!0,A}getUncompressedReadyData(){let A=this.sampleDataArray.slice(this.sampleStartIndex/2,this.sampleEndIndex/2);return this.sampleData=A,this.isSampleLoaded=!0,A}};function $s(e,A,t=!0){let n=[],o=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let s=ci(o,e.chunkData,A,t);n.push(s),o++}return n.length>1&&n.pop(),n}function ci(e,A,t,n){let o=eA(A,20),s=N(A,4)*2,r=N(A,4)*2,B=N(A,4),a=N(A,4),g=N(A,4),d=A[A.currentIndex++];d===255&&(d=60);let E=No(A[A.currentIndex++]),c=N(A,2),h=N(A,2);return new Wn(o,s,r,B,a,g,d,E,c,h,t,e,n)}var _n=class extends U{constructor(A){super();let t=A.currentIndex;this.generatorType=A[t+1]<<8|A[t],this.generatorValue=xe(A[t+2],A[t+3]),A.currentIndex+=4}};function zn(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new _n(e.chunkData));return A.length>1&&A.pop(),A}var jn=class extends Ue{constructor(A){super(),this.instrumentName=eA(A.chunkData,20).trim(),this.instrumentZoneIndex=N(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,t){this.instrumentZonesAmount=A;for(let n=this.instrumentZoneIndex;n<this.instrumentZonesAmount+this.instrumentZoneIndex;n++)this.instrumentZones.push(t[n])}};function Ar(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let n=new jn(e);if(t.length>0){let o=n.instrumentZoneIndex-t[t.length-1].instrumentZoneIndex;t[t.length-1].getInstrumentZones(o,A)}t.push(n)}return t.length>1&&t.pop(),t}var $n=class extends KA{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++)this.generators.push(A[t])}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++)this.modulators.push(A[t])}getSample(A){let t=this.generators.find(n=>n.generatorType===i.sampleID);t&&(this.sample=A[t.generatorValue],this.isGlobal=!1,this.sample.useCount++)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===i.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===i.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function er(e,A,t,n){let o=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new $n(e.chunkData);if(o.length>0){let r=s.modulatorZoneStartIndex-o[o.length-1].modulatorZoneStartIndex,B=s.generatorZoneStartIndex-o[o.length-1].generatorZoneStartIndex;o[o.length-1].setZoneSize(r,B),o[o.length-1].getGenerators(A),o[o.length-1].getModulators(t),o[o.length-1].getSample(n),o[o.length-1].getKeyRange(),o[o.length-1].getVelRange()}o.push(s)}return o.length>1&&o.pop(),o}var Ao=class extends be{constructor(A){super(),this.generatorZoneStartIndex=N(A,2),this.modulatorZoneStartIndex=N(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,t){this.modulatorZoneSize=A,this.generatorZoneSize=t}getGenerators(A){for(let t=this.generatorZoneStartIndex;t<this.generatorZoneStartIndex+this.generatorZoneSize;t++)this.generators.push(A[t])}getModulators(A){for(let t=this.modulatorZoneStartIndex;t<this.modulatorZoneStartIndex+this.modulatorZoneSize;t++)this.modulators.push(A[t])}getInstrument(A){let t=this.generators.find(n=>n.generatorType===i.instrument);t&&(this.instrument=A[t.generatorValue],this.instrument.addUseCount(),this.isGlobal=!1)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===i.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===i.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function tr(e,A,t,n){let o=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new Ao(e.chunkData);if(o.length>0){let r=s.modulatorZoneStartIndex-o[o.length-1].modulatorZoneStartIndex,B=s.generatorZoneStartIndex-o[o.length-1].generatorZoneStartIndex;o[o.length-1].setZoneSize(r,B),o[o.length-1].getGenerators(A),o[o.length-1].getModulators(t),o[o.length-1].getInstrument(n),o[o.length-1].getKeyRange(),o[o.length-1].getVelRange()}o.push(s)}return o.length>1&&o.pop(),o}var eo=class extends Te{constructor(A,t){super(t),this.presetName=eA(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=N(A.chunkData,2),this.bank=N(A.chunkData,2),this.presetZoneStartIndex=N(A.chunkData,2),this.library=N(A.chunkData,4),this.genre=N(A.chunkData,4),this.morphology=N(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,t){this.presetZonesAmount=A;for(let n=this.presetZoneStartIndex;n<this.presetZonesAmount+this.presetZoneStartIndex;n++)this.presetZones.push(t[n])}};function nr(e,A,t){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new eo(e,t);if(n.length>0){let s=o.presetZoneStartIndex-n[n.length-1].presetZoneStartIndex;n[n.length-1].getPresetZones(s,A)}n.push(o)}return n.length>1&&n.pop(),n}var to=class extends W{constructor(A){let t=N(A,2),n=N(A,2),o=xe(A[A.currentIndex++],A[A.currentIndex++]),s=N(A,2),r=N(A,2);super(t,s,n,o,r)}};function In(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new to(e.chunkData));return A}var gn=class extends ve{constructor(A,t=!0){super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new L(A),OA("%cParsing SoundFont...",I.info),this.dataArray||(P(),this.parsingError("No data provided!"));let n=iA(this.dataArray,!1);this.verifyHeader(n,"riff");let o=eA(this.dataArray,4).toLowerCase();if(o!=="sfbk"&&o!=="sfpk")throw P(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${o}"`);let s=o==="sfpk",r=iA(this.dataArray);for(this.verifyHeader(r,"list"),eA(r.chunkData,4);r.chunkData.length>r.chunkData.currentIndex;){let sA=iA(r.chunkData),K;switch(sA.header.toLowerCase()){case"ifil":case"iver":K=`${N(sA.chunkData,2)}.${N(sA.chunkData,2)}`,this.soundFontInfo[sA.header]=K;break;case"icmt":K=eA(sA.chunkData,sA.chunkData.length,void 0,!1),this.soundFontInfo[sA.header]=K;break;case"dmod":let j=In(sA);j.pop(),K=`Modulators: ${j.length}`;let EA=this.defaultModulators;this.defaultModulators=j,this.defaultModulators.push(...EA.filter(X=>!this.defaultModulators.find(rA=>W.isIdentical(X,rA)))),this.soundFontInfo[sA.header]=sA.chunkData;break;default:K=eA(sA.chunkData,sA.chunkData.length),this.soundFontInfo[sA.header]=K}y(`%c"${sA.header}": %c"${K}"`,I.info,I.recognized)}let B=iA(this.dataArray,!1);this.verifyHeader(B,"list"),this.verifyText(eA(this.dataArray,4),"sdta"),y("%cVerifying smpl chunk...",I.warn);let a=iA(this.dataArray,!1);this.verifyHeader(a,"smpl");let g;if(s){y("%cSF2Pack detected, attempting to decode the smpl chunk...",I.info);try{g=de.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+B.size-12)).data[0]}catch(sA){throw P(),new Error(`SF2Pack Ogg Vorbis decode error: ${sA}`)}y(`%cDecoded the smpl chunk! Length: %c${g.length}`,I.info,I.value)}else g=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;y(`%cSkipping sample chunk, length: %c${B.size-12}`,I.info,I.value),this.dataArray.currentIndex+=B.size-12,y("%cLoading preset data chunk...",I.warn);let d=iA(this.dataArray);this.verifyHeader(d,"list"),eA(d.chunkData,4);let E=iA(d.chunkData);this.verifyHeader(E,"phdr");let c=iA(d.chunkData);this.verifyHeader(c,"pbag");let h=iA(d.chunkData);this.verifyHeader(h,"pmod");let m=iA(d.chunkData);this.verifyHeader(m,"pgen");let u=iA(d.chunkData);this.verifyHeader(u,"inst");let S=iA(d.chunkData);this.verifyHeader(S,"ibag");let w=iA(d.chunkData);this.verifyHeader(w,"imod");let D=iA(d.chunkData);this.verifyHeader(D,"igen");let M=iA(d.chunkData);this.verifyHeader(M,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...$s(M,g,!s));let b=zn(D),x=In(w),C=er(S,b,x,this.samples);this.instruments=Ar(u,C);let F=zn(m),J=In(h),aA=tr(c,F,J,this.instruments);this.presets.push(...nr(E,aA,this.defaultModulators)),this.presets.sort((sA,K)=>sA.program-K.program+(sA.bank-K.bank)),y(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
21
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info,I.recognized,I.info),P(),s&&delete this.dataArray}verifyHeader(A,t){A.header.toLowerCase()!==t.toLowerCase()&&(P(),this.parsingError(`Invalid chunk header! Expected "${t.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(P(),this.parsingError(`Invalid FourCC: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundBank(){super.destroySoundBank(),delete this.dataArray}};function Ft(e){let A=e.slice(8,12),t=new L(A);return eA(t,4,void 0,!1).toLowerCase()==="dls "?new De(e):new gn(e,!1)}var Cn=class{constructor(A,t){this.ready=t,this.totalSoundfontOffset=0,this.reloadManager(A)}_assingSampleOffsets(){let A=0;this.soundfontList.forEach(t=>{t.soundfont.setSampleIDOffset(A),A+=t.soundfont.samples.length}),this.totalSoundfontOffset=A}generatePresetList(){this._assingSampleOffsets();let A={};for(let t=this.soundfontList.length-1;t>=0;t--){let n=this.soundfontList[t],o=new Set;for(let s of n.soundfont.presets){let r=`${s.bank+n.bankOffset}-${s.program}`;o.has(r)||(o.add(r),A[r]=s.presetName)}}this.presetList=[];for(let[t,n]of Object.entries(A)){let o=t.split("-");this.presetList.push({presetName:n,program:parseInt(o[1]),bank:parseInt(o[0])})}}handleMessage(A,t){switch(A){case Dt.addNewSoundFont:this.addNewSoundFont(t[0],t[1],t[2]);break;case Dt.reloadSoundFont:this.reloadManager(t);break;case Dt.deleteSoundFont:this.deleteSoundFont(t);break;case Dt.rearrangeSoundFonts:this.rearrangeSoundFonts(t)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let t=Ft(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:t}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){H("1 soundfont left. Aborting!");return}let t=this.soundfontList.findIndex(n=>n.id===A);if(t===-1){H(`No soundfont with id of "${A}" found. Aborting!`);return}delete this.soundfontList[t].soundfont.presets,delete this.soundfontList[t].soundfont.instruments,delete this.soundfontList[t].soundfont.samples,this.soundfontList.splice(t,1),this.generatePresetList()}addNewSoundFont(A,t,n){if(this.soundfontList.find(o=>o.id===t)!==void 0)throw new Error("Cannot overwrite the existing soundfont. Use soundfontManager.delete(id) instead.");this.soundfontList.push({id:t,soundfont:Ft(A),bankOffset:n}),this.generatePresetList(),this.ready()}rearrangeSoundFonts(A){this.soundfontList.sort((t,n)=>A.indexOf(t.id)-A.indexOf(n.id)),this.generatePresetList()}getPreset(A,t){if(this.soundfontList.length<1)throw new Error("No soundfonts! This should never happen.");for(let n of this.soundfontList){let o=n.soundfont.getPresetNoFallback(A-n.bankOffset,t);if(o!==void 0)return o}if(A!==128){for(let n of this.soundfontList){let o=n.soundfont.presets.find(s=>s.program===t);if(o)return o}return this.soundfontList[0].soundfont.presets[0]}else{for(let n of this.soundfontList){let o=n.soundfont.presets.find(s=>s.bank===128);if(o)return o}return this.soundfontList[0].soundfont.presets[0]}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundBank()}),delete this.soundfontList}};var It={linear:0,nearestNeighbor:1,fourthOrder:2},at=class{static getSampleLinear(A,t){let n=A.sample,o=n.cursor,s=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let B=0;B<t.length;B++){for(;o>=n.loopEnd;)o-=r;let a=~~o,g=a+1;for(;g>=n.loopEnd;)g-=r;let d=o-a,E=s[g],c=s[a];t[B]=c+(E-c)*d,o+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let B=~~o,a=B+1;if(a>=n.end){A.finished=!0;return}let g=o-B,d=s[a],E=s[B];t[r]=E+(d-E)*g,o+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=o}static getSampleNearest(A,t){let n=A.sample,o=n.cursor,s=n.loopEnd-n.loopStart,r=n.sampleData;if(A.sample.isLooping)for(let B=0;B<t.length;B++){for(;o>=n.loopEnd;)o-=s;let a=~~o+1;for(;a>=n.loopEnd;)a-=s;t[B]=r[a],o+=n.playbackStep*A.currentTuningCalculated}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let B=0;B<t.length;B++){let a=~~o+1;if(a>=n.end){A.finished=!0;return}t[B]=r[a],o+=n.playbackStep*A.currentTuningCalculated}}n.cursor=o}static getSampleCubic(A,t){let n=A.sample,o=n.cursor,s=n.sampleData;if(n.isLooping){let r=n.loopEnd-n.loopStart;for(let B=0;B<t.length;B++){for(;o>=n.loopEnd;)o-=r;let a=~~o,g=a+1,d=g+1,E=d+1,c=o-a;g>=n.loopEnd&&(g-=r),d>=n.loopEnd&&(d-=r),E>=n.loopEnd&&(E-=r);let h=s[a],m=s[g],u=s[d],S=s[E],w=.5*(u-h),D=h-2.5*m+2*u-.5*S,M=.5*(S-h)+1.5*(m-u);t[B]=((M*c+D)*c+w)*c+m,o+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let r=0;r<t.length;r++){let B=~~o,a=B+1,g=a+1,d=g+1,E=o-B;if(a>=n.end||g>=n.end||d>=n.end){A.finished=!0;return}let c=s[B],h=s[a],m=s[g],u=s[d],S=.5*(m-c),w=c-2.5*h+2*m-.5*u,D=.5*(u-c)+1.5*(h-m);t[r]=((D*E+w)*E+S)*E+h,o+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=o}};var no={addMapping:0,deleteMapping:1,clearMappings:2},En=class{_keyMappings=[];handleMessage(A,t){switch(A){default:return;case no.addMapping:this.addMapping(...t);break;case no.clearMappings:this.clearMappings();break;case no.deleteMapping:this.deleteMapping(...t)}}addMapping(A,t,n){this._keyMappings[A]===void 0&&(this._keyMappings[A]=[]),this._keyMappings[A][t]=n}deleteMapping(A,t){this._keyMappings[A]?.[t]!==void 0&&(this._keyMappings[A][t]=void 0)}clearMappings(){this._keyMappings=[]}setMappings(A){this._keyMappings=A}getMappings(){return this._keyMappings}getVelocity(A,t){let n=this._keyMappings[A]?.[t];return n?n.velocity:-1}hasOverridePatch(A,t){let n=this._keyMappings[A]?.[t]?.patch?.bank;return n!==void 0&&n>=0}getPatch(A,t){let n=this._keyMappings[A]?.[t];if(n)return n.patch;throw new Error("No modifier.")}};var or=.1,He=class e{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;resonanceCb=0;currentInitialFc=13500;lastTargetCutoff=1/0;initialized=!1;static apply(A,t,n,o){let s=A.modulatedGenerators[i.initialFilterFc],r=A.filter;r.initialized?r.currentInitialFc+=(s-r.currentInitialFc)*o:(r.initialized=!0,r.currentInitialFc=s);let B=r.currentInitialFc+n;if(r.currentInitialFc>13499&&B>13499&&r.resonanceCb===0){r.currentInitialFc=13500;return}let a=A.modulatedGenerators[i.initialFilterQ];(Math.abs(r.lastTargetCutoff-B)>1||r.resonanceCb!==a)&&(r.lastTargetCutoff=B,r.resonanceCb=a,e.calculateCoefficients(r,B));for(let g=0;g<t.length;g++){let d=t[g],E=r.a0*d+r.a1*r.x1+r.a2*r.x2-r.a3*r.y1-r.a4*r.y2;r.x2=r.x1,r.x1=d,r.y2=r.y1,r.y1=E,t[g]=E}}static calculateCoefficients(A,t){t=~~t;let n=A.resonanceCb,o=e.cachedCoefficients?.[n]?.[t];if(o!==void 0){A.a0=o.a0,A.a1=o.a1,A.a2=o.a2,A.a3=o.a3,A.a4=o.a4;return}let s=St(t);s=Math.min(s,.45*sampleRate);let r=n/10,B=re(-1*(r-3.01)),a=1/Math.sqrt(re(-r)),g=2*Math.PI*s/sampleRate,d=Math.cos(g),E=Math.sin(g)/(2*B),c=(1-d)*a,h=c/2,m=h,u=1+E,S=-2*d,w=1-E,D={};D.a0=h/u,D.a1=c/u,D.a2=m/u,D.a3=S/u,D.a4=w/u,A.a0=D.a0,A.a1=D.a1,A.a2=D.a2,A.a3=D.a3,A.a4=D.a4,e.cachedCoefficients[n]===void 0&&(e.cachedCoefficients[n]=[]),e.cachedCoefficients[n][t]=D}},oo=new He;oo.resonanceCb=0;for(let e=1500;e<13500;e++)oo.currentInitialFc=e,He.calculateCoefficients(oo,e);var NA=16384,ke=new Float32Array(NA+1),Xe=new Float32Array(NA+1);ke[0]=0;ke[ke.length-1]=1;Xe[0]=0;Xe[Xe.length-1]=1;for(let e=1;e<NA-1;e++){let A=-.4166666666666667*Math.log(e/(ke.length-1))/Math.LN10;Xe[e]=1-A,ke[ke.length-1-e]=A}function We(e,A,t,n){switch(e&&(t=1-t),A){case RA.linear:return n?t*2-1:t;case RA.switch:return t=t>.5?1:0,n?t*2-1:t;case RA.concave:return n?(t=t*2-1,t<0?-ke[~~(t*-NA)]:ke[~~(t*NA)]):ke[~~(t*NA)];case RA.convex:return n?(t=t*2-1,t<0?-Xe[~~(t*-NA)]:Xe[~~(t*NA)]):Xe[~~(t*NA)]}}var so=1,ro=new Float32Array(1e3);for(let e=0;e<ro.length;e++)ro[e]=We(0,RA.convex,e/1e3,0);var ge=class e{attackDuration=0;decayDuration=0;holdDuration=0;releaseDuration=0;sustainLevel=0;delayEnd=0;attackEnd=0;holdEnd=0;decayEnd=0;releaseStartLevel=0;currentValue=0;static startRelease(A){e.recalculate(A)}static recalculate(A){let t=A.modulationEnvelope;A.isInRelease&&(t.releaseStartLevel=e.getValue(A,A.releaseStartTime,!0)),t.sustainLevel=1-A.modulatedGenerators[i.sustainModEnv]/1e3,t.attackDuration=ae(A.modulatedGenerators[i.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[i.keyNumToModEnvDecay],o=ae(A.modulatedGenerators[i.decayModEnv]+n);t.decayDuration=o*(1-t.sustainLevel);let s=(60-A.midiNote)*A.modulatedGenerators[i.keyNumToModEnvHold];t.holdDuration=ae(s+A.modulatedGenerators[i.holdModEnv]);let r=ae(A.modulatedGenerators[i.releaseModEnv]);t.releaseDuration=r*t.releaseStartLevel,t.delayEnd=A.startTime+ae(A.modulatedGenerators[i.delayModEnv]),t.attackEnd=t.delayEnd+t.attackDuration,t.holdEnd=t.attackEnd+t.holdDuration,t.decayEnd=t.holdEnd+t.decayDuration}static getValue(A,t,n=!1){let o=A.modulationEnvelope;return A.isInRelease&&!n?o.releaseStartLevel===0?0:Math.max(0,(1-(t-A.releaseStartTime)/o.releaseDuration)*o.releaseStartLevel):(t<o.delayEnd?o.currentValue=0:t<o.attackEnd?o.currentValue=ro[~~((1-(o.attackEnd-t)/o.attackDuration)*1e3)]:t<o.holdEnd?o.currentValue=so:t<o.decayEnd?o.currentValue=(1-(o.decayEnd-t)/o.decayDuration)*(o.sustainLevel-so)+so:o.currentValue=o.sustainLevel,o.currentValue)}};var Qi=-2320,di=-1130,Bn=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,t,n,o,s,r,B,a){this.sampleData=A,this.playbackStep=t,this.cursor=n,this.rootKey=o,this.loopStart=s,this.loopEnd=r,this.end=B,this.loopingMode=a,this.isLooping=this.loopingMode===1||this.loopingMode===3}},Rt=class e{sample;filter=new He;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new ge;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;exclusiveClass=0;constructor(A,t,n,o,s,r,B,a,g,d){this.sample=t,this.generators=g,this.exclusiveClass=this.generators[i.exclusiveClass],this.modulatedGenerators=new Int16Array(g),this.modulators=d,this.velocity=o,this.midiNote=n,this.channelNumber=s,this.startTime=r,this.targetKey=B,this.realKey=a,this.volumeEnvelope=new Ie(A,g[i.sustainVolEnv])}static copy(A,t){let n=A.sample,o=new Bn(n.sampleData,n.playbackStep,n.cursor,n.rootKey,n.loopStart,n.loopEnd,n.end,n.loopingMode);return new e(A.volumeEnvelope.sampleRate,o,A.midiNote,A.velocity,A.channelNumber,t,A.targetKey,A.realKey,A.generators,A.modulators.map(s=>W.copy(s)))}exclusiveRelease(){this.release(ir),this.modulatedGenerators[i.releaseVolEnv]=Qi,this.modulatedGenerators[i.releaseModEnv]=di,Ie.recalculate(this),ge.recalculate(this)}release(A=rr){this.releaseStartTime=currentTime,this.releaseStartTime-this.startTime<A&&(this.releaseStartTime=this.startTime+A)}};function sr(e,A,t,n,o,s=!1){let r,B=this.workletProcessorChannels[e],a=this.keyModifierManager.hasOverridePatch(e,A),g=B.getBankSelect(),d=B.preset.program;if(a){let h=this.keyModifierManager.getPatch(e,A);g=h.bank,d=h.program}let E=this.getCachedVoice(g,d,A,t);if(E!==void 0)return E.map(h=>Rt.copy(h,n));let c=B.preset;return a&&(c=this.soundfontManager.getPreset(g,d)),r=c.getSamplesAndGenerators(A,t).reduce((h,m)=>{if(m.sample.getAudioData()===void 0)return H(`Discarding invalid sample: ${m.sample.sampleName}`),h;let u=new Int16Array(60);for(let C=0;C<60;C++)u[C]=bo(C,m.presetGenerators,m.instrumentGenerators);u[i.initialAttenuation]=Math.floor(u[i.initialAttenuation]*.4);let S=m.sample.samplePitch;u[i.overridingRootKey]>-1&&(S=u[i.overridingRootKey]);let w=A;u[i.keyNum]>-1&&(w=u[i.keyNum]);let D=m.sample.sampleLoopStartIndex,M=m.sample.sampleLoopEndIndex,b=u[i.sampleModes],x=new Bn(m.sample.sampleData,m.sample.sampleRate/sampleRate*Math.pow(2,m.sample.samplePitchCorrection/1200),0,S,D,M,Math.floor(m.sample.sampleData.length)-1,b);return u[i.velocity]>-1&&(t=u[i.velocity]),s&&Fo([{Sample:m.sample.sampleName,Generators:u,Modulators:m.modulators.map(C=>W.debugString(C)),Velocity:t,TargetKey:w,MidiNote:A,WorkletSample:x}]),h.push(new Rt(sampleRate,x,A,t,e,n,w,o,u,m.modulators.map(C=>W.copy(C)),this.filterSmoothingFactor)),h},[]),this.setCachedVoice(g,d,A,t,r.map(h=>Rt.copy(h,n))),r}var Ir=.05,ui=4600,fi=2e3,ar=Math.PI/2,hn=-500,gr=500,io=gr-hn,Cr=new Float32Array(io+1),Er=new Float32Array(io+1);for(let e=hn;e<=gr;e++){let A=(e-hn)/io,t=e-hn;Cr[t]=Math.cos(ar*A),Er[t]=Math.sin(ar*A)}function Br(e,A,t,n,o,s,r,B){if(isNaN(A[0]))return;let a;e.overridePan?a=e.overridePan:(e.currentPan+=(e.modulatedGenerators[i.pan]-e.currentPan)*this.synth.panSmoothingFactor,a=e.currentPan);let g=this.synth.currentGain,d=~~(a+500),E=Cr[d]*g*this.synth.panLeft,c=Er[d]*g*this.synth.panRight;if(!this.synth.oneOutputMode){let h=e.modulatedGenerators[i.reverbEffectsSend];if(h>0){let u=this.synth.reverbGain*g*(h/ui);for(let S=0;S<A.length;S++)o[S]+=u*A[S];s.set(o)}let m=e.modulatedGenerators[i.chorusEffectsSend];if(m>0){let u=this.synth.chorusGain*m/fi,S=E*u,w=c*u;for(let D=0;D<A.length;D++)r[D]+=S*A[D],B[D]+=w*A[D]}}if(E>0)for(let h=0;h<A.length;h++)t[h]+=E*A[h];if(c>0)for(let h=0;h<A.length;h++)n[h]+=c*A[h]}function hr(e=!1){y("%cStop all received!",I.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].stopAllNotes(e);this.callEvent("stopall",void 0)}function lr(e,A){this.soundfontBankOffset=A,this.reloadSoundFont(e,!0),this.overrideSoundfont.samples.forEach(t=>t.getAudioData()),this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers())}function cr(e,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=Ft(e),this.overrideSoundfont.setSampleIDOffset(this.soundfontManager.totalSoundfontOffset)):this.soundfontManager.reloadManager(e)}catch(t){this.post({messageType:JA.soundfontError,messageData:t});return}this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels.forEach(t=>t.programChange(t.preset.program)),this.post({messageType:JA.ready,messageData:void 0}),this.sendPresetList(),y("%cSpessaSynth is ready!",I.recognized)}function Qr(e=!0,A=!0){this.stopAllChannels(!0),A&&(delete this.overrideSoundfont,this.overrideSoundfont=void 0),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.cachedVoices=[];for(let t=0;t<this.workletProcessorChannels.length;t++){let n=this.workletProcessorChannels[t];(!A||A&&n.presetUsesOverride)&&(n.lockPreset=!1),n.programChange(n.preset.program)}e&&this.sendPresetList()}function dr(){let e=this.soundfontManager.getPresetList();this.overrideSoundfont!==void 0&&this.overrideSoundfont.presets.forEach(A=>{let t=A.bank===128?128:A.bank+this.soundfontBankOffset,n=e.find(o=>o.bank===t&&o.program===A.program);n!==void 0?n.presetName=A.presetName:e.push({presetName:A.presetName,bank:t,program:A.program})}),this.callEvent("presetlistchange",e)}function ur(e,A){if(this.overrideSoundfont){let t=e===128?128:e-this.soundfontBankOffset,n=this.overrideSoundfont.getPresetNoFallback(t,A);if(n)return n}return this.soundfontManager.getPreset(e,A)}function fr(e,A=!1){this.transposition=0;for(let t=0;t<this.workletProcessorChannels.length;t++)this.workletProcessorChannels[t].transposeChannel(e,A);this.transposition=e}function mr(e){e=Math.round(e);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].setCustomController(lA.masterTuning,e)}var Gt=class e{program;bank;patchName;lockPreset;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,t){let n=A.workletProcessorChannels[t],o=new e;return o.program=n.preset.program,o.bank=n.getBankSelect(),o.lockPreset=n.lockPreset,o.patchName=n.preset.presetName,o.midiControllers=n.midiControllers,o.lockedControllers=n.lockedControllers,o.customControllers=n.customControllers,o.channelVibrato=n.channelVibrato,o.lockVibrato=n.lockGSNRPNParams,o.channelTransposeKeyShift=n.channelTransposeKeyShift,o.channelOctaveTuning=n.channelOctaveTuning,o.isMuted=n.isMuted,o.velocityOverride=n.velocityOverride,o.drumChannel=n.drumChannel,o}static applyChannelSnapshot(A,t,n){let o=A.workletProcessorChannels[t];o.muteChannel(n.isMuted),o.setDrums(n.drumChannel),o.midiControllers=n.midiControllers,o.lockedControllers=n.lockedControllers,o.customControllers=n.customControllers,o.updateChannelTuning(),o.channelVibrato=n.channelVibrato,o.lockGSNRPNParams=n.lockVibrato,o.channelTransposeKeyShift=n.channelTransposeKeyShift,o.channelOctaveTuning=n.channelOctaveTuning,o.velocityOverride=n.velocityOverride,o.lockPreset=!1,o.setBankSelect(n.bank),o.programChange(n.program),o.lockPreset=n.lockPreset}};var gt=class e{channelSnapshots;keyMappings;mainVolume;pan;interpolation;system;transposition;effectsConfig;static createSynthesizerSnapshot(A){let t=new e;return t.channelSnapshots=A.workletProcessorChannels.map((n,o)=>Gt.getChannelSnapshot(A,o)),t.keyMappings=A.keyModifierManager.getMappings(),t.mainVolume=A.midiVolume,t.pan=A.pan,t.system=A.system,t.interpolation=A.interpolationType,t.transposition=A.transposition,t.effectsConfig={},t}static applySnapshot(A,t){for(A.system=t.system,A.setMasterGain(t.mainVolume),A.setMasterPan(t.pan),A.transposeAllChannels(t.transposition),A.interpolationType=t.interpolation,A.keyModifierManager.setMappings(t.keyMappings);A.workletProcessorChannels.length<t.channelSnapshots.length;)A.createWorkletChannel();t.channelSnapshots.forEach((n,o)=>{Gt.applyChannelSnapshot(A,o,n)}),y("%cFinished restoring controllers!",I.info)}};function pr(){this.post({messageType:JA.synthesizerSnapshot,messageData:gt.createSynthesizerSnapshot(this)})}function yr(e){gt.applySnapshot(this,e),y("%cFinished applying snapshot!",I.info)}function ln(e,A,t){if(t<e)return 0;let n=(t-e)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}function Sr(e,A,t,n,o,s,r){let B=currentTime;if(e.isInRelease||B>=e.releaseStartTime&&(e.isInRelease=!0,Ie.startRelease(e),ge.startRelease(e),e.sample.loopingMode===3&&(e.sample.isLooping=!1)),e.modulatedGenerators[i.initialAttenuation]>2500)return e.isInRelease&&(e.finished=!0),e.finished;let a=e.targetKey,g=e.modulatedGenerators[i.fineTune]+this.channelOctaveTuning[e.midiNote]+this.channelTuningCents,d=e.modulatedGenerators[i.coarseTune],E=this.synth.tunings[this.preset.program]?.[e.realKey];if(E!==void 0&&E?.midiNote>=0&&(a=E.midiNote,g+=E.centTuning),e.portamentoFromKey>-1){let C=Math.min((B-e.startTime)/e.portamentoDuration,1),F=a-e.portamentoFromKey;d-=F*(1-C)}g+=(a-e.sample.rootKey)*e.modulatedGenerators[i.scaleTuning];let c=e.modulatedGenerators[i.vibLfoToPitch];if(c!==0){let C=e.startTime+ae(e.modulatedGenerators[i.delayVibLFO]),F=St(e.modulatedGenerators[i.freqVibLFO]),J=ln(C,F,B);g+=J*(c*this.customControllers[lA.modulationMultiplier])}let h=0,m=e.modulatedGenerators[i.modLfoToPitch],u=e.modulatedGenerators[i.modLfoToVolume],S=e.modulatedGenerators[i.modLfoToFilterFc],w=0;if(m!==0||S!==0||u!==0){let C=e.startTime+ae(e.modulatedGenerators[i.delayModLFO]),F=St(e.modulatedGenerators[i.freqModLFO]),J=ln(C,F,B);g+=J*(m*this.customControllers[lA.modulationMultiplier]),w=-J*u,h+=J*S}if(this.channelVibrato.depth>0){let C=ln(e.startTime+this.channelVibrato.delay,this.channelVibrato.rate,B);C&&(g+=C*this.channelVibrato.depth)}let D=e.modulatedGenerators[i.modEnvToPitch],M=e.modulatedGenerators[i.modEnvToFilterFc];if(M!==0||D!==0){let C=ge.getValue(e,B);h+=C*M,g+=C*D}let b=~~(g+d*100);b!==e.currentTuningCents&&(e.currentTuningCents=b,e.currentTuningCalculated=Math.pow(2,b/1200));let x=new Float32Array(A.length);switch(this.synth.interpolationType){case It.fourthOrder:at.getSampleCubic(e,x);break;case It.linear:default:at.getSampleLinear(e,x);break;case It.nearestNeighbor:at.getSampleNearest(e,x);break}return He.apply(e,x,h,this.synth.filterSmoothingFactor),Ie.apply(e,x,w,this.synth.volumeEnvelopeSmoothingFactor),this.panVoice(e,x,A,t,n,o,s,r),e.finished}function Dr(e,A=-12e3){this.voices.forEach(t=>{t.realKey===e&&(t.modulatedGenerators[i.releaseVolEnv]=A,t.release())})}function kr(e,A=!0){e=Math.round(e),this.setCustomController(lA.channelTuning,e),A&&y(`%cFine tuning for %c${this.channelNumber}%c is now set to %c${e}%c cents.`,I.info,I.recognized,I.info,I.value,I.info)}function wr(e){e=Math.round(e),y(`%cChannel ${this.channelNumber} modulation depth. Cents: %c${e}`,I.info,I.value),this.setCustomController(lA.modulationMultiplier,e/50)}function Fr(e){switch(this.dataEntryState){default:break;case vA.RPCoarse:case vA.RPFine:switch(this.midiControllers[p.RPNMsb]|this.midiControllers[p.RPNLsb]>>7){default:break;case 0:if(e===0)break;this.midiControllers[GA+z.pitchWheelRange]|=e;let t=(this.midiControllers[GA+z.pitchWheelRange]>>7)+e/128;y(`%cChannel ${this.channelNumber} bend range. Semitones: %c${t}`,I.info,I.value);break;case 1:let o=this.customControllers[lA.channelTuning]<<7|e;this.setTuning(o*.01220703125);break;case 5:let r=this.customControllers[lA.modulationMultiplier]*50+e/128*100;this.setModulationDepth(r);break;case 16383:this.resetParameters();break}}}var mi=1e3/200;function Rr(e,A,t){if(A.transformAmount===0)return A.currentValue=0,0;let n;if(A.sourceUsesCC)n=e[A.sourceIndex];else{let g=A.sourceIndex+GA;switch(A.sourceIndex){case z.noController:n=16383;break;case z.noteOnKeyNum:n=t.midiNote<<7;break;case z.noteOnVelocity:n=t.velocity<<7;break;case z.polyPressure:n=t.pressure<<7;break;default:n=e[g];break}}let o=_e[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],s;if(A.secSrcUsesCC)s=e[A.secSrcIndex];else{let g=A.secSrcIndex+GA;switch(A.secSrcIndex){case z.noController:s=16383;break;case z.noteOnKeyNum:s=t.midiNote<<7;break;case z.noteOnVelocity:s=t.velocity<<7;break;case z.polyPressure:s=t.pressure<<7;break;default:s=e[g]}}let r=_e[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][s],B=A.transformAmount;A.isEffectModulator&&B<=1e3&&(B*=mi,B=Math.min(B,1e3));let a=o*r*B;return A.transformType===2&&(a=Math.abs(a)),A.currentValue=a,a}function Ce(e,A,t=-1,n=0){let o=e.modulators,s=e.generators,r=e.modulatedGenerators;if(t===-1){r.set(s),o.forEach(g=>{let d=Z[g.modulatorDestination],E=r[g.modulatorDestination]+Rr(A,g,e);r[g.modulatorDestination]=Math.max(d.min,Math.min(E,d.max))}),Ie.recalculate(e),ge.recalculate(e);return}let B=new Set([i.initialAttenuation,i.delayVolEnv,i.attackVolEnv,i.holdVolEnv,i.decayVolEnv,i.sustainVolEnv,i.releaseVolEnv,i.keyNumToVolEnvHold,i.keyNumToVolEnvDecay]),a=new Set;o.forEach(g=>{if(g.sourceUsesCC===t&&g.sourceIndex===n||g.secSrcUsesCC===t&&g.secSrcIndex===n){let d=g.modulatorDestination;a.has(d)||(r[d]=s[d],Rr(A,g,e),o.forEach(E=>{if(E.modulatorDestination===d){let c=Z[g.modulatorDestination],h=r[g.modulatorDestination]+E.currentValue;r[g.modulatorDestination]=Math.max(c.min,Math.min(h,c.max))}}),a.add(d))}}),[...a].some(g=>B.has(g))&&Ie.recalculate(e),ge.recalculate(e)}var _e=[];for(let e=0;e<4;e++){_e[e]=[[new Float32Array(NA),new Float32Array(NA)],[new Float32Array(NA),new Float32Array(NA)]];for(let A=0;A<NA;A++)_e[e][0][0][A]=We(0,e,A/NA,0),_e[e][1][0][A]=We(0,e,A/NA,1),_e[e][0][1][A]=We(1,e,A/NA,0),_e[e][1][1][A]=We(1,e,A/NA,1)}function Gr(e,A,t=!1){if(e>127){if(!t)return;switch(e){default:return;case Lo.velocityOverride:this.velocityOverride=A}}if(e>=p.lsbForControl1ModulationWheel&&e<=p.lsbForControl13EffectControl2&&e!==p.lsbForControl6DataEntry){let n=e-32;if(this.lockedControllers[n])return;this.midiControllers[n]=this.midiControllers[n]&16256|A&127,this.voices.forEach(o=>Ce(o,this.midiControllers,1,n))}if(!this.lockedControllers[e]){switch(this.midiControllers[e]=A<<7,e){case p.allNotesOff:this.stopAllNotes();break;case p.allSoundOff:this.stopAllNotes(!0);break;case p.bankSelect:let n=A;if(!t){switch(this.synth.system){case"gm":y(`%cIgnoring the Bank Select (${A}), as the synth is in GM mode.`,I.info);return;case"xg":n===120||n===126||n===127?this.setDrums(!0):this.channelNumber%16!==9&&this.setDrums(!1);break;case"gm2":n===120?this.setDrums(!0):this.channelNumber%16!==9&&this.setDrums(!1)}this.drumChannel&&(n=128),n===128&&!this.drumChannel&&(n=this.getBankSelect())}this.setBankSelect(n);break;case p.lsbForControl0BankSelect:this.synth.system==="xg"?this.drumChannel||A!==127&&this.setBankSelect(A):this.synth.system==="gm2"&&this.setBankSelect(A);break;case p.RPNLsb:this.dataEntryState=vA.RPFine;break;case p.RPNMsb:this.dataEntryState=vA.RPCoarse;break;case p.NRPNMsb:this.dataEntryState=vA.NRPCoarse;break;case p.NRPNLsb:this.dataEntryState=vA.NRPFine;break;case p.dataEntryMsb:this.dataEntryCoarse(A);break;case p.lsbForControl6DataEntry:this.dataEntryFine(A);break;case p.resetAllControllers:this.resetControllersRP15Compliant();break;case p.sustainPedal:A>=64?this.holdPedal=!0:(this.holdPedal=!1,this.sustainedVoices.forEach(o=>{o.release()}),this.sustainedVoices=[]);break;default:this.voices.forEach(o=>Ce(o,this.midiControllers,1,e));break}this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:e,controllerValue:A})}}function xr(e=!1){e?(this.voices.length=0,this.sustainedVoices.length=0,this.synth.sendChannelProperties()):(this.voices.forEach(A=>{A.isInRelease||A.release()}),this.sustainedVoices.forEach(A=>{A.release()}))}function Mr(e){e&&this.stopAllNotes(!0),this.isMuted=e,this.synth.sendChannelProperties(),this.synth.callEvent("mutechannel",{channel:this.channelNumber,isMuted:e})}function Nr(e,A=!1){this.drumChannel||(e+=this.synth.transposition);let t=Math.trunc(e),n=this.channelTransposeKeyShift+this.customControllers[lA.channelTransposeFine]/100;this.drumChannel&&!A||e===n||(t!==this.channelTransposeKeyShift&&this.controllerChange(p.allNotesOff,127),this.channelTransposeKeyShift=t,this.setCustomController(lA.channelTransposeFine,(e-t)*100),this.synth.sendChannelProperties())}var xt={pitchBendRange:0,fineTuning:1,coarseTuning:2,modulationDepth:5,resetParameters:16383},Ye={partParameter:1,vibratoRate:8,vibratoDepth:9,vibratoDelay:10,EGAttackTime:100,EGReleaseTime:102,TVFFilterCutoff:32,drumReverb:29};function br(e){let A=()=>{this.channelVibrato.delay===0&&this.channelVibrato.rate===0&&this.channelVibrato.depth===0&&(this.channelVibrato.depth=50,this.channelVibrato.rate=8,this.channelVibrato.delay=.6)},t=(n,o,s)=>{s.length>0&&(s=" "+s),y(`%c${n} for %c${this.channelNumber}%c is now set to %c${o}%c${s}.`,I.info,I.recognized,I.info,I.value,I.info)};switch(this.dataEntryState){default:case vA.Idle:break;case vA.NRPFine:if(this.lockGSNRPNParams)return;let n=this.midiControllers[p.NRPNMsb]>>7,o=this.midiControllers[p.NRPNLsb]>>7;switch(n){default:if(e===64)return;H(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${o.toString(16).toUpperCase()} 0x${o.toString(16).toUpperCase()})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case Ye.partParameter:switch(o){default:if(e===64)return;H(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${n.toString(16)} 0x${o.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case Ye.vibratoRate:if(e===64)return;A(),this.channelVibrato.rate=e/64*8,t("Vibrato rate",`${e} = ${this.channelVibrato.rate}`,"Hz");break;case Ye.vibratoDepth:if(e===64)return;A(),this.channelVibrato.depth=e/2,t("Vibrato depth",`${e} = ${this.channelVibrato.depth}`,"cents of detune");break;case Ye.vibratoDelay:if(e===64)return;A(),this.channelVibrato.delay=e/64/3,t("Vibrato delay",`${e} = ${this.channelVibrato.delay}`,"seconds");break;case Ye.TVFFilterCutoff:this.controllerChange(p.brightness,e),t("Filter cutoff",e.toString(),"");break;case Ye.EGAttackTime:this.controllerChange(p.attackTime,e),t("EG attack time",e.toString(),"");break;case Ye.EGReleaseTime:this.controllerChange(p.releaseTime,e),t("EG release time",e.toString(),"");break}break;case Ye.drumReverb:let r=e;this.controllerChange(p.reverbDepth,r),t("GS Drum reverb",r.toString(),"percent");break}break;case vA.RPCoarse:case vA.RPFine:let s=this.midiControllers[p.RPNMsb]|this.midiControllers[p.RPNLsb]>>7;switch(s){default:H(`%cUnrecognized RPN for %c${this.channelNumber}%c: %c(0x${s.toString(16)})%c data value: %c${e}`,I.warn,I.recognized,I.warn,I.unrecognized,I.warn,I.value);break;case xt.pitchBendRange:this.midiControllers[GA+z.pitchWheelRange]=e<<7,t("Pitch bend range",e.toString(),"semitones");break;case xt.coarseTuning:let r=e-64;this.setCustomController(lA.channelTuningSemitones,r),t("Coarse tuning",r.toString(),"semitones");break;case xt.fineTuning:this.setTuning(e-64,!1);break;case xt.modulationDepth:this.setModulationDepth(e*100);break;case xt.resetParameters:this.resetParameters();break}}}var Mt={0:0,1:.006,2:.023,4:.05,8:.11,16:.25,32:.5,64:2.06,80:4.2,96:8.4,112:19.5,116:26.7,120:40,124:80,127:480};function pi(e){if(Mt[e]!==void 0)return Mt[e];let A=null,t=null;for(let n of Object.keys(Mt))n=parseInt(n),n<e&&(A===null||n>A)&&(A=n),n>e&&(t===null||n<t)&&(t=n);if(A!==null&&t!==null){let n=Mt[A],o=Mt[t];return n+(e-A)*(o-n)/(t-A)}return 0}function Lr(e,A){return pi(e)*(A/30)}function Ur(e,A,t=!1,n=!0,o=currentTime){if(A<1){this.noteOff(e);return}if(A=Math.min(127,A),this.synth.highPerformanceMode&&this.synth.totalVoicesAmount>200&&A<40||this.synth.highPerformanceMode&&A<10||this.isMuted)return;let s=e+this.channelTransposeKeyShift,r=s;if(s>127||s<0)return;let B=this.preset.program;this.synth.tunings[B]?.[s]?.midiNote>=0&&(r=this.synth.tunings[B]?.[s].midiNote),this.velocityOverride>0&&(A=this.velocityOverride);let a=this.synth.keyModifierManager.getVelocity(this.channelNumber,s);a>-1&&(A=a);let g=-1,d=0,E=this.midiControllers[p.portamentoTime]>>7,c=this.midiControllers[p.portamentoControl],h=c>>7;if(!this.drumChannel&&h!==r&&this.midiControllers[p.portamentoOnOff]>=8192&&E>0){if(c!==1){let w=Math.abs(r-h);d=Lr(E,w),g=h}this.controllerChange(p.portamentoControl,r)}let m=this.synth.getWorkletVoices(this.channelNumber,r,A,o,s,t),u=0;this.randomPan&&(u=Math.round(Math.random()*1e3-500));let S=this.voices;m.forEach(w=>{w.portamentoFromKey=g,w.portamentoDuration=d,w.overridePan=u;let D=w.exclusiveClass;D!==0&&S.forEach(aA=>{aA.exclusiveClass===D&&aA.exclusiveRelease()}),Ce(w,this.midiControllers);let M=w.modulatedGenerators[i.startAddrsOffset]+w.modulatedGenerators[i.startAddrsCoarseOffset]*32768,b=w.modulatedGenerators[i.endAddrOffset]+w.modulatedGenerators[i.endAddrsCoarseOffset]*32768,x=w.modulatedGenerators[i.startloopAddrsOffset]+w.modulatedGenerators[i.startloopAddrsCoarseOffset]*32768,C=w.modulatedGenerators[i.endloopAddrsOffset]+w.modulatedGenerators[i.endloopAddrsCoarseOffset]*32768,F=w.sample,J=aA=>Math.max(0,Math.min(F.sampleData.length-1,aA));if(F.cursor=J(F.cursor+M),F.end=J(F.end+b),F.loopStart=J(F.loopStart+x),F.loopEnd=J(F.loopEnd+C),F.loopEnd<F.loopStart){let aA=F.loopStart;F.loopStart=F.loopEnd,F.loopEnd=aA}F.loopEnd-F.loopStart<1&&(F.loopingMode=0,F.isLooping=!1),w.volumeEnvelope.attenuation=w.volumeEnvelope.attenuationTargetGain,w.currentPan=Math.max(-500,Math.min(500,w.modulatedGenerators[i.pan]))}),this.synth.totalVoicesAmount+=m.length,this.synth.totalVoicesAmount>this.synth.voiceCap&&this.synth.voiceKilling(m.length),S.push(...m),n&&(this.synth.sendChannelProperties(),this.synth.callEvent("noteon",{midiNote:e,channel:this.channelNumber,velocity:A}))}function Tr(e){if(e>127||e<0){H("Received a noteOn for note",e,"Ignoring.");return}let A=e+this.channelTransposeKeyShift;if(this.synth.highPerformanceMode&&!this.drumChannel){this.killNote(A,-6950),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber});return}this.voices.forEach(n=>{n.realKey!==A||n.isInRelease===!0||(this.holdPedal?this.sustainedVoices.push(n):n.release())}),this.synth.callEvent("noteoff",{midiNote:e,channel:this.channelNumber})}function vr(e,A){this.voices.forEach(t=>{t.midiNote===e&&(t.pressure=A,Ce(t,this.midiControllers,0,z.polyPressure))}),this.synth.callEvent("polypressure",{channel:this.channelNumber,midiNote:e,pressure:A})}function Hr(e){this.midiControllers[GA+z.channelPressure]=e<<7,this.voices.forEach(A=>Ce(A,this.midiControllers,0,z.channelPressure)),this.synth.callEvent("channelpressure",{channel:this.channelNumber,pressure:e})}function Yr(e,A){if(this.lockedControllers[GA+z.pitchWheel])return;let t=A|e<<7;this.synth.callEvent("pitchwheel",{channel:this.channelNumber,MSB:e,LSB:A}),this.midiControllers[GA+z.pitchWheel]=t,this.voices.forEach(n=>Ce(n,this.midiControllers,0,z.pitchWheel)),this.synth.sendChannelProperties()}function Jr(e){if(e.length!==12)throw new Error("Tuning is not the length of 12.");this.channelOctaveTuning=new Int8Array(128);for(let A=0;A<128;A++)this.channelOctaveTuning[A]=e[A%12]}function Kr(e,A=!1){if(this.lockPreset)return;let t=this.getBankSelect(),n,o;if(this.synth.overrideSoundfont){let s=t===128?128:t-this.synth.soundfontBankOffset,r=this.synth.overrideSoundfont.getPresetNoFallback(s,e);r?(n=t,o=r,this.presetUsesOverride=!0):(o=this.synth.soundfontManager.getPreset(t,e),n=o.bank,this.presetUsesOverride=!1)}else o=this.synth.soundfontManager.getPreset(t,e),n=o.bank,this.presetUsesOverride=!1;this.setPreset(o),this.synth.callEvent("programchange",{channel:this.channelNumber,program:o.program,bank:n,userCalled:A})}var SA=class{midiControllers=new Int16Array(Zt);lockedControllers=Array(Zt).fill(!1);customControllers=new Float32Array(Mn);channelTransposeKeyShift=0;channelOctaveTuning=new Int8Array(128);channelTuningCents=0;holdPedal=!1;drumChannel=!1;velocityOverride=0;randomPan=!1;dataEntryState=vA.Idle;bank=0;preset=void 0;lockPreset=!1;presetUsesOverride=!1;lockGSNRPNParams=!1;channelVibrato={delay:0,depth:0,rate:0};isMuted=!1;voices=[];sustainedVoices=[];channelNumber;synth;constructor(A,t,n){this.synth=A,this.preset=t,this.channelNumber=n}setCustomController(A,t){this.customControllers[A]=t,this.updateChannelTuning()}updateChannelTuning(){this.channelTuningCents=this.customControllers[lA.channelTuning]+this.customControllers[lA.channelTransposeFine]+this.customControllers[lA.masterTuning]+this.customControllers[lA.channelTuningSemitones]*100}renderAudio(A,t,n,o,s,r){this.voices=this.voices.filter(B=>!this.renderVoice(B,A,t,n,o,s,r))}setBankSelect(A){this.lockPreset||(this.bank=A)}getBankSelect(){return this.drumChannel?128:this.bank}setPreset(A){this.lockPreset||(delete this.preset,this.preset=A)}setDrums(A){this.lockPreset||this.drumChannel!==A&&(A?(this.channelTransposeKeyShift=0,this.drumChannel=!0,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))):(this.drumChannel=!1,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))),this.presetUsesOverride=!1,this.synth.callEvent("drumchange",{channel:this.channelNumber,isDrumChannel:this.drumChannel}),this.synth.sendChannelProperties())}setVibrato(A,t,n){this.lockGSNRPNParams||(this.channelVibrato.rate=t,this.channelVibrato.delay=n,this.channelVibrato.depth=A)}disableAndLockGSNRPN(){this.lockGSNRPNParams=!0,this.channelVibrato.rate=0,this.channelVibrato.delay=0,this.channelVibrato.depth=0}};SA.prototype.renderVoice=Sr;SA.prototype.panVoice=Br;SA.prototype.killNote=Dr;SA.prototype.stopAllNotes=xr;SA.prototype.muteChannel=Mr;SA.prototype.noteOn=Ur;SA.prototype.noteOff=Tr;SA.prototype.polyPressure=vr;SA.prototype.channelPressure=Hr;SA.prototype.pitchWheel=Yr;SA.prototype.programChange=Kr;SA.prototype.setTuning=kr;SA.prototype.setOctaveTuning=Jr;SA.prototype.setModulationDepth=wr;SA.prototype.transposeChannel=Nr;SA.prototype.controllerChange=Gr;SA.prototype.resetControllers=Wo;SA.prototype.resetControllersRP15Compliant=_o;SA.prototype.resetParameters=zo;SA.prototype.dataEntryFine=Fr;SA.prototype.dataEntryCoarse=br;function qr(e=!1){let A=new SA(this,this.defaultPreset,this.workletProcessorChannels.length);this.workletProcessorChannels.push(A),A.resetControllers(),this.sendChannelProperties(),e&&this.callEvent("newchannel",void 0),A.channelNumber%16===9&&this.workletProcessorChannels[this.workletProcessorChannels.length-1].setDrums(!0)}var rr=.03,ir=.07,Zn=1,DA=class extends AudioWorkletProcessor{cachedVoices=[];alive=!0;deviceID=se;interpolationType=It.fourthOrder;sequencer=new kA(this);transposition=0;tunings=[];soundfontBankOffset=0;masterGain=Zn;midiVolume=1;reverbGain=1;chorusGain=1;voiceCap=350;pan=0;panLeft=.5;panRight=.5;highPerformanceMode=!1;keyModifierManager=new En;overrideSoundfont=void 0;workletProcessorChannels=[];system=Wt;totalVoicesAmount=0;constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem;for(let t=0;t<127;t++)this.tunings.push([]);try{this.soundfontManager=new Cn(A.processorOptions.soundfont,this.postReady.bind(this))}catch(t){throw this.post({messageType:JA.soundfontError,messageData:t}),t}this.sendPresetList(),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0);for(let t=0;t<A.processorOptions.midiChannels;t++)this.createWorkletChannel(!1);this.workletProcessorChannels[9].preset=this.drumPreset,this.workletProcessorChannels[9].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=Bs*(44100/sampleRate),this.panSmoothingFactor=Ir*(44100/sampleRate),this.filterSmoothingFactor=or*(44100/sampleRate),this._snapshot=A.processorOptions?.startRenderingData?.snapshot,this.port.onmessage=t=>this.handleMessage(t.data),A.processorOptions.startRenderingData&&(this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers()),y("%cRendering enabled! Starting render.",I.info),A.processorOptions.startRenderingData.parsedMIDI&&(A.processorOptions.startRenderingData?.loopCount!==void 0?(this.sequencer.loopCount=A.processorOptions.startRenderingData?.loopCount,this.sequencer.loop=!0):this.sequencer.loop=!1,this.voiceCap=1/0,this.sequencer.loadNewSongList([A.processorOptions.startRenderingData.parsedMIDI]))),de.isInitialized.then(()=>{this.postReady(),y("%cSpessaSynth is ready!",I.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}getCachedVoice(A,t,n,o){return this.cachedVoices?.[A]?.[t]?.[n]?.[o]}setCachedVoice(A,t,n,o,s){this.cachedVoices||(this.cachedVoices=[]),this.cachedVoices[A]||(this.cachedVoices[A]=[]),this.cachedVoices[A][t]||(this.cachedVoices[A][t]=[]),this.cachedVoices[A][t][n]||(this.cachedVoices[A][t][n]=[]),this.cachedVoices[A][t][n][o]=s}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:JA.ready,messageData:void 0})}debugMessage(){y({channels:this.workletProcessorChannels,voicesAmount:this.totalVoicesAmount,outputAmount:this._outputsAmount,dumpedSamples:this.workletDumpedSamplesList})}process(A,t){if(!this.alive)return!1;this.sequencer.processTick();let n=0;return this.workletProcessorChannels.forEach((o,s)=>{if(o.voices.length<1||o.isMuted)return;let r,B,a,g,d,E,c;if(this.oneOutputMode){let h=t[0];r=s%16*2,B=h[r],a=h[r+1]}else r=s%this._outputsAmount+2,B=t[r][0],a=t[r][1],g=t[0][0],d=t[0][1],E=t[1][0],c=t[1][1];o.renderAudio(B,a,g,d,E,c),n+=o.voices.length}),n!==this.totalVoicesAmount&&(this.totalVoicesAmount=n,this.sendChannelProperties()),!0}destroyWorkletProcessor(){this.alive=!1,this.workletProcessorChannels.forEach(A=>{delete A.midiControllers,delete A.voices,delete A.sustainedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.cachedVoices,delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}controllerChange(A,t,n,o=!1){this.workletProcessorChannels[A].controllerChange(t,n,o)}noteOn(A,t,n,o=!1,s=!0){this.workletProcessorChannels[A].noteOn(t,n,o,s)}noteOff(A,t){this.workletProcessorChannels[A].noteOff(t)}polyPressure(A,t,n){this.workletProcessorChannels[A].polyPressure(t,n)}channelPressure(A,t){this.workletProcessorChannels[A].channelPressure(t)}pitchWheel(A,t,n){this.workletProcessorChannels[A].pitchWheel(t,n)}programChange(A,t,n=!1){this.workletProcessorChannels[A].programChange(t,n)}};DA.prototype.voiceKilling=Is;DA.prototype.getWorkletVoices=sr;DA.prototype.handleMessage=hs;DA.prototype.sendChannelProperties=cs;DA.prototype.callEvent=ls;DA.prototype.systemExclusive=Qs;DA.prototype.stopAllChannels=hr;DA.prototype.createWorkletChannel=qr;DA.prototype.resetAllControllers=Xo;DA.prototype.setMasterGain=us;DA.prototype.setMasterPan=fs;DA.prototype.setMIDIVolume=ds;DA.prototype.transposeAllChannels=fr;DA.prototype.setMasterTuning=mr;DA.prototype.getPreset=ur;DA.prototype.reloadSoundFont=cr;DA.prototype.clearSoundFont=Qr;DA.prototype.setEmbeddedSoundFont=lr;DA.prototype.sendPresetList=dr;DA.prototype.sendSynthesizerSnapshot=pr;DA.prototype.applySynthesizerSnapshot=yr;registerProcessor(Uo,DA);y("%cProcessor succesfully registered!",I.recognized);