spessasynth_lib 3.24.13 → 3.24.16

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.
Files changed (61) hide show
  1. package/midi_parser/basic_midi.js +457 -68
  2. package/midi_parser/midi_loader.js +18 -503
  3. package/midi_parser/midi_message.js +18 -5
  4. package/midi_parser/midi_sequence.js +2 -2
  5. package/package.json +1 -1
  6. package/sequencer/worklet_sequencer/process_event.js +1 -6
  7. package/synthetizer/synthetizer.js +13 -7
  8. package/synthetizer/worklet_processor.min.js +12 -12
  9. package/synthetizer/worklet_system/README.md +2 -2
  10. package/synthetizer/worklet_system/main_processor.js +106 -95
  11. package/synthetizer/worklet_system/message_protocol/handle_message.js +22 -17
  12. package/synthetizer/worklet_system/message_protocol/worklet_message.js +2 -1
  13. package/synthetizer/worklet_system/snapshot/apply_synthesizer_snapshot.js +14 -0
  14. package/synthetizer/worklet_system/snapshot/channel_snapshot.js +166 -0
  15. package/synthetizer/worklet_system/snapshot/send_synthesizer_snapshot.js +14 -0
  16. package/synthetizer/worklet_system/snapshot/synthesizer_snapshot.js +121 -0
  17. package/synthetizer/worklet_system/worklet_methods/controller_control/controller_change.js +196 -0
  18. package/synthetizer/worklet_system/worklet_methods/controller_control/master_parameters.js +34 -0
  19. package/synthetizer/worklet_system/worklet_methods/{reset_controllers.js → controller_control/reset_controllers.js} +33 -39
  20. package/synthetizer/worklet_system/worklet_methods/create_worklet_channel.js +26 -0
  21. package/synthetizer/worklet_system/worklet_methods/{data_entry.js → data_entry/data_entry_coarse.js} +38 -105
  22. package/synthetizer/worklet_system/worklet_methods/data_entry/data_entry_fine.js +64 -0
  23. package/synthetizer/worklet_system/worklet_methods/mute_channel.js +17 -0
  24. package/synthetizer/worklet_system/worklet_methods/note_on.js +36 -34
  25. package/synthetizer/worklet_system/worklet_methods/program_change.js +49 -0
  26. package/synthetizer/worklet_system/worklet_methods/{voice_control.js → render_voice.js} +37 -120
  27. package/synthetizer/worklet_system/worklet_methods/soundfont_management/clear_sound_font.js +35 -0
  28. package/synthetizer/worklet_system/worklet_methods/soundfont_management/get_preset.js +20 -0
  29. package/synthetizer/worklet_system/worklet_methods/soundfont_management/reload_sound_font.js +43 -0
  30. package/synthetizer/worklet_system/worklet_methods/soundfont_management/send_preset_list.js +31 -0
  31. package/synthetizer/worklet_system/worklet_methods/soundfont_management/set_embedded_sound_font.js +21 -0
  32. package/synthetizer/worklet_system/worklet_methods/stopping_notes/kill_note.js +20 -0
  33. package/synthetizer/worklet_system/worklet_methods/stopping_notes/note_off.js +55 -0
  34. package/synthetizer/worklet_system/worklet_methods/stopping_notes/stop_all_channels.js +16 -0
  35. package/synthetizer/worklet_system/worklet_methods/stopping_notes/stop_all_notes.js +30 -0
  36. package/synthetizer/worklet_system/worklet_methods/stopping_notes/voice_killing.js +63 -0
  37. package/synthetizer/worklet_system/worklet_methods/system_exclusive.js +31 -30
  38. package/synthetizer/worklet_system/worklet_methods/tuning_control/channel_pressure.js +24 -0
  39. package/synthetizer/worklet_system/worklet_methods/tuning_control/pitch_wheel.js +33 -0
  40. package/synthetizer/worklet_system/worklet_methods/tuning_control/poly_pressure.js +31 -0
  41. package/synthetizer/worklet_system/worklet_methods/tuning_control/set_master_tuning.js +15 -0
  42. package/synthetizer/worklet_system/worklet_methods/tuning_control/set_modulation_depth.js +27 -0
  43. package/synthetizer/worklet_system/worklet_methods/tuning_control/set_octave_tuning.js +15 -0
  44. package/synthetizer/worklet_system/worklet_methods/tuning_control/set_tuning.js +24 -0
  45. package/synthetizer/worklet_system/worklet_methods/tuning_control/set_tuning_semitones.js +19 -0
  46. package/synthetizer/worklet_system/worklet_methods/tuning_control/transpose_all_channels.js +15 -0
  47. package/synthetizer/worklet_system/worklet_methods/tuning_control/transpose_channel.js +31 -0
  48. package/synthetizer/worklet_system/worklet_utilities/controller_tables.js +10 -1
  49. package/synthetizer/worklet_system/worklet_utilities/lfo.js +2 -1
  50. package/synthetizer/worklet_system/worklet_utilities/modulation_envelope.js +4 -4
  51. package/synthetizer/worklet_system/worklet_utilities/modulator_curves.js +4 -5
  52. package/synthetizer/worklet_system/worklet_utilities/stereo_panner.js +18 -18
  53. package/synthetizer/worklet_system/worklet_utilities/wavetable_oscillator.js +210 -206
  54. package/synthetizer/worklet_system/worklet_utilities/worklet_processor_channel.js +354 -108
  55. package/synthetizer/worklet_system/worklet_utilities/worklet_voice.js +22 -9
  56. package/synthetizer/worklet_system/snapshot/snapshot.js +0 -311
  57. package/synthetizer/worklet_system/worklet_methods/controller_control.js +0 -260
  58. package/synthetizer/worklet_system/worklet_methods/note_off.js +0 -119
  59. package/synthetizer/worklet_system/worklet_methods/program_control.js +0 -282
  60. package/synthetizer/worklet_system/worklet_methods/tuning_control.js +0 -233
  61. package/synthetizer/worklet_system/worklet_methods/vibrato_control.js +0 -29
@@ -1,19 +1,19 @@
1
- var bn=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(A,e)=>(typeof require<"u"?require:A)[e]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var L=class extends Uint8Array{currentIndex;constructor(A){super(A),this.currentIndex=0}};function lA(t){let A=t.reduce((s,o)=>s+o.length,0),e=new L(A),n=0;for(let s of t)e.set(s,n),n+=s.length;return e}function Kt(t){t=Math.floor(t);let A=Math.floor(t/60),e=Math.round(t-A*60);return{minutes:A,seconds:e,time:`${A.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`}}function Ln(t){return t.trim().replaceAll(".mid","").replaceAll(".kar","").replaceAll(".rmi","").replaceAll("_"," ").trim()}function kA(t){let A="";for(let e=0;e<t.length;e++){let n=t[e].toString(16).padStart(2,"0").toUpperCase();A+=n,A+=" "}return A}function Un(t){let A=[];for(let e of t)(e===47||e===92)&&(e=10),A.push(e);return new Uint8Array(A)}var g={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};var ye=class{constructor(A,e,n){this.ticks=A,this.messageStatusByte=e,this.messageData=n}};function Tn(t){let A=t&240,e=t&15,n=e;switch(A){case 128:case 144:case 160:case 176:case 192:case 208:case 224:break;case 240:switch(e){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 ve(t){let A=t&240,e=t&15,n=-1,s=t;return A>=128&&A<=224&&(n=e,s=A),{status:s,channel:n}}var D={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,timbreHarmonicContent:71,releaseTime:72,attackTime:73,brightness:74,soundController6:75,soundController7:76,soundController8:77,soundController9: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},vn={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var oA={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},Se={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3},LA=-1,FA={channelProperties:0,eventCall:1,reportedCurrentTime:2,sequencerSpecific:3,synthesizerSnapshot:4,ready:5,soundfontError:6,identify:7};var Hn=!1,Yn=!0,$e=!1,Jn=!0;function Pn(t,A,e,n){Hn=t,Yn=A,$e=e,Jn=n}function m(...t){Hn&&console.info(...t)}function v(...t){Yn&&console.warn(...t)}function qn(...t){Jn&&console.table(...t)}function he(...t){$e&&console.group(...t)}function QA(...t){$e&&console.groupCollapsed(...t)}function W(){$e&&console.groupEnd()}var De={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var r={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},J=[];J[r.startAddrsOffset]={min:0,max:32768,def:0};J[r.endAddrOffset]={min:-32768,max:32768,def:0};J[r.startloopAddrsOffset]={min:-32768,max:32768,def:0};J[r.endloopAddrsOffset]={min:-32768,max:32768,def:0};J[r.startAddrsCoarseOffset]={min:0,max:32768,def:0};J[r.modLfoToPitch]={min:-12e3,max:12e3,def:0};J[r.vibLfoToPitch]={min:-12e3,max:12e3,def:0};J[r.modEnvToPitch]={min:-12e3,max:12e3,def:0};J[r.initialFilterFc]={min:1500,max:13500,def:13500};J[r.initialFilterQ]={min:0,max:960,def:0};J[r.modLfoToFilterFc]={min:-12e3,max:12e3,def:0};J[r.modEnvToFilterFc]={min:-12e3,max:12e3,def:0};J[r.endAddrsCoarseOffset]={min:-32768,max:32768,def:0};J[r.modLfoToVolume]={min:-960,max:960,def:0};J[r.chorusEffectsSend]={min:0,max:1e3,def:0};J[r.reverbEffectsSend]={min:0,max:1e3,def:0};J[r.pan]={min:-500,max:500,def:0};J[r.delayModLFO]={min:-12e3,max:5e3,def:-12e3};J[r.freqModLFO]={min:-16e3,max:4500,def:0};J[r.delayVibLFO]={min:-12e3,max:5e3,def:-12e3};J[r.freqVibLFO]={min:-16e3,max:4500,def:0};J[r.delayModEnv]={min:-32768,max:5e3,def:-32768};J[r.attackModEnv]={min:-32768,max:8e3,def:-32768};J[r.holdModEnv]={min:-12e3,max:5e3,def:-12e3};J[r.decayModEnv]={min:-12e3,max:8e3,def:-12e3};J[r.sustainModEnv]={min:0,max:1e3,def:0};J[r.releaseModEnv]={min:-7200,max:8e3,def:-12e3};J[r.keyNumToModEnvHold]={min:-1200,max:1200,def:0};J[r.keyNumToModEnvDecay]={min:-1200,max:1200,def:0};J[r.delayVolEnv]={min:-12e3,max:5e3,def:-12e3};J[r.attackVolEnv]={min:-12e3,max:8e3,def:-12e3};J[r.holdVolEnv]={min:-12e3,max:5e3,def:-12e3};J[r.decayVolEnv]={min:-12e3,max:8e3,def:-12e3};J[r.sustainVolEnv]={min:0,max:1440,def:0};J[r.releaseVolEnv]={min:-7200,max:8e3,def:-12e3};J[r.keyNumToVolEnvHold]={min:-1200,max:1200,def:0};J[r.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0};J[r.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};J[r.keyNum]={min:-1,max:127,def:-1};J[r.velocity]={min:-1,max:127,def:-1};J[r.initialAttenuation]={min:-250,max:1440,def:0};J[r.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};J[r.coarseTune]={min:-120,max:120,def:0};J[r.fineTune]={min:-12700,max:12700,def:0};J[r.scaleTuning]={min:0,max:1200,def:100};J[r.exclusiveClass]={min:0,max:99999,def:0};J[r.overridingRootKey]={min:-1,max:127,def:-1};J[r.sampleModes]={min:0,max:3,def:0};var b=class{generatorType=r.INVALID;generatorValue=0;constructor(A=r.INVALID,e=0,n=!0){if(this.generatorType=A,e===void 0)throw new Error("No value provided.");if(this.generatorValue=Math.round(e),n){let s=J[A];s!==void 0&&(this.generatorValue=Math.max(s.min,Math.min(s.max,this.generatorValue)))}}};function Kn(t,A,e){let n=J[t]||{min:0,max:32768,def:0},s=A.find(B=>B.generatorType===t),o=0;s&&(o=s.generatorValue);let i=e.find(B=>B.generatorType===t),a=n.def;i&&(a=i.generatorValue);let C=a+o;return t===r.initialAttenuation?C:Math.max(n.min,Math.min(n.max,C))}var O={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},uA={linear:0,concave:1,convex:2,switch:3},K=class t{currentValue=0;constructor(A){this.sourceEnum=A.srcEnum,this.modulatorDestination=A.dest,this.secondarySourceEnum=A.secSrcEnum,this.transformAmount=A.amt,this.transformType=A.transform,this.modulatorDestination>58&&(this.modulatorDestination=r.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===r.reverbEffectsSend||this.modulatorDestination===r.chorusEffectsSend)}static copy(A){return new t({srcEnum:A.sourceEnum,secSrcEnum:A.secondarySourceEnum,transform:A.transformType,amt:A.transformAmount,dest:A.modulatorDestination})}static isIdentical(A,e,n=!1){return A.sourceEnum===e.sourceEnum&&A.modulatorDestination===e.modulatorDestination&&A.secondarySourceEnum===e.secondarySourceEnum&&A.transformType===e.transformType&&(!n||A.transformAmount===e.transformAmount)}sumTransform(A){return new t({srcEnum:this.sourceEnum,secSrcEnum:this.secondarySourceEnum,dest:this.modulatorDestination,transform:this.transformType,amt:this.transformAmount+A.transformAmount})}debugString(){function A(s,o){return Object.keys(s).find(i=>s[i]===o)}let e=A(uA,this.sourceCurveType);e+=this.sourcePolarity===0?" unipolar ":" bipolar ",e+=this.sourceDirection===0?"forwards ":"backwards ",this.sourceUsesCC?e+=A(D,this.sourceIndex):e+=A(O,this.sourceIndex);let n=A(uA,this.secSrcCurveType);return n+=this.secSrcPolarity===0?" unipolar ":" bipolar ",n+=this.secSrcCurveType===0?"forwards ":"backwards ",this.secSrcUsesCC?n+=A(D,this.secSrcIndex):n+=A(O,this.secSrcIndex),`Modulator:
2
- Source: ${e}
1
+ var Nn=(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')});var M=class extends Uint8Array{currentIndex;constructor(A){super(A),this.currentIndex=0}};function QA(e){let A=e.reduce((s,o)=>s+o.length,0),t=new M(A),n=0;for(let s of e)t.set(s,n),n+=s.length;return t}function Jt(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 bn(e){return e.trim().replaceAll(".mid","").replaceAll(".kar","").replaceAll(".rmi","").replaceAll("_"," ").trim()}function wA(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 Ln(e){let A=[];for(let t of e)(t===47||t===92)&&(t=10),A.push(t);return new Uint8Array(A)}var a={warn:"color: orange;",unrecognized:"color: red;",info:"color: aqua;",recognized:"color: lime",value:"color: yellow; background-color: black;"};var ue=class{ticks;messageStatusByte;messageData;constructor(A,t,n){this.ticks=A,this.messageStatusByte=t,this.messageData=n}};function Un(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 Le(e){let A=e&240,t=e&15,n=-1,s=e;return A>=128&&A<=224&&(n=t,s=A),{status:s,channel:n}}var D={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,timbreHarmonicContent:71,releaseTime:72,attackTime:73,brightness:74,soundController6:75,soundController7:76,soundController8:77,soundController9: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},Tn={8:2,9:2,10:2,11:2,12:1,13:1,14:2};var eA={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},de={mainVolume:0,masterPan:1,voicesCap:2,interpolationType:3},LA=-1,RA={channelProperties:0,eventCall:1,reportedCurrentTime:2,sequencerSpecific:3,synthesizerSnapshot:4,ready:5,soundfontError:6,identify:7};var vn=!1,Hn=!0,je=!1,Yn=!0;function Jn(e,A,t,n){vn=e,Hn=A,je=t,Yn=n}function m(...e){vn&&console.info(...e)}function v(...e){Hn&&console.warn(...e)}function qn(...e){Yn&&console.table(...e)}function $A(...e){je&&console.group(...e)}function fA(...e){je&&console.groupCollapsed(...e)}function O(){je&&console.groupEnd()}var fe={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var $e={addMapping:0,deleteMapping:1,clearMappings:2},At=class{_keyMappings=[];handleMessage(A,t){switch(A){default:return;case $e.addMapping:this.addMapping(...t);break;case $e.clearMappings:this.clearMappings();break;case $e.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 r={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},Y=[];Y[r.startAddrsOffset]={min:0,max:32768,def:0};Y[r.endAddrOffset]={min:-32768,max:32768,def:0};Y[r.startloopAddrsOffset]={min:-32768,max:32768,def:0};Y[r.endloopAddrsOffset]={min:-32768,max:32768,def:0};Y[r.startAddrsCoarseOffset]={min:0,max:32768,def:0};Y[r.modLfoToPitch]={min:-12e3,max:12e3,def:0};Y[r.vibLfoToPitch]={min:-12e3,max:12e3,def:0};Y[r.modEnvToPitch]={min:-12e3,max:12e3,def:0};Y[r.initialFilterFc]={min:1500,max:13500,def:13500};Y[r.initialFilterQ]={min:0,max:960,def:0};Y[r.modLfoToFilterFc]={min:-12e3,max:12e3,def:0};Y[r.modEnvToFilterFc]={min:-12e3,max:12e3,def:0};Y[r.endAddrsCoarseOffset]={min:-32768,max:32768,def:0};Y[r.modLfoToVolume]={min:-960,max:960,def:0};Y[r.chorusEffectsSend]={min:0,max:1e3,def:0};Y[r.reverbEffectsSend]={min:0,max:1e3,def:0};Y[r.pan]={min:-500,max:500,def:0};Y[r.delayModLFO]={min:-12e3,max:5e3,def:-12e3};Y[r.freqModLFO]={min:-16e3,max:4500,def:0};Y[r.delayVibLFO]={min:-12e3,max:5e3,def:-12e3};Y[r.freqVibLFO]={min:-16e3,max:4500,def:0};Y[r.delayModEnv]={min:-32768,max:5e3,def:-32768};Y[r.attackModEnv]={min:-32768,max:8e3,def:-32768};Y[r.holdModEnv]={min:-12e3,max:5e3,def:-12e3};Y[r.decayModEnv]={min:-12e3,max:8e3,def:-12e3};Y[r.sustainModEnv]={min:0,max:1e3,def:0};Y[r.releaseModEnv]={min:-7200,max:8e3,def:-12e3};Y[r.keyNumToModEnvHold]={min:-1200,max:1200,def:0};Y[r.keyNumToModEnvDecay]={min:-1200,max:1200,def:0};Y[r.delayVolEnv]={min:-12e3,max:5e3,def:-12e3};Y[r.attackVolEnv]={min:-12e3,max:8e3,def:-12e3};Y[r.holdVolEnv]={min:-12e3,max:5e3,def:-12e3};Y[r.decayVolEnv]={min:-12e3,max:8e3,def:-12e3};Y[r.sustainVolEnv]={min:0,max:1440,def:0};Y[r.releaseVolEnv]={min:-7200,max:8e3,def:-12e3};Y[r.keyNumToVolEnvHold]={min:-1200,max:1200,def:0};Y[r.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0};Y[r.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};Y[r.keyNum]={min:-1,max:127,def:-1};Y[r.velocity]={min:-1,max:127,def:-1};Y[r.initialAttenuation]={min:-250,max:1440,def:0};Y[r.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};Y[r.coarseTune]={min:-120,max:120,def:0};Y[r.fineTune]={min:-12700,max:12700,def:0};Y[r.scaleTuning]={min:0,max:1200,def:100};Y[r.exclusiveClass]={min:0,max:99999,def:0};Y[r.overridingRootKey]={min:-1,max:127,def:-1};Y[r.sampleModes]={min:0,max:3,def:0};var G=class{generatorType=r.INVALID;generatorValue=0;constructor(A=r.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 s=Y[A];s!==void 0&&(this.generatorValue=Math.max(s.min,Math.min(s.max,this.generatorValue)))}}};function Kn(e,A,t){let n=Y[e]||{min:0,max:32768,def:0},s=A.find(C=>C.generatorType===e),o=0;s&&(o=s.generatorValue);let i=t.find(C=>C.generatorType===e),g=n.def;i&&(g=i.generatorValue);let E=g+o;return e===r.initialAttenuation?E:Math.max(n.min,Math.min(n.max,E))}var q={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},dA={linear:0,concave:1,convex:2,switch:3},K=class e{currentValue=0;constructor(A){this.sourceEnum=A.srcEnum,this.modulatorDestination=A.dest,this.secondarySourceEnum=A.secSrcEnum,this.transformAmount=A.amt,this.transformType=A.transform,this.modulatorDestination>58&&(this.modulatorDestination=r.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===r.reverbEffectsSend||this.modulatorDestination===r.chorusEffectsSend)}static copy(A){return new e({srcEnum:A.sourceEnum,secSrcEnum:A.secondarySourceEnum,transform:A.transformType,amt:A.transformAmount,dest:A.modulatorDestination})}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)}sumTransform(A){return new e({srcEnum:this.sourceEnum,secSrcEnum:this.secondarySourceEnum,dest:this.modulatorDestination,transform:this.transformType,amt:this.transformAmount+A.transformAmount})}debugString(){function A(s,o){return Object.keys(s).find(i=>s[i]===o)}let t=A(dA,this.sourceCurveType);t+=this.sourcePolarity===0?" unipolar ":" bipolar ",t+=this.sourceDirection===0?"forwards ":"backwards ",this.sourceUsesCC?t+=A(D,this.sourceIndex):t+=A(q,this.sourceIndex);let n=A(dA,this.secSrcCurveType);return n+=this.secSrcPolarity===0?" unipolar ":" bipolar ",n+=this.secSrcCurveType===0?"forwards ":"backwards ",this.secSrcUsesCC?n+=A(D,this.secSrcIndex):n+=A(q,this.secSrcIndex),`Modulator:
2
+ Source: ${t}
3
3
  Secondary source: ${n}
4
4
  Destination: ${A(r,this.modulatorDestination)}
5
5
  Trasform amount: ${this.transformAmount}
6
6
  Transform type: ${this.transformType}
7
7
 
8
8
 
9
- `}},Ot=960,Vt=uA.concave;function OA(t,A,e,n,s){return t<<10|A<<9|e<<8|n<<7|s}var fr=[new K({srcEnum:OA(Vt,0,1,0,O.noteOnVelocity),dest:r.initialAttenuation,amt:Ot,secSrcEnum:0,transform:0}),new K({srcEnum:129,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new K({srcEnum:OA(Vt,0,1,1,D.mainVolume),dest:r.initialAttenuation,amt:Ot,secSrcEnum:0,transform:0}),new K({srcEnum:13,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new K({srcEnum:526,dest:r.fineTune,amt:12700,secSrcEnum:16,transform:0}),new K({srcEnum:650,dest:r.pan,amt:500,secSrcEnum:0,transform:0}),new K({srcEnum:OA(Vt,0,1,1,D.expressionController),dest:r.initialAttenuation,amt:Ot,secSrcEnum:0,transform:0}),new K({srcEnum:219,dest:r.reverbEffectsSend,amt:200,secSrcEnum:0,transform:0}),new K({srcEnum:221,dest:r.chorusEffectsSend,amt:200,secSrcEnum:0,transform:0})],mr=[new K({srcEnum:OA(uA.linear,0,0,0,O.polyPressure),dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new K({srcEnum:OA(uA.linear,0,0,1,D.tremoloDepth),dest:r.modLfoToVolume,amt:24,secSrcEnum:0,transform:0}),new K({srcEnum:OA(uA.linear,1,0,1,D.releaseTime),dest:r.releaseVolEnv,amt:1200,secSrcEnum:0,transform:0}),new K({srcEnum:OA(uA.linear,1,0,1,D.brightness),dest:r.initialFilterFc,amt:6e3,secSrcEnum:0,transform:0}),new K({srcEnum:OA(uA.linear,1,0,1,D.timbreHarmonicContent),dest:r.initialFilterQ,amt:250,secSrcEnum:0,transform:0})],At=fr.concat(mr);var dA=128,et=147,ke=new Int16Array(et).fill(0),wA=(t,A)=>ke[t]=A<<7;wA(D.mainVolume,100);wA(D.balance,64);wA(D.expressionController,127);wA(D.pan,64);wA(D.timbreHarmonicContent,64);wA(D.releaseTime,64);wA(D.attackTime,64);wA(D.brightness,64);wA(D.soundController6,64);wA(D.soundController7,64);wA(D.soundController8,64);wA(D.soundController9,64);wA(D.generalPurposeController6,64);wA(D.generalPurposeController8,64);wA(D.portamentoControl,64);wA(dA+O.pitchWheel,64);wA(dA+O.pitchWheelRange,2);var cA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},Zt=Object.keys(cA).length,Wt=new Float32Array(Zt);Wt[cA.modulationMultiplier]=1;var RA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6};function On(t=!1){let A={midiControllers:new Int16Array(et),lockedControllers:Array(et).fill(!1),customControllers:new Float32Array(Zt),NRPCoarse:0,NRPFine:0,RPValue:0,dataEntryState:RA.Idle,voices:[],sustainedVoices:[],cachedVoices:[],preset:this.defaultPreset,presetUsesOverride:!1,channelTransposeKeyShift:0,channelOctaveTuning:new Int8Array(12),keyCentTuning:new Int16Array(128),channelVibrato:{delay:0,depth:0,rate:0},randomPan:!1,velocityOverride:0,lockGSNRPNParams:!1,holdPedal:!1,isMuted:!1,drumChannel:!1,lockPreset:!1};for(let e=0;e<128;e++)A.cachedVoices.push([]);this.workletProcessorChannels.push(A),this.resetControllers(this.workletProcessorChannels.length-1),this.sendChannelProperties(),t&&this.callEvent("newchannel",void 0)}function oe(t,A){t.lockPreset||(t.bank=A)}function XA(t){return t.drumChannel?128:t.bank}var Xt={velocityOverride:128};var tt={addMapping:0,deleteMapping:1,clearMappings:2},nt=class{_keyMappings=[];handleMessage(A,e){switch(A){default:return;case tt.addMapping:this.addMapping(...e);break;case tt.clearMappings:this.clearMappings();break;case tt.deleteMapping:this.deleteMapping(...e)}}addMapping(A,e,n){this._keyMappings[A]===void 0&&(this._keyMappings[A]=[]),this._keyMappings[A][e]=n}deleteMapping(A,e){this._keyMappings[A]?.[e]!==void 0&&(this._keyMappings[A][e]=void 0)}clearMappings(){this._keyMappings=[]}setMappings(A){this._keyMappings=A}getMappings(){return this._keyMappings}getVelocity(A,e){let n=this._keyMappings[A]?.[e];return n?n.velocity:-1}hasOverridePatch(A,e){let n=this._keyMappings[A]?.[e]?.patch?.bank;return n!==void 0&&n>=0}getPatch(A,e){let n=this._keyMappings[A]?.[e];if(n)return n.patch;throw new Error("No modifier.")}};var Vn="spessasynth-worklet-system",Zn=350,xA=9,st=16,ot="gs";var UA={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},SA={midiEvent:0,songChange:1,textEvent:2,timeChange:3,pause:4,getMIDI:5,midiError:6,metaEvent:7,loopCountChange:8};function _A(t,A){let e=0;for(let n=8*(A-1);n>=0;n-=8)e|=t[t.currentIndex++]<<n;return e>>>0}function Wn(t,A){if(this.ignoreEvents)return;if(this.sendMIDIMessages&&t.messageStatusByte>=128){this.sendMIDIMessage([t.messageStatusByte,...t.messageData]);return}let e=ve(t.messageStatusByte),n=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(e.channel+=n,e.status){case R.noteOn:let s=t.messageData[1];if(s>0)this.synth.noteOn(e.channel,t.messageData[0],s),this.playingNotes.push({midiNote:t.messageData[0],channel:e.channel,velocity:s});else{this.synth.noteOff(e.channel,t.messageData[0]);let B=this.playingNotes.findIndex(d=>d.midiNote===t.messageData[0]&&d.channel===e.channel);B!==-1&&this.playingNotes.splice(B,1)}break;case R.noteOff:this.synth.noteOff(e.channel,t.messageData[0]);let o=this.playingNotes.findIndex(B=>B.midiNote===t.messageData[0]&&B.channel===e.channel);o!==-1&&this.playingNotes.splice(o,1);break;case R.pitchBend:this.synth.pitchWheel(e.channel,t.messageData[1],t.messageData[0]);break;case R.controllerChange:this.synth.controllerChange(e.channel,t.messageData[0],t.messageData[1]);break;case R.programChange:this.synth.programChange(e.channel,t.messageData[0]);break;case R.polyPressure:this.synth.polyPressure(e.channel,t.messageData[0],t.messageData[1]);break;case R.channelPressure:this.synth.channelPressure(e.channel,t.messageData[0]);break;case R.systemExclusive:this.synth.systemExclusive(t.messageData,n);break;case R.setTempo:t.messageData.currentIndex=0;let i=6e7/_A(t.messageData,3);this.oneTickToSeconds=60/(i*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),v("invalid tempo! falling back to 120 BPM"),i=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 a=-1;e.status===R.lyric&&(a=Math.min(this.midiData.lyricsTicks.indexOf(t.ticks)+1,this.midiData.lyrics.length-1));let C=e.status;this.midiData.isKaraokeFile&&(e.status===R.text||e.status===R.lyric)&&(a=Math.min(this.midiData.lyricsTicks.indexOf(t.ticks)+1,this.midiData.lyricsTicks.length),C=R.lyric),this.post(SA.textEvent,[t.messageData,C,a]);break;case R.midiPort:this.assignMIDIPort(A,t.messageData[0]);break;case R.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:v(`%cUnrecognized Event: %c${t.messageStatusByte}%c status byte: %c${Object.keys(R).find(B=>R[B]===e.status)}`,g.warn,g.unrecognized,g.warn,g.value);break}e.status>=0&&e.status<128&&this.post(SA.metaEvent,[t.messageStatusByte,t.messageData])}function Xn(){for(let t=0;t<16;t++)this.synth.createWorkletChannel(!0),t===xA&&this.synth.setDrums(this.synth.workletProcessorChannels.length-1,!0)}function _n(){if(!this.isActive)return;let t=this.currentTime;for(;this.playedTime<t;){let A=this._findFirstEventIndex(),e=this.tracks[A][this.eventIndex[A]];if(this._processEvent(e,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-e.ticks);let s=this.loop&&(this.loopCount>0||this.loopCount===-1);if(this.midiData.loop.end<=e.ticks&&s){this.loopCount!==1/0&&(this.loopCount--,this.post(SA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}else if(t>=this.duration){if(s){this.loopCount!==1/0&&(this.loopCount--,this.post(SA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function zn(){let t=0,A=1/0;return this.tracks.forEach((e,n)=>{this.eventIndex[n]>=e.length||e[this.eventIndex[n]].ticks<A&&(t=n,A=e[this.eventIndex[n]].ticks)}),t}var we=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};var rt=class extends we{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}},xa={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 G(t,A){let e=0;for(let n=0;n<A;n++)e|=t[t.currentIndex++]<<n*8;return e>>>0}function Fe(t,A,e){for(let n=0;n<e;n++)t[t.currentIndex++]=A>>n*8&255}function U(t,A){t[t.currentIndex++]=A&255,t[t.currentIndex++]=A>>8}function X(t,A){Fe(t,A,4)}function re(t,A){let e=A<<8|t;return e>32767?e-65536:e}function jn(t){return t>127?t-256:t}function j(t,A,e=void 0,n=!0){if(e){let s=t.slice(t.currentIndex,t.currentIndex+A);return t.currentIndex+=A,new TextDecoder(e.replace(/[^\x20-\x7E]/g,"")).decode(s.buffer)}else{let s=!1,o="";for(let i=0;i<A;i++){let a=t[t.currentIndex++];if(!s){if((a<32||a>127)&&a!==10){if(n){s=!0;continue}else if(a===0){s=!0;continue}}o+=String.fromCharCode(a)}}return o}}function it(t,A=0){let e=t.length;A>0&&(e=A);let n=new L(e);return DA(n,t,A),n}function ce(t){return it(t,t.length+1)}function DA(t,A,e=0){e>0&&A.length>e&&(A=A.slice(0,e));for(let n=0;n<A.length;n++)t[t.currentIndex++]=A.charCodeAt(n);if(e>A.length)for(let n=0;n<e-A.length;n++)t[t.currentIndex++]=0;return t}var iA=class{constructor(A,e,n){this.header=A,this.size=e,this.chunkData=n}};function $(t,A=!0,e=!1){let n=j(t,4),s=G(t,4),o;return A&&(o=new L(t.buffer.slice(t.currentIndex,t.currentIndex+s))),(A||e)&&(t.currentIndex+=s),s%2!==0&&t[t.currentIndex]===0&&t.currentIndex++,new iA(n,s,o)}function IA(t,A=void 0){let e=8+t.size;t.size%2!==0&&e++,A&&(e+=A.length);let n=new L(e);return A&&(n.set(A,n.currentIndex),n.currentIndex+=A.length),DA(n,t.header),X(n,e-8-(A?.length||0)),n.set(t.chunkData,n.currentIndex),n}function sA(t,A,e=!1,n=!1){if(e){let B=new Uint8Array(A.length+1);B.set(A),A=B}let s=8,o=s+A.length,i=A.length;o%2!==0&&o++;let a=t;n&&(o+=4,i+=4,s+=4,a="LIST");let C=new L(o);return DA(C,a),X(C,i),n&&DA(C,t),C.set(A,s),C}function NA(t,A){return t.find(e=>e.header!=="LIST"?!1:(e.chunkData.currentIndex=0,j(e.chunkData,4)===A))}function at(t){let A=0;for(;t;){let e=t[t.currentIndex++];if(A=A<<7|e&127,e>>7!==1)break}return A}var gt={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"};var It=class t extends we{embeddedSoundFont=void 0;tracks=[];static copyFrom(A){let e=new t;return e.midiName=A.midiName,e.midiNameUsesFileName=A.midiNameUsesFileName,e.fileName=A.fileName,e.timeDivision=A.timeDivision,e.duration=A.duration,e.copyright=A.copyright,e.tracksAmount=A.tracksAmount,e.firstNoteOn=A.firstNoteOn,e.keyRange={...A.keyRange},e.lastVoiceEventTick=A.lastVoiceEventTick,e.loop={...A.loop},e.format=A.format,e.bankOffset=A.bankOffset,e.isKaraokeFile=A.isKaraokeFile,e.tempoChanges=[...A.tempoChanges],e.lyrics=A.lyrics.map(n=>new Uint8Array(n)),e.lyricsTicks=[...A.lyricsTicks],e.midiPorts=[...A.midiPorts],e.midiPortChannelOffsets=[...A.midiPortChannelOffsets],e.usedChannelsOnTrack=A.usedChannelsOnTrack.map(n=>new Set(n)),e.rawMidiName=A.rawMidiName?new Uint8Array(A.rawMidiName):void 0,e.embeddedSoundFont=A.embeddedSoundFont?A.embeddedSoundFont.slice():void 0,e.RMIDInfo={...A.RMIDInfo},e.tracks=A.tracks.map(n=>[...n]),e}flush(){let A=[];for(let s of this.tracks){s.sort((i,a)=>i.ticks-a.ticks);let o=s.find(i=>(i.messageStatusByte&240)===R.noteOn);o&&A.push(o.ticks)}this.firstNoteOn=Math.min(...A),this.lastVoiceEventTick=0,this.tempoChanges=[{ticks:0,tempo:120}],this.midiPorts=[],this.midiPortChannelOffsets=[];let e=0;this.usedChannelsOnTrack=this.tracks.map(()=>new Set),this.tracks.forEach((s,o)=>{this.midiPorts.push(-1),s.forEach(i=>{if(i.messageStatusByte>=128&&i.messageStatusByte<240&&i.ticks>this.lastVoiceEventTick&&(this.lastVoiceEventTick=i.ticks),i.messageStatusByte===R.setTempo)this.tempoChanges.push({ticks:i.ticks,tempo:6e7/_A(i.messageData,3)});else if((i.messageStatusByte&240)===R.noteOn)this.usedChannelsOnTrack[o].add(i.messageData[0]);else if(i.messageStatusByte===R.midiPort){let a=i.messageData[0];this.midiPorts[o]=a,this.midiPortChannelOffsets[a]===void 0&&(this.midiPortChannelOffsets[a]=e,e+=16)}})}),this.loop={start:this.firstNoteOn,end:this.lastVoiceEventTick},this.tempoChanges.reverse(),this.duration=le(this.lastVoiceEventTick,this);let n=0;for(let s of this.midiPorts)if(s!==-1){n=s;break}this.midiPorts=this.midiPorts.map(s=>s===-1?n:s),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0])}};function le(t,A){let e=0;for(;t>0;){let n=A.tempoChanges.find(o=>o.ticks<t),s=t-n.ticks;e+=s*60/(n.tempo*A.timeDivision),t-=s}return e}var Et=class extends It{constructor(A,e=""){super(),QA("%cParsing MIDI File...",g.info);let n=new L(A),s,o=!1,i=!1,a=!1,C=[],B=j(n,4);if(n.currentIndex-=4,B==="RIFF"){n.currentIndex+=8;let y=j(n,4,void 0,!1);if(y!=="RMID")throw W(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${y}"`);let N=$(n);if(N.header!=="data")throw W(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${y}"`);for(s=N.chunkData;n.currentIndex<=n.length;){let M=n.currentIndex,x=$(n,!0);if(x.header==="RIFF"){let I=j(x.chunkData,4).toLowerCase();I==="sfbk"||I==="sfpk"||I==="dls "?(m("%cFound embedded soundfont!",g.recognized),this.embeddedSoundFont=n.slice(M,M+x.size).buffer):v(`Unknown RIFF chunk: "${I}"`),I==="dls "&&(a=!0)}else if(x.header==="LIST"&&j(x.chunkData,4)==="INFO"){for(m("%cFound RMIDI INFO chunk!",g.recognized),this.RMIDInfo={};x.chunkData.currentIndex<=x.size;){let P=$(x.chunkData,!0);this.RMIDInfo[P.header]=P.chunkData}this.RMIDInfo.ICOP&&(o=!0,this.copyright=j(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
10
- `," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[gt.name],this.midiName=j(this.rawMidiName,this.rawMidiName.length,void 0,!1).replaceAll(`
11
- `," "),i=!0),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.PRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[gt.bankOffset]&&(this.bankOffset=G(this.RMIDInfo[gt.bankOffset],2))}}a&&(this.bankOffset=0),this.embeddedSoundFont===void 0&&(this.bankOffset=0)}else s=n;let d=this.readMIDIChunk(s);if(d.type!=="MThd")throw W(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${d.type}"`);if(d.size!==6)throw W(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${d.size}`);this.format=_A(d.data,2),this.tracksAmount=_A(d.data,2),this.timeDivision=_A(d.data,2),this.keyRange={min:127,max:0},this.lyrics=[],this.tempoChanges=[{ticks:0,tempo:120}];let c=null,Q=null,l=!1;this.lastVoiceEventTick=0,this.midiPorts=[];let f=0;this.midiPortChannelOffsets=[],this.usedChannelsOnTrack=[],this.tracks=[];for(let y=0;y<this.tracksAmount;y++){let N=[],M=this.readMIDIChunk(s),x=new Set;if(this.midiPorts.push(-1),M.type!=="MTrk")throw W(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${M.type}"`);let I=!1,P,q=0;for(this.format===2&&y>0&&(q+=this.tracks[y-1][this.tracks[y-1].length-1].ticks);M.data.currentIndex<M.size;){q+=at(M.data);let AA=M.data[M.data.currentIndex],Z;if(P!==void 0&&AA<128)Z=P;else{if(!P&&AA<128)throw W(),new SyntaxError(`Unexpected byte with no running byte. (${AA})`);Z=M.data[M.data.currentIndex++]}let aA=Tn(Z),rA;switch(aA){case-1:rA=0;break;case-2:Z=M.data[M.data.currentIndex++],rA=at(M.data);break;case-3:rA=at(M.data);break;default:if(q>this.lastVoiceEventTick&&(this.lastVoiceEventTick=q),rA=vn[Z>>4],(Z&240)===R.noteOn){x.add(aA);let fA=M.data[M.data.currentIndex];this.keyRange.min=Math.min(this.keyRange.min,fA),this.keyRange.max=Math.max(this.keyRange.max,fA)}P=Z;break}let eA=new L(rA),nA=M.data.slice(M.data.currentIndex,M.data.currentIndex+rA);M.data.currentIndex+=rA,eA.set(nA,0);let hA=new ye(q,Z,eA);switch(N.push(hA),aA){case-2:let fA=j(eA,eA.length);switch(Z){case R.setTempo:this.tempoChanges.push({ticks:q,tempo:6e7/_A(nA,3)});break;case R.marker:switch(fA.trim().toLowerCase()){default:break;case"start":case"loopstart":c=q;break;case"loopend":Q=q}eA.currentIndex=0;break;case R.midiPort:let fe=eA[0];this.midiPorts[y]=fe,this.midiPortChannelOffsets[fe]===void 0&&(this.midiPortChannelOffsets[fe]=f,f+=16);break;case R.copyright:o||(eA.currentIndex=0,C.push(j(eA,eA.length,void 0,!1)));break;case R.lyric:if(fA.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,m("%cKaraoke MIDI detected!",g.recognized)),this.isKaraokeFile)hA.messageStatusByte=R.text,Z=R.text;else{this.lyrics.push(eA),this.lyricsTicks.push(q);break}case R.text:let ne=fA.trim();ne.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,m("%cKaraoke MIDI detected!",g.recognized)):this.isKaraokeFile&&(ne.startsWith("@T")||ne.startsWith("@A")?l?C.push(ne.substring(2).trim()):(this.midiName=ne.substring(2).trim(),l=!0,i=!0,this.rawMidiName=it(this.midiName)):ne[0]!=="@"&&(this.lyrics.push(Un(eA)),this.lyricsTicks.push(q)));break}break;case-3:break;default:I=!0;for(let te=0;te<eA.length;te++)eA[te]=Math.min(127,eA[te]);if((Z&240)===R.controllerChange)switch(eA[0]){case 2:case 116:c=q;break;case 4:case 117:Q===null?Q=q:Q=0;break;case 0:a&&eA[1]!==0&&eA[1]!==127&&(m("%cDLS RMIDI with offset 1 detected!",g.recognized),this.bankOffset=1)}}}if(this.tracks.push(N),this.usedChannelsOnTrack.push(x),!I){let AA=N.find(Z=>Z.messageStatusByte===R.trackName);if(AA){AA.messageData.currentIndex=0;let Z=j(AA.messageData,AA.messageData.length);C.push(Z)}}m(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,g.info,g.value,g.info,g.value)}m("%cAll tracks parsed correctly!",g.recognized),QA("%cCorrecting loops, ports and detecting notes...",g.info);let w=[];for(let y of this.tracks){let N=y.find(M=>(M.messageStatusByte&240)===R.noteOn);N&&w.push(N.ticks)}this.firstNoteOn=Math.min(...w),m(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,g.info,g.recognized,g.info),c!==null&&Q===null?(c=this.firstNoteOn,Q=this.lastVoiceEventTick):(c===null&&(c=this.firstNoteOn),(Q===null||Q===0)&&(Q=this.lastVoiceEventTick)),this.loop={start:c,end:Q},m(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,g.info,g.recognized,g.info,g.recognized);let k=0;for(let y of this.midiPorts)if(y!==-1){k=y;break}if(this.midiPorts=this.midiPorts.map(y=>y===-1?k:y),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?m("%cNo additional MIDI Ports detected.",g.info):m("%cMIDI Ports detected!",g.recognized),!i)if(this.tracks.length>1){if(this.tracks[0].find(y=>y.messageStatusByte>=R.noteOn&&y.messageStatusByte<R.polyPressure)===void 0){let y=this.tracks[0].find(N=>N.messageStatusByte===R.trackName);y&&(this.rawMidiName=y.messageData,y.messageData.currentIndex=0,this.midiName=j(y.messageData,y.messageData.length,void 0,!1))}}else{let y=this.tracks[0].find(N=>N.messageStatusByte===R.trackName);y&&(this.rawMidiName=y.messageData,y.messageData.currentIndex=0,this.midiName=j(y.messageData,y.messageData.length,void 0,!1))}if(o||(this.copyright=C.map(y=>y.trim().replace(/(\r?\n)+/g,`
12
- `)).filter(y=>y.length>0).join(`
13
- `)||""),this.fileName=e,this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){m("%cNo name detected. Using the alt name!",g.info),this.midiName=Ln(e),this.midiNameUsesFileName=!0,this.rawMidiName=new Uint8Array(this.midiName.length);for(let y=0;y<this.midiName.length;y++)this.rawMidiName[y]=this.midiName.charCodeAt(y)}else m(`%cMIDI Name detected! %c"${this.midiName}"`,g.info,g.recognized);let F=!0;for(let y of this.lyrics)if(y[0]===32||y[y.length-1]===32){F=!1;break}F&&(this.lyrics=this.lyrics.map(y=>{if(y[y.length-1]===45)return y;let N=new Uint8Array(y.length+1);return N.set(y,0),N[y.length]=32,N})),this.tempoChanges.reverse(),this.duration=le(this.lastVoiceEventTick,this),W(),m(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,g.info,g.recognized,g.info,g.recognized),W()}readMIDIChunk(A){let e={};e.type=j(A,4),e.size=_A(A,4),e.data=new L(e.size);let n=A.slice(A.currentIndex,A.currentIndex+e.size);return e.data.set(n,0),A.currentIndex+=e.size,e}};function $n(t,A){QA("%cSearching for all used programs and keys...",g.info);let e=16+t.midiPortChannelOffsets.reduce((c,Q)=>Q>c?Q:c),n=[];for(let c=0;c<e;c++){let Q=c%16===xA?128:0;n.push({program:0,bank:Q,drums:c%16===xA,string:`${Q}:0`})}function s(c){let Q=A.getPreset(c.bank,c.program);c.bank=Q.bank,c.program=Q.program,c.string=c.bank+":"+c.program,o[c.string]||(m(`%cDetected a new preset: %c${c.string}`,g.info,g.recognized),o[c.string]=new Set)}let o={},i=Array(t.tracks.length).fill(0),a=t.tracks.length;function C(){let c=0,Q=1/0;return t.tracks.forEach((l,f)=>{i[f]>=l.length||l[i[f]].ticks<Q&&(c=f,Q=l[i[f]].ticks)}),c}let B=t.midiPorts.slice(),d="gs";for(;a>0;){let c=C(),Q=t.tracks[c];if(i[c]>=Q.length){a--;continue}let l=Q[i[c]];if(i[c]++,l.messageStatusByte===R.midiPort){B[c]=l.messageData[0];continue}let f=l.messageStatusByte&240;if(f!==R.noteOn&&f!==R.controllerChange&&f!==R.programChange&&f!==R.systemExclusive)continue;let w=(l.messageStatusByte&15)+t.midiPortChannelOffsets[B[c]]||0,k=n[w];switch(f){case R.programChange:k.program=l.messageData[0],s(k);break;case R.controllerChange:if(l.messageData[0]!==D.bankSelect||d==="gs"&&k.drums)continue;let F=l.messageData[1],y=Math.max(0,F-t.bankOffset);if(d==="xg"){let x=F===120||F===126||F===127;x!==k.drums?(k.drums=x,k.bank=k.drums?128:y,s(k)):k.bank=k.drums?128:y;continue}n[w].bank=y;break;case R.noteOn:if(l.messageData[1]===0)continue;s(k),o[k.string].add(`${l.messageData[0]}-${l.messageData[1]}`);break;case R.systemExclusive:if(l.messageData[0]!==65||l.messageData[2]!==66||l.messageData[3]!==18||l.messageData[4]!==64||(l.messageData[5]&16)===0||l.messageData[6]!==21){l.messageData[0]===67&&l.messageData[2]===76&&l.messageData[5]===126&&l.messageData[6]===0&&(d="xg");continue}let N=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][l.messageData[5]&15]+t.midiPortChannelOffsets[B[c]],M=!!(l.messageData[7]>0&&l.messageData[5]>>4);k=n[N],k.drums=M,k.bank=M?128:0,s(k);break}}for(let c of Object.keys(o))o[c].size===0&&(m(`%cDetected change but no keys for %c${c}`,g.info,g.value),delete o[c]);return W(),o}function As(t,A){this.midiData.usedChannelsOnTrack[t].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[t]=A)}function es(t,A=!0){if(this.stop(),!t.tracks)throw new Error("This MIDI has no tracks!");if(this.oneTickToSeconds=60/(120*t.timeDivision),this.midiData=t,this.midiData.embeddedSoundFont!==void 0)m("%cEmbedded soundfont detected! Using it.",g.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),QA("%cPreloading samples...",g.info);let e=$n(this.midiData,this.synth.soundfontManager);for(let[n,s]of Object.entries(e)){let o=parseInt(n.split(":")[0]),i=parseInt(n.split(":")[1]),a=this.synth.getPreset(o,i);m(`%cPreloading used samples on %c${a.presetName}%c...`,g.info,g.recognized,g.info);for(let C of s){let B=C.split("-");a.preloadSpecific(parseInt(B[0]),parseInt(B[1]))}}W()}if(this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts.slice(),this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((e,n)=>{this.assignMIDIPort(n,e)}),this.duration=this.midiData.duration,this.firstNoteTime=le(this.midiData.firstNoteOn,this.midiData),m(`%cTotal song time: ${Kt(Math.ceil(this.duration)).time}`,g.recognized),this.post(SA.songChange,[new rt(this.midiData),this.songIndex,A]),this.duration<=1&&(v(`%cVery short song: (${Kt(Math.round(this.duration)).time}). Disabling loop!`,g.warn),this.loop=!1),A)this.play(!0);else{let e=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(e),this.pause()}}function ts(t,A=!0){this.songs=t.reduce((e,n)=>{if(n.duration)return e.push(n),e;try{e.push(new Et(n.binary,n.altName||""))}catch(s){return this.post(SA.midiError,s.message),e}return e},[]),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.loadNewSequence(this.songs[this.songIndex],A))}function ns(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadNewSequence(this.songs[this.songIndex])}function ss(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadNewSequence(this.songs[this.songIndex])}var Re=ke.slice(0,128);function os(t,A=void 0){this.oneTickToSeconds=60/(120*this.midiData.timeDivision),this.synth.resetAllControllers(),this.sendMIDIReset(),this._resetTimers();let e=this.synth.workletProcessorChannels.length,n=Array(e).fill(8192),s=[];for(let a=0;a<e;a++)s.push({program:-1,bank:0,actualBank:0});let o=a=>a===D.dataDecrement||a===D.dataIncrement||a===D.dataEntryMsb||a===D.dataDecrement||a===D.lsbForControl6DataEntry||a===D.RPNLsb||a===D.RPNMsb||a===D.NRPNLsb||a===D.NRPNMsb||a===D.bankSelect||a===D.lsbForControl0BankSelect||a===D.resetAllControllers,i=[];for(let a=0;a<e;a++)i.push(Array.from(Re));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>=t)break;let B=ve(C.messageStatusByte),d=B.channel+(this.midiPortChannelOffsets[this.midiPorts[a]]||0);switch(B.status){case R.noteOn:i[d]===void 0&&(i[d]=Array.from(Re)),i[d][D.portamentoControl]=C.messageData[0];break;case R.noteOff:break;case R.pitchBend:n[d]=C.messageData[1]<<7|C.messageData[0];break;case R.programChange:let Q=s[d];Q.program=C.messageData[0],Q.actualBank=Q.bank;break;case R.controllerChange:let l=C.messageData[0];if(o(l)){let f=C.messageData[1];if(l===D.bankSelect){s[d].bank=f;break}else l===D.resetAllControllers&&(i[d]=Array.from(Re));this.sendMIDIMessages?this.sendMIDICC(d,l,f):this.synth.controllerChange(d,l,f)}else i[d]===void 0&&(i[d]=Array.from(Re)),i[d][l]=C.messageData[1];break;default:this._processEvent(C,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-C.ticks)}if(this.sendMIDIMessages){for(let a=0;a<e;a++)if(n[a]!==void 0&&this.sendMIDIPitchWheel(a,n[a]>>7,n[a]&127),i[a]!==void 0&&i[a].forEach((C,B)=>{C!==Re[B]&&!o(B)&&this.sendMIDICC(a,B,C)}),s[a].program>=0&&s[a].actualBank>=0){let C=s[a].actualBank;this.sendMIDICC(a,D.bankSelect,C),this.sendMIDIProgramChange(a,s[a].program)}}else for(let a=0;a<e;a++)if(n[a]!==void 0&&this.synth.pitchWheel(a,n[a]>>7,n[a]&127),i[a]!==void 0&&i[a].forEach((C,B)=>{C!==Re[B]&&!o(B)&&this.synth.controllerChange(a,B,C)}),s[a].program>=0&&s[a].actualBank>=0){let C=s[a].actualBank;this.synth.controllerChange(a,D.bankSelect,C),this.synth.programChange(a,s[a].program)}return!0}function rs(t=!1){if(this.midiData!==void 0){if(t){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 is(t){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(SA.timeChange,currentTime-le(t,this.midiData));let A=this._playTo(0,t);this._recalculateStartTime(this.playedTime),A&&this.play()}function as(t){this.absoluteStartTime=currentTime-t/this._playbackRate}function gs(t,A){switch(t){default:break;case UA.loadNewSongList:this.loadNewSongList(A[0],A[1]);break;case UA.pause:this.pause();break;case UA.play:this.play(A);break;case UA.stop:this.stop();break;case UA.setTime:this.currentTime=A;break;case UA.changeMIDIMessageSending:this.sendMIDIMessages=A;break;case UA.setPlaybackRate:this.playbackRate=A;break;case UA.setLoop:let[e,n]=A;this.loop=e,n===LA?this.loopCount=1/0:this.loopCount=n;break;case UA.changeSong:A?this.nextSong():this.previousSong();break;case UA.getMIDI:this.post(SA.getMIDI,this.midiData);break;case UA.setSkipToFirstNote:this._skipToFirstNoteOn=A;break;case UA.setPreservePlaybackState:this.preservePlaybackState=A}}function Is(t,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:FA.sequencerSpecific,messageData:{messageType:t,messageData:A}})}function Es(t){this.post(SA.midiEvent,t)}function Cs(t,A,e){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.controllerChange|t,A,e])}function Bs(t,A){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.programChange|t,A])}function hs(t,A,e){t%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.pitchBend|t,e,A])}function cs(){if(this.sendMIDIMessages){this.sendMIDIMessage([R.reset]);for(let t=0;t<st;t++)this.sendMIDIMessage([R.controllerChange|t,D.allSoundOff,0]),this.sendMIDIMessage([R.controllerChange|t,D.resetAllControllers,0])}}var BA=class{constructor(A){this.synth=A,this.ignoreEvents=!1,this.isActive=!1,this.sendMIDIMessages=!1,this.loopCount=1/0,this.eventIndex=[],this.songIndex=0,this.playedTime=0,this.pausedTime=void 0,this.absoluteStartTime=currentTime,this._playbackRate=1,this.playingNotes=[],this.loop=!0,this.midiData=void 0,this.midiPorts=[],this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this._skipToFirstNoteOn=!0,this.preservePlaybackState=!1}set playbackRate(A){let e=this.currentTime;this._playbackRate=A,this.currentTime=e}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 e=this.paused&&this.preservePlaybackState;if(this.pausedTime=void 0,this.post(SA.timeChange,currentTime-A),this.midiData.duration===0){v("No duration!"),this.post(SA.pause,!0);return}this._playTo(A),this._recalculateStartTime(A),e?this.pause():this.play()}get paused(){return this.pausedTime!==void 0}pause(A=!1){if(this.paused){v("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this.post(SA.pause,A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,D.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<st;A++)this.sendMIDICC(A,D.allNotesOff,0)}}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}};BA.prototype.sendMIDIMessage=Es;BA.prototype.sendMIDIReset=cs;BA.prototype.sendMIDICC=Cs;BA.prototype.sendMIDIProgramChange=Bs;BA.prototype.sendMIDIPitchWheel=hs;BA.prototype.assignMIDIPort=As;BA.prototype.post=Is;BA.prototype.processMessage=gs;BA.prototype._processEvent=Wn;BA.prototype._addNewMidiPort=Xn;BA.prototype.processTick=_n;BA.prototype._findFirstEventIndex=zn;BA.prototype.loadNewSequence=es;BA.prototype.loadNewSongList=ts;BA.prototype.nextSong=ns;BA.prototype.previousSong=ss;BA.prototype.play=rs;BA.prototype._playTo=os;BA.prototype.setTimeTicks=is;BA.prototype._recalculateStartTime=as;var _t=new Float32Array(30001);for(let t=0;t<_t.length;t++){let A=-15e3+t;_t[t]=Math.pow(2,A/1200)}function VA(t){return t<=-32767?0:_t[t- -15e3]}var Ct=-2e4,ls=16500,zt=new Float32Array(ls-Ct+1);for(let t=0;t<zt.length;t++){let A=Ct+t;zt[t]=440*Math.pow(2,(A-6900)/1200)}function He(t){return t<Ct||t>ls?440*Math.pow(2,(t-6900)/1200):zt[~~t-Ct]}var $t=-1660,pr=1600,jt=new Float32Array((pr-$t)*100+1);for(let t=0;t<jt.length;t++){let A=($t*100+t)/100;jt[t]=Math.pow(10,-A/20)}function PA(t){return jt[Math.floor((t-$t)*100)]}function Bt(t,A,e){if(e<t)return 0;let n=(e-t)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}var mA=16384,$A=new Float32Array(mA+1),Qe=new Float32Array(mA+1);$A[0]=0;$A[$A.length-1]=1;Qe[0]=0;Qe[Qe.length-1]=1;for(let t=1;t<mA-1;t++){let A=-.4166666666666667*Math.log(t/($A.length-1))/Math.LN10;Qe[t]=1-A,$A[$A.length-1-t]=A}function ue(t,A,e,n){switch(t&&(e=1-e),A){case uA.linear:return n?e*2-1:e;case uA.switch:return e=e>.5?1:0,n?e*2-1:e;case uA.concave:return n?(e=e*2-1,e<0?-$A[~~(e*-mA)]:$A[~~(e*mA)]):$A[~~(e*mA)];case uA.convex:return n?(e=e*2-1,e<0?-Qe[~~(e*-mA)]:Qe[~~(e*mA)]):Qe[~~(e*mA)]}}var An=1,en=new Float32Array(1e3);for(let t=0;t<en.length;t++)en[t]=ue(0,uA.convex,t/1e3,0);var qA=class t{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){t.recalculate(A)}static recalculate(A){let e=A.modulationEnvelope;A.isInRelease&&(e.releaseStartLevel=t.getValue(A,A.releaseStartTime,!0)),e.sustainLevel=1-A.modulatedGenerators[r.sustainModEnv]/1e3,e.attackDuration=VA(A.modulatedGenerators[r.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvDecay],s=VA(A.modulatedGenerators[r.decayModEnv]+n);e.decayDuration=s*(1-e.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvHold];e.holdDuration=VA(o+A.modulatedGenerators[r.holdModEnv]);let i=VA(A.modulatedGenerators[r.releaseModEnv]);e.releaseDuration=i*e.releaseStartLevel,e.delayEnd=A.startTime+VA(A.modulatedGenerators[r.delayModEnv]),e.attackEnd=e.delayEnd+e.attackDuration,e.holdEnd=e.attackEnd+e.holdDuration,e.decayEnd=e.holdEnd+e.decayDuration}static getValue(A,e,n=!1){let s=A.modulationEnvelope;return A.isInRelease&&!n?s.releaseStartLevel===0?0:Math.max(0,(1-(e-A.releaseStartTime)/s.releaseDuration)*s.releaseStartLevel):(e<s.delayEnd?s.currentValue=0:e<s.attackEnd?s.currentValue=en[~~((1-(s.attackEnd-e)/s.attackDuration)*1e3)]:e<s.holdEnd?s.currentValue=An:e<s.decayEnd?s.currentValue=(1-(s.decayEnd-e)/s.decayDuration)*(s.sustainLevel-An)+An:s.currentValue=s.sustainLevel,s.currentValue)}};var Ge={linear:0,nearestNeighbor:1,fourthOrder:2};function Qs(t,A){let e=t.sample,n=e.cursor,s=e.sampleData;if(e.isLooping){let o=e.loopEnd-e.loopStart;for(let i=0;i<A.length;i++){for(;n>=e.loopEnd;)n-=o;let a=~~n,C=a+1;for(;C>=e.loopEnd;)C-=o;let B=n-a,d=s[C],c=s[a];A[i]=c+(d-c)*B,n+=e.playbackStep*t.currentTuningCalculated}}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let o=0;o<A.length;o++){let i=~~n,a=i+1;if(a>=e.end){t.finished=!0;return}let C=n-i,B=s[a],d=s[i];A[o]=d+(B-d)*C,n+=e.playbackStep*t.currentTuningCalculated}}t.sample.cursor=n}function us(t,A){let e=t.sample,n=e.cursor,s=e.loopEnd-e.loopStart,o=e.sampleData;if(t.sample.isLooping)for(let i=0;i<A.length;i++){for(;n>=e.loopEnd;)n-=s;let a=~~n+1;for(;a>=e.loopEnd;)a-=s;A[i]=o[a],n+=e.playbackStep*t.currentTuningCalculated}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let i=0;i<A.length;i++){let a=~~n+1;if(a>=e.end){t.finished=!0;return}A[i]=o[a],n+=e.playbackStep*t.currentTuningCalculated}}e.cursor=n}function ds(t,A){let e=t.sample,n=e.cursor,s=e.sampleData;if(e.isLooping){let o=e.loopEnd-e.loopStart;for(let i=0;i<A.length;i++){for(;n>=e.loopEnd;)n-=o;let a=~~n,C=a+1,B=C+1,d=B+1,c=n-a;C>=e.loopEnd&&(C-=o),B>=e.loopEnd&&(B-=o),d>=e.loopEnd&&(d-=o);let Q=s[a],l=s[C],f=s[B],w=s[d],k=.5*(f-Q),F=Q-2.5*l+2*f-.5*w,y=.5*(w-Q)+1.5*(l-f);A[i]=((y*c+F)*c+k)*c+l,n+=e.playbackStep*t.currentTuningCalculated}}else{if(e.loopingMode===2&&!t.isInRelease)return;for(let o=0;o<A.length;o++){let i=~~n,a=i+1,C=a+1,B=C+1,d=n-i;if(a>=e.end||C>=e.end||B>=e.end){t.finished=!0;return}let c=s[i],Q=s[a],l=s[C],f=s[B],w=.5*(l-c),k=c-2.5*Q+2*l-.5*f,F=.5*(f-c)+1.5*(Q-l);A[o]=((F*d+k)*d+w)*d+Q,n+=e.playbackStep*t.currentTuningCalculated}}t.sample.cursor=n}var fs=.01,TA=100,tn=90,yr=15e-6,KA=class t{currentSampleTime=0;sampleRate;currentAttenuationDb=TA;state=0;releaseStartDb=TA;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,e){this.sampleRate=A,this.canEndOnSilentSustain=e/10>=tn}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=PA(A.volumeEnvelope.currentAttenuationDb),t.recalculate(A)}static recalculate(A){let e=A.volumeEnvelope,n=B=>Math.max(0,Math.floor(VA(B)*e.sampleRate));e.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[r.initialAttenuation],1440))/10,e.attenuationTargetGain=PA(e.attenuationTarget),e.sustainDbRelative=Math.min(TA,A.modulatedGenerators[r.sustainVolEnv]/10);let s=Math.min(TA,e.sustainDbRelative);e.attackDuration=n(A.modulatedGenerators[r.attackVolEnv]);let o=A.modulatedGenerators[r.decayVolEnv],i=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvDecay],a=s/TA;e.decayDuration=n(o+i)*a,e.releaseDuration=n(A.modulatedGenerators[r.releaseVolEnv]),e.delayEnd=n(A.modulatedGenerators[r.delayVolEnv]),e.attackEnd=e.attackDuration+e.delayEnd;let C=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvHold];if(e.holdEnd=n(A.modulatedGenerators[r.holdVolEnv]+C)+e.attackEnd,e.decayEnd=e.decayDuration+e.holdEnd,e.state===0&&e.attackEnd===0&&(e.state=2),A.isInRelease){let B=Math.max(0,Math.min(TA,e.sustainDbRelative)),d=B/TA;switch(e.decayDuration=n(o+i)*d,e.state){case 0:e.releaseStartDb=TA;break;case 1:let Q=1-(e.attackEnd-e.releaseStartTimeSamples)/e.attackDuration;e.releaseStartDb=20*Math.log10(Q)*-1;break;case 2:e.releaseStartDb=0;break;case 3:e.releaseStartDb=(1-(e.decayEnd-e.releaseStartTimeSamples)/e.decayDuration)*B;break;case 4:e.releaseStartDb=B;break}e.releaseStartDb=Math.max(0,Math.min(e.releaseStartDb,TA)),e.releaseStartDb>=tn&&(A.finished=!0),e.currentReleaseGain=PA(e.releaseStartDb);let c=(TA-e.releaseStartDb)/TA;e.releaseDuration*=c}}static apply(A,e,n,s){let o=A.volumeEnvelope,i=n/10,a=s;if(A.isInRelease){let B=o.currentSampleTime-o.releaseStartTimeSamples;if(B>=o.releaseDuration){for(let c=0;c<e.length;c++)e[c]=0;A.finished=!0;return}let d=TA-o.releaseStartDb;for(let c=0;c<e.length;c++){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*a;let Q=B/o.releaseDuration*d+o.releaseStartDb;o.currentReleaseGain=o.attenuation*PA(Q+i),e[c]*=o.currentReleaseGain,o.currentSampleTime++,B++}o.currentReleaseGain<=yr&&(A.finished=!0);return}let C=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=TA,e[C]=0,o.currentSampleTime++,++C>=e.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*a;let B=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(e[C]*=B*o.attenuation*PA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++C>=e.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*a,e[C]*=o.attenuation*PA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++C>=e.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*a,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,e[C]*=o.attenuation*PA(o.currentAttenuationDb+i),o.currentSampleTime++,++C>=e.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=tn&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*a,e[C]*=o.attenuation*PA(o.sustainDbRelative+i),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++C>=e.length)return}}};var Me=class t{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;reasonanceCb=0;cutoffCents=13501;static apply(A,e,n,s){if(s&&n>13499&&A.filter.reasonanceCb===0)return;let o=A.filter;(o.cutoffCents!==n||o.reasonanceCb!==A.modulatedGenerators[r.initialFilterQ])&&(o.cutoffCents=n,o.reasonanceCb=A.modulatedGenerators[r.initialFilterQ],t.calculateCoefficients(o));for(let i=0;i<e.length;i++){let a=e[i],C=o.a0*a+o.a1*o.x1+o.a2*o.x2-o.a3*o.y1-o.a4*o.y2;o.x2=o.x1,o.x1=a,o.y2=o.y1,o.y1=C,e[i]=C}}static calculateCoefficients(A){let e=~~A.cutoffCents,n=A.reasonanceCb;if(t.cachedCoefficients?.[n]?.[e]===void 0){let o=He(e);o=Math.min(o,.45*sampleRate);let i=n/10,a=PA(-1*(i-3.01)),C=1/Math.sqrt(PA(-i)),B=2*Math.PI*o/sampleRate,d=Math.cos(B),c=Math.sin(B)/(2*a),Q=(1-d)*C,l=Q/2,f=l,w=1+c,k=-2*d,F=1-c,y={};y.a0=l/w,y.a1=Q/w,y.a2=f/w,y.a3=k/w,y.a4=F/w,t.cachedCoefficients[n]===void 0&&(t.cachedCoefficients[n]=[]),t.cachedCoefficients[n][e]=y}let s=t.cachedCoefficients[n][e];A.a0=s.a0,A.a1=s.a1,A.a2=s.a2,A.a3=s.a3,A.a4=s.a4}};function ms(t,A,e,n,s,o){if(A.isInRelease||currentTime>=A.releaseStartTime&&(A.isInRelease=!0,KA.startRelease(A),qA.startRelease(A),A.sample.loopingMode===3&&(A.sample.isLooping=!1)),A.modulatedGenerators[r.initialAttenuation]>2500){A.isInRelease&&(A.finished=!0);return}let i=A.targetKey,a=A.modulatedGenerators[r.fineTune]+t.customControllers[cA.channelTuning]+t.customControllers[cA.channelTransposeFine]+t.customControllers[cA.masterTuning]+t.channelOctaveTuning[A.midiNote%12]+t.keyCentTuning[A.midiNote],C=A.modulatedGenerators[r.coarseTune]+t.customControllers[cA.channelTuningSemitones],B=this.tunings[t.preset.program]?.[A.realKey];if(B?.midiNote>=0&&(i=B.midiNote,a+=B.centTuning),A.portamentoFromKey>-1){let I=Math.min((currentTime-A.startTime)/A.portamentoDuration,1),P=i-A.portamentoFromKey;C-=P*(1-I)}a+=(i-A.sample.rootKey)*A.modulatedGenerators[r.scaleTuning];let d=A.modulatedGenerators[r.vibLfoToPitch];if(d!==0){let I=A.startTime+VA(A.modulatedGenerators[r.delayVibLFO]),P=He(A.modulatedGenerators[r.freqVibLFO]),q=Bt(I,P,currentTime);a+=q*(d*t.customControllers[cA.modulationMultiplier])}let c=A.modulatedGenerators[r.initialFilterFc],Q=c,l=A.modulatedGenerators[r.modLfoToPitch],f=A.modulatedGenerators[r.modLfoToVolume],w=A.modulatedGenerators[r.modLfoToFilterFc],k=0;if(l+w+f!==0){let I=A.startTime+VA(A.modulatedGenerators[r.delayModLFO]),P=He(A.modulatedGenerators[r.freqModLFO]),q=Bt(I,P,currentTime);a+=q*(l*t.customControllers[cA.modulationMultiplier]),k=-q*f,Q+=q*w}if(t.channelVibrato.depth>0){let I=Bt(A.startTime+t.channelVibrato.delay,t.channelVibrato.rate,currentTime);I&&(a+=I*t.channelVibrato.depth)}let F=A.modulatedGenerators[r.modEnvToPitch],y=A.modulatedGenerators[r.modEnvToFilterFc],N=qA.getValue(A,currentTime);Q+=N*y,a+=N*F;let M=~~(a+C*100);M!==A.currentTuningCents&&(A.currentTuningCents=M,A.currentTuningCalculated=Math.pow(2,M/1200));let x=new Float32Array(e.length);switch(this.interpolationType){case Ge.linear:default:Qs(A,x);break;case Ge.nearestNeighbor:us(A,x);break;case Ge.fourthOrder:ds(A,x)}Me.apply(A,x,Q,c>13499),KA.apply(A,x,k,this.volumeEnvelopeSmoothingFactor),this.panVoice(A,x,e,n,s,o)}function Sr(t,A){let e=0;return t.drumChannel&&(e+=5),A.isInRelease&&(e-=5),e+=A.velocity/25,e-=A.volumeEnvelope.state,A.isInRelease&&(e-=5),e-=A.volumeEnvelope.currentAttenuationDb/50,e}function ps(t){let A=[];for(let n of this.workletProcessorChannels)for(let s of n.voices)if(!s.finished){let o=Sr(n,s);A.push({channel:n,voice:s,priority:o})}A.sort((n,s)=>n.priority-s.priority);let e=A.slice(0,t);for(let{channel:n,voice:s}of e){let o=n.voices.indexOf(s);o>-1&&n.voices.splice(o,1)}}function ys(t,A=Ss){t.releaseStartTime=currentTime,t.releaseStartTime-t.startTime<A&&(t.releaseStartTime=t.startTime+A)}var zA=zA!==void 0?zA:{},Ds=!1,ks;zA.isInitialized=new Promise(t=>ks=t);var Dr=function(t){var A,e,n,s,o,i,a,C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",B="",d=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=C.indexOf(t.charAt(d++)),o=C.indexOf(t.charAt(d++)),i=C.indexOf(t.charAt(d++)),a=C.indexOf(t.charAt(d++)),A=s<<2|o>>4,e=(15&o)<<4|i>>2,n=(3&i)<<6|a,B+=String.fromCharCode(A),i!==64&&(B+=String.fromCharCode(e)),a!==64&&(B+=String.fromCharCode(n));while(d<t.length);return B};(function(){var t,A,e,n,s,o,i,a,C,B,d,c,Q,l,f,w,k,F,y,N,M,x,I=I!==void 0?I:{};I.wasmBinary=Uint8Array.from(Dr("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(E){return E.charCodeAt(0)});var I=I!==void 0?I:{},P={};for(t in I)I.hasOwnProperty(t)&&(P[t]=I[t]);I.arguments=[],I.thisProgram="./this.program",I.quit=function(E,h){throw h},I.preRun=[],I.postRun=[];var q=!1,AA=!1,Z=!1,aA=!1;q=typeof window=="object",AA=typeof importScripts=="function",Z=typeof process=="object"&&typeof bn=="function"&&!q&&!AA,aA=!q&&!Z&&!AA;var rA="";function eA(E){return I.locateFile?I.locateFile(E,rA):rA+E}Z?(rA=__dirname+"/",I.read=function(h,u){var p;return A||(A=void 0),e||(e=void 0),h=e.normalize(h),p=A.readFileSync(h),u?p:p.toString()},I.readBinary=function(h){var u=I.read(h,!0);return u.buffer||(u=new Uint8Array(u)),se(u.buffer),u},process.argv.length>1&&(I.thisProgram=process.argv[1].replace(/\\/g,"/")),I.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(E){if(!(E instanceof Le))throw E}),process.on("unhandledRejection",function(E,h){process.exit(1)}),I.quit=function(E){process.exit(E)},I.inspect=function(){return"[Emscripten Module object]"}):aA?(typeof read<"u"&&(I.read=function(h){return read(h)}),I.readBinary=function(h){var u;return typeof readbuffer=="function"?new Uint8Array(readbuffer(h)):(se(typeof(u=read(h,"binary"))=="object"),u)},typeof scriptArgs<"u"?I.arguments=scriptArgs:typeof arguments<"u"&&(I.arguments=arguments),typeof quit=="function"&&(I.quit=function(E){quit(E)})):(q||AA)&&(q?document.currentScript&&(rA=document.currentScript.src):rA=self.location.href,rA=rA.indexOf("blob:")!==0?rA.split("/").slice(0,-1).join("/")+"/":"",I.read=function(h){var u=new XMLHttpRequest;return u.open("GET",h,!1),u.send(null),u.responseText},AA&&(I.readBinary=function(h){var u=new XMLHttpRequest;return u.open("GET",h,!1),u.responseType="arraybuffer",u.send(null),new Uint8Array(u.response)}),I.readAsync=function(h,u,p){var T=new XMLHttpRequest;T.open("GET",h,!0),T.responseType="arraybuffer",T.onload=function(){if(T.status==200||T.status==0&&T.response){u(T.response);return}p()},T.onerror=p,T.send(null)},I.setWindowTitle=function(E){document.title=E});var nA=I.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),hA=I.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||nA);for(t in P)P.hasOwnProperty(t)&&(I[t]=P[t]);function fA(E){var h=l;return l=l+E+15&-16,h}function te(E){var h=C[N>>2],u=h+E+15&-16;return C[N>>2]=u,u>=pA&&!Sn()?(C[N>>2]=h,0):h}function fe(E,h){return h||(h=16),E=Math.ceil(E/h)*h}function ne(E){switch(E){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(E[E.length-1]==="*")return 4;if(E[0]!=="i")return 0;var h=parseInt(E.substr(1));return se(h%8==0),h/8}}function xe(E){xe.shown||(xe.shown={}),xe.shown[E]||(xe.shown[E]=1,hA(E))}P=void 0;var ar={"f64-rem":function(E,h){return E%h},debugger:function(){}},Gt=[];function Pr(E,h){for(var u=0,p=u;p<u+0;p++)if(!Gt[p])return Gt[p]=E,1+p;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function qr(E){Gt[E-1]=null}var Mt={};function Kr(E,h){if(E){se(h),Mt[h]||(Mt[h]={});var u=Mt[h];return u[E]||(h.length===1?u[E]=function(){return xt(h,E)}:h.length===2?u[E]=function(T){return xt(h,E,[T])}:u[E]=function(){return xt(h,E,Array.prototype.slice.call(arguments))}),u[E]}}function Or(E,h,u){return u?+(E>>>0)+4294967296*+(h>>>0):+(E>>>0)+4294967296*+(0|h)}function xt(E,h,u){return u&&u.length?I["dynCall_"+E].apply(null,[h].concat(u)):I["dynCall_"+E].call(null,h)}var Oe=0,ln=0;function se(E,h){E||jA("Assertion failed: "+h)}function Qn(E){var h=I["_"+E];return se(h,"Cannot call unknown function "+E+", make sure it is exported"),h}var un={stackSave:function(){Yt()},stackRestore:function(){Ht()},arrayToC:function(E){var h,u,p=ze(E.length);return h=E,u=p,s.set(h,u),p},stringToC:function(E){var h=0;if(E!=null&&E!==0){var u=(E.length<<2)+1;h=ze(u),mn(E,h,u)}return h}},gr={string:un.stringToC,array:un.arrayToC};function dn(E,h,u,p,T){var z=Qn(E),tA=[],Y=0;if(p)for(var yA=0;yA<p.length;yA++){var EA=gr[u[yA]];EA?(Y===0&&(Y=Yt()),tA[yA]=EA(p[yA])):tA[yA]=p[yA]}var CA,gA=z.apply(null,tA);return gA=(CA=gA,h==="string"?Ve(CA):h==="boolean"?!!CA:CA),Y!==0&&Ht(Y),gA}function Ir(E,h,u,p){switch((u=u||"i8").charAt(u.length-1)==="*"&&(u="i32"),u){case"i1":case"i8":s[E>>0]=h;break;case"i16":i[E>>1]=h;break;case"i32":C[E>>2]=h;break;case"i64":tempI64=[h>>>0,+cr(tempDouble=h)>=1?tempDouble>0?(0|Qr(+Rn(tempDouble/4294967296),4294967295))>>>0:~~+lr((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],C[E>>2]=tempI64[0],C[E+4>>2]=tempI64[1];break;case"float":d[E>>2]=h;break;case"double":c[E>>3]=h;break;default:jA("invalid type for setValue: "+u)}}function Vr(E,h,u){switch((h=h||"i8").charAt(h.length-1)==="*"&&(h="i32"),h){case"i1":case"i8":return s[E>>0];case"i16":return i[E>>1];case"i32":case"i64":return C[E>>2];case"float":return d[E>>2];case"double":return c[E>>3];default:jA("invalid type for getValue: "+h)}return null}function Zr(E,h,u,p){typeof E=="number"?(z=!0,tA=E):(z=!1,tA=E.length);var T=typeof h=="string"?h:null;if(Y=u==4?p:[typeof _e=="function"?_e:fA,ze,fA,te][u===void 0?2:u](Math.max(tA,T?1:h.length)),z){for(p=Y,se((3&Y)==0),yA=Y+(-4&tA);p<yA;p+=4)C[p>>2]=0;for(yA=Y+tA;p<yA;)s[p++>>0]=0;return Y}if(T==="i8")return E.subarray||E.slice?o.set(E,Y):o.set(new Uint8Array(E),Y),Y;for(var z,tA,Y,yA,EA,CA,gA,_=0;_<tA;){var MA=E[_];if((EA=T||h[_])===0){_++;continue}EA=="i64"&&(EA="i32"),Ir(Y+_,MA,EA),gA!==EA&&(CA=ne(EA),gA=EA),_+=CA}return Y}function Wr(E){return f?Tt?_e(E):te(E):fA(E)}function Ve(E,h){if(h===0||!E)return"";for(var u,p,T,z=0,tA=0;z|=p=o[E+tA>>0],(p!=0||h)&&(tA++,!h||tA!=h););h||(h=tA);var Y="";if(z<128){for(;h>0;)T=String.fromCharCode.apply(String,o.subarray(E,E+Math.min(h,1024))),Y=Y?Y+T:T,E+=1024,h-=1024;return Y}return u=E,function(EA,CA){for(var gA=CA;EA[gA];)++gA;if(gA-CA>16&&EA.subarray&&fn)return fn.decode(EA.subarray(CA,gA));for(var _,MA,vA,HA,YA,Be,JA="";;){if(!(_=EA[CA++]))return JA;if(!(128&_)){JA+=String.fromCharCode(_);continue}if(MA=63&EA[CA++],(224&_)==192){JA+=String.fromCharCode((31&_)<<6|MA);continue}if(vA=63&EA[CA++],(240&_)==224?_=(15&_)<<12|MA<<6|vA:(HA=63&EA[CA++],(248&_)==240?_=(7&_)<<18|MA<<12|vA<<6|HA:(YA=63&EA[CA++],_=(252&_)==248?(3&_)<<24|MA<<18|vA<<12|HA<<6|YA:(1&_)<<30|MA<<24|vA<<18|HA<<12|YA<<6|(Be=63&EA[CA++]))),_<65536)JA+=String.fromCharCode(_);else{var Ue=_-65536;JA+=String.fromCharCode(55296|Ue>>10,56320|1023&Ue)}}}(o,u)}function Xr(E){for(var h="";;){var u=s[E++>>0];if(!u)return h;h+=String.fromCharCode(u)}}function _r(E,h){return function(p,T,z){for(var tA=0;tA<p.length;++tA)s[T++>>0]=p.charCodeAt(tA);z||(s[T>>0]=0)}(E,h,!1)}var fn=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Ze(E,h,u,p){if(!(p>0))return 0;for(var T=u,z=u+p-1,tA=0;tA<E.length;++tA){var Y=E.charCodeAt(tA);if(Y>=55296&&Y<=57343&&(Y=65536+((1023&Y)<<10)|1023&E.charCodeAt(++tA)),Y<=127){if(u>=z)break;h[u++]=Y}else if(Y<=2047){if(u+1>=z)break;h[u++]=192|Y>>6,h[u++]=128|63&Y}else if(Y<=65535){if(u+2>=z)break;h[u++]=224|Y>>12,h[u++]=128|Y>>6&63,h[u++]=128|63&Y}else if(Y<=2097151){if(u+3>=z)break;h[u++]=240|Y>>18,h[u++]=128|Y>>12&63,h[u++]=128|Y>>6&63,h[u++]=128|63&Y}else if(Y<=67108863){if(u+4>=z)break;h[u++]=248|Y>>24,h[u++]=128|Y>>18&63,h[u++]=128|Y>>12&63,h[u++]=128|Y>>6&63,h[u++]=128|63&Y}else{if(u+5>=z)break;h[u++]=252|Y>>30,h[u++]=128|Y>>24&63,h[u++]=128|Y>>18&63,h[u++]=128|Y>>12&63,h[u++]=128|Y>>6&63,h[u++]=128|63&Y}}return h[u]=0,u-T}function mn(E,h,u){return Ze(E,o,h,u)}function We(E){for(var h=0,u=0;u<E.length;++u){var p=E.charCodeAt(u);p>=55296&&p<=57343&&(p=65536+((1023&p)<<10)|1023&E.charCodeAt(++u)),p<=127?++h:p<=2047?h+=2:p<=65535?h+=3:p<=2097151?h+=4:p<=67108863?h+=5:h+=6}return h}var pn=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function zr(E){for(var h=E,u=h>>1;i[u];)++u;if((h=u<<1)-E>32&&pn)return pn.decode(o.subarray(E,h));for(var p=0,T="";;){var z=i[E+2*p>>1];if(z==0)return T;++p,T+=String.fromCharCode(z)}}function jr(E,h,u){if(u===void 0&&(u=2147483647),u<2)return 0;for(var p=h,T=(u-=2)<2*E.length?u/2:E.length,z=0;z<T;++z){var tA=E.charCodeAt(z);i[h>>1]=tA,h+=2}return i[h>>1]=0,h-p}function $r(E){return 2*E.length}function Ai(E){for(var h=0,u="";;){var p=C[E+4*h>>2];if(p==0)return u;if(++h,p>=65536){var T=p-65536;u+=String.fromCharCode(55296|T>>10,56320|1023&T)}else u+=String.fromCharCode(p)}}function ei(E,h,u){if(u===void 0&&(u=2147483647),u<4)return 0;for(var p=h,T=p+u-4,z=0;z<E.length;++z){var tA=E.charCodeAt(z);if(tA>=55296&&tA<=57343&&(tA=65536+((1023&tA)<<10)|1023&E.charCodeAt(++z)),C[h>>2]=tA,(h+=4)+4>T)break}return C[h>>2]=0,h-p}function ti(E){for(var h=0,u=0;u<E.length;++u){var p=E.charCodeAt(u);p>=55296&&p<=57343&&++u,h+=4}return h}function ni(E){var h=We(E)+1,u=_e(h);return u&&Ze(E,s,u,h),u}function si(E){var h=We(E)+1,u=ze(h);return Ze(E,s,u,h),u}function oi(E){return E}function ri(){var E,h=function(){var p=Error();if(!p.stack){try{throw Error(0)}catch(T){p=T}if(!p.stack)return"(no stack trace available)"}return p.stack.toString()}();return I.extraStackTrace&&(h+=`
14
- `+I.extraStackTrace()),(E=h).replace(/__Z[\w\d_]+/g,function(u){var p,T=p=u;return u===T?u:u+" ["+T+"]"})}function Nt(E,h){return E%h>0&&(E+=h-E%h),E}function yn(E){I.buffer=n=E}function bt(){I.HEAP8=s=new Int8Array(n),I.HEAP16=i=new Int16Array(n),I.HEAP32=C=new Int32Array(n),I.HEAPU8=o=new Uint8Array(n),I.HEAPU16=a=new Uint16Array(n),I.HEAPU32=B=new Uint32Array(n),I.HEAPF32=d=new Float32Array(n),I.HEAPF64=c=new Float64Array(n)}function Sn(){var E=I.usingWasm?65536:16777216,h=2147483648-E;if(C[N>>2]>h)return!1;var u=pA;for(pA=Math.max(pA,16777216);pA<C[N>>2];)pA=pA<=536870912?Nt(2*pA,E):Math.min(Nt((3*pA+2147483648)/4,E),h);var p=I.reallocBuffer(pA);return p&&p.byteLength==pA?(yn(p),bt(),!0):(pA=u,!1)}Q=l=w=k=F=y=N=0,f=!1,I.reallocBuffer||(I.reallocBuffer=function(E){try{if(ArrayBuffer.transfer)h=ArrayBuffer.transfer(n,E);else{var h,u=s;h=new ArrayBuffer(E),new Int8Array(h).set(u)}}catch{return!1}return!!ur(h)&&h});try{(M=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{M=function(h){return h.byteLength}}var Lt=I.TOTAL_STACK||5242880,pA=I.TOTAL_MEMORY||16777216;function Er(){return pA}function Ne(E){for(;E.length>0;){var h=E.shift();if(typeof h=="function"){h();continue}var u=h.func;typeof u=="number"?h.arg===void 0?I.dynCall_v(u):I.dynCall_vi(u,h.arg):u(h.arg===void 0?null:h.arg)}}pA<Lt&&hA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+pA+"! (TOTAL_STACK="+Lt+")"),I.buffer?n=I.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(I.wasmMemory=new WebAssembly.Memory({initial:pA/65536}),n=I.wasmMemory.buffer):n=new ArrayBuffer(pA),I.buffer=n),bt();var Dn=[],Ut=[],kn=[],wn=[],Fn=[],Tt=!1,Cr=!1;function Br(E){Dn.unshift(E)}function ii(E){Ut.unshift(E)}function ai(E){kn.unshift(E)}function gi(E){wn.unshift(E)}function hr(E){Fn.unshift(E)}function Ii(E,h,u){var p,T;xe("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),u&&(p=s[T=h+We(E)]),mn(E,h,1/0),u&&(s[T]=p)}function Ei(E,h,u){return E>=0?E:h<=32?2*Math.abs(1<<h-1)+E:Math.pow(2,h)+E}function Ci(E,h,u){if(E<=0)return E;var p=h<=32?Math.abs(1<<h-1):Math.pow(2,h-1);return E>=p&&(h<=32||E>p)&&(E=-2*p+E),E}var cr=Math.abs,lr=Math.ceil,Rn=Math.floor,Qr=Math.min,Ce=0,vt=null,be=null;function Bi(E){return E}I.preloadedImages={},I.preloadedAudios={};var Gn="data:application/octet-stream;base64,";function Xe(E){return String.prototype.startsWith?E.startsWith(Gn):E.indexOf(Gn)===0}(function(){var h="main.wast",u="main.wasm",p="main.temp.asm.js";Xe(h)||(h=eA(h)),Xe(u)||(u=eA(u)),Xe(p)||(p=eA(p));var T={global:null,env:null,asm2wasm:ar,parent:I},z=null;function tA(gA){return gA}function Y(){try{if(I.wasmBinary)return new Uint8Array(I.wasmBinary);if(I.readBinary)return I.readBinary(u);throw"both async and sync fetching of the wasm failed"}catch(gA){jA(gA)}}I.asmPreload=I.asm;var yA=I.reallocBuffer,EA=function(gA){gA=Nt(gA,I.usingWasm?65536:16777216);var _=I.buffer.byteLength;if(I.usingWasm)try{var MA=I.wasmMemory.grow((gA-_)/65536);return MA!==-1?I.buffer=I.wasmMemory.buffer:null}catch{return null}};I.reallocBuffer=function(gA){return CA==="asmjs"?yA(gA):EA(gA)};var CA="";I.asm=function(gA,_,MA){var vA;if(!(_=vA=_).table){var HA,YA=I.wasmTableSize;YA===void 0&&(YA=1024);var Be=I.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?Be!==void 0?_.table=new WebAssembly.Table({initial:YA,maximum:Be,element:"anyfunc"}):_.table=new WebAssembly.Table({initial:YA,element:"anyfunc"}):_.table=Array(YA),I.wasmTable=_.table}return _.memoryBase||(_.memoryBase=I.STATIC_BASE),_.tableBase||(_.tableBase=0),HA=function(Ue,me,Pt){if(typeof WebAssembly!="object")return hA("no native wasm support detected"),!1;if(!(I.wasmMemory instanceof WebAssembly.Memory))return hA("no native wasm Memory in use"),!1;function je(ZA,WA){if((z=ZA.exports).memory){var Te,qt,Nn;Te=z.memory,qt=I.buffer,Te.byteLength<qt.byteLength&&hA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),Nn=new Int8Array(qt),new Int8Array(Te).set(Nn),yn(Te),bt()}I.asm=z,I.usingWasm=!0,function(fi){if(Ce--,I.monitorRunDependencies&&I.monitorRunDependencies(Ce),Ce==0&&(vt!==null&&(clearInterval(vt),vt=null),be)){var dr=be;be=null,dr()}}("wasm-instantiate")}if(me.memory=I.wasmMemory,T.global={NaN:NaN,Infinity:1/0},T["global.Math"]=Math,T.env=me,Ce++,I.monitorRunDependencies&&I.monitorRunDependencies(Ce),I.instantiateWasm)try{return I.instantiateWasm(T,je)}catch(ZA){return hA("Module.instantiateWasm callback failed with error: "+ZA),!1}function pe(ZA){je(ZA.instance,ZA.module)}function xn(ZA){(!I.wasmBinary&&(q||AA)&&typeof fetch=="function"?fetch(u,{credentials:"same-origin"}).then(function(WA){if(!WA.ok)throw"failed to load wasm binary file at '"+u+"'";return WA.arrayBuffer()}).catch(function(){return Y()}):new Promise(function(WA,Te){WA(Y())})).then(function(WA){return WebAssembly.instantiate(WA,T)}).then(ZA).catch(function(WA){hA("failed to asynchronously prepare wasm: "+WA),jA(WA)})}return I.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||Xe(u)||typeof fetch!="function"?xn(pe):WebAssembly.instantiateStreaming(fetch(u,{credentials:"same-origin"}),T).then(pe).catch(function(ZA){hA("wasm streaming compile failed: "+ZA),hA("falling back to ArrayBuffer instantiation"),xn(pe)}),{}}(gA,_,MA),se(HA,"no binaryen method succeeded."),HA},I.asm})(),l=(Q=1024)+4816,Ut.push(),I.STATIC_BASE=Q,I.STATIC_BUMP=4816;var bA=l;function hi(E){s[bA]=s[E],s[bA+1]=s[E+1],s[bA+2]=s[E+2],s[bA+3]=s[E+3]}function ci(E){s[bA]=s[E],s[bA+1]=s[E+1],s[bA+2]=s[E+2],s[bA+3]=s[E+3],s[bA+4]=s[E+4],s[bA+5]=s[E+5],s[bA+6]=s[E+6],s[bA+7]=s[E+7]}function li(E,h,u){var p=u>0?u:We(E)+1,T=Array(p),z=Ze(E,T,0,T.length);return h&&(T.length=z),T}function Qi(E){for(var h=[],u=0;u<E.length;u++){var p=E[u];p>255&&(p&=255),h.push(String.fromCharCode(p))}return h.join("")}l+=16,N=fA(4),F=(w=k=fe(l))+Lt,y=fe(F),C[N>>2]=y,f=!0,I.wasmTableSize=4,I.wasmMaxTableSize=4,I.asmGlobalArg={},I.asmLibraryArg={abort:jA,assert:se,enlargeMemory:Sn,getTotalMemory:Er,abortOnCannotGrowMemory:function(){jA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+pA+", (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(h,u,p){var T=Yt();try{return I.dynCall_iii(h,u,p)}catch(z){if(Ht(T),typeof z!="number"&&z!=="longjmp")throw z;I.setThrew(1,0)}},___assert_fail:function(h,u,p,T){jA("Assertion failed: "+Ve(h)+", at: "+[u?Ve(u):"unknown filename",p,T?Ve(T):"unknown function"])},___setErrNo:function(h){return I.___errno_location&&(C[I.___errno_location()>>2]=h),h},_abort:function(){I.abort()},_emscripten_memcpy_big:function(h,u,p){return o.set(o.subarray(u,u+p),h),h},_llvm_floor_f64:Rn,DYNAMICTOP_PTR:N,tempDoublePtr:bA,ABORT:Oe,STACKTOP:k,STACK_MAX:F};var Mn=I.asm(I.asmGlobalArg,I.asmLibraryArg,n);I.asm=Mn,I.___errno_location=function(){return I.asm.___errno_location.apply(null,arguments)};var ur=I._emscripten_replace_memory=function(){return I.asm._emscripten_replace_memory.apply(null,arguments)};I._free=function(){return I.asm._free.apply(null,arguments)};var _e=I._malloc=function(){return I.asm._malloc.apply(null,arguments)};I._memcpy=function(){return I.asm._memcpy.apply(null,arguments)},I._memset=function(){return I.asm._memset.apply(null,arguments)},I._sbrk=function(){return I.asm._sbrk.apply(null,arguments)},I._stb_vorbis_js_channels=function(){return I.asm._stb_vorbis_js_channels.apply(null,arguments)},I._stb_vorbis_js_close=function(){return I.asm._stb_vorbis_js_close.apply(null,arguments)},I._stb_vorbis_js_decode=function(){return I.asm._stb_vorbis_js_decode.apply(null,arguments)},I._stb_vorbis_js_open=function(){return I.asm._stb_vorbis_js_open.apply(null,arguments)},I._stb_vorbis_js_sample_rate=function(){return I.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},I.establishStackSpace=function(){return I.asm.establishStackSpace.apply(null,arguments)},I.getTempRet0=function(){return I.asm.getTempRet0.apply(null,arguments)},I.runPostSets=function(){return I.asm.runPostSets.apply(null,arguments)},I.setTempRet0=function(){return I.asm.setTempRet0.apply(null,arguments)},I.setThrew=function(){return I.asm.setThrew.apply(null,arguments)};var ze=I.stackAlloc=function(){return I.asm.stackAlloc.apply(null,arguments)},Ht=I.stackRestore=function(){return I.asm.stackRestore.apply(null,arguments)},Yt=I.stackSave=function(){return I.asm.stackSave.apply(null,arguments)};function Le(E){this.name="ExitStatus",this.message="Program terminated with exit("+E+")",this.status=E}function Jt(E){E=E||I.arguments,!(Ce>0)&&(function(){if(I.preRun)for(typeof I.preRun=="function"&&(I.preRun=[I.preRun]);I.preRun.length;)Br(I.preRun.shift());Ne(Dn)}(),!(Ce>0)&&(I.calledRun||(I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("")},1),h()},1)):h())));function h(){!I.calledRun&&(I.calledRun=!0,Oe||(Tt||(Tt=!0,Ne(Ut)),Ne(kn),I.onRuntimeInitialized&&I.onRuntimeInitialized(),function(){if(I.postRun)for(typeof I.postRun=="function"&&(I.postRun=[I.postRun]);I.postRun.length;)hr(I.postRun.shift());Ne(Fn)}()))}}function ui(E,h){(!h||!I.noExitRuntime||E!==0)&&(I.noExitRuntime||(Oe=!0,ln=E,k=x,Ne(wn),Cr=!0,I.onExit&&I.onExit(E)),I.quit(E,new Le(E)))}function jA(E){throw I.onAbort&&I.onAbort(E),E!==void 0?(nA(E),hA(E),E=JSON.stringify(E)):E="",Oe=!0,ln=1,"abort("+E+"). Build with -s ASSERTIONS=1 for more info."}if(I.dynCall_iii=function(){return I.asm.dynCall_iii.apply(null,arguments)},I.asm=Mn,I.ccall=dn,I.cwrap=function(h,u,p,T){var z=(p=p||[]).every(function(tA){return tA==="number"});return u!=="string"&&z&&!T?Qn(h):function(){return dn(h,u,p,arguments,T)}},Le.prototype=Error(),Le.prototype.constructor=Le,be=function E(){I.calledRun||Jt(),I.calledRun||(be=E)},I.run=Jt,I.abort=jA,I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();I.noExitRuntime=!0,Jt(),I.onRuntimeInitialized=()=>{Ds=!0,ks()},zA.decode=function(E){return function(u){if(!Ds)throw Error("Not initialized");var p={};function T(me){return new Int32Array(I.HEAPU8.buffer,me,1)[0]}function z(me,Pt){var je=new ArrayBuffer(Pt*Float32Array.BYTES_PER_ELEMENT),pe=new Float32Array(je);return pe.set(new Float32Array(I.HEAPU8.buffer,me,Pt)),pe}p.open=I.cwrap("stb_vorbis_js_open","number",[]),p.close=I.cwrap("stb_vorbis_js_close","void",["number"]),p.channels=I.cwrap("stb_vorbis_js_channels","number",["number"]),p.sampleRate=I.cwrap("stb_vorbis_js_sample_rate","number",["number"]),p.decode=I.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var tA,Y,yA,EA,CA=p.open(),gA=(tA=u,Y=u.byteLength,yA=I._malloc(Y),(EA=new Uint8Array(I.HEAPU8.buffer,yA,Y)).set(new Uint8Array(tA,0,Y)),EA),_=I._malloc(4),MA=I._malloc(4),vA=p.decode(CA,gA.byteOffset,gA.byteLength,_,MA);if(I._free(gA.byteOffset),vA<0)throw p.close(CA),I._free(_),Error("stbvorbis decode failed: "+vA);for(var HA=p.channels(CA),YA=Array(HA),Be=new Int32Array(I.HEAPU32.buffer,T(_),HA),JA=0;JA<HA;JA++)YA[JA]=z(Be[JA],vA),I._free(Be[JA]);var Ue=p.sampleRate(CA);return p.close(CA),I._free(T(_)),I._free(_),{data:YA,sampleRate:Ue,eof:!0,error:null}}(E)}})();function ws(t){let A=t.messageData,e=t.channelNumber,n={};switch(e>=0&&(n=this.workletProcessorChannels[e]),t.messageType){case oA.noteOn:this.noteOn(e,A[0],A[1],A[2]);break;case oA.noteOff:this.noteOff(e,A);break;case oA.pitchWheel:this.pitchWheel(e,A[0],A[1]);break;case oA.ccChange:this.controllerChange(e,A[0],A[1],A[2]);break;case oA.customcCcChange:n.customControllers[A[0]]=A[1];break;case oA.killNote:this.killNote(e,A);break;case oA.programChange:this.programChange(e,A[0],A[1]);break;case oA.channelPressure:this.channelPressure(e,A);break;case oA.polyPressure:this.polyPressure(e,A[0],A[1]);break;case oA.ccReset:e===LA?this.resetAllControllers():this.resetControllers(e);break;case oA.systemExclusive:this.systemExclusive(A[0],A[1]);break;case oA.setChannelVibrato:if(e===LA)for(let i=0;i<this.workletProcessorChannels.length;i++)A.rate===-1?this.disableAndLockGSNRPN(i):this.setVibrato(i,A.depth,A.rate,A.delay);else A.rate===-1?this.disableAndLockGSNRPN(e):this.setVibrato(e,A.depth,A.rate,A.delay);break;case oA.stopAll:e===LA?this.stopAllChannels(A===1):this.stopAll(e,A===1);break;case oA.killNotes:this.voiceKilling(A);break;case oA.muteChannel:this.muteChannel(e,A);break;case oA.addNewChannel:this.createWorkletChannel(!0);break;case oA.debugMessage:this.debugMessage();break;case oA.setMasterParameter:let s=A[0],o=A[1];switch(s){case Se.masterPan:this.setMasterPan(o);break;case Se.mainVolume:this.setMasterGain(o);break;case Se.voicesCap:this.voiceCap=o;break;case Se.interpolationType:this.interpolationType=o;break}break;case oA.setDrums:this.setDrums(e,A);break;case oA.transpose:e===LA?this.transposeAllChannels(A[0],A[1]):this.transposeChannel(e,A[0],A[1]);break;case oA.highPerformanceMode:this.highPerformanceMode=A;break;case oA.lockController:A[0]===LA?n.lockPreset=A[1]:n.lockedControllers[A[0]]=A[1];break;case oA.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case oA.soundFontManager:try{this.soundfontManager.handleMessage(A[0],A[1])}catch(i){this.post({messageType:FA.soundfontError,messageData:i})}this.clearSoundFont(!0,!1);break;case oA.keyModifierManager:this.keyModifierManager.handleMessage(A[0],A[1]);break;case oA.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case oA.setLogLevel:Pn(A[0],A[1],A[2],A[3]);break;case oA.setEffectsGain:this.reverbGain=A[0],this.chorusGain=A[1];break;case oA.destroyWorklet:this.alive=!1,this.destroyWorkletProcessor();break;default:v("Unrecognized event:",A);break}}function Fs(t,A){this.enableEventSystem&&this.post({messageType:FA.eventCall,messageData:{eventName:t,eventData:A}})}function Rs(){if(!this.enableEventSystem)return;let t=this.workletProcessorChannels.map(A=>{let e=(A.midiControllers[dA+O.pitchWheelRange]>>7)+(A.midiControllers[dA+O.pitchWheelRange]&127)/127;return{voicesAmount:A.voices.length,pitchBend:A.midiControllers[dA+O.pitchWheel],pitchBendRangeSemitones:e,isMuted:A.isMuted,isDrum:A.drumChannel}});this.post({messageType:FA.channelProperties,messageData:t})}function kr(t,A,e){let n=t,s=A<<7|e;return t===127&&A===127&&e===127?{midiNote:-1,centTuning:null}:{midiNote:n,centTuning:s*.0061}}var nn={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};function Gs(t,A=0){let e=t[0];if(!(this.deviceID!==LA&&t[1]!==127&&this.deviceID!==t[1]))switch(e){default:v(`%cUnrecognized SysEx: %c${kA(t)}`,g.warn,g.unrecognized);break;case 126:case 127:switch(t[2]){case 4:let s;switch(t[3]){case 1:let o=t[5]<<7|t[4];this.setMIDIVolume(o/16384),m(`%cMaster Volume. Volume: %c${o}`,g.info,g.value);break;case 2:let a=((t[5]<<7|t[4])-8192)/8192;this.setMasterPan(a),m(`%cMaster Pan. Pan: %c${a}`,g.info,g.value);break;case 3:let C=(t[5]<<7|t[6])-8192;s=Math.floor(C/81.92),this.setMasterTuning(s),m(`%cMaster Fine Tuning. Cents: %c${s}`,g.info,g.value);break;case 4:s=(t[5]-64)*100,this.setMasterTuning(s),m(`%cMaster Coarse Tuning. Cents: %c${s}`,g.info,g.value);break;default:v(`%cUnrecognized MIDI Device Control Real-time message: %c${kA(t)}`,g.warn,g.unrecognized)}break;case 9:t[3]===1?(m("%cGM system on",g.info),this.system="gm"):t[3]===3?(m("%cGM2 system on",g.info),this.system="gm2"):(m("%cGM system off, defaulting to GS",g.info),this.system="gs");break;case 8:switch(t[3]){case 2:case 7:let o=4;t[3]===7&&o++;let i=t[o++],a=t[o++];for(let B=0;B<a;B++)this.tunings[i][t[o++]]=kr(t[o++],t[o++],t[o++]);m(`%cSingle Note Tuning. Program: %c${i}%c Keys affected: %c${a}`,g.info,g.recognized,g.info,g.recognized);break;case 9:case 8:let C=new Int8Array(12);if(t[3]===8)for(let B=0;B<12;B++)C[B]=t[7+B]-64;else for(let B=0;B<24;B+=2){let d=(t[7+B]<<7|t[8+B])-8192;C[B/2]=Math.floor(d/81.92)}(t[4]&1)===1&&this.setOctaveTuning(14+A,C),(t[4]>>1&1)===1&&this.setOctaveTuning(15+A,C);for(let B=0;B<7;B++)(t[5]>>B&1)===1&&this.setOctaveTuning(7+B+A,C);for(let B=0;B<7;B++)(t[6]>>B&1)===1&&this.setOctaveTuning(B+A,C);m(`%cMIDI Octave Scale ${t[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${C.join(" ")}`,g.info,g.value);break;default:v(`%cUnrecognized MIDI Tuning standard message: %c${kA(t)}`,g.warn,g.unrecognized);break}break;default:v(`%cUnrecognized MIDI Realtime/non realtime message: %c${kA(t)}`,g.warn,g.unrecognized)}break;case 65:let n=function(){v(`%cUnrecognized Roland %cGS %cSysEx: %c${kA(t)}`,g.warn,g.recognized,g.warn,g.unrecognized)};if(t[2]===66&&t[3]===18){let s=t[7];if(t[6]===127){s===0?(m("%cGS Reset received!",g.info),this.resetAllControllers(!1),this.system="gs"):s===127&&(m("%cGS system off, switching to GM2",g.info),this.resetAllControllers(!1),this.system="gm2");return}else if(t[4]===64){if((t[5]&16)>0){let o=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][t[5]&15]+A;switch(t[6]){default:n();break;case 21:let i=s>0&&t[5]>>4;this.setDrums(o,i),m(`%cChannel %c${o}%c ${i?"is now a drum channel":"now isn't a drum channel"}%c via: %c${kA(t)}`,g.info,g.value,g.recognized,g.info,g.value);return;case 22:let a=s-64;this.transposeChannel(o,a),m(`%cChannel %c${o}%c pitch shift. Semitones %c${a}%c, with %c${kA(t)}`,g.info,g.recognized,g.info,g.value,g.info,g.value);return;case 28:let C=s;C===0?(this.workletProcessorChannels[o].randomPan=!0,m(`%cRandom pan is set to %cON%c for %c${o}`,g.info,g.recognized,g.info,g.value)):(this.workletProcessorChannels[o].randomPan=!1,this.controllerChange(o,D.pan,C));break;case 33:this.controllerChange(o,D.chorusDepth,s);break;case 34:this.controllerChange(o,D.reverbDepth,s);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 B=t.length-9,d=new Int8Array(12);for(let Q=0;Q<B;Q++)d[Q]=t[Q+7]-64;this.setOctaveTuning(o,d);let c=s-64;m(`%cChannel %c${o}%c octave scale tuning. Cents %c${d.join(" ")}%c, with %c${kA(t)}`,g.info,g.recognized,g.info,g.value,g.info,g.value),this.setChannelTuning(o,c);break}return}else if(t[5]===0&&t[6]===6){m(`%cRoland GS Master Pan set to: %c${s}%c with: %c${kA(t)}`,g.info,g.value,g.info,g.value),this.setMasterPan((s-64)/64);return}else if(t[5]===0&&t[6]===5){let o=s-64;m(`%cRoland GS Master Key-Shift set to: %c${o}%c with: %c${kA(t)}`,g.info,g.value,g.info,g.value),this.setMasterTuning(o*100);return}else if(t[5]===0&&t[6]===4){m(`%cRoland GS Master Volume set to: %c${s}%c with: %c${kA(t)}`,g.info,g.value,g.info,g.value),this.setMIDIVolume(s/127);return}}n();return}else if(t[2]===69&&t[3]===18){if(t[4]===16&&t[6]===0)if(t[5]===0){let s=new Uint8Array(t.slice(7,t.length-2));this.callEvent("synthdisplay",{displayData:s,displayType:nn.SoundCanvasText})}else if(t[5]===1){let s=new Uint8Array(t.slice(7,t.length-3));this.callEvent("synthdisplay",{displayData:s,displayType:nn.SoundCanvasDotDisplay}),m(`%cRoland SC Display Dot Matrix via: %c${kA(t)}`,g.info,g.value)}else n()}else if(t[2]===22&&t[3]===18&&t[4]===16){this.setMIDIVolume(t[7]/100),m(`%cRoland Master Volume control set to: %c${t[7]}%c via: %c${kA(t)}`,g.info,g.value,g.info,g.value);return}else{v(`%cUnrecognized Roland SysEx: %c${kA(t)}`,g.warn,g.unrecognized);return}break;case 67:if(t[2]===76)if(t[3]===0&&t[4]===0)switch(t[5]){case 4:let s=t[6];this.setMIDIVolume(s/127),m(`%cXG master volume. Volume: %c${s}`,g.info,g.recognized);break;case 6:let o=t[6]-64;this.transposeAllChannels(o),m(`%cXG master transpose. Volume: %c${o}`,g.info,g.recognized);break;case 126:m("%cXG system on",g.info),this.resetAllControllers(!1),this.system="xg";break}else if(t[3]===8){if(this.system!=="xg")return;let s=t[4]+A;if(s>=this.workletProcessorChannels.length)return;let o=t[6];switch(t[5]){case 1:this.controllerChange(s,D.bankSelect,o);break;case 2:this.controllerChange(s,D.lsbForControl0BankSelect,o);break;case 3:this.programChange(s,o);break;case 8:let i=this.workletProcessorChannels[s];if(i.drumChannel)return;let a=o-64;i.channelTransposeKeyShift=a;break;case 11:this.controllerChange(s,D.mainVolume,o);break;case 14:let C=o;C===0?(this.workletProcessorChannels[s].randomPan=!0,m(`%cRandom pan is set to %cON%c for %c${s}`,g.info,g.recognized,g.info,g.value)):this.controllerChange(s,D.pan,C);break;case 19:this.controllerChange(s,D.reverbDepth,o);break;case 18:this.controllerChange(s,D.chorusDepth,o);break;default:v(`%cUnrecognized Yamaha XG Part Setup: %c${t[5].toString(16).toUpperCase()}`,g.warn,g.unrecognized)}}else if(t[3]===6&&t[4]===0){let s=new Uint8Array(t.slice(5,t.length-1));this.callEvent("synthdisplay",{displayData:s,displayType:nn.XGText})}else this.system==="xg"&&v(`%cUnrecognized Yamaha XG SysEx: %c${kA(t)}`,g.warn,g.unrecognized);else this.system==="xg"&&v(`%cUnrecognized Yamaha SysEx: %c${kA(t)}`,g.warn,g.unrecognized);break}}var wr=1e3/200;function Ms(t,A,e){if(A.transformAmount===0)return A.currentValue=0,0;let n;if(A.sourceUsesCC)n=t[A.sourceIndex];else{let B=A.sourceIndex+dA;switch(A.sourceIndex){case O.noController:n=16383;break;case O.noteOnKeyNum:n=e.midiNote<<7;break;case O.noteOnVelocity:n=e.velocity<<7;break;case O.polyPressure:n=e.pressure<<7;break;default:n=t[B];break}}let s=de[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],o;if(A.secSrcUsesCC)o=t[A.secSrcIndex];else{let B=A.secSrcIndex+dA;switch(A.secSrcIndex){case O.noController:o=16383;break;case O.noteOnKeyNum:o=e.midiNote<<7;break;case O.noteOnVelocity:o=e.velocity<<7;break;case O.polyPressure:o=e.pressure<<7;break;default:o=t[B]}}let i=de[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],a=A.transformAmount;A.isEffectModulator&&a<=1e3&&(a*=wr,a=Math.min(a,1e3));let C=s*i*a;return A.transformType===2&&(C=Math.abs(C)),A.currentValue=C,C}function Ae(t,A,e=-1,n=0){let s=t.modulators,o=t.generators,i=t.modulatedGenerators;if(e===-1){i.set(o),s.forEach(B=>{let d=J[B.modulatorDestination],c=i[B.modulatorDestination]+Ms(A,B,t);i[B.modulatorDestination]=Math.max(d.min,Math.min(c,d.max))}),KA.recalculate(t),qA.recalculate(t);return}let a=new Set([r.initialAttenuation,r.delayVolEnv,r.attackVolEnv,r.holdVolEnv,r.decayVolEnv,r.sustainVolEnv,r.releaseVolEnv,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay]),C=new Set;s.forEach(B=>{if(B.sourceUsesCC===e&&B.sourceIndex===n||B.secSrcUsesCC===e&&B.secSrcIndex===n){let d=B.modulatorDestination;C.has(d)||(i[d]=o[d],Ms(A,B,t),s.forEach(c=>{if(c.modulatorDestination===d){let Q=J[B.modulatorDestination],l=i[B.modulatorDestination]+c.currentValue;i[B.modulatorDestination]=Math.max(Q.min,Math.min(l,Q.max))}}),C.add(d))}}),[...C].some(B=>a.has(B))&&KA.recalculate(t),qA.recalculate(t)}var de=[];for(let t=0;t<4;t++){de[t]=[[new Float32Array(mA),new Float32Array(mA)],[new Float32Array(mA),new Float32Array(mA)]];for(let A=0;A<mA;A++)de[t][0][0][A]=ue(0,t,A/mA,0),de[t][1][0][A]=ue(0,t,A/mA,1),de[t][0][1][A]=ue(1,t,A/mA,0),de[t][1][1][A]=ue(1,t,A/mA,1)}var Ye={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 Fr(t){if(Ye[t]!==void 0)return Ye[t];let A=null,e=null;for(let n of Object.keys(Ye))n=parseInt(n),n<t&&(A===null||n>A)&&(A=n),n>t&&(e===null||n<e)&&(e=n);if(A!==null&&e!==null){let n=Ye[A],s=Ye[e];return n+(t-A)*(s-n)/(e-A)}return 0}function xs(t,A){return Fr(t)*(A/30)}var Rr=-2320,Gr=-1130;function Ns(t,A,e,n=!1,s=!0,o=currentTime){if(e<1){this.noteOff(t,A);return}e=Math.min(127,e);let i=this.workletProcessorChannels[t];if(this.highPerformanceMode&&this.totalVoicesAmount>200&&e<40||this.highPerformanceMode&&e<10||i.isMuted)return;let a=A+i.channelTransposeKeyShift,C=a;if(a>127||a<0)return;let B=i.preset.program;this.tunings[B]?.[a]?.midiNote>=0&&(C=this.tunings[B]?.[a].midiNote),i.velocityOverride>0&&(e=i.velocityOverride);let d=this.keyModifierManager.getVelocity(t,a);d>-1&&(e=d);let c=-1,Q=0,l=i.midiControllers[D.portamentoControl]>>7;if(!i.drumChannel&&l!==C&&i.midiControllers[D.portamentoOnOff]>=8192){let F=i.midiControllers[D.portamentoTime]>>7,y=Math.abs(C-l);Q=xs(F,y),c=l,this.controllerChange(t,D.portamentoControl,C)}let f=this.getWorkletVoices(t,C,e,i,o,a,n),w=0;i.randomPan&&(w=Math.round(Math.random()*1e3-500));let k=i.voices;f.forEach(F=>{F.portamentoFromKey=c,F.portamentoDuration=Q,F.overridePan=w;let y=F.generators[r.exclusiveClass];y!==0&&k.forEach(AA=>{AA.generators[r.exclusiveClass]===y&&(this.releaseVoice(AA,bs),AA.modulatedGenerators[r.releaseVolEnv]=Rr,AA.modulatedGenerators[r.releaseModEnv]=Gr,KA.recalculate(AA),qA.recalculate(AA))}),Ae(F,i.midiControllers);let N=F.modulatedGenerators[r.startAddrsOffset]+F.modulatedGenerators[r.startAddrsCoarseOffset]*32768,M=F.modulatedGenerators[r.endAddrOffset]+F.modulatedGenerators[r.endAddrsCoarseOffset]*32768,x=F.modulatedGenerators[r.startloopAddrsOffset]+F.modulatedGenerators[r.startloopAddrsCoarseOffset]*32768,I=F.modulatedGenerators[r.endloopAddrsOffset]+F.modulatedGenerators[r.endloopAddrsCoarseOffset]*32768,P=F.sample,q=AA=>Math.max(0,Math.min(P.sampleData.length-1,AA));if(P.cursor=q(P.cursor+N),P.end=q(P.end+M),P.loopStart=q(P.loopStart+x),P.loopEnd=q(P.loopEnd+I),P.loopEnd<P.loopStart){let AA=P.loopStart;P.loopStart=P.loopEnd,P.loopEnd=AA}P.loopEnd-P.loopStart<1&&(P.loopingMode=0,P.isLooping=!1),F.volumeEnvelope.attenuation=F.volumeEnvelope.attenuationTargetGain,F.currentPan=Math.max(-500,Math.min(500,F.modulatedGenerators[r.pan]))}),this.totalVoicesAmount+=f.length,this.totalVoicesAmount>this.voiceCap&&this.voiceKilling(f.length),k.push(...f),s&&(this.sendChannelProperties(),this.callEvent("noteon",{midiNote:A,channel:t,velocity:e}))}function Ls(t,A){if(A>127||A<0){v("Received a noteOn for note",A,"Ignoring.");return}let e=A+this.workletProcessorChannels[t].channelTransposeKeyShift;if(this.highPerformanceMode&&!this.workletProcessorChannels[t].drumChannel){this.killNote(t,e);return}this.workletProcessorChannels[t].voices.forEach(s=>{s.realKey!==e||s.isInRelease===!0||(this.workletProcessorChannels[t].holdPedal?this.workletProcessorChannels[t].sustainedVoices.push(s):this.releaseVoice(s))}),this.callEvent("noteoff",{midiNote:A,channel:t})}function Us(t,A){this.workletProcessorChannels[t].voices.forEach(e=>{e.realKey===A&&(e.modulatedGenerators[r.releaseVolEnv]=-12e3,this.releaseVoice(e))})}function Ts(t,A=!1){let e=this.workletProcessorChannels[t].voices;A?(e.length=0,this.workletProcessorChannels[t].sustainedVoices.length=0,this.sendChannelProperties()):(e.forEach(n=>{n.isInRelease||this.releaseVoice(n)}),this.workletProcessorChannels[t].sustainedVoices.forEach(n=>{this.releaseVoice(n)}))}function vs(t=!1){m("%cStop all received!",g.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.stopAll(A,t);this.callEvent("stopall",void 0)}function Hs(t,A=!1){this.transposition=0;for(let e=0;e<this.workletProcessorChannels.length;e++)this.transposeChannel(e,t,A);this.transposition=t}function Ys(t,A,e=!1){let n=this.workletProcessorChannels[t];n.drumChannel||(A+=this.transposition);let s=Math.trunc(A),o=n.channelTransposeKeyShift+n.customControllers[cA.channelTransposeFine]/100;n.drumChannel&&!e||A===o||(s!==n.channelTransposeKeyShift&&this.stopAll(t,!1),n.channelTransposeKeyShift=s,n.customControllers[cA.channelTransposeFine]=(A-s)*100)}function Js(t,A,e=!0){let n=this.workletProcessorChannels[t];A=Math.round(A),n.customControllers[cA.channelTuning]=A,e&&m(`%cChannel ${t} fine tuning. Cents: %c${A}`,g.info,g.value)}function Ps(t,A){let e=this.workletProcessorChannels[t];A=Math.round(A),e.customControllers[cA.channelTuningSemitones]=A,m(`%cChannel ${t} coarse tuning. Semitones: %c${A}`,g.info,g.value)}function qs(t){t=Math.round(t);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].customControllers[cA.masterTuning]=t}function Ks(t,A){let e=this.workletProcessorChannels[t];A=Math.round(A),m(`%cChannel ${t} modulation depth. Cents: %c${A}`,g.info,g.value),e.customControllers[cA.modulationMultiplier]=A/50}function Os(t,A,e){if(this.workletProcessorChannels[t].lockedControllers[dA+O.pitchWheel])return;let n=e|A<<7;this.callEvent("pitchwheel",{channel:t,MSB:A,LSB:e}),this.workletProcessorChannels[t].midiControllers[dA+O.pitchWheel]=n,this.workletProcessorChannels[t].voices.forEach(s=>Ae(s,this.workletProcessorChannels[t].midiControllers,0,O.pitchWheel)),this.sendChannelProperties()}function Vs(t,A){let e=this.workletProcessorChannels[t];e.midiControllers[dA+O.channelPressure]=A<<7,this.workletProcessorChannels[t].voices.forEach(n=>Ae(n,e.midiControllers,0,O.channelPressure)),this.callEvent("channelpressure",{channel:t,pressure:A})}function Zs(t,A,e){this.workletProcessorChannels[t].voices.forEach(n=>{n.midiNote===A&&(n.pressure=e,Ae(n,this.workletProcessorChannels[t].midiControllers,0,O.polyPressure))}),this.callEvent("polypressure",{channel:t,midiNote:A,pressure:e})}function Ws(t,A){if(A.length!==12)throw new Error("Tuning is not the length of 12.");this.workletProcessorChannels[t].channelOctaveTuning=A}function Xs(t,A,e,n=!1){let s=this.workletProcessorChannels[t];if(s===void 0){v(`Trying to access channel ${t} which does not exist... ignoring!`);return}if(A>127){if(!n)return;switch(A){default:return;case Xt.velocityOverride:s.velocityOverride=e}}if(A>=D.lsbForControl1ModulationWheel&&A<=D.lsbForControl13EffectControl2&&A!==D.lsbForControl6DataEntry){let o=A-32;if(s.lockedControllers[o])return;s.midiControllers[o]=s.midiControllers[o]&16256|e&127,s.voices.forEach(i=>Ae(i,s.midiControllers,1,o))}switch(A){case D.allNotesOff:this.stopAll(t);break;case D.allSoundOff:this.stopAll(t,!0);break;case D.bankSelect:let o=e;if(!n){switch(this.system){case"gm":m(`%cIgnoring the Bank Select (${e}), as the synth is in GM mode.`,g.info);return;case"xg":o===120||o===126||o===127?this.setDrums(t,!0):t%16!==xA&&this.setDrums(t,!1);break;case"gm2":o===120&&this.setDrums(t,!0)}s.drumChannel&&(o=128),o===128&&!s.drumChannel&&(o=XA(s))}oe(s,o);break;case D.lsbForControl0BankSelect:this.system==="xg"?s.drumChannel||e!==127&&oe(s,e):this.system==="gm2"&&oe(s,e);break;case D.RPNLsb:s.RPValue=s.RPValue<<7|e,s.dataEntryState=RA.RPFine;break;case D.RPNMsb:s.RPValue=e,s.dataEntryState=RA.RPCoarse;break;case D.NRPNMsb:s.NRPCoarse=e,s.dataEntryState=RA.NRPCoarse;break;case D.NRPNLsb:s.NRPFine=e,s.dataEntryState=RA.NRPFine;break;case D.dataEntryMsb:this.dataEntryCoarse(t,e);break;case D.lsbForControl6DataEntry:this.dataEntryFine(t,e);break;case D.resetAllControllers:this.resetControllers(t);break;case D.sustainPedal:e>=64?s.holdPedal=!0:(s.holdPedal=!1,s.sustainedVoices.forEach(i=>{this.releaseVoice(i)}),s.sustainedVoices=[]);break;default:if(s.lockedControllers[A])return;s.midiControllers[A]=e<<7,s.voices.forEach(i=>Ae(i,s.midiControllers,1,A));break}this.callEvent("controllerchange",{channel:t,controllerNumber:A,controllerValue:e})}function _s(t){this.midiVolume=t,this.setMasterPan(this.pan)}function zs(t){this.masterGain=t*sn,this.setMasterPan(this.pan)}function js(t){this.pan=t,t=t/2+.5,this.panLeft=1-t,this.panRight=t}function $s(t,A){A&&this.stopAll(t,!0),this.workletProcessorChannels[t].isMuted=A,this.sendChannelProperties(),this.callEvent("mutechannel",{channel:t,isMuted:A})}function Ao(t){this.workletProcessorChannels[t].lockGSNRPNParams=!0,this.workletProcessorChannels[t].channelVibrato.rate=0,this.workletProcessorChannels[t].channelVibrato.delay=0,this.workletProcessorChannels[t].channelVibrato.depth=0}function eo(t,A,e,n){this.workletProcessorChannels[t].lockGSNRPNParams||(this.workletProcessorChannels[t].channelVibrato.rate=e,this.workletProcessorChannels[t].channelVibrato.delay=n,this.workletProcessorChannels[t].channelVibrato.depth=A)}function to(t,A){let e=this.workletProcessorChannels[t],n=()=>{e.channelVibrato.delay===0&&e.channelVibrato.rate===0&&e.channelVibrato.depth===0&&(e.channelVibrato.depth=50,e.channelVibrato.rate=8,e.channelVibrato.delay=.6)};switch(e.dataEntryState){default:case RA.Idle:break;case RA.NRPFine:if(this.system!=="gs"||e.lockGSNRPNParams)return;switch(e.NRPCoarse){default:if(A===64)return;v(`%cUnrecognized NRPN for %c${t}%c: %c(0x${e.NRPCoarse.toString(16).toUpperCase()} 0x${e.NRPFine.toString(16).toUpperCase()})%c data value: %c${A}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case 1:switch(e.NRPFine){default:if(A===64)return;v(`%cUnrecognized NRPN for %c${t}%c: %c(0x${e.NRPCoarse.toString(16)} 0x${e.NRPFine.toString(16)})%c data value: %c${A}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case 8:if(A===64)return;n(),e.channelVibrato.rate=A/64*8,m(`%cVibrato rate for %c${t}%c is now set to %c${A} = ${e.channelVibrato.rate}%cHz.`,g.info,g.recognized,g.info,g.value,g.info);break;case 9:if(A===64)return;n(),e.channelVibrato.depth=A/2,m(`%cVibrato depth for %c${t}%c is now set to %c${A} = ${e.channelVibrato.depth}%c cents range of detune.`,g.info,g.recognized,g.info,g.value,g.info);break;case 10:if(A===64)return;n(),e.channelVibrato.delay=A/64/3,m(`%cVibrato delay for %c${t}%c is now set to %c${A} = ${e.channelVibrato.delay}%c seconds.`,g.info,g.recognized,g.info,g.value,g.info);break;case 32:let o=A;this.controllerChange(t,D.brightness,A),m(`%cFilter cutoff for %c${t}%c is now set to %c${o}`,g.info,g.recognized,g.info,g.value)}break;case 29:let s=A;this.controllerChange(t,D.reverbDepth,s),m(`%cGS Drum reverb for %c${t}%c: %c${s}`,g.info,g.recognized,g.info,g.value);break}break;case RA.RPCoarse:case RA.RPFine:switch(e.RPValue){default:v(`%cUnrecognized RPN for %c${t}%c: %c(0x${e.RPValue.toString(16)})%c data value: %c${A}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case 0:e.midiControllers[dA+O.pitchWheelRange]=A<<7,m(`%cChannel ${t} bend range. Semitones: %c${A}`,g.info,g.value);break;case 2:this.setChannelTuningSemitones(t,A-64);break;case 1:this.setChannelTuning(t,A-64,!1);break;case 5:this.setModulationDepth(t,A*100);break;case 16383:this.resetParameters(t);break}}}function no(t,A){let e=this.workletProcessorChannels[t];switch(e.dataEntryState){default:break;case RA.RPCoarse:case RA.RPFine:switch(e.RPValue){default:break;case 0:if(A===0)break;e.midiControllers[dA+O.pitchWheelRange]|=A;let n=(e.midiControllers[dA+O.pitchWheelRange]>>7)+A/127;m(`%cChannel ${t} bend range. Semitones: %c${n}`,g.info,g.value);break;case 1:let o=e.customControllers[cA.channelTuning]<<7|A;this.setChannelTuning(t,o*.01220703125);break;case 5:let a=e.customControllers[cA.modulationMultiplier]*50+A/128*100;this.setModulationDepth(t,a);break;case 16383:this.resetParameters(t);break}}}function so(t=!0){t&&m("%cResetting all controllers!",g.info),this.callEvent("allcontrollerreset",void 0);for(let A=0;A<this.workletProcessorChannels.length;A++){this.resetControllers(A);let e=this.workletProcessorChannels[A];e.lockPreset?this.callEvent("drumchange",{channel:A,isDrumChannel:e.drumChannel}):(e.presetUsesOverride=!0,oe(e,0),A%16===xA?(this.setPreset(A,this.drumPreset),e.drumChannel=!0,this.callEvent("drumchange",{channel:A,isDrumChannel:!0})):(e.drumChannel=!1,this.setPreset(A,this.defaultPreset),this.callEvent("drumchange",{channel:A,isDrumChannel:!1}))),this.callEvent("programchange",{channel:A,program:e.preset.program,bank:XA(e),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[dA+O.pitchWheel]===!1){let n=this.workletProcessorChannels[A].midiControllers[dA+O.pitchWheel],s=n>>7,o=n&127;this.callEvent("pitchwheel",{channel:A,MSB:s,LSB:o})}}this.tunings=[],this.tunings=[];for(let A=0;127>A;A++)this.tunings.push([]);this.setMIDIVolume(1),this.system=ot}function oo(t){let A=this.workletProcessorChannels[t];A.channelOctaveTuning.fill(0),A.keyCentTuning.fill(0);for(let n=0;n<ke.length;n++){if(A.lockedControllers[n])return;let s=ke[n];A.midiControllers[n]!==s&&n<127&&this.callEvent("controllerchange",{channel:t,controllerNumber:n,controllerValue:s>>7}),A.midiControllers[n]=s}A.channelVibrato={rate:0,depth:0,delay:0},A.holdPedal=!1,A.randomPan=!1;let e=A.customControllers[cA.channelTransposeFine];A.customControllers.set(Wt),A.customControllers[cA.channelTransposeFine]=e,this.resetParameters(t)}function ro(t){let A=this.workletProcessorChannels[t];A.NRPCoarse=0,A.NRPFine=0,A.RPValue=0,A.dataEntryState=RA.Idle}function io(){let t=4;for(let n of this.instruments)t+=n.instrumentZones.reduce((s,o)=>(o.generators=o.generators.filter(i=>i.generatorType!==r.sampleID&&i.generatorType!==r.keyRange&&i.generatorType!==r.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:r.velRange,generatorValue:o.velRange.max<<8|Math.max(o.velRange.min,0)}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:r.keyRange,generatorValue:o.keyRange.max<<8|Math.max(o.keyRange.min,0)}),o.isGlobal||o.generators.push({generatorType:r.sampleID,generatorValue:this.samples.indexOf(o.sample)}),o.generators.length*4+s),0);let A=new L(t),e=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.generatorZoneStartIndex=e;for(let o of s.generators)U(A,o.generatorType),U(A,o.generatorValue),e++}return X(A,0),IA(new iA("igen",A.length,A))}function ao(t,A,e,n,s){let o=this.samples.map((B,d)=>{e&&B.compressSample(n,s);let c=B.getRawData();return m(`%cEncoded sample %c${d}. ${B.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${B.isCompressed}%c.`,g.info,g.recognized,g.info,g.recognized,g.info,B.isCompressed?g.recognized:g.unrecognized,g.info),c}),i=this.samples.reduce((B,d,c)=>B+o[c].length+46,0),a=new L(i);this.samples.forEach((B,d)=>{let c=o[d],Q,l,f=c.length;B.isCompressed?(Q=a.currentIndex,l=Q+c.length):(Q=a.currentIndex/2,l=Q+c.length/2,f+=46),t.push(Q),a.set(c,a.currentIndex),a.currentIndex+=f,A.push(l)});let C=IA(new iA("smpl",a.length,a),new L([115,100,116,97]));return IA(new iA("LIST",C.length,C))}function go(t,A){let n=new L(46*(this.samples.length+1));return this.samples.forEach((s,o)=>{DA(n,s.sampleName,20);let i=t[o];X(n,i);let a=A[o];X(n,a);let C=s.sampleLoopStartIndex+i,B=s.sampleLoopEndIndex+i;s.isCompressed&&(C-=i,B-=i),X(n,C),X(n,B),X(n,s.sampleRate),n[n.currentIndex++]=s.samplePitch,n[n.currentIndex++]=s.samplePitchCorrection,U(n,s.sampleLink),U(n,s.sampleType)}),DA(n,"EOS",46),IA(new iA("shdr",n.length,n))}function Io(){let t=10;for(let n of this.instruments)t+=n.instrumentZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new L(t),e=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.modulatorZoneStartIndex=e;for(let o of s.modulators)U(A,o.sourceEnum),U(A,o.modulatorDestination),U(A,o.transformAmount),U(A,o.secondarySourceEnum),U(A,o.transformType),e++}return Fe(A,0,10),IA(new iA("imod",A.length,A))}function Eo(){let t=this.instruments.reduce((o,i)=>i.instrumentZones.length*4+o,4),A=new L(t),e=0,n=0,s=0;for(let o of this.instruments){o.instrumentZoneIndex=e;for(let i of o.instrumentZones)i.zoneID=e,U(A,n),U(A,s),n+=i.generators.length,s+=i.modulators.length,e++}return U(A,n),U(A,s),IA(new iA("ibag",A.length,A))}function Co(){let t=this.instruments.length*22+22,A=new L(t),e=0,n=0;for(let s of this.instruments)DA(A,s.instrumentName,20),U(A,e),e+=s.instrumentZones.length,s.instrumentID=n,n++;return DA(A,"EOI",20),U(A,e),IA(new iA("inst",A.length,A))}function Bo(){let t=4;for(let n of this.presets)t+=n.presetZones.reduce((s,o)=>(o.generators=o.generators.filter(i=>i.generatorType!==r.instrument&&i.generatorType!==r.keyRange&&i.generatorType!==r.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:r.velRange,generatorValue:o.velRange.max<<8|Math.max(o.velRange.min,0)}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:r.keyRange,generatorValue:o.keyRange.max<<8|Math.max(o.keyRange.min,0)}),o.isGlobal||o.generators.push({generatorType:r.instrument,generatorValue:this.instruments.indexOf(o.instrument)}),o.generators.length*4+s),0);let A=new L(t),e=0;for(let n of this.presets)for(let s of n.presetZones){s.generatorZoneStartIndex=e;for(let o of s.generators)U(A,o.generatorType),U(A,o.generatorValue);e+=s.generators.length}return U(A,0),U(A,0),IA(new iA("pgen",A.length,A))}function ho(){let t=10;for(let n of this.presets)t+=n.presetZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new L(t),e=0;for(let n of this.presets)for(let s of n.presetZones){s.modulatorZoneStartIndex=e;for(let o of s.modulators)U(A,o.sourceEnum),U(A,o.modulatorDestination),U(A,o.transformAmount),U(A,o.secondarySourceEnum),U(A,o.transformType),e++}return Fe(A,0,10),IA(new iA("pmod",A.length,A))}function co(){let t=this.presets.reduce((o,i)=>i.presetZones.length*4+o,4),A=new L(t),e=0,n=0,s=0;for(let o of this.presets){o.presetZoneStartIndex=e;for(let i of o.presetZones)i.zoneID=e,U(A,n),U(A,s),n+=i.generators.length,s+=i.modulators.length,e++}return U(A,n),U(A,s),IA(new iA("pbag",A.length,A))}function lo(){let t=this.presets.length*38+38,A=new L(t),e=0;for(let n of this.presets)DA(A,n.presetName,20),U(A,n.program),U(A,n.bank),U(A,e),X(A,n.library),X(A,n.genre),X(A,n.morphology),e+=n.presetZones.length;return DA(A,"EOP",20),U(A,0),U(A,0),U(A,e),X(A,0),X(A,0),X(A,0),IA(new iA("phdr",A.length,A))}var Mr={compress:!1,compressionQuality:.5,compressionFunction:void 0};function Qo(t=Mr){if(t.compress&&typeof t.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");QA("%cSaving soundfont...",g.info),m(`%cCompression: %c${t?.compress||"false"}%c quality: %c${t?.compressionQuality||"none"}`,g.info,g.recognized,g.info,g.recognized),m("%cWriting INFO...",g.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",t?.compress&&(this.soundFontInfo.ifil="3.0");for(let[M,x]of Object.entries(this.soundFontInfo))if(M==="ifil"||M==="iver"){let I=parseInt(x.split(".")[0]),P=parseInt(x.split(".")[1]),q=new L(4);U(q,I),U(q,P),A.push(IA(new iA(M,4,q)))}else if(M==="DMOD")A.push(IA(new iA(M,x.length,x)));else{let I=new L(x.length);DA(I,x),A.push(IA(new iA(M,x.length,I)))}let e=lA([new L([73,78,70,79]),...A]),n=IA(new iA("LIST",e.length,e));m("%cWriting SDTA...",g.info);let s=[],o=[],i=ao.call(this,s,o,t?.compress,t?.compressionQuality??.5,t.compressionFunction);m("%cWriting PDTA...",g.info),m("%cWriting SHDR...",g.info);let a=go.call(this,s,o);m("%cWriting IGEN...",g.info);let C=io.call(this);m("%cWriting IMOD...",g.info);let B=Io.call(this);m("%cWriting IBAG...",g.info);let d=Eo.call(this);m("%cWriting INST...",g.info);let c=Co.call(this),Q=Bo.call(this);m("%cWriting PMOD...",g.info);let l=ho.call(this);m("%cWriting PBAG...",g.info);let f=co.call(this);m("%cWriting PHDR...",g.info);let w=lo.call(this),k=lA([new L([112,100,116,97]),w,f,l,Q,c,d,B,C,a]),F=IA(new iA("LIST",k.length,k));m("%cWriting the output file...",g.info);let y=lA([new L([115,102,98,107]),n,i,F]),N=IA(new iA("RIFF",y.length,y));return m(`%cSaved succesfully! Final file size: %c${N.length}`,g.info,g.recognized),W(),N}var Je=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,e){return this.generators.find(n=>n.generatorType===A)?.generatorValue??e}};var GA=class extends Je{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},ie=class extends Je{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var xr=new Set([r.velRange,r.keyRange,r.instrument,r.exclusiveClass,r.endOper,r.sampleModes,r.startloopAddrsOffset,r.startloopAddrsCoarseOffset,r.endloopAddrsOffset,r.endloopAddrsCoarseOffset,r.startAddrsOffset,r.startAddrsCoarseOffset,r.endAddrOffset,r.endAddrsCoarseOffset,r.initialAttenuation,r.fineTune,r.coarseTune,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay,r.keyNumToModEnvHold,r.keyNumToModEnvDecay]);function uo(t,A=!0){function e(c,Q){c.push(...Q.filter(l=>!c.find(f=>f.generatorType===l.generatorType)))}function n(c,Q){return{min:Math.max(c.min,Q.min),max:Math.min(c.max,Q.max)}}function s(c,Q){c.push(...Q.filter(l=>!c.find(f=>K.isIdentical(l,f))))}let o=[],i=[],a=[],C={min:0,max:127},B={min:0,max:127},d=t.presetZones.find(c=>c.isGlobal);d&&(i.push(...d.generators),a.push(...d.modulators),C=d.keyRange,B=d.velRange);for(let c of t.presetZones){if(c.isGlobal)continue;let Q=c.keyRange;c.hasKeyRange||(Q=C);let l=c.velRange;c.hasVelRange||(l=B);let f=c.generators.map(I=>new b(I.generatorType,I.generatorValue));e(f,i);let w=[...c.modulators];s(w,a);let k=c.instrument.instrumentZones,F=[],y=[],N={min:0,max:127},M={min:0,max:127},x=k.find(I=>I.isGlobal);x&&(F.push(...x.generators),y.push(...x.modulators),N=x.keyRange,M=x.velRange);for(let I of k){if(I.isGlobal)continue;let P=I.keyRange;I.hasKeyRange||(P=N);let q=I.velRange;if(I.hasVelRange||(q=M),P=n(P,Q),q=n(q,l),P.max<P.min||q.max<q.min)continue;let AA=I.generators.map(nA=>new b(nA.generatorType,nA.generatorValue));e(AA,F);let Z=[...I.modulators];s(Z,y);let aA=[...Z];for(let nA of w){let hA=aA.findIndex(fA=>K.isIdentical(nA,fA));hA!==-1?aA[hA]=aA[hA].sumTransform(nA):aA.push(nA)}let rA=AA.map(nA=>new b(nA.generatorType,nA.generatorValue));for(let nA of f){if(nA.generatorType===r.velRange||nA.generatorType===r.keyRange||nA.generatorType===r.instrument||nA.generatorType===r.endOper||nA.generatorType===r.sampleModes)continue;let hA=AA.findIndex(fA=>fA.generatorType===nA.generatorType);if(hA!==-1){let fA=rA[hA].generatorValue+nA.generatorValue;rA[hA]=new b(nA.generatorType,fA)}else{let fA=J[nA.generatorType].def+nA.generatorValue;rA.push(new b(nA.generatorType,fA))}}rA=rA.filter(nA=>nA.generatorType!==r.sampleID&&nA.generatorType!==r.keyRange&&nA.generatorType!==r.velRange&&nA.generatorType!==r.endOper&&nA.generatorType!==r.instrument&&nA.generatorValue!==J[nA.generatorType].def);let eA=new GA;eA.keyRange=P,eA.velRange=q,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=I.sample,eA.generators=rA,eA.modulators=aA,o.push(eA)}}if(A){let c=new GA;c.isGlobal=!0;for(let f=0;f<58;f++){if(xr.has(f))continue;let w={},k=J[f]?.def||0;w[k]=0;for(let F of o){let y=F.generators.find(x=>x.generatorType===f);if(y){let x=y.generatorValue;w[x]===void 0?w[x]=1:w[x]++}else w[k]++;let N;switch(f){default:continue;case r.decayVolEnv:N=r.keyNumToVolEnvDecay;break;case r.holdVolEnv:N=r.keyNumToVolEnvHold;break;case r.decayModEnv:N=r.keyNumToModEnvDecay;break;case r.holdModEnv:N=r.keyNumToModEnvHold}if(F.generators.find(x=>x.generatorType===N)!==void 0){w={};break}}if(Object.keys(w).length>0){let F=Object.entries(w).reduce((N,M)=>N[1]<M[1]?M:N,[0,0]),y=parseInt(F[0]);y!==k&&c.generators.push(new b(f,y)),o.forEach(N=>{let M=N.generators.findIndex(x=>x.generatorType===f);M!==-1?N.generators[M].generatorValue===y&&N.generators.splice(M,1):y!==k&&N.generators.push(new b(f,k))})}}let l=o.find(f=>!f.isGlobal).modulators.map(f=>K.copy(f));for(let f of l){let w=!0;for(let k of o){if(k.isGlobal||!w)continue;k.modulators.find(y=>K.isIdentical(y,f))||(w=!1)}if(w===!0){c.modulators.push(K.copy(f));for(let k of o){let F=k.modulators.find(y=>K.isIdentical(y,f));F.transformAmount===f.transformAmount&&k.modulators.splice(k.modulators.indexOf(F),1)}}}o.splice(0,0,c)}return o}var fo=20;function ht(t,A,e,n,s,o,i){let a=i===0?0:1,C=new L(fo+a*16);X(C,fo),U(C,A),U(C,e);let B=n*.4,d=Math.floor(B*-65536);X(C,d),X(C,2);let c=o-s,Q=0;switch(i){default:case 0:a=0;break;case 1:Q=0,a=1;break;case 3:Q=1,a=1}return X(C,a),a===1&&(X(C,16),X(C,Q),X(C,s),X(C,c)),sA("wsmp",C)}var H={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},ct=new K({srcEnum:219,dest:r.reverbEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),lt=new K({srcEnum:221,dest:r.chorusEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),Qt=new K({srcEnum:129,dest:r.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0}),ut=new K({srcEnum:13,dest:r.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0});var S={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 Pe=class{source;control;destination;scale;transform;constructor(A,e,n,s,o){this.source=A,this.control=e,this.destination=n,this.scale=s,this.transform=o}writeArticulator(){let A=new L(12);return U(A,this.source),U(A,this.control),U(A,this.destination),U(A,this.transform),X(A,this.scale<<16),A}};function mo(t,A){if(t)switch(A){default:return;case D.modulationWheel:return H.modulationWheel;case D.mainVolume:return H.volume;case D.pan:return H.pan;case D.expressionController:return H.expression;case D.chorusDepth:return H.chorus;case D.reverbDepth:return H.reverb}else switch(A){default:return;case O.noteOnKeyNum:return H.keyNum;case O.noteOnVelocity:return H.velocity;case O.noController:return H.none;case O.polyPressure:return H.polyPressure;case O.channelPressure:return H.channelPressure;case O.pitchWheel:return H.pitchWheel;case O.pitchWheelRange:return H.pitchWheelRange}}function po(t,A){switch(t){default:return;case r.initialAttenuation:return{dest:S.gain,amount:-A};case r.fineTune:return S.pitch;case r.pan:return S.pan;case r.keyNum:return S.keyNum;case r.reverbEffectsSend:return S.reverbSend;case r.chorusEffectsSend:return S.chorusSend;case r.freqModLFO:return S.modLfoFreq;case r.delayModLFO:return S.modLfoDelay;case r.delayVibLFO:return S.vibLfoDelay;case r.freqVibLFO:return S.vibLfoFreq;case r.delayVolEnv:return S.volEnvDelay;case r.attackVolEnv:return S.volEnvAttack;case r.holdVolEnv:return S.volEnvHold;case r.decayVolEnv:return S.volEnvDecay;case r.sustainVolEnv:return{dest:S.volEnvSustain,amount:1e3-A};case r.releaseVolEnv:return S.volEnvRelease;case r.delayModEnv:return S.modEnvDelay;case r.attackModEnv:return S.modEnvAttack;case r.holdModEnv:return S.modEnvHold;case r.decayModEnv:return S.modEnvDecay;case r.sustainModEnv:return{dest:S.modEnvSustain,amount:1e3-A};case r.releaseModEnv:return S.modEnvRelease;case r.initialFilterFc:return S.filterCutoff;case r.initialFilterQ:return S.filterQ}}function yo(t,A){switch(t){default:return;case r.modEnvToFilterFc:return{source:H.modEnv,dest:S.filterCutoff,amt:A,isBipolar:!1};case r.modEnvToPitch:return{source:H.modEnv,dest:S.pitch,amt:A,isBipolar:!1};case r.modLfoToFilterFc:return{source:H.modLfo,dest:S.filterCutoff,amt:A,isBipolar:!0};case r.modLfoToVolume:return{source:H.modLfo,dest:S.gain,amt:A,isBipolar:!0};case r.modLfoToPitch:return{source:H.modLfo,dest:S.pitch,amt:A,isBipolar:!0};case r.vibLfoToPitch:return{source:H.vibratoLfo,dest:S.pitch,amt:A,isBipolar:!0};case r.keyNumToVolEnvHold:return{source:H.keyNum,dest:S.volEnvHold,amt:A,isBipolar:!0};case r.keyNumToVolEnvDecay:return{source:H.keyNum,dest:S.volEnvDecay,amt:A,isBipolar:!0};case r.keyNumToModEnvHold:return{source:H.keyNum,dest:S.modEnvHold,amt:A,isBipolar:!0};case r.keyNumToModEnvDecay:return{source:H.keyNum,dest:S.modEnvDecay,amt:A,isBipolar:!0};case r.scaleTuning:return{source:H.keyNum,dest:S.pitch,amt:A*128,isBipolar:!1}}}function So(t){let A=po(t.generatorType,t.generatorValue),e=A,n=0,s=t.generatorValue;A?.amount!==void 0&&(s=A.amount,e=A.dest);let o=yo(t.generatorType,t.generatorValue);if(o!==void 0)s=o.amt,e=o.dest,n=o.source;else if(e===void 0){v(`Invalid generator type: ${t.generatorType}`);return}return new Pe(n,0,e,s,0)}function Do(t){if(t.transformType!==0){v("Other transform types are not supported.");return}let A=mo(t.sourceUsesCC,t.sourceIndex),e=t.sourceCurveType,n=t.sourcePolarity,s=t.sourceDirection;if(A===void 0){v(`Invalid source: ${t.sourceIndex}, CC: ${t.sourceUsesCC}`);return}t.modulatorDestination===r.initialAttenuation&&(s=s===1?0:1);let o=mo(t.secSrcUsesCC,t.secSrcIndex),i=t.secSrcCurveType,a=t.secSrcPolarity,C=t.secSrcDirection;if(o===void 0){v(`Invalid secondary source: ${t.secSrcIndex}, CC: ${t.secSrcUsesCC}`);return}let B=po(t.modulatorDestination,t.transformAmount),d=B,c=t.transformAmount;B?.dest!==void 0&&(d=B.dest,c=B.amount);let Q=yo(t.modulatorDestination,t.transformAmount);if(Q!==void 0)c=Q.amt,o=A,i=e,a=n,C=s,e=uA.linear,n=Q.isBipolar?1:0,s=0,A=Q.source,d=Q.dest;else if(d===void 0){v(`Invalid destination: ${t.modulatorDestination}`);return}let l=0;return l|=i<<4,l|=a<<8,l|=C<<9,l|=e,l|=n<<14,l|=s<<15,new Pe(A,o,d,c,l)}var Nr=new Set([r.sampleModes,r.initialAttenuation,r.keyRange,r.velRange,r.sampleID,r.fineTune,r.coarseTune,r.startAddrsOffset,r.startAddrsCoarseOffset,r.endAddrOffset,r.endAddrsCoarseOffset,r.startloopAddrsOffset,r.startloopAddrsCoarseOffset,r.endloopAddrsOffset,r.endloopAddrsCoarseOffset,r.overridingRootKey,r.exclusiveClass]);function dt(t){for(let o=0;o<t.generators.length;o++){let i=t.generators[o];(i.generatorType===r.delayVolEnv||i.generatorType===r.attackVolEnv||i.generatorType===r.holdVolEnv||i.generatorType===r.decayVolEnv||i.generatorType===r.releaseVolEnv||i.generatorType===r.delayModEnv||i.generatorType===r.attackModEnv||i.generatorType===r.holdModEnv||i.generatorType===r.decayModEnv)&&(t.generators[o]=new b(i.generatorType,Math.min(i.generatorValue,6386),!1))}for(let o=0;o<t.generators.length;o++){let i=t.generators[o],a;switch(i.generatorType){default:continue;case r.keyNumToVolEnvDecay:a=r.decayVolEnv;break;case r.keyNumToVolEnvHold:a=r.holdVolEnv;break;case r.keyNumToModEnvDecay:a=r.decayModEnv;break;case r.keyNumToModEnvHold:a=r.holdModEnv}let C=t.generators.find(f=>f.generatorType===a);if(C===void 0)continue;let B=i.generatorValue*-128,d=60/128*B,c=C.generatorValue-d,Q=t.generators.indexOf(i),l=t.generators.indexOf(C);t.generators[l]=new b(a,c,!1),t.generators[Q]=new b(i.generatorType,B,!1)}let A=t.generators.reduce((o,i)=>{if(Nr.has(i.generatorType))return o;let a=So(i);return a!==void 0?(o.push(a),m("%cSucceeded converting to DLS Articulator!",g.recognized)):v("Failed converting to DLS Articulator!"),o},[]),e=t.modulators.reduce((o,i)=>{if(K.isIdentical(i,lt,!0)||K.isIdentical(i,ct,!0)||K.isIdentical(i,Qt,!0)||K.isIdentical(i,ut,!0))return o;let a=Do(i);return a!==void 0?(o.push(a),m("%cSucceeded converting to DLS Articulator!",g.recognized)):v("Failed converting to DLS Articulator!"),o},[]);A.push(...e);let n=new L(8);X(n,8),X(n,A.length);let s=A.map(o=>o.writeArticulator());return sA("art2",lA([n,...s]))}function ko(t,A){let e=new L(12);U(e,Math.max(t.keyRange.min,0)),U(e,t.keyRange.max),U(e,Math.max(t.velRange.min,0)),U(e,t.velRange.max),U(e,0);let n=t.getGeneratorValue(r.exclusiveClass,0);U(e,n),U(e,0);let s=sA("rgnh",e),o=t.getGeneratorValue(r.overridingRootKey,t.sample.samplePitch);t.getGeneratorValue(r.scaleTuning,A.getGeneratorValue(r.scaleTuning,100))===0&&t.keyRange.max-t.keyRange.min===0&&(o=t.keyRange.min);let a=ht(t.sample,o,t.getGeneratorValue(r.fineTune,0)+t.getGeneratorValue(r.coarseTune,0)*100+t.sample.samplePitchCorrection,t.getGeneratorValue(r.initialAttenuation,0),t.sample.sampleLoopStartIndex+t.getGeneratorValue(r.startloopAddrsOffset,0)+t.getGeneratorValue(r.startloopAddrsCoarseOffset,0)*32768,t.sample.sampleLoopEndIndex+t.getGeneratorValue(r.endloopAddrsOffset,0)+t.getGeneratorValue(r.endloopAddrsCoarseOffset,0)*32768,t.getGeneratorValue(r.sampleModes,0)),C=new L(12);U(C,0),U(C,0),X(C,1),X(C,this.samples.indexOf(t.sample));let B=sA("wlnk",C),d=new L(0);if(t.modulators.length+t.generators.length>0){let c=dt(t);d=sA("lar2",c,!1,!0)}return sA("rgn2",lA([s,a,B,d]),!1,!0)}function wo(t){QA(`%cWriting %c${t.presetName}%c...`,g.info,g.recognized,g.info);let A=uo(t),e=A.reduce((Q,l)=>l.isGlobal?Q:Q+1,0),n=new L(12);X(n,e);let s=(t.bank&127)<<8;t.bank===128&&(s|=1<<31),X(n,s),X(n,t.program&127);let o=sA("insh",n),i=new L(0),a=A.find(Q=>Q.isGlobal===!0);if(a){let Q=dt(a);i=sA("lar2",Q,!1,!0)}let C=lA(A.reduce((Q,l)=>(l.isGlobal||Q.push(ko.apply(this,[l,a])),Q),[])),B=sA("lrgn",C,!1,!0),d=sA("INAM",ce(t.presetName)),c=sA("INFO",d,!1,!0);return W(),sA("ins ",lA([o,B,i,c]),!1,!0)}function Fo(){let t=lA(this.presets.map(A=>wo.apply(this,[A])));return sA("lins",t,!1,!0)}function Ro(t){let A=new L(18);U(A,1),U(A,1),X(A,t.sampleRate),X(A,t.sampleRate*2),U(A,2),U(A,16);let e=sA("fmt ",A),n=1;t.sampleLoopStartIndex+Math.abs(t.getAudioData().length-t.sampleLoopEndIndex)<2&&(n=0);let s=ht(t,t.samplePitch,t.samplePitchCorrection,0,t.sampleLoopStartIndex,t.sampleLoopEndIndex,n),o=t.getAudioData(),i;if(t.isCompressed){let B=new Int16Array(o.length);for(let d=0;d<o.length;d++)B[d]=o[d]*32768;i=sA("data",new L(B.buffer))}else i=sA("data",t.getRawData());let a=sA("INAM",ce(t.sampleName)),C=sA("INFO",a,!1,!0);return m(`%cSaved %c${t.sampleName}%c succesfully!`,g.recognized,g.value,g.recognized),sA("wave",lA([e,s,i,C]),!1,!0)}function Go(){let t=0,A=[],e=this.samples.map(n=>{let s=Ro(n);return A.push(t),t+=s.length,s});return{data:sA("wvpl",lA(e),!1,!0),indexes:A}}function Mo(){QA("%cSaving DLS...",g.info);let t=new L(4);X(t,this.presets.length);let A=sA("colh",t);QA("%cWriting instruments...",g.info);let e=Fo.apply(this);m("%cSuccess!",g.recognized),W(),QA("%cWriting WAVE samples...",g.info);let n=Go.apply(this),s=n.data,o=n.indexes;m("%cSucceeded!",g.recognized),W();let i=new L(8+4*o.length);X(i,8),X(i,o.length);for(let c of o)X(i,c);let a=sA("ptbl",i);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
15
- Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let C=[];for(let[c,Q]of Object.entries(this.soundFontInfo))c!=="ICMT"&&c!=="INAM"&&c!=="ICRD"&&c!=="IENG"&&c!=="ICOP"&&c!=="ISFT"&&c!=="ISBJ"||C.push(sA(c,ce(Q),!0));let B=sA("INFO",lA(C),!1,!0),d=new L(A.length+e.length+a.length+s.length+B.length+4);return DA(d,"DLS "),d.set(lA([A,e,a,s,B]),4),m("%cSaved succesfully!",g.recognized),W(),sA("RIFF",d)}var br=48e3,ae=class{constructor(A,e,n,s,o,i,a,C){this.sampleName=A,this.sampleRate=e,this.samplePitch=n,this.samplePitchCorrection=s,this.sampleLink=o,this.sampleType=i,this.sampleLoopStartIndex=a,this.sampleLoopEndIndex=C,this.isCompressed=(i&16)>0,this.compressedData=void 0,this.useCount=0,this.sampleData=void 0}getRawData(){let A=new Uint8Array(this.sampleData.length*2);for(let e=0;e<this.sampleData.length;e++){let n=Math.floor(this.sampleData[e]*32768);A[e*2]=n&255,A[e*2+1]=n>>8&255}return A}resampleData(A){let e=this.getAudioData(),n=A/this.sampleRate,s=new Float32Array(Math.floor(e.length*n));for(let o=0;o<s.length;o++)s[o]=e[Math.floor(o*(1/n))];e=s,this.sampleRate=A,this.sampleLoopStartIndex=Math.floor(this.sampleLoopStartIndex*n),this.sampleLoopEndIndex=Math.floor(this.sampleLoopEndIndex*n),this.sampleData=e}compressSample(A,e){if(!this.isCompressed)try{let n=this.getAudioData();(this.sampleRate<8e3||this.sampleRate>96e3)&&(this.resampleData(br),n=this.getAudioData()),this.compressedData=e([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{v(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var ge=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 Ie=class{constructor(A){this.presetName="",this.program=0,this.bank=0,this.presetZones=[],this.sampleIDOffset=0,this.foundSamplesAndGenerators=[];for(let e=0;e<128;e++)this.foundSamplesAndGenerators[e]=[];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,e){for(let n=A;n<e+1;n++)for(let s=0;s<128;s++)this.getSamplesAndGenerators(n,s).forEach(o=>{o.sample.isSampleLoaded||o.sample.getAudioData()})}preloadSpecific(A,e){this.getSamplesAndGenerators(A,e).forEach(n=>{n.sample.isSampleLoaded||n.sample.getAudioData()})}getSamplesAndGenerators(A,e){let n=this.foundSamplesAndGenerators[A][e];if(n)return n;if(this.presetZones.length<1)return[];function s(l,f){return f>=l.min&&f<=l.max}function o(l,f){l.push(...f.filter(w=>!l.find(k=>k.generatorType===w.generatorType)))}function i(l,f){l.push(...f.filter(w=>!l.find(k=>K.isIdentical(w,k))))}let a=[],C=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],B=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[],d=this.presetZones[0].isGlobal?this.presetZones[0].keyRange:{min:0,max:127},c=this.presetZones[0].isGlobal?this.presetZones[0].velRange:{min:0,max:127};return this.presetZones.filter(l=>s(l.hasKeyRange?l.keyRange:d,A)&&s(l.hasVelRange?l.velRange:c,e)&&!l.isGlobal).forEach(l=>{if(l.instrument.instrumentZones.length<1)return;let f=l.generators,w=l.modulators,k=l.instrument.instrumentZones[0],F=k.isGlobal?[...k.generators]:[],y=k.isGlobal?[...k.modulators]:[],N=k.isGlobal?k.keyRange:{min:0,max:127},M=k.isGlobal?k.velRange:{min:0,max:127};l.instrument.instrumentZones.filter(I=>s(I.hasKeyRange?I.keyRange:N,A)&&s(I.hasVelRange?I.velRange:M,e)&&!I.isGlobal).forEach(I=>{let P=[...I.generators],q=[...I.modulators];o(f,C),o(P,F),i(w,B),i(q,y),i(q,this.defaultModulators);let AA=[...q];for(let Z=0;Z<w.length;Z++){let aA=w[Z],rA=AA.findIndex(eA=>K.isIdentical(aA,eA));rA!==-1?AA[rA]=AA[rA].sumTransform(aA):AA.push(aA)}a.push({instrumentGenerators:P,presetGenerators:f,modulators:AA,sample:I.sample,sampleID:I.generators.find(Z=>Z.generatorType===r.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][e]=a,a}};var Ee=class t{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=At.map(e=>K.copy(e)),A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}static mergeSoundfonts(...A){let e=A.shift(),n=e.presets;for(;A.length;)A.shift().presets.forEach(o=>{n.find(i=>i.bank===o.bank&&i.program===o.program)===void 0&&n.push(o)});return new t({presets:n,info:e.soundFontInfo})}static getDummySoundfontFile(){let A=new t,e=new ae("Saw",44100,65,20,0,0,0,127);e.sampleData=new Float32Array(128);for(let B=0;B<128;B++)e.sampleData[B]=B/128*2-1;A.samples.push(e);let n=new GA;n.isGlobal=!0,n.generators.push(new b(r.initialAttenuation,375)),n.generators.push(new b(r.releaseVolEnv,-1e3)),n.generators.push(new b(r.sampleModes,1));let s=new GA;s.sample=e;let o=new GA;o.sample=e,o.generators.push(new b(r.fineTune,-9));let i=new ge;i.instrumentName="Saw Wave",i.instrumentZones.push(n),i.instrumentZones.push(s),i.instrumentZones.push(o),A.instruments.push(i);let a=new ie;a.instrument=i;let C=new Ie(A.defaultModulators);return C.presetName="Saw Wave",C.presetZones.push(a),A.presets.push(C),A.soundFontInfo.ifil="2.1",A.soundFontInfo.isng="EMU8000",A.soundFontInfo.INAM="Dummy",A.write().buffer}removeUnusedElements(){this.instruments.forEach(A=>{A.useCount<1&&A.instrumentZones.forEach(e=>{e.isGlobal||e.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(e=>e.sampleIDOffset=A)}getPresetNoFallback(A,e,n=!1){let s=this.presets.find(o=>o.bank===A&&o.program===e);if(s)return s;if(n!==!1)return A===128?this.presets.find(o=>o.bank===128):this.presets.find(o=>o.program===e)}getPreset(A,e){let n=this.presets.find(s=>s.bank===A&&s.program===e);return n||(A===128?(n=this.presets.find(s=>s.bank===128&&s.program===e),n||(n=this.presets.find(s=>s.bank===128))):n=this.presets.find(s=>s.program===e&&s.bank!==128),n&&v(`%cPreset ${A}.${e} not found. Replaced with %c${n.presetName} (${n.bank}.${n.program})`,g.warn,g.recognized)),n||(v(`Preset ${e} not found. Defaulting to`,this.presets[0].presetName),n=this.presets[0]),n}getPresetByName(A){let e=this.presets.find(n=>n.presetName===A);return e||(v("Preset not found. Defaulting to:",this.presets[0].presetName),e=this.presets[0]),e}parsingError(A){throw new Error(`SF parsing error: ${A} The file may be corrupted.`)}destroySoundfont(){delete this.presets,delete this.instruments,delete this.samples}};Ee.prototype.write=Qo;Ee.prototype.writeDLS=Mo;function xo(t){QA("%cLoading instruments...",g.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument($(t.chunkData));W()}var ft=class extends Ie{constructor(A,e){super(At),this.program=e&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new ge,this.DLSInstrument.addUseCount();let s=new ie;s.instrument=this.DLSInstrument,this.presetZones=[s]}};function No(t){this.verifyHeader(t,"LIST"),this.verifyText(j(t.chunkData,4),"ins ");let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push($(t.chunkData));let e=A.find(l=>l.header==="insh");if(!e)throw W(),new Error("No instrument header!");let n=G(e.chunkData,4),s=G(e.chunkData,4),o=G(e.chunkData,4),i=new ft(s,o),a="unnamedPreset",C=NA(A,"INFO");if(C){let l=$(C.chunkData);for(;l.header!=="INAM";)l=$(C.chunkData);a=j(l.chunkData,l.chunkData.length).trim()}i.presetName=a,i.DLSInstrument.instrumentName=a,he(`%cParsing %c"${a}"%c...`,g.info,g.recognized,g.info);let B=NA(A,"lrgn");if(!B)throw W(),new Error("No region list!");let d=new GA;d.isGlobal=!0;let c=NA(A,"lart"),Q=NA(A,"lar2");(Q!==void 0||c!==void 0)&&this.readLart(c,Q,d),d.generators=d.generators.filter(l=>l.generatorValue!==J[l.generatorType].def),d.modulators.find(l=>l.modulatorDestination===r.reverbEffectsSend)===void 0&&d.modulators.push(K.copy(ct)),d.modulators.find(l=>l.modulatorDestination===r.chorusEffectsSend)===void 0&&d.modulators.push(K.copy(lt)),i.DLSInstrument.instrumentZones.push(d);for(let l=0;l<n;l++){let f=$(B.chunkData);this.verifyHeader(f,"LIST");let w=j(f.chunkData,4);w!=="rgn "&&w!=="rgn2"&&(W(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${w}"`));let k=this.readRegion(f);k&&i.DLSInstrument.instrumentZones.push(k)}this.presets.push(i),this.instruments.push(i.DLSInstrument),W()}function bo(t){let A,e=!1;switch(t){default:case H.modLfo:case H.vibratoLfo:case H.coarseTune:case H.fineTune:case H.modEnv:return;case H.keyNum:A=O.noteOnKeyNum;break;case H.none:A=O.noController;break;case H.modulationWheel:A=D.modulationWheel,e=!0;break;case H.pan:A=D.pan,e=!0;break;case H.reverb:A=D.reverbDepth,e=!0;break;case H.chorus:A=D.chorusDepth,e=!0;break;case H.expression:A=D.expressionController,e=!0;break;case H.volume:A=D.mainVolume,e=!0;break;case H.velocity:A=O.noteOnVelocity;break;case H.polyPressure:A=O.polyPressure;break;case H.channelPressure:A=O.channelPressure;break;case H.pitchWheel:A=O.pitchWheel;break;case H.pitchWheelRange:A=O.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${t}`);return{enum:A,isCC:e}}function Lr(t,A){switch(t){default:case S.none:return;case S.pan:return r.pan;case S.gain:return{gen:r.initialAttenuation,newAmount:A*-1};case S.pitch:return r.fineTune;case S.keyNum:return r.overridingRootKey;case S.volEnvDelay:return r.delayVolEnv;case S.volEnvAttack:return r.attackVolEnv;case S.volEnvHold:return r.holdVolEnv;case S.volEnvDecay:return r.decayVolEnv;case S.volEnvSustain:return{gen:r.sustainVolEnv,newAmount:1e3-A};case S.volEnvRelease:return r.releaseVolEnv;case S.modEnvDelay:return r.delayModEnv;case S.modEnvAttack:return r.attackModEnv;case S.modEnvHold:return r.holdModEnv;case S.modEnvDecay:return r.decayModEnv;case S.modEnvSustain:return{gen:r.sustainModEnv,newAmount:(1e3-A)/10};case S.modEnvRelease:return r.releaseModEnv;case S.filterCutoff:return r.initialFilterFc;case S.filterQ:return r.initialFilterQ;case S.chorusSend:return r.chorusEffectsSend;case S.reverbSend:return r.reverbEffectsSend;case S.modLfoFreq:return r.freqModLFO;case S.modLfoDelay:return r.delayModLFO;case S.vibLfoFreq:return r.freqVibLFO;case S.vibLfoDelay:return r.delayVibLFO}}function Ur(t,A){return t===H.vibratoLfo&&A===S.pitch?r.vibLfoToPitch:t===H.modLfo&&A===S.pitch?r.modLfoToPitch:t===H.modLfo&&A===S.filterCutoff?r.modLfoToFilterFc:t===H.modLfo&&A===S.gain?r.modLfoToVolume:t===H.modEnv&&A===S.filterCutoff?r.modEnvToFilterFc:t===H.modEnv&&A===S.pitch?r.modEnvToPitch:void 0}function Lo(t,A,e,n,s){let o=Ur(t,e),i,a,C=!1,B=!1,d=s;if(o===void 0){let F=Lr(e,s);if(F===void 0){v(`Invalid destination: ${e}`);return}if(i=F,F.newAmount!==void 0&&(d=F.newAmount,i=F.gen),a=bo(t),a===void 0){v(`Invalid source: ${t}`);return}}else i=o,C=!0,a={enum:O.noController,isCC:!1},B=!0;let c=bo(A);if(c===void 0){v(`Invalid control: ${A}`);return}let Q;if(B)Q=0;else{let F=n&15,y=n>>10&15;y===uA.linear&&F!==uA.linear&&(y=F);let N=n>>14&1,M=n>>15&1;i===r.initialAttenuation&&s<0&&(M=1),Q=OA(y,N,M,a.isCC,a.enum)}let l=n>>4&15,f=n>>8&1,w=n>>9&1,k=OA(l,f,w,c.isCC,c.enum);if(C){let F=k;k=Q,Q=F}return new K({srcEnum:Q,secSrcEnum:k,dest:i,transform:0,amt:d})}function on(t,A){let e=t.chunkData,n=[],s=[];G(e,4);let o=G(e,4);for(let i=0;i<o;i++){let a=G(e,2),C=G(e,2),B=G(e,2),d=G(e,2),Q=(G(e,4)|0)>>16;if(a===0&&C===0&&d===0){let l;switch(B){case S.pan:l=new b(r.pan,Q);break;case S.gain:l=new b(r.initialAttenuation,-Q*10/.4);break;case S.filterCutoff:l=new b(r.initialFilterFc,Q);break;case S.filterQ:l=new b(r.initialFilterQ,Q);break;case S.modLfoFreq:l=new b(r.freqModLFO,Q);break;case S.modLfoDelay:l=new b(r.delayModLFO,Q);break;case S.vibLfoFreq:l=new b(r.freqVibLFO,Q);break;case S.vibLfoDelay:l=new b(r.delayVibLFO,Q);break;case S.volEnvDelay:l=new b(r.delayVolEnv,Q);break;case S.volEnvAttack:l=new b(r.attackVolEnv,Q);break;case S.volEnvHold:l=new b(r.holdVolEnv,Q,!1);break;case S.volEnvDecay:l=new b(r.decayVolEnv,Q,!1);break;case S.volEnvRelease:l=new b(r.releaseVolEnv,Q);break;case S.volEnvSustain:let f=1e3-Q;l=new b(r.sustainVolEnv,f);break;case S.modEnvDelay:l=new b(r.delayModEnv,Q);break;case S.modEnvAttack:l=new b(r.attackModEnv,Q);break;case S.modEnvHold:l=new b(r.holdModEnv,Q,!1);break;case S.modEnvDecay:l=new b(r.decayModEnv,Q,!1);break;case S.modEnvRelease:l=new b(r.releaseModEnv,Q);break;case S.modEnvSustain:let w=1e3-Q;l=new b(r.sustainModEnv,w);break;case S.reverbSend:l=new b(r.reverbEffectsSend,Q);break;case S.chorusSend:l=new b(r.chorusEffectsSend,Q);break;case S.pitch:let k=Math.floor(Q/100),F=Math.floor(Q-k*100);l=new b(r.fineTune,F),n.push(new b(r.coarseTune,k));break}l&&n.push(l)}else{let l=!0;if(C===H.none)if(a===H.modLfo&&B===S.pitch)n.push(new b(r.modLfoToPitch,Q));else if(a===H.modLfo&&B===S.gain)n.push(new b(r.modLfoToVolume,Q));else if(a===H.modLfo&&B===S.filterCutoff)n.push(new b(r.modLfoToFilterFc,Q));else if(a===H.vibratoLfo&&B===S.pitch)n.push(new b(r.vibLfoToPitch,Q));else if(a===H.modEnv&&B===S.pitch)n.push(new b(r.modEnvToPitch,Q));else if(a===H.modEnv&&B===S.filterCutoff)n.push(new b(r.modEnvToFilterFc,Q));else if(a===H.keyNum&&B===S.pitch)n.push(new b(r.scaleTuning,Q/128));else if(a===H.keyNum&&B===S.volEnvHold){n.push(new b(r.keyNumToVolEnvHold,Q/-128));let f=Math.round(60/128*Q);n.forEach(w=>{w.generatorType===r.holdVolEnv&&(w.generatorValue+=f)})}else if(a===H.keyNum&&B===S.volEnvDecay){n.push(new b(r.keyNumToVolEnvDecay,Q/-128));let f=Math.round(60/128*Q);n.forEach(w=>{w.generatorType===r.decayVolEnv&&(w.generatorValue+=f)})}else if(a===H.keyNum&&B===S.modEnvHold){n.push(new b(r.keyNumToModEnvHold,Q/-128));let f=Math.round(60/128*Q);n.forEach(w=>{w.generatorType===r.holdModEnv&&(w.generatorValue+=f)})}else if(a===H.keyNum&&B===S.modEnvDecay){n.push(new b(r.keyNumToModEnvDecay,Q/-128));let f=Math.round(60/128*Q);n.forEach(w=>{w.generatorType===r.decayModEnv&&(w.generatorValue+=f)})}else l=!1;else l=!1;if(l===!1){let f=Lo(a,C,B,d,Q);f?(s.push(f),m("%cSucceeded converting to SF2 Modulator!",g.recognized)):v("Failed converting to SF2 Modulator!")}}}return A&&s.push(K.copy(Qt),K.copy(ut)),{modulators:s,generators:n}}function Uo(t,A,e){if(t)for(;t.chunkData.currentIndex<t.chunkData.length;){let n=$(t.chunkData);this.verifyHeader(n,"art1","art2");let s=on(n,!0);e.generators.push(...s.generators),e.modulators.push(...s.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=$(A.chunkData);this.verifyHeader(n,"art2","art1");let s=on(n,!1);e.generators.push(...s.generators),e.modulators.push(...s.modulators)}}var mt=class extends GA{constructor(A,e){super(),this.keyRange=A,this.velRange=e,this.isGlobal=!0}setWavesample(A,e,n,s,o,i,a){e!==0&&this.generators.push(new b(r.sampleModes,e)),this.generators.push(new b(r.initialAttenuation,A)),this.isGlobal=!1,a-=o.samplePitchCorrection;let C=Math.trunc(a/100);C!==0&&this.generators.push(new b(r.coarseTune,C));let B=a-C*100;if(B!==0&&this.generators.push(new b(r.fineTune,B)),e!==0){let d=n.start-o.sampleLoopStartIndex,c=n.end-o.sampleLoopEndIndex;if(d!==0){let Q=d%32768;this.generators.push(new b(r.startloopAddrsOffset,Q));let l=Math.trunc(d/32768);l!==0&&this.generators.push(new b(r.startloopAddrsCoarseOffset,l))}if(c!==0){let Q=c%32768;this.generators.push(new b(r.endloopAddrsOffset,Q));let l=Math.trunc(c/32768);l!==0&&this.generators.push(new b(r.endloopAddrsCoarseOffset,l))}}s!==o.samplePitch&&this.generators.push(new b(r.overridingRootKey,s)),this.generators.push(new b(r.sampleID,i)),this.sample=o,o.useCount++}};function To(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push($(t.chunkData));let e=A.find(q=>q.header==="rgnh"),n=G(e.chunkData,2),s=G(e.chunkData,2),o=G(e.chunkData,2),i=G(e.chunkData,2),a=new mt({min:n,max:s},{min:o,max:i});G(e.chunkData,2);let C=G(e.chunkData,2);C!==0&&a.generators.push(new b(r.exclusiveClass,C));let B=NA(A,"lart"),d=NA(A,"lar2");this.readLart(B,d,a),a.isGlobal=!1;let c=A.find(q=>q.header==="wsmp");G(c.chunkData,4);let Q=G(c.chunkData,2),l=re(c.chunkData[c.chunkData.currentIndex++],c.chunkData[c.chunkData.currentIndex++]),w=(G(c.chunkData,4)|0)/-655360;G(c.chunkData,4);let k=G(c.chunkData,4),F,y={start:0,end:0};if(k===0)F=0;else{G(c.chunkData,4),G(c.chunkData,4)===0?F=1:F=3,y.start=G(c.chunkData,4);let AA=G(c.chunkData,4);y.end=y.start+AA}let N=A.find(q=>q.header==="wlnk");if(N===void 0)return;G(N.chunkData,2),G(N.chunkData,2),G(N.chunkData,4);let M=G(N.chunkData,4),x=this.samples[M];if(x===void 0)throw new Error("Invalid sample ID!");let P=(w||x.sampleDbAttenuation)*10/.4;return a.setWavesample(P,F,y,Q,x,M,l),a}var pt=class extends ae{sampleDbAttenuation;sampleData;constructor(A,e,n,s,o,i,a,C){super(A,e,n,s,0,1,o,i),this.sampleData=a,this.sampleDbAttenuation=C}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 vo={PCM:1,ALAW:6};function Tr(t,A){let e=Math.pow(2,A*8-1),n=Math.pow(2,A*8),s,o=!1;A===1?(s=255,o=!0):s=e;let i=t.size/A,a=new Float32Array(i);for(let C=0;C<a.length;C++){let B=G(t.chunkData,A);o?a[C]=B/s-.5:(B>=e&&(B-=n),a[C]=B/s)}return a}function vr(t,A){let e=t.size/A,n=new Float32Array(e);for(let s=0;s<n.length;s++){let o=G(t.chunkData,A),i=o^85;i&=127;let a=i>>4,C=i&15;a>0&&(C+=16),C=(C<<4)+8,a>1&&(C=C<<a-1);let B=o>127?C:-C;n[s]=B/32678}return n}function Ho(t){QA("%cLoading Wave samples...",g.recognized);let A=0;for(;t.chunkData.currentIndex<t.chunkData.length;){let e=$(t.chunkData);this.verifyHeader(e,"LIST"),this.verifyText(j(e.chunkData,4),"wave");let n=[];for(;e.chunkData.currentIndex<e.chunkData.length;)n.push($(e.chunkData));let s=n.find(x=>x.header==="fmt ");if(!s)throw new Error("No fmt chunk in the wave file!");let o=G(s.chunkData,2),i=G(s.chunkData,2);if(i!==1)throw new Error(`Only mono samples are supported. Fmt reports ${i} channels`);let a=G(s.chunkData,4);G(s.chunkData,4),G(s.chunkData,2);let B=G(s.chunkData,2)/8,d=!1,c=n.find(x=>x.header==="data");c||this.parsingError("No data chunk in the WAVE chunk!");let Q;switch(o){default:d=!0,Q=new Float32Array(c.size/B);break;case vo.PCM:Q=Tr(c,B);break;case vo.ALAW:Q=vr(c,B);break}let l=NA(n,"INFO"),f=`Unnamed ${A}`;if(l){let x=$(l.chunkData);for(;x.header!=="INAM"&&l.chunkData.currentIndex<l.chunkData.length;)x=$(l.chunkData);x.header==="INAM"&&(f=j(x.chunkData,x.size).trim())}let w=60,k=0,F=0,y=Q.length-1,N=0,M=n.find(x=>x.header==="wsmp");if(M){G(M.chunkData,4),w=G(M.chunkData,2),k=re(M.chunkData[M.chunkData.currentIndex++],M.chunkData[M.chunkData.currentIndex++]);let x=Math.trunc(k/100);if(w+=x,k-=x*100,N=(G(M.chunkData,4)|0)/-655360,G(M.chunkData,4),G(M.chunkData,4)===1){G(M.chunkData,8),F=G(M.chunkData,4);let q=G(M.chunkData,4);y=F+q}}else v("No wsmp chunk in wave... using sane defaults.");d&&console.error(`Failed to load '${f}': Unsupported format: (${o})`),this.samples.push(new pt(f,a,w,k,F,y,Q,N)),A++,m(`%cLoaded sample %c${f}`,g.info,g.recognized)}W()}var ee=class extends Ee{constructor(A){super(),this.dataArray=new L(A),he("%cParsing DLS...",g.info),this.dataArray||(W(),this.parsingError("No data provided!"));let e=$(this.dataArray,!1);this.verifyHeader(e,"riff"),this.verifyText(j(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push($(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 s=NA(n,"INFO");if(s)for(;s.chunkData.currentIndex<s.chunkData.length;){let C=$(s.chunkData);this.soundFontInfo[C.header]=j(C.chunkData,C.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
9
+ `}},qt=960,Kt=dA.concave;function VA(e,A,t,n,s){return e<<10|A<<9|t<<8|n<<7|s}var Cr=[new K({srcEnum:VA(Kt,0,1,0,q.noteOnVelocity),dest:r.initialAttenuation,amt:qt,secSrcEnum:0,transform:0}),new K({srcEnum:129,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new K({srcEnum:VA(Kt,0,1,1,D.mainVolume),dest:r.initialAttenuation,amt:qt,secSrcEnum:0,transform:0}),new K({srcEnum:13,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new K({srcEnum:526,dest:r.fineTune,amt:12700,secSrcEnum:16,transform:0}),new K({srcEnum:650,dest:r.pan,amt:500,secSrcEnum:0,transform:0}),new K({srcEnum:VA(Kt,0,1,1,D.expressionController),dest:r.initialAttenuation,amt:qt,secSrcEnum:0,transform:0}),new K({srcEnum:219,dest:r.reverbEffectsSend,amt:200,secSrcEnum:0,transform:0}),new K({srcEnum:221,dest:r.chorusEffectsSend,amt:200,secSrcEnum:0,transform:0})],hr=[new K({srcEnum:VA(dA.linear,0,0,0,q.polyPressure),dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new K({srcEnum:VA(dA.linear,0,0,1,D.tremoloDepth),dest:r.modLfoToVolume,amt:24,secSrcEnum:0,transform:0}),new K({srcEnum:VA(dA.linear,1,0,1,D.releaseTime),dest:r.releaseVolEnv,amt:1200,secSrcEnum:0,transform:0}),new K({srcEnum:VA(dA.linear,1,0,1,D.brightness),dest:r.initialFilterFc,amt:6e3,secSrcEnum:0,transform:0}),new K({srcEnum:VA(dA.linear,1,0,1,D.timbreHarmonicContent),dest:r.initialFilterQ,amt:250,secSrcEnum:0,transform:0})],et=Cr.concat(hr);var cA=128,tt=147,me=new Int16Array(tt).fill(0),SA=(e,A)=>me[e]=A<<7;SA(D.mainVolume,100);SA(D.balance,64);SA(D.expressionController,127);SA(D.pan,64);SA(D.portamentoOnOff,127);SA(D.timbreHarmonicContent,64);SA(D.releaseTime,64);SA(D.attackTime,64);SA(D.brightness,64);SA(D.soundController6,64);SA(D.soundController7,64);SA(D.soundController8,64);SA(D.soundController9,64);SA(D.generalPurposeController6,64);SA(D.generalPurposeController8,64);SA(D.portamentoControl,60);SA(cA+q.pitchWheel,64);SA(cA+q.pitchWheelRange,2);var rA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},Pt=Object.keys(rA).length,Ot=new Float32Array(Pt);Ot[rA.modulationMultiplier]=1;var FA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},Vt={velocityOverride:128};var Pn="spessasynth-worklet-system",On=350,xA=9,nt=16,st="gs";var UA={loadNewSongList:0,pause:1,stop:2,play:3,setTime:4,changeMIDIMessageSending:5,setPlaybackRate:6,setLoop:7,changeSong:8,getMIDI:9,setSkipToFirstNote:10,setPreservePlaybackState:11},DA={midiEvent:0,songChange:1,textEvent:2,timeChange:3,pause:4,getMIDI:5,midiError:6,metaEvent:7,loopCountChange:8};function Ae(e,A){let t=0;for(let n=8*(A-1);n>=0;n-=8)t|=e[e.currentIndex++]<<n;return t>>>0}function Vn(e,A){if(this.ignoreEvents)return;if(this.sendMIDIMessages&&e.messageStatusByte>=128){this.sendMIDIMessage([e.messageStatusByte,...e.messageData]);return}let t=Le(e.messageStatusByte),n=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(t.channel+=n,t.status){case R.noteOn:let s=e.messageData[1];if(s>0)this.synth.noteOn(t.channel,e.messageData[0],s),this.playingNotes.push({midiNote:e.messageData[0],channel:t.channel,velocity:s});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 R.noteOff:this.synth.noteOff(t.channel,e.messageData[0]);let o=this.playingNotes.findIndex(C=>C.midiNote===e.messageData[0]&&C.channel===t.channel);o!==-1&&this.playingNotes.splice(o,1);break;case R.pitchBend:this.synth.pitchWheel(t.channel,e.messageData[1],e.messageData[0]);break;case R.controllerChange:this.synth.controllerChange(t.channel,e.messageData[0],e.messageData[1]);break;case R.programChange: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 i=6e7/Ae(e.messageData,3);this.oneTickToSeconds=60/(i*this.midiData.timeDivision),this.oneTickToSeconds===0&&(this.oneTickToSeconds=60/(120*this.midiData.timeDivision),v("invalid tempo! falling back to 120 BPM"),i=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 g=-1;t.status===R.lyric&&(g=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks)+1,this.midiData.lyrics.length-1));let E=t.status;this.midiData.isKaraokeFile&&(t.status===R.text||t.status===R.lyric)&&(g=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyricsTicks.length),E=R.lyric),this.post(DA.textEvent,[e.messageData,E,g]);break;case R.midiPort:this.assignMIDIPort(A,e.messageData[0]);break;case R.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:v(`%cUnrecognized Event: %c${e.messageStatusByte}%c status byte: %c${Object.keys(R).find(C=>R[C]===t.status)}`,a.warn,a.unrecognized,a.warn,a.value);break}t.status>=0&&t.status<128&&this.post(DA.metaEvent,[e.messageStatusByte,e.messageData])}function Zn(){for(let e=0;e<16;e++)this.synth.createWorkletChannel(!0)}function Wn(){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 s=this.loop&&(this.loopCount>0||this.loopCount===-1);if(this.midiData.loop.end<=t.ticks&&s){this.loopCount!==1/0&&(this.loopCount--,this.post(DA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}else if(e>=this.duration){if(s){this.loopCount!==1/0&&(this.loopCount--,this.post(DA.loopCountChange,this.loopCount)),this.setTimeTicks(this.midiData.loop.start);return}this.eventIndex[A]--,this.pause(!0),this.songs.length>1&&this.nextSong();return}}}function Xn(){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 pe=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};var ot=class extends pe{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}},ma={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 w(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 x(e,A){e[e.currentIndex++]=A&255,e[e.currentIndex++]=A>>8}function V(e,A){ye(e,A,4)}function se(e,A){let t=A<<8|e;return t>32767?t-65536:t}function _n(e){return e>127?e-256:e}function X(e,A,t=void 0,n=!0){if(t){let s=e.slice(e.currentIndex,e.currentIndex+A);return e.currentIndex+=A,new TextDecoder(t.replace(/[^\x20-\x7E]/g,"")).decode(s.buffer)}else{let s=!1,o="";for(let i=0;i<A;i++){let g=e[e.currentIndex++];if(!s){if((g<32||g>127)&&g!==10){if(n){s=!0;continue}else if(g===0){s=!0;continue}}o+=String.fromCharCode(g)}}return o}}function rt(e,A=0){let t=e.length;A>0&&(t=A);let n=new M(t);return kA(n,e,A),n}function Ce(e){return rt(e,e.length+1)}function kA(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 nA=class{constructor(A,t,n){this.header=A,this.size=t,this.chunkData=n}};function _(e,A=!0,t=!1){let n=X(e,4),s=w(e,4),o;return A&&(o=new M(e.buffer.slice(e.currentIndex,e.currentIndex+s))),(A||t)&&(e.currentIndex+=s),s%2!==0&&e[e.currentIndex]===0&&e.currentIndex++,new nA(n,s,o)}function oA(e,A=void 0){let t=8+e.size;e.size%2!==0&&t++,A&&(t+=A.length);let n=new M(t);return A&&(n.set(A,n.currentIndex),n.currentIndex+=A.length),kA(n,e.header),V(n,t-8-(A?.length||0)),n.set(e.chunkData,n.currentIndex),n}function AA(e,A,t=!1,n=!1){if(t){let C=new Uint8Array(A.length+1);C.set(A),A=C}let s=8,o=s+A.length,i=A.length;o%2!==0&&o++;let g=e;n&&(o+=4,i+=4,s+=4,g="LIST");let E=new M(o);return kA(E,g),V(E,i),n&&kA(E,e),E.set(A,s),E}function NA(e,A){return e.find(t=>t.header!=="LIST"?!1:(t.chunkData.currentIndex=0,X(t.chunkData,4)===A))}function it(e){let A=0;for(;e;){let t=e[e.currentIndex++];if(A=A<<7|t&127,t>>7!==1)break}return A}var at={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"};var gt=class e extends pe{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(){$A("%cInterpreting MIDI events...",a.info);let A=!1,t=0;this.midiPorts=[],this.midiPortChannelOffsets=[];let n=[],s=!1;typeof this.RMIDInfo.ICOP<"u"&&(s=!0);let o=!1;typeof this.RMIDInfo.INAM<"u"&&(o=!0);let i=null,g=null;for(let B=0;B<this.tracks.length;B++){let Q=this.tracks[B],c=new Set;this.midiPorts.push(-1);let p=!1;for(let f of Q){if(f.messageStatusByte>=128&&f.messageStatusByte<240){p=!0;for(let F=0;F<f.messageData.length;F++)f.messageData[F]=Math.min(127,f.messageData[F]);switch(f.ticks>this.lastVoiceEventTick&&(this.lastVoiceEventTick=f.ticks),f.messageStatusByte&240){case R.controllerChange:switch(f.messageData[0]){case 2:case 116:i=f.ticks;break;case 4:case 117:g===null?g=f.ticks:g=0;break;case 0:this.isDLSRMIDI&&f.messageData[1]!==0&&f.messageData[1]!==127&&(m("%cDLS RMIDI with offset 1 detected!",a.recognized),this.bankOffset=1)}break;case R.noteOn:c.add(f.messageStatusByte&15);let F=f.messageData[0];this.keyRange.min=Math.min(this.keyRange.min,F),this.keyRange.max=Math.max(this.keyRange.max,F);break}}f.messageData.currentIndex=0;let y=X(f.messageData,f.messageData.length);switch(f.messageData.currentIndex=0,f.messageStatusByte){case R.setTempo:f.messageData.currentIndex=0,this.tempoChanges.push({ticks:f.ticks,tempo:6e7/Ae(f.messageData,3)}),f.messageData.currentIndex=0;break;case R.marker:switch(y.trim().toLowerCase()){default:break;case"start":case"loopstart":i=f.ticks;break;case"loopend":g=f.ticks}f.messageData.currentIndex=0;break;case R.midiPort:let L=f.messageData[0];this.midiPorts[B]=L,this.midiPortChannelOffsets[L]===void 0&&(this.midiPortChannelOffsets[L]=t,t+=16);break;case R.copyright:s||(f.messageData.currentIndex=0,n.push(X(f.messageData,f.messageData.length,void 0,!1)),f.messageData.currentIndex=0);break;case R.lyric:if(y.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,m("%cKaraoke MIDI detected!",a.recognized)),this.isKaraokeFile)f.messageStatusByte=R.text;else{this.lyrics.push(f.messageData),this.lyricsTicks.push(f.ticks);break}case R.text:let T=y.trim();T.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,m("%cKaraoke MIDI detected!",a.recognized)):this.isKaraokeFile&&(T.startsWith("@T")||T.startsWith("@A")?A?n.push(T.substring(2).trim()):(this.midiName=T.substring(2).trim(),A=!0,o=!0,this.rawMidiName=rt(this.midiName)):T[0]!=="@"&&(this.lyrics.push(Ln(f.messageData)),this.lyricsTicks.push(f.ticks)));break}}if(this.usedChannelsOnTrack.push(c),!p){let f=Q.find(y=>y.messageStatusByte===R.trackName);if(f){f.messageData.currentIndex=0;let y=X(f.messageData,f.messageData.length);n.push(y)}}}this.tempoChanges.reverse(),m("%cCorrecting loops, ports and detecting notes...",a.info);let E=[];for(let B of this.tracks){let Q=B.find(c=>(c.messageStatusByte&240)===R.noteOn);Q&&E.push(Q.ticks)}this.firstNoteOn=Math.min(...E),m(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,a.info,a.recognized,a.info),i!==null&&g===null?(i=this.firstNoteOn,g=this.lastVoiceEventTick):(i===null&&(i=this.firstNoteOn),(g===null||g===0)&&(g=this.lastVoiceEventTick)),this.loop={start:i,end:g},m(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,a.info,a.recognized,a.info,a.recognized);let C=0;for(let B of this.midiPorts)if(B!==-1){C=B;break}if(this.midiPorts=this.midiPorts.map(B=>B===-1?C:B),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?m("%cNo additional MIDI Ports detected.",a.info):m("%cMIDI Ports detected!",a.recognized),!o)if(this.tracks.length>1){if(this.tracks[0].find(B=>B.messageStatusByte>=R.noteOn&&B.messageStatusByte<R.polyPressure)===void 0){let B=this.tracks[0].find(Q=>Q.messageStatusByte===R.trackName);B&&(this.rawMidiName=B.messageData,B.messageData.currentIndex=0,this.midiName=X(B.messageData,B.messageData.length,void 0,!1))}}else{let B=this.tracks[0].find(Q=>Q.messageStatusByte===R.trackName);B&&(this.rawMidiName=B.messageData,B.messageData.currentIndex=0,this.midiName=X(B.messageData,B.messageData.length,void 0,!1))}if(s||(this.copyright=n.map(B=>B.trim().replace(/(\r?\n)+/g,`
10
+ `)).filter(B=>B.length>0).join(`
11
+ `)||""),this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){m("%cNo name detected. Using the alt name!",a.info),this.midiName=bn(this.fileName),this.midiNameUsesFileName=!0,this.rawMidiName=new Uint8Array(this.midiName.length);for(let B=0;B<this.midiName.length;B++)this.rawMidiName[B]=this.midiName.charCodeAt(B)}else m(`%cMIDI Name detected! %c"${this.midiName}"`,a.info,a.recognized);let d=!0;for(let B of this.lyrics)if(B[0]===32||B[B.length-1]===32){d=!1;break}d&&(this.lyrics=this.lyrics.map(B=>{if(B[B.length-1]===45)return B;let Q=new Uint8Array(B.length+1);return Q.set(B,0),Q[B.length]=32,Q})),this.duration=Ue(this.lastVoiceEventTick,this),m("%cSuccess!",a.recognized),O()}flush(){for(let A of this.tracks)A.sort((t,n)=>t.ticks-n.ticks);this._parseInternal()}};function Ue(e,A){let t=0;for(;e>0;){let n=A.tempoChanges.find(o=>o.ticks<e),s=e-n.ticks;t+=s*60/(n.tempo*A.timeDivision),e-=s}return t}var It=class extends gt{constructor(A,t=""){super(),fA("%cParsing MIDI File...",a.info),this.fileName=t;let n=new M(A),s,o=X(n,4);if(n.currentIndex-=4,o==="RIFF"){n.currentIndex+=8;let g=X(n,4,void 0,!1);if(g!=="RMID")throw O(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${g}"`);let E=_(n);if(E.header!=="data")throw O(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${g}"`);for(s=E.chunkData;n.currentIndex<=n.length;){let C=n.currentIndex,d=_(n,!0);if(d.header==="RIFF"){let B=X(d.chunkData,4).toLowerCase();B==="sfbk"||B==="sfpk"||B==="dls "?(m("%cFound embedded soundfont!",a.recognized),this.embeddedSoundFont=n.slice(C,C+d.size).buffer):v(`Unknown RIFF chunk: "${B}"`),B==="dls "&&(this.isDLSRMIDI=!0)}else if(d.header==="LIST"&&X(d.chunkData,4)==="INFO"){for(m("%cFound RMIDI INFO chunk!",a.recognized),this.RMIDInfo={};d.chunkData.currentIndex<=d.size;){let Q=_(d.chunkData,!0);this.RMIDInfo[Q.header]=Q.chunkData}this.RMIDInfo.ICOP&&(this.copyright=X(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
12
+ `," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[at.name],this.midiName=X(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[at.bankOffset]&&(this.bankOffset=w(this.RMIDInfo[at.bankOffset],2))}}this.isDLSRMIDI&&(this.bankOffset=0),this.embeddedSoundFont===void 0&&(this.bankOffset=0)}else s=n;let i=this.readMIDIChunk(s);if(i.type!=="MThd")throw O(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${i.type}"`);if(i.size!==6)throw O(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${i.size}`);this.format=Ae(i.data,2),this.tracksAmount=Ae(i.data,2),this.timeDivision=Ae(i.data,2);for(let g=0;g<this.tracksAmount;g++){let E=[],C=this.readMIDIChunk(s);if(C.type!=="MTrk")throw O(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${C.type}"`);let d,B=0;for(this.format===2&&g>0&&(B+=this.tracks[g-1][this.tracks[g-1].length-1].ticks);C.data.currentIndex<C.size;){B+=it(C.data);let Q=C.data[C.data.currentIndex],c;if(d!==void 0&&Q<128)c=d;else{if(!d&&Q<128)throw O(),new SyntaxError(`Unexpected byte with no running byte. (${Q})`);c=C.data[C.data.currentIndex++]}let p=Un(c),f;switch(p){case-1:f=0;break;case-2:c=C.data[C.data.currentIndex++],f=it(C.data);break;case-3:f=it(C.data);break;default:f=Tn[c>>4],d=c;break}let y=new M(f);y.set(C.data.slice(C.data.currentIndex,C.data.currentIndex+f),0);let F=new ue(B,c,y);E.push(F),C.data.currentIndex+=f}this.tracks.push(E),m(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,a.info,a.value,a.info,a.value)}m("%cAll tracks parsed correctly!",a.recognized),this._parseInternal(),O(),m(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,a.info,a.recognized,a.info,a.recognized)}readMIDIChunk(A){let t={};t.type=X(A,4),t.size=Ae(A,4),t.data=new M(t.size);let n=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(n,0),A.currentIndex+=t.size,t}};function zn(e,A){fA("%cSearching for all used programs and keys...",a.info);let t=16+e.midiPortChannelOffsets.reduce((B,Q)=>Q>B?Q:B),n=[];for(let B=0;B<t;B++){let Q=B%16===xA?128:0;n.push({program:0,bank:Q,drums:B%16===xA,string:`${Q}:0`})}function s(B){let Q=A.getPreset(B.bank,B.program);B.bank=Q.bank,B.program=Q.program,B.string=B.bank+":"+B.program,o[B.string]||(m(`%cDetected a new preset: %c${B.string}`,a.info,a.recognized),o[B.string]=new Set)}let o={},i=Array(e.tracks.length).fill(0),g=e.tracks.length;function E(){let B=0,Q=1/0;return e.tracks.forEach((c,p)=>{i[p]>=c.length||c[i[p]].ticks<Q&&(B=p,Q=c[i[p]].ticks)}),B}let C=e.midiPorts.slice(),d="gs";for(;g>0;){let B=E(),Q=e.tracks[B];if(i[B]>=Q.length){g--;continue}let c=Q[i[B]];if(i[B]++,c.messageStatusByte===R.midiPort){C[B]=c.messageData[0];continue}let p=c.messageStatusByte&240;if(p!==R.noteOn&&p!==R.controllerChange&&p!==R.programChange&&p!==R.systemExclusive)continue;let f=(c.messageStatusByte&15)+e.midiPortChannelOffsets[C[B]]||0,y=n[f];switch(p){case R.programChange:y.program=c.messageData[0],s(y);break;case R.controllerChange:if(c.messageData[0]!==D.bankSelect||d==="gs"&&y.drums)continue;let F=c.messageData[1],L=Math.max(0,F-e.bankOffset);if(d==="xg"){let b=F===120||F===126||F===127;b!==y.drums?(y.drums=b,y.bank=y.drums?128:L,s(y)):y.bank=y.drums?128:L;continue}n[f].bank=L;break;case R.noteOn:if(c.messageData[1]===0)continue;s(y),o[y.string].add(`${c.messageData[0]}-${c.messageData[1]}`);break;case R.systemExclusive:if(c.messageData[0]!==65||c.messageData[2]!==66||c.messageData[3]!==18||c.messageData[4]!==64||(c.messageData[5]&16)===0||c.messageData[6]!==21){c.messageData[0]===67&&c.messageData[2]===76&&c.messageData[5]===126&&c.messageData[6]===0&&(d="xg");continue}let T=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][c.messageData[5]&15]+e.midiPortChannelOffsets[C[B]],J=!!(c.messageData[7]>0&&c.messageData[5]>>4);y=n[T],y.drums=J,y.bank=J?128:0,s(y);break}}for(let B of Object.keys(o))o[B].size===0&&(m(`%cDetected change but no keys for %c${B}`,a.info,a.value),delete o[B]);return O(),o}function jn(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 $n(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)m("%cEmbedded soundfont detected! Using it.",a.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),fA("%cPreloading samples...",a.info);let t=zn(this.midiData,this.synth.soundfontManager);for(let[n,s]of Object.entries(t)){let o=parseInt(n.split(":")[0]),i=parseInt(n.split(":")[1]),g=this.synth.getPreset(o,i);m(`%cPreloading used samples on %c${g.presetName}%c...`,a.info,a.recognized,a.info);for(let E of s){let C=E.split("-");g.preloadSpecific(parseInt(C[0]),parseInt(C[1]))}}O()}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=Ue(this.midiData.firstNoteOn,this.midiData),m(`%cTotal song time: ${Jt(Math.ceil(this.duration)).time}`,a.recognized),this.post(DA.songChange,[new ot(this.midiData),this.songIndex,A]),this.duration<=1&&(v(`%cVery short song: (${Jt(Math.round(this.duration)).time}). Disabling loop!`,a.warn),this.loop=!1),A)this.play(!0);else{let t=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(t),this.pause()}}function As(e,A=!0){this.songs=e.reduce((t,n)=>{if(n.duration)return t.push(n),t;try{t.push(new It(n.binary,n.altName||""))}catch(s){return this.post(DA.midiError,s.message),t}return t},[]),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.loadNewSequence(this.songs[this.songIndex],A))}function es(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadNewSequence(this.songs[this.songIndex])}function ts(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadNewSequence(this.songs[this.songIndex])}var Se=me.slice(0,128);function ns(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),s=[];for(let g=0;g<t;g++)s.push({program:-1,bank:0,actualBank:0});let o=g=>g===D.dataDecrement||g===D.dataIncrement||g===D.dataEntryMsb||g===D.dataDecrement||g===D.lsbForControl6DataEntry||g===D.RPNLsb||g===D.RPNMsb||g===D.NRPNLsb||g===D.NRPNMsb||g===D.bankSelect||g===D.lsbForControl0BankSelect||g===D.resetAllControllers,i=[];for(let g=0;g<t;g++)i.push(Array.from(Se));for(;;){let g=this._findFirstEventIndex(),E=this.tracks[g][this.eventIndex[g]];if(A!==void 0){if(E.ticks>=A)break}else if(this.playedTime>=e)break;let C=Le(E.messageStatusByte),d=C.channel+(this.midiPortChannelOffsets[this.midiPorts[g]]||0);switch(C.status){case R.noteOn:i[d]===void 0&&(i[d]=Array.from(Se)),i[d][D.portamentoControl]=E.messageData[0];break;case R.noteOff:break;case R.pitchBend:n[d]=E.messageData[1]<<7|E.messageData[0];break;case R.programChange:let Q=s[d];Q.program=E.messageData[0],Q.actualBank=Q.bank;break;case R.controllerChange:let c=E.messageData[0];if(o(c)){let p=E.messageData[1];if(c===D.bankSelect){s[d].bank=p;break}else c===D.resetAllControllers&&(i[d]=Array.from(Se));this.sendMIDIMessages?this.sendMIDICC(d,c,p):this.synth.controllerChange(d,c,p)}else i[d]===void 0&&(i[d]=Array.from(Se)),i[d][c]=E.messageData[1];break;default:this._processEvent(E,g);break}this.eventIndex[g]++,g=this._findFirstEventIndex();let B=this.tracks[g][this.eventIndex[g]];if(B===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(B.ticks-E.ticks)}if(this.sendMIDIMessages){for(let g=0;g<t;g++)if(n[g]!==void 0&&this.sendMIDIPitchWheel(g,n[g]>>7,n[g]&127),i[g]!==void 0&&i[g].forEach((E,C)=>{E!==Se[C]&&!o(C)&&this.sendMIDICC(g,C,E)}),s[g].program>=0&&s[g].actualBank>=0){let E=s[g].actualBank;this.sendMIDICC(g,D.bankSelect,E),this.sendMIDIProgramChange(g,s[g].program)}}else for(let g=0;g<t;g++)if(n[g]!==void 0&&this.synth.pitchWheel(g,n[g]>>7,n[g]&127),i[g]!==void 0&&i[g].forEach((E,C)=>{E!==Se[C]&&!o(C)&&this.synth.controllerChange(g,C,E)}),s[g].program>=0&&s[g].actualBank>=0){let E=s[g].actualBank;this.synth.controllerChange(g,D.bankSelect,E),this.synth.programChange(g,s[g].program)}return!0}function ss(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 os(e){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(DA.timeChange,currentTime-Ue(e,this.midiData));let A=this._playTo(0,e);this._recalculateStartTime(this.playedTime),A&&this.play()}function rs(e){this.absoluteStartTime=currentTime-e/this._playbackRate}function is(e,A){switch(e){default:break;case UA.loadNewSongList:this.loadNewSongList(A[0],A[1]);break;case UA.pause:this.pause();break;case UA.play:this.play(A);break;case UA.stop:this.stop();break;case UA.setTime:this.currentTime=A;break;case UA.changeMIDIMessageSending:this.sendMIDIMessages=A;break;case UA.setPlaybackRate:this.playbackRate=A;break;case UA.setLoop:let[t,n]=A;this.loop=t,n===LA?this.loopCount=1/0:this.loopCount=n;break;case UA.changeSong:A?this.nextSong():this.previousSong();break;case UA.getMIDI:this.post(DA.getMIDI,this.midiData);break;case UA.setSkipToFirstNote:this._skipToFirstNoteOn=A;break;case UA.setPreservePlaybackState:this.preservePlaybackState=A}}function as(e,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:RA.sequencerSpecific,messageData:{messageType:e,messageData:A}})}function gs(e){this.post(DA.midiEvent,e)}function Is(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.controllerChange|e,A,t])}function Es(e,A){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.programChange|e,A])}function Cs(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.pitchBend|e,t,A])}function hs(){if(this.sendMIDIMessages){this.sendMIDIMessage([R.reset]);for(let e=0;e<nt;e++)this.sendMIDIMessage([R.controllerChange|e,D.allSoundOff,0]),this.sendMIDIMessage([R.controllerChange|e,D.resetAllControllers,0])}}var hA=class{constructor(A){this.synth=A,this.ignoreEvents=!1,this.isActive=!1,this.sendMIDIMessages=!1,this.loopCount=1/0,this.eventIndex=[],this.songIndex=0,this.playedTime=0,this.pausedTime=void 0,this.absoluteStartTime=currentTime,this._playbackRate=1,this.playingNotes=[],this.loop=!0,this.midiData=void 0,this.midiPorts=[],this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this._skipToFirstNoteOn=!0,this.preservePlaybackState=!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(DA.timeChange,currentTime-A),this.midiData.duration===0){v("No duration!"),this.post(DA.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){v("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this.post(DA.pause,A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,D.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<nt;A++)this.sendMIDICC(A,D.allNotesOff,0)}}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}};hA.prototype.sendMIDIMessage=gs;hA.prototype.sendMIDIReset=hs;hA.prototype.sendMIDICC=Is;hA.prototype.sendMIDIProgramChange=Es;hA.prototype.sendMIDIPitchWheel=Cs;hA.prototype.assignMIDIPort=jn;hA.prototype.post=as;hA.prototype.processMessage=is;hA.prototype._processEvent=Vn;hA.prototype._addNewMidiPort=Zn;hA.prototype.processTick=Wn;hA.prototype._findFirstEventIndex=Xn;hA.prototype.loadNewSequence=$n;hA.prototype.loadNewSongList=As;hA.prototype.nextSong=es;hA.prototype.previousSong=ts;hA.prototype.play=ss;hA.prototype._playTo=ns;hA.prototype.setTimeTicks=os;hA.prototype._recalculateStartTime=rs;function Br(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 Bs(e){let A=[];for(let n of this.workletProcessorChannels)for(let s of n.voices)if(!s.finished){let o=Br(n,s);A.push({channel:n,voice:s,priority:o})}A.sort((n,s)=>n.priority-s.priority);let t=A.slice(0,e);for(let{channel:n,voice:s}of t){let o=n.voices.indexOf(s);o>-1&&n.voices.splice(o,1)}}var zA=zA!==void 0?zA:{},cs=!1,ls;zA.isInitialized=new Promise(e=>ls=e);var cr=function(e){var A,t,n,s,o,i,g,E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",C="",d=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=E.indexOf(e.charAt(d++)),o=E.indexOf(e.charAt(d++)),i=E.indexOf(e.charAt(d++)),g=E.indexOf(e.charAt(d++)),A=s<<2|o>>4,t=(15&o)<<4|i>>2,n=(3&i)<<6|g,C+=String.fromCharCode(A),i!==64&&(C+=String.fromCharCode(t)),g!==64&&(C+=String.fromCharCode(n));while(d<e.length);return C};(function(){var e,A,t,n,s,o,i,g,E,C,d,B,Q,c,p,f,y,F,L,T,J,b,I=I!==void 0?I:{};I.wasmBinary=Uint8Array.from(cr("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(h){return h.charCodeAt(0)});var I=I!==void 0?I:{},j={};for(e in I)I.hasOwnProperty(e)&&(j[e]=I[e]);I.arguments=[],I.thisProgram="./this.program",I.quit=function(h,l){throw l},I.preRun=[],I.postRun=[];var P=!1,iA=!1,tA=!1,CA=!1;P=typeof window=="object",iA=typeof importScripts=="function",tA=typeof process=="object"&&typeof Nn=="function"&&!P&&!iA,CA=!P&&!tA&&!iA;var BA="";function lA(h){return I.locateFile?I.locateFile(h,BA):BA+h}tA?(BA=__dirname+"/",I.read=function(l,u){var S;return A||(A=void 0),t||(t=void 0),l=t.normalize(l),S=A.readFileSync(l),u?S:S.toString()},I.readBinary=function(l){var u=I.read(l,!0);return u.buffer||(u=new Uint8Array(u)),ne(u.buffer),u},process.argv.length>1&&(I.thisProgram=process.argv[1].replace(/\\/g,"/")),I.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(h){if(!(h instanceof xe))throw h}),process.on("unhandledRejection",function(h,l){process.exit(1)}),I.quit=function(h){process.exit(h)},I.inspect=function(){return"[Emscripten Module object]"}):CA?(typeof read<"u"&&(I.read=function(l){return read(l)}),I.readBinary=function(l){var u;return typeof readbuffer=="function"?new Uint8Array(readbuffer(l)):(ne(typeof(u=read(l,"binary"))=="object"),u)},typeof scriptArgs<"u"?I.arguments=scriptArgs:typeof arguments<"u"&&(I.arguments=arguments),typeof quit=="function"&&(I.quit=function(h){quit(h)})):(P||iA)&&(P?document.currentScript&&(BA=document.currentScript.src):BA=self.location.href,BA=BA.indexOf("blob:")!==0?BA.split("/").slice(0,-1).join("/")+"/":"",I.read=function(l){var u=new XMLHttpRequest;return u.open("GET",l,!1),u.send(null),u.responseText},iA&&(I.readBinary=function(l){var u=new XMLHttpRequest;return u.open("GET",l,!1),u.responseType="arraybuffer",u.send(null),new Uint8Array(u.response)}),I.readAsync=function(l,u,S){var N=new XMLHttpRequest;N.open("GET",l,!0),N.responseType="arraybuffer",N.onload=function(){if(N.status==200||N.status==0&&N.response){u(N.response);return}S()},N.onerror=S,N.send(null)},I.setWindowTitle=function(h){document.title=h});var $=I.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),uA=I.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||$);for(e in j)j.hasOwnProperty(e)&&(I[e]=j[e]);function vA(h){var l=c;return c=c+h+15&-16,l}function hn(h){var l=E[T>>2],u=l+h+15&-16;return E[T>>2]=u,u>=pA&&!yn()?(E[T>>2]=l,0):l}function Bn(h,l){return l||(l=16),h=Math.ceil(h/l)*l}function $o(h){switch(h){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(h[h.length-1]==="*")return 4;if(h[0]!=="i")return 0;var l=parseInt(h.substr(1));return ne(l%8==0),l/8}}function Re(h){Re.shown||(Re.shown={}),Re.shown[h]||(Re.shown[h]=1,uA(h))}j=void 0;var Ar={"f64-rem":function(h,l){return h%l},debugger:function(){}},wt=[];function br(h,l){for(var u=0,S=u;S<u+0;S++)if(!wt[S])return wt[S]=h,1+S;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function Lr(h){wt[h-1]=null}var Ft={};function Ur(h,l){if(h){ne(l),Ft[l]||(Ft[l]={});var u=Ft[l];return u[h]||(l.length===1?u[h]=function(){return Rt(l,h)}:l.length===2?u[h]=function(N){return Rt(l,h,[N])}:u[h]=function(){return Rt(l,h,Array.prototype.slice.call(arguments))}),u[h]}}function Tr(h,l,u){return u?+(h>>>0)+4294967296*+(l>>>0):+(h>>>0)+4294967296*+(0|l)}function Rt(h,l,u){return u&&u.length?I["dynCall_"+h].apply(null,[l].concat(u)):I["dynCall_"+h].call(null,l)}var Pe=0,cn=0;function ne(h,l){h||jA("Assertion failed: "+l)}function ln(h){var l=I["_"+h];return ne(l,"Cannot call unknown function "+h+", make sure it is exported"),l}var Qn={stackSave:function(){Tt()},stackRestore:function(){Ut()},arrayToC:function(h){var l,u,S=_e(h.length);return l=h,u=S,s.set(l,u),S},stringToC:function(h){var l=0;if(h!=null&&h!==0){var u=(h.length<<2)+1;l=_e(u),fn(h,l,u)}return l}},er={string:Qn.stringToC,array:Qn.arrayToC};function un(h,l,u,S,N){var W=ln(h),z=[],H=0;if(S)for(var yA=0;yA<S.length;yA++){var aA=er[u[yA]];aA?(H===0&&(H=Tt()),z[yA]=aA(S[yA])):z[yA]=S[yA]}var gA,sA=W.apply(null,z);return sA=(gA=sA,l==="string"?Oe(gA):l==="boolean"?!!gA:gA),H!==0&&Ut(H),sA}function tr(h,l,u,S){switch((u=u||"i8").charAt(u.length-1)==="*"&&(u="i32"),u){case"i1":case"i8":s[h>>0]=l;break;case"i16":i[h>>1]=l;break;case"i32":E[h>>2]=l;break;case"i64":tempI64=[l>>>0,+ir(tempDouble=l)>=1?tempDouble>0?(0|gr(+Fn(tempDouble/4294967296),4294967295))>>>0:~~+ar((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],E[h>>2]=tempI64[0],E[h+4>>2]=tempI64[1];break;case"float":d[h>>2]=l;break;case"double":B[h>>3]=l;break;default:jA("invalid type for setValue: "+u)}}function vr(h,l,u){switch((l=l||"i8").charAt(l.length-1)==="*"&&(l="i32"),l){case"i1":case"i8":return s[h>>0];case"i16":return i[h>>1];case"i32":case"i64":return E[h>>2];case"float":return d[h>>2];case"double":return B[h>>3];default:jA("invalid type for getValue: "+l)}return null}function Hr(h,l,u,S){typeof h=="number"?(W=!0,z=h):(W=!1,z=h.length);var N=typeof l=="string"?l:null;if(H=u==4?S:[typeof Xe=="function"?Xe:vA,_e,vA,hn][u===void 0?2:u](Math.max(z,N?1:l.length)),W){for(S=H,ne((3&H)==0),yA=H+(-4&z);S<yA;S+=4)E[S>>2]=0;for(yA=H+z;S<yA;)s[S++>>0]=0;return H}if(N==="i8")return h.subarray||h.slice?o.set(h,H):o.set(new Uint8Array(h),H),H;for(var W,z,H,yA,aA,gA,sA,Z=0;Z<z;){var MA=h[Z];if((aA=N||l[Z])===0){Z++;continue}aA=="i64"&&(aA="i32"),tr(H+Z,MA,aA),sA!==aA&&(gA=$o(aA),sA=aA),Z+=gA}return H}function Yr(h){return p?bt?Xe(h):hn(h):vA(h)}function Oe(h,l){if(l===0||!h)return"";for(var u,S,N,W=0,z=0;W|=S=o[h+z>>0],(S!=0||l)&&(z++,!l||z!=l););l||(l=z);var H="";if(W<128){for(;l>0;)N=String.fromCharCode.apply(String,o.subarray(h,h+Math.min(l,1024))),H=H?H+N:N,h+=1024,l-=1024;return H}return u=h,function(aA,gA){for(var sA=gA;aA[sA];)++sA;if(sA-gA>16&&aA.subarray&&dn)return dn.decode(aA.subarray(gA,sA));for(var Z,MA,HA,YA,JA,Ee,qA="";;){if(!(Z=aA[gA++]))return qA;if(!(128&Z)){qA+=String.fromCharCode(Z);continue}if(MA=63&aA[gA++],(224&Z)==192){qA+=String.fromCharCode((31&Z)<<6|MA);continue}if(HA=63&aA[gA++],(240&Z)==224?Z=(15&Z)<<12|MA<<6|HA:(YA=63&aA[gA++],(248&Z)==240?Z=(7&Z)<<18|MA<<12|HA<<6|YA:(JA=63&aA[gA++],Z=(252&Z)==248?(3&Z)<<24|MA<<18|HA<<12|YA<<6|JA:(1&Z)<<30|MA<<24|HA<<18|YA<<12|JA<<6|(Ee=63&aA[gA++]))),Z<65536)qA+=String.fromCharCode(Z);else{var Ne=Z-65536;qA+=String.fromCharCode(55296|Ne>>10,56320|1023&Ne)}}}(o,u)}function Jr(h){for(var l="";;){var u=s[h++>>0];if(!u)return l;l+=String.fromCharCode(u)}}function qr(h,l){return function(S,N,W){for(var z=0;z<S.length;++z)s[N++>>0]=S.charCodeAt(z);W||(s[N>>0]=0)}(h,l,!1)}var dn=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Ve(h,l,u,S){if(!(S>0))return 0;for(var N=u,W=u+S-1,z=0;z<h.length;++z){var H=h.charCodeAt(z);if(H>=55296&&H<=57343&&(H=65536+((1023&H)<<10)|1023&h.charCodeAt(++z)),H<=127){if(u>=W)break;l[u++]=H}else if(H<=2047){if(u+1>=W)break;l[u++]=192|H>>6,l[u++]=128|63&H}else if(H<=65535){if(u+2>=W)break;l[u++]=224|H>>12,l[u++]=128|H>>6&63,l[u++]=128|63&H}else if(H<=2097151){if(u+3>=W)break;l[u++]=240|H>>18,l[u++]=128|H>>12&63,l[u++]=128|H>>6&63,l[u++]=128|63&H}else if(H<=67108863){if(u+4>=W)break;l[u++]=248|H>>24,l[u++]=128|H>>18&63,l[u++]=128|H>>12&63,l[u++]=128|H>>6&63,l[u++]=128|63&H}else{if(u+5>=W)break;l[u++]=252|H>>30,l[u++]=128|H>>24&63,l[u++]=128|H>>18&63,l[u++]=128|H>>12&63,l[u++]=128|H>>6&63,l[u++]=128|63&H}}return l[u]=0,u-N}function fn(h,l,u){return Ve(h,o,l,u)}function Ze(h){for(var l=0,u=0;u<h.length;++u){var S=h.charCodeAt(u);S>=55296&&S<=57343&&(S=65536+((1023&S)<<10)|1023&h.charCodeAt(++u)),S<=127?++l:S<=2047?l+=2:S<=65535?l+=3:S<=2097151?l+=4:S<=67108863?l+=5:l+=6}return l}var mn=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function Kr(h){for(var l=h,u=l>>1;i[u];)++u;if((l=u<<1)-h>32&&mn)return mn.decode(o.subarray(h,l));for(var S=0,N="";;){var W=i[h+2*S>>1];if(W==0)return N;++S,N+=String.fromCharCode(W)}}function Pr(h,l,u){if(u===void 0&&(u=2147483647),u<2)return 0;for(var S=l,N=(u-=2)<2*h.length?u/2:h.length,W=0;W<N;++W){var z=h.charCodeAt(W);i[l>>1]=z,l+=2}return i[l>>1]=0,l-S}function Or(h){return 2*h.length}function Vr(h){for(var l=0,u="";;){var S=E[h+4*l>>2];if(S==0)return u;if(++l,S>=65536){var N=S-65536;u+=String.fromCharCode(55296|N>>10,56320|1023&N)}else u+=String.fromCharCode(S)}}function Zr(h,l,u){if(u===void 0&&(u=2147483647),u<4)return 0;for(var S=l,N=S+u-4,W=0;W<h.length;++W){var z=h.charCodeAt(W);if(z>=55296&&z<=57343&&(z=65536+((1023&z)<<10)|1023&h.charCodeAt(++W)),E[l>>2]=z,(l+=4)+4>N)break}return E[l>>2]=0,l-S}function Wr(h){for(var l=0,u=0;u<h.length;++u){var S=h.charCodeAt(u);S>=55296&&S<=57343&&++u,l+=4}return l}function Xr(h){var l=Ze(h)+1,u=Xe(l);return u&&Ve(h,s,u,l),u}function _r(h){var l=Ze(h)+1,u=_e(l);return Ve(h,s,u,l),u}function zr(h){return h}function jr(){var h,l=function(){var S=Error();if(!S.stack){try{throw Error(0)}catch(N){S=N}if(!S.stack)return"(no stack trace available)"}return S.stack.toString()}();return I.extraStackTrace&&(l+=`
14
+ `+I.extraStackTrace()),(h=l).replace(/__Z[\w\d_]+/g,function(u){var S,N=S=u;return u===N?u:u+" ["+N+"]"})}function Gt(h,l){return h%l>0&&(h+=l-h%l),h}function pn(h){I.buffer=n=h}function Mt(){I.HEAP8=s=new Int8Array(n),I.HEAP16=i=new Int16Array(n),I.HEAP32=E=new Int32Array(n),I.HEAPU8=o=new Uint8Array(n),I.HEAPU16=g=new Uint16Array(n),I.HEAPU32=C=new Uint32Array(n),I.HEAPF32=d=new Float32Array(n),I.HEAPF64=B=new Float64Array(n)}function yn(){var h=I.usingWasm?65536:16777216,l=2147483648-h;if(E[T>>2]>l)return!1;var u=pA;for(pA=Math.max(pA,16777216);pA<E[T>>2];)pA=pA<=536870912?Gt(2*pA,h):Math.min(Gt((3*pA+2147483648)/4,h),l);var S=I.reallocBuffer(pA);return S&&S.byteLength==pA?(pn(S),Mt(),!0):(pA=u,!1)}Q=c=f=y=F=L=T=0,p=!1,I.reallocBuffer||(I.reallocBuffer=function(h){try{if(ArrayBuffer.transfer)l=ArrayBuffer.transfer(n,h);else{var l,u=s;l=new ArrayBuffer(h),new Int8Array(l).set(u)}}catch{return!1}return!!Ir(l)&&l});try{(J=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{J=function(l){return l.byteLength}}var xt=I.TOTAL_STACK||5242880,pA=I.TOTAL_MEMORY||16777216;function nr(){return pA}function Ge(h){for(;h.length>0;){var l=h.shift();if(typeof l=="function"){l();continue}var u=l.func;typeof u=="number"?l.arg===void 0?I.dynCall_v(u):I.dynCall_vi(u,l.arg):u(l.arg===void 0?null:l.arg)}}pA<xt&&uA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+pA+"! (TOTAL_STACK="+xt+")"),I.buffer?n=I.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(I.wasmMemory=new WebAssembly.Memory({initial:pA/65536}),n=I.wasmMemory.buffer):n=new ArrayBuffer(pA),I.buffer=n),Mt();var Sn=[],Nt=[],Dn=[],kn=[],wn=[],bt=!1,sr=!1;function or(h){Sn.unshift(h)}function $r(h){Nt.unshift(h)}function Ai(h){Dn.unshift(h)}function ei(h){kn.unshift(h)}function rr(h){wn.unshift(h)}function ti(h,l,u){var S,N;Re("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),u&&(S=s[N=l+Ze(h)]),fn(h,l,1/0),u&&(s[N]=S)}function ni(h,l,u){return h>=0?h:l<=32?2*Math.abs(1<<l-1)+h:Math.pow(2,l)+h}function si(h,l,u){if(h<=0)return h;var S=l<=32?Math.abs(1<<l-1):Math.pow(2,l-1);return h>=S&&(l<=32||h>S)&&(h=-2*S+h),h}var ir=Math.abs,ar=Math.ceil,Fn=Math.floor,gr=Math.min,Ie=0,Lt=null,Me=null;function oi(h){return h}I.preloadedImages={},I.preloadedAudios={};var Rn="data:application/octet-stream;base64,";function We(h){return String.prototype.startsWith?h.startsWith(Rn):h.indexOf(Rn)===0}(function(){var l="main.wast",u="main.wasm",S="main.temp.asm.js";We(l)||(l=lA(l)),We(u)||(u=lA(u)),We(S)||(S=lA(S));var N={global:null,env:null,asm2wasm:Ar,parent:I},W=null;function z(sA){return sA}function H(){try{if(I.wasmBinary)return new Uint8Array(I.wasmBinary);if(I.readBinary)return I.readBinary(u);throw"both async and sync fetching of the wasm failed"}catch(sA){jA(sA)}}I.asmPreload=I.asm;var yA=I.reallocBuffer,aA=function(sA){sA=Gt(sA,I.usingWasm?65536:16777216);var Z=I.buffer.byteLength;if(I.usingWasm)try{var MA=I.wasmMemory.grow((sA-Z)/65536);return MA!==-1?I.buffer=I.wasmMemory.buffer:null}catch{return null}};I.reallocBuffer=function(sA){return gA==="asmjs"?yA(sA):aA(sA)};var gA="";I.asm=function(sA,Z,MA){var HA;if(!(Z=HA=Z).table){var YA,JA=I.wasmTableSize;JA===void 0&&(JA=1024);var Ee=I.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?Ee!==void 0?Z.table=new WebAssembly.Table({initial:JA,maximum:Ee,element:"anyfunc"}):Z.table=new WebAssembly.Table({initial:JA,element:"anyfunc"}):Z.table=Array(JA),I.wasmTable=Z.table}return Z.memoryBase||(Z.memoryBase=I.STATIC_BASE),Z.tableBase||(Z.tableBase=0),YA=function(Ne,le,Ht){if(typeof WebAssembly!="object")return uA("no native wasm support detected"),!1;if(!(I.wasmMemory instanceof WebAssembly.Memory))return uA("no native wasm Memory in use"),!1;function ze(XA,_A){if((W=XA.exports).memory){var be,Yt,xn;be=W.memory,Yt=I.buffer,be.byteLength<Yt.byteLength&&uA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),xn=new Int8Array(Yt),new Int8Array(be).set(xn),pn(be),Mt()}I.asm=W,I.usingWasm=!0,function(Ci){if(Ie--,I.monitorRunDependencies&&I.monitorRunDependencies(Ie),Ie==0&&(Lt!==null&&(clearInterval(Lt),Lt=null),Me)){var Er=Me;Me=null,Er()}}("wasm-instantiate")}if(le.memory=I.wasmMemory,N.global={NaN:NaN,Infinity:1/0},N["global.Math"]=Math,N.env=le,Ie++,I.monitorRunDependencies&&I.monitorRunDependencies(Ie),I.instantiateWasm)try{return I.instantiateWasm(N,ze)}catch(XA){return uA("Module.instantiateWasm callback failed with error: "+XA),!1}function Qe(XA){ze(XA.instance,XA.module)}function Mn(XA){(!I.wasmBinary&&(P||iA)&&typeof fetch=="function"?fetch(u,{credentials:"same-origin"}).then(function(_A){if(!_A.ok)throw"failed to load wasm binary file at '"+u+"'";return _A.arrayBuffer()}).catch(function(){return H()}):new Promise(function(_A,be){_A(H())})).then(function(_A){return WebAssembly.instantiate(_A,N)}).then(XA).catch(function(_A){uA("failed to asynchronously prepare wasm: "+_A),jA(_A)})}return I.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||We(u)||typeof fetch!="function"?Mn(Qe):WebAssembly.instantiateStreaming(fetch(u,{credentials:"same-origin"}),N).then(Qe).catch(function(XA){uA("wasm streaming compile failed: "+XA),uA("falling back to ArrayBuffer instantiation"),Mn(Qe)}),{}}(sA,Z,MA),ne(YA,"no binaryen method succeeded."),YA},I.asm})(),c=(Q=1024)+4816,Nt.push(),I.STATIC_BASE=Q,I.STATIC_BUMP=4816;var bA=c;function ri(h){s[bA]=s[h],s[bA+1]=s[h+1],s[bA+2]=s[h+2],s[bA+3]=s[h+3]}function ii(h){s[bA]=s[h],s[bA+1]=s[h+1],s[bA+2]=s[h+2],s[bA+3]=s[h+3],s[bA+4]=s[h+4],s[bA+5]=s[h+5],s[bA+6]=s[h+6],s[bA+7]=s[h+7]}function ai(h,l,u){var S=u>0?u:Ze(h)+1,N=Array(S),W=Ve(h,N,0,N.length);return l&&(N.length=W),N}function gi(h){for(var l=[],u=0;u<h.length;u++){var S=h[u];S>255&&(S&=255),l.push(String.fromCharCode(S))}return l.join("")}c+=16,T=vA(4),F=(f=y=Bn(c))+xt,L=Bn(F),E[T>>2]=L,p=!0,I.wasmTableSize=4,I.wasmMaxTableSize=4,I.asmGlobalArg={},I.asmLibraryArg={abort:jA,assert:ne,enlargeMemory:yn,getTotalMemory:nr,abortOnCannotGrowMemory:function(){jA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+pA+", (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(l,u,S){var N=Tt();try{return I.dynCall_iii(l,u,S)}catch(W){if(Ut(N),typeof W!="number"&&W!=="longjmp")throw W;I.setThrew(1,0)}},___assert_fail:function(l,u,S,N){jA("Assertion failed: "+Oe(l)+", at: "+[u?Oe(u):"unknown filename",S,N?Oe(N):"unknown function"])},___setErrNo:function(l){return I.___errno_location&&(E[I.___errno_location()>>2]=l),l},_abort:function(){I.abort()},_emscripten_memcpy_big:function(l,u,S){return o.set(o.subarray(u,u+S),l),l},_llvm_floor_f64:Fn,DYNAMICTOP_PTR:T,tempDoublePtr:bA,ABORT:Pe,STACKTOP:y,STACK_MAX:F};var Gn=I.asm(I.asmGlobalArg,I.asmLibraryArg,n);I.asm=Gn,I.___errno_location=function(){return I.asm.___errno_location.apply(null,arguments)};var Ir=I._emscripten_replace_memory=function(){return I.asm._emscripten_replace_memory.apply(null,arguments)};I._free=function(){return I.asm._free.apply(null,arguments)};var Xe=I._malloc=function(){return I.asm._malloc.apply(null,arguments)};I._memcpy=function(){return I.asm._memcpy.apply(null,arguments)},I._memset=function(){return I.asm._memset.apply(null,arguments)},I._sbrk=function(){return I.asm._sbrk.apply(null,arguments)},I._stb_vorbis_js_channels=function(){return I.asm._stb_vorbis_js_channels.apply(null,arguments)},I._stb_vorbis_js_close=function(){return I.asm._stb_vorbis_js_close.apply(null,arguments)},I._stb_vorbis_js_decode=function(){return I.asm._stb_vorbis_js_decode.apply(null,arguments)},I._stb_vorbis_js_open=function(){return I.asm._stb_vorbis_js_open.apply(null,arguments)},I._stb_vorbis_js_sample_rate=function(){return I.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},I.establishStackSpace=function(){return I.asm.establishStackSpace.apply(null,arguments)},I.getTempRet0=function(){return I.asm.getTempRet0.apply(null,arguments)},I.runPostSets=function(){return I.asm.runPostSets.apply(null,arguments)},I.setTempRet0=function(){return I.asm.setTempRet0.apply(null,arguments)},I.setThrew=function(){return I.asm.setThrew.apply(null,arguments)};var _e=I.stackAlloc=function(){return I.asm.stackAlloc.apply(null,arguments)},Ut=I.stackRestore=function(){return I.asm.stackRestore.apply(null,arguments)},Tt=I.stackSave=function(){return I.asm.stackSave.apply(null,arguments)};function xe(h){this.name="ExitStatus",this.message="Program terminated with exit("+h+")",this.status=h}function vt(h){h=h||I.arguments,!(Ie>0)&&(function(){if(I.preRun)for(typeof I.preRun=="function"&&(I.preRun=[I.preRun]);I.preRun.length;)or(I.preRun.shift());Ge(Sn)}(),!(Ie>0)&&(I.calledRun||(I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("")},1),l()},1)):l())));function l(){!I.calledRun&&(I.calledRun=!0,Pe||(bt||(bt=!0,Ge(Nt)),Ge(Dn),I.onRuntimeInitialized&&I.onRuntimeInitialized(),function(){if(I.postRun)for(typeof I.postRun=="function"&&(I.postRun=[I.postRun]);I.postRun.length;)rr(I.postRun.shift());Ge(wn)}()))}}function Ii(h,l){(!l||!I.noExitRuntime||h!==0)&&(I.noExitRuntime||(Pe=!0,cn=h,y=b,Ge(kn),sr=!0,I.onExit&&I.onExit(h)),I.quit(h,new xe(h)))}function jA(h){throw I.onAbort&&I.onAbort(h),h!==void 0?($(h),uA(h),h=JSON.stringify(h)):h="",Pe=!0,cn=1,"abort("+h+"). Build with -s ASSERTIONS=1 for more info."}if(I.dynCall_iii=function(){return I.asm.dynCall_iii.apply(null,arguments)},I.asm=Gn,I.ccall=un,I.cwrap=function(l,u,S,N){var W=(S=S||[]).every(function(z){return z==="number"});return u!=="string"&&W&&!N?ln(l):function(){return un(l,u,S,arguments,N)}},xe.prototype=Error(),xe.prototype.constructor=xe,Me=function h(){I.calledRun||vt(),I.calledRun||(Me=h)},I.run=vt,I.abort=jA,I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();I.noExitRuntime=!0,vt(),I.onRuntimeInitialized=()=>{cs=!0,ls()},zA.decode=function(h){return function(u){if(!cs)throw Error("Not initialized");var S={};function N(le){return new Int32Array(I.HEAPU8.buffer,le,1)[0]}function W(le,Ht){var ze=new ArrayBuffer(Ht*Float32Array.BYTES_PER_ELEMENT),Qe=new Float32Array(ze);return Qe.set(new Float32Array(I.HEAPU8.buffer,le,Ht)),Qe}S.open=I.cwrap("stb_vorbis_js_open","number",[]),S.close=I.cwrap("stb_vorbis_js_close","void",["number"]),S.channels=I.cwrap("stb_vorbis_js_channels","number",["number"]),S.sampleRate=I.cwrap("stb_vorbis_js_sample_rate","number",["number"]),S.decode=I.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var z,H,yA,aA,gA=S.open(),sA=(z=u,H=u.byteLength,yA=I._malloc(H),(aA=new Uint8Array(I.HEAPU8.buffer,yA,H)).set(new Uint8Array(z,0,H)),aA),Z=I._malloc(4),MA=I._malloc(4),HA=S.decode(gA,sA.byteOffset,sA.byteLength,Z,MA);if(I._free(sA.byteOffset),HA<0)throw S.close(gA),I._free(Z),Error("stbvorbis decode failed: "+HA);for(var YA=S.channels(gA),JA=Array(YA),Ee=new Int32Array(I.HEAPU32.buffer,N(Z),YA),qA=0;qA<YA;qA++)JA[qA]=W(Ee[qA],HA),I._free(Ee[qA]);var Ne=S.sampleRate(gA);return S.close(gA),I._free(N(Z)),I._free(Z),{data:JA,sampleRate:Ne,eof:!0,error:null}}(h)}})();var Zt=new Float32Array(30001);for(let e=0;e<Zt.length;e++){let A=-15e3+e;Zt[e]=Math.pow(2,A/1200)}function ZA(e){return e<=-32767?0:Zt[e- -15e3]}var Et=-2e4,Qs=16500,Wt=new Float32Array(Qs-Et+1);for(let e=0;e<Wt.length;e++){let A=Et+e;Wt[e]=440*Math.pow(2,(A-6900)/1200)}function Te(e){return e<Et||e>Qs?440*Math.pow(2,(e-6900)/1200):Wt[~~e-Et]}var _t=-1660,lr=1600,Xt=new Float32Array((lr-_t)*100+1);for(let e=0;e<Xt.length;e++){let A=(_t*100+e)/100;Xt[e]=Math.pow(10,-A/20)}function KA(e){return Xt[Math.floor((e-_t)*100)]}var us=.01,TA=100,zt=90,Qr=15e-6,PA=class e{currentSampleTime=0;sampleRate;currentAttenuationDb=TA;state=0;releaseStartDb=TA;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>=zt}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=KA(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[r.initialAttenuation],1440))/10,t.attenuationTargetGain=KA(t.attenuationTarget),t.sustainDbRelative=Math.min(TA,A.modulatedGenerators[r.sustainVolEnv]/10);let s=Math.min(TA,t.sustainDbRelative);t.attackDuration=n(A.modulatedGenerators[r.attackVolEnv]);let o=A.modulatedGenerators[r.decayVolEnv],i=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvDecay],g=s/TA;t.decayDuration=n(o+i)*g,t.releaseDuration=n(A.modulatedGenerators[r.releaseVolEnv]),t.delayEnd=n(A.modulatedGenerators[r.delayVolEnv]),t.attackEnd=t.attackDuration+t.delayEnd;let E=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvHold];if(t.holdEnd=n(A.modulatedGenerators[r.holdVolEnv]+E)+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(TA,t.sustainDbRelative)),d=C/TA;switch(t.decayDuration=n(o+i)*d,t.state){case 0:t.releaseStartDb=TA;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,TA)),t.releaseStartDb>=zt&&(A.finished=!0),t.currentReleaseGain=KA(t.releaseStartDb);let B=(TA-t.releaseStartDb)/TA;t.releaseDuration*=B}}static apply(A,t,n,s){let o=A.volumeEnvelope,i=n/10,g=s;if(A.isInRelease){let C=o.currentSampleTime-o.releaseStartTimeSamples;if(C>=o.releaseDuration){for(let B=0;B<t.length;B++)t[B]=0;A.finished=!0;return}let d=TA-o.releaseStartDb;for(let B=0;B<t.length;B++){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g;let Q=C/o.releaseDuration*d+o.releaseStartDb;o.currentReleaseGain=o.attenuation*KA(Q+i),t[B]*=o.currentReleaseGain,o.currentSampleTime++,C++}o.currentReleaseGain<=Qr&&(A.finished=!0);return}let E=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=TA,t[E]=0,o.currentSampleTime++,++E>=t.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g;let C=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(t[E]*=C*o.attenuation*KA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++E>=t.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,t[E]*=o.attenuation*KA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++E>=t.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,t[E]*=o.attenuation*KA(o.currentAttenuationDb+i),o.currentSampleTime++,++E>=t.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=zt&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*g,t[E]*=o.attenuation*KA(o.sustainDbRelative+i),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++E>=t.length)return}}};function ds(e){let A=e.messageData,t=e.channelNumber,n;if(t>=0&&(n=this.workletProcessorChannels[t],n===void 0)){v(`Trying to access channel ${t} which does not exist... ignoring!`);return}switch(e.messageType){case eA.noteOn:n.noteOn(...A);break;case eA.noteOff:n.noteOff(A);break;case eA.pitchWheel:n.pitchWheel(...A);break;case eA.ccChange:n.controllerChange(...A);break;case eA.customcCcChange:n.customControllers[A[0]]=A[1];break;case eA.killNote:n.killNote(A);break;case eA.programChange:this.programChange(t,A[0],A[1]);break;case eA.channelPressure:n.channelPressure(A);break;case eA.polyPressure:n.polyPressure(...A);break;case eA.ccReset:t===LA?this.resetAllControllers():n.resetControllers();break;case eA.systemExclusive:this.systemExclusive(A[0],A[1]);break;case eA.setChannelVibrato:if(t===LA)for(let i=0;i<this.workletProcessorChannels.length;i++)A.rate===-1?n.disableAndLockGSNRPN():n.setVibrato(A.depth,A.rate,A.delay);else A.rate===-1?n.disableAndLockGSNRPN():n.setVibrato(A.depth,A.rate,A.delay);break;case eA.stopAll:t===LA?this.stopAllChannels(A===1):n.stopAllNotes(A===1);break;case eA.killNotes:this.voiceKilling(A);break;case eA.muteChannel:n.muteChannel(A);break;case eA.addNewChannel:this.createWorkletChannel(!0);break;case eA.debugMessage:this.debugMessage();break;case eA.setMasterParameter:let s=A[0],o=A[1];switch(s){case de.masterPan:this.setMasterPan(o);break;case de.mainVolume:this.setMasterGain(o);break;case de.voicesCap:this.voiceCap=o;break;case de.interpolationType:this.interpolationType=o;break}break;case eA.setDrums:n.setDrums(A);break;case eA.transpose:t===LA?this.transposeAllChannels(A[0],A[1]):n.transposeChannel(A[0],A[1]);break;case eA.highPerformanceMode:this.highPerformanceMode=A;break;case eA.lockController:A[0]===LA?n.lockPreset=A[1]:n.lockedControllers[A[0]]=A[1];break;case eA.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case eA.soundFontManager:try{this.soundfontManager.handleMessage(A[0],A[1])}catch(i){this.post({messageType:RA.soundfontError,messageData:i})}this.clearSoundFont(!0,!1);break;case eA.keyModifierManager:this.keyModifierManager.handleMessage(A[0],A[1]);break;case eA.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case eA.setLogLevel:Jn(A[0],A[1],A[2],A[3]);break;case eA.setEffectsGain:this.reverbGain=A[0],this.chorusGain=A[1];break;case eA.destroyWorklet:this.alive=!1,this.destroyWorkletProcessor();break;default:v("Unrecognized event:",A);break}}function fs(e,A){this.enableEventSystem&&this.post({messageType:RA.eventCall,messageData:{eventName:e,eventData:A}})}function ms(){if(!this.enableEventSystem)return;let e=this.workletProcessorChannels.map(A=>{let t=(A.midiControllers[cA+q.pitchWheelRange]>>7)+(A.midiControllers[cA+q.pitchWheelRange]&127)/127;return{voicesAmount:A.voices.length,pitchBend:A.midiControllers[cA+q.pitchWheel],pitchBendRangeSemitones:t,isMuted:A.isMuted,isDrum:A.drumChannel}});this.post({messageType:RA.channelProperties,messageData:e})}function ur(e,A,t){let n=e,s=A<<7|t;return e===127&&A===127&&t===127?{midiNote:-1,centTuning:null}:{midiNote:n,centTuning:s*.0061}}var jt={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};function ps(e,A=0){let t=e[0];if(!(this.deviceID!==LA&&e[1]!==127&&this.deviceID!==e[1]))switch(t){default:v(`%cUnrecognized SysEx: %c${wA(e)}`,a.warn,a.unrecognized);break;case 126:case 127:switch(e[2]){case 4:let s;switch(e[3]){case 1:let o=e[5]<<7|e[4];this.setMIDIVolume(o/16384),m(`%cMaster Volume. Volume: %c${o}`,a.info,a.value);break;case 2:let g=((e[5]<<7|e[4])-8192)/8192;this.setMasterPan(g),m(`%cMaster Pan. Pan: %c${g}`,a.info,a.value);break;case 3:let E=(e[5]<<7|e[6])-8192;s=Math.floor(E/81.92),this.setMasterTuning(s),m(`%cMaster Fine Tuning. Cents: %c${s}`,a.info,a.value);break;case 4:s=(e[5]-64)*100,this.setMasterTuning(s),m(`%cMaster Coarse Tuning. Cents: %c${s}`,a.info,a.value);break;default:v(`%cUnrecognized MIDI Device Control Real-time message: %c${wA(e)}`,a.warn,a.unrecognized)}break;case 9:e[3]===1?(m("%cGM system on",a.info),this.system="gm"):e[3]===3?(m("%cGM2 system on",a.info),this.system="gm2"):(m("%cGM system off, defaulting to GS",a.info),this.system="gs");break;case 8:switch(e[3]){case 2:case 7:let o=4;e[3]===7&&o++;let i=e[o++],g=e[o++];for(let C=0;C<g;C++)this.tunings[i][e[o++]]=ur(e[o++],e[o++],e[o++]);m(`%cSingle Note Tuning. Program: %c${i}%c Keys affected: %c${g}`,a.info,a.recognized,a.info,a.recognized);break;case 9:case 8:let E=new Int8Array(12);if(e[3]===8)for(let C=0;C<12;C++)E[C]=e[7+C]-64;else for(let C=0;C<24;C+=2){let d=(e[7+C]<<7|e[8+C])-8192;E[C/2]=Math.floor(d/81.92)}(e[4]&1)===1&&this.workletProcessorChannels[14+A].setOctaveTuning(E),(e[4]>>1&1)===1&&this.workletProcessorChannels[15+A].setOctaveTuning(E);for(let C=0;C<7;C++)(e[5]>>C&1)===1&&this.workletProcessorChannels[7+C+A].setOctaveTuning(E);for(let C=0;C<7;C++)(e[6]>>C&1)===1&&this.workletProcessorChannels[C+A].setOctaveTuning(E);m(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${E.join(" ")}`,a.info,a.value);break;default:v(`%cUnrecognized MIDI Tuning standard message: %c${wA(e)}`,a.warn,a.unrecognized);break}break;default:v(`%cUnrecognized MIDI Realtime/non realtime message: %c${wA(e)}`,a.warn,a.unrecognized)}break;case 65:let n=function(){v(`%cUnrecognized Roland %cGS %cSysEx: %c${wA(e)}`,a.warn,a.recognized,a.warn,a.unrecognized)};if(e[2]===66&&e[3]===18){let s=e[7];if(e[6]===127){s===0?(m("%cGS Reset received!",a.info),this.resetAllControllers(!1),this.system="gs"):s===127&&(m("%cGS system off, switching to GM2",a.info),this.resetAllControllers(!1),this.system="gm2");return}else if(e[4]===64){if((e[5]&16)>0){let o=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A,i=this.workletProcessorChannels[o];switch(e[6]){default:n();break;case 21:let g=s>0&&e[5]>>4;i.setDrums(g),m(`%cChannel %c${o}%c ${g?"is now a drum channel":"now isn't a drum channel"}%c via: %c${wA(e)}`,a.info,a.value,a.recognized,a.info,a.value);return;case 22:let E=s-64;i.transposeChannel(E),m(`%cChannel %c${o}%c pitch shift. Semitones %c${E}%c, with %c${wA(e)}`,a.info,a.recognized,a.info,a.value,a.info,a.value);return;case 28:let C=s;C===0?(i.randomPan=!0,m(`%cRandom pan is set to %cON%c for %c${o}`,a.info,a.recognized,a.info,a.value)):(i.randomPan=!1,i.controllerChange(D.pan,C));break;case 33:i.controllerChange(D.chorusDepth,s);break;case 34:i.controllerChange(D.reverbDepth,s);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,B=new Int8Array(12);for(let c=0;c<d;c++)B[c]=e[c+7]-64;i.setOctaveTuning(B);let Q=s-64;m(`%cChannel %c${o}%c octave scale tuning. Cents %c${B.join(" ")}%c, with %c${wA(e)}`,a.info,a.recognized,a.info,a.value,a.info,a.value),i.setTuning(Q);break}return}else if(e[5]===0&&e[6]===6){m(`%cRoland GS Master Pan set to: %c${s}%c with: %c${wA(e)}`,a.info,a.value,a.info,a.value),this.setMasterPan((s-64)/64);return}else if(e[5]===0&&e[6]===5){let o=s-64;m(`%cRoland GS Master Key-Shift set to: %c${o}%c with: %c${wA(e)}`,a.info,a.value,a.info,a.value),this.setMasterTuning(o*100);return}else if(e[5]===0&&e[6]===4){m(`%cRoland GS Master Volume set to: %c${s}%c with: %c${wA(e)}`,a.info,a.value,a.info,a.value),this.setMIDIVolume(s/127);return}}n();return}else if(e[2]===69&&e[3]===18){if(e[4]===16&&e[6]===0)if(e[5]===0){let s=new Uint8Array(e.slice(7,e.length-2));this.callEvent("synthdisplay",{displayData:s,displayType:jt.SoundCanvasText})}else if(e[5]===1){let s=new Uint8Array(e.slice(7,e.length-3));this.callEvent("synthdisplay",{displayData:s,displayType:jt.SoundCanvasDotDisplay}),m(`%cRoland SC Display Dot Matrix via: %c${wA(e)}`,a.info,a.value)}else n()}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),m(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${wA(e)}`,a.info,a.value,a.info,a.value);return}else{v(`%cUnrecognized Roland SysEx: %c${wA(e)}`,a.warn,a.unrecognized);return}break;case 67:if(e[2]===76)if(e[3]===0&&e[4]===0)switch(e[5]){case 4:let s=e[6];this.setMIDIVolume(s/127),m(`%cXG master volume. Volume: %c${s}`,a.info,a.recognized);break;case 6:let o=e[6]-64;this.transposeAllChannels(o),m(`%cXG master transpose. Volume: %c${o}`,a.info,a.recognized);break;case 126:m("%cXG system on",a.info),this.resetAllControllers(!1),this.system="xg";break}else if(e[3]===8){if(this.system!=="xg")return;let s=e[4]+A;if(s>=this.workletProcessorChannels.length)return;let o=this.workletProcessorChannels[s],i=e[6];switch(e[5]){case 1:o.controllerChange(D.bankSelect,i);break;case 2:o.controllerChange(D.lsbForControl0BankSelect,i);break;case 3:o.programChange(i);break;case 8:if(o.drumChannel)return;let g=i-64;o.channelTransposeKeyShift=g;break;case 11:o.controllerChange(D.mainVolume,i);break;case 14:let E=i;E===0?(o.randomPan=!0,m(`%cRandom pan is set to %cON%c for %c${s}`,a.info,a.recognized,a.info,a.value)):o.controllerChange(D.pan,E);break;case 19:o.controllerChange(D.reverbDepth,i);break;case 18:o.controllerChange(D.chorusDepth,i);break;default:v(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,a.warn,a.unrecognized)}}else if(e[3]===6&&e[4]===0){let s=new Uint8Array(e.slice(5,e.length-1));this.callEvent("synthdisplay",{displayData:s,displayType:jt.XGText})}else this.system==="xg"&&v(`%cUnrecognized Yamaha XG SysEx: %c${wA(e)}`,a.warn,a.unrecognized);else this.system==="xg"&&v(`%cUnrecognized Yamaha SysEx: %c${wA(e)}`,a.warn,a.unrecognized);break}}function ys(e){this.midiVolume=e,this.setMasterPan(this.pan)}function Ss(e){this.masterGain=e*$t,this.setMasterPan(this.pan)}function Ds(e){this.pan=e,e=e/2+.5,this.panLeft=1-e,this.panRight=e}function ks(e=!0){e&&m("%cResetting all controllers!",a.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===xA?(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[cA+q.pitchWheel]===!1){let n=this.workletProcessorChannels[A].midiControllers[cA+q.pitchWheel],s=n>>7,o=n&127;this.callEvent("pitchwheel",{channel:A,MSB:s,LSB:o})}}this.tunings=[],this.tunings=[];for(let A=0;127>A;A++)this.tunings.push([]);this.setMIDIVolume(1),this.system=st}function ws(){this.channelOctaveTuning.fill(0),this.keyCentTuning.fill(0);for(let A=0;A<me.length;A++){if(this.lockedControllers[A])return;let t=me[A];this.midiControllers[A]!==t&&A<127&&this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:A,controllerValue:t>>7}),this.midiControllers[A]=t}this.channelVibrato={rate:0,depth:0,delay:0},this.holdPedal=!1,this.randomPan=!1;let e=this.customControllers[rA.channelTransposeFine];this.customControllers.set(Ot),this.customControllers[rA.channelTransposeFine]=e,this.resetParameters()}function Fs(){this.NRPCoarse=0,this.NRPFine=0,this.RPValue=0,this.dataEntryState=FA.Idle}function Rs(){let e=4;for(let n of this.instruments)e+=n.instrumentZones.reduce((s,o)=>(o.generators=o.generators.filter(i=>i.generatorType!==r.sampleID&&i.generatorType!==r.keyRange&&i.generatorType!==r.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:r.velRange,generatorValue:o.velRange.max<<8|Math.max(o.velRange.min,0)}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:r.keyRange,generatorValue:o.keyRange.max<<8|Math.max(o.keyRange.min,0)}),o.isGlobal||o.generators.push({generatorType:r.sampleID,generatorValue:this.samples.indexOf(o.sample)}),o.generators.length*4+s),0);let A=new M(e),t=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.generatorZoneStartIndex=t;for(let o of s.generators)x(A,o.generatorType),x(A,o.generatorValue),t++}return V(A,0),oA(new nA("igen",A.length,A))}function Gs(e,A,t,n,s){let o=this.samples.map((C,d)=>{t&&C.compressSample(n,s);let B=C.getRawData();return m(`%cEncoded sample %c${d}. ${C.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${C.isCompressed}%c.`,a.info,a.recognized,a.info,a.recognized,a.info,C.isCompressed?a.recognized:a.unrecognized,a.info),B}),i=this.samples.reduce((C,d,B)=>C+o[B].length+46,0),g=new M(i);this.samples.forEach((C,d)=>{let B=o[d],Q,c,p=B.length;C.isCompressed?(Q=g.currentIndex,c=Q+B.length):(Q=g.currentIndex/2,c=Q+B.length/2,p+=46),e.push(Q),g.set(B,g.currentIndex),g.currentIndex+=p,A.push(c)});let E=oA(new nA("smpl",g.length,g),new M([115,100,116,97]));return oA(new nA("LIST",E.length,E))}function Ms(e,A){let n=new M(46*(this.samples.length+1));return this.samples.forEach((s,o)=>{kA(n,s.sampleName,20);let i=e[o];V(n,i);let g=A[o];V(n,g);let E=s.sampleLoopStartIndex+i,C=s.sampleLoopEndIndex+i;s.isCompressed&&(E-=i,C-=i),V(n,E),V(n,C),V(n,s.sampleRate),n[n.currentIndex++]=s.samplePitch,n[n.currentIndex++]=s.samplePitchCorrection,x(n,s.sampleLink),x(n,s.sampleType)}),kA(n,"EOS",46),oA(new nA("shdr",n.length,n))}function xs(){let e=10;for(let n of this.instruments)e+=n.instrumentZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new M(e),t=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.modulatorZoneStartIndex=t;for(let o of s.modulators)x(A,o.sourceEnum),x(A,o.modulatorDestination),x(A,o.transformAmount),x(A,o.secondarySourceEnum),x(A,o.transformType),t++}return ye(A,0,10),oA(new nA("imod",A.length,A))}function Ns(){let e=this.instruments.reduce((o,i)=>i.instrumentZones.length*4+o,4),A=new M(e),t=0,n=0,s=0;for(let o of this.instruments){o.instrumentZoneIndex=t;for(let i of o.instrumentZones)i.zoneID=t,x(A,n),x(A,s),n+=i.generators.length,s+=i.modulators.length,t++}return x(A,n),x(A,s),oA(new nA("ibag",A.length,A))}function bs(){let e=this.instruments.length*22+22,A=new M(e),t=0,n=0;for(let s of this.instruments)kA(A,s.instrumentName,20),x(A,t),t+=s.instrumentZones.length,s.instrumentID=n,n++;return kA(A,"EOI",20),x(A,t),oA(new nA("inst",A.length,A))}function Ls(){let e=4;for(let n of this.presets)e+=n.presetZones.reduce((s,o)=>(o.generators=o.generators.filter(i=>i.generatorType!==r.instrument&&i.generatorType!==r.keyRange&&i.generatorType!==r.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:r.velRange,generatorValue:o.velRange.max<<8|Math.max(o.velRange.min,0)}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:r.keyRange,generatorValue:o.keyRange.max<<8|Math.max(o.keyRange.min,0)}),o.isGlobal||o.generators.push({generatorType:r.instrument,generatorValue:this.instruments.indexOf(o.instrument)}),o.generators.length*4+s),0);let A=new M(e),t=0;for(let n of this.presets)for(let s of n.presetZones){s.generatorZoneStartIndex=t;for(let o of s.generators)x(A,o.generatorType),x(A,o.generatorValue);t+=s.generators.length}return x(A,0),x(A,0),oA(new nA("pgen",A.length,A))}function Us(){let e=10;for(let n of this.presets)e+=n.presetZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new M(e),t=0;for(let n of this.presets)for(let s of n.presetZones){s.modulatorZoneStartIndex=t;for(let o of s.modulators)x(A,o.sourceEnum),x(A,o.modulatorDestination),x(A,o.transformAmount),x(A,o.secondarySourceEnum),x(A,o.transformType),t++}return ye(A,0,10),oA(new nA("pmod",A.length,A))}function Ts(){let e=this.presets.reduce((o,i)=>i.presetZones.length*4+o,4),A=new M(e),t=0,n=0,s=0;for(let o of this.presets){o.presetZoneStartIndex=t;for(let i of o.presetZones)i.zoneID=t,x(A,n),x(A,s),n+=i.generators.length,s+=i.modulators.length,t++}return x(A,n),x(A,s),oA(new nA("pbag",A.length,A))}function vs(){let e=this.presets.length*38+38,A=new M(e),t=0;for(let n of this.presets)kA(A,n.presetName,20),x(A,n.program),x(A,n.bank),x(A,t),V(A,n.library),V(A,n.genre),V(A,n.morphology),t+=n.presetZones.length;return kA(A,"EOP",20),x(A,0),x(A,0),x(A,t),V(A,0),V(A,0),V(A,0),oA(new nA("phdr",A.length,A))}var dr={compress:!1,compressionQuality:.5,compressionFunction:void 0};function Hs(e=dr){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");fA("%cSaving soundfont...",a.info),m(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,a.info,a.recognized,a.info,a.recognized),m("%cWriting INFO...",a.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0");for(let[J,b]of Object.entries(this.soundFontInfo))if(J==="ifil"||J==="iver"){let I=parseInt(b.split(".")[0]),j=parseInt(b.split(".")[1]),P=new M(4);x(P,I),x(P,j),A.push(oA(new nA(J,4,P)))}else if(J==="DMOD")A.push(oA(new nA(J,b.length,b)));else{let I=new M(b.length);kA(I,b),A.push(oA(new nA(J,b.length,I)))}let t=QA([new M([73,78,70,79]),...A]),n=oA(new nA("LIST",t.length,t));m("%cWriting SDTA...",a.info);let s=[],o=[],i=Gs.call(this,s,o,e?.compress,e?.compressionQuality??.5,e.compressionFunction);m("%cWriting PDTA...",a.info),m("%cWriting SHDR...",a.info);let g=Ms.call(this,s,o);m("%cWriting IGEN...",a.info);let E=Rs.call(this);m("%cWriting IMOD...",a.info);let C=xs.call(this);m("%cWriting IBAG...",a.info);let d=Ns.call(this);m("%cWriting INST...",a.info);let B=bs.call(this),Q=Ls.call(this);m("%cWriting PMOD...",a.info);let c=Us.call(this);m("%cWriting PBAG...",a.info);let p=Ts.call(this);m("%cWriting PHDR...",a.info);let f=vs.call(this),y=QA([new M([112,100,116,97]),f,p,c,Q,B,d,C,E,g]),F=oA(new nA("LIST",y.length,y));m("%cWriting the output file...",a.info);let L=QA([new M([115,102,98,107]),n,i,F]),T=oA(new nA("RIFF",L.length,L));return m(`%cSaved succesfully! Final file size: %c${T.length}`,a.info,a.recognized),O(),T}var ve=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 GA=class extends ve{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},oe=class extends ve{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var fr=new Set([r.velRange,r.keyRange,r.instrument,r.exclusiveClass,r.endOper,r.sampleModes,r.startloopAddrsOffset,r.startloopAddrsCoarseOffset,r.endloopAddrsOffset,r.endloopAddrsCoarseOffset,r.startAddrsOffset,r.startAddrsCoarseOffset,r.endAddrOffset,r.endAddrsCoarseOffset,r.initialAttenuation,r.fineTune,r.coarseTune,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay,r.keyNumToModEnvHold,r.keyNumToModEnvDecay]);function Ys(e,A=!0){function t(B,Q){B.push(...Q.filter(c=>!B.find(p=>p.generatorType===c.generatorType)))}function n(B,Q){return{min:Math.max(B.min,Q.min),max:Math.min(B.max,Q.max)}}function s(B,Q){B.push(...Q.filter(c=>!B.find(p=>K.isIdentical(c,p))))}let o=[],i=[],g=[],E={min:0,max:127},C={min:0,max:127},d=e.presetZones.find(B=>B.isGlobal);d&&(i.push(...d.generators),g.push(...d.modulators),E=d.keyRange,C=d.velRange);for(let B of e.presetZones){if(B.isGlobal)continue;let Q=B.keyRange;B.hasKeyRange||(Q=E);let c=B.velRange;B.hasVelRange||(c=C);let p=B.generators.map(I=>new G(I.generatorType,I.generatorValue));t(p,i);let f=[...B.modulators];s(f,g);let y=B.instrument.instrumentZones,F=[],L=[],T={min:0,max:127},J={min:0,max:127},b=y.find(I=>I.isGlobal);b&&(F.push(...b.generators),L.push(...b.modulators),T=b.keyRange,J=b.velRange);for(let I of y){if(I.isGlobal)continue;let j=I.keyRange;I.hasKeyRange||(j=T);let P=I.velRange;if(I.hasVelRange||(P=J),j=n(j,Q),P=n(P,c),j.max<j.min||P.max<P.min)continue;let iA=I.generators.map($=>new G($.generatorType,$.generatorValue));t(iA,F);let tA=[...I.modulators];s(tA,L);let CA=[...tA];for(let $ of f){let uA=CA.findIndex(vA=>K.isIdentical($,vA));uA!==-1?CA[uA]=CA[uA].sumTransform($):CA.push($)}let BA=iA.map($=>new G($.generatorType,$.generatorValue));for(let $ of p){if($.generatorType===r.velRange||$.generatorType===r.keyRange||$.generatorType===r.instrument||$.generatorType===r.endOper||$.generatorType===r.sampleModes)continue;let uA=iA.findIndex(vA=>vA.generatorType===$.generatorType);if(uA!==-1){let vA=BA[uA].generatorValue+$.generatorValue;BA[uA]=new G($.generatorType,vA)}else{let vA=Y[$.generatorType].def+$.generatorValue;BA.push(new G($.generatorType,vA))}}BA=BA.filter($=>$.generatorType!==r.sampleID&&$.generatorType!==r.keyRange&&$.generatorType!==r.velRange&&$.generatorType!==r.endOper&&$.generatorType!==r.instrument&&$.generatorValue!==Y[$.generatorType].def);let lA=new GA;lA.keyRange=j,lA.velRange=P,lA.keyRange.min===0&&lA.keyRange.max===127&&(lA.keyRange.min=-1),lA.velRange.min===0&&lA.velRange.max===127&&(lA.velRange.min=-1),lA.isGlobal=!1,lA.sample=I.sample,lA.generators=BA,lA.modulators=CA,o.push(lA)}}if(A){let B=new GA;B.isGlobal=!0;for(let p=0;p<58;p++){if(fr.has(p))continue;let f={},y=Y[p]?.def||0;f[y]=0;for(let F of o){let L=F.generators.find(b=>b.generatorType===p);if(L){let b=L.generatorValue;f[b]===void 0?f[b]=1:f[b]++}else f[y]++;let T;switch(p){default:continue;case r.decayVolEnv:T=r.keyNumToVolEnvDecay;break;case r.holdVolEnv:T=r.keyNumToVolEnvHold;break;case r.decayModEnv:T=r.keyNumToModEnvDecay;break;case r.holdModEnv:T=r.keyNumToModEnvHold}if(F.generators.find(b=>b.generatorType===T)!==void 0){f={};break}}if(Object.keys(f).length>0){let F=Object.entries(f).reduce((T,J)=>T[1]<J[1]?J:T,[0,0]),L=parseInt(F[0]);L!==y&&B.generators.push(new G(p,L)),o.forEach(T=>{let J=T.generators.findIndex(b=>b.generatorType===p);J!==-1?T.generators[J].generatorValue===L&&T.generators.splice(J,1):L!==y&&T.generators.push(new G(p,y))})}}let c=o.find(p=>!p.isGlobal).modulators.map(p=>K.copy(p));for(let p of c){let f=!0;for(let y of o){if(y.isGlobal||!f)continue;y.modulators.find(L=>K.isIdentical(L,p))||(f=!1)}if(f===!0){B.modulators.push(K.copy(p));for(let y of o){let F=y.modulators.find(L=>K.isIdentical(L,p));F.transformAmount===p.transformAmount&&y.modulators.splice(y.modulators.indexOf(F),1)}}}o.splice(0,0,B)}return o}var Js=20;function Ct(e,A,t,n,s,o,i){let g=i===0?0:1,E=new M(Js+g*16);V(E,Js),x(E,A),x(E,t);let C=n*.4,d=Math.floor(C*-65536);V(E,d),V(E,2);let B=o-s,Q=0;switch(i){default:case 0:g=0;break;case 1:Q=0,g=1;break;case 3:Q=1,g=1}return V(E,g),g===1&&(V(E,16),V(E,Q),V(E,s),V(E,B)),AA("wsmp",E)}var U={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},ht=new K({srcEnum:219,dest:r.reverbEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),Bt=new K({srcEnum:221,dest:r.chorusEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),ct=new K({srcEnum:129,dest:r.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0}),lt=new K({srcEnum:13,dest:r.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0});var k={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 He=class{source;control;destination;scale;transform;constructor(A,t,n,s,o){this.source=A,this.control=t,this.destination=n,this.scale=s,this.transform=o}writeArticulator(){let A=new M(12);return x(A,this.source),x(A,this.control),x(A,this.destination),x(A,this.transform),V(A,this.scale<<16),A}};function qs(e,A){if(e)switch(A){default:return;case D.modulationWheel:return U.modulationWheel;case D.mainVolume:return U.volume;case D.pan:return U.pan;case D.expressionController:return U.expression;case D.chorusDepth:return U.chorus;case D.reverbDepth:return U.reverb}else switch(A){default:return;case q.noteOnKeyNum:return U.keyNum;case q.noteOnVelocity:return U.velocity;case q.noController:return U.none;case q.polyPressure:return U.polyPressure;case q.channelPressure:return U.channelPressure;case q.pitchWheel:return U.pitchWheel;case q.pitchWheelRange:return U.pitchWheelRange}}function Ks(e,A){switch(e){default:return;case r.initialAttenuation:return{dest:k.gain,amount:-A};case r.fineTune:return k.pitch;case r.pan:return k.pan;case r.keyNum:return k.keyNum;case r.reverbEffectsSend:return k.reverbSend;case r.chorusEffectsSend:return k.chorusSend;case r.freqModLFO:return k.modLfoFreq;case r.delayModLFO:return k.modLfoDelay;case r.delayVibLFO:return k.vibLfoDelay;case r.freqVibLFO:return k.vibLfoFreq;case r.delayVolEnv:return k.volEnvDelay;case r.attackVolEnv:return k.volEnvAttack;case r.holdVolEnv:return k.volEnvHold;case r.decayVolEnv:return k.volEnvDecay;case r.sustainVolEnv:return{dest:k.volEnvSustain,amount:1e3-A};case r.releaseVolEnv:return k.volEnvRelease;case r.delayModEnv:return k.modEnvDelay;case r.attackModEnv:return k.modEnvAttack;case r.holdModEnv:return k.modEnvHold;case r.decayModEnv:return k.modEnvDecay;case r.sustainModEnv:return{dest:k.modEnvSustain,amount:1e3-A};case r.releaseModEnv:return k.modEnvRelease;case r.initialFilterFc:return k.filterCutoff;case r.initialFilterQ:return k.filterQ}}function Ps(e,A){switch(e){default:return;case r.modEnvToFilterFc:return{source:U.modEnv,dest:k.filterCutoff,amt:A,isBipolar:!1};case r.modEnvToPitch:return{source:U.modEnv,dest:k.pitch,amt:A,isBipolar:!1};case r.modLfoToFilterFc:return{source:U.modLfo,dest:k.filterCutoff,amt:A,isBipolar:!0};case r.modLfoToVolume:return{source:U.modLfo,dest:k.gain,amt:A,isBipolar:!0};case r.modLfoToPitch:return{source:U.modLfo,dest:k.pitch,amt:A,isBipolar:!0};case r.vibLfoToPitch:return{source:U.vibratoLfo,dest:k.pitch,amt:A,isBipolar:!0};case r.keyNumToVolEnvHold:return{source:U.keyNum,dest:k.volEnvHold,amt:A,isBipolar:!0};case r.keyNumToVolEnvDecay:return{source:U.keyNum,dest:k.volEnvDecay,amt:A,isBipolar:!0};case r.keyNumToModEnvHold:return{source:U.keyNum,dest:k.modEnvHold,amt:A,isBipolar:!0};case r.keyNumToModEnvDecay:return{source:U.keyNum,dest:k.modEnvDecay,amt:A,isBipolar:!0};case r.scaleTuning:return{source:U.keyNum,dest:k.pitch,amt:A*128,isBipolar:!1}}}function Os(e){let A=Ks(e.generatorType,e.generatorValue),t=A,n=0,s=e.generatorValue;A?.amount!==void 0&&(s=A.amount,t=A.dest);let o=Ps(e.generatorType,e.generatorValue);if(o!==void 0)s=o.amt,t=o.dest,n=o.source;else if(t===void 0){v(`Invalid generator type: ${e.generatorType}`);return}return new He(n,0,t,s,0)}function Vs(e){if(e.transformType!==0){v("Other transform types are not supported.");return}let A=qs(e.sourceUsesCC,e.sourceIndex),t=e.sourceCurveType,n=e.sourcePolarity,s=e.sourceDirection;if(A===void 0){v(`Invalid source: ${e.sourceIndex}, CC: ${e.sourceUsesCC}`);return}e.modulatorDestination===r.initialAttenuation&&(s=s===1?0:1);let o=qs(e.secSrcUsesCC,e.secSrcIndex),i=e.secSrcCurveType,g=e.secSrcPolarity,E=e.secSrcDirection;if(o===void 0){v(`Invalid secondary source: ${e.secSrcIndex}, CC: ${e.secSrcUsesCC}`);return}let C=Ks(e.modulatorDestination,e.transformAmount),d=C,B=e.transformAmount;C?.dest!==void 0&&(d=C.dest,B=C.amount);let Q=Ps(e.modulatorDestination,e.transformAmount);if(Q!==void 0)B=Q.amt,o=A,i=t,g=n,E=s,t=dA.linear,n=Q.isBipolar?1:0,s=0,A=Q.source,d=Q.dest;else if(d===void 0){v(`Invalid destination: ${e.modulatorDestination}`);return}let c=0;return c|=i<<4,c|=g<<8,c|=E<<9,c|=t,c|=n<<14,c|=s<<15,new He(A,o,d,B,c)}var mr=new Set([r.sampleModes,r.initialAttenuation,r.keyRange,r.velRange,r.sampleID,r.fineTune,r.coarseTune,r.startAddrsOffset,r.startAddrsCoarseOffset,r.endAddrOffset,r.endAddrsCoarseOffset,r.startloopAddrsOffset,r.startloopAddrsCoarseOffset,r.endloopAddrsOffset,r.endloopAddrsCoarseOffset,r.overridingRootKey,r.exclusiveClass]);function Qt(e){for(let o=0;o<e.generators.length;o++){let i=e.generators[o];(i.generatorType===r.delayVolEnv||i.generatorType===r.attackVolEnv||i.generatorType===r.holdVolEnv||i.generatorType===r.decayVolEnv||i.generatorType===r.releaseVolEnv||i.generatorType===r.delayModEnv||i.generatorType===r.attackModEnv||i.generatorType===r.holdModEnv||i.generatorType===r.decayModEnv)&&(e.generators[o]=new G(i.generatorType,Math.min(i.generatorValue,6386),!1))}for(let o=0;o<e.generators.length;o++){let i=e.generators[o],g;switch(i.generatorType){default:continue;case r.keyNumToVolEnvDecay:g=r.decayVolEnv;break;case r.keyNumToVolEnvHold:g=r.holdVolEnv;break;case r.keyNumToModEnvDecay:g=r.decayModEnv;break;case r.keyNumToModEnvHold:g=r.holdModEnv}let E=e.generators.find(p=>p.generatorType===g);if(E===void 0)continue;let C=i.generatorValue*-128,d=60/128*C,B=E.generatorValue-d,Q=e.generators.indexOf(i),c=e.generators.indexOf(E);e.generators[c]=new G(g,B,!1),e.generators[Q]=new G(i.generatorType,C,!1)}let A=e.generators.reduce((o,i)=>{if(mr.has(i.generatorType))return o;let g=Os(i);return g!==void 0?(o.push(g),m("%cSucceeded converting to DLS Articulator!",a.recognized)):v("Failed converting to DLS Articulator!"),o},[]),t=e.modulators.reduce((o,i)=>{if(K.isIdentical(i,Bt,!0)||K.isIdentical(i,ht,!0)||K.isIdentical(i,ct,!0)||K.isIdentical(i,lt,!0))return o;let g=Vs(i);return g!==void 0?(o.push(g),m("%cSucceeded converting to DLS Articulator!",a.recognized)):v("Failed converting to DLS Articulator!"),o},[]);A.push(...t);let n=new M(8);V(n,8),V(n,A.length);let s=A.map(o=>o.writeArticulator());return AA("art2",QA([n,...s]))}function Zs(e,A){let t=new M(12);x(t,Math.max(e.keyRange.min,0)),x(t,e.keyRange.max),x(t,Math.max(e.velRange.min,0)),x(t,e.velRange.max),x(t,0);let n=e.getGeneratorValue(r.exclusiveClass,0);x(t,n),x(t,0);let s=AA("rgnh",t),o=e.getGeneratorValue(r.overridingRootKey,e.sample.samplePitch);e.getGeneratorValue(r.scaleTuning,A.getGeneratorValue(r.scaleTuning,100))===0&&e.keyRange.max-e.keyRange.min===0&&(o=e.keyRange.min);let g=Ct(e.sample,o,e.getGeneratorValue(r.fineTune,0)+e.getGeneratorValue(r.coarseTune,0)*100+e.sample.samplePitchCorrection,e.getGeneratorValue(r.initialAttenuation,0),e.sample.sampleLoopStartIndex+e.getGeneratorValue(r.startloopAddrsOffset,0)+e.getGeneratorValue(r.startloopAddrsCoarseOffset,0)*32768,e.sample.sampleLoopEndIndex+e.getGeneratorValue(r.endloopAddrsOffset,0)+e.getGeneratorValue(r.endloopAddrsCoarseOffset,0)*32768,e.getGeneratorValue(r.sampleModes,0)),E=new M(12);x(E,0),x(E,0),V(E,1),V(E,this.samples.indexOf(e.sample));let C=AA("wlnk",E),d=new M(0);if(e.modulators.length+e.generators.length>0){let B=Qt(e);d=AA("lar2",B,!1,!0)}return AA("rgn2",QA([s,g,C,d]),!1,!0)}function Ws(e){fA(`%cWriting %c${e.presetName}%c...`,a.info,a.recognized,a.info);let A=Ys(e),t=A.reduce((Q,c)=>c.isGlobal?Q:Q+1,0),n=new M(12);V(n,t);let s=(e.bank&127)<<8;e.bank===128&&(s|=1<<31),V(n,s),V(n,e.program&127);let o=AA("insh",n),i=new M(0),g=A.find(Q=>Q.isGlobal===!0);if(g){let Q=Qt(g);i=AA("lar2",Q,!1,!0)}let E=QA(A.reduce((Q,c)=>(c.isGlobal||Q.push(Zs.apply(this,[c,g])),Q),[])),C=AA("lrgn",E,!1,!0),d=AA("INAM",Ce(e.presetName)),B=AA("INFO",d,!1,!0);return O(),AA("ins ",QA([o,C,i,B]),!1,!0)}function Xs(){let e=QA(this.presets.map(A=>Ws.apply(this,[A])));return AA("lins",e,!1,!0)}function _s(e){let A=new M(18);x(A,1),x(A,1),V(A,e.sampleRate),V(A,e.sampleRate*2),x(A,2),x(A,16);let t=AA("fmt ",A),n=1;e.sampleLoopStartIndex+Math.abs(e.getAudioData().length-e.sampleLoopEndIndex)<2&&(n=0);let s=Ct(e,e.samplePitch,e.samplePitchCorrection,0,e.sampleLoopStartIndex,e.sampleLoopEndIndex,n),o=e.getAudioData(),i;if(e.isCompressed){let C=new Int16Array(o.length);for(let d=0;d<o.length;d++)C[d]=o[d]*32768;i=AA("data",new M(C.buffer))}else i=AA("data",e.getRawData());let g=AA("INAM",Ce(e.sampleName)),E=AA("INFO",g,!1,!0);return m(`%cSaved %c${e.sampleName}%c succesfully!`,a.recognized,a.value,a.recognized),AA("wave",QA([t,s,i,E]),!1,!0)}function zs(){let e=0,A=[],t=this.samples.map(n=>{let s=_s(n);return A.push(e),e+=s.length,s});return{data:AA("wvpl",QA(t),!1,!0),indexes:A}}function js(){fA("%cSaving DLS...",a.info);let e=new M(4);V(e,this.presets.length);let A=AA("colh",e);fA("%cWriting instruments...",a.info);let t=Xs.apply(this);m("%cSuccess!",a.recognized),O(),fA("%cWriting WAVE samples...",a.info);let n=zs.apply(this),s=n.data,o=n.indexes;m("%cSucceeded!",a.recognized),O();let i=new M(8+4*o.length);V(i,8),V(i,o.length);for(let B of o)V(i,B);let g=AA("ptbl",i);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
15
+ Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let E=[];for(let[B,Q]of Object.entries(this.soundFontInfo))B!=="ICMT"&&B!=="INAM"&&B!=="ICRD"&&B!=="IENG"&&B!=="ICOP"&&B!=="ISFT"&&B!=="ISBJ"||E.push(AA(B,Ce(Q),!0));let C=AA("INFO",QA(E),!1,!0),d=new M(A.length+t.length+g.length+s.length+C.length+4);return kA(d,"DLS "),d.set(QA([A,t,g,s,C]),4),m("%cSaved succesfully!",a.recognized),O(),AA("RIFF",d)}var pr=48e3,re=class{constructor(A,t,n,s,o,i,g,E){this.sampleName=A,this.sampleRate=t,this.samplePitch=n,this.samplePitchCorrection=s,this.sampleLink=o,this.sampleType=i,this.sampleLoopStartIndex=g,this.sampleLoopEndIndex=E,this.isCompressed=(i&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,s=new Float32Array(Math.floor(t.length*n));for(let o=0;o<s.length;o++)s[o]=t[Math.floor(o*(1/n))];t=s,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(pr),n=this.getAudioData()),this.compressedData=t([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{v(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var ie=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 ae=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 s=0;s<128;s++)this.getSamplesAndGenerators(n,s).forEach(o=>{o.sample.isSampleLoaded||o.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 s(c,p){return p>=c.min&&p<=c.max}function o(c,p){c.push(...p.filter(f=>!c.find(y=>y.generatorType===f.generatorType)))}function i(c,p){c.push(...p.filter(f=>!c.find(y=>K.isIdentical(f,y))))}let g=[],E=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},B=this.presetZones[0].isGlobal?this.presetZones[0].velRange:{min:0,max:127};return this.presetZones.filter(c=>s(c.hasKeyRange?c.keyRange:d,A)&&s(c.hasVelRange?c.velRange:B,t)&&!c.isGlobal).forEach(c=>{if(c.instrument.instrumentZones.length<1)return;let p=c.generators,f=c.modulators,y=c.instrument.instrumentZones[0],F=y.isGlobal?[...y.generators]:[],L=y.isGlobal?[...y.modulators]:[],T=y.isGlobal?y.keyRange:{min:0,max:127},J=y.isGlobal?y.velRange:{min:0,max:127};c.instrument.instrumentZones.filter(I=>s(I.hasKeyRange?I.keyRange:T,A)&&s(I.hasVelRange?I.velRange:J,t)&&!I.isGlobal).forEach(I=>{let j=[...I.generators],P=[...I.modulators];o(p,E),o(j,F),i(f,C),i(P,L),i(P,this.defaultModulators);let iA=[...P];for(let tA=0;tA<f.length;tA++){let CA=f[tA],BA=iA.findIndex(lA=>K.isIdentical(CA,lA));BA!==-1?iA[BA]=iA[BA].sumTransform(CA):iA.push(CA)}g.push({instrumentGenerators:j,presetGenerators:p,modulators:iA,sample:I.sample,sampleID:I.generators.find(tA=>tA.generatorType===r.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][t]=g,g}};var ge=class e{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=et.map(t=>K.copy(t)),A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}static mergeSoundfonts(...A){let t=A.shift(),n=t.presets;for(;A.length;)A.shift().presets.forEach(o=>{n.find(i=>i.bank===o.bank&&i.program===o.program)===void 0&&n.push(o)});return new e({presets:n,info:t.soundFontInfo})}static getDummySoundfontFile(){let A=new e,t=new re("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 GA;n.isGlobal=!0,n.generators.push(new G(r.initialAttenuation,375)),n.generators.push(new G(r.releaseVolEnv,-1e3)),n.generators.push(new G(r.sampleModes,1));let s=new GA;s.sample=t;let o=new GA;o.sample=t,o.generators.push(new G(r.fineTune,-9));let i=new ie;i.instrumentName="Saw Wave",i.instrumentZones.push(n),i.instrumentZones.push(s),i.instrumentZones.push(o),A.instruments.push(i);let g=new oe;g.instrument=i;let E=new ae(A.defaultModulators);return E.presetName="Saw Wave",E.presetZones.push(g),A.presets.push(E),A.soundFontInfo.ifil="2.1",A.soundFontInfo.isng="EMU8000",A.soundFontInfo.INAM="Dummy",A.write().buffer}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 s=this.presets.find(o=>o.bank===A&&o.program===t);if(s)return s;if(n!==!1)return A===128?this.presets.find(o=>o.bank===128):this.presets.find(o=>o.program===t)}getPreset(A,t){let n=this.presets.find(s=>s.bank===A&&s.program===t);return n||(A===128?(n=this.presets.find(s=>s.bank===128&&s.program===t),n||(n=this.presets.find(s=>s.bank===128))):n=this.presets.find(s=>s.program===t&&s.bank!==128),n&&v(`%cPreset ${A}.${t} not found. Replaced with %c${n.presetName} (${n.bank}.${n.program})`,a.warn,a.recognized)),n||(v(`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||(v("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.`)}destroySoundfont(){delete this.presets,delete this.instruments,delete this.samples}};ge.prototype.write=Hs;ge.prototype.writeDLS=js;function $s(e){fA("%cLoading instruments...",a.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(_(e.chunkData));O()}var ut=class extends ae{constructor(A,t){super(et),this.program=t&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new ie,this.DLSInstrument.addUseCount();let s=new oe;s.instrument=this.DLSInstrument,this.presetZones=[s]}};function Ao(e){this.verifyHeader(e,"LIST"),this.verifyText(X(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(_(e.chunkData));let t=A.find(c=>c.header==="insh");if(!t)throw O(),new Error("No instrument header!");let n=w(t.chunkData,4),s=w(t.chunkData,4),o=w(t.chunkData,4),i=new ut(s,o),g="unnamedPreset",E=NA(A,"INFO");if(E){let c=_(E.chunkData);for(;c.header!=="INAM";)c=_(E.chunkData);g=X(c.chunkData,c.chunkData.length).trim()}i.presetName=g,i.DLSInstrument.instrumentName=g,$A(`%cParsing %c"${g}"%c...`,a.info,a.recognized,a.info);let C=NA(A,"lrgn");if(!C)throw O(),new Error("No region list!");let d=new GA;d.isGlobal=!0;let B=NA(A,"lart"),Q=NA(A,"lar2");(Q!==void 0||B!==void 0)&&this.readLart(B,Q,d),d.generators=d.generators.filter(c=>c.generatorValue!==Y[c.generatorType].def),d.modulators.find(c=>c.modulatorDestination===r.reverbEffectsSend)===void 0&&d.modulators.push(K.copy(ht)),d.modulators.find(c=>c.modulatorDestination===r.chorusEffectsSend)===void 0&&d.modulators.push(K.copy(Bt)),i.DLSInstrument.instrumentZones.push(d);for(let c=0;c<n;c++){let p=_(C.chunkData);this.verifyHeader(p,"LIST");let f=X(p.chunkData,4);f!=="rgn "&&f!=="rgn2"&&(O(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${f}"`));let y=this.readRegion(p);y&&i.DLSInstrument.instrumentZones.push(y)}this.presets.push(i),this.instruments.push(i.DLSInstrument),O()}function eo(e){let A,t=!1;switch(e){default:case U.modLfo:case U.vibratoLfo:case U.coarseTune:case U.fineTune:case U.modEnv:return;case U.keyNum:A=q.noteOnKeyNum;break;case U.none:A=q.noController;break;case U.modulationWheel:A=D.modulationWheel,t=!0;break;case U.pan:A=D.pan,t=!0;break;case U.reverb:A=D.reverbDepth,t=!0;break;case U.chorus:A=D.chorusDepth,t=!0;break;case U.expression:A=D.expressionController,t=!0;break;case U.volume:A=D.mainVolume,t=!0;break;case U.velocity:A=q.noteOnVelocity;break;case U.polyPressure:A=q.polyPressure;break;case U.channelPressure:A=q.channelPressure;break;case U.pitchWheel:A=q.pitchWheel;break;case U.pitchWheelRange:A=q.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${e}`);return{enum:A,isCC:t}}function yr(e,A){switch(e){default:case k.none:return;case k.pan:return r.pan;case k.gain:return{gen:r.initialAttenuation,newAmount:A*-1};case k.pitch:return r.fineTune;case k.keyNum:return r.overridingRootKey;case k.volEnvDelay:return r.delayVolEnv;case k.volEnvAttack:return r.attackVolEnv;case k.volEnvHold:return r.holdVolEnv;case k.volEnvDecay:return r.decayVolEnv;case k.volEnvSustain:return{gen:r.sustainVolEnv,newAmount:1e3-A};case k.volEnvRelease:return r.releaseVolEnv;case k.modEnvDelay:return r.delayModEnv;case k.modEnvAttack:return r.attackModEnv;case k.modEnvHold:return r.holdModEnv;case k.modEnvDecay:return r.decayModEnv;case k.modEnvSustain:return{gen:r.sustainModEnv,newAmount:(1e3-A)/10};case k.modEnvRelease:return r.releaseModEnv;case k.filterCutoff:return r.initialFilterFc;case k.filterQ:return r.initialFilterQ;case k.chorusSend:return r.chorusEffectsSend;case k.reverbSend:return r.reverbEffectsSend;case k.modLfoFreq:return r.freqModLFO;case k.modLfoDelay:return r.delayModLFO;case k.vibLfoFreq:return r.freqVibLFO;case k.vibLfoDelay:return r.delayVibLFO}}function Sr(e,A){return e===U.vibratoLfo&&A===k.pitch?r.vibLfoToPitch:e===U.modLfo&&A===k.pitch?r.modLfoToPitch:e===U.modLfo&&A===k.filterCutoff?r.modLfoToFilterFc:e===U.modLfo&&A===k.gain?r.modLfoToVolume:e===U.modEnv&&A===k.filterCutoff?r.modEnvToFilterFc:e===U.modEnv&&A===k.pitch?r.modEnvToPitch:void 0}function to(e,A,t,n,s){let o=Sr(e,t),i,g,E=!1,C=!1,d=s;if(o===void 0){let F=yr(t,s);if(F===void 0){v(`Invalid destination: ${t}`);return}if(i=F,F.newAmount!==void 0&&(d=F.newAmount,i=F.gen),g=eo(e),g===void 0){v(`Invalid source: ${e}`);return}}else i=o,E=!0,g={enum:q.noController,isCC:!1},C=!0;let B=eo(A);if(B===void 0){v(`Invalid control: ${A}`);return}let Q;if(C)Q=0;else{let F=n&15,L=n>>10&15;L===dA.linear&&F!==dA.linear&&(L=F);let T=n>>14&1,J=n>>15&1;i===r.initialAttenuation&&s<0&&(J=1),Q=VA(L,T,J,g.isCC,g.enum)}let c=n>>4&15,p=n>>8&1,f=n>>9&1,y=VA(c,p,f,B.isCC,B.enum);if(E){let F=y;y=Q,Q=F}return new K({srcEnum:Q,secSrcEnum:y,dest:i,transform:0,amt:d})}function An(e,A){let t=e.chunkData,n=[],s=[];w(t,4);let o=w(t,4);for(let i=0;i<o;i++){let g=w(t,2),E=w(t,2),C=w(t,2),d=w(t,2),Q=(w(t,4)|0)>>16;if(g===0&&E===0&&d===0){let c;switch(C){case k.pan:c=new G(r.pan,Q);break;case k.gain:c=new G(r.initialAttenuation,-Q*10/.4);break;case k.filterCutoff:c=new G(r.initialFilterFc,Q);break;case k.filterQ:c=new G(r.initialFilterQ,Q);break;case k.modLfoFreq:c=new G(r.freqModLFO,Q);break;case k.modLfoDelay:c=new G(r.delayModLFO,Q);break;case k.vibLfoFreq:c=new G(r.freqVibLFO,Q);break;case k.vibLfoDelay:c=new G(r.delayVibLFO,Q);break;case k.volEnvDelay:c=new G(r.delayVolEnv,Q);break;case k.volEnvAttack:c=new G(r.attackVolEnv,Q);break;case k.volEnvHold:c=new G(r.holdVolEnv,Q,!1);break;case k.volEnvDecay:c=new G(r.decayVolEnv,Q,!1);break;case k.volEnvRelease:c=new G(r.releaseVolEnv,Q);break;case k.volEnvSustain:let p=1e3-Q;c=new G(r.sustainVolEnv,p);break;case k.modEnvDelay:c=new G(r.delayModEnv,Q);break;case k.modEnvAttack:c=new G(r.attackModEnv,Q);break;case k.modEnvHold:c=new G(r.holdModEnv,Q,!1);break;case k.modEnvDecay:c=new G(r.decayModEnv,Q,!1);break;case k.modEnvRelease:c=new G(r.releaseModEnv,Q);break;case k.modEnvSustain:let f=1e3-Q;c=new G(r.sustainModEnv,f);break;case k.reverbSend:c=new G(r.reverbEffectsSend,Q);break;case k.chorusSend:c=new G(r.chorusEffectsSend,Q);break;case k.pitch:let y=Math.floor(Q/100),F=Math.floor(Q-y*100);c=new G(r.fineTune,F),n.push(new G(r.coarseTune,y));break}c&&n.push(c)}else{let c=!0;if(E===U.none)if(g===U.modLfo&&C===k.pitch)n.push(new G(r.modLfoToPitch,Q));else if(g===U.modLfo&&C===k.gain)n.push(new G(r.modLfoToVolume,Q));else if(g===U.modLfo&&C===k.filterCutoff)n.push(new G(r.modLfoToFilterFc,Q));else if(g===U.vibratoLfo&&C===k.pitch)n.push(new G(r.vibLfoToPitch,Q));else if(g===U.modEnv&&C===k.pitch)n.push(new G(r.modEnvToPitch,Q));else if(g===U.modEnv&&C===k.filterCutoff)n.push(new G(r.modEnvToFilterFc,Q));else if(g===U.keyNum&&C===k.pitch)n.push(new G(r.scaleTuning,Q/128));else if(g===U.keyNum&&C===k.volEnvHold){n.push(new G(r.keyNumToVolEnvHold,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.holdVolEnv&&(f.generatorValue+=p)})}else if(g===U.keyNum&&C===k.volEnvDecay){n.push(new G(r.keyNumToVolEnvDecay,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.decayVolEnv&&(f.generatorValue+=p)})}else if(g===U.keyNum&&C===k.modEnvHold){n.push(new G(r.keyNumToModEnvHold,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.holdModEnv&&(f.generatorValue+=p)})}else if(g===U.keyNum&&C===k.modEnvDecay){n.push(new G(r.keyNumToModEnvDecay,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.decayModEnv&&(f.generatorValue+=p)})}else c=!1;else c=!1;if(c===!1){let p=to(g,E,C,d,Q);p?(s.push(p),m("%cSucceeded converting to SF2 Modulator!",a.recognized)):v("Failed converting to SF2 Modulator!")}}}return A&&s.push(K.copy(ct),K.copy(lt)),{modulators:s,generators:n}}function no(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let n=_(e.chunkData);this.verifyHeader(n,"art1","art2");let s=An(n,!0);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=_(A.chunkData);this.verifyHeader(n,"art2","art1");let s=An(n,!1);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}}var dt=class extends GA{constructor(A,t){super(),this.keyRange=A,this.velRange=t,this.isGlobal=!0}setWavesample(A,t,n,s,o,i,g){t!==0&&this.generators.push(new G(r.sampleModes,t)),this.generators.push(new G(r.initialAttenuation,A)),this.isGlobal=!1,g-=o.samplePitchCorrection;let E=Math.trunc(g/100);E!==0&&this.generators.push(new G(r.coarseTune,E));let C=g-E*100;if(C!==0&&this.generators.push(new G(r.fineTune,C)),t!==0){let d=n.start-o.sampleLoopStartIndex,B=n.end-o.sampleLoopEndIndex;if(d!==0){let Q=d%32768;this.generators.push(new G(r.startloopAddrsOffset,Q));let c=Math.trunc(d/32768);c!==0&&this.generators.push(new G(r.startloopAddrsCoarseOffset,c))}if(B!==0){let Q=B%32768;this.generators.push(new G(r.endloopAddrsOffset,Q));let c=Math.trunc(B/32768);c!==0&&this.generators.push(new G(r.endloopAddrsCoarseOffset,c))}}s!==o.samplePitch&&this.generators.push(new G(r.overridingRootKey,s)),this.generators.push(new G(r.sampleID,i)),this.sample=o,o.useCount++}};function so(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(_(e.chunkData));let t=A.find(P=>P.header==="rgnh"),n=w(t.chunkData,2),s=w(t.chunkData,2),o=w(t.chunkData,2),i=w(t.chunkData,2),g=new dt({min:n,max:s},{min:o,max:i});w(t.chunkData,2);let E=w(t.chunkData,2);E!==0&&g.generators.push(new G(r.exclusiveClass,E));let C=NA(A,"lart"),d=NA(A,"lar2");this.readLart(C,d,g),g.isGlobal=!1;let B=A.find(P=>P.header==="wsmp");w(B.chunkData,4);let Q=w(B.chunkData,2),c=se(B.chunkData[B.chunkData.currentIndex++],B.chunkData[B.chunkData.currentIndex++]),f=(w(B.chunkData,4)|0)/-655360;w(B.chunkData,4);let y=w(B.chunkData,4),F,L={start:0,end:0};if(y===0)F=0;else{w(B.chunkData,4),w(B.chunkData,4)===0?F=1:F=3,L.start=w(B.chunkData,4);let iA=w(B.chunkData,4);L.end=L.start+iA}let T=A.find(P=>P.header==="wlnk");if(T===void 0)return;w(T.chunkData,2),w(T.chunkData,2),w(T.chunkData,4);let J=w(T.chunkData,4),b=this.samples[J];if(b===void 0)throw new Error("Invalid sample ID!");let j=(f||b.sampleDbAttenuation)*10/.4;return g.setWavesample(j,F,L,Q,b,J,c),g}var ft=class extends re{sampleDbAttenuation;sampleData;constructor(A,t,n,s,o,i,g,E){super(A,t,n,s,0,1,o,i),this.sampleData=g,this.sampleDbAttenuation=E}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 oo={PCM:1,ALAW:6};function Dr(e,A){let t=Math.pow(2,A*8-1),n=Math.pow(2,A*8),s,o=!1;A===1?(s=255,o=!0):s=t;let i=e.size/A,g=new Float32Array(i);for(let E=0;E<g.length;E++){let C=w(e.chunkData,A);o?g[E]=C/s-.5:(C>=t&&(C-=n),g[E]=C/s)}return g}function kr(e,A){let t=e.size/A,n=new Float32Array(t);for(let s=0;s<n.length;s++){let o=w(e.chunkData,A),i=o^85;i&=127;let g=i>>4,E=i&15;g>0&&(E+=16),E=(E<<4)+8,g>1&&(E=E<<g-1);let C=o>127?E:-E;n[s]=C/32678}return n}function ro(e){fA("%cLoading Wave samples...",a.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=_(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(X(t.chunkData,4),"wave");let n=[];for(;t.chunkData.currentIndex<t.chunkData.length;)n.push(_(t.chunkData));let s=n.find(b=>b.header==="fmt ");if(!s)throw new Error("No fmt chunk in the wave file!");let o=w(s.chunkData,2),i=w(s.chunkData,2);if(i!==1)throw new Error(`Only mono samples are supported. Fmt reports ${i} channels`);let g=w(s.chunkData,4);w(s.chunkData,4),w(s.chunkData,2);let C=w(s.chunkData,2)/8,d=!1,B=n.find(b=>b.header==="data");B||this.parsingError("No data chunk in the WAVE chunk!");let Q;switch(o){default:d=!0,Q=new Float32Array(B.size/C);break;case oo.PCM:Q=Dr(B,C);break;case oo.ALAW:Q=kr(B,C);break}let c=NA(n,"INFO"),p=`Unnamed ${A}`;if(c){let b=_(c.chunkData);for(;b.header!=="INAM"&&c.chunkData.currentIndex<c.chunkData.length;)b=_(c.chunkData);b.header==="INAM"&&(p=X(b.chunkData,b.size).trim())}let f=60,y=0,F=0,L=Q.length-1,T=0,J=n.find(b=>b.header==="wsmp");if(J){w(J.chunkData,4),f=w(J.chunkData,2),y=se(J.chunkData[J.chunkData.currentIndex++],J.chunkData[J.chunkData.currentIndex++]);let b=Math.trunc(y/100);if(f+=b,y-=b*100,T=(w(J.chunkData,4)|0)/-655360,w(J.chunkData,4),w(J.chunkData,4)===1){w(J.chunkData,8),F=w(J.chunkData,4);let P=w(J.chunkData,4);L=F+P}}else v("No wsmp chunk in wave... using sane defaults.");d&&console.error(`Failed to load '${p}': Unsupported format: (${o})`),this.samples.push(new ft(p,g,f,y,F,L,Q,T)),A++,m(`%cLoaded sample %c${p}`,a.info,a.recognized)}O()}var ee=class extends ge{constructor(A){super(),this.dataArray=new M(A),$A("%cParsing DLS...",a.info),this.dataArray||(O(),this.parsingError("No data provided!"));let t=_(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(X(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push(_(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 s=NA(n,"INFO");if(s)for(;s.chunkData.currentIndex<s.chunkData.length;){let E=_(s.chunkData);this.soundFontInfo[E.header]=X(E.chunkData,E.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
16
16
  `+this.soundFontInfo.ISBJ,delete this.soundFontInfo.ISBJ),this.soundFontInfo.ICMT+=`
17
- Converted from DLS to SF2 with SpessaSynth`;for(let[C,B]of Object.entries(this.soundFontInfo))m(`%c"${C}": %c"${B}"`,g.info,g.recognized);let o=n.find(C=>C.header==="colh");o||(W(),this.parsingError("No colh chunk!")),this.instrumentAmount=G(o.chunkData,4),m(`%cInstruments amount: %c${this.instrumentAmount}`,g.info,g.recognized);let i=NA(n,"wvpl");i||(W(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(i);let a=NA(n,"lins");a||(W(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(a),this.presets.sort((C,B)=>C.program-B.program+(C.bank-B.bank)),m(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
18
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,g.info,g.recognized,g.info,g.recognized,g.info,g.recognized,g.info,g.recognized,g.info),W()}verifyHeader(A,...e){for(let n of e)if(A.header.toLowerCase()===n.toLowerCase())return;W(),this.parsingError(`Invalid DLS chunk header! Expected "${e.toString()}" got "${A.header.toLowerCase()}"`)}verifyText(A,e){A.toLowerCase()!==e.toLowerCase()&&(W(),this.parsingError(`FourCC error: Expected "${e.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};ee.prototype.readDLSInstrumentList=xo;ee.prototype.readDLSInstrument=No;ee.prototype.readRegion=To;ee.prototype.readLart=Uo;ee.prototype.readDLSSamples=Ho;var rn=class extends ae{constructor(A,e,n,s,o,i,a,C,B,d,c,Q,l){super(A,i,a,C,B,d,s-e/2,o-e/2),this.sampleName=A,this.sampleStartIndex=e,this.sampleEndIndex=n,this.isSampleLoaded=!1,this.sampleID=Q,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=c,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=l}getRawData(){let A=this.sampleDataArray;if(this.isCompressed){if(this.compressedData)return this.compressedData;let e=A.currentIndex;return A.slice(this.sampleStartIndex/2+e,this.sampleEndIndex/2+e)}else{this.isDataRaw||super.getRawData();let e=A.currentIndex;return A.slice(e+this.sampleStartIndex,e+this.sampleEndIndex)}}decodeVorbis(){if(this.sampleLength<1)return;let A=this.sampleDataArray,e=A.currentIndex,n=A.slice(this.sampleStartIndex/2+e,this.sampleEndIndex/2+e);this.sampleData=new Float32Array(0);try{let s=zA.decode(n.buffer);this.sampleData=s.data[0]}catch(s){v(`Error decoding sample ${this.sampleName}: ${s}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?new Float32Array(1):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return v("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),e=this.sampleDataArray.currentIndex,n=new Int16Array(this.sampleDataArray.slice(e+this.sampleStartIndex,e+this.sampleEndIndex).buffer);for(let s=0;s<n.length;s++)A[s]=n[s]/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 Yo(t,A,e=!0){let n=[],s=0;for(;t.chunkData.length>t.chunkData.currentIndex;){let o=Hr(s,t.chunkData,A,e);n.push(o),s++}return n.length>1&&n.pop(),n}function Hr(t,A,e,n){let s=j(A,20),o=G(A,4)*2,i=G(A,4)*2,a=G(A,4),C=G(A,4),B=G(A,4),d=A[A.currentIndex++];d===255&&(d=60);let c=jn(A[A.currentIndex++]),Q=G(A,2),l=G(A,2);return new rn(s,o,i,a,C,B,d,c,Q,l,e,t,n)}var an=class extends b{constructor(A){super();let e=A.currentIndex;this.generatorType=A[e+1]<<8|A[e],this.generatorValue=re(A[e+2],A[e+3]),A.currentIndex+=4}};function gn(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(new an(t.chunkData));return A.length>1&&A.pop(),A}var In=class extends ge{constructor(A){super(),this.instrumentName=j(A.chunkData,20).trim(),this.instrumentZoneIndex=G(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,e){this.instrumentZonesAmount=A;for(let n=this.instrumentZoneIndex;n<this.instrumentZonesAmount+this.instrumentZoneIndex;n++)this.instrumentZones.push(e[n])}};function Jo(t,A){let e=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let n=new In(t);if(e.length>0){let s=n.instrumentZoneIndex-e[e.length-1].instrumentZoneIndex;e[e.length-1].getInstrumentZones(s,A)}e.push(n)}return e.length>1&&e.pop(),e}var En=class extends GA{constructor(A){super(),this.generatorZoneStartIndex=G(A,2),this.modulatorZoneStartIndex=G(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,e){this.modulatorZoneSize=A,this.generatorZoneSize=e}getGenerators(A){for(let e=this.generatorZoneStartIndex;e<this.generatorZoneStartIndex+this.generatorZoneSize;e++)this.generators.push(A[e])}getModulators(A){for(let e=this.modulatorZoneStartIndex;e<this.modulatorZoneStartIndex+this.modulatorZoneSize;e++)this.modulators.push(A[e])}getSample(A){let e=this.generators.find(n=>n.generatorType===r.sampleID);e&&(this.sample=A[e.generatorValue],this.isGlobal=!1,this.sample.useCount++)}getKeyRange(){let A=this.generators.find(e=>e.generatorType===r.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(e=>e.generatorType===r.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function Po(t,A,e,n){let s=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let o=new En(t.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,a=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,a),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(e),s[s.length-1].getSample(n),s[s.length-1].getKeyRange(),s[s.length-1].getVelRange()}s.push(o)}return s.length>1&&s.pop(),s}var Cn=class extends ie{constructor(A){super(),this.generatorZoneStartIndex=G(A,2),this.modulatorZoneStartIndex=G(A,2),this.modulatorZoneSize=0,this.generatorZoneSize=0,this.isGlobal=!0}setZoneSize(A,e){this.modulatorZoneSize=A,this.generatorZoneSize=e}getGenerators(A){for(let e=this.generatorZoneStartIndex;e<this.generatorZoneStartIndex+this.generatorZoneSize;e++)this.generators.push(A[e])}getModulators(A){for(let e=this.modulatorZoneStartIndex;e<this.modulatorZoneStartIndex+this.modulatorZoneSize;e++)this.modulators.push(A[e])}getInstrument(A){let e=this.generators.find(n=>n.generatorType===r.instrument);e&&(this.instrument=A[e.generatorValue],this.instrument.addUseCount(),this.isGlobal=!1)}getKeyRange(){let A=this.generators.find(e=>e.generatorType===r.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(e=>e.generatorType===r.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function qo(t,A,e,n){let s=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let o=new Cn(t.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,a=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,a),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(e),s[s.length-1].getInstrument(n),s[s.length-1].getKeyRange(),s[s.length-1].getVelRange()}s.push(o)}return s.length>1&&s.pop(),s}var Bn=class extends Ie{constructor(A,e){super(e),this.presetName=j(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=G(A.chunkData,2),this.bank=G(A.chunkData,2),this.presetZoneStartIndex=G(A.chunkData,2),this.library=G(A.chunkData,4),this.genre=G(A.chunkData,4),this.morphology=G(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,e){this.presetZonesAmount=A;for(let n=this.presetZoneStartIndex;n<this.presetZonesAmount+this.presetZoneStartIndex;n++)this.presetZones.push(e[n])}};function Ko(t,A,e){let n=[];for(;t.chunkData.length>t.chunkData.currentIndex;){let s=new Bn(t,e);if(n.length>0){let o=s.presetZoneStartIndex-n[n.length-1].presetZoneStartIndex;n[n.length-1].getPresetZones(o,A)}n.push(s)}return n.length>1&&n.pop(),n}var hn=class extends K{constructor(A){super({srcEnum:G(A,2),dest:G(A,2),amt:re(A[A.currentIndex++],A[A.currentIndex++]),secSrcEnum:G(A,2),transform:G(A,2)})}};function yt(t){let A=[];for(;t.chunkData.length>t.chunkData.currentIndex;)A.push(new hn(t.chunkData));return A}var St=class extends Ee{constructor(A,e=!0){super(),e&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new L(A),he("%cParsing SoundFont...",g.info),this.dataArray||(W(),this.parsingError("No data provided!"));let n=$(this.dataArray,!1);this.verifyHeader(n,"riff");let s=j(this.dataArray,4).toLowerCase();if(s!=="sfbk"&&s!=="sfpk")throw W(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${s}"`);let o=s==="sfpk",i=$(this.dataArray);for(this.verifyHeader(i,"list"),j(i.chunkData,4);i.chunkData.length>i.chunkData.currentIndex;){let Z=$(i.chunkData),aA;switch(Z.header.toLowerCase()){case"ifil":case"iver":aA=`${G(Z.chunkData,2)}.${G(Z.chunkData,2)}`,this.soundFontInfo[Z.header]=aA;break;case"icmt":aA=j(Z.chunkData,Z.chunkData.length,void 0,!1),this.soundFontInfo[Z.header]=aA;break;case"dmod":let rA=yt(Z);rA.pop(),aA=`Modulators: ${rA.length}`;let eA=this.defaultModulators;this.defaultModulators=rA,this.defaultModulators.push(...eA.filter(nA=>!this.defaultModulators.find(hA=>K.isIdentical(nA,hA)))),this.soundFontInfo[Z.header]=Z.chunkData;break;default:aA=j(Z.chunkData,Z.chunkData.length),this.soundFontInfo[Z.header]=aA}m(`%c"${Z.header}": %c"${aA}"`,g.info,g.recognized)}let a=$(this.dataArray,!1);this.verifyHeader(a,"list"),this.verifyText(j(this.dataArray,4),"sdta"),m("%cVerifying smpl chunk...",g.warn);let C=$(this.dataArray,!1);this.verifyHeader(C,"smpl");let B;if(o){m("%cSF2Pack detected, attempting to decode the smpl chunk...",g.info);try{B=zA.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+a.size-12)).data[0]}catch(Z){throw W(),new Error(`SF2Pack Ogg Vorbis decode error: ${Z}`)}m(`%cDecoded the smpl chunk! Length: %c${B.length}`,g.info,g.value)}else B=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;m(`%cSkipping sample chunk, length: %c${a.size-12}`,g.info,g.value),this.dataArray.currentIndex+=a.size-12,m("%cLoading preset data chunk...",g.warn);let d=$(this.dataArray);this.verifyHeader(d,"list"),j(d.chunkData,4);let c=$(d.chunkData);this.verifyHeader(c,"phdr");let Q=$(d.chunkData);this.verifyHeader(Q,"pbag");let l=$(d.chunkData);this.verifyHeader(l,"pmod");let f=$(d.chunkData);this.verifyHeader(f,"pgen");let w=$(d.chunkData);this.verifyHeader(w,"inst");let k=$(d.chunkData);this.verifyHeader(k,"ibag");let F=$(d.chunkData);this.verifyHeader(F,"imod");let y=$(d.chunkData);this.verifyHeader(y,"igen");let N=$(d.chunkData);this.verifyHeader(N,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...Yo(N,B,!o));let M=gn(y),x=yt(F),I=Po(k,M,x,this.samples);this.instruments=Jo(w,I);let P=gn(f),q=yt(l),AA=qo(Q,P,q,this.instruments);this.presets.push(...Ko(c,AA,this.defaultModulators)),this.presets.sort((Z,aA)=>Z.program-aA.program+(Z.bank-aA.bank)),m(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
19
- %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,g.info,g.recognized,g.info,g.recognized,g.info,g.recognized,g.info,g.recognized,g.info),W(),o&&delete this.dataArray}verifyHeader(A,e){A.header.toLowerCase()!==e.toLowerCase()&&(W(),this.parsingError(`Invalid chunk header! Expected "${e.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,e){A.toLowerCase()!==e.toLowerCase()&&(W(),this.parsingError(`Invalid FourCC: Expected "${e.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};function qe(t){let A=t.slice(8,12),e=new L(A);return j(e,4,void 0,!1).toLowerCase()==="dls "?new ee(t):new St(t,!1)}function Oo(t,A,e=!1){let n=this.workletProcessorChannels[t];if(n===void 0){v(`Trying to access channel ${t} which does not exist... ignoring!`);return}if(n.lockPreset)return;let s=XA(n),o,i;if(this.overrideSoundfont){let a=s===128?128:s-this.soundfontBankOffset,C=this.overrideSoundfont.getPresetNoFallback(a,A);C?(o=s,i=C,n.presetUsesOverride=!0):(i=this.soundfontManager.getPreset(s,A),o=i.bank,n.presetUsesOverride=!1)}else i=this.soundfontManager.getPreset(s,A),o=i.bank,n.presetUsesOverride=!1;this.setPreset(t,i),this.callEvent("programchange",{channel:t,program:i.program,bank:o,userCalled:e})}function Vo(t,A){if(this.overrideSoundfont){let e=t===128?128:t-this.soundfontBankOffset,n=this.overrideSoundfont.getPresetNoFallback(e,A);if(n)return n}return this.soundfontManager.getPreset(t,A)}function Zo(t,A){if(!this.workletProcessorChannels[t].lockPreset){delete this.workletProcessorChannels[t].preset,this.workletProcessorChannels[t].preset=A,this.workletProcessorChannels[t].cachedVoices=[];for(let e=0;e<128;e++)this.workletProcessorChannels[t].cachedVoices.push([])}}function Wo(t,A){let e=this.workletProcessorChannels[t];e.lockPreset||e.drumChannel!==A&&(A?(e.channelTransposeKeyShift=0,e.drumChannel=!0,this.setPreset(t,this.getPreset(XA(e),e.preset.program))):(e.drumChannel=!1,this.setPreset(t,this.getPreset(XA(e),e.preset.program))),e.presetUsesOverride=!1,this.callEvent("drumchange",{channel:t,isDrumChannel:e.drumChannel}),this.sendChannelProperties())}function Xo(){let t=this.soundfontManager.getPresetList();this.overrideSoundfont!==void 0&&this.overrideSoundfont.presets.forEach(A=>{let e=A.bank===128?128:A.bank+this.soundfontBankOffset,n=t.find(s=>s.bank===e&&s.program===A.program);n!==void 0?n.presetName=A.presetName:t.push({presetName:A.presetName,bank:e,program:A.program})}),this.callEvent("presetlistchange",t)}function _o(t=!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);for(let e=0;e<this.workletProcessorChannels.length;e++){let n=this.workletProcessorChannels[e];n.cachedVoices=[];for(let s=0;s<128;s++)n.cachedVoices.push([]);(!A||A&&n.presetUsesOverride)&&(n.lockPreset=!1),this.programChange(e,n.preset.program)}t&&this.sendPresetList()}function zo(t,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=qe(t),this.overrideSoundfont.setSampleIDOffset(this.soundfontManager.totalSoundfontOffset)):this.soundfontManager.reloadManager(t)}catch(e){this.post({messageType:FA.soundfontError,messageData:e});return}this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels.forEach((e,n)=>{this.programChange(n,e.preset.program)}),this.post({messageType:FA.ready,messageData:void 0}),this.sendPresetList(),m("%cSpessaSynth is ready!",g.recognized)}function jo(t,A){this.soundfontBankOffset=A,this.reloadSoundFont(t,!0),this.overrideSoundfont.samples.forEach(e=>e.getAudioData()),this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers())}var Dt=class t{program;bank;patchName;lockPreset;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;keyCentTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,e){let n=A.workletProcessorChannels[e],s=new t;return s.program=n.preset.program,s.bank=XA(n),s.lockPreset=n.lockPreset,s.patchName=n.preset.presetName,s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.channelVibrato=n.channelVibrato,s.lockVibrato=n.lockGSNRPNParams,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.keyCentTuning=n.keyCentTuning,s.isMuted=n.isMuted,s.velocityOverride=n.velocityOverride,s.drumChannel=n.drumChannel,s}static applyChannelSnapshot(A,e,n){let s=A.workletProcessorChannels[e];A.muteChannel(e,n.isMuted),A.setDrums(e,n.drumChannel),s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.channelVibrato=n.channelVibrato,s.lockGSNRPNParams=n.lockVibrato,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.velocityOverride=n.velocityOverride,s.lockPreset=!1,oe(s,n.bank),A.programChange(e,n.program),s.lockPreset=n.lockPreset}},kt=class t{channelSnapshots;keyMappings;mainVolume;pan;interpolation;system;transposition;effectsConfig;static createSynthesizerSnapshot(A){let e=new t;return e.channelSnapshots=A.workletProcessorChannels.map((n,s)=>Dt.getChannelSnapshot(A,s)),e.keyMappings=A.keyModifierManager.getMappings(),e.mainVolume=A.midiVolume,e.pan=A.pan,e.system=A.system,e.interpolation=A.interpolationType,e.transposition=A.transposition,e.effectsConfig={},e}static applySnapshot(A,e){for(A.system=e.system,A.setMasterGain(e.mainVolume),A.setMasterPan(e.pan),A.transposeAllChannels(e.transposition),A.interpolationType=e.interpolation,A.keyModifierManager.setMappings(e.keyMappings);A.workletProcessorChannels.length<e.channelSnapshots.length;)A.createWorkletChannel();e.channelSnapshots.forEach((n,s)=>{Dt.applyChannelSnapshot(A,s,n)}),m("%cFinished restoring controllers!",g.info)}};function $o(){this.post({messageType:FA.synthesizerSnapshot,messageData:kt.createSynthesizerSnapshot(this)})}function Ar(t){kt.applySnapshot(this,t),m("%cFinished applying snapshot!",g.info)}var wt=class{constructor(A,e){this.ready=e,this.totalSoundfontOffset=0,this.reloadManager(A)}_assingSampleOffsets(){let A=0;this.soundfontList.forEach(e=>{e.soundfont.setSampleIDOffset(A),A+=e.soundfont.samples.length}),this.totalSoundfontOffset=A}generatePresetList(){this._assingSampleOffsets();let A={};for(let e=this.soundfontList.length-1;e>=0;e--){let n=this.soundfontList[e],s=new Set;for(let o of n.soundfont.presets){let i=`${o.bank+n.bankOffset}-${o.program}`;s.has(i)||(s.add(i),A[i]=o.presetName)}}this.presetList=[];for(let[e,n]of Object.entries(A)){let s=e.split("-");this.presetList.push({presetName:n,program:parseInt(s[1]),bank:parseInt(s[0])})}}handleMessage(A,e){switch(A){case De.addNewSoundFont:this.addNewSoundFont(e[0],e[1],e[2]);break;case De.reloadSoundFont:this.reloadManager(e);break;case De.deleteSoundFont:this.deleteSoundFont(e);break;case De.rearrangeSoundFonts:this.rearrangeSoundFonts(e)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let e=qe(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:e}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){v("1 soundfont left. Aborting!");return}let e=this.soundfontList.findIndex(n=>n.id===A);if(e===-1){v(`No soundfont with id of "${A}" found. Aborting!`);return}delete this.soundfontList[e].soundfont.presets,delete this.soundfontList[e].soundfont.instruments,delete this.soundfontList[e].soundfont.samples,this.soundfontList.splice(e,1),this.generatePresetList()}addNewSoundFont(A,e,n){if(this.soundfontList.find(s=>s.id===e)!==void 0)throw new Error("Cannot overwrite the existing soundfont. Use soundfontManager.delete(id) instead.");this.soundfontList.push({id:e,soundfont:qe(A),bankOffset:n}),this.generatePresetList(),this.ready()}rearrangeSoundFonts(A){this.soundfontList.sort((e,n)=>A.indexOf(e.id)-A.indexOf(n.id)),this.generatePresetList()}getPreset(A,e){if(this.soundfontList.length<1)throw new Error("No soundfonts! This should never happen.");for(let n of this.soundfontList){let s=n.soundfont.getPresetNoFallback(A-n.bankOffset,e);if(s!==void 0)return s}if(A!==128){for(let n of this.soundfontList){let s=n.soundfont.presets.find(o=>o.program===e);if(s)return s}return this.soundfontList[0].soundfont.presets[0]}else{for(let n of this.soundfontList){let s=n.soundfont.presets.find(o=>o.bank===128);if(s)return s}return this.soundfontList[0].soundfont.presets[0]}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundfont()}),delete this.soundfontList}};var Ft=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,e,n,s,o,i,a,C){this.sampleData=A,this.playbackStep=e,this.cursor=n,this.rootKey=s,this.loopStart=o,this.loopEnd=i,this.end=a,this.loopingMode=C,this.isLooping=this.loopingMode===1||this.loopingMode===3}},Ke=class t{sample;filter=new Me;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new qA;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;constructor(A,e,n,s,o,i,a,C,B,d){this.sample=e,this.generators=B,this.modulatedGenerators=new Int16Array(B),this.modulators=d,this.velocity=s,this.midiNote=n,this.channelNumber=o,this.startTime=i,this.targetKey=a,this.realKey=C,this.volumeEnvelope=new KA(A,B[r.sustainVolEnv])}static copy(A,e){let n=A.sample,s=new Ft(n.sampleData,n.playbackStep,n.cursor,n.rootKey,n.loopStart,n.loopEnd,n.end,n.loopingMode);return new t(A.volumeEnvelope.sampleRate,s,A.midiNote,A.velocity,A.channelNumber,e,A.targetKey,A.realKey,A.generators,A.modulators.map(o=>K.copy(o)))}};function er(t,A,e,n,s,o,i=!1){let a,C=n.cachedVoices[A]?.[e],B=this.keyModifierManager.hasOverridePatch(t,A);if(C!==void 0&&!B)return C.map(Q=>Ke.copy(Q,s));let d=!0,c=n.preset;if(B){d=!1;let Q=this.keyModifierManager.getPatch(t,A);c=this.soundfontManager.getPreset(Q.bank,Q.program)}return a=c.getSamplesAndGenerators(A,e).reduce((Q,l)=>{if(l.sample.sampleData===void 0)return v(`Discarding invalid sample: ${l.sample.sampleName}`),Q;let f=new Int16Array(60);for(let x=0;x<60;x++)f[x]=Kn(x,l.presetGenerators,l.instrumentGenerators);f[r.initialAttenuation]=Math.floor(f[r.initialAttenuation]*.4);let w=l.sample.samplePitch;f[r.overridingRootKey]>-1&&(w=f[r.overridingRootKey]);let k=A;f[r.keyNum]>-1&&(k=f[r.keyNum]);let F=l.sample.sampleLoopStartIndex,y=l.sample.sampleLoopEndIndex,N=f[r.sampleModes],M=new Ft(l.sample.getAudioData(),l.sample.sampleRate/sampleRate*Math.pow(2,l.sample.samplePitchCorrection/1200),0,w,F,y,Math.floor(l.sample.sampleData.length)-1,N);return f[r.velocity]>-1&&(e=f[r.velocity]),i&&qn([{Sample:l.sample.sampleName,Generators:f,Modulators:l.modulators.map(x=>x.debugString()),Velocity:e,TargetKey:k,MidiNote:A,WorkletSample:M}]),Q.push(new Ke(sampleRate,M,A,e,t,s,k,o,f,l.modulators.map(x=>K.copy(x)))),Q},[]),d&&(n.cachedVoices[A][e]=a.map(Q=>Ke.copy(Q,s))),a}var nr=.1,Yr=4600,Jr=2e3,tr=Math.PI/2,Rt=-500,sr=500,cn=sr-Rt,or=new Float32Array(cn+1),rr=new Float32Array(cn+1);for(let t=Rt;t<=sr;t++){let A=(t-Rt)/cn,e=t-Rt;or[e]=Math.cos(tr*A),rr[e]=Math.sin(tr*A)}function ir(t,A,e,n,s,o){if(isNaN(A[0]))return;let i;t.overridePan?i=t.overridePan:(i=Math.max(-500,Math.min(500,t.modulatedGenerators[r.pan])),t.currentPan+=(i-t.currentPan)*this.panSmoothingFactor);let a=this.currentGain,C=~~(i+500),B=or[C]*a*this.panLeft,d=rr[C]*a*this.panRight;if(!this.oneOutputMode){let c=this.reverbGain*t.modulatedGenerators[r.reverbEffectsSend]/Yr*a,Q=this.chorusGain*t.modulatedGenerators[r.chorusEffectsSend]/Jr;if(c>0){let l=s[0],f=s[1];for(let w=0;w<A.length;w++)l[w]+=c*A[w],f[w]+=c*A[w]}if(Q>0){let l=o[0],f=o[1],w=B*Q,k=d*Q;for(let F=0;F<A.length;F++)l[F]+=w*A[F],f[F]+=k*A[F]}}if(B>0)for(let c=0;c<A.length;c++)e[c]+=B*A[c];if(d>0)for(let c=0;c<A.length;c++)n[c]+=d*A[c]}var Ss=.03,bs=.07,sn=1,V=class extends AudioWorkletProcessor{constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem,this.alive=!0,this.deviceID=LA,this.interpolationType=Ge.fourthOrder,this.sequencer=new BA(this),this.transposition=0,this.tunings=[];for(let e=0;e<127;e++)this.tunings.push([]);this.soundfontBankOffset=0,this.masterGain=sn,this.midiVolume=1,this.reverbGain=1,this.chorusGain=1,this.voiceCap=Zn,this.pan=0,this.panLeft=.5,this.highPerformanceMode=!1,this.keyModifierManager=new nt,this.overrideSoundfont=void 0,this.panRight=.5;try{this.soundfontManager=new wt(A.processorOptions.soundfont,this.postReady.bind(this))}catch(e){throw this.post({messageType:FA.soundfontError,messageData:e}),e}this.sendPresetList(),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels=[];for(let e=0;e<A.processorOptions.midiChannels;e++)this.createWorkletChannel(!1);this.workletProcessorChannels[xA].preset=this.drumPreset,this.workletProcessorChannels[xA].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=fs*(44100/sampleRate),this.panSmoothingFactor=nr*(44100/sampleRate),this.system=ot,this.totalVoicesAmount=0,this._snapshot=A.processorOptions?.startRenderingData?.snapshot,this.port.onmessage=e=>this.handleMessage(e.data),A.processorOptions.startRenderingData&&(this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers()),m("%cRendering enabled! Starting render.",g.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]))),zA.isInitialized.then(()=>{this.postReady(),m("%cSpessaSynth is ready!",g.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:FA.ready,messageData:void 0})}debugMessage(){m({channels:this.workletProcessorChannels,voicesAmount:this.totalVoicesAmount,outputAmount:this._outputsAmount,dumpedSamples:this.workletDumpedSamplesList})}process(A,e){if(!this.alive)return!1;this.sequencer.processTick();let n=0;return this.workletProcessorChannels.forEach((s,o)=>{if(s.voices.length<1||s.isMuted)return;let i,a,C,B,d;if(this.oneOutputMode){let c=e[0];i=o%16*2,a=c[i],C=c[i+1]}else i=o%this._outputsAmount+2,a=e[i][0],C=e[i][1],B=e[0],d=e[1];s.voices=s.voices.filter(c=>(this.renderVoice(s,c,a,C,B,d),!c.finished)),n+=s.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.cachedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}};V.prototype.renderVoice=ms;V.prototype.releaseVoice=ys;V.prototype.voiceKilling=ps;V.prototype.getWorkletVoices=er;V.prototype.handleMessage=ws;V.prototype.sendChannelProperties=Rs;V.prototype.callEvent=Fs;V.prototype.systemExclusive=Gs;V.prototype.noteOn=Ns;V.prototype.noteOff=Ls;V.prototype.polyPressure=Zs;V.prototype.killNote=Us;V.prototype.stopAll=Ts;V.prototype.stopAllChannels=vs;V.prototype.muteChannel=$s;V.prototype.setVibrato=eo;V.prototype.disableAndLockGSNRPN=Ao;V.prototype.dataEntryCoarse=to;V.prototype.dataEntryFine=no;V.prototype.createWorkletChannel=On;V.prototype.controllerChange=Xs;V.prototype.channelPressure=Vs;V.prototype.resetAllControllers=so;V.prototype.resetControllers=oo;V.prototype.resetParameters=ro;V.prototype.setMasterGain=zs;V.prototype.setMasterPan=js;V.prototype.setMIDIVolume=_s;V.prototype.transposeAllChannels=Hs;V.prototype.transposeChannel=Ys;V.prototype.setChannelTuning=Js;V.prototype.setChannelTuningSemitones=Ps;V.prototype.setMasterTuning=qs;V.prototype.setModulationDepth=Ks;V.prototype.pitchWheel=Os;V.prototype.setOctaveTuning=Ws;V.prototype.programChange=Oo;V.prototype.getPreset=Vo;V.prototype.setPreset=Zo;V.prototype.setDrums=Wo;V.prototype.reloadSoundFont=zo;V.prototype.clearSoundFont=_o;V.prototype.setEmbeddedSoundFont=jo;V.prototype.sendPresetList=Xo;V.prototype.sendSynthesizerSnapshot=$o;V.prototype.applySynthesizerSnapshot=Ar;V.prototype.panVoice=ir;registerProcessor(Vn,V);m("%cProcessor succesfully registered!",g.recognized);
17
+ Converted from DLS to SF2 with SpessaSynth`;for(let[E,C]of Object.entries(this.soundFontInfo))m(`%c"${E}": %c"${C}"`,a.info,a.recognized);let o=n.find(E=>E.header==="colh");o||(O(),this.parsingError("No colh chunk!")),this.instrumentAmount=w(o.chunkData,4),m(`%cInstruments amount: %c${this.instrumentAmount}`,a.info,a.recognized);let i=NA(n,"wvpl");i||(O(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(i);let g=NA(n,"lins");g||(O(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(g),this.presets.sort((E,C)=>E.program-C.program+(E.bank-C.bank)),m(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
18
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info),O()}verifyHeader(A,...t){for(let n of t)if(A.header.toLowerCase()===n.toLowerCase())return;O(),this.parsingError(`Invalid DLS chunk header! Expected "${t.toString()}" got "${A.header.toLowerCase()}"`)}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(O(),this.parsingError(`FourCC error: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"`))}parsingError(A){throw new Error(`DLS parse error: ${A} The file may be corrupted.`)}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};ee.prototype.readDLSInstrumentList=$s;ee.prototype.readDLSInstrument=Ao;ee.prototype.readRegion=so;ee.prototype.readLart=no;ee.prototype.readDLSSamples=ro;var en=class extends re{constructor(A,t,n,s,o,i,g,E,C,d,B,Q,c){super(A,i,g,E,C,d,s-t/2,o-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=B,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=c}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 s=zA.decode(n.buffer);this.sampleData=s.data[0]}catch(s){v(`Error decoding sample ${this.sampleName}: ${s}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?new Float32Array(1):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return v("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 s=0;s<n.length;s++)A[s]=n[s]/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 io(e,A,t=!0){let n=[],s=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let o=wr(s,e.chunkData,A,t);n.push(o),s++}return n.length>1&&n.pop(),n}function wr(e,A,t,n){let s=X(A,20),o=w(A,4)*2,i=w(A,4)*2,g=w(A,4),E=w(A,4),C=w(A,4),d=A[A.currentIndex++];d===255&&(d=60);let B=_n(A[A.currentIndex++]),Q=w(A,2),c=w(A,2);return new en(s,o,i,g,E,C,d,B,Q,c,t,e,n)}var tn=class extends G{constructor(A){super();let t=A.currentIndex;this.generatorType=A[t+1]<<8|A[t],this.generatorValue=se(A[t+2],A[t+3]),A.currentIndex+=4}};function nn(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new tn(e.chunkData));return A.length>1&&A.pop(),A}var sn=class extends ie{constructor(A){super(),this.instrumentName=X(A.chunkData,20).trim(),this.instrumentZoneIndex=w(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 ao(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let n=new sn(e);if(t.length>0){let s=n.instrumentZoneIndex-t[t.length-1].instrumentZoneIndex;t[t.length-1].getInstrumentZones(s,A)}t.push(n)}return t.length>1&&t.pop(),t}var on=class extends GA{constructor(A){super(),this.generatorZoneStartIndex=w(A,2),this.modulatorZoneStartIndex=w(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===r.sampleID);t&&(this.sample=A[t.generatorValue],this.isGlobal=!1,this.sample.useCount++)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===r.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===r.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function go(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new on(e.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,g),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(t),s[s.length-1].getSample(n),s[s.length-1].getKeyRange(),s[s.length-1].getVelRange()}s.push(o)}return s.length>1&&s.pop(),s}var rn=class extends oe{constructor(A){super(),this.generatorZoneStartIndex=w(A,2),this.modulatorZoneStartIndex=w(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===r.instrument);t&&(this.instrument=A[t.generatorValue],this.instrument.addUseCount(),this.isGlobal=!1)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===r.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===r.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function Io(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new rn(e.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,g=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,g),s[s.length-1].getGenerators(A),s[s.length-1].getModulators(t),s[s.length-1].getInstrument(n),s[s.length-1].getKeyRange(),s[s.length-1].getVelRange()}s.push(o)}return s.length>1&&s.pop(),s}var an=class extends ae{constructor(A,t){super(t),this.presetName=X(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=w(A.chunkData,2),this.bank=w(A.chunkData,2),this.presetZoneStartIndex=w(A.chunkData,2),this.library=w(A.chunkData,4),this.genre=w(A.chunkData,4),this.morphology=w(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 Eo(e,A,t){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new an(e,t);if(n.length>0){let o=s.presetZoneStartIndex-n[n.length-1].presetZoneStartIndex;n[n.length-1].getPresetZones(o,A)}n.push(s)}return n.length>1&&n.pop(),n}var gn=class extends K{constructor(A){super({srcEnum:w(A,2),dest:w(A,2),amt:se(A[A.currentIndex++],A[A.currentIndex++]),secSrcEnum:w(A,2),transform:w(A,2)})}};function mt(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new gn(e.chunkData));return A}var pt=class extends ge{constructor(A,t=!0){super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new M(A),$A("%cParsing SoundFont...",a.info),this.dataArray||(O(),this.parsingError("No data provided!"));let n=_(this.dataArray,!1);this.verifyHeader(n,"riff");let s=X(this.dataArray,4).toLowerCase();if(s!=="sfbk"&&s!=="sfpk")throw O(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${s}"`);let o=s==="sfpk",i=_(this.dataArray);for(this.verifyHeader(i,"list"),X(i.chunkData,4);i.chunkData.length>i.chunkData.currentIndex;){let tA=_(i.chunkData),CA;switch(tA.header.toLowerCase()){case"ifil":case"iver":CA=`${w(tA.chunkData,2)}.${w(tA.chunkData,2)}`,this.soundFontInfo[tA.header]=CA;break;case"icmt":CA=X(tA.chunkData,tA.chunkData.length,void 0,!1),this.soundFontInfo[tA.header]=CA;break;case"dmod":let BA=mt(tA);BA.pop(),CA=`Modulators: ${BA.length}`;let lA=this.defaultModulators;this.defaultModulators=BA,this.defaultModulators.push(...lA.filter($=>!this.defaultModulators.find(uA=>K.isIdentical($,uA)))),this.soundFontInfo[tA.header]=tA.chunkData;break;default:CA=X(tA.chunkData,tA.chunkData.length),this.soundFontInfo[tA.header]=CA}m(`%c"${tA.header}": %c"${CA}"`,a.info,a.recognized)}let g=_(this.dataArray,!1);this.verifyHeader(g,"list"),this.verifyText(X(this.dataArray,4),"sdta"),m("%cVerifying smpl chunk...",a.warn);let E=_(this.dataArray,!1);this.verifyHeader(E,"smpl");let C;if(o){m("%cSF2Pack detected, attempting to decode the smpl chunk...",a.info);try{C=zA.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+g.size-12)).data[0]}catch(tA){throw O(),new Error(`SF2Pack Ogg Vorbis decode error: ${tA}`)}m(`%cDecoded the smpl chunk! Length: %c${C.length}`,a.info,a.value)}else C=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;m(`%cSkipping sample chunk, length: %c${g.size-12}`,a.info,a.value),this.dataArray.currentIndex+=g.size-12,m("%cLoading preset data chunk...",a.warn);let d=_(this.dataArray);this.verifyHeader(d,"list"),X(d.chunkData,4);let B=_(d.chunkData);this.verifyHeader(B,"phdr");let Q=_(d.chunkData);this.verifyHeader(Q,"pbag");let c=_(d.chunkData);this.verifyHeader(c,"pmod");let p=_(d.chunkData);this.verifyHeader(p,"pgen");let f=_(d.chunkData);this.verifyHeader(f,"inst");let y=_(d.chunkData);this.verifyHeader(y,"ibag");let F=_(d.chunkData);this.verifyHeader(F,"imod");let L=_(d.chunkData);this.verifyHeader(L,"igen");let T=_(d.chunkData);this.verifyHeader(T,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...io(T,C,!o));let J=nn(L),b=mt(F),I=go(y,J,b,this.samples);this.instruments=ao(f,I);let j=nn(p),P=mt(c),iA=Io(Q,j,P,this.instruments);this.presets.push(...Eo(B,iA,this.defaultModulators)),this.presets.sort((tA,CA)=>tA.program-CA.program+(tA.bank-CA.bank)),m(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
19
+ %c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info),O(),o&&delete this.dataArray}verifyHeader(A,t){A.header.toLowerCase()!==t.toLowerCase()&&(O(),this.parsingError(`Invalid chunk header! Expected "${t.toLowerCase()}" got "${A.header.toLowerCase()}"`))}verifyText(A,t){A.toLowerCase()!==t.toLowerCase()&&(O(),this.parsingError(`Invalid FourCC: Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"\``))}destroySoundfont(){super.destroySoundfont(),delete this.dataArray}};function Ye(e){let A=e.slice(8,12),t=new M(A);return X(t,4,void 0,!1).toLowerCase()==="dls "?new ee(e):new pt(e,!1)}var yt=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],s=new Set;for(let o of n.soundfont.presets){let i=`${o.bank+n.bankOffset}-${o.program}`;s.has(i)||(s.add(i),A[i]=o.presetName)}}this.presetList=[];for(let[t,n]of Object.entries(A)){let s=t.split("-");this.presetList.push({presetName:n,program:parseInt(s[1]),bank:parseInt(s[0])})}}handleMessage(A,t){switch(A){case fe.addNewSoundFont:this.addNewSoundFont(t[0],t[1],t[2]);break;case fe.reloadSoundFont:this.reloadManager(t);break;case fe.deleteSoundFont:this.deleteSoundFont(t);break;case fe.rearrangeSoundFonts:this.rearrangeSoundFonts(t)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let t=Ye(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:t}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){v("1 soundfont left. Aborting!");return}let t=this.soundfontList.findIndex(n=>n.id===A);if(t===-1){v(`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(s=>s.id===t)!==void 0)throw new Error("Cannot overwrite the existing soundfont. Use soundfontManager.delete(id) instead.");this.soundfontList.push({id:t,soundfont:Ye(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 s=n.soundfont.getPresetNoFallback(A-n.bankOffset,t);if(s!==void 0)return s}if(A!==128){for(let n of this.soundfontList){let s=n.soundfont.presets.find(o=>o.program===t);if(s)return s}return this.soundfontList[0].soundfont.presets[0]}else{for(let n of this.soundfontList){let s=n.soundfont.presets.find(o=>o.bank===128);if(s)return s}return this.soundfontList[0].soundfont.presets[0]}}destroyManager(){this.soundfontList.forEach(A=>{A.soundfont.destroySoundfont()}),delete this.soundfontList}};var ke={linear:0,nearestNeighbor:1,fourthOrder:2},De=class{static getSampleLinear(A,t){let n=A.sample,s=n.cursor,o=n.sampleData;if(n.isLooping){let i=n.loopEnd-n.loopStart;for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=i;let E=~~s,C=E+1;for(;C>=n.loopEnd;)C-=i;let d=s-E,B=o[C],Q=o[E];t[g]=Q+(B-Q)*d,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let i=0;i<t.length;i++){let g=~~s,E=g+1;if(E>=n.end){A.finished=!0;return}let C=s-g,d=o[E],B=o[g];t[i]=B+(d-B)*C,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}static getSampleNearest(A,t){let n=A.sample,s=n.cursor,o=n.loopEnd-n.loopStart,i=n.sampleData;if(A.sample.isLooping)for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=o;let E=~~s+1;for(;E>=n.loopEnd;)E-=o;t[g]=i[E],s+=n.playbackStep*A.currentTuningCalculated}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let g=0;g<t.length;g++){let E=~~s+1;if(E>=n.end){A.finished=!0;return}t[g]=i[E],s+=n.playbackStep*A.currentTuningCalculated}}n.cursor=s}static getSampleCubic(A,t){let n=A.sample,s=n.cursor,o=n.sampleData;if(n.isLooping){let i=n.loopEnd-n.loopStart;for(let g=0;g<t.length;g++){for(;s>=n.loopEnd;)s-=i;let E=~~s,C=E+1,d=C+1,B=d+1,Q=s-E;C>=n.loopEnd&&(C-=i),d>=n.loopEnd&&(d-=i),B>=n.loopEnd&&(B-=i);let c=o[E],p=o[C],f=o[d],y=o[B],F=.5*(f-c),L=c-2.5*p+2*f-.5*y,T=.5*(y-c)+1.5*(p-f);t[g]=((T*Q+L)*Q+F)*Q+p,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let i=0;i<t.length;i++){let g=~~s,E=g+1,C=E+1,d=C+1,B=s-g;if(E>=n.end||C>=n.end||d>=n.end){A.finished=!0;return}let Q=o[g],c=o[E],p=o[C],f=o[d],y=.5*(p-Q),F=Q-2.5*c+2*p-.5*f,L=.5*(f-Q)+1.5*(c-p);t[i]=((L*B+F)*B+y)*B+c,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}};var we=class e{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;reasonanceCb=0;cutoffCents=13501;static apply(A,t,n,s){if(s&&n>13499&&A.filter.reasonanceCb===0)return;let o=A.filter;(o.cutoffCents!==n||o.reasonanceCb!==A.modulatedGenerators[r.initialFilterQ])&&(o.cutoffCents=n,o.reasonanceCb=A.modulatedGenerators[r.initialFilterQ],e.calculateCoefficients(o));for(let i=0;i<t.length;i++){let g=t[i],E=o.a0*g+o.a1*o.x1+o.a2*o.x2-o.a3*o.y1-o.a4*o.y2;o.x2=o.x1,o.x1=g,o.y2=o.y1,o.y1=E,t[i]=E}}static calculateCoefficients(A){let t=~~A.cutoffCents,n=A.reasonanceCb;if(e.cachedCoefficients?.[n]?.[t]===void 0){let o=Te(t);o=Math.min(o,.45*sampleRate);let i=n/10,g=KA(-1*(i-3.01)),E=1/Math.sqrt(KA(-i)),C=2*Math.PI*o/sampleRate,d=Math.cos(C),B=Math.sin(C)/(2*g),Q=(1-d)*E,c=Q/2,p=c,f=1+B,y=-2*d,F=1-B,L={};L.a0=c/f,L.a1=Q/f,L.a2=p/f,L.a3=y/f,L.a4=F/f,e.cachedCoefficients[n]===void 0&&(e.cachedCoefficients[n]=[]),e.cachedCoefficients[n][t]=L}let s=e.cachedCoefficients[n][t];A.a0=s.a0,A.a1=s.a1,A.a2=s.a2,A.a3=s.a3,A.a4=s.a4}};var mA=16384,te=new Float32Array(mA+1),he=new Float32Array(mA+1);te[0]=0;te[te.length-1]=1;he[0]=0;he[he.length-1]=1;for(let e=1;e<mA-1;e++){let A=-.4166666666666667*Math.log(e/(te.length-1))/Math.LN10;he[e]=1-A,te[te.length-1-e]=A}function Be(e,A,t,n){switch(e&&(t=1-t),A){case dA.linear:return n?t*2-1:t;case dA.switch:return t=t>.5?1:0,n?t*2-1:t;case dA.concave:return n?(t=t*2-1,t<0?-te[~~(t*-mA)]:te[~~(t*mA)]):te[~~(t*mA)];case dA.convex:return n?(t=t*2-1,t<0?-he[~~(t*-mA)]:he[~~(t*mA)]):he[~~(t*mA)]}}var In=1,En=new Float32Array(1e3);for(let e=0;e<En.length;e++)En[e]=Be(0,dA.convex,e/1e3,0);var OA=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[r.sustainModEnv]/1e3,t.attackDuration=ZA(A.modulatedGenerators[r.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvDecay],s=ZA(A.modulatedGenerators[r.decayModEnv]+n);t.decayDuration=s*(1-t.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvHold];t.holdDuration=ZA(o+A.modulatedGenerators[r.holdModEnv]);let i=ZA(A.modulatedGenerators[r.releaseModEnv]);t.releaseDuration=i*t.releaseStartLevel,t.delayEnd=A.startTime+ZA(A.modulatedGenerators[r.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 s=A.modulationEnvelope;return A.isInRelease&&!n?s.releaseStartLevel===0?0:Math.max(0,(1-(t-A.releaseStartTime)/s.releaseDuration)*s.releaseStartLevel):(t<s.delayEnd?s.currentValue=0:t<s.attackEnd?s.currentValue=En[~~((1-(s.attackEnd-t)/s.attackDuration)*1e3)]:t<s.holdEnd?s.currentValue=In:t<s.decayEnd?s.currentValue=(1-(s.decayEnd-t)/s.decayDuration)*(s.sustainLevel-In)+In:s.currentValue=s.sustainLevel,s.currentValue)}};var St=class{sampleData;playbackStep=0;cursor=0;rootKey=0;loopStart=0;loopEnd=0;end=0;loopingMode=0;isLooping=!1;constructor(A,t,n,s,o,i,g,E){this.sampleData=A,this.playbackStep=t,this.cursor=n,this.rootKey=s,this.loopStart=o,this.loopEnd=i,this.end=g,this.loopingMode=E,this.isLooping=this.loopingMode===1||this.loopingMode===3}},Je=class e{sample;filter=new we;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new OA;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;constructor(A,t,n,s,o,i,g,E,C,d){this.sample=t,this.generators=C,this.modulatedGenerators=new Int16Array(C),this.modulators=d,this.velocity=s,this.midiNote=n,this.channelNumber=o,this.startTime=i,this.targetKey=g,this.realKey=E,this.volumeEnvelope=new PA(A,C[r.sustainVolEnv])}static copy(A,t){let n=A.sample,s=new St(n.sampleData,n.playbackStep,n.cursor,n.rootKey,n.loopStart,n.loopEnd,n.end,n.loopingMode);return new e(A.volumeEnvelope.sampleRate,s,A.midiNote,A.velocity,A.channelNumber,t,A.targetKey,A.realKey,A.generators,A.modulators.map(o=>K.copy(o)))}release(A=ho){this.releaseStartTime=currentTime,this.releaseStartTime-this.startTime<A&&(this.releaseStartTime=this.startTime+A)}};function Co(e,A,t,n,s,o=!1){let i,g=this.workletProcessorChannels[e],E=g.cachedVoices[A]?.[t],C=this.keyModifierManager.hasOverridePatch(e,A);if(E!==void 0&&!C)return E.map(Q=>Je.copy(Q,n));let d=!0,B=g.preset;if(C){d=!1;let Q=this.keyModifierManager.getPatch(e,A);B=this.soundfontManager.getPreset(Q.bank,Q.program)}return i=B.getSamplesAndGenerators(A,t).reduce((Q,c)=>{if(c.sample.sampleData===void 0)return v(`Discarding invalid sample: ${c.sample.sampleName}`),Q;let p=new Int16Array(60);for(let b=0;b<60;b++)p[b]=Kn(b,c.presetGenerators,c.instrumentGenerators);p[r.initialAttenuation]=Math.floor(p[r.initialAttenuation]*.4);let f=c.sample.samplePitch;p[r.overridingRootKey]>-1&&(f=p[r.overridingRootKey]);let y=A;p[r.keyNum]>-1&&(y=p[r.keyNum]);let F=c.sample.sampleLoopStartIndex,L=c.sample.sampleLoopEndIndex,T=p[r.sampleModes],J=new St(c.sample.getAudioData(),c.sample.sampleRate/sampleRate*Math.pow(2,c.sample.samplePitchCorrection/1200),0,f,F,L,Math.floor(c.sample.sampleData.length)-1,T);return p[r.velocity]>-1&&(t=p[r.velocity]),o&&qn([{Sample:c.sample.sampleName,Generators:p,Modulators:c.modulators.map(b=>b.debugString()),Velocity:t,TargetKey:y,MidiNote:A,WorkletSample:J}]),Q.push(new Je(sampleRate,J,A,t,e,n,y,s,p,c.modulators.map(b=>K.copy(b)))),Q},[]),d&&(g.cachedVoices[A][t]=i.map(Q=>Je.copy(Q,n))),i}var co=.1,Fr=4600,Rr=2e3,Bo=Math.PI/2,Dt=-500,lo=500,Cn=lo-Dt,Qo=new Float32Array(Cn+1),uo=new Float32Array(Cn+1);for(let e=Dt;e<=lo;e++){let A=(e-Dt)/Cn,t=e-Dt;Qo[t]=Math.cos(Bo*A),uo[t]=Math.sin(Bo*A)}function fo(e,A,t,n,s,o,i,g){if(isNaN(A[0]))return;let E;if(e.overridePan)E=e.overridePan;else{let c=Math.max(-500,Math.min(500,e.modulatedGenerators[r.pan]));e.currentPan+=(c-e.currentPan)*this.synth.panSmoothingFactor,E=e.currentPan}let C=this.synth.currentGain,d=~~(E+500),B=Qo[d]*C*this.synth.panLeft,Q=uo[d]*C*this.synth.panRight;if(!this.synth.oneOutputMode){let c=this.synth.reverbGain*e.modulatedGenerators[r.reverbEffectsSend]/Fr*C,p=this.synth.chorusGain*e.modulatedGenerators[r.chorusEffectsSend]/Rr;if(c>0){for(let f=0;f<A.length;f++)s[f]+=c*A[f];o.set(s)}if(p>0){let f=B*p,y=Q*p;for(let F=0;F<A.length;F++)i[F]+=f*A[F],g[F]+=y*A[F]}}if(B>0)for(let c=0;c<A.length;c++)t[c]+=B*A[c];if(Q>0)for(let c=0;c<A.length;c++)n[c]+=Q*A[c]}function mo(e=!1){m("%cStop all received!",a.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].stopAllNotes(e);this.callEvent("stopall",void 0)}function po(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 yo(e,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=Ye(e),this.overrideSoundfont.setSampleIDOffset(this.soundfontManager.totalSoundfontOffset)):this.soundfontManager.reloadManager(e)}catch(t){this.post({messageType:RA.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:RA.ready,messageData:void 0}),this.sendPresetList(),m("%cSpessaSynth is ready!",a.recognized)}function So(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);for(let t=0;t<this.workletProcessorChannels.length;t++){let n=this.workletProcessorChannels[t];n.cachedVoices=[];for(let s=0;s<128;s++)n.cachedVoices.push([]);(!A||A&&n.presetUsesOverride)&&(n.lockPreset=!1),n.programChange(n.preset.program)}e&&this.sendPresetList()}function Do(){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(s=>s.bank===t&&s.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 ko(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 wo(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 Fo(e){e=Math.round(e);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].customControllers[rA.masterTuning]=e}var qe=class e{program;bank;patchName;lockPreset;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;keyCentTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,t){let n=A.workletProcessorChannels[t],s=new e;return s.program=n.preset.program,s.bank=n.getBankSelect(),s.lockPreset=n.lockPreset,s.patchName=n.preset.presetName,s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.channelVibrato=n.channelVibrato,s.lockVibrato=n.lockGSNRPNParams,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.keyCentTuning=n.keyCentTuning,s.isMuted=n.isMuted,s.velocityOverride=n.velocityOverride,s.drumChannel=n.drumChannel,s}static applyChannelSnapshot(A,t,n){let s=A.workletProcessorChannels[t];s.muteChannel(n.isMuted),s.setDrums(n.drumChannel),s.midiControllers=n.midiControllers,s.lockedControllers=n.lockedControllers,s.customControllers=n.customControllers,s.channelVibrato=n.channelVibrato,s.lockGSNRPNParams=n.lockVibrato,s.channelTransposeKeyShift=n.channelTransposeKeyShift,s.channelOctaveTuning=n.channelOctaveTuning,s.velocityOverride=n.velocityOverride,s.lockPreset=!1,s.setBankSelect(n.bank),s.programChange(n.program),s.lockPreset=n.lockPreset}};var Fe=class e{channelSnapshots;keyMappings;mainVolume;pan;interpolation;system;transposition;effectsConfig;static createSynthesizerSnapshot(A){let t=new e;return t.channelSnapshots=A.workletProcessorChannels.map((n,s)=>qe.getChannelSnapshot(A,s)),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,s)=>{qe.applyChannelSnapshot(A,s,n)}),m("%cFinished restoring controllers!",a.info)}};function Ro(){this.post({messageType:RA.synthesizerSnapshot,messageData:Fe.createSynthesizerSnapshot(this)})}function Go(e){Fe.applySnapshot(this,e),m("%cFinished applying snapshot!",a.info)}function kt(e,A,t){if(t<e)return 0;let n=(t-e)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}function Mo(e,A,t,n,s,o,i){if(e.isInRelease||currentTime>=e.releaseStartTime&&(e.isInRelease=!0,PA.startRelease(e),OA.startRelease(e),e.sample.loopingMode===3&&(e.sample.isLooping=!1)),e.modulatedGenerators[r.initialAttenuation]>2500)return e.isInRelease&&(e.finished=!0),e.finished;let g=e.targetKey,E=e.modulatedGenerators[r.fineTune]+this.customControllers[rA.channelTuning]+this.customControllers[rA.channelTransposeFine]+this.customControllers[rA.masterTuning]+this.channelOctaveTuning[e.midiNote%12]+this.keyCentTuning[e.midiNote],C=e.modulatedGenerators[r.coarseTune]+this.customControllers[rA.channelTuningSemitones],d=this.synth.tunings[this.preset.program]?.[e.realKey];if(d?.midiNote>=0&&(g=d.midiNote,E+=d.centTuning),e.portamentoFromKey>-1){let j=Math.min((currentTime-e.startTime)/e.portamentoDuration,1),P=g-e.portamentoFromKey;C-=P*(1-j)}E+=(g-e.sample.rootKey)*e.modulatedGenerators[r.scaleTuning];let B=e.modulatedGenerators[r.vibLfoToPitch];if(B!==0){let j=e.startTime+ZA(e.modulatedGenerators[r.delayVibLFO]),P=Te(e.modulatedGenerators[r.freqVibLFO]),iA=kt(j,P,currentTime);E+=iA*(B*this.customControllers[rA.modulationMultiplier])}let Q=e.modulatedGenerators[r.initialFilterFc],c=Q,p=e.modulatedGenerators[r.modLfoToPitch],f=e.modulatedGenerators[r.modLfoToVolume],y=e.modulatedGenerators[r.modLfoToFilterFc],F=0;if(p+y+f!==0){let j=e.startTime+ZA(e.modulatedGenerators[r.delayModLFO]),P=Te(e.modulatedGenerators[r.freqModLFO]),iA=kt(j,P,currentTime);E+=iA*(p*this.customControllers[rA.modulationMultiplier]),F=-iA*f,c+=iA*y}if(this.channelVibrato.depth>0){let j=kt(e.startTime+this.channelVibrato.delay,this.channelVibrato.rate,currentTime);j&&(E+=j*this.channelVibrato.depth)}let L=e.modulatedGenerators[r.modEnvToPitch],T=e.modulatedGenerators[r.modEnvToFilterFc],J=OA.getValue(e,currentTime);c+=J*T,E+=J*L;let b=~~(E+C*100);b!==e.currentTuningCents&&(e.currentTuningCents=b,e.currentTuningCalculated=Math.pow(2,b/1200));let I=new Float32Array(A.length);switch(this.synth.interpolationType){case ke.fourthOrder:De.getSampleCubic(e,I);break;case ke.linear:default:De.getSampleLinear(e,I);break;case ke.nearestNeighbor:De.getSampleNearest(e,I);break}return we.apply(e,I,c,Q>13499),PA.apply(e,I,F,this.synth.volumeEnvelopeSmoothingFactor),this.panVoice(e,I,A,t,n,s,o,i),e.finished}function xo(e,A=-12e3){this.voices.forEach(t=>{t.realKey===e&&(t.modulatedGenerators[r.releaseVolEnv]=A,t.release())})}function No(e,A=!0){e=Math.round(e),this.customControllers[rA.channelTuning]=e,A&&m(`%cChannel ${this.channelNumber} fine tuning. Cents: %c${e}`,a.info,a.value)}function bo(e){e=Math.round(e),m(`%cChannel ${this.channelNumber} modulation depth. Cents: %c${e}`,a.info,a.value),this.customControllers[rA.modulationMultiplier]=e/50}function Lo(e){switch(this.dataEntryState){default:break;case FA.RPCoarse:case FA.RPFine:switch(this.RPValue){default:break;case 0:if(e===0)break;this.midiControllers[cA+q.pitchWheelRange]|=e;let A=(this.midiControllers[cA+q.pitchWheelRange]>>7)+e/127;m(`%cChannel ${this.channelNumber} bend range. Semitones: %c${A}`,a.info,a.value);break;case 1:let n=this.customControllers[rA.channelTuning]<<7|e;this.setTuning(n*.01220703125);break;case 5:let o=this.customControllers[rA.modulationMultiplier]*50+e/128*100;this.setModulationDepth(o);break;case 16383:this.resetParameters();break}}}function Uo(e){e=Math.round(e),this.customControllers[rA.channelTuningSemitones]=e,m(`%cChannel ${this.channelNumber} coarse tuning. Semitones: %c${e}`,a.info,a.value)}var Gr=1e3/200;function To(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+cA;switch(A.sourceIndex){case q.noController:n=16383;break;case q.noteOnKeyNum:n=t.midiNote<<7;break;case q.noteOnVelocity:n=t.velocity<<7;break;case q.polyPressure:n=t.pressure<<7;break;default:n=e[C];break}}let s=ce[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],o;if(A.secSrcUsesCC)o=e[A.secSrcIndex];else{let C=A.secSrcIndex+cA;switch(A.secSrcIndex){case q.noController:o=16383;break;case q.noteOnKeyNum:o=t.midiNote<<7;break;case q.noteOnVelocity:o=t.velocity<<7;break;case q.polyPressure:o=t.pressure<<7;break;default:o=e[C]}}let i=ce[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],g=A.transformAmount;A.isEffectModulator&&g<=1e3&&(g*=Gr,g=Math.min(g,1e3));let E=s*i*g;return A.transformType===2&&(E=Math.abs(E)),A.currentValue=E,E}function WA(e,A,t=-1,n=0){let s=e.modulators,o=e.generators,i=e.modulatedGenerators;if(t===-1){i.set(o),s.forEach(C=>{let d=Y[C.modulatorDestination],B=i[C.modulatorDestination]+To(A,C,e);i[C.modulatorDestination]=Math.max(d.min,Math.min(B,d.max))}),PA.recalculate(e),OA.recalculate(e);return}let g=new Set([r.initialAttenuation,r.delayVolEnv,r.attackVolEnv,r.holdVolEnv,r.decayVolEnv,r.sustainVolEnv,r.releaseVolEnv,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay]),E=new Set;s.forEach(C=>{if(C.sourceUsesCC===t&&C.sourceIndex===n||C.secSrcUsesCC===t&&C.secSrcIndex===n){let d=C.modulatorDestination;E.has(d)||(i[d]=o[d],To(A,C,e),s.forEach(B=>{if(B.modulatorDestination===d){let Q=Y[C.modulatorDestination],c=i[C.modulatorDestination]+B.currentValue;i[C.modulatorDestination]=Math.max(Q.min,Math.min(c,Q.max))}}),E.add(d))}}),[...E].some(C=>g.has(C))&&PA.recalculate(e),OA.recalculate(e)}var ce=[];for(let e=0;e<4;e++){ce[e]=[[new Float32Array(mA),new Float32Array(mA)],[new Float32Array(mA),new Float32Array(mA)]];for(let A=0;A<mA;A++)ce[e][0][0][A]=Be(0,e,A/mA,0),ce[e][1][0][A]=Be(0,e,A/mA,1),ce[e][0][1][A]=Be(1,e,A/mA,0),ce[e][1][1][A]=Be(1,e,A/mA,1)}function vo(e,A,t=!1){if(e>127){if(!t)return;switch(e){default:return;case Vt.velocityOverride:this.velocityOverride=A}}if(e>=D.lsbForControl1ModulationWheel&&e<=D.lsbForControl13EffectControl2&&e!==D.lsbForControl6DataEntry){let n=e-32;if(this.lockedControllers[n])return;this.midiControllers[n]=this.midiControllers[n]&16256|A&127,this.voices.forEach(s=>WA(s,this.midiControllers,1,n))}switch(e){case D.allNotesOff:this.stopAllNotes();break;case D.allSoundOff:this.stopAllNotes(!0);break;case D.bankSelect:let n=A;if(!t){switch(this.synth.system){case"gm":m(`%cIgnoring the Bank Select (${A}), as the synth is in GM mode.`,a.info);return;case"xg":n===120||n===126||n===127?this.setDrums(!0):this.channelNumber%16!==xA&&this.setDrums(!1);break;case"gm2":n===120&&this.setDrums(!0)}this.drumChannel&&(n=128),n===128&&!this.drumChannel&&(n=this.getBankSelect())}this.setBankSelect(n);break;case D.lsbForControl0BankSelect:this.synth.system==="xg"?this.drumChannel||A!==127&&this.setBankSelect(A):this.synth.system==="gm2"&&this.setBankSelect(A);break;case D.RPNLsb:this.RPValue=this.RPValue<<7|A,this.dataEntryState=FA.RPFine;break;case D.RPNMsb:this.RPValue=A,this.dataEntryState=FA.RPCoarse;break;case D.NRPNMsb:this.NRPCoarse=A,this.dataEntryState=FA.NRPCoarse;break;case D.NRPNLsb:this.NRPFine=A,this.dataEntryState=FA.NRPFine;break;case D.dataEntryMsb:this.dataEntryCoarse(A);break;case D.lsbForControl6DataEntry:this.dataEntryFine(A);break;case D.resetAllControllers:this.resetControllers();break;case D.sustainPedal:A>=64?this.holdPedal=!0:(this.holdPedal=!1,this.sustainedVoices.forEach(s=>{s.release()}),this.sustainedVoices=[]);break;default:if(this.lockedControllers[e])return;this.midiControllers[e]=A<<7,this.voices.forEach(s=>WA(s,this.midiControllers,1,e));break}this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:e,controllerValue:A})}function Ho(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 Yo(e){e&&this.stopAllNotes(!0),this.isMuted=e,this.synth.sendChannelProperties(),this.synth.callEvent("mutechannel",{channel:this.channelNumber,isMuted:e})}function Jo(e,A=!1){this.drumChannel||(e+=this.synth.transposition);let t=Math.trunc(e),n=this.channelTransposeKeyShift+this.customControllers[rA.channelTransposeFine]/100;this.drumChannel&&!A||e===n||(t!==this.channelTransposeKeyShift&&this.stopAllNotes(!1),this.channelTransposeKeyShift=t,this.customControllers[rA.channelTransposeFine]=(e-t)*100)}function qo(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)};switch(this.dataEntryState){default:case FA.Idle:break;case FA.NRPFine:if(this.synth.system!=="gs"||this.lockGSNRPNParams)return;switch(this.NRPCoarse){default:if(e===64)return;v(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${this.NRPCoarse.toString(16).toUpperCase()} 0x${this.NRPFine.toString(16).toUpperCase()})%c data value: %c${e}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 1:switch(this.NRPFine){default:if(e===64)return;v(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${this.NRPCoarse.toString(16)} 0x${this.NRPFine.toString(16)})%c data value: %c${e}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 8:if(e===64)return;A(),this.channelVibrato.rate=e/64*8,m(`%cVibrato rate for %c${this.channelNumber}%c is now set to %c${e} = ${this.channelVibrato.rate}%cHz.`,a.info,a.recognized,a.info,a.value,a.info);break;case 9:if(e===64)return;A(),this.channelVibrato.depth=e/2,m(`%cVibrato depth for %c${this.channelNumber}%c is now set to %c${e} = ${this.channelVibrato.depth}%c cents range of detune.`,a.info,a.recognized,a.info,a.value,a.info);break;case 10:if(e===64)return;A(),this.channelVibrato.delay=e/64/3,m(`%cVibrato delay for %c${this.channelNumber}%c is now set to %c${e} = ${this.channelVibrato.delay}%c seconds.`,a.info,a.recognized,a.info,a.value,a.info);break;case 32:let n=e;this.controllerChange(D.brightness,e),m(`%cFilter cutoff for %c${this.channelNumber}%c is now set to %c${n}`,a.info,a.recognized,a.info,a.value)}break;case 29:let t=e;this.controllerChange(D.reverbDepth,t),m(`%cGS Drum reverb for %c${this.channelNumber}%c: %c${t}`,a.info,a.recognized,a.info,a.value);break}break;case FA.RPCoarse:case FA.RPFine:switch(this.RPValue){default:v(`%cUnrecognized RPN for %c${this.channelNumber}%c: %c(0x${this.RPValue.toString(16)})%c data value: %c${e}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 0:this.midiControllers[cA+q.pitchWheelRange]=e<<7,m(`%cChannel ${this.channelNumber} bend range. Semitones: %c${e}`,a.info,a.value);break;case 2:this.setTuningSemitones(e-64);break;case 1:this.setTuning(e-64,!1);break;case 5:this.setModulationDepth(e*100);break;case 16383:this.resetParameters();break}}}var Ke={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 Mr(e){if(Ke[e]!==void 0)return Ke[e];let A=null,t=null;for(let n of Object.keys(Ke))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=Ke[A],s=Ke[t];return n+(e-A)*(s-n)/(t-A)}return 0}function Ko(e,A){return Mr(e)*(A/30)}var xr=-2320,Nr=-1130;function Po(e,A,t=!1,n=!0,s=currentTime){if(A<1){this.noteOff(e);return}if(A=Math.min(127,A),this.synth.highPerformanceMode&&this.totalVoicesAmount>200&&A<40||this.synth.highPerformanceMode&&A<10||this.isMuted)return;let o=e+this.channelTransposeKeyShift,i=o;if(o>127||o<0)return;let g=this.preset.program;this.synth.tunings[g]?.[o]?.midiNote>=0&&(i=this.synth.tunings[g]?.[o].midiNote),this.velocityOverride>0&&(A=this.velocityOverride);let E=this.synth.keyModifierManager.getVelocity(this.channelNumber,o);E>-1&&(A=E);let C=-1,d=0,B=this.midiControllers[D.portamentoTime]>>7,Q=this.midiControllers[D.portamentoControl]>>7;if(!this.drumChannel&&Q!==i&&this.midiControllers[D.portamentoOnOff]>=8192&&B>0){let y=Math.abs(i-Q);d=Ko(B,y),C=Q,this.controllerChange(D.portamentoControl,i)}let c=this.synth.getWorkletVoices(this.channelNumber,i,A,s,o,t),p=0;this.randomPan&&(p=Math.round(Math.random()*1e3-500));let f=this.voices;c.forEach(y=>{y.portamentoFromKey=C,y.portamentoDuration=d,y.overridePan=p;let F=y.generators[r.exclusiveClass];F!==0&&f.forEach(P=>{P.generators[r.exclusiveClass]===F&&(P.release(Oo),P.modulatedGenerators[r.releaseVolEnv]=xr,P.modulatedGenerators[r.releaseModEnv]=Nr,PA.recalculate(P),OA.recalculate(P))}),WA(y,this.midiControllers);let L=y.modulatedGenerators[r.startAddrsOffset]+y.modulatedGenerators[r.startAddrsCoarseOffset]*32768,T=y.modulatedGenerators[r.endAddrOffset]+y.modulatedGenerators[r.endAddrsCoarseOffset]*32768,J=y.modulatedGenerators[r.startloopAddrsOffset]+y.modulatedGenerators[r.startloopAddrsCoarseOffset]*32768,b=y.modulatedGenerators[r.endloopAddrsOffset]+y.modulatedGenerators[r.endloopAddrsCoarseOffset]*32768,I=y.sample,j=P=>Math.max(0,Math.min(I.sampleData.length-1,P));if(I.cursor=j(I.cursor+L),I.end=j(I.end+T),I.loopStart=j(I.loopStart+J),I.loopEnd=j(I.loopEnd+b),I.loopEnd<I.loopStart){let P=I.loopStart;I.loopStart=I.loopEnd,I.loopEnd=P}I.loopEnd-I.loopStart<1&&(I.loopingMode=0,I.isLooping=!1),y.volumeEnvelope.attenuation=y.volumeEnvelope.attenuationTargetGain,y.currentPan=Math.max(-500,Math.min(500,y.modulatedGenerators[r.pan]))}),this.synth.totalVoicesAmount+=c.length,this.synth.totalVoicesAmount>this.synth.voiceCap&&this.synth.voiceKilling(c.length),f.push(...c),n&&(this.synth.sendChannelProperties(),this.synth.callEvent("noteon",{midiNote:e,channel:this.channelNumber,velocity:A}))}function Vo(e){if(e>127||e<0){v("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 Zo(e,A){this.voices.forEach(t=>{t.midiNote===e&&(t.pressure=A,WA(t,this.midiControllers,0,q.polyPressure))}),this.synth.callEvent("polypressure",{channel:this.channelNumber,midiNote:e,pressure:A})}function Wo(e){this.midiControllers[cA+q.channelPressure]=e<<7,this.voices.forEach(A=>WA(A,this.midiControllers,0,q.channelPressure)),this.synth.callEvent("channelpressure",{channel:this.channelNumber,pressure:e})}function Xo(e,A){if(this.lockedControllers[cA+q.pitchWheel])return;let t=A|e<<7;this.synth.callEvent("pitchwheel",{channel:this.channelNumber,MSB:e,LSB:A}),this.midiControllers[cA+q.pitchWheel]=t,this.voices.forEach(n=>WA(n,this.midiControllers,0,q.pitchWheel)),this.synth.sendChannelProperties()}function _o(e){if(e.length!==12)throw new Error("Tuning is not the length of 12.");this.channelOctaveTuning=e}function zo(e,A=!1){if(this.lockPreset)return;let t=this.getBankSelect(),n,s;if(this.synth.overrideSoundfont){let o=t===128?128:t-this.synth.soundfontBankOffset,i=this.synth.overrideSoundfont.getPresetNoFallback(o,e);i?(n=t,s=i,this.presetUsesOverride=!0):(s=this.synth.soundfontManager.getPreset(t,e),n=s.bank,this.presetUsesOverride=!1)}else s=this.synth.soundfontManager.getPreset(t,e),n=s.bank,this.presetUsesOverride=!1;this.setPreset(s),this.synth.callEvent("programchange",{channel:this.channelNumber,program:s.program,bank:n,userCalled:A})}var IA=class{midiControllers=new Int16Array(tt);lockedControllers=Array(tt).fill(!1);customControllers=new Float32Array(Pt);channelTransposeKeyShift=0;channelOctaveTuning=new Int8Array(12);keyCentTuning=new Int16Array(128);holdPedal=!1;drumChannel=!1;velocityOverride=0;randomPan=!1;dataEntryState=FA.Idle;NRPCoarse=0;NRPFine=0;RPValue=0;bank=0;preset=void 0;lockPreset=!1;presetUsesOverride=!1;lockGSNRPNParams=!1;channelVibrato={delay:0,depth:0,rate:0};isMuted=!1;voices=[];sustainedVoices=[];cachedVoices=[];channelNumber;synth;constructor(A,t,n){this.synth=A,this.preset=t,this.channelNumber=n;for(let s=0;s<128;s++)this.cachedVoices.push([])}renderAudio(A,t,n,s,o,i){this.voices=this.voices.filter(g=>!this.renderVoice(g,A,t,n,s,o,i))}setBankSelect(A){this.lockPreset||(this.bank=A)}getBankSelect(){return this.drumChannel?128:this.bank}setPreset(A){if(!this.lockPreset){delete this.preset,this.preset=A,this.cachedVoices=[];for(let t=0;t<128;t++)this.cachedVoices.push([])}}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}};IA.prototype.renderVoice=Mo;IA.prototype.panVoice=fo;IA.prototype.killNote=xo;IA.prototype.stopAllNotes=Ho;IA.prototype.muteChannel=Yo;IA.prototype.noteOn=Po;IA.prototype.noteOff=Vo;IA.prototype.polyPressure=Zo;IA.prototype.channelPressure=Wo;IA.prototype.pitchWheel=Xo;IA.prototype.programChange=zo;IA.prototype.setTuning=No;IA.prototype.setTuningSemitones=Uo;IA.prototype.setOctaveTuning=_o;IA.prototype.setModulationDepth=bo;IA.prototype.transposeChannel=Jo;IA.prototype.controllerChange=vo;IA.prototype.resetControllers=ws;IA.prototype.resetParameters=Fs;IA.prototype.dataEntryFine=Lo;IA.prototype.dataEntryCoarse=qo;function jo(e=!1){let A=new IA(this,this.defaultPreset,this.workletProcessorChannels.length);this.workletProcessorChannels.push(A),A.resetControllers(),this.sendChannelProperties(),e&&this.callEvent("newchannel",void 0),A.channelNumber%16===xA&&this.workletProcessorChannels[this.workletProcessorChannels.length-1].setDrums(!0)}var ho=.03,Oo=.07,$t=1,EA=class extends AudioWorkletProcessor{constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem,this.alive=!0,this.deviceID=LA,this.interpolationType=ke.fourthOrder,this.sequencer=new hA(this),this.transposition=0,this.tunings=[];for(let t=0;t<127;t++)this.tunings.push([]);this.soundfontBankOffset=0,this.masterGain=$t,this.midiVolume=1,this.reverbGain=1,this.chorusGain=1,this.voiceCap=On,this.pan=0,this.panLeft=.5,this.highPerformanceMode=!1,this.keyModifierManager=new At,this.overrideSoundfont=void 0,this.panRight=.5;try{this.soundfontManager=new yt(A.processorOptions.soundfont,this.postReady.bind(this))}catch(t){throw this.post({messageType:RA.soundfontError,messageData:t}),t}this.sendPresetList(),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.workletProcessorChannels=[];for(let t=0;t<A.processorOptions.midiChannels;t++)this.createWorkletChannel(!1);this.workletProcessorChannels[xA].preset=this.drumPreset,this.workletProcessorChannels[xA].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=us*(44100/sampleRate),this.panSmoothingFactor=co*(44100/sampleRate),this.system=st,this.totalVoicesAmount=0,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()),m("%cRendering enabled! Starting render.",a.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]))),zA.isInitialized.then(()=>{this.postReady(),m("%cSpessaSynth is ready!",a.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:RA.ready,messageData:void 0})}debugMessage(){m({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((s,o)=>{if(s.voices.length<1||s.isMuted)return;let i,g,E,C,d,B,Q;if(this.oneOutputMode){let c=t[0];i=o%16*2,g=c[i],E=c[i+1]}else i=o%this._outputsAmount+2,g=t[i][0],E=t[i][1],C=t[0][0],d=t[0][1],B=t[1][0],Q=t[1][1];s.renderAudio(g,E,C,d,B,Q),n+=s.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.cachedVoices,delete A.lockedControllers,delete A.preset,delete A.customControllers}),delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}controllerChange(A,t,n,s=!1){this.workletProcessorChannels[A].controllerChange(t,n,s)}noteOn(A,t,n,s=!1,o=!0){this.workletProcessorChannels[A].noteOn(t,n,s,o)}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)}};EA.prototype.voiceKilling=Bs;EA.prototype.getWorkletVoices=Co;EA.prototype.handleMessage=ds;EA.prototype.sendChannelProperties=ms;EA.prototype.callEvent=fs;EA.prototype.systemExclusive=ps;EA.prototype.stopAllChannels=mo;EA.prototype.createWorkletChannel=jo;EA.prototype.resetAllControllers=ks;EA.prototype.setMasterGain=Ss;EA.prototype.setMasterPan=Ds;EA.prototype.setMIDIVolume=ys;EA.prototype.transposeAllChannels=wo;EA.prototype.setMasterTuning=Fo;EA.prototype.getPreset=ko;EA.prototype.reloadSoundFont=yo;EA.prototype.clearSoundFont=So;EA.prototype.setEmbeddedSoundFont=po;EA.prototype.sendPresetList=Do;EA.prototype.sendSynthesizerSnapshot=Ro;EA.prototype.applySynthesizerSnapshot=Go;registerProcessor(Pn,EA);m("%cProcessor succesfully registered!",a.recognized);