spessasynth_lib 3.24.26 → 3.24.28
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.
- package/README.md +28 -10
- package/index.js +20 -0
- package/midi_parser/basic_midi.js +36 -17
- package/package.json +2 -1
- package/sequencer/sequencer.js +2 -2
- package/sequencer/worklet_sequencer/process_event.js +4 -1
- package/sequencer/worklet_sequencer/sequencer_message.js +1 -1
- package/soundfont/basic_soundfont/modulator.js +151 -119
- package/soundfont/dls/articulator_converter.js +7 -7
- package/soundfont/dls/dls_sources.js +28 -28
- package/soundfont/read_sf2/modulators.js +6 -7
- package/synthetizer/worklet_processor.min.js +15 -15
- package/synthetizer/worklet_system/worklet_methods/controller_control/reset_controllers.js +17 -3
- package/synthetizer/worklet_system/worklet_utilities/controller_tables.js +2 -1
- package/synthetizer/worklet_system/worklet_utilities/worklet_voice.js +1 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
var vn=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var x=class extends Uint8Array{currentIndex;constructor(A){super(A),this.currentIndex=0}};function BA(e){let A=e.reduce((s,o)=>s+o.length,0),t=new x(A),n=0;for(let s of e)t.set(s,n),n+=s.length;return t}function Pt(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 Hn(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 Yn(e){let A=[];for(let t of e)(t===47||t===92)&&(t=10),A.push(t);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 pe=class{ticks;messageStatusByte;messageData;constructor(A,t,n){this.ticks=A,this.messageStatusByte=t,this.messageData=n}};function Jn(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 Ue(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 m={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,filterResonance:71,releaseTime:72,attackTime:73,brightness:74,decayTime:75,vibratoRate:76,vibratoDepth:77,vibratoDelay:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},qn={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},ye={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 Kn=!1,Pn=!0,et=!1,On=!0;function Vn(e,A,t,n){Kn=e,Pn=A,et=t,On=n}function y(...e){Kn&&console.info(...e)}function L(...e){Pn&&console.warn(...e)}function Zn(...e){On&&console.table(...e)}function $A(...e){et&&console.group(...e)}function mA(...e){et&&console.groupCollapsed(...e)}function O(){et&&console.groupEnd()}var Se={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var tt={addMapping:0,deleteMapping:1,clearMappings:2},nt=class{_keyMappings=[];handleMessage(A,t){switch(A){default:return;case tt.addMapping:this.addMapping(...t);break;case tt.clearMappings:this.clearMappings();break;case tt.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 M=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 Wn(e,A,t){let n=Y[e]||{min:0,max:32768,def:0},s=A.find(I=>I.generatorType===e),o=0;s&&(o=s.generatorValue);let i=t.find(I=>I.generatorType===e),h=n.def;i&&(h=i.generatorValue);let a=h+o;return e===r.initialAttenuation?a:Math.max(n.min,Math.min(n.max,a))}var K={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},QA={linear:0,concave:1,convex:2,switch:3},q=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(QA,this.sourceCurveType);t+=this.sourcePolarity===0?" unipolar ":" bipolar ",t+=this.sourceDirection===0?"forwards ":"backwards ",this.sourceUsesCC?t+=A(m,this.sourceIndex):t+=A(K,this.sourceIndex);let n=A(QA,this.secSrcCurveType);return n+=this.secSrcPolarity===0?" unipolar ":" bipolar ",n+=this.secSrcCurveType===0?"forwards ":"backwards ",this.secSrcUsesCC?n+=A(m,this.secSrcIndex):n+=A(K,this.secSrcIndex),`Modulator:
|
|
2
|
-
Source: ${
|
|
3
|
-
Secondary source: ${
|
|
4
|
-
Destination: ${
|
|
5
|
-
Trasform amount: ${
|
|
6
|
-
Transform type: ${
|
|
1
|
+
var Hn=(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 x=class extends Uint8Array{currentIndex;constructor(A){super(A),this.currentIndex=0}};function cA(e){let A=e.reduce((s,o)=>s+o.length,0),t=new x(A),n=0;for(let s of e)t.set(s,n),n+=s.length;return t}function Ot(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 Yn(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 Jn(e){let A=[];for(let t of e)(t===47||t===92)&&(t=10),A.push(t);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 pe=class{ticks;messageStatusByte;messageData;constructor(A,t,n){this.ticks=A,this.messageStatusByte=t,this.messageData=n}};function qn(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 G={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 Ue(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 m={bankSelect:0,modulationWheel:1,breathController:2,footController:4,portamentoTime:5,dataEntryMsb:6,mainVolume:7,balance:8,pan:10,expressionController:11,effectControl1:12,effectControl2:13,generalPurposeController1:16,generalPurposeController2:17,generalPurposeController3:18,generalPurposeController4:19,lsbForControl0BankSelect:32,lsbForControl1ModulationWheel:33,lsbForControl2BreathController:34,lsbForControl4FootController:36,lsbForControl5PortamentoTime:37,lsbForControl6DataEntry:38,lsbForControl7MainVolume:39,lsbForControl8Balance:40,lsbForControl10Pan:42,lsbForControl11ExpressionController:43,lsbForControl12EffectControl1:44,lsbForControl13EffectControl2:45,sustainPedal:64,portamentoOnOff:65,sostenutoPedal:66,softPedal:67,legatoFootswitch:68,hold2Pedal:69,soundVariation:70,filterResonance:71,releaseTime:72,attackTime:73,brightness:74,decayTime:75,vibratoRate:76,vibratoDepth:77,vibratoDelay:78,soundController10:79,generalPurposeController5:80,generalPurposeController6:81,generalPurposeController7:82,generalPurposeController8:83,portamentoControl:84,reverbDepth:91,tremoloDepth:92,chorusDepth:93,detuneDepth:94,phaserDepth:95,dataIncrement:96,dataDecrement:97,NRPNLsb:98,NRPNMsb:99,RPNLsb:100,RPNMsb:101,allSoundOff:120,resetAllControllers:121,localControlOnOff:122,allNotesOff:123,omniModeOff:124,omniModeOn:125,monoModeOn:126,polyModeOn:127},Kn={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},ye={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 Pn=!1,On=!0,et=!1,Vn=!0;function Zn(e,A,t,n){Pn=e,On=A,et=t,Vn=n}function y(...e){Pn&&console.info(...e)}function L(...e){On&&console.warn(...e)}function Wn(...e){Vn&&console.table(...e)}function $A(...e){et&&console.group(...e)}function mA(...e){et&&console.groupCollapsed(...e)}function O(){et&&console.groupEnd()}var Se={reloadSoundFont:0,addNewSoundFont:2,deleteSoundFont:3,rearrangeSoundFonts:4};var tt={addMapping:0,deleteMapping:1,clearMappings:2},nt=class{_keyMappings=[];handleMessage(A,t){switch(A){default:return;case tt.addMapping:this.addMapping(...t);break;case tt.clearMappings:this.clearMappings();break;case tt.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},H=[];H[r.startAddrsOffset]={min:0,max:32768,def:0};H[r.endAddrOffset]={min:-32768,max:32768,def:0};H[r.startloopAddrsOffset]={min:-32768,max:32768,def:0};H[r.endloopAddrsOffset]={min:-32768,max:32768,def:0};H[r.startAddrsCoarseOffset]={min:0,max:32768,def:0};H[r.modLfoToPitch]={min:-12e3,max:12e3,def:0};H[r.vibLfoToPitch]={min:-12e3,max:12e3,def:0};H[r.modEnvToPitch]={min:-12e3,max:12e3,def:0};H[r.initialFilterFc]={min:1500,max:13500,def:13500};H[r.initialFilterQ]={min:0,max:960,def:0};H[r.modLfoToFilterFc]={min:-12e3,max:12e3,def:0};H[r.modEnvToFilterFc]={min:-12e3,max:12e3,def:0};H[r.endAddrsCoarseOffset]={min:-32768,max:32768,def:0};H[r.modLfoToVolume]={min:-960,max:960,def:0};H[r.chorusEffectsSend]={min:0,max:1e3,def:0};H[r.reverbEffectsSend]={min:0,max:1e3,def:0};H[r.pan]={min:-500,max:500,def:0};H[r.delayModLFO]={min:-12e3,max:5e3,def:-12e3};H[r.freqModLFO]={min:-16e3,max:4500,def:0};H[r.delayVibLFO]={min:-12e3,max:5e3,def:-12e3};H[r.freqVibLFO]={min:-16e3,max:4500,def:0};H[r.delayModEnv]={min:-32768,max:5e3,def:-32768};H[r.attackModEnv]={min:-32768,max:8e3,def:-32768};H[r.holdModEnv]={min:-12e3,max:5e3,def:-12e3};H[r.decayModEnv]={min:-12e3,max:8e3,def:-12e3};H[r.sustainModEnv]={min:0,max:1e3,def:0};H[r.releaseModEnv]={min:-7200,max:8e3,def:-12e3};H[r.keyNumToModEnvHold]={min:-1200,max:1200,def:0};H[r.keyNumToModEnvDecay]={min:-1200,max:1200,def:0};H[r.delayVolEnv]={min:-12e3,max:5e3,def:-12e3};H[r.attackVolEnv]={min:-12e3,max:8e3,def:-12e3};H[r.holdVolEnv]={min:-12e3,max:5e3,def:-12e3};H[r.decayVolEnv]={min:-12e3,max:8e3,def:-12e3};H[r.sustainVolEnv]={min:0,max:1440,def:0};H[r.releaseVolEnv]={min:-7200,max:8e3,def:-12e3};H[r.keyNumToVolEnvHold]={min:-1200,max:1200,def:0};H[r.keyNumToVolEnvDecay]={min:-1200,max:1200,def:0};H[r.startloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};H[r.keyNum]={min:-1,max:127,def:-1};H[r.velocity]={min:-1,max:127,def:-1};H[r.initialAttenuation]={min:-250,max:1440,def:0};H[r.endloopAddrsCoarseOffset]={min:-32768,max:32768,def:0};H[r.coarseTune]={min:-120,max:120,def:0};H[r.fineTune]={min:-12700,max:12700,def:0};H[r.scaleTuning]={min:0,max:1200,def:100};H[r.exclusiveClass]={min:0,max:99999,def:0};H[r.overridingRootKey]={min:-1,max:127,def:-1};H[r.sampleModes]={min:0,max:3,def:0};var M=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=H[A];s!==void 0&&(this.generatorValue=Math.max(s.min,Math.min(s.max,this.generatorValue)))}}};function Xn(e,A,t){let n=H[e]||{min:0,max:32768,def:0},s=A.find(I=>I.generatorType===e),o=0;s&&(o=s.generatorValue);let i=t.find(I=>I.generatorType===e),l=n.def;i&&(l=i.generatorValue);let a=l+o;return e===r.initialAttenuation?a:Math.max(n.min,Math.min(n.max,a))}var K={noController:0,noteOnVelocity:2,noteOnKeyNum:3,polyPressure:10,channelPressure:13,pitchWheel:14,pitchWheelRange:16,link:127},QA={linear:0,concave:1,convex:2,switch:3},q=class e{currentValue=0;sourceEnum;secondarySourceEnum;modulatorDestination;transformAmount;transformType;constructor(A,t,n,s,o){this.sourceEnum=A,this.modulatorDestination=n,this.secondarySourceEnum=t,this.transformAmount=s,this.transformType=o,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(A.sourceEnum,A.secondarySourceEnum,A.modulatorDestination,A.transformAmount,A.transformType)}static isIdentical(A,t,n=!1){return A.sourceEnum===t.sourceEnum&&A.modulatorDestination===t.modulatorDestination&&A.secondarySourceEnum===t.secondarySourceEnum&&A.transformType===t.transformType&&(!n||A.transformAmount===t.transformAmount)}static debugString(A){function t(o,i){return Object.keys(o).find(l=>o[l]===i)}let n=t(QA,A.sourceCurveType);n+=A.sourcePolarity===0?" unipolar ":" bipolar ",n+=A.sourceDirection===0?"forwards ":"backwards ",A.sourceUsesCC?n+=t(m,A.sourceIndex):n+=t(K,A.sourceIndex);let s=t(QA,A.secSrcCurveType);return s+=A.secSrcPolarity===0?" unipolar ":" bipolar ",s+=A.secSrcCurveType===0?"forwards ":"backwards ",A.secSrcUsesCC?s+=t(m,A.secSrcIndex):s+=t(K,A.secSrcIndex),`Modulator:
|
|
2
|
+
Source: ${n}
|
|
3
|
+
Secondary source: ${s}
|
|
4
|
+
Destination: ${t(r,A.modulatorDestination)}
|
|
5
|
+
Trasform amount: ${A.transformAmount}
|
|
6
|
+
Transform type: ${A.transformType}
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
`}},Ot=960,Vt=QA.concave;function KA(e,A,t,n,s){return e<<10|A<<9|t<<8|n<<7|s}var ur=[new q({srcEnum:KA(Vt,0,1,0,K.noteOnVelocity),dest:r.initialAttenuation,amt:Ot,secSrcEnum:0,transform:0}),new q({srcEnum:129,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new q({srcEnum:KA(Vt,0,1,1,m.mainVolume),dest:r.initialAttenuation,amt:Ot,secSrcEnum:0,transform:0}),new q({srcEnum:13,dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new q({srcEnum:526,dest:r.fineTune,amt:12700,secSrcEnum:16,transform:0}),new q({srcEnum:650,dest:r.pan,amt:500,secSrcEnum:0,transform:0}),new q({srcEnum:KA(Vt,0,1,1,m.expressionController),dest:r.initialAttenuation,amt:Ot,secSrcEnum:0,transform:0}),new q({srcEnum:219,dest:r.reverbEffectsSend,amt:200,secSrcEnum:0,transform:0}),new q({srcEnum:221,dest:r.chorusEffectsSend,amt:200,secSrcEnum:0,transform:0})],dr=[new q({srcEnum:KA(QA.linear,0,0,0,K.polyPressure),dest:r.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new q({srcEnum:KA(QA.linear,0,0,1,m.tremoloDepth),dest:r.modLfoToVolume,amt:24,secSrcEnum:0,transform:0}),new q({srcEnum:KA(QA.convex,1,0,1,m.attackTime),dest:r.attackVolEnv,amt:6e3,secSrcEnum:0,transform:0}),new q({srcEnum:KA(QA.linear,1,0,1,m.releaseTime),dest:r.releaseVolEnv,amt:3600,secSrcEnum:0,transform:0}),new q({srcEnum:KA(QA.linear,1,0,1,m.brightness),dest:r.initialFilterFc,amt:6e3,secSrcEnum:0,transform:0}),new q({srcEnum:KA(QA.linear,1,0,1,m.filterResonance),dest:r.initialFilterQ,amt:250,secSrcEnum:0,transform:0})],st=ur.concat(dr);var uA=128,ot=147,se=new Int16Array(ot).fill(0),dA=(e,A)=>se[e]=A<<7;dA(m.mainVolume,100);dA(m.balance,64);dA(m.expressionController,127);dA(m.pan,64);dA(m.portamentoOnOff,127);dA(m.filterResonance,64);dA(m.releaseTime,64);dA(m.attackTime,64);dA(m.brightness,64);dA(m.decayTime,64);dA(m.vibratoRate,64);dA(m.vibratoDepth,64);dA(m.vibratoDelay,64);dA(m.generalPurposeController6,64);dA(m.generalPurposeController8,64);dA(m.RPNLsb,127);dA(m.RPNMsb,127);dA(m.NRPNLsb,127);dA(m.NRPNMsb,127);se[m.portamentoControl]=1;dA(uA+K.pitchWheel,64);dA(uA+K.pitchWheelRange,2);var sA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},Zt=Object.keys(sA).length,Wt=new Float32Array(Zt);Wt[sA.modulationMultiplier]=1;var FA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},Xt={velocityOverride:128};var Xn="spessasynth-worklet-system",_n=350,GA=9,rt=16,it="gs";var Te={backwards:0,forwards:1,shuffleOn:2,shuffleOff:3},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 zn(e,A){if(this.sendMIDIMessages&&e.messageStatusByte>=128){this.sendMIDIMessage([e.messageStatusByte,...e.messageData]);return}let t=Ue(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 I=this.playingNotes.findIndex(d=>d.midiNote===e.messageData[0]&&d.channel===t.channel);I!==-1&&this.playingNotes.splice(I,1)}break;case R.noteOff:this.synth.noteOff(t.channel,e.messageData[0]);let o=this.playingNotes.findIndex(I=>I.midiNote===e.messageData[0]&&I.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),L("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 h=-1;t.status===R.lyric&&(h=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyrics.length-1));let a=t.status;this.midiData.isKaraokeFile&&(t.status===R.text||t.status===R.lyric)&&(h=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyricsTicks.length),a=R.lyric),this.post(DA.textEvent,[e.messageData,a,h]);break;case R.midiPort:this.assignMIDIPort(A,e.messageData[0]);break;case R.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:L(`%cUnrecognized Event: %c${e.messageStatusByte}%c status byte: %c${Object.keys(R).find(I=>R[I]===t.status)}`,g.warn,g.unrecognized,g.warn,g.value);break}t.status>=0&&t.status<128&&this.post(DA.metaEvent,[e.messageStatusByte,e.messageData])}function jn(){for(let e=0;e<16;e++)this.synth.createWorkletChannel(!0)}function $n(){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 As(){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 De=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 at=class extends De{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}},wa={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 F(e,A){let t=0;for(let n=0;n<A;n++)t|=e[e.currentIndex++]<<n*8;return t>>>0}function ke(e,A,t){for(let n=0;n<t;n++)e[e.currentIndex++]=A>>n*8&255}function N(e,A){e[e.currentIndex++]=A&255,e[e.currentIndex++]=A>>8}function V(e,A){ke(e,A,4)}function oe(e,A){let t=A<<8|e;return t>32767?t-65536:t}function es(e){return e>127?e-256:e}function _(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 h=e[e.currentIndex++];if(!s){if((h<32||h>127)&&h!==10){if(n){s=!0;continue}else if(h===0){s=!0;continue}}o+=String.fromCharCode(h)}}return o}}function gt(e,A=0){let t=e.length;A>0&&(t=A);let n=new x(t);return kA(n,e,A),n}function ce(e){return gt(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 z(e,A=!0,t=!1){let n=_(e,4),s=F(e,4),o;return A&&(o=new x(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 rA(e,A=void 0){let t=8+e.size;e.size%2!==0&&t++,A&&(t+=A.length);let n=new x(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 I=new Uint8Array(A.length+1);I.set(A),A=I}let s=8,o=s+A.length,i=A.length;o%2!==0&&o++;let h=e;n&&(o+=4,i+=4,s+=4,h="LIST");let a=new x(o);return kA(a,h),V(a,i),n&&kA(a,e),a.set(A,s),a}function NA(e,A){return e.find(t=>t.header!=="LIST"?!1:(t.chunkData.currentIndex=0,_(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 Et={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 Ct=class e extends De{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...",g.info);let A=!1,t=0;this.midiPorts=[],this.midiPortChannelOffsets=[],this.keyRange={max:0,min:127};let n=[],s=!1;typeof this.RMIDInfo.ICOP<"u"&&(s=!0);let o=!1;typeof this.RMIDInfo.INAM<"u"&&(o=!0);let i=null,h=null;for(let C=0;C<this.tracks.length;C++){let Q=this.tracks[C],B=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 w=0;w<f.messageData.length;w++)f.messageData[w]=Math.min(127,f.messageData[w]);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:h===null?h=f.ticks:h=0;break;case 0:this.isDLSRMIDI&&f.messageData[1]!==0&&f.messageData[1]!==127&&(y("%cDLS RMIDI with offset 1 detected!",g.recognized),this.bankOffset=1)}break;case R.noteOn:B.add(f.messageStatusByte&15);let w=f.messageData[0];this.keyRange.min=Math.min(this.keyRange.min,w),this.keyRange.max=Math.max(this.keyRange.max,w);break}}f.messageData.currentIndex=0;let D=_(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(D.trim().toLowerCase()){default:break;case"start":case"loopstart":i=f.ticks;break;case"loopend":h=f.ticks}f.messageData.currentIndex=0;break;case R.midiPort:let G=f.messageData[0];this.midiPorts[C]=G,this.midiPortChannelOffsets[G]===void 0&&(this.midiPortChannelOffsets[G]=t,t+=16);break;case R.copyright:s||(f.messageData.currentIndex=0,n.push(_(f.messageData,f.messageData.length,void 0,!1)),f.messageData.currentIndex=0);break;case R.lyric:if(D.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",g.recognized)),this.isKaraokeFile)f.messageStatusByte=R.text;else{this.lyrics.push(f.messageData),this.lyricsTicks.push(f.ticks);break}case R.text:let U=D.trim();U.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",g.recognized)):this.isKaraokeFile&&(U.startsWith("@T")||U.startsWith("@A")?A?n.push(U.substring(2).trim()):(this.midiName=U.substring(2).trim(),A=!0,o=!0,this.rawMidiName=gt(this.midiName)):U[0]!=="@"&&(this.lyrics.push(Yn(f.messageData)),this.lyricsTicks.push(f.ticks)));break}}if(this.usedChannelsOnTrack.push(B),!p){let f=Q.find(D=>D.messageStatusByte===R.trackName);if(f){f.messageData.currentIndex=0;let D=_(f.messageData,f.messageData.length);n.push(D)}}}this.tempoChanges.reverse(),y("%cCorrecting loops, ports and detecting notes...",g.info);let a=[];for(let C of this.tracks){let Q=C.find(B=>(B.messageStatusByte&240)===R.noteOn);Q&&a.push(Q.ticks)}this.firstNoteOn=Math.min(...a),y(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,g.info,g.recognized,g.info),i!==null&&h===null?(i=this.firstNoteOn,h=this.lastVoiceEventTick):(i===null&&(i=this.firstNoteOn),(h===null||h===0)&&(h=this.lastVoiceEventTick)),this.loop={start:i,end:h},y(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,g.info,g.recognized,g.info,g.recognized);let I=0;for(let C of this.midiPorts)if(C!==-1){I=C;break}if(this.midiPorts=this.midiPorts.map(C=>C===-1?I:C),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?y("%cNo additional MIDI Ports detected.",g.info):y("%cMIDI Ports detected!",g.recognized),!o)if(this.tracks.length>1){if(this.tracks[0].find(C=>C.messageStatusByte>=R.noteOn&&C.messageStatusByte<R.polyPressure)===void 0){let C=this.tracks[0].find(Q=>Q.messageStatusByte===R.trackName);C&&(this.rawMidiName=C.messageData,C.messageData.currentIndex=0,this.midiName=_(C.messageData,C.messageData.length,void 0,!1))}}else{let C=this.tracks[0].find(Q=>Q.messageStatusByte===R.trackName);C&&(this.rawMidiName=C.messageData,C.messageData.currentIndex=0,this.midiName=_(C.messageData,C.messageData.length,void 0,!1))}if(s||(this.copyright=n.map(C=>C.trim().replace(/(\r?\n)+/g,`
|
|
10
|
-
`)).filter(
|
|
11
|
-
`)||""),this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){y("%cNo name detected. Using the alt name!",g.info),this.midiName=
|
|
9
|
+
`}sumTransform(A){return new e(this.sourceEnum,this.secondarySourceEnum,this.modulatorDestination,this.transformAmount+A.transformAmount,this.transformType)}},Vt=960,Zt=QA.concave;function KA(e,A,t,n,s){return e<<10|A<<9|t<<8|n<<7|s}var dr=[new q(KA(Zt,0,1,0,K.noteOnVelocity),0,r.initialAttenuation,Vt,0),new q(129,0,r.vibLfoToPitch,50,0),new q(KA(Zt,0,1,1,m.mainVolume),0,r.initialAttenuation,Vt,0),new q(13,0,r.vibLfoToPitch,50,0),new q(526,16,r.fineTune,12700,0),new q(650,0,r.pan,500,0),new q(KA(Zt,0,1,1,m.expressionController),0,r.initialAttenuation,Vt,0),new q(219,0,r.reverbEffectsSend,200,0),new q(221,0,r.chorusEffectsSend,200,0)],fr=[new q(KA(QA.linear,0,0,0,K.polyPressure),0,r.vibLfoToPitch,50,0),new q(KA(QA.linear,0,0,1,m.tremoloDepth),0,r.modLfoToVolume,24,0),new q(KA(QA.convex,1,0,1,m.attackTime),0,r.attackVolEnv,6e3,0),new q(KA(QA.linear,1,0,1,m.releaseTime),0,r.releaseVolEnv,3600,0),new q(KA(QA.linear,1,0,1,m.brightness),0,r.initialFilterFc,6e3,0),new q(KA(QA.linear,1,0,1,m.filterResonance),0,r.initialFilterQ,250,0)],st=dr.concat(fr);var uA=128,ot=147,se=new Int16Array(ot).fill(0),dA=(e,A)=>se[e]=A<<7;dA(m.mainVolume,100);dA(m.balance,64);dA(m.expressionController,127);dA(m.pan,64);dA(m.portamentoOnOff,127);dA(m.filterResonance,64);dA(m.releaseTime,64);dA(m.attackTime,64);dA(m.brightness,64);dA(m.decayTime,64);dA(m.vibratoRate,64);dA(m.vibratoDepth,64);dA(m.vibratoDelay,64);dA(m.generalPurposeController6,64);dA(m.generalPurposeController8,64);dA(m.RPNLsb,127);dA(m.RPNMsb,127);dA(m.NRPNLsb,127);dA(m.NRPNMsb,127);var rt=1;se[m.portamentoControl]=rt;dA(uA+K.pitchWheel,64);dA(uA+K.pitchWheelRange,2);var sA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},Wt=Object.keys(sA).length,Xt=new Float32Array(Wt);Xt[sA.modulationMultiplier]=1;var FA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},_t={velocityOverride:128};var _n="spessasynth-worklet-system",zn=350,GA=9,it=16,at="gs";var Te={backwards:0,forwards:1,shuffleOn:2,shuffleOff:3},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 jn(e,A){if(this.sendMIDIMessages&&e.messageStatusByte>=128){this.sendMIDIMessage([e.messageStatusByte,...e.messageData]);return}let t=Ue(e.messageStatusByte),n=this.midiPortChannelOffsets[this.midiPorts[A]]||0;switch(t.channel+=n,t.status){case G.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 I=this.playingNotes.findIndex(d=>d.midiNote===e.messageData[0]&&d.channel===t.channel);I!==-1&&this.playingNotes.splice(I,1)}break;case G.noteOff:this.synth.noteOff(t.channel,e.messageData[0]);let o=this.playingNotes.findIndex(I=>I.midiNote===e.messageData[0]&&I.channel===t.channel);o!==-1&&this.playingNotes.splice(o,1);break;case G.pitchBend:this.synth.pitchWheel(t.channel,e.messageData[1],e.messageData[0]);break;case G.controllerChange:this.synth.controllerChange(t.channel,e.messageData[0],e.messageData[1]);break;case G.programChange:this.synth.programChange(t.channel,e.messageData[0]);break;case G.polyPressure:this.synth.polyPressure(t.channel,e.messageData[0],e.messageData[1]);break;case G.channelPressure:this.synth.channelPressure(t.channel,e.messageData[0]);break;case G.systemExclusive:this.synth.systemExclusive(e.messageData,n);break;case G.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),L("invalid tempo! falling back to 120 BPM"),i=120);break;case G.timeSignature:case G.endOfTrack:case G.midiChannelPrefix:case G.songPosition:case G.activeSensing:case G.keySignature:case G.sequenceNumber:case G.sequenceSpecific:break;case G.text:case G.lyric:case G.copyright:case G.trackName:case G.marker:case G.cuePoint:case G.instrumentName:case G.programName:let l=-1;t.status===G.lyric&&(l=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyrics.length-1));let a=t.status;this.midiData.isKaraokeFile&&(t.status===G.text||t.status===G.lyric)&&(l=Math.min(this.midiData.lyricsTicks.indexOf(e.ticks),this.midiData.lyricsTicks.length),a=G.lyric),this.post(DA.textEvent,[e.messageData,a,l]);break;case G.midiPort:this.assignMIDIPort(A,e.messageData[0]);break;case G.reset:this.synth.stopAllChannels(),this.synth.resetAllControllers();break;default:L(`%cUnrecognized Event: %c${e.messageStatusByte}%c status byte: %c${Object.keys(G).find(I=>G[I]===t.status)}`,g.warn,g.unrecognized,g.warn,g.value);break}t.status>=0&&t.status<128&&this.post(DA.metaEvent,[e.messageStatusByte,e.messageData,A])}function $n(){for(let e=0;e<16;e++)this.synth.createWorkletChannel(!0)}function As(){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 es(){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 De=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 gt=class extends De{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}},Fa={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 F(e,A){let t=0;for(let n=0;n<A;n++)t|=e[e.currentIndex++]<<n*8;return t>>>0}function ke(e,A,t){for(let n=0;n<t;n++)e[e.currentIndex++]=A>>n*8&255}function N(e,A){e[e.currentIndex++]=A&255,e[e.currentIndex++]=A>>8}function V(e,A){ke(e,A,4)}function oe(e,A){let t=A<<8|e;return t>32767?t-65536:t}function ts(e){return e>127?e-256:e}function _(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 l=e[e.currentIndex++];if(!s){if((l<32||l>127)&&l!==10){if(n){s=!0;continue}else if(l===0){s=!0;continue}}o+=String.fromCharCode(l)}}return o}}function It(e,A=0){let t=e.length;A>0&&(t=A);let n=new x(t);return kA(n,e,A),n}function Be(e){return It(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 z(e,A=!0,t=!1){let n=_(e,4),s=F(e,4),o;return A&&(o=new x(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 rA(e,A=void 0){let t=8+e.size;e.size%2!==0&&t++,A&&(t+=A.length);let n=new x(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 I=new Uint8Array(A.length+1);I.set(A),A=I}let s=8,o=s+A.length,i=A.length;o%2!==0&&o++;let l=e;n&&(o+=4,i+=4,s+=4,l="LIST");let a=new x(o);return kA(a,l),V(a,i),n&&kA(a,e),a.set(A,s),a}function NA(e,A){return e.find(t=>t.header!=="LIST"?!1:(t.chunkData.currentIndex=0,_(t.chunkData,4)===A))}function Ct(e){let A=0;for(;e;){let t=e[e.currentIndex++];if(A=A<<7|t&127,t>>7!==1)break}return A}var Et={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 ht=class e extends De{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...",g.info);let A=!1;this.keyRange={max:0,min:127};let t=[],n=!1;typeof this.RMIDInfo.ICOP<"u"&&(n=!0);let s=!1;typeof this.RMIDInfo.INAM<"u"&&(s=!0);let o=null,i=null;for(let E=0;E<this.tracks.length;E++){let Q=this.tracks[E],B=new Set,p=!1;for(let f of Q){if(f.messageStatusByte>=128&&f.messageStatusByte<240){p=!0;for(let w=0;w<f.messageData.length;w++)f.messageData[w]=Math.min(127,f.messageData[w]);switch(f.ticks>this.lastVoiceEventTick&&(this.lastVoiceEventTick=f.ticks),f.messageStatusByte&240){case G.controllerChange:switch(f.messageData[0]){case 2:case 116:o=f.ticks;break;case 4:case 117:i===null?i=f.ticks:i=0;break;case 0:this.isDLSRMIDI&&f.messageData[1]!==0&&f.messageData[1]!==127&&(y("%cDLS RMIDI with offset 1 detected!",g.recognized),this.bankOffset=1)}break;case G.noteOn:B.add(f.messageStatusByte&15);let w=f.messageData[0];this.keyRange.min=Math.min(this.keyRange.min,w),this.keyRange.max=Math.max(this.keyRange.max,w);break}}f.messageData.currentIndex=0;let D=_(f.messageData,f.messageData.length);switch(f.messageData.currentIndex=0,f.messageStatusByte){case G.setTempo:f.messageData.currentIndex=0,this.tempoChanges.push({ticks:f.ticks,tempo:6e7/Ae(f.messageData,3)}),f.messageData.currentIndex=0;break;case G.marker:switch(D.trim().toLowerCase()){default:break;case"start":case"loopstart":o=f.ticks;break;case"loopend":i=f.ticks}f.messageData.currentIndex=0;break;case G.copyright:n||(f.messageData.currentIndex=0,t.push(_(f.messageData,f.messageData.length,void 0,!1)),f.messageData.currentIndex=0);break;case G.lyric:if(D.trim().startsWith("@KMIDI KARAOKE FILE")&&(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",g.recognized)),this.isKaraokeFile)f.messageStatusByte=G.text;else{this.lyrics.push(f.messageData),this.lyricsTicks.push(f.ticks);break}case G.text:let R=D.trim();R.startsWith("@KMIDI KARAOKE FILE")?(this.isKaraokeFile=!0,y("%cKaraoke MIDI detected!",g.recognized)):this.isKaraokeFile&&(R.startsWith("@T")||R.startsWith("@A")?A?t.push(R.substring(2).trim()):(this.midiName=R.substring(2).trim(),A=!0,s=!0,this.rawMidiName=It(this.midiName)):R[0]!=="@"&&(this.lyrics.push(Jn(f.messageData)),this.lyricsTicks.push(f.ticks)));break}}if(this.usedChannelsOnTrack.push(B),!p){let f=Q.find(D=>D.messageStatusByte===G.trackName);if(f){f.messageData.currentIndex=0;let D=_(f.messageData,f.messageData.length);t.push(D)}}}this.tempoChanges.reverse(),y("%cCorrecting loops, ports and detecting notes...",g.info);let l=[];for(let E of this.tracks){let Q=E.find(B=>(B.messageStatusByte&240)===G.noteOn);Q&&l.push(Q.ticks)}this.firstNoteOn=Math.min(...l),y(`%cFirst note-on detected at: %c${this.firstNoteOn}%c ticks!`,g.info,g.recognized,g.info),o!==null&&i===null?(o=this.firstNoteOn,i=this.lastVoiceEventTick):(o===null&&(o=this.firstNoteOn),(i===null||i===0)&&(i=this.lastVoiceEventTick)),this.loop={start:o,end:i},y(`%cLoop points: start: %c${this.loop.start}%c end: %c${this.loop.end}`,g.info,g.recognized,g.info,g.recognized);let a=0;this.midiPorts=[],this.midiPortChannelOffsets=[];for(let E=0;E<this.tracks.length;E++)if(this.midiPorts.push(-1),this.usedChannelsOnTrack[E].size!==0)for(let Q of this.tracks[E]){if(Q.messageStatusByte!==G.midiPort)continue;let B=Q.messageData[0];this.midiPorts[E]=B,this.midiPortChannelOffsets[B]===void 0&&(this.midiPortChannelOffsets[B]=a,a+=16)}let I=1/0;for(let E of this.midiPorts)E!==-1&&I>E&&(I=E);if(I===1/0&&(I=0),this.midiPorts=this.midiPorts.map(E=>E===-1?I:E),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.midiPortChannelOffsets.length<2?y("%cNo additional MIDI Ports detected.",g.info):y("%cMIDI Ports detected!",g.recognized),!s)if(this.tracks.length>1){if(this.tracks[0].find(E=>E.messageStatusByte>=G.noteOn&&E.messageStatusByte<G.polyPressure)===void 0){let E=this.tracks[0].find(Q=>Q.messageStatusByte===G.trackName);E&&(this.rawMidiName=E.messageData,E.messageData.currentIndex=0,this.midiName=_(E.messageData,E.messageData.length,void 0,!1))}}else{let E=this.tracks[0].find(Q=>Q.messageStatusByte===G.trackName);E&&(this.rawMidiName=E.messageData,E.messageData.currentIndex=0,this.midiName=_(E.messageData,E.messageData.length,void 0,!1))}if(n||(this.copyright=t.map(E=>E.trim().replace(/(\r?\n)+/g,`
|
|
10
|
+
`)).filter(E=>E.length>0).join(`
|
|
11
|
+
`)||""),this.midiName=this.midiName.trim(),this.midiNameUsesFileName=!1,this.midiName.length===0){y("%cNo name detected. Using the alt name!",g.info),this.midiName=Yn(this.fileName),this.midiNameUsesFileName=!0,this.rawMidiName=new Uint8Array(this.midiName.length);for(let E=0;E<this.midiName.length;E++)this.rawMidiName[E]=this.midiName.charCodeAt(E)}else y(`%cMIDI Name detected! %c"${this.midiName}"`,g.info,g.recognized);let d=!0;for(let E of this.lyrics)if(E[0]===32||E[E.length-1]===32){d=!1;break}d&&(this.lyrics=this.lyrics.map(E=>{if(E[E.length-1]===45)return E;let Q=new Uint8Array(E.length+1);return Q.set(E,0),Q[E.length]=32,Q})),this.duration=ve(this.lastVoiceEventTick,this),y("%cSuccess!",g.recognized),O()}flush(){for(let A of this.tracks)A.sort((t,n)=>t.ticks-n.ticks);this._parseInternal()}};function ve(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 lt=class extends ht{constructor(A,t=""){super(),mA("%cParsing MIDI File...",g.info),this.fileName=t;let n=new x(A),s,o=_(n,4);if(n.currentIndex-=4,o==="RIFF"){n.currentIndex+=8;let l=_(n,4,void 0,!1);if(l!=="RMID")throw O(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${l}"`);let a=z(n);if(a.header!=="data")throw O(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${l}"`);for(s=a.chunkData;n.currentIndex<=n.length;){let I=n.currentIndex,d=z(n,!0);if(d.header==="RIFF"){let E=_(d.chunkData,4).toLowerCase();E==="sfbk"||E==="sfpk"||E==="dls "?(y("%cFound embedded soundfont!",g.recognized),this.embeddedSoundFont=n.slice(I,I+d.size).buffer):L(`Unknown RIFF chunk: "${E}"`),E==="dls "&&(this.isDLSRMIDI=!0)}else if(d.header==="LIST"&&_(d.chunkData,4)==="INFO"){for(y("%cFound RMIDI INFO chunk!",g.recognized),this.RMIDInfo={};d.chunkData.currentIndex<=d.size;){let Q=z(d.chunkData,!0);this.RMIDInfo[Q.header]=Q.chunkData}this.RMIDInfo.ICOP&&(this.copyright=_(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length,void 0,!1).replaceAll(`
|
|
12
12
|
`," ")),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[Et.name],this.midiName=_(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[Et.bankOffset]&&(this.bankOffset=F(this.RMIDInfo[Et.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 h=0;h<this.tracksAmount;h++){let a=[],I=this.readMIDIChunk(s);if(I.type!=="MTrk")throw O(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${I.type}"`);let d,C=0;for(this.format===2&&h>0&&(C+=this.tracks[h-1][this.tracks[h-1].length-1].ticks);I.data.currentIndex<I.size;){C+=It(I.data);let Q=I.data[I.data.currentIndex],B;if(d!==void 0&&Q<128)B=d;else{if(!d&&Q<128)throw O(),new SyntaxError(`Unexpected byte with no running byte. (${Q})`);B=I.data[I.data.currentIndex++]}let p=Jn(B),f;switch(p){case-1:f=0;break;case-2:B=I.data[I.data.currentIndex++],f=It(I.data);break;case-3:f=It(I.data);break;default:f=qn[B>>4],d=B;break}let D=new x(f);D.set(I.data.slice(I.data.currentIndex,I.data.currentIndex+f),0);let w=new pe(C,B,D);a.push(w),I.data.currentIndex+=f}this.tracks.push(a),y(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,g.info,g.value,g.info,g.value)}y("%cAll tracks parsed correctly!",g.recognized),this._parseInternal(),O(),y(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,g.info,g.recognized,g.info,g.recognized)}readMIDIChunk(A){let t={};t.type=_(A,4),t.size=Ae(A,4),t.data=new x(t.size);let n=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(n,0),A.currentIndex+=t.size,t}};function ts(e,A){mA("%cSearching for all used programs and keys...",g.info);let t=16+e.midiPortChannelOffsets.reduce((C,Q)=>Q>C?Q:C),n=[];for(let C=0;C<t;C++){let Q=C%16===GA?128:0;n.push({program:0,bank:Q,drums:C%16===GA,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]||(y(`%cDetected a new preset: %c${C.string}`,g.info,g.recognized),o[C.string]=new Set)}let o={},i=Array(e.tracks.length).fill(0),h=e.tracks.length;function a(){let C=0,Q=1/0;return e.tracks.forEach((B,p)=>{i[p]>=B.length||B[i[p]].ticks<Q&&(C=p,Q=B[i[p]].ticks)}),C}let I=e.midiPorts.slice(),d="gs";for(;h>0;){let C=a(),Q=e.tracks[C];if(i[C]>=Q.length){h--;continue}let B=Q[i[C]];if(i[C]++,B.messageStatusByte===R.midiPort){I[C]=B.messageData[0];continue}let p=B.messageStatusByte&240;if(p!==R.noteOn&&p!==R.controllerChange&&p!==R.programChange&&p!==R.systemExclusive)continue;let f=(B.messageStatusByte&15)+e.midiPortChannelOffsets[I[C]]||0,D=n[f];switch(p){case R.programChange:D.program=B.messageData[0],s(D);break;case R.controllerChange:if(B.messageData[0]!==m.bankSelect||d==="gs"&&D.drums)continue;let w=B.messageData[1],G=Math.max(0,w-e.bankOffset);if(d==="xg"){let v=w===120||w===126||w===127;v!==D.drums?(D.drums=v,D.bank=D.drums?128:G,s(D)):D.bank=D.drums?128:G;continue}n[f].bank=G;break;case R.noteOn:if(B.messageData[1]===0)continue;s(D),o[D.string].add(`${B.messageData[0]}-${B.messageData[1]}`);break;case R.systemExclusive:if(B.messageData[0]!==65||B.messageData[2]!==66||B.messageData[3]!==18||B.messageData[4]!==64||(B.messageData[5]&16)===0||B.messageData[6]!==21){B.messageData[0]===67&&B.messageData[2]===76&&B.messageData[5]===126&&B.messageData[6]===0&&(d="xg");continue}let U=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][B.messageData[5]&15]+e.midiPortChannelOffsets[I[C]],J=!!(B.messageData[7]>0&&B.messageData[5]>>4);D=n[U],D.drums=J,D.bank=J?128:0,s(D);break}}for(let C of Object.keys(o))o[C].size===0&&(y(`%cDetected change but no keys for %c${C}`,g.info,g.value),delete o[C]);return O(),o}function ns(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 ss(e,A=!0){if(this.stop(),!e.tracks)throw new Error("This MIDI has no tracks!");if(this.oneTickToSeconds=60/(120*e.timeDivision),this.midiData=e,this.midiData.embeddedSoundFont!==void 0)y("%cEmbedded soundfont detected! Using it.",g.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),mA("%cPreloading samples...",g.info);let t=ts(this.midiData,this.synth.soundfontManager);for(let[n,s]of Object.entries(t)){let o=parseInt(n.split(":")[0]),i=parseInt(n.split(":")[1]),h=this.synth.getPreset(o,i);y(`%cPreloading used samples on %c${h.presetName}%c...`,g.info,g.recognized,g.info);for(let a of s){let I=a.split("-");h.preloadSpecific(parseInt(I[0]),parseInt(I[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=ve(this.midiData.firstNoteOn,this.midiData),y(`%cTotal song time: ${Pt(Math.ceil(this.duration)).time}`,g.recognized),this.post(DA.songChange,[new at(this.midiData),this.songIndex,A]),this.duration<=1&&(L(`%cVery short song: (${Pt(Math.round(this.duration)).time}). Disabling loop!`,g.warn),this.loop=!1),A)this.play(!0);else{let t=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(t),this.pause()}}function os(e,A=!0){this.songs=e.reduce((t,n)=>{if(n.duration)return t.push(n),t;try{t.push(new ht(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.shuffleSongIndexes(),this.loadCurrentSong(A))}function rs(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadCurrentSong()}function is(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadCurrentSong()}function as(e=!0){e&&y("%cResetting all controllers!",g.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===GA?(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[uA+K.pitchWheel]===!1){let n=this.workletProcessorChannels[A].midiControllers[uA+K.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=it}function gs(){this.channelOctaveTuning.fill(0);for(let A=0;A<se.length;A++){if(this.lockedControllers[A])continue;let t=se[A];this.midiControllers[A]!==t&&A<127?this.controllerChange(A,t>>7):this.midiControllers[A]=t}this.channelVibrato={rate:0,depth:0,delay:0},this.holdPedal=!1,this.randomPan=!1;let e=this.customControllers[sA.channelTransposeFine];this.customControllers.set(Wt),this.setCustomController(sA.channelTransposeFine,e),this.resetParameters()}var _t=new Set([m.bankSelect,m.lsbForControl0BankSelect,m.mainVolume,m.lsbForControl7MainVolume,m.pan,m.lsbForControl10Pan,m.reverbDepth,m.tremoloDepth,m.chorusDepth,m.detuneDepth,m.phaserDepth,m.soundVariation,m.filterResonance,m.releaseTime,m.attackTime,m.brightness,m.decayTime,m.vibratoRate,m.vibratoDepth,m.vibratoDelay,m.soundController10]);function Is(){this.channelOctaveTuning.fill(0),this.pitchWheel(64,0),this.channelVibrato={rate:0,depth:0,delay:0};for(let e=0;e<128;e++){let A=se[e];!_t.has(e)&&A!==this.midiControllers[e]&&this.controllerChange(e,A)}}function Es(){this.dataEntryState=FA.Idle,y("%cResetting Registered and Non-Registered Parameters!",g.info)}var Be=se.slice(0,128);function Cs(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 a=0;a<t;a++)s.push({program:-1,bank:0,actualBank:0});let o=a=>a===m.dataDecrement||a===m.dataIncrement||a===m.dataEntryMsb||a===m.dataDecrement||a===m.lsbForControl6DataEntry||a===m.RPNLsb||a===m.RPNMsb||a===m.NRPNLsb||a===m.NRPNMsb||a===m.bankSelect||a===m.lsbForControl0BankSelect||a===m.resetAllControllers,i=[];for(let a=0;a<t;a++)i.push(Array.from(Be));function h(a){if(n[a]=8192,i?.[a]!==void 0)for(let I=0;I<Be.length;I++)_t.has(I)||(i[a][I]=Be[I])}for(;;){let a=this._findFirstEventIndex(),I=this.tracks[a][this.eventIndex[a]];if(A!==void 0){if(I.ticks>=A)break}else if(this.playedTime>=e)break;let d=Ue(I.messageStatusByte),C=d.channel+(this.midiPortChannelOffsets[this.midiPorts[a]]||0);switch(d.status){case R.noteOn:i[C]===void 0&&(i[C]=Array.from(Be)),i[C][m.portamentoControl]=I.messageData[0];break;case R.noteOff:break;case R.pitchBend:n[C]=I.messageData[1]<<7|I.messageData[0];break;case R.programChange:let B=s[C];B.program=I.messageData[0],B.actualBank=B.bank;break;case R.controllerChange:let p=I.messageData[0];if(o(p)){let f=I.messageData[1];if(p===m.bankSelect){s[C].bank=f;break}else p===m.resetAllControllers&&h(i[C]);this.sendMIDIMessages?this.sendMIDICC(C,p,f):this.synth.controllerChange(C,p,f)}else i[C]===void 0&&(i[C]=Array.from(Be)),i[C][p]=I.messageData[1];break;default:this._processEvent(I,a);break}this.eventIndex[a]++,a=this._findFirstEventIndex();let Q=this.tracks[a][this.eventIndex[a]];if(Q===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(Q.ticks-I.ticks)}if(this.sendMIDIMessages){for(let a=0;a<t;a++)if(n[a]!==void 0&&this.sendMIDIPitchWheel(a,n[a]>>7,n[a]&127),i[a]!==void 0&&i[a].forEach((I,d)=>{I!==Be[d]&&!o(d)&&this.sendMIDICC(a,d,I)}),s[a].program>=0&&s[a].actualBank>=0){let I=s[a].actualBank;this.sendMIDICC(a,m.bankSelect,I),this.sendMIDIProgramChange(a,s[a].program)}}else for(let a=0;a<t;a++)if(n[a]!==void 0&&this.synth.pitchWheel(a,n[a]>>7,n[a]&127),i[a]!==void 0&&i[a].forEach((I,d)=>{I!==Be[d]&&!o(d)&&this.synth.controllerChange(a,d,I)}),s[a].program>=0&&s[a].actualBank>=0){let I=s[a].actualBank;this.synth.controllerChange(a,m.bankSelect,I),this.synth.programChange(a,s[a].program)}return!0}function hs(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 ls(e){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(DA.timeChange,currentTime-ve(e,this.midiData));let A=this._playTo(0,e);this._recalculateStartTime(this.playedTime),A&&this.play()}function cs(e){this.absoluteStartTime=currentTime-e/this._playbackRate}function Bs(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:switch(A){case Te.forwards:this.nextSong();break;case Te.backwards:this.previousSong();break;case Te.shuffleOff:this.shuffleMode=!1,this.songIndex=this.shuffledSongIndexes[this.songIndex];break;case Te.shuffleOn:this.shuffleMode=!0,this.shuffleSongIndexes(),this.songIndex=0,this.loadCurrentSong()}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 Qs(e,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:RA.sequencerSpecific,messageData:{messageType:e,messageData:A}})}function us(e){this.post(DA.midiEvent,e)}function ds(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.controllerChange|e,A,t])}function fs(e,A){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.programChange|e,A])}function ms(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([R.pitchBend|e,t,A])}function ps(){if(this.sendMIDIMessages){this.sendMIDIMessage([R.reset]);for(let e=0;e<rt;e++)this.sendMIDIMessage([R.controllerChange|e,m.allSoundOff,0]),this.sendMIDIMessage([R.controllerChange|e,m.resetAllControllers,0])}}var hA=class{songs=[];songIndex=0;shuffledSongIndexes=[];synth;isActive=!1;sendMIDIMessages=!1;loopCount=1/0;eventIndex=[];playedTime=0;pausedTime=void 0;absoluteStartTime=currentTime;playingNotes=[];loop=!0;shuffleMode=!1;midiData=void 0;midiPorts=[];midiPortChannelOffset=0;midiPortChannelOffsets={};_skipToFirstNoteOn=!0;preservePlaybackState=!1;constructor(A){this.synth=A}_playbackRate=1;set playbackRate(A){let t=this.currentTime;this._playbackRate=A,this.currentTime=t}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(currentTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(A>this.duration||A<0){this._skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this._skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let t=this.paused&&this.preservePlaybackState;if(this.pausedTime=void 0,this.post(DA.timeChange,currentTime-A),this.midiData.duration===0){L("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){L("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,m.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<rt;A++)this.sendMIDICC(A,m.allNotesOff,0)}}loadCurrentSong(A=!0){let t=this.songIndex;this.shuffleMode&&(t=this.shuffledSongIndexes[this.songIndex]),this.loadNewSequence(this.songs[t],A)}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}shuffleSongIndexes(){let A=this.songs.map((t,n)=>n);for(this.shuffledSongIndexes=[];A.length>0;){let t=A[Math.floor(Math.random()*A.length)];this.shuffledSongIndexes.push(t),A.splice(A.indexOf(t),1)}}};hA.prototype.sendMIDIMessage=us;hA.prototype.sendMIDIReset=ps;hA.prototype.sendMIDICC=ds;hA.prototype.sendMIDIProgramChange=fs;hA.prototype.sendMIDIPitchWheel=ms;hA.prototype.assignMIDIPort=ns;hA.prototype.post=Qs;hA.prototype.processMessage=Bs;hA.prototype._processEvent=zn;hA.prototype._addNewMidiPort=jn;hA.prototype.processTick=$n;hA.prototype._findFirstEventIndex=As;hA.prototype.loadNewSequence=ss;hA.prototype.loadNewSongList=os;hA.prototype.nextSong=rs;hA.prototype.previousSong=is;hA.prototype.play=hs;hA.prototype._playTo=Cs;hA.prototype.setTimeTicks=ls;hA.prototype._recalculateStartTime=cs;function fr(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 ys(e){let A=[];for(let n of this.workletProcessorChannels)for(let s of n.voices)if(!s.finished){let o=fr(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:{},Ss=!1,Ds;zA.isInitialized=new Promise(e=>Ds=e);var mr=function(e){var A,t,n,s,o,i,h,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",I="",d=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=a.indexOf(e.charAt(d++)),o=a.indexOf(e.charAt(d++)),i=a.indexOf(e.charAt(d++)),h=a.indexOf(e.charAt(d++)),A=s<<2|o>>4,t=(15&o)<<4|i>>2,n=(3&i)<<6|h,I+=String.fromCharCode(A),i!==64&&(I+=String.fromCharCode(t)),h!==64&&(I+=String.fromCharCode(n));while(d<e.length);return I};(function(){var e,A,t,n,s,o,i,h,a,I,d,C,Q,B,p,f,D,w,G,U,J,v,E=E!==void 0?E:{};E.wasmBinary=Uint8Array.from(mr("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/Rw0ACwsLIAVBADYCACAGKAIAIQAgACABawwFCwwBCwwBCyAAQdQHaiEEIAQoAgAhBCAERQRAIAJBADYCACAAQdQAaiECIAAQGSEDAkAgA0F/RwRAA0AgAigCACEDIAMNAiAAEBkhAyADQX9HDQALCwsgBUEANgIAIAYoAgAhACAAIAFrDAMLCyAAEBMgAiADNgIAIAVBADYCAEEBBSAAQQIQFUEACwshACALJAYgAAsJACAAIAE2AlgLpgoBDH8gAEGAC2ohCiAKKAIAIQYCQAJAAkAgBkEATA0AA0AgACAEQRRsakGQC2ohAyADQQA2AgAgBEEBaiEEIAQgBkgNAAsgBkEESA0ADAELIAJBBEgEQEEAIQIFIAJBfWohBkEAIQIDQAJAIAEgAmohBCAELAAAIQMgA0HPAEYEQCAEQcATQQQQZCEEIARFBEAgAkEaaiEJIAkgBk4NAiACQRtqIQcgASAJaiELIAssAAAhAyADQf8BcSEFIAcgBWohBCAEIAZODQIgBUEbaiEEIAMEQEEAIQMDQCADIAdqIQggASAIaiEIIAgtAAAhCCAIQf8BcSEIIAQgCGohBCADQQFqIQMgAyAFRw0ACyAEIQMFIAQhAwtBACEEQQAhBQNAIAUgAmohByABIAdqIQcgBywAACEHIAQgBxApIQQgBUEBaiEFIAVBFkcNAAtBFiEFA0AgBEEAECkhBCAFQQFqIQUgBUEaRw0ACyAKKAIAIQUgBUEBaiEHIAogBzYCACADQWZqIQMgACAFQRRsakGIC2ohCCAIIAM2AgAgACAFQRRsakGMC2ohAyADIAQ2AgAgAkEWaiEEIAEgBGohBCAELQAAIQQgBEH/AXEhBCACQRdqIQMgASADaiEDIAMtAAAhAyADQf8BcSEDIANBCHQhAyADIARyIQQgAkEYaiEDIAEgA2ohAyADLQAAIQMgA0H/AXEhAyADQRB0IQMgBCADciEEIAJBGWohAyABIANqIQMgAy0AACEDIANB/wFxIQMgA0EYdCEDIAQgA3IhBCAAQYQLaiAFQRRsaiEDIAMgBDYCACALLQAAIQQgBEH/AXEhBCAJIARqIQQgASAEaiEEIAQsAAAhBCAEQX9GBH9BfwUgAkEGaiEEIAEgBGohBCAELQAAIQQgBEH/AXEhBCACQQdqIQMgASADaiEDIAMtAAAhAyADQf8BcSEDIANBCHQhAyADIARyIQQgAkEIaiEDIAEgA2ohAyADLQAAIQMgA0H/AXEhAyADQRB0IQMgBCADciEEIAJBCWohAyABIANqIQMgAy0AACEDIANB/wFxIQMgA0EYdCEDIAQgA3ILIQQgACAFQRRsakGUC2ohAyADIAQ2AgAgACAFQRRsakGQC2ohBCAEIAk2AgAgB0EERgRAIAYhAgwDCwsLIAJBAWohAiACIAZIDQEgBiECCwsgCigCACEGIAZBAEoNAQsMAQsgAiEEIAYhAkEAIQYDQAJAIABBhAtqIAZBFGxqIQkgACAGQRRsakGQC2ohAyADKAIAIQsgACAGQRRsakGIC2ohDSANKAIAIQggBCALayEDIAggA0ohBSADIAggBRshByAAIAZBFGxqQYwLaiEOIA4oAgAhAyAHQQBKBEBBACEFA0AgBSALaiEMIAEgDGohDCAMLAAAIQwgAyAMECkhAyAFQQFqIQUgBSAHSA0ACwsgCCAHayEFIA0gBTYCACAOIAM2AgAgBQRAIAZBAWohBgUgCSgCACEFIAMgBUYNASACQX9qIQIgCiACNgIAIAkgAEGEC2ogAkEUbGoiAikCADcCACAJIAIpAgg3AgggCSACKAIQNgIQIAooAgAhAgsgBiACSA0BIAQhAgwCCwsgByALaiECIApBfzYCACAAQdQHaiEBIAFBADYCACAAQdgKaiEBIAFBfzYCACAAIAZBFGxqQZQLaiEBIAEoAgAhASAAQZgIaiEEIAQgATYCACABQX9HIQEgAEGcCGohACAAIAE2AgALIAILhgUBCH8gAEHYCmohAiACKAIAIQMgAEEUaiECIAIoAgAhAgJ/AkAgA0F/RgR/QQEhAwwBBSAAQdAIaiEEIAQoAgAhBQJAIAMgBUgEQANAIABB1AhqIANqIQQgBCwAACEGIAZB/wFxIQQgAiAEaiECIAZBf0cNAiADQQFqIQMgAyAFSA0ACwsLIAFBAEchBiAFQX9qIQQgAyAESCEEIAYgBHEEQCAAQRUQFUEADAMLIABBHGohBCAEKAIAIQQgAiAESwR/IABBARAVQQAFIAMgBUYhBCADQX9GIQMgBCADcgR/QQAhAwwDBUEBCwsLDAELIAAoAhwhCCAAQdQHaiEGIAFBAEchBCACIQECQAJAAkACQAJAAkACQAJAAkADQCABQRpqIQUgBSAITw0BIAFBwBNBBBBkIQIgAg0CIAFBBGohAiACLAAAIQIgAg0DIAMEQCAGKAIAIQIgAgRAIAFBBWohAiACLAAAIQIgAkEBcSECIAINBgsFIAFBBWohAiACLAAAIQIgAkEBcSECIAJFDQYLIAUsAAAhAiACQf8BcSEHIAFBG2ohCSAJIAdqIQEgASAISw0GAkAgAgRAQQAhAgNAIAkgAmohAyADLAAAIQUgBUH/AXEhAyABIANqIQEgBUF/Rw0CIAJBAWohAiACIAdJDQALBUEAIQILCyAHQX9qIQMgAiADSCEDIAQgA3ENByABIAhLDQhBASACIAdHDQoaQQAhAwwAAAsACyAAQQEQFUEADAgLIABBFRAVQQAMBwsgAEEVEBVBAAwGCyAAQRUQFUEADAULIABBFRAVQQAMBAsgAEEBEBVBAAwDCyAAQRUQFUEADAILIABBARAVC0EACyEAIAALewEFfyMGIQUjBkEQaiQGIAVBCGohBiAFQQRqIQQgBSEHIAAgAiAEIAMgBSAGECohBCAEBH8gBigCACEEIABBkANqIARBBmxqIQggAigCACEGIAMoAgAhBCAHKAIAIQMgACABIAggBiAEIAMgAhArBUEACyEAIAUkBiAACxsBAX8gABAuIQEgAEHoCmohACAAQQA2AgAgAQv5AwIMfwN9IABB1AdqIQkgCSgCACEGIAYEfyAAIAYQSCELIABBBGohBCAEKAIAIQogCkEASgRAIAZBAEohDCAGQX9qIQ0DQCAMBEAgAEGUBmogBUECdGooAgAhDiAAQZQHaiAFQQJ0aigCACEPQQAhBANAIAQgAmohByAOIAdBAnRqIQcgByoCACEQIAsgBEECdGohCCAIKgIAIREgECARlCEQIA8gBEECdGohCCAIKgIAIREgDSAEayEIIAsgCEECdGohCCAIKgIAIRIgESASlCERIBAgEZIhECAHIBA4AgAgBEEBaiEEIAQgBkcNAAsLIAVBAWohBSAFIApIDQALCyAJKAIABSAAQQRqIQQgBCgCACEKQQALIQsgASADayEHIAkgBzYCACAKQQBKBEAgASADSiEJQQAhBQNAIAkEQCAAQZQGaiAFQQJ0aigCACEMIABBlAdqIAVBAnRqKAIAIQ1BACEGIAMhBANAIAwgBEECdGohBCAEKAIAIQQgDSAGQQJ0aiEOIA4gBDYCACAGQQFqIQYgBiADaiEEIAYgB0cNAAsLIAVBAWohBSAFIApIDQALCyALRSEEIAEgA0ghBSABIAMgBRshASABIAJrIQEgAEH8CmohACAEBEBBACEBBSAAKAIAIQIgAiABaiECIAAgAjYCAAsgAQvRAQECfyMGIQYjBkHgC2okBiAGIQUgBSAEEBwgBUEUaiEEIAQgADYCACAAIAFqIQEgBUEcaiEEIAQgATYCACAFQSRqIQEgAUEBOgAAIAUQHSEBIAEEQCAFEB4hASABBEAgASAFQdwLEHkaIAFBFGohBCAEKAIAIQQgBCAAayEAIAIgADYCACADQQA2AgAFIAUQEUEAIQELBSAFQdQAaiEAIAAoAgAhACAARSEAIAVB2ABqIQEgASgCACEBIAMgAUEBIAAbNgIAQQAhAQsgBiQGIAELrQECAX8BfiAAQQBB3AsQehogAQRAIABBxABqIQIgASkCACEDIAIgAzcCACAAQcgAaiECIANCIIghAyADpyEBIAFBA2ohASABQXxxIQEgAiABNgIAIABB0ABqIQIgAiABNgIACyAAQdQAaiEBIAFBADYCACAAQdgAaiEBIAFBADYCACAAQRRqIQEgAUEANgIAIABB8ABqIQEgAUEANgIAIABBgAtqIQAgAEF/NgIAC9BNAiN/A30jBiEZIwZBgAhqJAYgGUHwB2ohAiAZIgxB7AdqIR0gDEHoB2ohHiAAEDEhAQJ/IAEEQCAAQdMKaiEBIAEtAAAhASABQf8BcSEBIAFBAnEhAyADRQRAIABBIhAVQQAMAgsgAUEEcSEDIAMEQCAAQSIQFUEADAILIAFBAXEhASABBEAgAEEiEBVBAAwCCyAAQdAIaiEBIAEoAgAhASABQQFHBEAgAEEiEBVBAAwCCyAAQdQIaiEBAkACQCABLAAAQR5rIgEEQCABQSJGBEAMAgUMAwsACyAAEDAhASABQf8BcUEBRwRAIABBIhAVQQAMBAsgACACQQYQIiEBIAFFBEAgAEEKEBVBAAwECyACEEkhASABRQRAIABBIhAVQQAMBAsgABAjIQEgAQRAIABBIhAVQQAMBAsgABAwIQEgAUH/AXEhAyAAQQRqIRMgEyADNgIAIAFB/wFxRQRAIABBIhAVQQAMBAsgAUH/AXFBEEoEQCAAQQUQFUEADAQLIAAQIyEBIAAgATYCACABRQRAIABBIhAVQQAMBAsgABAjGiAAECMaIAAQIxogABAwIQMgA0H/AXEhBCAEQQ9xIQEgBEEEdiEEQQEgAXQhBSAAQeQAaiEaIBogBTYCAEEBIAR0IQUgAEHoAGohFCAUIAU2AgAgAUF6aiEFIAVBB0sEQCAAQRQQFUEADAQLIANBoH9qQRh0QRh1IQMgA0EASARAIABBFBAVQQAMBAsgASAESwRAIABBFBAVQQAMBAsgABAwIQEgAUEBcSEBIAFFBEAgAEEiEBVBAAwECyAAEDEhAUEAIAFFDQMaIAAQSiEBQQAgAUUNAxogAEHUCmohAwNAIAAQLyEBIAAgARBLIANBADoAACABDQALIAAQSiEBQQAgAUUNAxogAEEkaiEBIAEsAAAhAQJAIAEEQCAAQQEQFyEBIAENASAAQdgAaiEAIAAoAgAhAUEAIAFBFUcNBRogAEEUNgIAQQAMBQsLEEwgABAZIQEgAUEFRwRAIABBFBAVQQAMBAtBACEBA0AgABAZIQMgA0H/AXEhAyACIAFqIQQgBCADOgAAIAFBAWohASABQQZHDQALIAIQSSEBIAFFBEAgAEEUEBVBAAwECyAAQQgQLCEBIAFBAWohASAAQewAaiENIA0gATYCACABQbAQbCEBIAAgARBNIQEgAEHwAGohFSAVIAE2AgAgAUUEQCAAQQMQFUEADAQLIA0oAgAhAiACQbAQbCECIAFBACACEHoaIA0oAgAhAQJAIAFBAEoEQCAAQRBqIRYDQAJAIBUoAgAhCiAKIAZBsBBsaiEJIABBCBAsIQEgAUH/AXEhASABQcIARwRAQT8hAQwBCyAAQQgQLCEBIAFB/wFxIQEgAUHDAEcEQEHBACEBDAELIABBCBAsIQEgAUH/AXEhASABQdYARwRAQcMAIQEMAQsgAEEIECwhASAAQQgQLCECIAJBCHQhAiABQf8BcSEBIAIgAXIhASAJIAE2AgAgAEEIECwhASAAQQgQLCECIABBCBAsIQMgA0EQdCEDIAJBCHQhAiACQYD+A3EhAiABQf8BcSEBIAIgAXIhASABIANyIQEgCiAGQbAQbGpBBGohDiAOIAE2AgAgAEEBECwhASABQQBHIgMEf0EABSAAQQEQLAshASABQf8BcSECIAogBkGwEGxqQRdqIREgESACOgAAIAkoAgAhBCAOKAIAIQEgBEUEQCABBH9ByAAhAQwCBUEACyEBCyACQf8BcQRAIAAgARA8IQIFIAAgARBNIQIgCiAGQbAQbGpBCGohASABIAI2AgALIAJFBEBBzQAhAQwBCwJAIAMEQCAAQQUQLCEDIA4oAgAhASABQQBMBEBBACEDDAILQQAhBANAIANBAWohBSABIARrIQEgARAtIQEgACABECwhASABIARqIQMgDigCACEPIAMgD0oEQEHTACEBDAQLIAIgBGohBCAFQf8BcSEPIAQgDyABEHoaIA4oAgAhASABIANKBH8gAyEEIAUhAwwBBUEACyEDCwUgDigCACEBIAFBAEwEQEEAIQMMAgtBACEDQQAhAQNAIBEsAAAhBAJAAkAgBEUNACAAQQEQLCEEIAQNACACIANqIQQgBEF/OgAADAELIABBBRAsIQQgBEEBaiEEIARB/wFxIQUgAiADaiEPIA8gBToAACABQQFqIQEgBEH/AXEhBCAEQSBGBEBB2gAhAQwFCwsgA0EBaiEDIA4oAgAhBCADIARIDQALIAEhAyAEIQELCyARLAAAIQQCfwJAIAQEfyABQQJ1IQQgAyAETgRAIBYoAgAhAyABIANKBEAgFiABNgIACyAAIAEQTSEBIAogBkGwEGxqQQhqIQMgAyABNgIAIAFFBEBB4QAhAQwFCyAOKAIAIQQgASACIAQQeRogDigCACEBIAAgAiABEE4gAygCACECIBFBADoAACAOKAIAIQQMAgsgCiAGQbAQbGpBrBBqIQQgBCADNgIAIAMEfyAAIAMQTSEBIAogBkGwEGxqQQhqIQMgAyABNgIAIAFFBEBB6wAhAQwFCyAEKAIAIQEgAUECdCEBIAAgARA8IQEgCiAGQbAQbGpBIGohAyADIAE2AgAgAUUEQEHtACEBDAULIAQoAgAhASABQQJ0IQEgACABEDwhBSAFRQRAQfAAIQEMBQsgDigCACEBIAQoAgAhDyAFIQcgBQVBACEPQQAhB0EACyEDIA9BA3QhBSAFIAFqIQUgFigCACEPIAUgD00EQCABIQUgBAwDCyAWIAU2AgAgASEFIAQFIAEhBAwBCwwBCyAEQQBKBEBBACEBQQAhAwNAIAIgA2ohBSAFLAAAIQUgBUH/AXFBCkohDyAFQX9HIQUgDyAFcSEFIAVBAXEhBSABIAVqIQEgA0EBaiEDIAMgBEgNAAsFQQAhAQsgCiAGQbAQbGpBrBBqIQ8gDyABNgIAIARBAnQhASAAIAEQTSEBIAogBkGwEGxqQSBqIQMgAyABNgIAIAFFBEBB6QAhAQwCC0EAIQMgDigCACEFQQAhByAPCyEBIAkgAiAFIAMQTyEEIARFBEBB9AAhAQwBCyABKAIAIQQgBARAIARBAnQhBCAEQQRqIQQgACAEEE0hBCAKIAZBsBBsakGkEGohBSAFIAQ2AgAgBEUEQEH5ACEBDAILIAEoAgAhBCAEQQJ0IQQgBEEEaiEEIAAgBBBNIQQgCiAGQbAQbGpBqBBqIQUgBSAENgIAIARFBEBB+wAhAQwCCyAEQQRqIQ8gBSAPNgIAIARBfzYCACAJIAIgAxBQCyARLAAAIQMgAwRAIAEoAgAhAyADQQJ0IQMgACAHIAMQTiAKIAZBsBBsakEgaiEDIAMoAgAhBCABKAIAIQUgBUECdCEFIAAgBCAFEE4gDigCACEEIAAgAiAEEE4gA0EANgIACyAJEFEgAEEEECwhAiACQf8BcSEDIAogBkGwEGxqQRVqIQUgBSADOgAAIAJB/wFxIQIgAkECSwRAQYABIQEMAQsgAgRAIABBIBAsIQIgAhBSISUgCiAGQbAQbGpBDGohDyAPICU4AgAgAEEgECwhAiACEFIhJSAKIAZBsBBsakEQaiEbIBsgJTgCACAAQQQQLCECIAJBAWohAiACQf8BcSECIAogBkGwEGxqQRRqIQQgBCACOgAAIABBARAsIQIgAkH/AXEhAiAKIAZBsBBsakEWaiEcIBwgAjoAACAFLAAAIQsgDigCACECIAkoAgAhAyALQQFGBH8gAiADEFMFIAMgAmwLIQIgCiAGQbAQbGpBGGohCyALIAI2AgAgAkUEQEGGASEBDAILIAJBAXQhAiAAIAIQPCEQIBBFBEBBiAEhAQwCCyALKAIAIQIgAkEASgRAQQAhAgNAIAQtAAAhAyADQf8BcSEDIAAgAxAsIQMgA0F/RgRAQYwBIQEMBAsgA0H//wNxIQMgECACQQF0aiEXIBcgAzsBACACQQFqIQIgCygCACEDIAIgA0gNAAsgAyECCyAFLAAAIQMCQCADQQFGBEAgESwAACEDIANBAEciFwRAIAEoAgAhAyADRQRAIAIhAQwDCwUgDigCACEDCyAKIAZBsBBsaiAAIANBAnQgCSgCAGwQTSIfNgIcIB9FBEBBkwEhAQwECyABIA4gFxshASABKAIAIQ4gDkEASgRAIAogBkGwEGxqQagQaiEgIAkoAgAiCkEASiEJQwAAAAAhJUEAIQEDQCAXBH8gICgCACECIAIgAUECdGohAiACKAIABSABCyEEIAkEQCALKAIAIRggHCwAAEUhISAKIAFsISJBACEDQQEhAgNAIAQgAm4hEiASIBhwIRIgECASQQF0aiESIBIvAQAhEiASQf//A3GyISQgGyoCACEmICYgJJQhJCAPKgIAISYgJCAmkiEkICUgJJIhJCAiIANqIRIgHyASQQJ0aiESIBIgJDgCACAlICQgIRshJSADQQFqIQMgAyAKSCISBEBBfyAYbiEjIAIgI0sEQEGeASEBDAkLIBggAmwhAgsgEg0ACwsgAUEBaiEBIAEgDkgNAAsLIAVBAjoAACALKAIAIQEFIAJBAnQhASAAIAEQTSECIAogBkGwEGxqQRxqIQEgASACNgIAIAsoAgAhCCACRQRAQaUBIQEMBAsgCEEATARAIAghAQwCCyAcLAAARSEDQwAAAAAhJUEAIQEDQCAQIAFBAXRqIQQgBC8BACEEIARB//8DcbIhJCAbKgIAISYgJiAklCEkIA8qAgAhJiAkICaSISQgJSAkkiEkIAIgAUECdGohBCAEICQ4AgAgJSAkIAMbISUgAUEBaiEBIAEgCEgNAAsgCCEBCwsgAUEBdCEBIAAgECABEE4LIAZBAWohBiANKAIAIQEgBiABSA0BDAMLCwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUE/aw5nABYBFgIWFhYWAxYWFhYEFhYWFhYFFhYWFhYWBhYWFhYWFgcWFhYWFhYWCBYJFgoWFgsWFhYMFhYWFg0WDhYWFhYPFhYWFhYQFhEWFhYSFhYWFhYWExYWFhYWFhYWFhYUFhYWFhYWFRYLIABBFBAVQQAMGwsgAEEUEBVBAAwaCyAAQRQQFUEADBkLIABBFBAVQQAMGAsgAEEDEBVBAAwXCyAAQRQQFUEADBYLIABBFBAVQQAMFQsgAEEDEBVBAAwUCyAAQQMQFUEADBMLIABBAxAVQQAMEgsgAEEDEBVBAAwRCyAAQQMQFUEADBALIBEsAAAhASABBEAgACAHQQAQTgsgAEEUEBVBAAwPCyAAQQMQFUEADA4LIABBAxAVQQAMDQsgAEEUEBVBAAwMCyAAQRQQFUEADAsLIABBAxAVQQAMCgsgCygCACEBIAFBAXQhASAAIBAgARBOIABBFBAVQQAMCQsgCygCACEBIAFBAXQhASAAIBAgARBOIABBAxAVQQAMCAsgGEEBdCEBIAAgECABEE4gAEEUEBVBAAwHCyAIQQF0IQEgACAQIAEQTiAAQQMQFUEADAYLCwsgAEEGECwhASABQQFqIQEgAUH/AXEhAgJAIAIEQEEAIQEDQAJAIABBEBAsIQMgA0UhAyADRQ0AIAFBAWohASABIAJJDQEMAwsLIABBFBAVQQAMBQsLIABBBhAsIQEgAUEBaiEBIABB9ABqIQ8gDyABNgIAIAFBvAxsIQEgACABEE0hASAAQfgBaiEOIA4gATYCACABRQRAIABBAxAVQQAMBAsgDygCACEBAn8gAUEASgR/QQAhBEEAIQcCQAJAAkACQAJAAkADQCAAQRAQLCEBIAFB//8DcSECIABB+ABqIAdBAXRqIQMgAyACOwEAIAFB//8DcSEBIAFBAUsNASABRQ0CIA4oAgAhBSAAQQUQLCEBIAFB/wFxIQIgBSAHQbwMbGohCiAKIAI6AAAgAUH/AXEhASABBEBBfyEBQQAhAgNAIABBBBAsIQMgA0H/AXEhCCAFIAdBvAxsakEBaiACaiEGIAYgCDoAACADQf8BcSEDIAMgAUohCCADIAEgCBshAyACQQFqIQIgCi0AACEBIAFB/wFxIQEgAiABSQRAIAMhAQwBCwtBACEBA0AgAEEDECwhAiACQQFqIQIgAkH/AXEhAiAFIAdBvAxsakEhaiABaiEIIAggAjoAACAAQQIQLCECIAJB/wFxIQIgBSAHQbwMbGpBMWogAWohCCAIIAI6AAACQAJAIAJB/wFxRQ0AIABBCBAsIQIgAkH/AXEhBiAFIAdBvAxsakHBAGogAWohECAQIAY6AAAgAkH/AXEhAiANKAIAIQYgAiAGTg0HIAgsAAAhAiACQR9HDQAMAQtBACECA0AgAEEIECwhBiAGQf//A2ohBiAGQf//A3EhECAFIAdBvAxsakHSAGogAUEEdGogAkEBdGohCSAJIBA7AQAgBkEQdCEGIAZBEHUhBiANKAIAIRAgBiAQSCEGIAZFDQggAkEBaiECIAgtAAAhBiAGQf8BcSEGQQEgBnQhBiACIAZIDQALCyABQQFqIQIgASADSARAIAIhAQwBCwsLIABBAhAsIQEgAUEBaiEBIAFB/wFxIQEgBSAHQbwMbGpBtAxqIQIgAiABOgAAIABBBBAsIQEgAUH/AXEhAiAFIAdBvAxsakG1DGohECAQIAI6AAAgBSAHQbwMbGpB0gJqIQkgCUEAOwEAIAFB/wFxIQFBASABdCEBIAFB//8DcSEBIAUgB0G8DGxqQdQCaiECIAIgATsBACAFIAdBvAxsakG4DGohBiAGQQI2AgAgCiwAACEBAkACQCABBEBBACEIQQIhAwNAIAUgB0G8DGxqQQFqIAhqIQIgAi0AACECIAJB/wFxIQIgBSAHQbwMbGpBIWogAmohAiACLAAAIQsgCwRAQQAhAQNAIBAtAAAhAyADQf8BcSEDIAAgAxAsIQMgA0H//wNxIQsgBigCACEDIAUgB0G8DGxqQdICaiADQQF0aiERIBEgCzsBACADQQFqIQMgBiADNgIAIAFBAWohASACLQAAIQsgC0H/AXEhCyABIAtJDQALIAosAAAhAgUgASECCyADIQEgCEEBaiEIIAJB/wFxIQMgCCADSQRAIAEhAyACIQEMAQsLIAFBAEoNAQVBAiEBDAELDAELQQAhAgNAIAUgB0G8DGxqQdICaiACQQF0aiEDIAMuAQAhAyAMIAJBAnRqIQggCCADOwEAIAJB//8DcSEDIAwgAkECdGpBAmohCCAIIAM7AQAgAkEBaiECIAIgAUgNAAsLIAwgAUEEQQEQZiAGKAIAIQECQCABQQBKBEBBACEBA0AgDCABQQJ0akECaiECIAIuAQAhAiACQf8BcSECIAUgB0G8DGxqQcYGaiABaiEDIAMgAjoAACABQQFqIQEgBigCACECIAEgAkgNAAsgAkECTARAIAIhAQwCC0ECIQEDQCAJIAEgHSAeEFUgHSgCACECIAJB/wFxIQIgBSAHQbwMbGpBwAhqIAFBAXRqIQMgAyACOgAAIB4oAgAhAiACQf8BcSECIAUgB0G8DGxqIAFBAXRqQcEIaiEDIAMgAjoAACABQQFqIQEgBigCACECIAEgAkgNAAsgAiEBCwsgASAESiECIAEgBCACGyEEIAdBAWohByAPKAIAIQEgByABSA0ADAUACwALIABBFBAVQQAMCgsgDigCACEBIABBCBAsIQIgAkH/AXEhAiABIAdBvAxsaiEDIAMgAjoAACAAQRAQLCECIAJB//8DcSECIAEgB0G8DGxqQQJqIQMgAyACOwEAIABBEBAsIQIgAkH//wNxIQIgASAHQbwMbGpBBGohAyADIAI7AQAgAEEGECwhAiACQf8BcSECIAEgB0G8DGxqQQZqIQMgAyACOgAAIABBCBAsIQIgAkH/AXEhAiABIAdBvAxsakEHaiEDIAMgAjoAACAAQQQQLCECIAJBAWohAiACQf8BcSEEIAEgB0G8DGxqQQhqIQMgAyAEOgAAIAJB/wFxIQIgAgRAIAEgB0G8DGxqQQlqIQJBACEBA0AgAEEIECwhByAHQf8BcSEHIAIgAWohBCAEIAc6AAAgAUEBaiEBIAMtAAAhByAHQf8BcSEHIAEgB0kNAAsLIABBBBAVQQAMCQsgAEEUEBUMAgsgAEEUEBUMAQsgBEEBdAwCC0EADAUFQQALCyEQIABBBhAsIQEgAUEBaiEBIABB/AFqIQUgBSABNgIAIAFBGGwhASAAIAEQTSEBIABBgANqIQ4gDiABNgIAIAFFBEAgAEEDEBVBAAwECyAFKAIAIQIgAkEYbCECIAFBACACEHoaIAUoAgAhAQJAIAFBAEoEQEEAIQcCQAJAAkACQAJAAkACQAJAA0AgDigCACEEIABBEBAsIQEgAUH//wNxIQIgAEGAAmogB0EBdGohAyADIAI7AQAgAUH//wNxIQEgAUECSw0BIABBGBAsIQIgBCAHQRhsaiEBIAEgAjYCACAAQRgQLCECIAQgB0EYbGpBBGohAyADIAI2AgAgASgCACEBIAIgAUkNAiAAQRgQLCEBIAFBAWohASAEIAdBGGxqQQhqIQIgAiABNgIAIABBBhAsIQEgAUEBaiEBIAFB/wFxIQEgBCAHQRhsakEMaiEIIAggAToAACAAQQgQLCEBIAFB/wFxIQIgBCAHQRhsakENaiEGIAYgAjoAACABQf8BcSEBIA0oAgAhAiABIAJODQMgCCwAACEBIAEEf0EAIQEDQCAAQQMQLCEDIABBARAsIQIgAgR/IABBBRAsBUEACyECIAJBA3QhAiACIANqIQIgAkH/AXEhAiAMIAFqIQMgAyACOgAAIAFBAWohASAILQAAIQIgAkH/AXEhAyABIANJDQALIAJB/wFxBUEACyEBIAFBBHQhASAAIAEQTSEBIAQgB0EYbGpBFGohCiAKIAE2AgAgAUUNBCAILAAAIQIgAgRAQQAhAgNAIAwgAmotAAAhC0EAIQMDQEEBIAN0IQkgCSALcSEJIAkEQCAAQQgQLCEJIAlB//8DcSERIAooAgAhASABIAJBBHRqIANBAXRqIRYgFiAROwEAIAlBEHQhCSAJQRB1IQkgDSgCACERIBEgCUwNCQUgASACQQR0aiADQQF0aiEJIAlBfzsBAAsgA0EBaiEDIANBCEkNAAsgAkEBaiECIAgtAAAhAyADQf8BcSEDIAIgA0kNAAsLIBUoAgAhASAGLQAAIQIgAkH/AXEhAiABIAJBsBBsakEEaiEBIAEoAgAhASABQQJ0IQEgACABEE0hASAEIAdBGGxqQRBqIQogCiABNgIAIAFFDQYgFSgCACECIAYtAAAhAyADQf8BcSEDIAIgA0GwEGxqQQRqIQIgAigCACECIAJBAnQhAiABQQAgAhB6GiAVKAIAIQIgBi0AACEBIAFB/wFxIQMgAiADQbAQbGpBBGohASABKAIAIQEgAUEASgRAQQAhAQNAIAIgA0GwEGxqIQIgAigCACEDIAAgAxBNIQIgCigCACEEIAQgAUECdGohBCAEIAI2AgAgCigCACECIAIgAUECdGohAiACKAIAIQQgBEUNCQJAIANBAEoEQCAILQAAIQkgA0F/aiECIAlB/wFxIQkgASAJcCEJIAlB/wFxIQkgBCACaiEEIAQgCToAACADQQFGDQEgASEDA0AgCC0AACEJIAlB/wFxIQQgAyAEbSEDIAooAgAgAUECdGohBCAEKAIAIQsgAkF/aiEEIAlB/wFxIQkgAyAJbyEJIAlB/wFxIQkgCyAEaiELIAsgCToAACACQQFKBEAgBCECDAELCwsLIAFBAWohASAVKAIAIQIgBi0AACEDIANB/wFxIQMgAiADQbAQbGpBBGohBCAEKAIAIQQgASAESA0ACwsgB0EBaiEHIAUoAgAhASAHIAFIDQAMCgALAAsgAEEUEBUMBgsgAEEUEBUMBQsgAEEUEBUMBAsgAEEDEBUMAwsgAEEUEBUMAgsgAEEDEBUMAQsgAEEDEBULQQAMBQsLIABBBhAsIQEgAUEBaiEBIABBhANqIQcgByABNgIAIAFBKGwhASAAIAEQTSEBIABBiANqIQogCiABNgIAIAFFBEAgAEEDEBVBAAwECyAHKAIAIQIgAkEobCECIAFBACACEHoaIAcoAgAhAQJAIAFBAEoEQEEAIQECQAJAAkACQAJAAkACQAJAAkACQANAIAooAgAhBCAEIAFBKGxqIQwgAEEQECwhAiACDQEgEygCACECIAJBA2whAiAAIAIQTSECIAQgAUEobGpBBGohCCAIIAI2AgAgAkUNAiAAQQEQLCECIAIEfyAAQQQQLCECIAJBAWohAiACQf8BcQVBAQshAiAEIAFBKGxqQQhqIQYgBiACOgAAIABBARAsIQICQCACBEAgAEEIECwhAiACQQFqIQIgAkH//wNxIQMgDCADOwEAIAJB//8DcSECIAJFDQFBACECIBMoAgAhAwNAIANBf2ohAyADEC0hAyAAIAMQLCEDIANB/wFxIQMgCCgCACENIA0gAkEDbGohDSANIAM6AAAgEygCACEDIANBf2ohAyADEC0hAyAAIAMQLCENIA1B/wFxIQkgCCgCACEDIAMgAkEDbGpBAWohCyALIAk6AAAgAyACQQNsaiEDIAMsAAAhCyALQf8BcSERIBMoAgAhAyADIBFMDQYgDUH/AXEhDSADIA1MDQcgCyAJQRh0QRh1RiENIA0NCCACQQFqIQIgDC8BACENIA1B//8DcSENIAIgDUkNAAsFIAxBADsBAAsLIABBAhAsIQIgAg0GIAYsAAAhAyATKAIAIgxBAEohAgJAAkAgA0H/AXFBAUoEQCACRQ0BQQAhAgNAIABBBBAsIQMgA0H/AXEhAyAIKAIAIQwgDCACQQNsakECaiEMIAwgAzoAACAGLQAAIQwgDEH/AXEgA0ohAyADRQ0LIAJBAWohAiATKAIAIQMgAiADSA0ACwwBBSACBEAgCCgCACEIQQAhAgNAIAggAkEDbGpBAmohDSANQQA6AAAgAkEBaiECIAIgDEgNAAsLIAMNAQsMAQtBACECA0AgAEEIECwaIABBCBAsIQMgA0H/AXEhCCAEIAFBKGxqQQlqIAJqIQMgAyAIOgAAIABBCBAsIQggCEH/AXEhDCAEIAFBKGxqQRhqIAJqIQ0gDSAMOgAAIAMtAAAhAyADQf8BcSEDIA8oAgAhDCAMIANMDQogCEH/AXEhAyAFKAIAIQggAyAISCEDIANFDQsgAkEBaiECIAYtAAAhAyADQf8BcSEDIAIgA0kNAAsLIAFBAWohASAHKAIAIQIgASACSA0ADAwACwALIABBFBAVQQAMDgsgAEEDEBVBAAwNCyAAQRQQFUEADAwLIABBFBAVQQAMCwsgAEEUEBVBAAwKCyAAQRQQFUEADAkLIABBFBAVQQAMCAsgAEEUEBVBAAwHCyAAQRQQFUEADAYACwALCyAAQQYQLCEBIAFBAWohASAAQYwDaiECIAIgATYCAAJAIAFBAEoEQEEAIQECQAJAAkACQANAIABBARAsIQMgA0H/AXEhAyAAQZADaiABQQZsaiEEIAQgAzoAACAAQRAQLCEDIANB//8DcSEEIAAgAUEGbGpBkgNqIQMgAyAEOwEAIABBEBAsIQQgBEH//wNxIQggACABQQZsakGUA2ohBCAEIAg7AQAgAEEIECwhCCAIQf8BcSEGIAAgAUEGbGpBkQNqIQwgDCAGOgAAIAMuAQAhAyADDQEgBC4BACEDIAMNAiAIQf8BcSEDIAcoAgAhBCADIARIIQMgA0UNAyABQQFqIQEgAigCACEDIAEgA0gNAAwGAAsACyAAQRQQFUEADAgLIABBFBAVQQAMBwsgAEEUEBVBAAwGAAsACwsgABAhIABB1AdqIQEgAUEANgIAIBMoAgAhAQJAIAFBAEoEQEEAIQEDQAJAIBQoAgAhAiACQQJ0IQIgACACEE0hAyAAQZQGaiABQQJ0aiECIAIgAzYCACAUKAIAIQMgA0EBdCEDIANB/v///wdxIQMgACADEE0hByAAQZQHaiABQQJ0aiEDIAMgBzYCACAAIBAQTSEHIABB2AdqIAFBAnRqIQQgBCAHNgIAIAIoAgAhAiACRQ0AIAMoAgAhAyADRSEDIAdFIQcgByADcg0AIBQoAgAhAyADQQJ0IQMgAkEAIAMQehogAUEBaiEBIBMoAgAhAiABIAJIDQEMAwsLIABBAxAVQQAMBQsLIBooAgAhASAAQQAgARBWIQFBACABRQ0DGiAUKAIAIQEgAEEBIAEQViEBQQAgAUUNAxogGigCACEBIABB3ABqIQIgAiABNgIAIBQoAgAhASAAQeAAaiECIAIgATYCACABQQF0IQIgAkH+////B3EhBCAFKAIAIQggCEEASgR/IA4oAgAhByABQQJtIQNBACECQQAhAQNAIAcgAUEYbGohBSAFKAIAIQUgBSADSSEGIAUgAyAGGyEGIAcgAUEYbGpBBGohBSAFKAIAIQUgBSADSSEMIAUgAyAMGyEFIAUgBmshBSAHIAFBGGxqQQhqIQYgBigCACEGIAUgBm4hBSAFIAJKIQYgBSACIAYbIQIgAUEBaiEBIAEgCEgNAAsgAkECdCEBIAFBBGoFQQQLIQEgEygCACECIAIgAWwhASAAQQxqIQIgBCABSyEDIAIgBCABIAMbIgI2AgAgAEHVCmohASABQQE6AAAgAEHEAGohASABKAIAIQECQCABBEAgAEHQAGohASABKAIAIQEgAEHIAGohAyADKAIAIQMgASADRwRAQcwWQcQTQaAgQYQXEAQLIABBzABqIQMgAygCACEDIAJB3AtqIQIgAiADaiECIAIgAU0NASAAQQMQFUEADAULCyAAEB8hASAAQShqIQAgACABNgIAQQEMAwsgACACQQYQIiEBIAFBAEchASACLAAAIQMgA0HmAEYhAyABIANxBEAgAkEBaiEBIAEsAAAhASABQekARgRAIAJBAmohASABLAAAIQEgAUHzAEYEQCACQQNqIQEgASwAACEBIAFB6ABGBEAgAkEEaiEBIAEsAAAhASABQeUARgRAIAJBBWohASABLAAAIQEgAUHhAEYEQCAAEDAhASABQf8BcUHkAEYEQCAAEDAhASABQf8BcUUEQCAAQSYQFUEADAoLCwsLCwsLCwsgAEEiEBULQQALIQAgGSQGIAALDwEBfyAAQdwLEE0hASABCz8BAX8gAEEkaiEBIAEsAAAhASABBH9BAAUgAEEUaiEBIAEoAgAhASAAQRhqIQAgACgCACEAIAEgAGsLIQAgAAuBAgECfyAAQdgKaiEBIAEoAgAhAQJ/AkAgAUF/Rw0AIAAQMCEBIABB1ABqIQIgAigCACECIAIEf0EABSABQf8BcUHPAEcEQCAAQR4QFUEADAMLIAAQMCEBIAFB/wFxQecARwRAIABBHhAVQQAMAwsgABAwIQEgAUH/AXFB5wBHBEAgAEEeEBVBAAwDCyAAEDAhASABQf8BcUHTAEcEQCAAQR4QFUEADAMLIAAQMyEBIAEEQCAAQdMKaiEBIAEsAAAhASABQQFxIQEgAUUNAiAAQdwKaiEBIAFBADYCACAAQdQKaiEBIAFBADoAACAAQSAQFQtBAAsMAQsgABBKCyEAIAALFAEBfwNAIAAQLiEBIAFBf0cNAAsLZQEEfyAAQRRqIQMgAygCACEFIAUgAmohBiAAQRxqIQQgBCgCACEEIAYgBEsEfyAAQdQAaiEAIABBATYCAEEABSABIAUgAhB5GiADKAIAIQAgACACaiEAIAMgADYCAEEBCyEAIAALaAECfyAAEDAhAiACQf8BcSECIAAQMCEBIAFB/wFxIQEgAUEIdCEBIAEgAnIhAiAAEDAhASABQf8BcSEBIAFBEHQhASACIAFyIQIgABAwIQAgAEH/AXEhACAAQRh0IQAgAiAAciEAIAALEwEBf0EEEF4hACAAQQA2AgAgAAsTAQF/IAAoAgAhASABEBAgABBfCyEAIAAoAgAhACAABH8gAEEEaiEAIAAoAgAFQQALIQAgAAsaACAAKAIAIQAgAAR/IAAoAgAFQQALIQAgAAvbBwISfwF9IwYhECMGQRBqJAYgEEEEaiELIBAhDCAEQQA2AgAgACgCACEGAkACQCAGDQBBICEFA0ACQCALQQA2AgAgDEEANgIAIAUgAkohBiACIAUgBhshBiABIAYgCyAMQQAQGyEKIAAgCjYCAAJAAkACQAJAIAwoAgAOAgEAAgsgAiAFTCEHIAdBAXMhBSAFQQFxIQUgBiAFdCEFQQFBAiAHGyEGIAYhCUEAIAggBxshCCAFIQYMAgsgCygCACEHIAQoAgAhBSAFIAdqIQUgBCAFNgIAIAEgB2ohAUEAIQkgAiAHayECDAELQQEhCUF/IQgLAkACQAJAIAlBA3EOAwABAAELDAELDAELIAoEQCAKIQYMAwUgBiEFDAILAAsLIAkEfyAIBSAKIQYMAQshEgwBCyAGQQRqIQogCigCACEIIAhBAnQhCCAIEF4hDSANRQRAEAYLIAooAgAhCCAIQQBKBEAgCEECdCEIIA1BACAIEHoaC0EAIQVBACEKIAEhCCAGIQECQAJAAkADQCALQQA2AgAgDEEANgIAIAJBIEghBiACQSAgBhshCSABIAggCUEAIAsgDBAUIQEgAUUEQEEgIQYgCSEBA0AgAiAGSiEGIAZFDQQgAUEBdCEGIAYgAkohASACIAYgARshASAAKAIAIQkgCSAIIAFBACALIAwQFCEJIAlFDQALIAkhAQsgBCgCACEGIAYgAWohBiAEIAY2AgAgCCABaiEIIAIgAWshBiAMKAIAIREgESAKaiEJAkACQCAFIAlIBEAgBUUhAiAFQQF0IQFBgCAgASACGyECIAAoAgAhASABQQRqIQUgBSgCACEFIAVBAEoEQCACQQJ0IQ5BACEBA0AgDSABQQJ0aiEHIAcoAgAhBSAFIA4QYCEFIAVFDQYgByAFNgIAIAFBAWohASAAKAIAIQcgB0EEaiEFIAUoAgAhBSABIAVIDQALIAUhDiAHIQEMAgsFIAAoAgAiAUEEaiEHIAUhAiAHKAIAIQ4MAQsMAQsgDkEASgRAIBFBAEohEyALKAIAIRRBACEHA0AgEwRAIBQgB0ECdGooAgAhFSANIAdBAnRqKAIAIRZBACEFA0AgFSAFQQJ0aiEPIA8qAgAhFyAXQwAAgD9eBEBDAACAPyEXBSAXQwAAgL9dBEBDAACAvyEXCwsgBSAKaiEPIBYgD0ECdGohDyAPIBc4AgAgBUEBaiEFIAUgEUcNAAsLIAdBAWohBSAFIA5IBEAgBSEHDAELCwsLIAIhBSAJIQogBiECDAAACwALEAYMAQsgAyANNgIAIAohEgsLIBAkBiASCzwBAX8gAEEIdCECIAFB/wFxIQEgAEEYdiEAIAAgAXMhACAAQQJ0QdAZaiEAIAAoAgAhACAAIAJzIQAgAAvvBAEFfyAAQdgLaiEGIAZBADYCACAAQdQLaiEGIAZBADYCACAAQdQAaiEIIAgoAgAhBgJ/IAYEf0EABSAAQSRqIQcCQAJAA0ACQCAAECAhBkEAIAZFDQUaIABBARAsIQYgBkUNACAHLAAAIQYgBg0CA0AgABAZIQYgBkF/Rw0ACyAIKAIAIQYgBkUNAUEADAULCwwBCyAAQSMQFUEADAILIABBxABqIQYgBigCACEGIAYEQCAAQcgAaiEGIAYoAgAhByAAQdAAaiEGIAYoAgAhBiAHIAZHBEBB0xNBxBNBuhhBixQQBAsLIABBjANqIQcgBygCACEGIAZBf2ohBiAGEC0hBiAAIAYQLCEIIAhBf0YEf0EABSAHKAIAIQYgCCAGSAR/IAUgCDYCACAAQZADaiAIQQZsaiEHIAcsAAAhBQJAAkAgBQR/IABB6ABqIQUgBSgCACEFIABBARAsIQYgAEEBECwhCCAGQQBHIQkgBywAACEGIAZFIQcgBUEBdSEGIAkgB3IEfwwCBSAAQeQAaiEKIAooAgAhCSAFIAlrIQkgCUECdSEJIAEgCTYCACAKKAIAIQEgASAFaiEJIAYhASAJQQJ1CwUgAEHkAGohBSAFKAIAIQZBACEIIAYhBSAGQQF1IQZBASEHDAELIQYMAQsgAUEANgIAIAYhAQsgAiAGNgIAIAhBAEchAiACIAdyBEAgAyABNgIABSAFQQNsIQIgAEHkAGohASABKAIAIQAgAiAAayEAIABBAnUhACADIAA2AgAgASgCACEAIAAgAmohACAAQQJ1IQULIAQgBTYCAEEBBUEACwsLCyEAIAALjB0CJ38DfSMGIRwjBkGAFGokBiAcQYAMaiEdIBxBgARqISQgHEGAAmohFCAcISAgAi0AACEHIAdB/wFxIQcgAEHcAGogB0ECdGohByAHKAIAIR4gAEGIA2ohByAHKAIAIRYgAkEBaiEHIActAAAhByAHQf8BcSEXIBYgF0EobGohIiAeQQF1IR9BACAfayEpIABBBGohGiAaKAIAIQcCfwJAIAdBAEoEfyAWIBdBKGxqQQRqISogAEH4AWohKyAAQfAAaiElIABB6ApqIRggAEHkCmohISAUQQFqISwDQAJAICooAgAhByAHIA1BA2xqQQJqIQcgBy0AACEHIAdB/wFxIQcgHSANQQJ0aiEVIBVBADYCACAWIBdBKGxqQQlqIAdqIQcgBy0AACEHIAdB/wFxIQ8gAEH4AGogD0EBdGohByAHLgEAIQcgB0UNACArKAIAIRAgAEEBECwhBwJAAkAgB0UNACAQIA9BvAxsakG0DGohByAHLQAAIQcgB0H/AXEhByAHQX9qIQcgB0ECdEGQCGohByAHKAIAISMgAEHYB2ogDUECdGohByAHKAIAIRkgIxAtIQcgB0F/aiEHIAAgBxAsIQggCEH//wNxIQggGSAIOwEAIAAgBxAsIQcgB0H//wNxIQcgGUECaiEIIAggBzsBACAQIA9BvAxsaiEmICYsAAAhByAHBEBBACETQQIhBwNAIBAgD0G8DGxqQQFqIBNqIQggCC0AACEIIAhB/wFxIRsgECAPQbwMbGpBIWogG2ohCCAILAAAIQwgDEH/AXEhJyAQIA9BvAxsakExaiAbaiEIIAgsAAAhCCAIQf8BcSEoQQEgKHQhCSAJQX9qIS0gCARAICUoAgAhCyAQIA9BvAxsakHBAGogG2ohCCAILQAAIQggCEH/AXEhCiALIApBsBBsaiEOIBgoAgAhCCAIQQpIBEAgABA0CyAhKAIAIQkgCUH/B3EhCCALIApBsBBsakEkaiAIQQF0aiEIIAguAQAhCCAIQX9KBEAgCyAKQbAQbGpBCGohDiAOKAIAIQ4gDiAIaiEOIA4tAAAhDiAOQf8BcSEOIAkgDnYhCSAhIAk2AgAgGCgCACEJIAkgDmshCSAJQQBIIQ5BACAJIA4bIRFBfyAIIA4bIQkgGCARNgIABSAAIA4QNSEJCyALIApBsBBsakEXaiEIIAgsAAAhCCAIBEAgCyAKQbAQbGpBqBBqIQggCCgCACEIIAggCUECdGohCCAIKAIAIQkLBUEAIQkLIAwEQEEAIQsgByEIA0AgCSAtcSEKIBAgD0G8DGxqQdIAaiAbQQR0aiAKQQF0aiEKIAouAQAhDCAJICh1IQogDEF/SgR/ICUoAgAhDiAOIAxBsBBsaiESIBgoAgAhCSAJQQpIBEAgABA0CyAhKAIAIREgEUH/B3EhCSAOIAxBsBBsakEkaiAJQQF0aiEJIAkuAQAhCSAJQX9KBEAgDiAMQbAQbGpBCGohEiASKAIAIRIgEiAJaiESIBItAAAhEiASQf8BcSESIBEgEnYhESAhIBE2AgAgGCgCACERIBEgEmshESARQQBIIRJBACARIBIbIRFBfyAJIBIbIQkgGCARNgIABSAAIBIQNSEJCyAOIAxBsBBsakEXaiERIBEsAAAhESARBEAgDiAMQbAQbGpBqBBqIQwgDCgCACEMIAwgCUECdGohCSAJKAIAIQkLIAlB//8DcQVBAAshCSAZIAhBAXRqIAk7AQAgCEEBaiEIIAtBAWohCyALICdHBEAgCiEJDAELCyAHICdqIQcLIBNBAWohEyAmLQAAIQggCEH/AXEhCCATIAhJDQALCyAYKAIAIQcgB0F/Rg0AICxBAToAACAUQQE6AAAgECAPQbwMbGpBuAxqIQcgBygCACETIBNBAkoEQCAjQf//A2ohG0ECIQcDQCAQIA9BvAxsakHACGogB0EBdGohCCAILQAAIQggCEH/AXEhCyAQIA9BvAxsaiAHQQF0akHBCGohCCAILQAAIQggCEH/AXEhCiAQIA9BvAxsakHSAmogB0EBdGohCCAILwEAIQggCEH//wNxIQggECAPQbwMbGpB0gJqIAtBAXRqIQkgCS8BACEJIAlB//8DcSEJIBAgD0G8DGxqQdICaiAKQQF0aiEMIAwvAQAhDCAMQf//A3EhDCAZIAtBAXRqIQ4gDi4BACEOIBkgCkEBdGohFSAVLgEAIRUgCCAJIAwgDiAVEDYhCCAZIAdBAXRqIQ4gDi4BACEJICMgCGshDAJAAkAgCQRAIAwgCEghFSAMIAggFRtBAXQhFSAUIApqIQogCkEBOgAAIBQgC2ohCyALQQE6AAAgFCAHaiELIAtBAToAACAVIAlMBEAgDCAISg0DIBsgCWshCAwCCyAJQQFxIQsgCwR/IAlBAWohCSAJQQF2IQkgCCAJawUgCUEBdSEJIAkgCGoLIQgFIBQgB2ohCSAJQQA6AAALCyAOIAg7AQALIAdBAWohByAHIBNIDQALCyATQQBKBEBBACEHA0AgFCAHaiEIIAgsAAAhCCAIRQRAIBkgB0EBdGohCCAIQX87AQALIAdBAWohByAHIBNHDQALCwwBCyAVQQE2AgALIA1BAWohDSAaKAIAIQcgDSAHSA0BDAMLCyAAQRUQFUEABQwBCwwBCyAAQcQAaiETIBMoAgAhCSAJBEAgAEHIAGohCCAIKAIAIQggAEHQAGohDSANKAIAIQ0gCCANRwRAQdMTQcQTQc8ZQecUEAQLCyAHQQJ0IQggJCAdIAgQeRogIi4BACEIIAgEQCAWIBdBKGxqKAIEIQ0gCEH//wNxIQxBACEIA0AgDSAIQQNsaiELIAstAAAhCyALQf8BcSELIB0gC0ECdGohCyALKAIAIQ8gHSANIAhBA2xqLQABQQJ0aiEKAkACQCAPRQ0AIAooAgAhDyAPRQ0ADAELIApBADYCACALQQA2AgALIAhBAWohCCAIIAxJDQALCyAWIBdBKGxqQQhqIQsgCywAACEIIAgEQCAWIBdBKGxqQQRqIQxBACEJIAchDQNAAkAgDUEASgRAIAwoAgAhD0EAIQdBACEIA0AgDyAIQQNsakECaiEKIAotAAAhCiAKQf8BcSEKIAkgCkYEQCAdIAhBAnRqIQogCigCACEQICAgB2ohCiAQBEAgCkEBOgAAIBQgB0ECdGohCiAKQQA2AgAFIApBADoAACAAQZQGaiAIQQJ0aiEKIAooAgAhCiAUIAdBAnRqIRAgECAKNgIACyAHQQFqIQcLIAhBAWohCCAIIA1IDQALBUEAIQcLIBYgF0EobGpBGGogCWohCCAILQAAIQggCEH/AXEhCCAAIBQgByAfIAggIBA3IAlBAWohCSALLQAAIQcgB0H/AXEhByAJIAdPDQAgGigCACENDAELCyATKAIAIQkLIAkEQCAAQcgAaiEHIAcoAgAhByAAQdAAaiEIIAgoAgAhCCAHIAhHBEBB0xNBxBNB8BlB5xQQBAsLICIuAQAhByAHBEAgFiAXQShsaigCBCENIB5BAUohDCAHQf//A3EhCANAIAhBf2ohCSANIAlBA2xqIQcgBy0AACEHIAdB/wFxIQcgAEGUBmogB0ECdGohByAHKAIAISAgDSAJQQNsakEBaiEHIActAAAhByAHQf8BcSEHIABBlAZqIAdBAnRqIQcgBygCACEPIAwEQEEAIQcDQCAgIAdBAnRqIQsgCyoCACEuIA8gB0ECdGoiECoCACIvQwAAAABeIQogLkMAAAAAXgRAIAoEQCAuITAgLiAvkyEuBSAuIC+SITALBSAKBEAgLiEwIC4gL5IhLgUgLiAvkyEwCwsgCyAwOAIAIBAgLjgCACAHQQFqIQcgByAfSA0ACwsgCEEBSgRAIAkhCAwBCwsLIBooAgAhByAHQQBKBEAgH0ECdCEJQQAhBwNAICQgB0ECdGohCCAIKAIAIQ0gAEGUBmogB0ECdGohCCANBEAgCCgCACEIIAhBACAJEHoaBSAIKAIAIQggAEHYB2ogB0ECdGohDSANKAIAIQ0gACAiIAcgHiAIIA0QOAsgB0EBaiEHIBooAgAhCCAHIAhIDQALIAhBAEoEQEEAIQcDQCAAQZQGaiAHQQJ0aiEIIAgoAgAhCCACLQAAIQkgCUH/AXEhCSAIIB4gACAJEDkgB0EBaiEHIBooAgAhCCAHIAhIDQALCwsgABAhIABB1QpqIQIgAiwAACEHIAcEQCAAQZgIaiEGIAYgKTYCACAeIAVrIQYgAEH4CmohByAHIAY2AgAgAEGcCGohBiAGQQE2AgAgAkEAOgAABSAAQfgKaiEHIAcoAgAhAiACBEAgBCADayEIIAIgCEgEQCACIANqIQMgBiADNgIAIAdBADYCAAUgAiAIayECIAcgAjYCACAGIAQ2AgAgBCEDCwsLIABB4ApqIQIgAigCACECIABB8ApqIQYgBigCACEHIABBnAhqIggoAgAhBgJAAkAgAiAHRgRAIAYEQCAAQdMKaiECIAIsAAAhAiACQQRxIQIgAgRAIABB9ApqIQIgAigCACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGoh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IwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOi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mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA=="),function(l){return l.charCodeAt(0)});var E=E!==void 0?E:{},P={};for(e in E)E.hasOwnProperty(e)&&(P[e]=E[e]);E.arguments=[],E.thisProgram="./this.program",E.quit=function(l,c){throw c},E.preRun=[],E.postRun=[];var X=!1,iA=!1,tA=!1,CA=!1;X=typeof window=="object",iA=typeof importScripts=="function",tA=typeof process=="object"&&typeof vn=="function"&&!X&&!iA,CA=!X&&!tA&&!iA;var lA="";function cA(l){return E.locateFile?E.locateFile(l,lA):lA+l}tA?(lA=__dirname+"/",E.read=function(c,u){var S;return A||(A=void 0),t||(t=void 0),c=t.normalize(c),S=A.readFileSync(c),u?S:S.toString()},E.readBinary=function(c){var u=E.read(c,!0);return u.buffer||(u=new Uint8Array(u)),ne(u.buffer),u},process.argv.length>1&&(E.thisProgram=process.argv[1].replace(/\\/g,"/")),E.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(l){if(!(l instanceof Ne))throw l}),process.on("unhandledRejection",function(l,c){process.exit(1)}),E.quit=function(l){process.exit(l)},E.inspect=function(){return"[Emscripten Module object]"}):CA?(typeof read<"u"&&(E.read=function(c){return read(c)}),E.readBinary=function(c){var u;return typeof readbuffer=="function"?new Uint8Array(readbuffer(c)):(ne(typeof(u=read(c,"binary"))=="object"),u)},typeof scriptArgs<"u"?E.arguments=scriptArgs:typeof arguments<"u"&&(E.arguments=arguments),typeof quit=="function"&&(E.quit=function(l){quit(l)})):(X||iA)&&(X?document.currentScript&&(lA=document.currentScript.src):lA=self.location.href,lA=lA.indexOf("blob:")!==0?lA.split("/").slice(0,-1).join("/")+"/":"",E.read=function(c){var u=new XMLHttpRequest;return u.open("GET",c,!1),u.send(null),u.responseText},iA&&(E.readBinary=function(c){var u=new XMLHttpRequest;return u.open("GET",c,!1),u.responseType="arraybuffer",u.send(null),new Uint8Array(u.response)}),E.readAsync=function(c,u,S){var b=new XMLHttpRequest;b.open("GET",c,!0),b.responseType="arraybuffer",b.onload=function(){if(b.status==200||b.status==0&&b.response){u(b.response);return}S()},b.onerror=S,b.send(null)},E.setWindowTitle=function(l){document.title=l});var $=E.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),fA=E.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||$);for(e in P)P.hasOwnProperty(e)&&(E[e]=P[e]);function vA(l){var c=B;return B=B+l+15&-16,c}function un(l){var c=a[U>>2],u=c+l+15&-16;return a[U>>2]=u,u>=yA&&!Fn()?(a[U>>2]=c,0):c}function dn(l,c){return c||(c=16),l=Math.ceil(l/c)*c}function or(l){switch(l){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(l[l.length-1]==="*")return 4;if(l[0]!=="i")return 0;var c=parseInt(l.substr(1));return ne(c%8==0),c/8}}function Ge(l){Ge.shown||(Ge.shown={}),Ge.shown[l]||(Ge.shown[l]=1,fA(l))}P=void 0;var rr={"f64-rem":function(l,c){return l%c},debugger:function(){}},Gt=[];function Yr(l,c){for(var u=0,S=u;S<u+0;S++)if(!Gt[S])return Gt[S]=l,1+S;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function Jr(l){Gt[l-1]=null}var Mt={};function qr(l,c){if(l){ne(c),Mt[c]||(Mt[c]={});var u=Mt[c];return u[l]||(c.length===1?u[l]=function(){return xt(c,l)}:c.length===2?u[l]=function(b){return xt(c,l,[b])}:u[l]=function(){return xt(c,l,Array.prototype.slice.call(arguments))}),u[l]}}function Kr(l,c,u){return u?+(l>>>0)+4294967296*+(c>>>0):+(l>>>0)+4294967296*+(0|c)}function xt(l,c,u){return u&&u.length?E["dynCall_"+l].apply(null,[c].concat(u)):E["dynCall_"+l].call(null,c)}var Ze=0,fn=0;function ne(l,c){l||jA("Assertion failed: "+c)}function mn(l){var c=E["_"+l];return ne(c,"Cannot call unknown function "+l+", make sure it is exported"),c}var pn={stackSave:function(){Yt()},stackRestore:function(){Ht()},arrayToC:function(l){var c,u,S=$e(l.length);return c=l,u=S,s.set(c,u),S},stringToC:function(l){var c=0;if(l!=null&&l!==0){var u=(l.length<<2)+1;c=$e(u),Dn(l,c,u)}return c}},ir={string:pn.stringToC,array:pn.arrayToC};function yn(l,c,u,S,b){var W=mn(l),j=[],H=0;if(S)for(var SA=0;SA<S.length;SA++){var aA=ir[u[SA]];aA?(H===0&&(H=Yt()),j[SA]=aA(S[SA])):j[SA]=S[SA]}var gA,oA=W.apply(null,j);return oA=(gA=oA,c==="string"?We(gA):c==="boolean"?!!gA:gA),H!==0&&Ht(H),oA}function ar(l,c,u,S){switch((u=u||"i8").charAt(u.length-1)==="*"&&(u="i32"),u){case"i1":case"i8":s[l>>0]=c;break;case"i16":i[l>>1]=c;break;case"i32":a[l>>2]=c;break;case"i64":tempI64=[c>>>0,+hr(tempDouble=c)>=1?tempDouble>0?(0|cr(+Nn(tempDouble/4294967296),4294967295))>>>0:~~+lr((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],a[l>>2]=tempI64[0],a[l+4>>2]=tempI64[1];break;case"float":d[l>>2]=c;break;case"double":C[l>>3]=c;break;default:jA("invalid type for setValue: "+u)}}function Pr(l,c,u){switch((c=c||"i8").charAt(c.length-1)==="*"&&(c="i32"),c){case"i1":case"i8":return s[l>>0];case"i16":return i[l>>1];case"i32":case"i64":return a[l>>2];case"float":return d[l>>2];case"double":return C[l>>3];default:jA("invalid type for getValue: "+c)}return null}function Or(l,c,u,S){typeof l=="number"?(W=!0,j=l):(W=!1,j=l.length);var b=typeof c=="string"?c:null;if(H=u==4?S:[typeof je=="function"?je:vA,$e,vA,un][u===void 0?2:u](Math.max(j,b?1:c.length)),W){for(S=H,ne((3&H)==0),SA=H+(-4&j);S<SA;S+=4)a[S>>2]=0;for(SA=H+j;S<SA;)s[S++>>0]=0;return H}if(b==="i8")return l.subarray||l.slice?o.set(l,H):o.set(new Uint8Array(l),H),H;for(var W,j,H,SA,aA,gA,oA,Z=0;Z<j;){var xA=l[Z];if((aA=b||c[Z])===0){Z++;continue}aA=="i64"&&(aA="i32"),ar(H+Z,xA,aA),oA!==aA&&(gA=or(aA),oA=aA),Z+=gA}return H}function Vr(l){return p?Tt?je(l):un(l):vA(l)}function We(l,c){if(c===0||!l)return"";for(var u,S,b,W=0,j=0;W|=S=o[l+j>>0],(S!=0||c)&&(j++,!c||j!=c););c||(c=j);var H="";if(W<128){for(;c>0;)b=String.fromCharCode.apply(String,o.subarray(l,l+Math.min(c,1024))),H=H?H+b:b,l+=1024,c-=1024;return H}return u=l,function(aA,gA){for(var oA=gA;aA[oA];)++oA;if(oA-gA>16&&aA.subarray&&Sn)return Sn.decode(aA.subarray(gA,oA));for(var Z,xA,HA,YA,JA,le,qA="";;){if(!(Z=aA[gA++]))return qA;if(!(128&Z)){qA+=String.fromCharCode(Z);continue}if(xA=63&aA[gA++],(224&Z)==192){qA+=String.fromCharCode((31&Z)<<6|xA);continue}if(HA=63&aA[gA++],(240&Z)==224?Z=(15&Z)<<12|xA<<6|HA:(YA=63&aA[gA++],(248&Z)==240?Z=(7&Z)<<18|xA<<12|HA<<6|YA:(JA=63&aA[gA++],Z=(252&Z)==248?(3&Z)<<24|xA<<18|HA<<12|YA<<6|JA:(1&Z)<<30|xA<<24|HA<<18|YA<<12|JA<<6|(le=63&aA[gA++]))),Z<65536)qA+=String.fromCharCode(Z);else{var be=Z-65536;qA+=String.fromCharCode(55296|be>>10,56320|1023&be)}}}(o,u)}function Zr(l){for(var c="";;){var u=s[l++>>0];if(!u)return c;c+=String.fromCharCode(u)}}function Wr(l,c){return function(S,b,W){for(var j=0;j<S.length;++j)s[b++>>0]=S.charCodeAt(j);W||(s[b>>0]=0)}(l,c,!1)}var Sn=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Xe(l,c,u,S){if(!(S>0))return 0;for(var b=u,W=u+S-1,j=0;j<l.length;++j){var H=l.charCodeAt(j);if(H>=55296&&H<=57343&&(H=65536+((1023&H)<<10)|1023&l.charCodeAt(++j)),H<=127){if(u>=W)break;c[u++]=H}else if(H<=2047){if(u+1>=W)break;c[u++]=192|H>>6,c[u++]=128|63&H}else if(H<=65535){if(u+2>=W)break;c[u++]=224|H>>12,c[u++]=128|H>>6&63,c[u++]=128|63&H}else if(H<=2097151){if(u+3>=W)break;c[u++]=240|H>>18,c[u++]=128|H>>12&63,c[u++]=128|H>>6&63,c[u++]=128|63&H}else if(H<=67108863){if(u+4>=W)break;c[u++]=248|H>>24,c[u++]=128|H>>18&63,c[u++]=128|H>>12&63,c[u++]=128|H>>6&63,c[u++]=128|63&H}else{if(u+5>=W)break;c[u++]=252|H>>30,c[u++]=128|H>>24&63,c[u++]=128|H>>18&63,c[u++]=128|H>>12&63,c[u++]=128|H>>6&63,c[u++]=128|63&H}}return c[u]=0,u-b}function Dn(l,c,u){return Xe(l,o,c,u)}function _e(l){for(var c=0,u=0;u<l.length;++u){var S=l.charCodeAt(u);S>=55296&&S<=57343&&(S=65536+((1023&S)<<10)|1023&l.charCodeAt(++u)),S<=127?++c:S<=2047?c+=2:S<=65535?c+=3:S<=2097151?c+=4:S<=67108863?c+=5:c+=6}return c}var kn=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function Xr(l){for(var c=l,u=c>>1;i[u];)++u;if((c=u<<1)-l>32&&kn)return kn.decode(o.subarray(l,c));for(var S=0,b="";;){var W=i[l+2*S>>1];if(W==0)return b;++S,b+=String.fromCharCode(W)}}function _r(l,c,u){if(u===void 0&&(u=2147483647),u<2)return 0;for(var S=c,b=(u-=2)<2*l.length?u/2:l.length,W=0;W<b;++W){var j=l.charCodeAt(W);i[c>>1]=j,c+=2}return i[c>>1]=0,c-S}function zr(l){return 2*l.length}function jr(l){for(var c=0,u="";;){var S=a[l+4*c>>2];if(S==0)return u;if(++c,S>=65536){var b=S-65536;u+=String.fromCharCode(55296|b>>10,56320|1023&b)}else u+=String.fromCharCode(S)}}function $r(l,c,u){if(u===void 0&&(u=2147483647),u<4)return 0;for(var S=c,b=S+u-4,W=0;W<l.length;++W){var j=l.charCodeAt(W);if(j>=55296&&j<=57343&&(j=65536+((1023&j)<<10)|1023&l.charCodeAt(++W)),a[c>>2]=j,(c+=4)+4>b)break}return a[c>>2]=0,c-S}function Ai(l){for(var c=0,u=0;u<l.length;++u){var S=l.charCodeAt(u);S>=55296&&S<=57343&&++u,c+=4}return c}function ei(l){var c=_e(l)+1,u=je(c);return u&&Xe(l,s,u,c),u}function ti(l){var c=_e(l)+1,u=$e(c);return Xe(l,s,u,c),u}function ni(l){return l}function si(){var l,c=function(){var S=Error();if(!S.stack){try{throw Error(0)}catch(b){S=b}if(!S.stack)return"(no stack trace available)"}return S.stack.toString()}();return E.extraStackTrace&&(c+=`
|
|
14
|
-
`+E.extraStackTrace()),(l=c).replace(/__Z[\w\d_]+/g,function(u){var S,b=S=u;return u===b?u:u+" ["+b+"]"})}function Nt(l,c){return l%c>0&&(l+=c-l%c),l}function wn(l){E.buffer=n=l}function bt(){E.HEAP8=s=new Int8Array(n),E.HEAP16=i=new Int16Array(n),E.HEAP32=a=new Int32Array(n),E.HEAPU8=o=new Uint8Array(n),E.HEAPU16=h=new Uint16Array(n),E.HEAPU32=I=new Uint32Array(n),E.HEAPF32=d=new Float32Array(n),E.HEAPF64=C=new Float64Array(n)}function Fn(){var l=E.usingWasm?65536:16777216,c=2147483648-l;if(a[U>>2]>c)return!1;var u=yA;for(yA=Math.max(yA,16777216);yA<a[U>>2];)yA=yA<=536870912?Nt(2*yA,l):Math.min(Nt((3*yA+2147483648)/4,l),c);var S=E.reallocBuffer(yA);return S&&S.byteLength==yA?(wn(S),bt(),!0):(yA=u,!1)}Q=B=f=D=w=G=U=0,p=!1,E.reallocBuffer||(E.reallocBuffer=function(l){try{if(ArrayBuffer.transfer)c=ArrayBuffer.transfer(n,l);else{var c,u=s;c=new ArrayBuffer(l),new Int8Array(c).set(u)}}catch{return!1}return!!Br(c)&&c});try{(J=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{J=function(c){return c.byteLength}}var Lt=E.TOTAL_STACK||5242880,yA=E.TOTAL_MEMORY||16777216;function gr(){return yA}function Me(l){for(;l.length>0;){var c=l.shift();if(typeof c=="function"){c();continue}var u=c.func;typeof u=="number"?c.arg===void 0?E.dynCall_v(u):E.dynCall_vi(u,c.arg):u(c.arg===void 0?null:c.arg)}}yA<Lt&&fA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+yA+"! (TOTAL_STACK="+Lt+")"),E.buffer?n=E.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(E.wasmMemory=new WebAssembly.Memory({initial:yA/65536}),n=E.wasmMemory.buffer):n=new ArrayBuffer(yA),E.buffer=n),bt();var Rn=[],Ut=[],Gn=[],Mn=[],xn=[],Tt=!1,Ir=!1;function Er(l){Rn.unshift(l)}function oi(l){Ut.unshift(l)}function ri(l){Gn.unshift(l)}function ii(l){Mn.unshift(l)}function Cr(l){xn.unshift(l)}function ai(l,c,u){var S,b;Ge("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),u&&(S=s[b=c+_e(l)]),Dn(l,c,1/0),u&&(s[b]=S)}function gi(l,c,u){return l>=0?l:c<=32?2*Math.abs(1<<c-1)+l:Math.pow(2,c)+l}function Ii(l,c,u){if(l<=0)return l;var S=c<=32?Math.abs(1<<c-1):Math.pow(2,c-1);return l>=S&&(c<=32||l>S)&&(l=-2*S+l),l}var hr=Math.abs,lr=Math.ceil,Nn=Math.floor,cr=Math.min,he=0,vt=null,xe=null;function Ei(l){return l}E.preloadedImages={},E.preloadedAudios={};var bn="data:application/octet-stream;base64,";function ze(l){return String.prototype.startsWith?l.startsWith(bn):l.indexOf(bn)===0}(function(){var c="main.wast",u="main.wasm",S="main.temp.asm.js";ze(c)||(c=cA(c)),ze(u)||(u=cA(u)),ze(S)||(S=cA(S));var b={global:null,env:null,asm2wasm:rr,parent:E},W=null;function j(oA){return oA}function H(){try{if(E.wasmBinary)return new Uint8Array(E.wasmBinary);if(E.readBinary)return E.readBinary(u);throw"both async and sync fetching of the wasm failed"}catch(oA){jA(oA)}}E.asmPreload=E.asm;var SA=E.reallocBuffer,aA=function(oA){oA=Nt(oA,E.usingWasm?65536:16777216);var Z=E.buffer.byteLength;if(E.usingWasm)try{var xA=E.wasmMemory.grow((oA-Z)/65536);return xA!==-1?E.buffer=E.wasmMemory.buffer:null}catch{return null}};E.reallocBuffer=function(oA){return gA==="asmjs"?SA(oA):aA(oA)};var gA="";E.asm=function(oA,Z,xA){var HA;if(!(Z=HA=Z).table){var YA,JA=E.wasmTableSize;JA===void 0&&(JA=1024);var le=E.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?le!==void 0?Z.table=new WebAssembly.Table({initial:JA,maximum:le,element:"anyfunc"}):Z.table=new WebAssembly.Table({initial:JA,element:"anyfunc"}):Z.table=Array(JA),E.wasmTable=Z.table}return Z.memoryBase||(Z.memoryBase=E.STATIC_BASE),Z.tableBase||(Z.tableBase=0),YA=function(be,fe,qt){if(typeof WebAssembly!="object")return fA("no native wasm support detected"),!1;if(!(E.wasmMemory instanceof WebAssembly.Memory))return fA("no native wasm Memory in use"),!1;function At(XA,_A){if((W=XA.exports).memory){var Le,Kt,Tn;Le=W.memory,Kt=E.buffer,Le.byteLength<Kt.byteLength&&fA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),Tn=new Int8Array(Kt),new Int8Array(Le).set(Tn),wn(Le),bt()}E.asm=W,E.usingWasm=!0,function(ui){if(he--,E.monitorRunDependencies&&E.monitorRunDependencies(he),he==0&&(vt!==null&&(clearInterval(vt),vt=null),xe)){var Qr=xe;xe=null,Qr()}}("wasm-instantiate")}if(fe.memory=E.wasmMemory,b.global={NaN:NaN,Infinity:1/0},b["global.Math"]=Math,b.env=fe,he++,E.monitorRunDependencies&&E.monitorRunDependencies(he),E.instantiateWasm)try{return E.instantiateWasm(b,At)}catch(XA){return fA("Module.instantiateWasm callback failed with error: "+XA),!1}function me(XA){At(XA.instance,XA.module)}function Un(XA){(!E.wasmBinary&&(X||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,Le){_A(H())})).then(function(_A){return WebAssembly.instantiate(_A,b)}).then(XA).catch(function(_A){fA("failed to asynchronously prepare wasm: "+_A),jA(_A)})}return E.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||ze(u)||typeof fetch!="function"?Un(me):WebAssembly.instantiateStreaming(fetch(u,{credentials:"same-origin"}),b).then(me).catch(function(XA){fA("wasm streaming compile failed: "+XA),fA("falling back to ArrayBuffer instantiation"),Un(me)}),{}}(oA,Z,xA),ne(YA,"no binaryen method succeeded."),YA},E.asm})(),B=(Q=1024)+4816,Ut.push(),E.STATIC_BASE=Q,E.STATIC_BUMP=4816;var bA=B;function Ci(l){s[bA]=s[l],s[bA+1]=s[l+1],s[bA+2]=s[l+2],s[bA+3]=s[l+3]}function hi(l){s[bA]=s[l],s[bA+1]=s[l+1],s[bA+2]=s[l+2],s[bA+3]=s[l+3],s[bA+4]=s[l+4],s[bA+5]=s[l+5],s[bA+6]=s[l+6],s[bA+7]=s[l+7]}function li(l,c,u){var S=u>0?u:_e(l)+1,b=Array(S),W=Xe(l,b,0,b.length);return c&&(b.length=W),b}function ci(l){for(var c=[],u=0;u<l.length;u++){var S=l[u];S>255&&(S&=255),c.push(String.fromCharCode(S))}return c.join("")}B+=16,U=vA(4),w=(f=D=dn(B))+Lt,G=dn(w),a[U>>2]=G,p=!0,E.wasmTableSize=4,E.wasmMaxTableSize=4,E.asmGlobalArg={},E.asmLibraryArg={abort:jA,assert:ne,enlargeMemory:Fn,getTotalMemory:gr,abortOnCannotGrowMemory:function(){jA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+yA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(c,u,S){var b=Yt();try{return E.dynCall_iii(c,u,S)}catch(W){if(Ht(b),typeof W!="number"&&W!=="longjmp")throw W;E.setThrew(1,0)}},___assert_fail:function(c,u,S,b){jA("Assertion failed: "+We(c)+", at: "+[u?We(u):"unknown filename",S,b?We(b):"unknown function"])},___setErrNo:function(c){return E.___errno_location&&(a[E.___errno_location()>>2]=c),c},_abort:function(){E.abort()},_emscripten_memcpy_big:function(c,u,S){return o.set(o.subarray(u,u+S),c),c},_llvm_floor_f64:Nn,DYNAMICTOP_PTR:U,tempDoublePtr:bA,ABORT:Ze,STACKTOP:D,STACK_MAX:w};var Ln=E.asm(E.asmGlobalArg,E.asmLibraryArg,n);E.asm=Ln,E.___errno_location=function(){return E.asm.___errno_location.apply(null,arguments)};var Br=E._emscripten_replace_memory=function(){return E.asm._emscripten_replace_memory.apply(null,arguments)};E._free=function(){return E.asm._free.apply(null,arguments)};var je=E._malloc=function(){return E.asm._malloc.apply(null,arguments)};E._memcpy=function(){return E.asm._memcpy.apply(null,arguments)},E._memset=function(){return E.asm._memset.apply(null,arguments)},E._sbrk=function(){return E.asm._sbrk.apply(null,arguments)},E._stb_vorbis_js_channels=function(){return E.asm._stb_vorbis_js_channels.apply(null,arguments)},E._stb_vorbis_js_close=function(){return E.asm._stb_vorbis_js_close.apply(null,arguments)},E._stb_vorbis_js_decode=function(){return E.asm._stb_vorbis_js_decode.apply(null,arguments)},E._stb_vorbis_js_open=function(){return E.asm._stb_vorbis_js_open.apply(null,arguments)},E._stb_vorbis_js_sample_rate=function(){return E.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},E.establishStackSpace=function(){return E.asm.establishStackSpace.apply(null,arguments)},E.getTempRet0=function(){return E.asm.getTempRet0.apply(null,arguments)},E.runPostSets=function(){return E.asm.runPostSets.apply(null,arguments)},E.setTempRet0=function(){return E.asm.setTempRet0.apply(null,arguments)},E.setThrew=function(){return E.asm.setThrew.apply(null,arguments)};var $e=E.stackAlloc=function(){return E.asm.stackAlloc.apply(null,arguments)},Ht=E.stackRestore=function(){return E.asm.stackRestore.apply(null,arguments)},Yt=E.stackSave=function(){return E.asm.stackSave.apply(null,arguments)};function Ne(l){this.name="ExitStatus",this.message="Program terminated with exit("+l+")",this.status=l}function Jt(l){l=l||E.arguments,!(he>0)&&(function(){if(E.preRun)for(typeof E.preRun=="function"&&(E.preRun=[E.preRun]);E.preRun.length;)Er(E.preRun.shift());Me(Rn)}(),!(he>0)&&(E.calledRun||(E.setStatus?(E.setStatus("Running..."),setTimeout(function(){setTimeout(function(){E.setStatus("")},1),c()},1)):c())));function c(){!E.calledRun&&(E.calledRun=!0,Ze||(Tt||(Tt=!0,Me(Ut)),Me(Gn),E.onRuntimeInitialized&&E.onRuntimeInitialized(),function(){if(E.postRun)for(typeof E.postRun=="function"&&(E.postRun=[E.postRun]);E.postRun.length;)Cr(E.postRun.shift());Me(xn)}()))}}function Bi(l,c){(!c||!E.noExitRuntime||l!==0)&&(E.noExitRuntime||(Ze=!0,fn=l,D=v,Me(Mn),Ir=!0,E.onExit&&E.onExit(l)),E.quit(l,new Ne(l)))}function jA(l){throw E.onAbort&&E.onAbort(l),l!==void 0?($(l),fA(l),l=JSON.stringify(l)):l="",Ze=!0,fn=1,"abort("+l+"). Build with -s ASSERTIONS=1 for more info."}if(E.dynCall_iii=function(){return E.asm.dynCall_iii.apply(null,arguments)},E.asm=Ln,E.ccall=yn,E.cwrap=function(c,u,S,b){var W=(S=S||[]).every(function(j){return j==="number"});return u!=="string"&&W&&!b?mn(c):function(){return yn(c,u,S,arguments,b)}},Ne.prototype=Error(),Ne.prototype.constructor=Ne,xe=function l(){E.calledRun||Jt(),E.calledRun||(xe=l)},E.run=Jt,E.abort=jA,E.preInit)for(typeof E.preInit=="function"&&(E.preInit=[E.preInit]);E.preInit.length>0;)E.preInit.pop()();E.noExitRuntime=!0,Jt(),E.onRuntimeInitialized=()=>{Ss=!0,Ds()},zA.decode=function(l){return function(u){if(!Ss)throw Error("Not initialized");var S={};function b(fe){return new Int32Array(E.HEAPU8.buffer,fe,1)[0]}function W(fe,qt){var At=new ArrayBuffer(qt*Float32Array.BYTES_PER_ELEMENT),me=new Float32Array(At);return me.set(new Float32Array(E.HEAPU8.buffer,fe,qt)),me}S.open=E.cwrap("stb_vorbis_js_open","number",[]),S.close=E.cwrap("stb_vorbis_js_close","void",["number"]),S.channels=E.cwrap("stb_vorbis_js_channels","number",["number"]),S.sampleRate=E.cwrap("stb_vorbis_js_sample_rate","number",["number"]),S.decode=E.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var j,H,SA,aA,gA=S.open(),oA=(j=u,H=u.byteLength,SA=E._malloc(H),(aA=new Uint8Array(E.HEAPU8.buffer,SA,H)).set(new Uint8Array(j,0,H)),aA),Z=E._malloc(4),xA=E._malloc(4),HA=S.decode(gA,oA.byteOffset,oA.byteLength,Z,xA);if(E._free(oA.byteOffset),HA<0)throw S.close(gA),E._free(Z),Error("stbvorbis decode failed: "+HA);for(var YA=S.channels(gA),JA=Array(YA),le=new Int32Array(E.HEAPU32.buffer,b(Z),YA),qA=0;qA<YA;qA++)JA[qA]=W(le[qA],HA),E._free(le[qA]);var be=S.sampleRate(gA);return S.close(gA),E._free(b(Z)),E._free(Z),{data:JA,sampleRate:be,eof:!0,error:null}}(l)}})();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 OA(e){return e<=-32767?0:zt[e- -15e3]}var lt=-2e4,ks=16500,jt=new Float32Array(ks-lt+1);for(let e=0;e<jt.length;e++){let A=lt+e;jt[e]=440*Math.pow(2,(A-6900)/1200)}function He(e){return e<lt||e>ks?440*Math.pow(2,(e-6900)/1200):jt[~~e-lt]}var An=-1660,pr=1600,$t=new Float32Array((pr-An)*100+1);for(let e=0;e<$t.length;e++){let A=(An*100+e)/100;$t[e]=Math.pow(10,-A/20)}function PA(e){return $t[Math.floor((e-An)*100)]}var ws=.01,TA=100,en=90,yr=15e-6,VA=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>=en}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=PA(A.volumeEnvelope.currentAttenuationDb),e.recalculate(A)}static recalculate(A){let t=A.volumeEnvelope,n=I=>Math.max(0,Math.floor(OA(I)*t.sampleRate));t.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[r.initialAttenuation],1440))/10,t.attenuationTargetGain=PA(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],h=s/TA;t.decayDuration=n(o+i)*h,t.releaseDuration=n(A.modulatedGenerators[r.releaseVolEnv]),t.delayEnd=n(A.modulatedGenerators[r.delayVolEnv]),t.attackEnd=t.attackDuration+t.delayEnd;let a=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvHold];if(t.holdEnd=n(A.modulatedGenerators[r.holdVolEnv]+a)+t.attackEnd,t.decayEnd=t.decayDuration+t.holdEnd,t.state===0&&t.attackEnd===0&&(t.state=2),A.isInRelease){let I=Math.max(0,Math.min(TA,t.sustainDbRelative)),d=I/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)*I;break;case 4:t.releaseStartDb=I;break}t.releaseStartDb=Math.max(0,Math.min(t.releaseStartDb,TA)),t.releaseStartDb>=en&&(A.finished=!0),t.currentReleaseGain=PA(t.releaseStartDb);let C=(TA-t.releaseStartDb)/TA;t.releaseDuration*=C}}static apply(A,t,n,s){let o=A.volumeEnvelope,i=n/10,h=s;if(A.isInRelease){let I=o.currentSampleTime-o.releaseStartTimeSamples;if(I>=o.releaseDuration){for(let C=0;C<t.length;C++)t[C]=0;A.finished=!0;return}let d=TA-o.releaseStartDb;for(let C=0;C<t.length;C++){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*h;let Q=I/o.releaseDuration*d+o.releaseStartDb;o.currentReleaseGain=o.attenuation*PA(Q+i),t[C]*=o.currentReleaseGain,o.currentSampleTime++,I++}o.currentReleaseGain<=yr&&(A.finished=!0);return}let a=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=TA,t[a]=0,o.currentSampleTime++,++a>=t.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*h;let I=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(t[a]*=I*o.attenuation*PA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++a>=t.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*h,t[a]*=o.attenuation*PA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++a>=t.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*h,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,t[a]*=o.attenuation*PA(o.currentAttenuationDb+i),o.currentSampleTime++,++a>=t.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=en&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*h,t[a]*=o.attenuation*PA(o.sustainDbRelative+i),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++a>=t.length)return}}};function Fs(e){let A=e.messageData,t=e.channelNumber,n;if(t>=0&&(n=this.workletProcessorChannels[t],n===void 0)){L(`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.setCustomController(A[0],A[1]),n.updateChannelTuning();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++){let h=this.workletProcessorChannels[i];A.rate===-1?h.disableAndLockGSNRPN():h.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 ye.masterPan:this.setMasterPan(o);break;case ye.mainVolume:this.setMasterGain(o);break;case ye.voicesCap:this.voiceCap=o;break;case ye.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:Vn(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:L("Unrecognized event:",A);break}}function Rs(e,A){this.enableEventSystem&&this.post({messageType:RA.eventCall,messageData:{eventName:e,eventData:A}})}function Gs(){if(!this.enableEventSystem)return;let e=this.workletProcessorChannels.map(A=>({voicesAmount:A.voices.length,pitchBend:A.midiControllers[uA+K.pitchWheel],pitchBendRangeSemitones:A.midiControllers[uA+K.pitchWheelRange]/128,isMuted:A.isMuted,isDrum:A.drumChannel,transposition:A.channelTransposeKeyShift+A.customControllers[sA.channelTransposeFine]/100}));this.post({messageType:RA.channelProperties,messageData:e})}function Sr(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 tn={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};function Ms(e,A=0){let t=e[0];if(!(this.deviceID!==LA&&e[1]!==127&&this.deviceID!==e[1]))switch(t){default:L(`%cUnrecognized SysEx: %c${wA(e)}`,g.warn,g.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),y(`%cMaster Volume. Volume: %c${o}`,g.info,g.value);break;case 2:let h=((e[5]<<7|e[4])-8192)/8192;this.setMasterPan(h),y(`%cMaster Pan. Pan: %c${h}`,g.info,g.value);break;case 3:let a=(e[5]<<7|e[6])-8192;s=Math.floor(a/81.92),this.setMasterTuning(s),y(`%cMaster Fine Tuning. Cents: %c${s}`,g.info,g.value);break;case 4:s=(e[5]-64)*100,this.setMasterTuning(s),y(`%cMaster Coarse Tuning. Cents: %c${s}`,g.info,g.value);break;default:L(`%cUnrecognized MIDI Device Control Real-time message: %c${wA(e)}`,g.warn,g.unrecognized)}break;case 9:e[3]===1?(y("%cGM system on",g.info),this.system="gm"):e[3]===3?(y("%cGM2 system on",g.info),this.system="gm2"):(y("%cGM system off, defaulting to GS",g.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++],h=e[o++];for(let I=0;I<h;I++)this.tunings[i][e[o++]]=Sr(e[o++],e[o++],e[o++]);y(`%cSingle Note Tuning. Program: %c${i}%c Keys affected: %c${h}`,g.info,g.recognized,g.info,g.recognized);break;case 9:case 8:let a=new Int8Array(12);if(e[3]===8)for(let I=0;I<12;I++)a[I]=e[7+I]-64;else for(let I=0;I<24;I+=2){let d=(e[7+I]<<7|e[8+I])-8192;a[I/2]=Math.floor(d/81.92)}(e[4]&1)===1&&this.workletProcessorChannels[14+A].setOctaveTuning(a),(e[4]>>1&1)===1&&this.workletProcessorChannels[15+A].setOctaveTuning(a);for(let I=0;I<7;I++)(e[5]>>I&1)===1&&this.workletProcessorChannels[7+I+A].setOctaveTuning(a);for(let I=0;I<7;I++)(e[6]>>I&1)===1&&this.workletProcessorChannels[I+A].setOctaveTuning(a);y(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${a.join(" ")}`,g.info,g.value);break;default:L(`%cUnrecognized MIDI Tuning standard message: %c${wA(e)}`,g.warn,g.unrecognized);break}break;default:L(`%cUnrecognized MIDI Realtime/non realtime message: %c${wA(e)}`,g.warn,g.unrecognized)}break;case 65:let n=function(){L(`%cUnrecognized Roland %cGS %cSysEx: %c${wA(e)}`,g.warn,g.recognized,g.warn,g.unrecognized)};if(e[2]===66&&e[3]===18){let s=e[7];if(e[6]===127){s===0?(y("%cGS Reset received!",g.info),this.resetAllControllers(!1),this.system="gs"):s===127&&(y("%cGS system off, switching to GM2",g.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 h=s>0&&e[5]>>4;i.setDrums(h),y(`%cChannel %c${o}%c ${h?"is now a drum channel":"now isn't a drum channel"}%c via: %c${wA(e)}`,g.info,g.value,g.recognized,g.info,g.value);return;case 22:let a=s-64;i.transposeChannel(a),y(`%cChannel %c${o}%c pitch shift. Semitones %c${a}%c, with %c${wA(e)}`,g.info,g.recognized,g.info,g.value,g.info,g.value);return;case 28:let I=s;I===0?(i.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${o}`,g.info,g.recognized,g.info,g.value)):(i.randomPan=!1,i.controllerChange(m.pan,I));break;case 33:i.controllerChange(m.chorusDepth,s);break;case 34:i.controllerChange(m.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,C=new Int8Array(12);for(let B=0;B<d;B++)C[B]=e[B+7]-64;i.setOctaveTuning(C);let Q=s-64;y(`%cChannel %c${o}%c octave scale tuning. Cents %c${C.join(" ")}%c, with %c${wA(e)}`,g.info,g.recognized,g.info,g.value,g.info,g.value),i.setTuning(Q);break}return}else if(e[5]===0&&e[6]===6){y(`%cRoland GS Master Pan set to: %c${s}%c with: %c${wA(e)}`,g.info,g.value,g.info,g.value),this.setMasterPan((s-64)/64);return}else if(e[5]===0&&e[6]===5){let o=s-64;y(`%cRoland GS Master Key-Shift set to: %c${o}%c with: %c${wA(e)}`,g.info,g.value,g.info,g.value),this.setMasterTuning(o*100);return}else if(e[5]===0&&e[6]===4){y(`%cRoland GS Master Volume set to: %c${s}%c with: %c${wA(e)}`,g.info,g.value,g.info,g.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:tn.SoundCanvasText})}else if(e[5]===1){let s=new Uint8Array(e.slice(7,e.length-3));this.callEvent("synthdisplay",{displayData:s,displayType:tn.SoundCanvasDotDisplay}),y(`%cRoland SC Display Dot Matrix via: %c${wA(e)}`,g.info,g.value)}else n()}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),y(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${wA(e)}`,g.info,g.value,g.info,g.value);return}else{L(`%cUnrecognized Roland SysEx: %c${wA(e)}`,g.warn,g.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),y(`%cXG master volume. Volume: %c${s}`,g.info,g.recognized);break;case 6:let o=e[6]-64;this.transposeAllChannels(o),y(`%cXG master transpose. Volume: %c${o}`,g.info,g.recognized);break;case 126:y("%cXG system on",g.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(m.bankSelect,i);break;case 2:o.controllerChange(m.lsbForControl0BankSelect,i);break;case 3:o.programChange(i);break;case 8:if(o.drumChannel)return;let h=i-64;o.channelTransposeKeyShift=h;break;case 11:o.controllerChange(m.mainVolume,i);break;case 14:let a=i;a===0?(o.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${s}`,g.info,g.recognized,g.info,g.value)):o.controllerChange(m.pan,a);break;case 19:o.controllerChange(m.reverbDepth,i);break;case 18:o.controllerChange(m.chorusDepth,i);break;default:L(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,g.warn,g.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:tn.XGText})}else this.system==="xg"&&L(`%cUnrecognized Yamaha XG SysEx: %c${wA(e)}`,g.warn,g.unrecognized);else this.system==="xg"&&L(`%cUnrecognized Yamaha SysEx: %c${wA(e)}`,g.warn,g.unrecognized);break}}function xs(e){this.midiVolume=e,this.setMasterPan(this.pan)}function Ns(e){this.masterGain=e*nn,this.setMasterPan(this.pan)}function bs(e){this.pan=e,e=e/2+.5,this.panLeft=1-e,this.panRight=e}function Ls(){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 x(e),t=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.generatorZoneStartIndex=t;for(let o of s.generators)N(A,o.generatorType),N(A,o.generatorValue),t++}return V(A,0),rA(new nA("igen",A.length,A))}function Us(e,A,t,n,s){let o=this.samples.map((I,d)=>{t&&I.compressSample(n,s);let C=I.getRawData();return y(`%cEncoded sample %c${d}. ${I.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${I.isCompressed}%c.`,g.info,g.recognized,g.info,g.recognized,g.info,I.isCompressed?g.recognized:g.unrecognized,g.info),C}),i=this.samples.reduce((I,d,C)=>I+o[C].length+46,0),h=new x(i);this.samples.forEach((I,d)=>{let C=o[d],Q,B,p=C.length;I.isCompressed?(Q=h.currentIndex,B=Q+C.length):(Q=h.currentIndex/2,B=Q+C.length/2,p+=46),e.push(Q),h.set(C,h.currentIndex),h.currentIndex+=p,A.push(B)});let a=rA(new nA("smpl",h.length,h),new x([115,100,116,97]));return rA(new nA("LIST",a.length,a))}function Ts(e,A){let n=new x(46*(this.samples.length+1));return this.samples.forEach((s,o)=>{kA(n,s.sampleName,20);let i=e[o];V(n,i);let h=A[o];V(n,h);let a=s.sampleLoopStartIndex+i,I=s.sampleLoopEndIndex+i;s.isCompressed&&(a-=i,I-=i),V(n,a),V(n,I),V(n,s.sampleRate),n[n.currentIndex++]=s.samplePitch,n[n.currentIndex++]=s.samplePitchCorrection,N(n,s.sampleLink),N(n,s.sampleType)}),kA(n,"EOS",46),rA(new nA("shdr",n.length,n))}function vs(){let e=10;for(let n of this.instruments)e+=n.instrumentZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new x(e),t=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.modulatorZoneStartIndex=t;for(let o of s.modulators)N(A,o.sourceEnum),N(A,o.modulatorDestination),N(A,o.transformAmount),N(A,o.secondarySourceEnum),N(A,o.transformType),t++}return ke(A,0,10),rA(new nA("imod",A.length,A))}function Hs(){let e=this.instruments.reduce((o,i)=>i.instrumentZones.length*4+o,4),A=new x(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,N(A,n),N(A,s),n+=i.generators.length,s+=i.modulators.length,t++}return N(A,n),N(A,s),rA(new nA("ibag",A.length,A))}function Ys(){let e=this.instruments.length*22+22,A=new x(e),t=0,n=0;for(let s of this.instruments)kA(A,s.instrumentName,20),N(A,t),t+=s.instrumentZones.length,s.instrumentID=n,n++;return kA(A,"EOI",20),N(A,t),rA(new nA("inst",A.length,A))}function Js(){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 x(e),t=0;for(let n of this.presets)for(let s of n.presetZones){s.generatorZoneStartIndex=t;for(let o of s.generators)N(A,o.generatorType),N(A,o.generatorValue);t+=s.generators.length}return N(A,0),N(A,0),rA(new nA("pgen",A.length,A))}function qs(){let e=10;for(let n of this.presets)e+=n.presetZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new x(e),t=0;for(let n of this.presets)for(let s of n.presetZones){s.modulatorZoneStartIndex=t;for(let o of s.modulators)N(A,o.sourceEnum),N(A,o.modulatorDestination),N(A,o.transformAmount),N(A,o.secondarySourceEnum),N(A,o.transformType),t++}return ke(A,0,10),rA(new nA("pmod",A.length,A))}function Ks(){let e=this.presets.reduce((o,i)=>i.presetZones.length*4+o,4),A=new x(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,N(A,n),N(A,s),n+=i.generators.length,s+=i.modulators.length,t++}return N(A,n),N(A,s),rA(new nA("pbag",A.length,A))}function Ps(){let e=this.presets.length*38+38,A=new x(e),t=0;for(let n of this.presets)kA(A,n.presetName,20),N(A,n.program),N(A,n.bank),N(A,t),V(A,n.library),V(A,n.genre),V(A,n.morphology),t+=n.presetZones.length;return kA(A,"EOP",20),N(A,0),N(A,0),N(A,t),V(A,0),V(A,0),V(A,0),rA(new nA("phdr",A.length,A))}var Dr={compress:!1,compressionQuality:.5,compressionFunction:void 0};function Os(e=Dr){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");mA("%cSaving soundfont...",g.info),y(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,g.info,g.recognized,g.info,g.recognized),y("%cWriting INFO...",g.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0");for(let[J,v]of Object.entries(this.soundFontInfo))if(J==="ifil"||J==="iver"){let E=parseInt(v.split(".")[0]),P=parseInt(v.split(".")[1]),X=new x(4);N(X,E),N(X,P),A.push(rA(new nA(J,4,X)))}else if(J==="DMOD")A.push(rA(new nA(J,v.length,v)));else{let E=new x(v.length);kA(E,v),A.push(rA(new nA(J,v.length,E)))}let t=BA([new x([73,78,70,79]),...A]),n=rA(new nA("LIST",t.length,t));y("%cWriting SDTA...",g.info);let s=[],o=[],i=Us.call(this,s,o,e?.compress,e?.compressionQuality??.5,e.compressionFunction);y("%cWriting PDTA...",g.info),y("%cWriting SHDR...",g.info);let h=Ts.call(this,s,o);y("%cWriting IGEN...",g.info);let a=Ls.call(this);y("%cWriting IMOD...",g.info);let I=vs.call(this);y("%cWriting IBAG...",g.info);let d=Hs.call(this);y("%cWriting INST...",g.info);let C=Ys.call(this),Q=Js.call(this);y("%cWriting PMOD...",g.info);let B=qs.call(this);y("%cWriting PBAG...",g.info);let p=Ks.call(this);y("%cWriting PHDR...",g.info);let f=Ps.call(this),D=BA([new x([112,100,116,97]),f,p,B,Q,C,d,I,a,h]),w=rA(new nA("LIST",D.length,D));y("%cWriting the output file...",g.info);let G=BA([new x([115,102,98,107]),n,i,w]),U=rA(new nA("RIFF",G.length,G));return y(`%cSaved succesfully! Final file size: %c${U.length}`,g.info,g.recognized),O(),U}var Ye=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 MA=class extends Ye{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},re=class extends Ye{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var kr=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 Vs(e,A=!0){function t(C,Q){C.push(...Q.filter(B=>!C.find(p=>p.generatorType===B.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(B=>!C.find(p=>q.isIdentical(B,p))))}let o=[],i=[],h=[],a={min:0,max:127},I={min:0,max:127},d=e.presetZones.find(C=>C.isGlobal);d&&(i.push(...d.generators),h.push(...d.modulators),a=d.keyRange,I=d.velRange);for(let C of e.presetZones){if(C.isGlobal)continue;let Q=C.keyRange;C.hasKeyRange||(Q=a);let B=C.velRange;C.hasVelRange||(B=I);let p=C.generators.map(E=>new M(E.generatorType,E.generatorValue));t(p,i);let f=[...C.modulators];s(f,h);let D=C.instrument.instrumentZones,w=[],G=[],U={min:0,max:127},J={min:0,max:127},v=D.find(E=>E.isGlobal);v&&(w.push(...v.generators),G.push(...v.modulators),U=v.keyRange,J=v.velRange);for(let E of D){if(E.isGlobal)continue;let P=E.keyRange;E.hasKeyRange||(P=U);let X=E.velRange;if(E.hasVelRange||(X=J),P=n(P,Q),X=n(X,B),P.max<P.min||X.max<X.min)continue;let iA=E.generators.map($=>new M($.generatorType,$.generatorValue));t(iA,w);let tA=[...E.modulators];s(tA,G);let CA=[...tA];for(let $ of f){let fA=CA.findIndex(vA=>q.isIdentical($,vA));fA!==-1?CA[fA]=CA[fA].sumTransform($):CA.push($)}let lA=iA.map($=>new M($.generatorType,$.generatorValue));for(let $ of p){if($.generatorType===r.velRange||$.generatorType===r.keyRange||$.generatorType===r.instrument||$.generatorType===r.endOper||$.generatorType===r.sampleModes)continue;let fA=iA.findIndex(vA=>vA.generatorType===$.generatorType);if(fA!==-1){let vA=lA[fA].generatorValue+$.generatorValue;lA[fA]=new M($.generatorType,vA)}else{let vA=Y[$.generatorType].def+$.generatorValue;lA.push(new M($.generatorType,vA))}}lA=lA.filter($=>$.generatorType!==r.sampleID&&$.generatorType!==r.keyRange&&$.generatorType!==r.velRange&&$.generatorType!==r.endOper&&$.generatorType!==r.instrument&&$.generatorValue!==Y[$.generatorType].def);let cA=new MA;cA.keyRange=P,cA.velRange=X,cA.keyRange.min===0&&cA.keyRange.max===127&&(cA.keyRange.min=-1),cA.velRange.min===0&&cA.velRange.max===127&&(cA.velRange.min=-1),cA.isGlobal=!1,cA.sample=E.sample,cA.generators=lA,cA.modulators=CA,o.push(cA)}}if(A){let C=new MA;C.isGlobal=!0;for(let p=0;p<58;p++){if(kr.has(p))continue;let f={},D=Y[p]?.def||0;f[D]=0;for(let w of o){let G=w.generators.find(v=>v.generatorType===p);if(G){let v=G.generatorValue;f[v]===void 0?f[v]=1:f[v]++}else f[D]++;let U;switch(p){default:continue;case r.decayVolEnv:U=r.keyNumToVolEnvDecay;break;case r.holdVolEnv:U=r.keyNumToVolEnvHold;break;case r.decayModEnv:U=r.keyNumToModEnvDecay;break;case r.holdModEnv:U=r.keyNumToModEnvHold}if(w.generators.find(v=>v.generatorType===U)!==void 0){f={};break}}if(Object.keys(f).length>0){let w=Object.entries(f).reduce((U,J)=>U[1]<J[1]?J:U,[0,0]),G=parseInt(w[0]);G!==D&&C.generators.push(new M(p,G)),o.forEach(U=>{let J=U.generators.findIndex(v=>v.generatorType===p);J!==-1?U.generators[J].generatorValue===G&&U.generators.splice(J,1):G!==D&&U.generators.push(new M(p,D))})}}let B=o.find(p=>!p.isGlobal).modulators.map(p=>q.copy(p));for(let p of B){let f=!0;for(let D of o){if(D.isGlobal||!f)continue;D.modulators.find(G=>q.isIdentical(G,p))||(f=!1)}if(f===!0){C.modulators.push(q.copy(p));for(let D of o){let w=D.modulators.find(G=>q.isIdentical(G,p));w.transformAmount===p.transformAmount&&D.modulators.splice(D.modulators.indexOf(w),1)}}}o.splice(0,0,C)}return o}var Zs=20;function ct(e,A,t,n,s,o,i){let h=i===0?0:1,a=new x(Zs+h*16);V(a,Zs),N(a,A),N(a,t);let I=n*.4,d=Math.floor(I*-65536);V(a,d),V(a,2);let C=o-s,Q=0;switch(i){default:case 0:h=0;break;case 1:Q=0,h=1;break;case 3:Q=1,h=1}return V(a,h),h===1&&(V(a,16),V(a,Q),V(a,s),V(a,C)),AA("wsmp",a)}var T={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},Bt=new q({srcEnum:219,dest:r.reverbEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),Qt=new q({srcEnum:221,dest:r.chorusEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),ut=new q({srcEnum:129,dest:r.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0}),dt=new q({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 Je=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 x(12);return N(A,this.source),N(A,this.control),N(A,this.destination),N(A,this.transform),V(A,this.scale<<16),A}};function Ws(e,A){if(e)switch(A){default:return;case m.modulationWheel:return T.modulationWheel;case m.mainVolume:return T.volume;case m.pan:return T.pan;case m.expressionController:return T.expression;case m.chorusDepth:return T.chorus;case m.reverbDepth:return T.reverb}else switch(A){default:return;case K.noteOnKeyNum:return T.keyNum;case K.noteOnVelocity:return T.velocity;case K.noController:return T.none;case K.polyPressure:return T.polyPressure;case K.channelPressure:return T.channelPressure;case K.pitchWheel:return T.pitchWheel;case K.pitchWheelRange:return T.pitchWheelRange}}function Xs(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 _s(e,A){switch(e){default:return;case r.modEnvToFilterFc:return{source:T.modEnv,dest:k.filterCutoff,amt:A,isBipolar:!1};case r.modEnvToPitch:return{source:T.modEnv,dest:k.pitch,amt:A,isBipolar:!1};case r.modLfoToFilterFc:return{source:T.modLfo,dest:k.filterCutoff,amt:A,isBipolar:!0};case r.modLfoToVolume:return{source:T.modLfo,dest:k.gain,amt:A,isBipolar:!0};case r.modLfoToPitch:return{source:T.modLfo,dest:k.pitch,amt:A,isBipolar:!0};case r.vibLfoToPitch:return{source:T.vibratoLfo,dest:k.pitch,amt:A,isBipolar:!0};case r.keyNumToVolEnvHold:return{source:T.keyNum,dest:k.volEnvHold,amt:A,isBipolar:!0};case r.keyNumToVolEnvDecay:return{source:T.keyNum,dest:k.volEnvDecay,amt:A,isBipolar:!0};case r.keyNumToModEnvHold:return{source:T.keyNum,dest:k.modEnvHold,amt:A,isBipolar:!0};case r.keyNumToModEnvDecay:return{source:T.keyNum,dest:k.modEnvDecay,amt:A,isBipolar:!0};case r.scaleTuning:return{source:T.keyNum,dest:k.pitch,amt:A*128,isBipolar:!1}}}function zs(e){let A=Xs(e.generatorType,e.generatorValue),t=A,n=0,s=e.generatorValue;A?.amount!==void 0&&(s=A.amount,t=A.dest);let o=_s(e.generatorType,e.generatorValue);if(o!==void 0)s=o.amt,t=o.dest,n=o.source;else if(t===void 0){L(`Invalid generator type: ${e.generatorType}`);return}return new Je(n,0,t,s,0)}function js(e){if(e.transformType!==0){L("Other transform types are not supported.");return}let A=Ws(e.sourceUsesCC,e.sourceIndex),t=e.sourceCurveType,n=e.sourcePolarity,s=e.sourceDirection;if(A===void 0){L(`Invalid source: ${e.sourceIndex}, CC: ${e.sourceUsesCC}`);return}e.modulatorDestination===r.initialAttenuation&&(s=s===1?0:1);let o=Ws(e.secSrcUsesCC,e.secSrcIndex),i=e.secSrcCurveType,h=e.secSrcPolarity,a=e.secSrcDirection;if(o===void 0){L(`Invalid secondary source: ${e.secSrcIndex}, CC: ${e.secSrcUsesCC}`);return}let I=Xs(e.modulatorDestination,e.transformAmount),d=I,C=e.transformAmount;I?.dest!==void 0&&(d=I.dest,C=I.amount);let Q=_s(e.modulatorDestination,e.transformAmount);if(Q!==void 0)C=Q.amt,o=A,i=t,h=n,a=s,t=QA.linear,n=Q.isBipolar?1:0,s=0,A=Q.source,d=Q.dest;else if(d===void 0){L(`Invalid destination: ${e.modulatorDestination}`);return}let B=0;return B|=i<<4,B|=h<<8,B|=a<<9,B|=t,B|=n<<14,B|=s<<15,new Je(A,o,d,C,B)}var wr=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 ft(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 M(i.generatorType,Math.min(i.generatorValue,6386),!1))}for(let o=0;o<e.generators.length;o++){let i=e.generators[o],h;switch(i.generatorType){default:continue;case r.keyNumToVolEnvDecay:h=r.decayVolEnv;break;case r.keyNumToVolEnvHold:h=r.holdVolEnv;break;case r.keyNumToModEnvDecay:h=r.decayModEnv;break;case r.keyNumToModEnvHold:h=r.holdModEnv}let a=e.generators.find(p=>p.generatorType===h);if(a===void 0)continue;let I=i.generatorValue*-128,d=60/128*I,C=a.generatorValue-d,Q=e.generators.indexOf(i),B=e.generators.indexOf(a);e.generators[B]=new M(h,C,!1),e.generators[Q]=new M(i.generatorType,I,!1)}let A=e.generators.reduce((o,i)=>{if(wr.has(i.generatorType))return o;let h=zs(i);return h!==void 0?(o.push(h),y("%cSucceeded converting to DLS Articulator!",g.recognized)):L("Failed converting to DLS Articulator!"),o},[]),t=e.modulators.reduce((o,i)=>{if(q.isIdentical(i,Qt,!0)||q.isIdentical(i,Bt,!0)||q.isIdentical(i,ut,!0)||q.isIdentical(i,dt,!0))return o;let h=js(i);return h!==void 0?(o.push(h),y("%cSucceeded converting to DLS Articulator!",g.recognized)):L("Failed converting to DLS Articulator!"),o},[]);A.push(...t);let n=new x(8);V(n,8),V(n,A.length);let s=A.map(o=>o.writeArticulator());return AA("art2",BA([n,...s]))}function $s(e,A){let t=new x(12);N(t,Math.max(e.keyRange.min,0)),N(t,e.keyRange.max),N(t,Math.max(e.velRange.min,0)),N(t,e.velRange.max),N(t,0);let n=e.getGeneratorValue(r.exclusiveClass,0);N(t,n),N(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 h=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)),a=new x(12);N(a,0),N(a,0),V(a,1),V(a,this.samples.indexOf(e.sample));let I=AA("wlnk",a),d=new x(0);if(e.modulators.length+e.generators.length>0){let C=ft(e);d=AA("lar2",C,!1,!0)}return AA("rgn2",BA([s,h,I,d]),!1,!0)}function Ao(e){mA(`%cWriting %c${e.presetName}%c...`,g.info,g.recognized,g.info);let A=Vs(e),t=A.reduce((Q,B)=>B.isGlobal?Q:Q+1,0),n=new x(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 x(0),h=A.find(Q=>Q.isGlobal===!0);if(h){let Q=ft(h);i=AA("lar2",Q,!1,!0)}let a=BA(A.reduce((Q,B)=>(B.isGlobal||Q.push($s.apply(this,[B,h])),Q),[])),I=AA("lrgn",a,!1,!0),d=AA("INAM",ce(e.presetName)),C=AA("INFO",d,!1,!0);return O(),AA("ins ",BA([o,I,i,C]),!1,!0)}function eo(){let e=BA(this.presets.map(A=>Ao.apply(this,[A])));return AA("lins",e,!1,!0)}function to(e){let A=new x(18);N(A,1),N(A,1),V(A,e.sampleRate),V(A,e.sampleRate*2),N(A,2),N(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 I=new Int16Array(o.length);for(let d=0;d<o.length;d++)I[d]=o[d]*32768;i=AA("data",new x(I.buffer))}else i=AA("data",e.getRawData());let h=AA("INAM",ce(e.sampleName)),a=AA("INFO",h,!1,!0);return y(`%cSaved %c${e.sampleName}%c succesfully!`,g.recognized,g.value,g.recognized),AA("wave",BA([t,s,i,a]),!1,!0)}function no(){let e=0,A=[],t=this.samples.map(n=>{let s=to(n);return A.push(e),e+=s.length,s});return{data:AA("wvpl",BA(t),!1,!0),indexes:A}}function so(){mA("%cSaving DLS...",g.info);let e=new x(4);V(e,this.presets.length);let A=AA("colh",e);mA("%cWriting instruments...",g.info);let t=eo.apply(this);y("%cSuccess!",g.recognized),O(),mA("%cWriting WAVE samples...",g.info);let n=no.apply(this),s=n.data,o=n.indexes;y("%cSucceeded!",g.recognized),O();let i=new x(8+4*o.length);V(i,8),V(i,o.length);for(let C of o)V(i,C);let h=AA("ptbl",i);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
|
|
15
|
-
Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let a=[];for(let[C,Q]of Object.entries(this.soundFontInfo))C!=="ICMT"&&C!=="INAM"&&C!=="ICRD"&&C!=="IENG"&&C!=="ICOP"&&C!=="ISFT"&&C!=="ISBJ"||a.push(AA(C,ce(Q),!0));let I=AA("INFO",BA(a),!1,!0),d=new x(A.length+t.length+h.length+s.length+I.length+4);return kA(d,"DLS "),d.set(BA([A,t,h,s,I]),4),y("%cSaved succesfully!",g.recognized),O(),AA("RIFF",d)}var Fr=48e3,ie=class{constructor(A,t,n,s,o,i,h,a){this.sampleName=A,this.sampleRate=t,this.samplePitch=n,this.samplePitchCorrection=s,this.sampleLink=o,this.sampleType=i,this.sampleLoopStartIndex=h,this.sampleLoopEndIndex=a,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(Fr),n=this.getAudioData()),this.compressedData=t([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{L(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var ae=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 ge=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(B,p){return p>=B.min&&p<=B.max}function o(B,p){B.push(...p.filter(f=>!B.find(D=>D.generatorType===f.generatorType)))}function i(B,p){B.push(...p.filter(f=>!B.find(D=>q.isIdentical(f,D))))}let h=[],a=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],I=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(B=>s(B.hasKeyRange?B.keyRange:d,A)&&s(B.hasVelRange?B.velRange:C,t)&&!B.isGlobal).forEach(B=>{if(B.instrument.instrumentZones.length<1)return;let p=B.generators,f=B.modulators,D=B.instrument.instrumentZones[0],w=D.isGlobal?[...D.generators]:[],G=D.isGlobal?[...D.modulators]:[],U=D.isGlobal?D.keyRange:{min:0,max:127},J=D.isGlobal?D.velRange:{min:0,max:127};B.instrument.instrumentZones.filter(E=>s(E.hasKeyRange?E.keyRange:U,A)&&s(E.hasVelRange?E.velRange:J,t)&&!E.isGlobal).forEach(E=>{let P=[...E.generators],X=[...E.modulators];o(p,a),o(P,w),i(f,I),i(X,G),i(X,this.defaultModulators);let iA=[...X];for(let tA=0;tA<f.length;tA++){let CA=f[tA],lA=iA.findIndex(cA=>q.isIdentical(CA,cA));lA!==-1?iA[lA]=iA[lA].sumTransform(CA):iA.push(CA)}h.push({instrumentGenerators:P,presetGenerators:p,modulators:iA,sample:E.sample,sampleID:E.generators.find(tA=>tA.generatorType===r.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][t]=h,h}};var Ie=class e{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=st.map(t=>q.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 ie("Saw",44100,65,20,0,0,0,127);t.sampleData=new Float32Array(128);for(let I=0;I<128;I++)t.sampleData[I]=I/128*2-1;A.samples.push(t);let n=new MA;n.isGlobal=!0,n.generators.push(new M(r.initialAttenuation,375)),n.generators.push(new M(r.releaseVolEnv,-1e3)),n.generators.push(new M(r.sampleModes,1));let s=new MA;s.sample=t;let o=new MA;o.sample=t,o.generators.push(new M(r.fineTune,-9));let i=new ae;i.instrumentName="Saw Wave",i.instrumentZones.push(n),i.instrumentZones.push(s),i.instrumentZones.push(o),A.instruments.push(i);let h=new re;h.instrument=i;let a=new ge(A.defaultModulators);return a.presetName="Saw Wave",a.presetZones.push(h),A.presets.push(a),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&&L(`%cPreset ${A}.${t} not found. Replaced with %c${n.presetName} (${n.bank}.${n.program})`,g.warn,g.recognized)),n||(L(`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||(L("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}};Ie.prototype.write=Os;Ie.prototype.writeDLS=so;function oo(e){mA("%cLoading instruments...",g.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(z(e.chunkData));O()}var mt=class extends ge{constructor(A,t){super(st),this.program=t&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new ae,this.DLSInstrument.addUseCount();let s=new re;s.instrument=this.DLSInstrument,this.presetZones=[s]}};function ro(e){this.verifyHeader(e,"LIST"),this.verifyText(_(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(z(e.chunkData));let t=A.find(B=>B.header==="insh");if(!t)throw O(),new Error("No instrument header!");let n=F(t.chunkData,4),s=F(t.chunkData,4),o=F(t.chunkData,4),i=new mt(s,o),h="unnamedPreset",a=NA(A,"INFO");if(a){let B=z(a.chunkData);for(;B.header!=="INAM";)B=z(a.chunkData);h=_(B.chunkData,B.chunkData.length).trim()}i.presetName=h,i.DLSInstrument.instrumentName=h,$A(`%cParsing %c"${h}"%c...`,g.info,g.recognized,g.info);let I=NA(A,"lrgn");if(!I)throw O(),new Error("No region list!");let d=new MA;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(B=>B.generatorValue!==Y[B.generatorType].def),d.modulators.find(B=>B.modulatorDestination===r.reverbEffectsSend)===void 0&&d.modulators.push(q.copy(Bt)),d.modulators.find(B=>B.modulatorDestination===r.chorusEffectsSend)===void 0&&d.modulators.push(q.copy(Qt)),i.DLSInstrument.instrumentZones.push(d);for(let B=0;B<n;B++){let p=z(I.chunkData);this.verifyHeader(p,"LIST");let f=_(p.chunkData,4);f!=="rgn "&&f!=="rgn2"&&(O(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${f}"`));let D=this.readRegion(p);D&&i.DLSInstrument.instrumentZones.push(D)}this.presets.push(i),this.instruments.push(i.DLSInstrument),O()}function io(e){let A,t=!1;switch(e){default:case T.modLfo:case T.vibratoLfo:case T.coarseTune:case T.fineTune:case T.modEnv:return;case T.keyNum:A=K.noteOnKeyNum;break;case T.none:A=K.noController;break;case T.modulationWheel:A=m.modulationWheel,t=!0;break;case T.pan:A=m.pan,t=!0;break;case T.reverb:A=m.reverbDepth,t=!0;break;case T.chorus:A=m.chorusDepth,t=!0;break;case T.expression:A=m.expressionController,t=!0;break;case T.volume:A=m.mainVolume,t=!0;break;case T.velocity:A=K.noteOnVelocity;break;case T.polyPressure:A=K.polyPressure;break;case T.channelPressure:A=K.channelPressure;break;case T.pitchWheel:A=K.pitchWheel;break;case T.pitchWheelRange:A=K.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${e}`);return{enum:A,isCC:t}}function Rr(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 Gr(e,A){return e===T.vibratoLfo&&A===k.pitch?r.vibLfoToPitch:e===T.modLfo&&A===k.pitch?r.modLfoToPitch:e===T.modLfo&&A===k.filterCutoff?r.modLfoToFilterFc:e===T.modLfo&&A===k.gain?r.modLfoToVolume:e===T.modEnv&&A===k.filterCutoff?r.modEnvToFilterFc:e===T.modEnv&&A===k.pitch?r.modEnvToPitch:void 0}function ao(e,A,t,n,s){let o=Gr(e,t),i,h,a=!1,I=!1,d=s;if(o===void 0){let w=Rr(t,s);if(w===void 0){L(`Invalid destination: ${t}`);return}if(i=w,w.newAmount!==void 0&&(d=w.newAmount,i=w.gen),h=io(e),h===void 0){L(`Invalid source: ${e}`);return}}else i=o,a=!0,h={enum:K.noController,isCC:!1},I=!0;let C=io(A);if(C===void 0){L(`Invalid control: ${A}`);return}let Q;if(I)Q=0;else{let w=n&15,G=n>>10&15;G===QA.linear&&w!==QA.linear&&(G=w);let U=n>>14&1,J=n>>15&1;i===r.initialAttenuation&&s<0&&(J=1),Q=KA(G,U,J,h.isCC,h.enum)}i===r.initialAttenuation&&(d=Math.max(960,Math.min(0,d)));let B=n>>4&15,p=n>>8&1,f=n>>9&1,D=KA(B,p,f,C.isCC,C.enum);if(a){let w=D;D=Q,Q=w}return new q({srcEnum:Q,secSrcEnum:D,dest:i,transform:0,amt:d})}function sn(e,A){let t=e.chunkData,n=[],s=[];F(t,4);let o=F(t,4);for(let i=0;i<o;i++){let h=F(t,2),a=F(t,2),I=F(t,2),d=F(t,2),Q=(F(t,4)|0)>>16;if(h===0&&a===0&&d===0){let B;switch(I){case k.pan:B=new M(r.pan,Q);break;case k.gain:B=new M(r.initialAttenuation,-Q*10/.4);break;case k.filterCutoff:B=new M(r.initialFilterFc,Q);break;case k.filterQ:B=new M(r.initialFilterQ,Q);break;case k.modLfoFreq:B=new M(r.freqModLFO,Q);break;case k.modLfoDelay:B=new M(r.delayModLFO,Q);break;case k.vibLfoFreq:B=new M(r.freqVibLFO,Q);break;case k.vibLfoDelay:B=new M(r.delayVibLFO,Q);break;case k.volEnvDelay:B=new M(r.delayVolEnv,Q);break;case k.volEnvAttack:B=new M(r.attackVolEnv,Q);break;case k.volEnvHold:B=new M(r.holdVolEnv,Q,!1);break;case k.volEnvDecay:B=new M(r.decayVolEnv,Q,!1);break;case k.volEnvRelease:B=new M(r.releaseVolEnv,Q);break;case k.volEnvSustain:let p=1e3-Q;B=new M(r.sustainVolEnv,p);break;case k.modEnvDelay:B=new M(r.delayModEnv,Q);break;case k.modEnvAttack:B=new M(r.attackModEnv,Q);break;case k.modEnvHold:B=new M(r.holdModEnv,Q,!1);break;case k.modEnvDecay:B=new M(r.decayModEnv,Q,!1);break;case k.modEnvRelease:B=new M(r.releaseModEnv,Q);break;case k.modEnvSustain:let f=1e3-Q;B=new M(r.sustainModEnv,f);break;case k.reverbSend:B=new M(r.reverbEffectsSend,Q);break;case k.chorusSend:B=new M(r.chorusEffectsSend,Q);break;case k.pitch:let D=Math.floor(Q/100),w=Math.floor(Q-D*100);B=new M(r.fineTune,w),n.push(new M(r.coarseTune,D));break}B&&n.push(B)}else{let B=!0;if(a===T.none)if(h===T.modLfo&&I===k.pitch)n.push(new M(r.modLfoToPitch,Q));else if(h===T.modLfo&&I===k.gain)n.push(new M(r.modLfoToVolume,Q));else if(h===T.modLfo&&I===k.filterCutoff)n.push(new M(r.modLfoToFilterFc,Q));else if(h===T.vibratoLfo&&I===k.pitch)n.push(new M(r.vibLfoToPitch,Q));else if(h===T.modEnv&&I===k.pitch)n.push(new M(r.modEnvToPitch,Q));else if(h===T.modEnv&&I===k.filterCutoff)n.push(new M(r.modEnvToFilterFc,Q));else if(h===T.keyNum&&I===k.pitch)n.push(new M(r.scaleTuning,Q/128));else if(h===T.keyNum&&I===k.volEnvHold){n.push(new M(r.keyNumToVolEnvHold,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.holdVolEnv&&(f.generatorValue+=p)})}else if(h===T.keyNum&&I===k.volEnvDecay){n.push(new M(r.keyNumToVolEnvDecay,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.decayVolEnv&&(f.generatorValue+=p)})}else if(h===T.keyNum&&I===k.modEnvHold){n.push(new M(r.keyNumToModEnvHold,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.holdModEnv&&(f.generatorValue+=p)})}else if(h===T.keyNum&&I===k.modEnvDecay){n.push(new M(r.keyNumToModEnvDecay,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.decayModEnv&&(f.generatorValue+=p)})}else B=!1;else B=!1;if(B===!1){let p=ao(h,a,I,d,Q);p?(s.push(p),y("%cSucceeded converting to SF2 Modulator!",g.recognized)):L("Failed converting to SF2 Modulator!")}}}return A&&s.push(q.copy(ut),q.copy(dt)),{modulators:s,generators:n}}function go(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let n=z(e.chunkData);this.verifyHeader(n,"art1","art2");let s=sn(n,!0);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=z(A.chunkData);this.verifyHeader(n,"art2","art1");let s=sn(n,!1);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}}var pt=class extends MA{constructor(A,t){super(),this.keyRange=A,this.velRange=t,this.isGlobal=!0}setWavesample(A,t,n,s,o,i,h){t!==0&&this.generators.push(new M(r.sampleModes,t)),this.generators.push(new M(r.initialAttenuation,A)),this.isGlobal=!1,h-=o.samplePitchCorrection;let a=Math.trunc(h/100);a!==0&&this.generators.push(new M(r.coarseTune,a));let I=h-a*100;if(I!==0&&this.generators.push(new M(r.fineTune,I)),t!==0){let d=n.start-o.sampleLoopStartIndex,C=n.end-o.sampleLoopEndIndex;if(d!==0){let Q=d%32768;this.generators.push(new M(r.startloopAddrsOffset,Q));let B=Math.trunc(d/32768);B!==0&&this.generators.push(new M(r.startloopAddrsCoarseOffset,B))}if(C!==0){let Q=C%32768;this.generators.push(new M(r.endloopAddrsOffset,Q));let B=Math.trunc(C/32768);B!==0&&this.generators.push(new M(r.endloopAddrsCoarseOffset,B))}}s!==o.samplePitch&&this.generators.push(new M(r.overridingRootKey,s)),this.generators.push(new M(r.sampleID,i)),this.sample=o,o.useCount++}};function Io(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(z(e.chunkData));let t=A.find(X=>X.header==="rgnh"),n=F(t.chunkData,2),s=F(t.chunkData,2),o=F(t.chunkData,2),i=F(t.chunkData,2);o===0&&i===0&&(i=127,o=0),n===0&&s===0&&(s=127,n=0);let h=new pt({min:n,max:s},{min:o,max:i});F(t.chunkData,2);let a=F(t.chunkData,2);a!==0&&h.generators.push(new M(r.exclusiveClass,a));let I=NA(A,"lart"),d=NA(A,"lar2");this.readLart(I,d,h),h.isGlobal=!1;let C=A.find(X=>X.header==="wsmp");F(C.chunkData,4);let Q=F(C.chunkData,2),B=oe(C.chunkData[C.chunkData.currentIndex++],C.chunkData[C.chunkData.currentIndex++]),f=(F(C.chunkData,4)|0)/-655360;F(C.chunkData,4);let D=F(C.chunkData,4),w,G={start:0,end:0};if(D===0)w=0;else{F(C.chunkData,4),F(C.chunkData,4)===0?w=1:w=3,G.start=F(C.chunkData,4);let iA=F(C.chunkData,4);G.end=G.start+iA}let U=A.find(X=>X.header==="wlnk");if(U===void 0)return;F(U.chunkData,2),F(U.chunkData,2),F(U.chunkData,4);let J=F(U.chunkData,4),v=this.samples[J];if(v===void 0)throw new Error("Invalid sample ID!");let P=(f||v.sampleDbAttenuation)*10/.4;return h.setWavesample(P,w,G,Q,v,J,B),h}var yt=class extends ie{sampleDbAttenuation;sampleData;constructor(A,t,n,s,o,i,h,a){super(A,t,n,s,0,1,o,i),this.sampleData=h,this.sampleDbAttenuation=a}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}return super.getRawData()}};var Eo={PCM:1,ALAW:6};function Mr(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,h=new Float32Array(i);for(let a=0;a<h.length;a++){let I=F(e.chunkData,A);o?h[a]=I/s-.5:(I>=t&&(I-=n),h[a]=I/s)}return h}function xr(e,A){let t=e.size/A,n=new Float32Array(t);for(let s=0;s<n.length;s++){let o=F(e.chunkData,A),i=o^85;i&=127;let h=i>>4,a=i&15;h>0&&(a+=16),a=(a<<4)+8,h>1&&(a=a<<h-1);let I=o>127?a:-a;n[s]=I/32678}return n}function Co(e){mA("%cLoading Wave samples...",g.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=z(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(_(t.chunkData,4),"wave");let n=[];for(;t.chunkData.currentIndex<t.chunkData.length;)n.push(z(t.chunkData));let s=n.find(v=>v.header==="fmt ");if(!s)throw new Error("No fmt chunk in the wave file!");let o=F(s.chunkData,2),i=F(s.chunkData,2);if(i!==1)throw new Error(`Only mono samples are supported. Fmt reports ${i} channels`);let h=F(s.chunkData,4);F(s.chunkData,4),F(s.chunkData,2);let I=F(s.chunkData,2)/8,d=!1,C=n.find(v=>v.header==="data");C||this.parsingError("No data chunk in the WAVE chunk!");let Q;switch(o){default:d=!0,Q=new Float32Array(C.size/I);break;case Eo.PCM:Q=Mr(C,I);break;case Eo.ALAW:Q=xr(C,I);break}let B=NA(n,"INFO"),p=`Unnamed ${A}`;if(B){let v=z(B.chunkData);for(;v.header!=="INAM"&&B.chunkData.currentIndex<B.chunkData.length;)v=z(B.chunkData);v.header==="INAM"&&(p=_(v.chunkData,v.size).trim())}let f=60,D=0,w=0,G=Q.length-1,U=0,J=n.find(v=>v.header==="wsmp");if(J){F(J.chunkData,4),f=F(J.chunkData,2),D=oe(J.chunkData[J.chunkData.currentIndex++],J.chunkData[J.chunkData.currentIndex++]);let v=Math.trunc(D/100);if(f+=v,D-=v*100,U=(F(J.chunkData,4)|0)/-655360,F(J.chunkData,4),F(J.chunkData,4)===1){F(J.chunkData,8),w=F(J.chunkData,4);let X=F(J.chunkData,4);G=w+X}}else L("No wsmp chunk in wave... using sane defaults.");d&&console.error(`Failed to load '${p}': Unsupported format: (${o})`),this.samples.push(new yt(p,h,f,D,w,G,Q,U)),A++,y(`%cLoaded sample %c${p}`,g.info,g.recognized)}O()}var ee=class extends Ie{constructor(A){super(),this.dataArray=new x(A),$A("%cParsing DLS...",g.info),this.dataArray||(O(),this.parsingError("No data provided!"));let t=z(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(_(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push(z(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 a=z(s.chunkData);this.soundFontInfo[a.header]=_(a.chunkData,a.size)}this.soundFontInfo.ICMT=this.soundFontInfo.ICMT||"(No description)",this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
|
|
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[Et.bankOffset]&&(this.bankOffset=F(this.RMIDInfo[Et.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 l=0;l<this.tracksAmount;l++){let a=[],I=this.readMIDIChunk(s);if(I.type!=="MTrk")throw O(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${I.type}"`);let d,E=0;for(this.format===2&&l>0&&(E+=this.tracks[l-1][this.tracks[l-1].length-1].ticks);I.data.currentIndex<I.size;){E+=Ct(I.data);let Q=I.data[I.data.currentIndex],B;if(d!==void 0&&Q<128)B=d;else{if(!d&&Q<128)throw O(),new SyntaxError(`Unexpected byte with no running byte. (${Q})`);B=I.data[I.data.currentIndex++]}let p=qn(B),f;switch(p){case-1:f=0;break;case-2:B=I.data[I.data.currentIndex++],f=Ct(I.data);break;case-3:f=Ct(I.data);break;default:f=Kn[B>>4],d=B;break}let D=new x(f);D.set(I.data.slice(I.data.currentIndex,I.data.currentIndex+f),0);let w=new pe(E,B,D);a.push(w),I.data.currentIndex+=f}this.tracks.push(a),y(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,g.info,g.value,g.info,g.value)}y("%cAll tracks parsed correctly!",g.recognized),this._parseInternal(),O(),y(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}%c, total seconds time: %c${this.duration}`,g.info,g.recognized,g.info,g.recognized)}readMIDIChunk(A){let t={};t.type=_(A,4),t.size=Ae(A,4),t.data=new x(t.size);let n=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(n,0),A.currentIndex+=t.size,t}};function ns(e,A){mA("%cSearching for all used programs and keys...",g.info);let t=16+e.midiPortChannelOffsets.reduce((E,Q)=>Q>E?Q:E),n=[];for(let E=0;E<t;E++){let Q=E%16===GA?128:0;n.push({program:0,bank:Q,drums:E%16===GA,string:`${Q}:0`})}function s(E){let Q=A.getPreset(E.bank,E.program);E.bank=Q.bank,E.program=Q.program,E.string=E.bank+":"+E.program,o[E.string]||(y(`%cDetected a new preset: %c${E.string}`,g.info,g.recognized),o[E.string]=new Set)}let o={},i=Array(e.tracks.length).fill(0),l=e.tracks.length;function a(){let E=0,Q=1/0;return e.tracks.forEach((B,p)=>{i[p]>=B.length||B[i[p]].ticks<Q&&(E=p,Q=B[i[p]].ticks)}),E}let I=e.midiPorts.slice(),d="gs";for(;l>0;){let E=a(),Q=e.tracks[E];if(i[E]>=Q.length){l--;continue}let B=Q[i[E]];if(i[E]++,B.messageStatusByte===G.midiPort){I[E]=B.messageData[0];continue}let p=B.messageStatusByte&240;if(p!==G.noteOn&&p!==G.controllerChange&&p!==G.programChange&&p!==G.systemExclusive)continue;let f=(B.messageStatusByte&15)+e.midiPortChannelOffsets[I[E]]||0,D=n[f];switch(p){case G.programChange:D.program=B.messageData[0],s(D);break;case G.controllerChange:if(B.messageData[0]!==m.bankSelect||d==="gs"&&D.drums)continue;let w=B.messageData[1],R=Math.max(0,w-e.bankOffset);if(d==="xg"){let T=w===120||w===126||w===127;T!==D.drums?(D.drums=T,D.bank=D.drums?128:R,s(D)):D.bank=D.drums?128:R;continue}n[f].bank=R;break;case G.noteOn:if(B.messageData[1]===0)continue;s(D),o[D.string].add(`${B.messageData[0]}-${B.messageData[1]}`);break;case G.systemExclusive:if(B.messageData[0]!==65||B.messageData[2]!==66||B.messageData[3]!==18||B.messageData[4]!==64||(B.messageData[5]&16)===0||B.messageData[6]!==21){B.messageData[0]===67&&B.messageData[2]===76&&B.messageData[5]===126&&B.messageData[6]===0&&(d="xg");continue}let Y=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][B.messageData[5]&15]+e.midiPortChannelOffsets[I[E]],J=!!(B.messageData[7]>0&&B.messageData[5]>>4);D=n[Y],D.drums=J,D.bank=J?128:0,s(D);break}}for(let E of Object.keys(o))o[E].size===0&&(y(`%cDetected change but no keys for %c${E}`,g.info,g.value),delete o[E]);return O(),o}function ss(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 os(e,A=!0){if(this.stop(),!e.tracks)throw new Error("This MIDI has no tracks!");if(this.oneTickToSeconds=60/(120*e.timeDivision),this.midiData=e,this.midiData.embeddedSoundFont!==void 0)y("%cEmbedded soundfont detected! Using it.",g.recognized),this.synth.setEmbeddedSoundFont(this.midiData.embeddedSoundFont,this.midiData.bankOffset);else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),mA("%cPreloading samples...",g.info);let t=ns(this.midiData,this.synth.soundfontManager);for(let[n,s]of Object.entries(t)){let o=parseInt(n.split(":")[0]),i=parseInt(n.split(":")[1]),l=this.synth.getPreset(o,i);y(`%cPreloading used samples on %c${l.presetName}%c...`,g.info,g.recognized,g.info);for(let a of s){let I=a.split("-");l.preloadSpecific(parseInt(I[0]),parseInt(I[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=ve(this.midiData.firstNoteOn,this.midiData),y(`%cTotal song time: ${Ot(Math.ceil(this.duration)).time}`,g.recognized),this.post(DA.songChange,[new gt(this.midiData),this.songIndex,A]),this.duration<=1&&(L(`%cVery short song: (${Ot(Math.round(this.duration)).time}). Disabling loop!`,g.warn),this.loop=!1),A)this.play(!0);else{let t=this._skipToFirstNoteOn?this.midiData.firstNoteOn-1:0;this.setTimeTicks(t),this.pause()}}function rs(e,A=!0){this.songs=e.reduce((t,n)=>{if(n.duration)return t.push(n),t;try{t.push(new lt(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.shuffleSongIndexes(),this.loadCurrentSong(A))}function is(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadCurrentSong()}function as(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadCurrentSong()}function gs(e=!0){e&&y("%cResetting all controllers!",g.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===GA?(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[uA+K.pitchWheel]===!1){let n=this.workletProcessorChannels[A].midiControllers[uA+K.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=at}function Is(){this.channelOctaveTuning.fill(0);for(let A=0;A<se.length;A++){if(this.lockedControllers[A])continue;let t=se[A];this.midiControllers[A]!==t&&A<127?A===m.portamentoControl?this.midiControllers[A]=rt:this.controllerChange(A,t>>7):this.midiControllers[A]=t}this.channelVibrato={rate:0,depth:0,delay:0},this.holdPedal=!1,this.randomPan=!1;let e=this.customControllers[sA.channelTransposeFine];this.customControllers.set(Xt),this.setCustomController(sA.channelTransposeFine,e),this.resetParameters()}var zt=new Set([m.bankSelect,m.lsbForControl0BankSelect,m.mainVolume,m.lsbForControl7MainVolume,m.pan,m.lsbForControl10Pan,m.reverbDepth,m.tremoloDepth,m.chorusDepth,m.detuneDepth,m.phaserDepth,m.soundVariation,m.filterResonance,m.releaseTime,m.attackTime,m.brightness,m.decayTime,m.vibratoRate,m.vibratoDepth,m.vibratoDelay,m.soundController10]);function Cs(){this.channelOctaveTuning.fill(0),this.pitchWheel(64,0),this.channelVibrato={rate:0,depth:0,delay:0};for(let e=0;e<128;e++){let A=se[e];!zt.has(e)&&A!==this.midiControllers[e]&&(e===m.portamentoControl?this.midiControllers[e]=rt:this.controllerChange(e,A>>7))}}function Es(){this.dataEntryState=FA.Idle,y("%cResetting Registered and Non-Registered Parameters!",g.info)}var ce=se.slice(0,128);function hs(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 a=0;a<t;a++)s.push({program:-1,bank:0,actualBank:0});let o=a=>a===m.dataDecrement||a===m.dataIncrement||a===m.dataEntryMsb||a===m.dataDecrement||a===m.lsbForControl6DataEntry||a===m.RPNLsb||a===m.RPNMsb||a===m.NRPNLsb||a===m.NRPNMsb||a===m.bankSelect||a===m.lsbForControl0BankSelect||a===m.resetAllControllers,i=[];for(let a=0;a<t;a++)i.push(Array.from(ce));function l(a){if(n[a]=8192,i?.[a]!==void 0)for(let I=0;I<ce.length;I++)zt.has(I)||(i[a][I]=ce[I])}for(;;){let a=this._findFirstEventIndex(),I=this.tracks[a][this.eventIndex[a]];if(A!==void 0){if(I.ticks>=A)break}else if(this.playedTime>=e)break;let d=Ue(I.messageStatusByte),E=d.channel+(this.midiPortChannelOffsets[this.midiPorts[a]]||0);switch(d.status){case G.noteOn:i[E]===void 0&&(i[E]=Array.from(ce)),i[E][m.portamentoControl]=I.messageData[0];break;case G.noteOff:break;case G.pitchBend:n[E]=I.messageData[1]<<7|I.messageData[0];break;case G.programChange:let B=s[E];B.program=I.messageData[0],B.actualBank=B.bank;break;case G.controllerChange:let p=I.messageData[0];if(o(p)){let f=I.messageData[1];if(p===m.bankSelect){s[E].bank=f;break}else p===m.resetAllControllers&&l(i[E]);this.sendMIDIMessages?this.sendMIDICC(E,p,f):this.synth.controllerChange(E,p,f)}else i[E]===void 0&&(i[E]=Array.from(ce)),i[E][p]=I.messageData[1];break;default:this._processEvent(I,a);break}this.eventIndex[a]++,a=this._findFirstEventIndex();let Q=this.tracks[a][this.eventIndex[a]];if(Q===void 0)return this.stop(),!1;this.playedTime+=this.oneTickToSeconds*(Q.ticks-I.ticks)}if(this.sendMIDIMessages){for(let a=0;a<t;a++)if(n[a]!==void 0&&this.sendMIDIPitchWheel(a,n[a]>>7,n[a]&127),i[a]!==void 0&&i[a].forEach((I,d)=>{I!==ce[d]&&!o(d)&&this.sendMIDICC(a,d,I)}),s[a].program>=0&&s[a].actualBank>=0){let I=s[a].actualBank;this.sendMIDICC(a,m.bankSelect,I),this.sendMIDIProgramChange(a,s[a].program)}}else for(let a=0;a<t;a++)if(n[a]!==void 0&&this.synth.pitchWheel(a,n[a]>>7,n[a]&127),i[a]!==void 0&&i[a].forEach((I,d)=>{I!==ce[d]&&!o(d)&&this.synth.controllerChange(a,d,I)}),s[a].program>=0&&s[a].actualBank>=0){let I=s[a].actualBank;this.synth.controllerChange(a,m.bankSelect,I),this.synth.programChange(a,s[a].program)}return!0}function ls(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 Bs(e){this.stop(),this.playingNotes=[],this.pausedTime=void 0,this.post(DA.timeChange,currentTime-ve(e,this.midiData));let A=this._playTo(0,e);this._recalculateStartTime(this.playedTime),A&&this.play()}function cs(e){this.absoluteStartTime=currentTime-e/this._playbackRate}function Qs(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:switch(A){case Te.forwards:this.nextSong();break;case Te.backwards:this.previousSong();break;case Te.shuffleOff:this.shuffleMode=!1,this.songIndex=this.shuffledSongIndexes[this.songIndex];break;case Te.shuffleOn:this.shuffleMode=!0,this.shuffleSongIndexes(),this.songIndex=0,this.loadCurrentSong()}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 us(e,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:RA.sequencerSpecific,messageData:{messageType:e,messageData:A}})}function ds(e){this.post(DA.midiEvent,e)}function fs(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([G.controllerChange|e,A,t])}function ms(e,A){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([G.programChange|e,A])}function ps(e,A,t){e%=16,this.sendMIDIMessages&&this.sendMIDIMessage([G.pitchBend|e,t,A])}function ys(){if(this.sendMIDIMessages){this.sendMIDIMessage([G.reset]);for(let e=0;e<it;e++)this.sendMIDIMessage([G.controllerChange|e,m.allSoundOff,0]),this.sendMIDIMessage([G.controllerChange|e,m.resetAllControllers,0])}}var hA=class{songs=[];songIndex=0;shuffledSongIndexes=[];synth;isActive=!1;sendMIDIMessages=!1;loopCount=1/0;eventIndex=[];playedTime=0;pausedTime=void 0;absoluteStartTime=currentTime;playingNotes=[];loop=!0;shuffleMode=!1;midiData=void 0;midiPorts=[];midiPortChannelOffset=0;midiPortChannelOffsets={};_skipToFirstNoteOn=!0;preservePlaybackState=!1;constructor(A){this.synth=A}_playbackRate=1;set playbackRate(A){let t=this.currentTime;this._playbackRate=A,this.currentTime=t}get currentTime(){return this.pausedTime!==void 0?this.pausedTime:(currentTime-this.absoluteStartTime)*this._playbackRate}set currentTime(A){if(A>this.duration||A<0){this._skipToFirstNoteOn?this.setTimeTicks(this.midiData.firstNoteOn-1):this.setTimeTicks(0);return}if(this._skipToFirstNoteOn&&A<this.firstNoteTime){this.setTimeTicks(this.midiData.firstNoteOn-1);return}this.stop(),this.playingNotes=[];let t=this.paused&&this.preservePlaybackState;if(this.pausedTime=void 0,this.post(DA.timeChange,currentTime-A),this.midiData.duration===0){L("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){L("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,m.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages){for(let A of this.playingNotes)this.sendMIDIMessage([G.noteOff|A.channel%16,A.midiNote]);for(let A=0;A<it;A++)this.sendMIDICC(A,m.allNotesOff,0)}}loadCurrentSong(A=!0){let t=this.songIndex;this.shuffleMode&&(t=this.shuffledSongIndexes[this.songIndex]),this.loadNewSequence(this.songs[t],A)}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}setProcessHandler(){this.isActive=!0}clearProcessHandler(){this.isActive=!1}shuffleSongIndexes(){let A=this.songs.map((t,n)=>n);for(this.shuffledSongIndexes=[];A.length>0;){let t=A[Math.floor(Math.random()*A.length)];this.shuffledSongIndexes.push(t),A.splice(A.indexOf(t),1)}}};hA.prototype.sendMIDIMessage=ds;hA.prototype.sendMIDIReset=ys;hA.prototype.sendMIDICC=fs;hA.prototype.sendMIDIProgramChange=ms;hA.prototype.sendMIDIPitchWheel=ps;hA.prototype.assignMIDIPort=ss;hA.prototype.post=us;hA.prototype.processMessage=Qs;hA.prototype._processEvent=jn;hA.prototype._addNewMidiPort=$n;hA.prototype.processTick=As;hA.prototype._findFirstEventIndex=es;hA.prototype.loadNewSequence=os;hA.prototype.loadNewSongList=rs;hA.prototype.nextSong=is;hA.prototype.previousSong=as;hA.prototype.play=ls;hA.prototype._playTo=hs;hA.prototype.setTimeTicks=Bs;hA.prototype._recalculateStartTime=cs;function mr(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 Ss(e){let A=[];for(let n of this.workletProcessorChannels)for(let s of n.voices)if(!s.finished){let o=mr(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:{},Ds=!1,ks;zA.isInitialized=new Promise(e=>ks=e);var pr=function(e){var A,t,n,s,o,i,l,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",I="",d=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=a.indexOf(e.charAt(d++)),o=a.indexOf(e.charAt(d++)),i=a.indexOf(e.charAt(d++)),l=a.indexOf(e.charAt(d++)),A=s<<2|o>>4,t=(15&o)<<4|i>>2,n=(3&i)<<6|l,I+=String.fromCharCode(A),i!==64&&(I+=String.fromCharCode(t)),l!==64&&(I+=String.fromCharCode(n));while(d<e.length);return I};(function(){var e,A,t,n,s,o,i,l,a,I,d,E,Q,B,p,f,D,w,R,Y,J,T,C=C!==void 0?C:{};C.wasmBinary=Uint8Array.from(pr("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 C=C!==void 0?C:{},P={};for(e in C)C.hasOwnProperty(e)&&(P[e]=C[e]);C.arguments=[],C.thisProgram="./this.program",C.quit=function(h,c){throw c},C.preRun=[],C.postRun=[];var X=!1,iA=!1,tA=!1,EA=!1;X=typeof window=="object",iA=typeof importScripts=="function",tA=typeof process=="object"&&typeof Hn=="function"&&!X&&!iA,EA=!X&&!tA&&!iA;var lA="";function BA(h){return C.locateFile?C.locateFile(h,lA):lA+h}tA?(lA=__dirname+"/",C.read=function(c,u){var S;return A||(A=void 0),t||(t=void 0),c=t.normalize(c),S=A.readFileSync(c),u?S:S.toString()},C.readBinary=function(c){var u=C.read(c,!0);return u.buffer||(u=new Uint8Array(u)),ne(u.buffer),u},process.argv.length>1&&(C.thisProgram=process.argv[1].replace(/\\/g,"/")),C.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(h){if(!(h instanceof Ne))throw h}),process.on("unhandledRejection",function(h,c){process.exit(1)}),C.quit=function(h){process.exit(h)},C.inspect=function(){return"[Emscripten Module object]"}):EA?(typeof read<"u"&&(C.read=function(c){return read(c)}),C.readBinary=function(c){var u;return typeof readbuffer=="function"?new Uint8Array(readbuffer(c)):(ne(typeof(u=read(c,"binary"))=="object"),u)},typeof scriptArgs<"u"?C.arguments=scriptArgs:typeof arguments<"u"&&(C.arguments=arguments),typeof quit=="function"&&(C.quit=function(h){quit(h)})):(X||iA)&&(X?document.currentScript&&(lA=document.currentScript.src):lA=self.location.href,lA=lA.indexOf("blob:")!==0?lA.split("/").slice(0,-1).join("/")+"/":"",C.read=function(c){var u=new XMLHttpRequest;return u.open("GET",c,!1),u.send(null),u.responseText},iA&&(C.readBinary=function(c){var u=new XMLHttpRequest;return u.open("GET",c,!1),u.responseType="arraybuffer",u.send(null),new Uint8Array(u.response)}),C.readAsync=function(c,u,S){var b=new XMLHttpRequest;b.open("GET",c,!0),b.responseType="arraybuffer",b.onload=function(){if(b.status==200||b.status==0&&b.response){u(b.response);return}S()},b.onerror=S,b.send(null)},C.setWindowTitle=function(h){document.title=h});var $=C.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),fA=C.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||$);for(e in P)P.hasOwnProperty(e)&&(C[e]=P[e]);function vA(h){var c=B;return B=B+h+15&-16,c}function dn(h){var c=a[Y>>2],u=c+h+15&-16;return a[Y>>2]=u,u>=yA&&!Rn()?(a[Y>>2]=c,0):c}function fn(h,c){return c||(c=16),h=Math.ceil(h/c)*c}function rr(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 c=parseInt(h.substr(1));return ne(c%8==0),c/8}}function Ge(h){Ge.shown||(Ge.shown={}),Ge.shown[h]||(Ge.shown[h]=1,fA(h))}P=void 0;var ir={"f64-rem":function(h,c){return h%c},debugger:function(){}},Mt=[];function Jr(h,c){for(var u=0,S=u;S<u+0;S++)if(!Mt[S])return Mt[S]=h,1+S;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function qr(h){Mt[h-1]=null}var xt={};function Kr(h,c){if(h){ne(c),xt[c]||(xt[c]={});var u=xt[c];return u[h]||(c.length===1?u[h]=function(){return Nt(c,h)}:c.length===2?u[h]=function(b){return Nt(c,h,[b])}:u[h]=function(){return Nt(c,h,Array.prototype.slice.call(arguments))}),u[h]}}function Pr(h,c,u){return u?+(h>>>0)+4294967296*+(c>>>0):+(h>>>0)+4294967296*+(0|c)}function Nt(h,c,u){return u&&u.length?C["dynCall_"+h].apply(null,[c].concat(u)):C["dynCall_"+h].call(null,c)}var Ze=0,mn=0;function ne(h,c){h||jA("Assertion failed: "+c)}function pn(h){var c=C["_"+h];return ne(c,"Cannot call unknown function "+h+", make sure it is exported"),c}var yn={stackSave:function(){Jt()},stackRestore:function(){Yt()},arrayToC:function(h){var c,u,S=$e(h.length);return c=h,u=S,s.set(c,u),S},stringToC:function(h){var c=0;if(h!=null&&h!==0){var u=(h.length<<2)+1;c=$e(u),kn(h,c,u)}return c}},ar={string:yn.stringToC,array:yn.arrayToC};function Sn(h,c,u,S,b){var W=pn(h),j=[],v=0;if(S)for(var SA=0;SA<S.length;SA++){var aA=ar[u[SA]];aA?(v===0&&(v=Jt()),j[SA]=aA(S[SA])):j[SA]=S[SA]}var gA,oA=W.apply(null,j);return oA=(gA=oA,c==="string"?We(gA):c==="boolean"?!!gA:gA),v!==0&&Yt(v),oA}function gr(h,c,u,S){switch((u=u||"i8").charAt(u.length-1)==="*"&&(u="i32"),u){case"i1":case"i8":s[h>>0]=c;break;case"i16":i[h>>1]=c;break;case"i32":a[h>>2]=c;break;case"i64":tempI64=[c>>>0,+lr(tempDouble=c)>=1?tempDouble>0?(0|cr(+bn(tempDouble/4294967296),4294967295))>>>0:~~+Br((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],a[h>>2]=tempI64[0],a[h+4>>2]=tempI64[1];break;case"float":d[h>>2]=c;break;case"double":E[h>>3]=c;break;default:jA("invalid type for setValue: "+u)}}function Or(h,c,u){switch((c=c||"i8").charAt(c.length-1)==="*"&&(c="i32"),c){case"i1":case"i8":return s[h>>0];case"i16":return i[h>>1];case"i32":case"i64":return a[h>>2];case"float":return d[h>>2];case"double":return E[h>>3];default:jA("invalid type for getValue: "+c)}return null}function Vr(h,c,u,S){typeof h=="number"?(W=!0,j=h):(W=!1,j=h.length);var b=typeof c=="string"?c:null;if(v=u==4?S:[typeof je=="function"?je:vA,$e,vA,dn][u===void 0?2:u](Math.max(j,b?1:c.length)),W){for(S=v,ne((3&v)==0),SA=v+(-4&j);S<SA;S+=4)a[S>>2]=0;for(SA=v+j;S<SA;)s[S++>>0]=0;return v}if(b==="i8")return h.subarray||h.slice?o.set(h,v):o.set(new Uint8Array(h),v),v;for(var W,j,v,SA,aA,gA,oA,Z=0;Z<j;){var xA=h[Z];if((aA=b||c[Z])===0){Z++;continue}aA=="i64"&&(aA="i32"),gr(v+Z,xA,aA),oA!==aA&&(gA=rr(aA),oA=aA),Z+=gA}return v}function Zr(h){return p?vt?je(h):dn(h):vA(h)}function We(h,c){if(c===0||!h)return"";for(var u,S,b,W=0,j=0;W|=S=o[h+j>>0],(S!=0||c)&&(j++,!c||j!=c););c||(c=j);var v="";if(W<128){for(;c>0;)b=String.fromCharCode.apply(String,o.subarray(h,h+Math.min(c,1024))),v=v?v+b:b,h+=1024,c-=1024;return v}return u=h,function(aA,gA){for(var oA=gA;aA[oA];)++oA;if(oA-gA>16&&aA.subarray&&Dn)return Dn.decode(aA.subarray(gA,oA));for(var Z,xA,HA,YA,JA,le,qA="";;){if(!(Z=aA[gA++]))return qA;if(!(128&Z)){qA+=String.fromCharCode(Z);continue}if(xA=63&aA[gA++],(224&Z)==192){qA+=String.fromCharCode((31&Z)<<6|xA);continue}if(HA=63&aA[gA++],(240&Z)==224?Z=(15&Z)<<12|xA<<6|HA:(YA=63&aA[gA++],(248&Z)==240?Z=(7&Z)<<18|xA<<12|HA<<6|YA:(JA=63&aA[gA++],Z=(252&Z)==248?(3&Z)<<24|xA<<18|HA<<12|YA<<6|JA:(1&Z)<<30|xA<<24|HA<<18|YA<<12|JA<<6|(le=63&aA[gA++]))),Z<65536)qA+=String.fromCharCode(Z);else{var be=Z-65536;qA+=String.fromCharCode(55296|be>>10,56320|1023&be)}}}(o,u)}function Wr(h){for(var c="";;){var u=s[h++>>0];if(!u)return c;c+=String.fromCharCode(u)}}function Xr(h,c){return function(S,b,W){for(var j=0;j<S.length;++j)s[b++>>0]=S.charCodeAt(j);W||(s[b>>0]=0)}(h,c,!1)}var Dn=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Xe(h,c,u,S){if(!(S>0))return 0;for(var b=u,W=u+S-1,j=0;j<h.length;++j){var v=h.charCodeAt(j);if(v>=55296&&v<=57343&&(v=65536+((1023&v)<<10)|1023&h.charCodeAt(++j)),v<=127){if(u>=W)break;c[u++]=v}else if(v<=2047){if(u+1>=W)break;c[u++]=192|v>>6,c[u++]=128|63&v}else if(v<=65535){if(u+2>=W)break;c[u++]=224|v>>12,c[u++]=128|v>>6&63,c[u++]=128|63&v}else if(v<=2097151){if(u+3>=W)break;c[u++]=240|v>>18,c[u++]=128|v>>12&63,c[u++]=128|v>>6&63,c[u++]=128|63&v}else if(v<=67108863){if(u+4>=W)break;c[u++]=248|v>>24,c[u++]=128|v>>18&63,c[u++]=128|v>>12&63,c[u++]=128|v>>6&63,c[u++]=128|63&v}else{if(u+5>=W)break;c[u++]=252|v>>30,c[u++]=128|v>>24&63,c[u++]=128|v>>18&63,c[u++]=128|v>>12&63,c[u++]=128|v>>6&63,c[u++]=128|63&v}}return c[u]=0,u-b}function kn(h,c,u){return Xe(h,o,c,u)}function _e(h){for(var c=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?++c:S<=2047?c+=2:S<=65535?c+=3:S<=2097151?c+=4:S<=67108863?c+=5:c+=6}return c}var wn=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function _r(h){for(var c=h,u=c>>1;i[u];)++u;if((c=u<<1)-h>32&&wn)return wn.decode(o.subarray(h,c));for(var S=0,b="";;){var W=i[h+2*S>>1];if(W==0)return b;++S,b+=String.fromCharCode(W)}}function zr(h,c,u){if(u===void 0&&(u=2147483647),u<2)return 0;for(var S=c,b=(u-=2)<2*h.length?u/2:h.length,W=0;W<b;++W){var j=h.charCodeAt(W);i[c>>1]=j,c+=2}return i[c>>1]=0,c-S}function jr(h){return 2*h.length}function $r(h){for(var c=0,u="";;){var S=a[h+4*c>>2];if(S==0)return u;if(++c,S>=65536){var b=S-65536;u+=String.fromCharCode(55296|b>>10,56320|1023&b)}else u+=String.fromCharCode(S)}}function Ai(h,c,u){if(u===void 0&&(u=2147483647),u<4)return 0;for(var S=c,b=S+u-4,W=0;W<h.length;++W){var j=h.charCodeAt(W);if(j>=55296&&j<=57343&&(j=65536+((1023&j)<<10)|1023&h.charCodeAt(++W)),a[c>>2]=j,(c+=4)+4>b)break}return a[c>>2]=0,c-S}function ei(h){for(var c=0,u=0;u<h.length;++u){var S=h.charCodeAt(u);S>=55296&&S<=57343&&++u,c+=4}return c}function ti(h){var c=_e(h)+1,u=je(c);return u&&Xe(h,s,u,c),u}function ni(h){var c=_e(h)+1,u=$e(c);return Xe(h,s,u,c),u}function si(h){return h}function oi(){var h,c=function(){var S=Error();if(!S.stack){try{throw Error(0)}catch(b){S=b}if(!S.stack)return"(no stack trace available)"}return S.stack.toString()}();return C.extraStackTrace&&(c+=`
|
|
14
|
+
`+C.extraStackTrace()),(h=c).replace(/__Z[\w\d_]+/g,function(u){var S,b=S=u;return u===b?u:u+" ["+b+"]"})}function bt(h,c){return h%c>0&&(h+=c-h%c),h}function Fn(h){C.buffer=n=h}function Lt(){C.HEAP8=s=new Int8Array(n),C.HEAP16=i=new Int16Array(n),C.HEAP32=a=new Int32Array(n),C.HEAPU8=o=new Uint8Array(n),C.HEAPU16=l=new Uint16Array(n),C.HEAPU32=I=new Uint32Array(n),C.HEAPF32=d=new Float32Array(n),C.HEAPF64=E=new Float64Array(n)}function Rn(){var h=C.usingWasm?65536:16777216,c=2147483648-h;if(a[Y>>2]>c)return!1;var u=yA;for(yA=Math.max(yA,16777216);yA<a[Y>>2];)yA=yA<=536870912?bt(2*yA,h):Math.min(bt((3*yA+2147483648)/4,h),c);var S=C.reallocBuffer(yA);return S&&S.byteLength==yA?(Fn(S),Lt(),!0):(yA=u,!1)}Q=B=f=D=w=R=Y=0,p=!1,C.reallocBuffer||(C.reallocBuffer=function(h){try{if(ArrayBuffer.transfer)c=ArrayBuffer.transfer(n,h);else{var c,u=s;c=new ArrayBuffer(h),new Int8Array(c).set(u)}}catch{return!1}return!!Qr(c)&&c});try{(J=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{J=function(c){return c.byteLength}}var Ut=C.TOTAL_STACK||5242880,yA=C.TOTAL_MEMORY||16777216;function Ir(){return yA}function Me(h){for(;h.length>0;){var c=h.shift();if(typeof c=="function"){c();continue}var u=c.func;typeof u=="number"?c.arg===void 0?C.dynCall_v(u):C.dynCall_vi(u,c.arg):u(c.arg===void 0?null:c.arg)}}yA<Ut&&fA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+yA+"! (TOTAL_STACK="+Ut+")"),C.buffer?n=C.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(C.wasmMemory=new WebAssembly.Memory({initial:yA/65536}),n=C.wasmMemory.buffer):n=new ArrayBuffer(yA),C.buffer=n),Lt();var Gn=[],Tt=[],Mn=[],xn=[],Nn=[],vt=!1,Cr=!1;function Er(h){Gn.unshift(h)}function ri(h){Tt.unshift(h)}function ii(h){Mn.unshift(h)}function ai(h){xn.unshift(h)}function hr(h){Nn.unshift(h)}function gi(h,c,u){var S,b;Ge("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),u&&(S=s[b=c+_e(h)]),kn(h,c,1/0),u&&(s[b]=S)}function Ii(h,c,u){return h>=0?h:c<=32?2*Math.abs(1<<c-1)+h:Math.pow(2,c)+h}function Ci(h,c,u){if(h<=0)return h;var S=c<=32?Math.abs(1<<c-1):Math.pow(2,c-1);return h>=S&&(c<=32||h>S)&&(h=-2*S+h),h}var lr=Math.abs,Br=Math.ceil,bn=Math.floor,cr=Math.min,he=0,Ht=null,xe=null;function Ei(h){return h}C.preloadedImages={},C.preloadedAudios={};var Ln="data:application/octet-stream;base64,";function ze(h){return String.prototype.startsWith?h.startsWith(Ln):h.indexOf(Ln)===0}(function(){var c="main.wast",u="main.wasm",S="main.temp.asm.js";ze(c)||(c=BA(c)),ze(u)||(u=BA(u)),ze(S)||(S=BA(S));var b={global:null,env:null,asm2wasm:ir,parent:C},W=null;function j(oA){return oA}function v(){try{if(C.wasmBinary)return new Uint8Array(C.wasmBinary);if(C.readBinary)return C.readBinary(u);throw"both async and sync fetching of the wasm failed"}catch(oA){jA(oA)}}C.asmPreload=C.asm;var SA=C.reallocBuffer,aA=function(oA){oA=bt(oA,C.usingWasm?65536:16777216);var Z=C.buffer.byteLength;if(C.usingWasm)try{var xA=C.wasmMemory.grow((oA-Z)/65536);return xA!==-1?C.buffer=C.wasmMemory.buffer:null}catch{return null}};C.reallocBuffer=function(oA){return gA==="asmjs"?SA(oA):aA(oA)};var gA="";C.asm=function(oA,Z,xA){var HA;if(!(Z=HA=Z).table){var YA,JA=C.wasmTableSize;JA===void 0&&(JA=1024);var le=C.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?le!==void 0?Z.table=new WebAssembly.Table({initial:JA,maximum:le,element:"anyfunc"}):Z.table=new WebAssembly.Table({initial:JA,element:"anyfunc"}):Z.table=Array(JA),C.wasmTable=Z.table}return Z.memoryBase||(Z.memoryBase=C.STATIC_BASE),Z.tableBase||(Z.tableBase=0),YA=function(be,fe,Kt){if(typeof WebAssembly!="object")return fA("no native wasm support detected"),!1;if(!(C.wasmMemory instanceof WebAssembly.Memory))return fA("no native wasm Memory in use"),!1;function At(XA,_A){if((W=XA.exports).memory){var Le,Pt,vn;Le=W.memory,Pt=C.buffer,Le.byteLength<Pt.byteLength&&fA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),vn=new Int8Array(Pt),new Int8Array(Le).set(vn),Fn(Le),Lt()}C.asm=W,C.usingWasm=!0,function(di){if(he--,C.monitorRunDependencies&&C.monitorRunDependencies(he),he==0&&(Ht!==null&&(clearInterval(Ht),Ht=null),xe)){var ur=xe;xe=null,ur()}}("wasm-instantiate")}if(fe.memory=C.wasmMemory,b.global={NaN:NaN,Infinity:1/0},b["global.Math"]=Math,b.env=fe,he++,C.monitorRunDependencies&&C.monitorRunDependencies(he),C.instantiateWasm)try{return C.instantiateWasm(b,At)}catch(XA){return fA("Module.instantiateWasm callback failed with error: "+XA),!1}function me(XA){At(XA.instance,XA.module)}function Tn(XA){(!C.wasmBinary&&(X||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 v()}):new Promise(function(_A,Le){_A(v())})).then(function(_A){return WebAssembly.instantiate(_A,b)}).then(XA).catch(function(_A){fA("failed to asynchronously prepare wasm: "+_A),jA(_A)})}return C.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||ze(u)||typeof fetch!="function"?Tn(me):WebAssembly.instantiateStreaming(fetch(u,{credentials:"same-origin"}),b).then(me).catch(function(XA){fA("wasm streaming compile failed: "+XA),fA("falling back to ArrayBuffer instantiation"),Tn(me)}),{}}(oA,Z,xA),ne(YA,"no binaryen method succeeded."),YA},C.asm})(),B=(Q=1024)+4816,Tt.push(),C.STATIC_BASE=Q,C.STATIC_BUMP=4816;var bA=B;function hi(h){s[bA]=s[h],s[bA+1]=s[h+1],s[bA+2]=s[h+2],s[bA+3]=s[h+3]}function li(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 Bi(h,c,u){var S=u>0?u:_e(h)+1,b=Array(S),W=Xe(h,b,0,b.length);return c&&(b.length=W),b}function ci(h){for(var c=[],u=0;u<h.length;u++){var S=h[u];S>255&&(S&=255),c.push(String.fromCharCode(S))}return c.join("")}B+=16,Y=vA(4),w=(f=D=fn(B))+Ut,R=fn(w),a[Y>>2]=R,p=!0,C.wasmTableSize=4,C.wasmMaxTableSize=4,C.asmGlobalArg={},C.asmLibraryArg={abort:jA,assert:ne,enlargeMemory:Rn,getTotalMemory:Ir,abortOnCannotGrowMemory:function(){jA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+yA+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iii:function(c,u,S){var b=Jt();try{return C.dynCall_iii(c,u,S)}catch(W){if(Yt(b),typeof W!="number"&&W!=="longjmp")throw W;C.setThrew(1,0)}},___assert_fail:function(c,u,S,b){jA("Assertion failed: "+We(c)+", at: "+[u?We(u):"unknown filename",S,b?We(b):"unknown function"])},___setErrNo:function(c){return C.___errno_location&&(a[C.___errno_location()>>2]=c),c},_abort:function(){C.abort()},_emscripten_memcpy_big:function(c,u,S){return o.set(o.subarray(u,u+S),c),c},_llvm_floor_f64:bn,DYNAMICTOP_PTR:Y,tempDoublePtr:bA,ABORT:Ze,STACKTOP:D,STACK_MAX:w};var Un=C.asm(C.asmGlobalArg,C.asmLibraryArg,n);C.asm=Un,C.___errno_location=function(){return C.asm.___errno_location.apply(null,arguments)};var Qr=C._emscripten_replace_memory=function(){return C.asm._emscripten_replace_memory.apply(null,arguments)};C._free=function(){return C.asm._free.apply(null,arguments)};var je=C._malloc=function(){return C.asm._malloc.apply(null,arguments)};C._memcpy=function(){return C.asm._memcpy.apply(null,arguments)},C._memset=function(){return C.asm._memset.apply(null,arguments)},C._sbrk=function(){return C.asm._sbrk.apply(null,arguments)},C._stb_vorbis_js_channels=function(){return C.asm._stb_vorbis_js_channels.apply(null,arguments)},C._stb_vorbis_js_close=function(){return C.asm._stb_vorbis_js_close.apply(null,arguments)},C._stb_vorbis_js_decode=function(){return C.asm._stb_vorbis_js_decode.apply(null,arguments)},C._stb_vorbis_js_open=function(){return C.asm._stb_vorbis_js_open.apply(null,arguments)},C._stb_vorbis_js_sample_rate=function(){return C.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},C.establishStackSpace=function(){return C.asm.establishStackSpace.apply(null,arguments)},C.getTempRet0=function(){return C.asm.getTempRet0.apply(null,arguments)},C.runPostSets=function(){return C.asm.runPostSets.apply(null,arguments)},C.setTempRet0=function(){return C.asm.setTempRet0.apply(null,arguments)},C.setThrew=function(){return C.asm.setThrew.apply(null,arguments)};var $e=C.stackAlloc=function(){return C.asm.stackAlloc.apply(null,arguments)},Yt=C.stackRestore=function(){return C.asm.stackRestore.apply(null,arguments)},Jt=C.stackSave=function(){return C.asm.stackSave.apply(null,arguments)};function Ne(h){this.name="ExitStatus",this.message="Program terminated with exit("+h+")",this.status=h}function qt(h){h=h||C.arguments,!(he>0)&&(function(){if(C.preRun)for(typeof C.preRun=="function"&&(C.preRun=[C.preRun]);C.preRun.length;)Er(C.preRun.shift());Me(Gn)}(),!(he>0)&&(C.calledRun||(C.setStatus?(C.setStatus("Running..."),setTimeout(function(){setTimeout(function(){C.setStatus("")},1),c()},1)):c())));function c(){!C.calledRun&&(C.calledRun=!0,Ze||(vt||(vt=!0,Me(Tt)),Me(Mn),C.onRuntimeInitialized&&C.onRuntimeInitialized(),function(){if(C.postRun)for(typeof C.postRun=="function"&&(C.postRun=[C.postRun]);C.postRun.length;)hr(C.postRun.shift());Me(Nn)}()))}}function Qi(h,c){(!c||!C.noExitRuntime||h!==0)&&(C.noExitRuntime||(Ze=!0,mn=h,D=T,Me(xn),Cr=!0,C.onExit&&C.onExit(h)),C.quit(h,new Ne(h)))}function jA(h){throw C.onAbort&&C.onAbort(h),h!==void 0?($(h),fA(h),h=JSON.stringify(h)):h="",Ze=!0,mn=1,"abort("+h+"). Build with -s ASSERTIONS=1 for more info."}if(C.dynCall_iii=function(){return C.asm.dynCall_iii.apply(null,arguments)},C.asm=Un,C.ccall=Sn,C.cwrap=function(c,u,S,b){var W=(S=S||[]).every(function(j){return j==="number"});return u!=="string"&&W&&!b?pn(c):function(){return Sn(c,u,S,arguments,b)}},Ne.prototype=Error(),Ne.prototype.constructor=Ne,xe=function h(){C.calledRun||qt(),C.calledRun||(xe=h)},C.run=qt,C.abort=jA,C.preInit)for(typeof C.preInit=="function"&&(C.preInit=[C.preInit]);C.preInit.length>0;)C.preInit.pop()();C.noExitRuntime=!0,qt(),C.onRuntimeInitialized=()=>{Ds=!0,ks()},zA.decode=function(h){return function(u){if(!Ds)throw Error("Not initialized");var S={};function b(fe){return new Int32Array(C.HEAPU8.buffer,fe,1)[0]}function W(fe,Kt){var At=new ArrayBuffer(Kt*Float32Array.BYTES_PER_ELEMENT),me=new Float32Array(At);return me.set(new Float32Array(C.HEAPU8.buffer,fe,Kt)),me}S.open=C.cwrap("stb_vorbis_js_open","number",[]),S.close=C.cwrap("stb_vorbis_js_close","void",["number"]),S.channels=C.cwrap("stb_vorbis_js_channels","number",["number"]),S.sampleRate=C.cwrap("stb_vorbis_js_sample_rate","number",["number"]),S.decode=C.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var j,v,SA,aA,gA=S.open(),oA=(j=u,v=u.byteLength,SA=C._malloc(v),(aA=new Uint8Array(C.HEAPU8.buffer,SA,v)).set(new Uint8Array(j,0,v)),aA),Z=C._malloc(4),xA=C._malloc(4),HA=S.decode(gA,oA.byteOffset,oA.byteLength,Z,xA);if(C._free(oA.byteOffset),HA<0)throw S.close(gA),C._free(Z),Error("stbvorbis decode failed: "+HA);for(var YA=S.channels(gA),JA=Array(YA),le=new Int32Array(C.HEAPU32.buffer,b(Z),YA),qA=0;qA<YA;qA++)JA[qA]=W(le[qA],HA),C._free(le[qA]);var be=S.sampleRate(gA);return S.close(gA),C._free(b(Z)),C._free(Z),{data:JA,sampleRate:be,eof:!0,error:null}}(h)}})();var jt=new Float32Array(30001);for(let e=0;e<jt.length;e++){let A=-15e3+e;jt[e]=Math.pow(2,A/1200)}function OA(e){return e<=-32767?0:jt[e- -15e3]}var Bt=-2e4,ws=16500,$t=new Float32Array(ws-Bt+1);for(let e=0;e<$t.length;e++){let A=Bt+e;$t[e]=440*Math.pow(2,(A-6900)/1200)}function He(e){return e<Bt||e>ws?440*Math.pow(2,(e-6900)/1200):$t[~~e-Bt]}var en=-1660,yr=1600,An=new Float32Array((yr-en)*100+1);for(let e=0;e<An.length;e++){let A=(en*100+e)/100;An[e]=Math.pow(10,-A/20)}function PA(e){return An[Math.floor((e-en)*100)]}var Fs=.01,TA=100,tn=90,Sr=15e-6,VA=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>=tn}static startRelease(A){A.volumeEnvelope.releaseStartTimeSamples=A.volumeEnvelope.currentSampleTime,A.volumeEnvelope.currentReleaseGain=PA(A.volumeEnvelope.currentAttenuationDb),e.recalculate(A)}static recalculate(A){let t=A.volumeEnvelope,n=I=>Math.max(0,Math.floor(OA(I)*t.sampleRate));t.attenuationTarget=Math.max(0,Math.min(A.modulatedGenerators[r.initialAttenuation],1440))/10,t.attenuationTargetGain=PA(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],l=s/TA;t.decayDuration=n(o+i)*l,t.releaseDuration=n(A.modulatedGenerators[r.releaseVolEnv]),t.delayEnd=n(A.modulatedGenerators[r.delayVolEnv]),t.attackEnd=t.attackDuration+t.delayEnd;let a=(60-A.targetKey)*A.modulatedGenerators[r.keyNumToVolEnvHold];if(t.holdEnd=n(A.modulatedGenerators[r.holdVolEnv]+a)+t.attackEnd,t.decayEnd=t.decayDuration+t.holdEnd,t.state===0&&t.attackEnd===0&&(t.state=2),A.isInRelease){let I=Math.max(0,Math.min(TA,t.sustainDbRelative)),d=I/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)*I;break;case 4:t.releaseStartDb=I;break}t.releaseStartDb=Math.max(0,Math.min(t.releaseStartDb,TA)),t.releaseStartDb>=tn&&(A.finished=!0),t.currentReleaseGain=PA(t.releaseStartDb);let E=(TA-t.releaseStartDb)/TA;t.releaseDuration*=E}}static apply(A,t,n,s){let o=A.volumeEnvelope,i=n/10,l=s;if(A.isInRelease){let I=o.currentSampleTime-o.releaseStartTimeSamples;if(I>=o.releaseDuration){for(let E=0;E<t.length;E++)t[E]=0;A.finished=!0;return}let d=TA-o.releaseStartDb;for(let E=0;E<t.length;E++){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*l;let Q=I/o.releaseDuration*d+o.releaseStartDb;o.currentReleaseGain=o.attenuation*PA(Q+i),t[E]*=o.currentReleaseGain,o.currentSampleTime++,I++}o.currentReleaseGain<=Sr&&(A.finished=!0);return}let a=0;switch(o.state){case 0:for(;o.currentSampleTime<o.delayEnd;)if(o.currentAttenuationDb=TA,t[a]=0,o.currentSampleTime++,++a>=t.length)return;o.state++;case 1:for(;o.currentSampleTime<o.attackEnd;){o.attenuation+=(o.attenuationTargetGain-o.attenuation)*l;let I=1-(o.attackEnd-o.currentSampleTime)/o.attackDuration;if(t[a]*=I*o.attenuation*PA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++a>=t.length)return}o.state++;case 2:for(;o.currentSampleTime<o.holdEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*l,t[a]*=o.attenuation*PA(i),o.currentAttenuationDb=0,o.currentSampleTime++,++a>=t.length)return;o.state++;case 3:for(;o.currentSampleTime<o.decayEnd;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*l,o.currentAttenuationDb=(1-(o.decayEnd-o.currentSampleTime)/o.decayDuration)*o.sustainDbRelative,t[a]*=o.attenuation*PA(o.currentAttenuationDb+i),o.currentSampleTime++,++a>=t.length)return;o.state++;case 4:for(o.canEndOnSilentSustain&&o.sustainDbRelative>=tn&&(A.finished=!0);;)if(o.attenuation+=(o.attenuationTargetGain-o.attenuation)*l,t[a]*=o.attenuation*PA(o.sustainDbRelative+i),o.currentAttenuationDb=o.sustainDbRelative,o.currentSampleTime++,++a>=t.length)return}}};function Rs(e){let A=e.messageData,t=e.channelNumber,n;if(t>=0&&(n=this.workletProcessorChannels[t],n===void 0)){L(`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.setCustomController(A[0],A[1]),n.updateChannelTuning();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++){let l=this.workletProcessorChannels[i];A.rate===-1?l.disableAndLockGSNRPN():l.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 ye.masterPan:this.setMasterPan(o);break;case ye.mainVolume:this.setMasterGain(o);break;case ye.voicesCap:this.voiceCap=o;break;case ye.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:Zn(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:L("Unrecognized event:",A);break}}function Gs(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=>({voicesAmount:A.voices.length,pitchBend:A.midiControllers[uA+K.pitchWheel],pitchBendRangeSemitones:A.midiControllers[uA+K.pitchWheelRange]/128,isMuted:A.isMuted,isDrum:A.drumChannel,transposition:A.channelTransposeKeyShift+A.customControllers[sA.channelTransposeFine]/100}));this.post({messageType:RA.channelProperties,messageData:e})}function Dr(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 nn={SoundCanvasText:0,XGText:1,SoundCanvasDotDisplay:2};function xs(e,A=0){let t=e[0];if(!(this.deviceID!==LA&&e[1]!==127&&this.deviceID!==e[1]))switch(t){default:L(`%cUnrecognized SysEx: %c${wA(e)}`,g.warn,g.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),y(`%cMaster Volume. Volume: %c${o}`,g.info,g.value);break;case 2:let l=((e[5]<<7|e[4])-8192)/8192;this.setMasterPan(l),y(`%cMaster Pan. Pan: %c${l}`,g.info,g.value);break;case 3:let a=(e[5]<<7|e[6])-8192;s=Math.floor(a/81.92),this.setMasterTuning(s),y(`%cMaster Fine Tuning. Cents: %c${s}`,g.info,g.value);break;case 4:s=(e[5]-64)*100,this.setMasterTuning(s),y(`%cMaster Coarse Tuning. Cents: %c${s}`,g.info,g.value);break;default:L(`%cUnrecognized MIDI Device Control Real-time message: %c${wA(e)}`,g.warn,g.unrecognized)}break;case 9:e[3]===1?(y("%cGM system on",g.info),this.system="gm"):e[3]===3?(y("%cGM2 system on",g.info),this.system="gm2"):(y("%cGM system off, defaulting to GS",g.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++],l=e[o++];for(let I=0;I<l;I++)this.tunings[i][e[o++]]=Dr(e[o++],e[o++],e[o++]);y(`%cSingle Note Tuning. Program: %c${i}%c Keys affected: %c${l}`,g.info,g.recognized,g.info,g.recognized);break;case 9:case 8:let a=new Int8Array(12);if(e[3]===8)for(let I=0;I<12;I++)a[I]=e[7+I]-64;else for(let I=0;I<24;I+=2){let d=(e[7+I]<<7|e[8+I])-8192;a[I/2]=Math.floor(d/81.92)}(e[4]&1)===1&&this.workletProcessorChannels[14+A].setOctaveTuning(a),(e[4]>>1&1)===1&&this.workletProcessorChannels[15+A].setOctaveTuning(a);for(let I=0;I<7;I++)(e[5]>>I&1)===1&&this.workletProcessorChannels[7+I+A].setOctaveTuning(a);for(let I=0;I<7;I++)(e[6]>>I&1)===1&&this.workletProcessorChannels[I+A].setOctaveTuning(a);y(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${a.join(" ")}`,g.info,g.value);break;default:L(`%cUnrecognized MIDI Tuning standard message: %c${wA(e)}`,g.warn,g.unrecognized);break}break;default:L(`%cUnrecognized MIDI Realtime/non realtime message: %c${wA(e)}`,g.warn,g.unrecognized)}break;case 65:let n=function(){L(`%cUnrecognized Roland %cGS %cSysEx: %c${wA(e)}`,g.warn,g.recognized,g.warn,g.unrecognized)};if(e[2]===66&&e[3]===18){let s=e[7];if(e[6]===127){s===0?(y("%cGS Reset received!",g.info),this.resetAllControllers(!1),this.system="gs"):s===127&&(y("%cGS system off, switching to GM2",g.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 l=s>0&&e[5]>>4;i.setDrums(l),y(`%cChannel %c${o}%c ${l?"is now a drum channel":"now isn't a drum channel"}%c via: %c${wA(e)}`,g.info,g.value,g.recognized,g.info,g.value);return;case 22:let a=s-64;i.transposeChannel(a),y(`%cChannel %c${o}%c pitch shift. Semitones %c${a}%c, with %c${wA(e)}`,g.info,g.recognized,g.info,g.value,g.info,g.value);return;case 28:let I=s;I===0?(i.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${o}`,g.info,g.recognized,g.info,g.value)):(i.randomPan=!1,i.controllerChange(m.pan,I));break;case 33:i.controllerChange(m.chorusDepth,s);break;case 34:i.controllerChange(m.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,E=new Int8Array(12);for(let B=0;B<d;B++)E[B]=e[B+7]-64;i.setOctaveTuning(E);let Q=s-64;y(`%cChannel %c${o}%c octave scale tuning. Cents %c${E.join(" ")}%c, with %c${wA(e)}`,g.info,g.recognized,g.info,g.value,g.info,g.value),i.setTuning(Q);break}return}else if(e[5]===0&&e[6]===6){y(`%cRoland GS Master Pan set to: %c${s}%c with: %c${wA(e)}`,g.info,g.value,g.info,g.value),this.setMasterPan((s-64)/64);return}else if(e[5]===0&&e[6]===5){let o=s-64;y(`%cRoland GS Master Key-Shift set to: %c${o}%c with: %c${wA(e)}`,g.info,g.value,g.info,g.value),this.setMasterTuning(o*100);return}else if(e[5]===0&&e[6]===4){y(`%cRoland GS Master Volume set to: %c${s}%c with: %c${wA(e)}`,g.info,g.value,g.info,g.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:nn.SoundCanvasText})}else if(e[5]===1){let s=new Uint8Array(e.slice(7,e.length-3));this.callEvent("synthdisplay",{displayData:s,displayType:nn.SoundCanvasDotDisplay}),y(`%cRoland SC Display Dot Matrix via: %c${wA(e)}`,g.info,g.value)}else n()}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),y(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${wA(e)}`,g.info,g.value,g.info,g.value);return}else{L(`%cUnrecognized Roland SysEx: %c${wA(e)}`,g.warn,g.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),y(`%cXG master volume. Volume: %c${s}`,g.info,g.recognized);break;case 6:let o=e[6]-64;this.transposeAllChannels(o),y(`%cXG master transpose. Volume: %c${o}`,g.info,g.recognized);break;case 126:y("%cXG system on",g.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(m.bankSelect,i);break;case 2:o.controllerChange(m.lsbForControl0BankSelect,i);break;case 3:o.programChange(i);break;case 8:if(o.drumChannel)return;let l=i-64;o.channelTransposeKeyShift=l;break;case 11:o.controllerChange(m.mainVolume,i);break;case 14:let a=i;a===0?(o.randomPan=!0,y(`%cRandom pan is set to %cON%c for %c${s}`,g.info,g.recognized,g.info,g.value)):o.controllerChange(m.pan,a);break;case 19:o.controllerChange(m.reverbDepth,i);break;case 18:o.controllerChange(m.chorusDepth,i);break;default:L(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,g.warn,g.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:nn.XGText})}else this.system==="xg"&&L(`%cUnrecognized Yamaha XG SysEx: %c${wA(e)}`,g.warn,g.unrecognized);else this.system==="xg"&&L(`%cUnrecognized Yamaha SysEx: %c${wA(e)}`,g.warn,g.unrecognized);break}}function Ns(e){this.midiVolume=e,this.setMasterPan(this.pan)}function bs(e){this.masterGain=e*sn,this.setMasterPan(this.pan)}function Ls(e){this.pan=e,e=e/2+.5,this.panLeft=1-e,this.panRight=e}function Us(){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 x(e),t=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.generatorZoneStartIndex=t;for(let o of s.generators)N(A,o.generatorType),N(A,o.generatorValue),t++}return V(A,0),rA(new nA("igen",A.length,A))}function Ts(e,A,t,n,s){let o=this.samples.map((I,d)=>{t&&I.compressSample(n,s);let E=I.getRawData();return y(`%cEncoded sample %c${d}. ${I.sampleName}%c of %c${this.samples.length}%c. Compressed: %c${I.isCompressed}%c.`,g.info,g.recognized,g.info,g.recognized,g.info,I.isCompressed?g.recognized:g.unrecognized,g.info),E}),i=this.samples.reduce((I,d,E)=>I+o[E].length+46,0),l=new x(i);this.samples.forEach((I,d)=>{let E=o[d],Q,B,p=E.length;I.isCompressed?(Q=l.currentIndex,B=Q+E.length):(Q=l.currentIndex/2,B=Q+E.length/2,p+=46),e.push(Q),l.set(E,l.currentIndex),l.currentIndex+=p,A.push(B)});let a=rA(new nA("smpl",l.length,l),new x([115,100,116,97]));return rA(new nA("LIST",a.length,a))}function vs(e,A){let n=new x(46*(this.samples.length+1));return this.samples.forEach((s,o)=>{kA(n,s.sampleName,20);let i=e[o];V(n,i);let l=A[o];V(n,l);let a=s.sampleLoopStartIndex+i,I=s.sampleLoopEndIndex+i;s.isCompressed&&(a-=i,I-=i),V(n,a),V(n,I),V(n,s.sampleRate),n[n.currentIndex++]=s.samplePitch,n[n.currentIndex++]=s.samplePitchCorrection,N(n,s.sampleLink),N(n,s.sampleType)}),kA(n,"EOS",46),rA(new nA("shdr",n.length,n))}function Hs(){let e=10;for(let n of this.instruments)e+=n.instrumentZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new x(e),t=0;for(let n of this.instruments)for(let s of n.instrumentZones){s.modulatorZoneStartIndex=t;for(let o of s.modulators)N(A,o.sourceEnum),N(A,o.modulatorDestination),N(A,o.transformAmount),N(A,o.secondarySourceEnum),N(A,o.transformType),t++}return ke(A,0,10),rA(new nA("imod",A.length,A))}function Ys(){let e=this.instruments.reduce((o,i)=>i.instrumentZones.length*4+o,4),A=new x(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,N(A,n),N(A,s),n+=i.generators.length,s+=i.modulators.length,t++}return N(A,n),N(A,s),rA(new nA("ibag",A.length,A))}function Js(){let e=this.instruments.length*22+22,A=new x(e),t=0,n=0;for(let s of this.instruments)kA(A,s.instrumentName,20),N(A,t),t+=s.instrumentZones.length,s.instrumentID=n,n++;return kA(A,"EOI",20),N(A,t),rA(new nA("inst",A.length,A))}function qs(){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 x(e),t=0;for(let n of this.presets)for(let s of n.presetZones){s.generatorZoneStartIndex=t;for(let o of s.generators)N(A,o.generatorType),N(A,o.generatorValue);t+=s.generators.length}return N(A,0),N(A,0),rA(new nA("pgen",A.length,A))}function Ks(){let e=10;for(let n of this.presets)e+=n.presetZones.reduce((s,o)=>o.modulators.length*10+s,0);let A=new x(e),t=0;for(let n of this.presets)for(let s of n.presetZones){s.modulatorZoneStartIndex=t;for(let o of s.modulators)N(A,o.sourceEnum),N(A,o.modulatorDestination),N(A,o.transformAmount),N(A,o.secondarySourceEnum),N(A,o.transformType),t++}return ke(A,0,10),rA(new nA("pmod",A.length,A))}function Ps(){let e=this.presets.reduce((o,i)=>i.presetZones.length*4+o,4),A=new x(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,N(A,n),N(A,s),n+=i.generators.length,s+=i.modulators.length,t++}return N(A,n),N(A,s),rA(new nA("pbag",A.length,A))}function Os(){let e=this.presets.length*38+38,A=new x(e),t=0;for(let n of this.presets)kA(A,n.presetName,20),N(A,n.program),N(A,n.bank),N(A,t),V(A,n.library),V(A,n.genre),V(A,n.morphology),t+=n.presetZones.length;return kA(A,"EOP",20),N(A,0),N(A,0),N(A,t),V(A,0),V(A,0),V(A,0),rA(new nA("phdr",A.length,A))}var kr={compress:!1,compressionQuality:.5,compressionFunction:void 0};function Vs(e=kr){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");mA("%cSaving soundfont...",g.info),y(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,g.info,g.recognized,g.info,g.recognized),y("%cWriting INFO...",g.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0");for(let[J,T]of Object.entries(this.soundFontInfo))if(J==="ifil"||J==="iver"){let C=parseInt(T.split(".")[0]),P=parseInt(T.split(".")[1]),X=new x(4);N(X,C),N(X,P),A.push(rA(new nA(J,4,X)))}else if(J==="DMOD")A.push(rA(new nA(J,T.length,T)));else{let C=new x(T.length);kA(C,T),A.push(rA(new nA(J,T.length,C)))}let t=cA([new x([73,78,70,79]),...A]),n=rA(new nA("LIST",t.length,t));y("%cWriting SDTA...",g.info);let s=[],o=[],i=Ts.call(this,s,o,e?.compress,e?.compressionQuality??.5,e.compressionFunction);y("%cWriting PDTA...",g.info),y("%cWriting SHDR...",g.info);let l=vs.call(this,s,o);y("%cWriting IGEN...",g.info);let a=Us.call(this);y("%cWriting IMOD...",g.info);let I=Hs.call(this);y("%cWriting IBAG...",g.info);let d=Ys.call(this);y("%cWriting INST...",g.info);let E=Js.call(this),Q=qs.call(this);y("%cWriting PMOD...",g.info);let B=Ks.call(this);y("%cWriting PBAG...",g.info);let p=Ps.call(this);y("%cWriting PHDR...",g.info);let f=Os.call(this),D=cA([new x([112,100,116,97]),f,p,B,Q,E,d,I,a,l]),w=rA(new nA("LIST",D.length,D));y("%cWriting the output file...",g.info);let R=cA([new x([115,102,98,107]),n,i,w]),Y=rA(new nA("RIFF",R.length,R));return y(`%cSaved succesfully! Final file size: %c${Y.length}`,g.info,g.recognized),O(),Y}var Ye=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 MA=class extends Ye{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},re=class extends Ye{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var wr=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 Zs(e,A=!0){function t(E,Q){E.push(...Q.filter(B=>!E.find(p=>p.generatorType===B.generatorType)))}function n(E,Q){return{min:Math.max(E.min,Q.min),max:Math.min(E.max,Q.max)}}function s(E,Q){E.push(...Q.filter(B=>!E.find(p=>q.isIdentical(B,p))))}let o=[],i=[],l=[],a={min:0,max:127},I={min:0,max:127},d=e.presetZones.find(E=>E.isGlobal);d&&(i.push(...d.generators),l.push(...d.modulators),a=d.keyRange,I=d.velRange);for(let E of e.presetZones){if(E.isGlobal)continue;let Q=E.keyRange;E.hasKeyRange||(Q=a);let B=E.velRange;E.hasVelRange||(B=I);let p=E.generators.map(C=>new M(C.generatorType,C.generatorValue));t(p,i);let f=[...E.modulators];s(f,l);let D=E.instrument.instrumentZones,w=[],R=[],Y={min:0,max:127},J={min:0,max:127},T=D.find(C=>C.isGlobal);T&&(w.push(...T.generators),R.push(...T.modulators),Y=T.keyRange,J=T.velRange);for(let C of D){if(C.isGlobal)continue;let P=C.keyRange;C.hasKeyRange||(P=Y);let X=C.velRange;if(C.hasVelRange||(X=J),P=n(P,Q),X=n(X,B),P.max<P.min||X.max<X.min)continue;let iA=C.generators.map($=>new M($.generatorType,$.generatorValue));t(iA,w);let tA=[...C.modulators];s(tA,R);let EA=[...tA];for(let $ of f){let fA=EA.findIndex(vA=>q.isIdentical($,vA));fA!==-1?EA[fA]=EA[fA].sumTransform($):EA.push($)}let lA=iA.map($=>new M($.generatorType,$.generatorValue));for(let $ of p){if($.generatorType===r.velRange||$.generatorType===r.keyRange||$.generatorType===r.instrument||$.generatorType===r.endOper||$.generatorType===r.sampleModes)continue;let fA=iA.findIndex(vA=>vA.generatorType===$.generatorType);if(fA!==-1){let vA=lA[fA].generatorValue+$.generatorValue;lA[fA]=new M($.generatorType,vA)}else{let vA=H[$.generatorType].def+$.generatorValue;lA.push(new M($.generatorType,vA))}}lA=lA.filter($=>$.generatorType!==r.sampleID&&$.generatorType!==r.keyRange&&$.generatorType!==r.velRange&&$.generatorType!==r.endOper&&$.generatorType!==r.instrument&&$.generatorValue!==H[$.generatorType].def);let BA=new MA;BA.keyRange=P,BA.velRange=X,BA.keyRange.min===0&&BA.keyRange.max===127&&(BA.keyRange.min=-1),BA.velRange.min===0&&BA.velRange.max===127&&(BA.velRange.min=-1),BA.isGlobal=!1,BA.sample=C.sample,BA.generators=lA,BA.modulators=EA,o.push(BA)}}if(A){let E=new MA;E.isGlobal=!0;for(let p=0;p<58;p++){if(wr.has(p))continue;let f={},D=H[p]?.def||0;f[D]=0;for(let w of o){let R=w.generators.find(T=>T.generatorType===p);if(R){let T=R.generatorValue;f[T]===void 0?f[T]=1:f[T]++}else f[D]++;let Y;switch(p){default:continue;case r.decayVolEnv:Y=r.keyNumToVolEnvDecay;break;case r.holdVolEnv:Y=r.keyNumToVolEnvHold;break;case r.decayModEnv:Y=r.keyNumToModEnvDecay;break;case r.holdModEnv:Y=r.keyNumToModEnvHold}if(w.generators.find(T=>T.generatorType===Y)!==void 0){f={};break}}if(Object.keys(f).length>0){let w=Object.entries(f).reduce((Y,J)=>Y[1]<J[1]?J:Y,[0,0]),R=parseInt(w[0]);R!==D&&E.generators.push(new M(p,R)),o.forEach(Y=>{let J=Y.generators.findIndex(T=>T.generatorType===p);J!==-1?Y.generators[J].generatorValue===R&&Y.generators.splice(J,1):R!==D&&Y.generators.push(new M(p,D))})}}let B=o.find(p=>!p.isGlobal).modulators.map(p=>q.copy(p));for(let p of B){let f=!0;for(let D of o){if(D.isGlobal||!f)continue;D.modulators.find(R=>q.isIdentical(R,p))||(f=!1)}if(f===!0){E.modulators.push(q.copy(p));for(let D of o){let w=D.modulators.find(R=>q.isIdentical(R,p));w.transformAmount===p.transformAmount&&D.modulators.splice(D.modulators.indexOf(w),1)}}}o.splice(0,0,E)}return o}var Ws=20;function ct(e,A,t,n,s,o,i){let l=i===0?0:1,a=new x(Ws+l*16);V(a,Ws),N(a,A),N(a,t);let I=n*.4,d=Math.floor(I*-65536);V(a,d),V(a,2);let E=o-s,Q=0;switch(i){default:case 0:l=0;break;case 1:Q=0,l=1;break;case 3:Q=1,l=1}return V(a,l),l===1&&(V(a,16),V(a,Q),V(a,s),V(a,E)),AA("wsmp",a)}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},Qt=new q(219,0,r.reverbEffectsSend,1e3,0),ut=new q(221,0,r.chorusEffectsSend,1e3,0),dt=new q(129,0,r.vibLfoToPitch,0,0),ft=new q(13,0,r.vibLfoToPitch,0,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 Je=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 x(12);return N(A,this.source),N(A,this.control),N(A,this.destination),N(A,this.transform),V(A,this.scale<<16),A}};function Xs(e,A){if(e)switch(A){default:return;case m.modulationWheel:return U.modulationWheel;case m.mainVolume:return U.volume;case m.pan:return U.pan;case m.expressionController:return U.expression;case m.chorusDepth:return U.chorus;case m.reverbDepth:return U.reverb}else switch(A){default:return;case K.noteOnKeyNum:return U.keyNum;case K.noteOnVelocity:return U.velocity;case K.noController:return U.none;case K.polyPressure:return U.polyPressure;case K.channelPressure:return U.channelPressure;case K.pitchWheel:return U.pitchWheel;case K.pitchWheelRange:return U.pitchWheelRange}}function _s(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 zs(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 js(e){let A=_s(e.generatorType,e.generatorValue),t=A,n=0,s=e.generatorValue;A?.amount!==void 0&&(s=A.amount,t=A.dest);let o=zs(e.generatorType,e.generatorValue);if(o!==void 0)s=o.amt,t=o.dest,n=o.source;else if(t===void 0){L(`Invalid generator type: ${e.generatorType}`);return}return new Je(n,0,t,s,0)}function $s(e){if(e.transformType!==0){L("Other transform types are not supported.");return}let A=Xs(e.sourceUsesCC,e.sourceIndex),t=e.sourceCurveType,n=e.sourcePolarity,s=e.sourceDirection;if(A===void 0){L(`Invalid source: ${e.sourceIndex}, CC: ${e.sourceUsesCC}`);return}e.modulatorDestination===r.initialAttenuation&&(s=s===1?0:1);let o=Xs(e.secSrcUsesCC,e.secSrcIndex),i=e.secSrcCurveType,l=e.secSrcPolarity,a=e.secSrcDirection;if(o===void 0){L(`Invalid secondary source: ${e.secSrcIndex}, CC: ${e.secSrcUsesCC}`);return}let I=_s(e.modulatorDestination,e.transformAmount),d=I,E=e.transformAmount;I?.dest!==void 0&&(d=I.dest,E=I.amount);let Q=zs(e.modulatorDestination,e.transformAmount);if(Q!==void 0)E=Q.amt,o=A,i=t,l=n,a=s,t=QA.linear,n=Q.isBipolar?1:0,s=0,A=Q.source,d=Q.dest;else if(d===void 0){L(`Invalid destination: ${e.modulatorDestination}`);return}let B=0;return B|=i<<4,B|=l<<8,B|=a<<9,B|=t,B|=n<<14,B|=s<<15,new Je(A,o,d,E,B)}var Fr=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 mt(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 M(i.generatorType,Math.min(i.generatorValue,6386),!1))}for(let o=0;o<e.generators.length;o++){let i=e.generators[o],l;switch(i.generatorType){default:continue;case r.keyNumToVolEnvDecay:l=r.decayVolEnv;break;case r.keyNumToVolEnvHold:l=r.holdVolEnv;break;case r.keyNumToModEnvDecay:l=r.decayModEnv;break;case r.keyNumToModEnvHold:l=r.holdModEnv}let a=e.generators.find(p=>p.generatorType===l);if(a===void 0)continue;let I=i.generatorValue*-128,d=60/128*I,E=a.generatorValue-d,Q=e.generators.indexOf(i),B=e.generators.indexOf(a);e.generators[B]=new M(l,E,!1),e.generators[Q]=new M(i.generatorType,I,!1)}let A=e.generators.reduce((o,i)=>{if(Fr.has(i.generatorType))return o;let l=js(i);return l!==void 0?(o.push(l),y("%cSucceeded converting to DLS Articulator!",g.recognized)):L("Failed converting to DLS Articulator!"),o},[]),t=e.modulators.reduce((o,i)=>{if(q.isIdentical(i,ut,!0)||q.isIdentical(i,Qt,!0)||q.isIdentical(i,dt,!0)||q.isIdentical(i,ft,!0))return o;let l=$s(i);return l!==void 0?(o.push(l),y("%cSucceeded converting to DLS Articulator!",g.recognized)):L("Failed converting to DLS Articulator!"),o},[]);A.push(...t);let n=new x(8);V(n,8),V(n,A.length);let s=A.map(o=>o.writeArticulator());return AA("art2",cA([n,...s]))}function Ao(e,A){let t=new x(12);N(t,Math.max(e.keyRange.min,0)),N(t,e.keyRange.max),N(t,Math.max(e.velRange.min,0)),N(t,e.velRange.max),N(t,0);let n=e.getGeneratorValue(r.exclusiveClass,0);N(t,n),N(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 l=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)),a=new x(12);N(a,0),N(a,0),V(a,1),V(a,this.samples.indexOf(e.sample));let I=AA("wlnk",a),d=new x(0);if(e.modulators.length+e.generators.length>0){let E=mt(e);d=AA("lar2",E,!1,!0)}return AA("rgn2",cA([s,l,I,d]),!1,!0)}function eo(e){mA(`%cWriting %c${e.presetName}%c...`,g.info,g.recognized,g.info);let A=Zs(e),t=A.reduce((Q,B)=>B.isGlobal?Q:Q+1,0),n=new x(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 x(0),l=A.find(Q=>Q.isGlobal===!0);if(l){let Q=mt(l);i=AA("lar2",Q,!1,!0)}let a=cA(A.reduce((Q,B)=>(B.isGlobal||Q.push(Ao.apply(this,[B,l])),Q),[])),I=AA("lrgn",a,!1,!0),d=AA("INAM",Be(e.presetName)),E=AA("INFO",d,!1,!0);return O(),AA("ins ",cA([o,I,i,E]),!1,!0)}function to(){let e=cA(this.presets.map(A=>eo.apply(this,[A])));return AA("lins",e,!1,!0)}function no(e){let A=new x(18);N(A,1),N(A,1),V(A,e.sampleRate),V(A,e.sampleRate*2),N(A,2),N(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 I=new Int16Array(o.length);for(let d=0;d<o.length;d++)I[d]=o[d]*32768;i=AA("data",new x(I.buffer))}else i=AA("data",e.getRawData());let l=AA("INAM",Be(e.sampleName)),a=AA("INFO",l,!1,!0);return y(`%cSaved %c${e.sampleName}%c succesfully!`,g.recognized,g.value,g.recognized),AA("wave",cA([t,s,i,a]),!1,!0)}function so(){let e=0,A=[],t=this.samples.map(n=>{let s=no(n);return A.push(e),e+=s.length,s});return{data:AA("wvpl",cA(t),!1,!0),indexes:A}}function oo(){mA("%cSaving DLS...",g.info);let e=new x(4);V(e,this.presets.length);let A=AA("colh",e);mA("%cWriting instruments...",g.info);let t=to.apply(this);y("%cSuccess!",g.recognized),O(),mA("%cWriting WAVE samples...",g.info);let n=so.apply(this),s=n.data,o=n.indexes;y("%cSucceeded!",g.recognized),O();let i=new x(8+4*o.length);V(i,8),V(i,o.length);for(let E of o)V(i,E);let l=AA("ptbl",i);this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"Soundfont")+`
|
|
15
|
+
Converted from SF2 to DLS using SpessaSynth`,this.soundFontInfo.ISFT="SpessaSynth";let a=[];for(let[E,Q]of Object.entries(this.soundFontInfo))E!=="ICMT"&&E!=="INAM"&&E!=="ICRD"&&E!=="IENG"&&E!=="ICOP"&&E!=="ISFT"&&E!=="ISBJ"||a.push(AA(E,Be(Q),!0));let I=AA("INFO",cA(a),!1,!0),d=new x(A.length+t.length+l.length+s.length+I.length+4);return kA(d,"DLS "),d.set(cA([A,t,l,s,I]),4),y("%cSaved succesfully!",g.recognized),O(),AA("RIFF",d)}var Rr=48e3,ie=class{constructor(A,t,n,s,o,i,l,a){this.sampleName=A,this.sampleRate=t,this.samplePitch=n,this.samplePitchCorrection=s,this.sampleLink=o,this.sampleType=i,this.sampleLoopStartIndex=l,this.sampleLoopEndIndex=a,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(Rr),n=this.getAudioData()),this.compressedData=t([n],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{L(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=239}}getAudioData(){return this.sampleData}};var ae=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 ge=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(B,p){return p>=B.min&&p<=B.max}function o(B,p){B.push(...p.filter(f=>!B.find(D=>D.generatorType===f.generatorType)))}function i(B,p){B.push(...p.filter(f=>!B.find(D=>q.isIdentical(f,D))))}let l=[],a=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],I=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[],d=this.presetZones[0].isGlobal?this.presetZones[0].keyRange:{min:0,max:127},E=this.presetZones[0].isGlobal?this.presetZones[0].velRange:{min:0,max:127};return this.presetZones.filter(B=>s(B.hasKeyRange?B.keyRange:d,A)&&s(B.hasVelRange?B.velRange:E,t)&&!B.isGlobal).forEach(B=>{if(B.instrument.instrumentZones.length<1)return;let p=B.generators,f=B.modulators,D=B.instrument.instrumentZones[0],w=D.isGlobal?[...D.generators]:[],R=D.isGlobal?[...D.modulators]:[],Y=D.isGlobal?D.keyRange:{min:0,max:127},J=D.isGlobal?D.velRange:{min:0,max:127};B.instrument.instrumentZones.filter(C=>s(C.hasKeyRange?C.keyRange:Y,A)&&s(C.hasVelRange?C.velRange:J,t)&&!C.isGlobal).forEach(C=>{let P=[...C.generators],X=[...C.modulators];o(p,a),o(P,w),i(f,I),i(X,R),i(X,this.defaultModulators);let iA=[...X];for(let tA=0;tA<f.length;tA++){let EA=f[tA],lA=iA.findIndex(BA=>q.isIdentical(EA,BA));lA!==-1?iA[lA]=iA[lA].sumTransform(EA):iA.push(EA)}l.push({instrumentGenerators:P,presetGenerators:p,modulators:iA,sample:C.sample,sampleID:C.generators.find(tA=>tA.generatorType===r.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][t]=l,l}};var Ie=class e{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],this.defaultModulators=st.map(t=>q.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 ie("Saw",44100,65,20,0,0,0,127);t.sampleData=new Float32Array(128);for(let I=0;I<128;I++)t.sampleData[I]=I/128*2-1;A.samples.push(t);let n=new MA;n.isGlobal=!0,n.generators.push(new M(r.initialAttenuation,375)),n.generators.push(new M(r.releaseVolEnv,-1e3)),n.generators.push(new M(r.sampleModes,1));let s=new MA;s.sample=t;let o=new MA;o.sample=t,o.generators.push(new M(r.fineTune,-9));let i=new ae;i.instrumentName="Saw Wave",i.instrumentZones.push(n),i.instrumentZones.push(s),i.instrumentZones.push(o),A.instruments.push(i);let l=new re;l.instrument=i;let a=new ge(A.defaultModulators);return a.presetName="Saw Wave",a.presetZones.push(l),A.presets.push(a),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&&L(`%cPreset ${A}.${t} not found. Replaced with %c${n.presetName} (${n.bank}.${n.program})`,g.warn,g.recognized)),n||(L(`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||(L("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}};Ie.prototype.write=Vs;Ie.prototype.writeDLS=oo;function ro(e){mA("%cLoading instruments...",g.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(z(e.chunkData));O()}var pt=class extends ge{constructor(A,t){super(st),this.program=t&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new ae,this.DLSInstrument.addUseCount();let s=new re;s.instrument=this.DLSInstrument,this.presetZones=[s]}};function io(e){this.verifyHeader(e,"LIST"),this.verifyText(_(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(z(e.chunkData));let t=A.find(B=>B.header==="insh");if(!t)throw O(),new Error("No instrument header!");let n=F(t.chunkData,4),s=F(t.chunkData,4),o=F(t.chunkData,4),i=new pt(s,o),l="unnamedPreset",a=NA(A,"INFO");if(a){let B=z(a.chunkData);for(;B.header!=="INAM";)B=z(a.chunkData);l=_(B.chunkData,B.chunkData.length).trim()}i.presetName=l,i.DLSInstrument.instrumentName=l,$A(`%cParsing %c"${l}"%c...`,g.info,g.recognized,g.info);let I=NA(A,"lrgn");if(!I)throw O(),new Error("No region list!");let d=new MA;d.isGlobal=!0;let E=NA(A,"lart"),Q=NA(A,"lar2");(Q!==void 0||E!==void 0)&&this.readLart(E,Q,d),d.generators=d.generators.filter(B=>B.generatorValue!==H[B.generatorType].def),d.modulators.find(B=>B.modulatorDestination===r.reverbEffectsSend)===void 0&&d.modulators.push(q.copy(Qt)),d.modulators.find(B=>B.modulatorDestination===r.chorusEffectsSend)===void 0&&d.modulators.push(q.copy(ut)),i.DLSInstrument.instrumentZones.push(d);for(let B=0;B<n;B++){let p=z(I.chunkData);this.verifyHeader(p,"LIST");let f=_(p.chunkData,4);f!=="rgn "&&f!=="rgn2"&&(O(),this.parsingError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${f}"`));let D=this.readRegion(p);D&&i.DLSInstrument.instrumentZones.push(D)}this.presets.push(i),this.instruments.push(i.DLSInstrument),O()}function ao(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=K.noteOnKeyNum;break;case U.none:A=K.noController;break;case U.modulationWheel:A=m.modulationWheel,t=!0;break;case U.pan:A=m.pan,t=!0;break;case U.reverb:A=m.reverbDepth,t=!0;break;case U.chorus:A=m.chorusDepth,t=!0;break;case U.expression:A=m.expressionController,t=!0;break;case U.volume:A=m.mainVolume,t=!0;break;case U.velocity:A=K.noteOnVelocity;break;case U.polyPressure:A=K.polyPressure;break;case U.channelPressure:A=K.channelPressure;break;case U.pitchWheel:A=K.pitchWheel;break;case U.pitchWheelRange:A=K.pitchWheelRange;break}if(A===void 0)throw new Error(`Unknown DLS Source: ${e}`);return{enum:A,isCC:t}}function Gr(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 Mr(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 go(e,A,t,n,s){let o=Mr(e,t),i,l,a=!1,I=!1,d=s;if(o===void 0){let w=Gr(t,s);if(w===void 0){L(`Invalid destination: ${t}`);return}if(i=w,w.newAmount!==void 0&&(d=w.newAmount,i=w.gen),l=ao(e),l===void 0){L(`Invalid source: ${e}`);return}}else i=o,a=!0,l={enum:K.noController,isCC:!1},I=!0;let E=ao(A);if(E===void 0){L(`Invalid control: ${A}`);return}let Q;if(I)Q=0;else{let w=n&15,R=n>>10&15;R===QA.linear&&w!==QA.linear&&(R=w);let Y=n>>14&1,J=n>>15&1;i===r.initialAttenuation&&s<0&&(J=1),Q=KA(R,Y,J,l.isCC,l.enum)}i===r.initialAttenuation&&(d=Math.max(960,Math.min(0,d)));let B=n>>4&15,p=n>>8&1,f=n>>9&1,D=KA(B,p,f,E.isCC,E.enum);if(a){let w=D;D=Q,Q=w}return new q(Q,D,i,d,0)}function on(e,A){let t=e.chunkData,n=[],s=[];F(t,4);let o=F(t,4);for(let i=0;i<o;i++){let l=F(t,2),a=F(t,2),I=F(t,2),d=F(t,2),Q=(F(t,4)|0)>>16;if(l===0&&a===0&&d===0){let B;switch(I){case k.pan:B=new M(r.pan,Q);break;case k.gain:B=new M(r.initialAttenuation,-Q*10/.4);break;case k.filterCutoff:B=new M(r.initialFilterFc,Q);break;case k.filterQ:B=new M(r.initialFilterQ,Q);break;case k.modLfoFreq:B=new M(r.freqModLFO,Q);break;case k.modLfoDelay:B=new M(r.delayModLFO,Q);break;case k.vibLfoFreq:B=new M(r.freqVibLFO,Q);break;case k.vibLfoDelay:B=new M(r.delayVibLFO,Q);break;case k.volEnvDelay:B=new M(r.delayVolEnv,Q);break;case k.volEnvAttack:B=new M(r.attackVolEnv,Q);break;case k.volEnvHold:B=new M(r.holdVolEnv,Q,!1);break;case k.volEnvDecay:B=new M(r.decayVolEnv,Q,!1);break;case k.volEnvRelease:B=new M(r.releaseVolEnv,Q);break;case k.volEnvSustain:let p=1e3-Q;B=new M(r.sustainVolEnv,p);break;case k.modEnvDelay:B=new M(r.delayModEnv,Q);break;case k.modEnvAttack:B=new M(r.attackModEnv,Q);break;case k.modEnvHold:B=new M(r.holdModEnv,Q,!1);break;case k.modEnvDecay:B=new M(r.decayModEnv,Q,!1);break;case k.modEnvRelease:B=new M(r.releaseModEnv,Q);break;case k.modEnvSustain:let f=1e3-Q;B=new M(r.sustainModEnv,f);break;case k.reverbSend:B=new M(r.reverbEffectsSend,Q);break;case k.chorusSend:B=new M(r.chorusEffectsSend,Q);break;case k.pitch:let D=Math.floor(Q/100),w=Math.floor(Q-D*100);B=new M(r.fineTune,w),n.push(new M(r.coarseTune,D));break}B&&n.push(B)}else{let B=!0;if(a===U.none)if(l===U.modLfo&&I===k.pitch)n.push(new M(r.modLfoToPitch,Q));else if(l===U.modLfo&&I===k.gain)n.push(new M(r.modLfoToVolume,Q));else if(l===U.modLfo&&I===k.filterCutoff)n.push(new M(r.modLfoToFilterFc,Q));else if(l===U.vibratoLfo&&I===k.pitch)n.push(new M(r.vibLfoToPitch,Q));else if(l===U.modEnv&&I===k.pitch)n.push(new M(r.modEnvToPitch,Q));else if(l===U.modEnv&&I===k.filterCutoff)n.push(new M(r.modEnvToFilterFc,Q));else if(l===U.keyNum&&I===k.pitch)n.push(new M(r.scaleTuning,Q/128));else if(l===U.keyNum&&I===k.volEnvHold){n.push(new M(r.keyNumToVolEnvHold,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.holdVolEnv&&(f.generatorValue+=p)})}else if(l===U.keyNum&&I===k.volEnvDecay){n.push(new M(r.keyNumToVolEnvDecay,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.decayVolEnv&&(f.generatorValue+=p)})}else if(l===U.keyNum&&I===k.modEnvHold){n.push(new M(r.keyNumToModEnvHold,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.holdModEnv&&(f.generatorValue+=p)})}else if(l===U.keyNum&&I===k.modEnvDecay){n.push(new M(r.keyNumToModEnvDecay,Q/-128));let p=Math.round(60/128*Q);n.forEach(f=>{f.generatorType===r.decayModEnv&&(f.generatorValue+=p)})}else B=!1;else B=!1;if(B===!1){let p=go(l,a,I,d,Q);p?(s.push(p),y("%cSucceeded converting to SF2 Modulator!",g.recognized)):L("Failed converting to SF2 Modulator!")}}}return A&&s.push(q.copy(dt),q.copy(ft)),{modulators:s,generators:n}}function Io(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let n=z(e.chunkData);this.verifyHeader(n,"art1","art2");let s=on(n,!0);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let n=z(A.chunkData);this.verifyHeader(n,"art2","art1");let s=on(n,!1);t.generators.push(...s.generators),t.modulators.push(...s.modulators)}}var yt=class extends MA{constructor(A,t){super(),this.keyRange=A,this.velRange=t,this.isGlobal=!0}setWavesample(A,t,n,s,o,i,l){t!==0&&this.generators.push(new M(r.sampleModes,t)),this.generators.push(new M(r.initialAttenuation,A)),this.isGlobal=!1,l-=o.samplePitchCorrection;let a=Math.trunc(l/100);a!==0&&this.generators.push(new M(r.coarseTune,a));let I=l-a*100;if(I!==0&&this.generators.push(new M(r.fineTune,I)),t!==0){let d=n.start-o.sampleLoopStartIndex,E=n.end-o.sampleLoopEndIndex;if(d!==0){let Q=d%32768;this.generators.push(new M(r.startloopAddrsOffset,Q));let B=Math.trunc(d/32768);B!==0&&this.generators.push(new M(r.startloopAddrsCoarseOffset,B))}if(E!==0){let Q=E%32768;this.generators.push(new M(r.endloopAddrsOffset,Q));let B=Math.trunc(E/32768);B!==0&&this.generators.push(new M(r.endloopAddrsCoarseOffset,B))}}s!==o.samplePitch&&this.generators.push(new M(r.overridingRootKey,s)),this.generators.push(new M(r.sampleID,i)),this.sample=o,o.useCount++}};function Co(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(z(e.chunkData));let t=A.find(X=>X.header==="rgnh"),n=F(t.chunkData,2),s=F(t.chunkData,2),o=F(t.chunkData,2),i=F(t.chunkData,2);o===0&&i===0&&(i=127,o=0),n===0&&s===0&&(s=127,n=0);let l=new yt({min:n,max:s},{min:o,max:i});F(t.chunkData,2);let a=F(t.chunkData,2);a!==0&&l.generators.push(new M(r.exclusiveClass,a));let I=NA(A,"lart"),d=NA(A,"lar2");this.readLart(I,d,l),l.isGlobal=!1;let E=A.find(X=>X.header==="wsmp");F(E.chunkData,4);let Q=F(E.chunkData,2),B=oe(E.chunkData[E.chunkData.currentIndex++],E.chunkData[E.chunkData.currentIndex++]),f=(F(E.chunkData,4)|0)/-655360;F(E.chunkData,4);let D=F(E.chunkData,4),w,R={start:0,end:0};if(D===0)w=0;else{F(E.chunkData,4),F(E.chunkData,4)===0?w=1:w=3,R.start=F(E.chunkData,4);let iA=F(E.chunkData,4);R.end=R.start+iA}let Y=A.find(X=>X.header==="wlnk");if(Y===void 0)return;F(Y.chunkData,2),F(Y.chunkData,2),F(Y.chunkData,4);let J=F(Y.chunkData,4),T=this.samples[J];if(T===void 0)throw new Error("Invalid sample ID!");let P=(f||T.sampleDbAttenuation)*10/.4;return l.setWavesample(P,w,R,Q,T,J,B),l}var St=class extends ie{sampleDbAttenuation;sampleData;constructor(A,t,n,s,o,i,l,a){super(A,t,n,s,0,1,o,i),this.sampleData=l,this.sampleDbAttenuation=a}getAudioData(){return this.sampleData}getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data?? This shouldn't happen!!");return this.compressedData}return super.getRawData()}};var Eo={PCM:1,ALAW:6};function xr(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,l=new Float32Array(i);for(let a=0;a<l.length;a++){let I=F(e.chunkData,A);o?l[a]=I/s-.5:(I>=t&&(I-=n),l[a]=I/s)}return l}function Nr(e,A){let t=e.size/A,n=new Float32Array(t);for(let s=0;s<n.length;s++){let o=F(e.chunkData,A),i=o^85;i&=127;let l=i>>4,a=i&15;l>0&&(a+=16),a=(a<<4)+8,l>1&&(a=a<<l-1);let I=o>127?a:-a;n[s]=I/32678}return n}function ho(e){mA("%cLoading Wave samples...",g.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=z(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(_(t.chunkData,4),"wave");let n=[];for(;t.chunkData.currentIndex<t.chunkData.length;)n.push(z(t.chunkData));let s=n.find(T=>T.header==="fmt ");if(!s)throw new Error("No fmt chunk in the wave file!");let o=F(s.chunkData,2),i=F(s.chunkData,2);if(i!==1)throw new Error(`Only mono samples are supported. Fmt reports ${i} channels`);let l=F(s.chunkData,4);F(s.chunkData,4),F(s.chunkData,2);let I=F(s.chunkData,2)/8,d=!1,E=n.find(T=>T.header==="data");E||this.parsingError("No data chunk in the WAVE chunk!");let Q;switch(o){default:d=!0,Q=new Float32Array(E.size/I);break;case Eo.PCM:Q=xr(E,I);break;case Eo.ALAW:Q=Nr(E,I);break}let B=NA(n,"INFO"),p=`Unnamed ${A}`;if(B){let T=z(B.chunkData);for(;T.header!=="INAM"&&B.chunkData.currentIndex<B.chunkData.length;)T=z(B.chunkData);T.header==="INAM"&&(p=_(T.chunkData,T.size).trim())}let f=60,D=0,w=0,R=Q.length-1,Y=0,J=n.find(T=>T.header==="wsmp");if(J){F(J.chunkData,4),f=F(J.chunkData,2),D=oe(J.chunkData[J.chunkData.currentIndex++],J.chunkData[J.chunkData.currentIndex++]);let T=Math.trunc(D/100);if(f+=T,D-=T*100,Y=(F(J.chunkData,4)|0)/-655360,F(J.chunkData,4),F(J.chunkData,4)===1){F(J.chunkData,8),w=F(J.chunkData,4);let X=F(J.chunkData,4);R=w+X}}else L("No wsmp chunk in wave... using sane defaults.");d&&console.error(`Failed to load '${p}': Unsupported format: (${o})`),this.samples.push(new St(p,l,f,D,w,R,Q,Y)),A++,y(`%cLoaded sample %c${p}`,g.info,g.recognized)}O()}var ee=class extends Ie{constructor(A){super(),this.dataArray=new x(A),$A("%cParsing DLS...",g.info),this.dataArray||(O(),this.parsingError("No data provided!"));let t=z(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(_(this.dataArray,4).toLowerCase(),"dls ");let n=[];for(;this.dataArray.currentIndex<this.dataArray.length;)n.push(z(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 a=z(s.chunkData);this.soundFontInfo[a.header]=_(a.chunkData,a.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[a,I]of Object.entries(this.soundFontInfo))y(`%c"${a}": %c"${I}"`,g.info,g.recognized);let o=n.find(a=>a.header==="colh");o||(O(),this.parsingError("No colh chunk!")),this.instrumentAmount=F(o.chunkData,4),y(`%cInstruments amount: %c${this.instrumentAmount}`,g.info,g.recognized);let i=NA(n,"wvpl");i||(O(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(i);let
|
|
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),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=oo;ee.prototype.readDLSInstrument=ro;ee.prototype.readRegion=Io;ee.prototype.readLart=go;ee.prototype.readDLSSamples=Co;var on=class extends ie{constructor(A,t,n,s,o,i,h,a,I,d,C,Q,B){super(A,i,h,a,I,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=C,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=B}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],this.sampleData===void 0&&L(`Error decoding sample ${this.sampleName}: Vorbis decode returned undefined.`)}catch(s){L(`Error decoding sample ${this.sampleName}: ${s}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?(L(`Invalid sample ${this.sampleName}! Invalid length: ${this.sampleLength}`),new Float32Array(1)):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return L("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 ho(e,A,t=!0){let n=[],s=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let o=Nr(s,e.chunkData,A,t);n.push(o),s++}return n.length>1&&n.pop(),n}function Nr(e,A,t,n){let s=_(A,20),o=F(A,4)*2,i=F(A,4)*2,h=F(A,4),a=F(A,4),I=F(A,4),d=A[A.currentIndex++];d===255&&(d=60);let C=es(A[A.currentIndex++]),Q=F(A,2),B=F(A,2);return new on(s,o,i,h,a,I,d,C,Q,B,t,e,n)}var rn=class extends M{constructor(A){super();let t=A.currentIndex;this.generatorType=A[t+1]<<8|A[t],this.generatorValue=oe(A[t+2],A[t+3]),A.currentIndex+=4}};function an(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new rn(e.chunkData));return A.length>1&&A.pop(),A}var gn=class extends ae{constructor(A){super(),this.instrumentName=_(A.chunkData,20).trim(),this.instrumentZoneIndex=F(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 lo(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let n=new gn(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 In=class extends MA{constructor(A){super(),this.generatorZoneStartIndex=F(A,2),this.modulatorZoneStartIndex=F(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 co(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new In(e.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,h=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,h),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 En=class extends re{constructor(A){super(),this.generatorZoneStartIndex=F(A,2),this.modulatorZoneStartIndex=F(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 Bo(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new En(e.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,h=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,h),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 Cn=class extends ge{constructor(A,t){super(t),this.presetName=_(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=F(A.chunkData,2),this.bank=F(A.chunkData,2),this.presetZoneStartIndex=F(A.chunkData,2),this.library=F(A.chunkData,4),this.genre=F(A.chunkData,4),this.morphology=F(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 Qo(e,A,t){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new Cn(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 hn=class extends q{constructor(A){super({srcEnum:F(A,2),dest:F(A,2),amt:oe(A[A.currentIndex++],A[A.currentIndex++]),secSrcEnum:F(A,2),transform:F(A,2)})}};function St(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new hn(e.chunkData));return A}var Dt=class extends Ie{constructor(A,t=!0){super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new x(A),$A("%cParsing SoundFont...",g.info),this.dataArray||(O(),this.parsingError("No data provided!"));let n=z(this.dataArray,!1);this.verifyHeader(n,"riff");let s=_(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=z(this.dataArray);for(this.verifyHeader(i,"list"),_(i.chunkData,4);i.chunkData.length>i.chunkData.currentIndex;){let tA=z(i.chunkData),CA;switch(tA.header.toLowerCase()){case"ifil":case"iver":CA=`${F(tA.chunkData,2)}.${F(tA.chunkData,2)}`,this.soundFontInfo[tA.header]=CA;break;case"icmt":CA=_(tA.chunkData,tA.chunkData.length,void 0,!1),this.soundFontInfo[tA.header]=CA;break;case"dmod":let lA=St(tA);lA.pop(),CA=`Modulators: ${lA.length}`;let cA=this.defaultModulators;this.defaultModulators=lA,this.defaultModulators.push(...cA.filter($=>!this.defaultModulators.find(fA=>q.isIdentical($,fA)))),this.soundFontInfo[tA.header]=tA.chunkData;break;default:CA=_(tA.chunkData,tA.chunkData.length),this.soundFontInfo[tA.header]=CA}y(`%c"${tA.header}": %c"${CA}"`,g.info,g.recognized)}let h=z(this.dataArray,!1);this.verifyHeader(h,"list"),this.verifyText(_(this.dataArray,4),"sdta"),y("%cVerifying smpl chunk...",g.warn);let a=z(this.dataArray,!1);this.verifyHeader(a,"smpl");let I;if(o){y("%cSF2Pack detected, attempting to decode the smpl chunk...",g.info);try{I=zA.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+h.size-12)).data[0]}catch(tA){throw O(),new Error(`SF2Pack Ogg Vorbis decode error: ${tA}`)}y(`%cDecoded the smpl chunk! Length: %c${I.length}`,g.info,g.value)}else I=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;y(`%cSkipping sample chunk, length: %c${h.size-12}`,g.info,g.value),this.dataArray.currentIndex+=h.size-12,y("%cLoading preset data chunk...",g.warn);let d=z(this.dataArray);this.verifyHeader(d,"list"),_(d.chunkData,4);let C=z(d.chunkData);this.verifyHeader(C,"phdr");let Q=z(d.chunkData);this.verifyHeader(Q,"pbag");let B=z(d.chunkData);this.verifyHeader(B,"pmod");let p=z(d.chunkData);this.verifyHeader(p,"pgen");let f=z(d.chunkData);this.verifyHeader(f,"inst");let D=z(d.chunkData);this.verifyHeader(D,"ibag");let w=z(d.chunkData);this.verifyHeader(w,"imod");let G=z(d.chunkData);this.verifyHeader(G,"igen");let U=z(d.chunkData);this.verifyHeader(U,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...ho(U,I,!o));let J=an(G),v=St(w),E=co(D,J,v,this.samples);this.instruments=lo(f,E);let P=an(p),X=St(B),iA=Bo(Q,P,X,this.instruments);this.presets.push(...Qo(C,iA,this.defaultModulators)),this.presets.sort((tA,CA)=>tA.program-CA.program+(tA.bank-CA.bank)),y(`%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),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 qe(e){let A=e.slice(8,12),t=new x(A);return _(t,4,void 0,!1).toLowerCase()==="dls "?new ee(e):new Dt(e,!1)}var kt=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 Se.addNewSoundFont:this.addNewSoundFont(t[0],t[1],t[2]);break;case Se.reloadSoundFont:this.reloadManager(t);break;case Se.deleteSoundFont:this.deleteSoundFont(t);break;case Se.rearrangeSoundFonts:this.rearrangeSoundFonts(t)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let t=qe(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:t}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){L("1 soundfont left. Aborting!");return}let t=this.soundfontList.findIndex(n=>n.id===A);if(t===-1){L(`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:qe(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 Fe={linear:0,nearestNeighbor:1,fourthOrder:2},we=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 h=0;h<t.length;h++){for(;s>=n.loopEnd;)s-=i;let a=~~s,I=a+1;for(;I>=n.loopEnd;)I-=i;let d=s-a,C=o[I],Q=o[a];t[h]=Q+(C-Q)*d,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let i=0;i<t.length;i++){let h=~~s,a=h+1;if(a>=n.end){A.finished=!0;return}let I=s-h,d=o[a],C=o[h];t[i]=C+(d-C)*I,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 h=0;h<t.length;h++){for(;s>=n.loopEnd;)s-=o;let a=~~s+1;for(;a>=n.loopEnd;)a-=o;t[h]=i[a],s+=n.playbackStep*A.currentTuningCalculated}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let h=0;h<t.length;h++){let a=~~s+1;if(a>=n.end){A.finished=!0;return}t[h]=i[a],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 h=0;h<t.length;h++){for(;s>=n.loopEnd;)s-=i;let a=~~s,I=a+1,d=I+1,C=d+1,Q=s-a;I>=n.loopEnd&&(I-=i),d>=n.loopEnd&&(d-=i),C>=n.loopEnd&&(C-=i);let B=o[a],p=o[I],f=o[d],D=o[C],w=.5*(f-B),G=B-2.5*p+2*f-.5*D,U=.5*(D-B)+1.5*(p-f);t[h]=((U*Q+G)*Q+w)*Q+p,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let i=0;i<t.length;i++){let h=~~s,a=h+1,I=a+1,d=I+1,C=s-h;if(a>=n.end||I>=n.end||d>=n.end){A.finished=!0;return}let Q=o[h],B=o[a],p=o[I],f=o[d],D=.5*(p-Q),w=Q-2.5*B+2*p-.5*f,G=.5*(f-Q)+1.5*(B-p);t[i]=((G*C+w)*C+D)*C+B,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}};var uo=.1,Ee=class e{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;resonanceCb=0;currentInitialFc=13500;lastTargetCutoff=1/0;initialized=!1;static apply(A,t,n,s){let o=A.modulatedGenerators[r.initialFilterFc],i=A.filter;i.initialized?i.currentInitialFc+=(o-i.currentInitialFc)*s:(i.initialized=!0,i.currentInitialFc=o);let h=i.currentInitialFc+n;if(i.currentInitialFc>13499&&h>13499&&i.resonanceCb===0){i.currentInitialFc=13500;return}let a=A.modulatedGenerators[r.initialFilterQ];(Math.abs(i.lastTargetCutoff-h)>1||i.resonanceCb!==a)&&(i.lastTargetCutoff=h,i.resonanceCb=a,e.calculateCoefficients(i,h));for(let I=0;I<t.length;I++){let d=t[I],C=i.a0*d+i.a1*i.x1+i.a2*i.x2-i.a3*i.y1-i.a4*i.y2;i.x2=i.x1,i.x1=d,i.y2=i.y1,i.y1=C,t[I]=C}}static calculateCoefficients(A,t){t=~~t;let n=A.resonanceCb,s=e.cachedCoefficients?.[n]?.[t];if(s!==void 0){A.a0=s.a0,A.a1=s.a1,A.a2=s.a2,A.a3=s.a3,A.a4=s.a4;return}let o=He(t);o=Math.min(o,.45*sampleRate);let i=n/10,h=PA(-1*(i-3.01)),a=1/Math.sqrt(PA(-i)),I=2*Math.PI*o/sampleRate,d=Math.cos(I),C=Math.sin(I)/(2*h),Q=(1-d)*a,B=Q/2,p=B,f=1+C,D=-2*d,w=1-C,G={};G.a0=B/f,G.a1=Q/f,G.a2=p/f,G.a3=D/f,G.a4=w/f,A.a0=G.a0,A.a1=G.a1,A.a2=G.a2,A.a3=G.a3,A.a4=G.a4,e.cachedCoefficients[n]===void 0&&(e.cachedCoefficients[n]=[]),e.cachedCoefficients[n][t]=G}},ln=new Ee;ln.resonanceCb=0;for(let e=1500;e<13500;e++)ln.currentInitialFc=e,Ee.calculateCoefficients(ln,e);var pA=16384,te=new Float32Array(pA+1),Qe=new Float32Array(pA+1);te[0]=0;te[te.length-1]=1;Qe[0]=0;Qe[Qe.length-1]=1;for(let e=1;e<pA-1;e++){let A=-.4166666666666667*Math.log(e/(te.length-1))/Math.LN10;Qe[e]=1-A,te[te.length-1-e]=A}function ue(e,A,t,n){switch(e&&(t=1-t),A){case QA.linear:return n?t*2-1:t;case QA.switch:return t=t>.5?1:0,n?t*2-1:t;case QA.concave:return n?(t=t*2-1,t<0?-te[~~(t*-pA)]:te[~~(t*pA)]):te[~~(t*pA)];case QA.convex:return n?(t=t*2-1,t<0?-Qe[~~(t*-pA)]:Qe[~~(t*pA)]):Qe[~~(t*pA)]}}var cn=1,Bn=new Float32Array(1e3);for(let e=0;e<Bn.length;e++)Bn[e]=ue(0,QA.convex,e/1e3,0);var ZA=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=OA(A.modulatedGenerators[r.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvDecay],s=OA(A.modulatedGenerators[r.decayModEnv]+n);t.decayDuration=s*(1-t.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvHold];t.holdDuration=OA(o+A.modulatedGenerators[r.holdModEnv]);let i=OA(A.modulatedGenerators[r.releaseModEnv]);t.releaseDuration=i*t.releaseStartLevel,t.delayEnd=A.startTime+OA(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=Bn[~~((1-(s.attackEnd-t)/s.attackDuration)*1e3)]:t<s.holdEnd?s.currentValue=cn:t<s.decayEnd?s.currentValue=(1-(s.decayEnd-t)/s.decayDuration)*(s.sustainLevel-cn)+cn:s.currentValue=s.sustainLevel,s.currentValue)}};var br=-2320,Lr=-1130,wt=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,h,a){this.sampleData=A,this.playbackStep=t,this.cursor=n,this.rootKey=s,this.loopStart=o,this.loopEnd=i,this.end=h,this.loopingMode=a,this.isLooping=this.loopingMode===1||this.loopingMode===3}},Ke=class e{sample;filter=new Ee;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new ZA;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;exclusiveClass=0;constructor(A,t,n,s,o,i,h,a,I,d){this.sample=t,this.generators=I,this.exclusiveClass=this.generators[r.exclusiveClass],this.modulatedGenerators=new Int16Array(I),this.modulators=d,this.velocity=s,this.midiNote=n,this.channelNumber=o,this.startTime=i,this.targetKey=h,this.realKey=a,this.volumeEnvelope=new VA(A,I[r.sustainVolEnv])}static copy(A,t){let n=A.sample,s=new wt(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=>q.copy(o)))}exclusiveRelease(){this.release(po),this.modulatedGenerators[r.releaseVolEnv]=br,this.modulatedGenerators[r.releaseModEnv]=Lr,VA.recalculate(this),ZA.recalculate(this)}release(A=mo){this.releaseStartTime=currentTime,this.releaseStartTime-this.startTime<A&&(this.releaseStartTime=this.startTime+A)}};function fo(e,A,t,n,s,o=!1){let i,h=this.workletProcessorChannels[e],a=this.keyModifierManager.hasOverridePatch(e,A),I=h.getBankSelect(),d=h.preset.program;if(a){let B=this.keyModifierManager.getPatch(e,A);I=B.bank,d=B.program}let C=this.getCachedVoice(I,d,A,t);if(C!==void 0)return C.map(B=>Ke.copy(B,n));let Q=h.preset;return a&&(Q=this.soundfontManager.getPreset(I,d)),i=Q.getSamplesAndGenerators(A,t).reduce((B,p)=>{if(p.sample.getAudioData()===void 0)return L(`Discarding invalid sample: ${p.sample.sampleName}`),B;let f=new Int16Array(60);for(let E=0;E<60;E++)f[E]=Wn(E,p.presetGenerators,p.instrumentGenerators);f[r.initialAttenuation]=Math.floor(f[r.initialAttenuation]*.4);let D=p.sample.samplePitch;f[r.overridingRootKey]>-1&&(D=f[r.overridingRootKey]);let w=A;f[r.keyNum]>-1&&(w=f[r.keyNum]);let G=p.sample.sampleLoopStartIndex,U=p.sample.sampleLoopEndIndex,J=f[r.sampleModes],v=new wt(p.sample.sampleData,p.sample.sampleRate/sampleRate*Math.pow(2,p.sample.samplePitchCorrection/1200),0,D,G,U,Math.floor(p.sample.sampleData.length)-1,J);return f[r.velocity]>-1&&(t=f[r.velocity]),o&&Zn([{Sample:p.sample.sampleName,Generators:f,Modulators:p.modulators.map(E=>E.debugString()),Velocity:t,TargetKey:w,MidiNote:A,WorkletSample:v}]),B.push(new Ke(sampleRate,v,A,t,e,n,w,s,f,p.modulators.map(E=>q.copy(E)),this.filterSmoothingFactor)),B},[]),this.setCachedVoice(I,d,A,t,i.map(B=>Ke.copy(B,n))),i}var So=.05,Ur=4600,Tr=2e3,yo=Math.PI/2,Ft=-500,Do=500,Qn=Do-Ft,ko=new Float32Array(Qn+1),wo=new Float32Array(Qn+1);for(let e=Ft;e<=Do;e++){let A=(e-Ft)/Qn,t=e-Ft;ko[t]=Math.cos(yo*A),wo[t]=Math.sin(yo*A)}function Fo(e,A,t,n,s,o,i,h){if(isNaN(A[0]))return;let a;e.overridePan?a=e.overridePan:(e.currentPan+=(e.modulatedGenerators[r.pan]-e.currentPan)*this.synth.panSmoothingFactor,a=e.currentPan);let I=this.synth.currentGain,d=~~(a+500),C=ko[d]*I*this.synth.panLeft,Q=wo[d]*I*this.synth.panRight;if(!this.synth.oneOutputMode){let B=e.modulatedGenerators[r.reverbEffectsSend];if(B>0){let f=this.synth.reverbGain*I*(B/Ur);for(let D=0;D<A.length;D++)s[D]+=f*A[D];o.set(s)}let p=e.modulatedGenerators[r.chorusEffectsSend];if(p>0){let f=this.synth.chorusGain*p/Tr,D=C*f,w=Q*f;for(let G=0;G<A.length;G++)i[G]+=D*A[G],h[G]+=w*A[G]}}if(C>0)for(let B=0;B<A.length;B++)t[B]+=C*A[B];if(Q>0)for(let B=0;B<A.length;B++)n[B]+=Q*A[B]}function Ro(e=!1){y("%cStop all received!",g.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].stopAllNotes(e);this.callEvent("stopall",void 0)}function Go(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 Mo(e,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=qe(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(),y("%cSpessaSynth is ready!",g.recognized)}function xo(e=!0,A=!0){this.stopAllChannels(!0),A&&(delete this.overrideSoundfont,this.overrideSoundfont=void 0),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.cachedVoices=[];for(let t=0;t<this.workletProcessorChannels.length;t++){let n=this.workletProcessorChannels[t];(!A||A&&n.presetUsesOverride)&&(n.lockPreset=!1),n.programChange(n.preset.program)}e&&this.sendPresetList()}function No(){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 bo(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 Lo(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 Uo(e){e=Math.round(e);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].setCustomController(sA.masterTuning,e)}var Pe=class e{program;bank;patchName;lockPreset;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,t){let n=A.workletProcessorChannels[t],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.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.updateChannelTuning(),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 Re=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)=>Pe.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)=>{Pe.applyChannelSnapshot(A,s,n)}),y("%cFinished restoring controllers!",g.info)}};function To(){this.post({messageType:RA.synthesizerSnapshot,messageData:Re.createSynthesizerSnapshot(this)})}function vo(e){Re.applySnapshot(this,e),y("%cFinished applying snapshot!",g.info)}function Rt(e,A,t){if(t<e)return 0;let n=(t-e)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}function Ho(e,A,t,n,s,o,i){let h=currentTime;if(e.isInRelease||h>=e.releaseStartTime&&(e.isInRelease=!0,VA.startRelease(e),ZA.startRelease(e),e.sample.loopingMode===3&&(e.sample.isLooping=!1)),e.modulatedGenerators[r.initialAttenuation]>2500)return e.isInRelease&&(e.finished=!0),e.finished;let a=e.targetKey,I=e.modulatedGenerators[r.fineTune]+this.channelOctaveTuning[e.midiNote]+this.channelTuningCents,d=e.modulatedGenerators[r.coarseTune],C=this.synth.tunings[this.preset.program]?.[e.realKey];if(C!==void 0&&C?.midiNote>=0&&(a=C.midiNote,I+=C.centTuning),e.portamentoFromKey>-1){let E=Math.min((h-e.startTime)/e.portamentoDuration,1),P=a-e.portamentoFromKey;d-=P*(1-E)}I+=(a-e.sample.rootKey)*e.modulatedGenerators[r.scaleTuning];let Q=e.modulatedGenerators[r.vibLfoToPitch];if(Q!==0){let E=e.startTime+OA(e.modulatedGenerators[r.delayVibLFO]),P=He(e.modulatedGenerators[r.freqVibLFO]),X=Rt(E,P,h);I+=X*(Q*this.customControllers[sA.modulationMultiplier])}let B=0,p=e.modulatedGenerators[r.modLfoToPitch],f=e.modulatedGenerators[r.modLfoToVolume],D=e.modulatedGenerators[r.modLfoToFilterFc],w=0;if(p!==0||D!==0||f!==0){let E=e.startTime+OA(e.modulatedGenerators[r.delayModLFO]),P=He(e.modulatedGenerators[r.freqModLFO]),X=Rt(E,P,h);I+=X*(p*this.customControllers[sA.modulationMultiplier]),w=-X*f,B+=X*D}if(this.channelVibrato.depth>0){let E=Rt(e.startTime+this.channelVibrato.delay,this.channelVibrato.rate,h);E&&(I+=E*this.channelVibrato.depth)}let G=e.modulatedGenerators[r.modEnvToPitch],U=e.modulatedGenerators[r.modEnvToFilterFc];if(U!==0||G!==0){let E=ZA.getValue(e,h);B+=E*U,I+=E*G}let J=~~(I+d*100);J!==e.currentTuningCents&&(e.currentTuningCents=J,e.currentTuningCalculated=Math.pow(2,J/1200));let v=new Float32Array(A.length);switch(this.synth.interpolationType){case Fe.fourthOrder:we.getSampleCubic(e,v);break;case Fe.linear:default:we.getSampleLinear(e,v);break;case Fe.nearestNeighbor:we.getSampleNearest(e,v);break}return Ee.apply(e,v,B,this.synth.filterSmoothingFactor),VA.apply(e,v,w,this.synth.volumeEnvelopeSmoothingFactor),this.panVoice(e,v,A,t,n,s,o,i),e.finished}function Yo(e,A=-12e3){this.voices.forEach(t=>{t.realKey===e&&(t.modulatedGenerators[r.releaseVolEnv]=A,t.release())})}function Jo(e,A=!0){e=Math.round(e),this.setCustomController(sA.channelTuning,e),A&&y(`%cFine tuning for %c${this.channelNumber}%c is now set to %c${e}%c cents.`,g.info,g.recognized,g.info,g.value,g.info)}function qo(e){e=Math.round(e),y(`%cChannel ${this.channelNumber} modulation depth. Cents: %c${e}`,g.info,g.value),this.setCustomController(sA.modulationMultiplier,e/50)}function Ko(e){switch(this.dataEntryState){default:break;case FA.RPCoarse:case FA.RPFine:switch(this.midiControllers[m.RPNMsb]|this.midiControllers[m.RPNLsb]>>7){default:break;case 0:if(e===0)break;this.midiControllers[uA+K.pitchWheelRange]|=e;let t=(this.midiControllers[uA+K.pitchWheelRange]>>7)+e/128;y(`%cChannel ${this.channelNumber} bend range. Semitones: %c${t}`,g.info,g.value);break;case 1:let s=this.customControllers[sA.channelTuning]<<7|e;this.setTuning(s*.01220703125);break;case 5:let i=this.customControllers[sA.modulationMultiplier]*50+e/128*100;this.setModulationDepth(i);break;case 16383:this.resetParameters();break}}}var vr=1e3/200;function Po(e,A,t){if(A.transformAmount===0)return A.currentValue=0,0;let n;if(A.sourceUsesCC)n=e[A.sourceIndex];else{let I=A.sourceIndex+uA;switch(A.sourceIndex){case K.noController:n=16383;break;case K.noteOnKeyNum:n=t.midiNote<<7;break;case K.noteOnVelocity:n=t.velocity<<7;break;case K.polyPressure:n=t.pressure<<7;break;default:n=e[I];break}}let s=de[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],o;if(A.secSrcUsesCC)o=e[A.secSrcIndex];else{let I=A.secSrcIndex+uA;switch(A.secSrcIndex){case K.noController:o=16383;break;case K.noteOnKeyNum:o=t.midiNote<<7;break;case K.noteOnVelocity:o=t.velocity<<7;break;case K.polyPressure:o=t.pressure<<7;break;default:o=e[I]}}let i=de[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],h=A.transformAmount;A.isEffectModulator&&h<=1e3&&(h*=vr,h=Math.min(h,1e3));let a=s*i*h;return A.transformType===2&&(a=Math.abs(a)),A.currentValue=a,a}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(I=>{let d=Y[I.modulatorDestination],C=i[I.modulatorDestination]+Po(A,I,e);i[I.modulatorDestination]=Math.max(d.min,Math.min(C,d.max))}),VA.recalculate(e),ZA.recalculate(e);return}let h=new Set([r.initialAttenuation,r.delayVolEnv,r.attackVolEnv,r.holdVolEnv,r.decayVolEnv,r.sustainVolEnv,r.releaseVolEnv,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay]),a=new Set;s.forEach(I=>{if(I.sourceUsesCC===t&&I.sourceIndex===n||I.secSrcUsesCC===t&&I.secSrcIndex===n){let d=I.modulatorDestination;a.has(d)||(i[d]=o[d],Po(A,I,e),s.forEach(C=>{if(C.modulatorDestination===d){let Q=Y[I.modulatorDestination],B=i[I.modulatorDestination]+C.currentValue;i[I.modulatorDestination]=Math.max(Q.min,Math.min(B,Q.max))}}),a.add(d))}}),[...a].some(I=>h.has(I))&&VA.recalculate(e),ZA.recalculate(e)}var de=[];for(let e=0;e<4;e++){de[e]=[[new Float32Array(pA),new Float32Array(pA)],[new Float32Array(pA),new Float32Array(pA)]];for(let A=0;A<pA;A++)de[e][0][0][A]=ue(0,e,A/pA,0),de[e][1][0][A]=ue(0,e,A/pA,1),de[e][0][1][A]=ue(1,e,A/pA,0),de[e][1][1][A]=ue(1,e,A/pA,1)}function Oo(e,A,t=!1){if(e>127){if(!t)return;switch(e){default:return;case Xt.velocityOverride:this.velocityOverride=A}}if(e>=m.lsbForControl1ModulationWheel&&e<=m.lsbForControl13EffectControl2&&e!==m.lsbForControl6DataEntry){let n=e-32;if(this.lockedControllers[n])return;this.midiControllers[n]=this.midiControllers[n]&16256|A&127,this.voices.forEach(s=>WA(s,this.midiControllers,1,n))}if(!this.lockedControllers[e]){switch(this.midiControllers[e]=A<<7,e){case m.allNotesOff:this.stopAllNotes();break;case m.allSoundOff:this.stopAllNotes(!0);break;case m.bankSelect:let n=A;if(!t){switch(this.synth.system){case"gm":y(`%cIgnoring the Bank Select (${A}), as the synth is in GM mode.`,g.info);return;case"xg":n===120||n===126||n===127?this.setDrums(!0):this.channelNumber%16!==GA&&this.setDrums(!1);break;case"gm2":n===120?this.setDrums(!0):this.channelNumber%16!==GA&&this.setDrums(!1)}this.drumChannel&&(n=128),n===128&&!this.drumChannel&&(n=this.getBankSelect())}this.setBankSelect(n);break;case m.lsbForControl0BankSelect:this.synth.system==="xg"?this.drumChannel||A!==127&&this.setBankSelect(A):this.synth.system==="gm2"&&this.setBankSelect(A);break;case m.RPNLsb:this.dataEntryState=FA.RPFine;break;case m.RPNMsb:this.dataEntryState=FA.RPCoarse;break;case m.NRPNMsb:this.dataEntryState=FA.NRPCoarse;break;case m.NRPNLsb:this.dataEntryState=FA.NRPFine;break;case m.dataEntryMsb:this.dataEntryCoarse(A);break;case m.lsbForControl6DataEntry:this.dataEntryFine(A);break;case m.resetAllControllers:this.resetControllersRP15Compliant();break;case m.sustainPedal:A>=64?this.holdPedal=!0:(this.holdPedal=!1,this.sustainedVoices.forEach(s=>{s.release()}),this.sustainedVoices=[]);break;default:this.voices.forEach(s=>WA(s,this.midiControllers,1,e));break}this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:e,controllerValue:A})}}function Vo(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 Zo(e){e&&this.stopAllNotes(!0),this.isMuted=e,this.synth.sendChannelProperties(),this.synth.callEvent("mutechannel",{channel:this.channelNumber,isMuted:e})}function Wo(e,A=!1){this.drumChannel||(e+=this.synth.transposition);let t=Math.trunc(e),n=this.channelTransposeKeyShift+this.customControllers[sA.channelTransposeFine]/100;this.drumChannel&&!A||e===n||(t!==this.channelTransposeKeyShift&&this.controllerChange(m.allNotesOff,127),this.channelTransposeKeyShift=t,this.setCustomController(sA.channelTransposeFine,(e-t)*100),this.synth.sendChannelProperties())}var Oe={pitchBendRange:0,fineTuning:1,coarseTuning:2,modulationDepth:5,resetParameters:16383},Ce={partParameter:1,vibratoRate:8,vibratoDepth:9,vibratoDelay:10,EGAttackTime:100,EGReleaseTime:102,TVFFilterCutoff:32,drumReverb:29};function Xo(e){let A=()=>{this.channelVibrato.delay===0&&this.channelVibrato.rate===0&&this.channelVibrato.depth===0&&(this.channelVibrato.depth=50,this.channelVibrato.rate=8,this.channelVibrato.delay=.6)},t=(n,s,o)=>{o.length>0&&(o=" "+o),y(`%c${n} for %c${this.channelNumber}%c is now set to %c${s}%c${o}.`,g.info,g.recognized,g.info,g.value,g.info)};switch(this.dataEntryState){default:case FA.Idle:break;case FA.NRPFine:if(this.lockGSNRPNParams)return;let n=this.midiControllers[m.NRPNMsb]>>7,s=this.midiControllers[m.NRPNLsb]>>7;switch(n){default:if(e===64)return;L(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${s.toString(16).toUpperCase()} 0x${s.toString(16).toUpperCase()})%c data value: %c${e}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case Ce.partParameter:switch(s){default:if(e===64)return;L(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${n.toString(16)} 0x${s.toString(16)})%c data value: %c${e}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case Ce.vibratoRate:if(e===64)return;A(),this.channelVibrato.rate=e/64*8,t("Vibrato rate",`${e} = ${this.channelVibrato.rate}`,"Hz");break;case Ce.vibratoDepth:if(e===64)return;A(),this.channelVibrato.depth=e/2,t("Vibrato depth",`${e} = ${this.channelVibrato.depth}`,"cents of detune");break;case Ce.vibratoDelay:if(e===64)return;A(),this.channelVibrato.delay=e/64/3,t("Vibrato delay",`${e} = ${this.channelVibrato.delay}`,"seconds");break;case Ce.TVFFilterCutoff:this.controllerChange(m.brightness,e),t("Filter cutoff",e.toString(),"");break;case Ce.EGAttackTime:this.controllerChange(m.attackTime,e),t("EG attack time",e.toString(),"");break;case Ce.EGReleaseTime:this.controllerChange(m.releaseTime,e),t("EG release time",e.toString(),"");break}break;case Ce.drumReverb:let i=e;this.controllerChange(m.reverbDepth,i),t("GS Drum reverb",i.toString(),"percent");break}break;case FA.RPCoarse:case FA.RPFine:let o=this.midiControllers[m.RPNMsb]|this.midiControllers[m.RPNLsb]>>7;switch(o){default:L(`%cUnrecognized RPN for %c${this.channelNumber}%c: %c(0x${o.toString(16)})%c data value: %c${e}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case Oe.pitchBendRange:this.midiControllers[uA+K.pitchWheelRange]=e<<7,t("Pitch bend range",e.toString(),"semitones");break;case Oe.coarseTuning:let i=e-64;this.setCustomController(sA.channelTuningSemitones,i),t("Coarse tuning",i.toString(),"semitones");break;case Oe.fineTuning:this.setTuning(e-64,!1);break;case Oe.modulationDepth:this.setModulationDepth(e*100);break;case Oe.resetParameters:this.resetParameters();break}}}var Ve={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 Hr(e){if(Ve[e]!==void 0)return Ve[e];let A=null,t=null;for(let n of Object.keys(Ve))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=Ve[A],s=Ve[t];return n+(e-A)*(s-n)/(t-A)}return 0}function _o(e,A){return Hr(e)*(A/30)}function zo(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.synth.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 h=this.preset.program;this.synth.tunings[h]?.[o]?.midiNote>=0&&(i=this.synth.tunings[h]?.[o].midiNote),this.velocityOverride>0&&(A=this.velocityOverride);let a=this.synth.keyModifierManager.getVelocity(this.channelNumber,o);a>-1&&(A=a);let I=-1,d=0,C=this.midiControllers[m.portamentoTime]>>7,Q=this.midiControllers[m.portamentoControl],B=Q>>7;if(!this.drumChannel&&B!==i&&this.midiControllers[m.portamentoOnOff]>=8192&&C>0){if(Q!==1){let w=Math.abs(i-B);d=_o(C,w),I=B}this.controllerChange(m.portamentoControl,i)}let p=this.synth.getWorkletVoices(this.channelNumber,i,A,s,o,t),f=0;this.randomPan&&(f=Math.round(Math.random()*1e3-500));let D=this.voices;p.forEach(w=>{w.portamentoFromKey=I,w.portamentoDuration=d,w.overridePan=f;let G=w.exclusiveClass;G!==0&&D.forEach(iA=>{iA.exclusiveClass===G&&iA.exclusiveRelease()}),WA(w,this.midiControllers);let U=w.modulatedGenerators[r.startAddrsOffset]+w.modulatedGenerators[r.startAddrsCoarseOffset]*32768,J=w.modulatedGenerators[r.endAddrOffset]+w.modulatedGenerators[r.endAddrsCoarseOffset]*32768,v=w.modulatedGenerators[r.startloopAddrsOffset]+w.modulatedGenerators[r.startloopAddrsCoarseOffset]*32768,E=w.modulatedGenerators[r.endloopAddrsOffset]+w.modulatedGenerators[r.endloopAddrsCoarseOffset]*32768,P=w.sample,X=iA=>Math.max(0,Math.min(P.sampleData.length-1,iA));if(P.cursor=X(P.cursor+U),P.end=X(P.end+J),P.loopStart=X(P.loopStart+v),P.loopEnd=X(P.loopEnd+E),P.loopEnd<P.loopStart){let iA=P.loopStart;P.loopStart=P.loopEnd,P.loopEnd=iA}P.loopEnd-P.loopStart<1&&(P.loopingMode=0,P.isLooping=!1),w.volumeEnvelope.attenuation=w.volumeEnvelope.attenuationTargetGain,w.currentPan=Math.max(-500,Math.min(500,w.modulatedGenerators[r.pan]))}),this.synth.totalVoicesAmount+=p.length,this.synth.totalVoicesAmount>this.synth.voiceCap&&this.synth.voiceKilling(p.length),D.push(...p),n&&(this.synth.sendChannelProperties(),this.synth.callEvent("noteon",{midiNote:e,channel:this.channelNumber,velocity:A}))}function jo(e){if(e>127||e<0){L("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 $o(e,A){this.voices.forEach(t=>{t.midiNote===e&&(t.pressure=A,WA(t,this.midiControllers,0,K.polyPressure))}),this.synth.callEvent("polypressure",{channel:this.channelNumber,midiNote:e,pressure:A})}function Ar(e){this.midiControllers[uA+K.channelPressure]=e<<7,this.voices.forEach(A=>WA(A,this.midiControllers,0,K.channelPressure)),this.synth.callEvent("channelpressure",{channel:this.channelNumber,pressure:e})}function er(e,A){if(this.lockedControllers[uA+K.pitchWheel])return;let t=A|e<<7;this.synth.callEvent("pitchwheel",{channel:this.channelNumber,MSB:e,LSB:A}),this.midiControllers[uA+K.pitchWheel]=t,this.voices.forEach(n=>WA(n,this.midiControllers,0,K.pitchWheel)),this.synth.sendChannelProperties()}function tr(e){if(e.length!==12)throw new Error("Tuning is not the length of 12.");this.channelOctaveTuning=new Int8Array(128);for(let A=0;A<128;A++)this.channelOctaveTuning[A]=e[A%12]}function nr(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(ot);lockedControllers=Array(ot).fill(!1);customControllers=new Float32Array(Zt);channelTransposeKeyShift=0;channelOctaveTuning=new Int8Array(128);channelTuningCents=0;holdPedal=!1;drumChannel=!1;velocityOverride=0;randomPan=!1;dataEntryState=FA.Idle;bank=0;preset=void 0;lockPreset=!1;presetUsesOverride=!1;lockGSNRPNParams=!1;channelVibrato={delay:0,depth:0,rate:0};isMuted=!1;voices=[];sustainedVoices=[];channelNumber;synth;constructor(A,t,n){this.synth=A,this.preset=t,this.channelNumber=n}setCustomController(A,t){this.customControllers[A]=t,this.updateChannelTuning()}updateChannelTuning(){this.channelTuningCents=this.customControllers[sA.channelTuning]+this.customControllers[sA.channelTransposeFine]+this.customControllers[sA.masterTuning]+this.customControllers[sA.channelTuningSemitones]*100}renderAudio(A,t,n,s,o,i){this.voices=this.voices.filter(h=>!this.renderVoice(h,A,t,n,s,o,i))}setBankSelect(A){this.lockPreset||(this.bank=A)}getBankSelect(){return this.drumChannel?128:this.bank}setPreset(A){this.lockPreset||(delete this.preset,this.preset=A)}setDrums(A){this.lockPreset||this.drumChannel!==A&&(A?(this.channelTransposeKeyShift=0,this.drumChannel=!0,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))):(this.drumChannel=!1,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))),this.presetUsesOverride=!1,this.synth.callEvent("drumchange",{channel:this.channelNumber,isDrumChannel:this.drumChannel}),this.synth.sendChannelProperties())}setVibrato(A,t,n){this.lockGSNRPNParams||(this.channelVibrato.rate=t,this.channelVibrato.delay=n,this.channelVibrato.depth=A)}disableAndLockGSNRPN(){this.lockGSNRPNParams=!0,this.channelVibrato.rate=0,this.channelVibrato.delay=0,this.channelVibrato.depth=0}};IA.prototype.renderVoice=Ho;IA.prototype.panVoice=Fo;IA.prototype.killNote=Yo;IA.prototype.stopAllNotes=Vo;IA.prototype.muteChannel=Zo;IA.prototype.noteOn=zo;IA.prototype.noteOff=jo;IA.prototype.polyPressure=$o;IA.prototype.channelPressure=Ar;IA.prototype.pitchWheel=er;IA.prototype.programChange=nr;IA.prototype.setTuning=Jo;IA.prototype.setOctaveTuning=tr;IA.prototype.setModulationDepth=qo;IA.prototype.transposeChannel=Wo;IA.prototype.controllerChange=Oo;IA.prototype.resetControllers=gs;IA.prototype.resetControllersRP15Compliant=Is;IA.prototype.resetParameters=Es;IA.prototype.dataEntryFine=Ko;IA.prototype.dataEntryCoarse=Xo;function sr(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===GA&&this.workletProcessorChannels[this.workletProcessorChannels.length-1].setDrums(!0)}var mo=.03,po=.07,nn=1,EA=class extends AudioWorkletProcessor{cachedVoices=[];alive=!0;deviceID=LA;interpolationType=Fe.fourthOrder;sequencer=new hA(this);transposition=0;tunings=[];soundfontBankOffset=0;masterGain=nn;midiVolume=1;reverbGain=1;chorusGain=1;voiceCap=_n;pan=0;panLeft=.5;panRight=.5;highPerformanceMode=!1;keyModifierManager=new nt;overrideSoundfont=void 0;workletProcessorChannels=[];system=it;totalVoicesAmount=0;constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem;for(let t=0;t<127;t++)this.tunings.push([]);try{this.soundfontManager=new kt(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);for(let t=0;t<A.processorOptions.midiChannels;t++)this.createWorkletChannel(!1);this.workletProcessorChannels[GA].preset=this.drumPreset,this.workletProcessorChannels[GA].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=ws*(44100/sampleRate),this.panSmoothingFactor=So*(44100/sampleRate),this.filterSmoothingFactor=uo*(44100/sampleRate),this._snapshot=A.processorOptions?.startRenderingData?.snapshot,this.port.onmessage=t=>this.handleMessage(t.data),A.processorOptions.startRenderingData&&(this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers()),y("%cRendering enabled! Starting render.",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(),y("%cSpessaSynth is ready!",g.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}getCachedVoice(A,t,n,s){return this.cachedVoices?.[A]?.[t]?.[n]?.[s]}setCachedVoice(A,t,n,s,o){this.cachedVoices||(this.cachedVoices=[]),this.cachedVoices[A]||(this.cachedVoices[A]=[]),this.cachedVoices[A][t]||(this.cachedVoices[A][t]=[]),this.cachedVoices[A][t][n]||(this.cachedVoices[A][t][n]=[]),this.cachedVoices[A][t][n][s]=o}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:RA.ready,messageData:void 0})}debugMessage(){y({channels:this.workletProcessorChannels,voicesAmount:this.totalVoicesAmount,outputAmount:this._outputsAmount,dumpedSamples:this.workletDumpedSamplesList})}process(A,t){if(!this.alive)return!1;this.sequencer.processTick();let n=0;return this.workletProcessorChannels.forEach((s,o)=>{if(s.voices.length<1||s.isMuted)return;let i,h,a,I,d,C,Q;if(this.oneOutputMode){let B=t[0];i=o%16*2,h=B[i],a=B[i+1]}else i=o%this._outputsAmount+2,h=t[i][0],a=t[i][1],I=t[0][0],d=t[0][1],C=t[1][0],Q=t[1][1];s.renderAudio(h,a,I,d,C,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.lockedControllers,delete A.preset,delete A.customControllers}),delete this.cachedVoices,delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}controllerChange(A,t,n,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=ys;EA.prototype.getWorkletVoices=fo;EA.prototype.handleMessage=Fs;EA.prototype.sendChannelProperties=Gs;EA.prototype.callEvent=Rs;EA.prototype.systemExclusive=Ms;EA.prototype.stopAllChannels=Ro;EA.prototype.createWorkletChannel=sr;EA.prototype.resetAllControllers=as;EA.prototype.setMasterGain=Ns;EA.prototype.setMasterPan=bs;EA.prototype.setMIDIVolume=xs;EA.prototype.transposeAllChannels=Lo;EA.prototype.setMasterTuning=Uo;EA.prototype.getPreset=bo;EA.prototype.reloadSoundFont=Mo;EA.prototype.clearSoundFont=xo;EA.prototype.setEmbeddedSoundFont=Go;EA.prototype.sendPresetList=No;EA.prototype.sendSynthesizerSnapshot=To;EA.prototype.applySynthesizerSnapshot=vo;registerProcessor(Xn,EA);y("%cProcessor succesfully registered!",g.recognized);
|
|
17
|
+
Converted from DLS to SF2 with SpessaSynth`;for(let[a,I]of Object.entries(this.soundFontInfo))y(`%c"${a}": %c"${I}"`,g.info,g.recognized);let o=n.find(a=>a.header==="colh");o||(O(),this.parsingError("No colh chunk!")),this.instrumentAmount=F(o.chunkData,4),y(`%cInstruments amount: %c${this.instrumentAmount}`,g.info,g.recognized);let i=NA(n,"wvpl");i||(O(),this.parsingError("No wvpl chunk!")),this.readDLSSamples(i);let l=NA(n,"lins");l||(O(),this.parsingError("No lins chunk!")),this.readDLSInstrumentList(l),this.presets.sort((a,I)=>a.program-I.program+(a.bank-I.bank)),y(`%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),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=ro;ee.prototype.readDLSInstrument=io;ee.prototype.readRegion=Co;ee.prototype.readLart=Io;ee.prototype.readDLSSamples=ho;var rn=class extends ie{constructor(A,t,n,s,o,i,l,a,I,d,E,Q,B){super(A,i,l,a,I,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=E,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex/2,this.sampleLoopEndIndex+=this.sampleStartIndex/2,this.sampleLength=99999999),this.isDataRaw=B}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],this.sampleData===void 0&&L(`Error decoding sample ${this.sampleName}: Vorbis decode returned undefined.`)}catch(s){L(`Error decoding sample ${this.sampleName}: ${s}`),this.sampleData=new Float32Array(this.sampleLoopEndIndex+1)}}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?(L(`Invalid sample ${this.sampleName}! Invalid length: ${this.sampleLength}`),new Float32Array(1)):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return L("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 lo(e,A,t=!0){let n=[],s=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let o=br(s,e.chunkData,A,t);n.push(o),s++}return n.length>1&&n.pop(),n}function br(e,A,t,n){let s=_(A,20),o=F(A,4)*2,i=F(A,4)*2,l=F(A,4),a=F(A,4),I=F(A,4),d=A[A.currentIndex++];d===255&&(d=60);let E=ts(A[A.currentIndex++]),Q=F(A,2),B=F(A,2);return new rn(s,o,i,l,a,I,d,E,Q,B,t,e,n)}var an=class extends M{constructor(A){super();let t=A.currentIndex;this.generatorType=A[t+1]<<8|A[t],this.generatorValue=oe(A[t+2],A[t+3]),A.currentIndex+=4}};function gn(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new an(e.chunkData));return A.length>1&&A.pop(),A}var In=class extends ae{constructor(A){super(),this.instrumentName=_(A.chunkData,20).trim(),this.instrumentZoneIndex=F(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 Bo(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let n=new In(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 Cn=class extends MA{constructor(A){super(),this.generatorZoneStartIndex=F(A,2),this.modulatorZoneStartIndex=F(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 co(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new Cn(e.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,l=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,l),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 En=class extends re{constructor(A){super(),this.generatorZoneStartIndex=F(A,2),this.modulatorZoneStartIndex=F(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 Qo(e,A,t,n){let s=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new En(e.chunkData);if(s.length>0){let i=o.modulatorZoneStartIndex-s[s.length-1].modulatorZoneStartIndex,l=o.generatorZoneStartIndex-s[s.length-1].generatorZoneStartIndex;s[s.length-1].setZoneSize(i,l),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 hn=class extends ge{constructor(A,t){super(t),this.presetName=_(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=F(A.chunkData,2),this.bank=F(A.chunkData,2),this.presetZoneStartIndex=F(A.chunkData,2),this.library=F(A.chunkData,4),this.genre=F(A.chunkData,4),this.morphology=F(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 uo(e,A,t){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new hn(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 ln=class extends q{constructor(A){let t=F(A,2),n=F(A,2),s=oe(A[A.currentIndex++],A[A.currentIndex++]),o=F(A,2),i=F(A,2);super(t,o,n,s,i)}};function Dt(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new ln(e.chunkData));return A}var kt=class extends Ie{constructor(A,t=!0){super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new x(A),$A("%cParsing SoundFont...",g.info),this.dataArray||(O(),this.parsingError("No data provided!"));let n=z(this.dataArray,!1);this.verifyHeader(n,"riff");let s=_(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=z(this.dataArray);for(this.verifyHeader(i,"list"),_(i.chunkData,4);i.chunkData.length>i.chunkData.currentIndex;){let tA=z(i.chunkData),EA;switch(tA.header.toLowerCase()){case"ifil":case"iver":EA=`${F(tA.chunkData,2)}.${F(tA.chunkData,2)}`,this.soundFontInfo[tA.header]=EA;break;case"icmt":EA=_(tA.chunkData,tA.chunkData.length,void 0,!1),this.soundFontInfo[tA.header]=EA;break;case"dmod":let lA=Dt(tA);lA.pop(),EA=`Modulators: ${lA.length}`;let BA=this.defaultModulators;this.defaultModulators=lA,this.defaultModulators.push(...BA.filter($=>!this.defaultModulators.find(fA=>q.isIdentical($,fA)))),this.soundFontInfo[tA.header]=tA.chunkData;break;default:EA=_(tA.chunkData,tA.chunkData.length),this.soundFontInfo[tA.header]=EA}y(`%c"${tA.header}": %c"${EA}"`,g.info,g.recognized)}let l=z(this.dataArray,!1);this.verifyHeader(l,"list"),this.verifyText(_(this.dataArray,4),"sdta"),y("%cVerifying smpl chunk...",g.warn);let a=z(this.dataArray,!1);this.verifyHeader(a,"smpl");let I;if(o){y("%cSF2Pack detected, attempting to decode the smpl chunk...",g.info);try{I=zA.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+l.size-12)).data[0]}catch(tA){throw O(),new Error(`SF2Pack Ogg Vorbis decode error: ${tA}`)}y(`%cDecoded the smpl chunk! Length: %c${I.length}`,g.info,g.value)}else I=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;y(`%cSkipping sample chunk, length: %c${l.size-12}`,g.info,g.value),this.dataArray.currentIndex+=l.size-12,y("%cLoading preset data chunk...",g.warn);let d=z(this.dataArray);this.verifyHeader(d,"list"),_(d.chunkData,4);let E=z(d.chunkData);this.verifyHeader(E,"phdr");let Q=z(d.chunkData);this.verifyHeader(Q,"pbag");let B=z(d.chunkData);this.verifyHeader(B,"pmod");let p=z(d.chunkData);this.verifyHeader(p,"pgen");let f=z(d.chunkData);this.verifyHeader(f,"inst");let D=z(d.chunkData);this.verifyHeader(D,"ibag");let w=z(d.chunkData);this.verifyHeader(w,"imod");let R=z(d.chunkData);this.verifyHeader(R,"igen");let Y=z(d.chunkData);this.verifyHeader(Y,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...lo(Y,I,!o));let J=gn(R),T=Dt(w),C=co(D,J,T,this.samples);this.instruments=Bo(f,C);let P=gn(p),X=Dt(B),iA=Qo(Q,P,X,this.instruments);this.presets.push(...uo(E,iA,this.defaultModulators)),this.presets.sort((tA,EA)=>tA.program-EA.program+(tA.bank-EA.bank)),y(`%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),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 qe(e){let A=e.slice(8,12),t=new x(A);return _(t,4,void 0,!1).toLowerCase()==="dls "?new ee(e):new kt(e,!1)}var wt=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 Se.addNewSoundFont:this.addNewSoundFont(t[0],t[1],t[2]);break;case Se.reloadSoundFont:this.reloadManager(t);break;case Se.deleteSoundFont:this.deleteSoundFont(t);break;case Se.rearrangeSoundFonts:this.rearrangeSoundFonts(t)}}getPresetList(){return this.presetList.slice()}reloadManager(A){let t=qe(A);this.soundfontList=[],this.soundfontList.push({id:"main",bankOffset:0,soundfont:t}),this.generatePresetList(),this.ready()}deleteSoundFont(A){if(this.soundfontList.length===0){L("1 soundfont left. Aborting!");return}let t=this.soundfontList.findIndex(n=>n.id===A);if(t===-1){L(`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:qe(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 Fe={linear:0,nearestNeighbor:1,fourthOrder:2},we=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 l=0;l<t.length;l++){for(;s>=n.loopEnd;)s-=i;let a=~~s,I=a+1;for(;I>=n.loopEnd;)I-=i;let d=s-a,E=o[I],Q=o[a];t[l]=Q+(E-Q)*d,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let i=0;i<t.length;i++){let l=~~s,a=l+1;if(a>=n.end){A.finished=!0;return}let I=s-l,d=o[a],E=o[l];t[i]=E+(d-E)*I,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 l=0;l<t.length;l++){for(;s>=n.loopEnd;)s-=o;let a=~~s+1;for(;a>=n.loopEnd;)a-=o;t[l]=i[a],s+=n.playbackStep*A.currentTuningCalculated}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let l=0;l<t.length;l++){let a=~~s+1;if(a>=n.end){A.finished=!0;return}t[l]=i[a],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 l=0;l<t.length;l++){for(;s>=n.loopEnd;)s-=i;let a=~~s,I=a+1,d=I+1,E=d+1,Q=s-a;I>=n.loopEnd&&(I-=i),d>=n.loopEnd&&(d-=i),E>=n.loopEnd&&(E-=i);let B=o[a],p=o[I],f=o[d],D=o[E],w=.5*(f-B),R=B-2.5*p+2*f-.5*D,Y=.5*(D-B)+1.5*(p-f);t[l]=((Y*Q+R)*Q+w)*Q+p,s+=n.playbackStep*A.currentTuningCalculated}}else{if(n.loopingMode===2&&!A.isInRelease)return;for(let i=0;i<t.length;i++){let l=~~s,a=l+1,I=a+1,d=I+1,E=s-l;if(a>=n.end||I>=n.end||d>=n.end){A.finished=!0;return}let Q=o[l],B=o[a],p=o[I],f=o[d],D=.5*(p-Q),w=Q-2.5*B+2*p-.5*f,R=.5*(f-Q)+1.5*(B-p);t[i]=((R*E+w)*E+D)*E+B,s+=n.playbackStep*A.currentTuningCalculated}}A.sample.cursor=s}};var fo=.1,Ce=class e{static cachedCoefficients=[];a0=0;a1=0;a2=0;a3=0;a4=0;x1=0;x2=0;y1=0;y2=0;resonanceCb=0;currentInitialFc=13500;lastTargetCutoff=1/0;initialized=!1;static apply(A,t,n,s){let o=A.modulatedGenerators[r.initialFilterFc],i=A.filter;i.initialized?i.currentInitialFc+=(o-i.currentInitialFc)*s:(i.initialized=!0,i.currentInitialFc=o);let l=i.currentInitialFc+n;if(i.currentInitialFc>13499&&l>13499&&i.resonanceCb===0){i.currentInitialFc=13500;return}let a=A.modulatedGenerators[r.initialFilterQ];(Math.abs(i.lastTargetCutoff-l)>1||i.resonanceCb!==a)&&(i.lastTargetCutoff=l,i.resonanceCb=a,e.calculateCoefficients(i,l));for(let I=0;I<t.length;I++){let d=t[I],E=i.a0*d+i.a1*i.x1+i.a2*i.x2-i.a3*i.y1-i.a4*i.y2;i.x2=i.x1,i.x1=d,i.y2=i.y1,i.y1=E,t[I]=E}}static calculateCoefficients(A,t){t=~~t;let n=A.resonanceCb,s=e.cachedCoefficients?.[n]?.[t];if(s!==void 0){A.a0=s.a0,A.a1=s.a1,A.a2=s.a2,A.a3=s.a3,A.a4=s.a4;return}let o=He(t);o=Math.min(o,.45*sampleRate);let i=n/10,l=PA(-1*(i-3.01)),a=1/Math.sqrt(PA(-i)),I=2*Math.PI*o/sampleRate,d=Math.cos(I),E=Math.sin(I)/(2*l),Q=(1-d)*a,B=Q/2,p=B,f=1+E,D=-2*d,w=1-E,R={};R.a0=B/f,R.a1=Q/f,R.a2=p/f,R.a3=D/f,R.a4=w/f,A.a0=R.a0,A.a1=R.a1,A.a2=R.a2,A.a3=R.a3,A.a4=R.a4,e.cachedCoefficients[n]===void 0&&(e.cachedCoefficients[n]=[]),e.cachedCoefficients[n][t]=R}},Bn=new Ce;Bn.resonanceCb=0;for(let e=1500;e<13500;e++)Bn.currentInitialFc=e,Ce.calculateCoefficients(Bn,e);var pA=16384,te=new Float32Array(pA+1),Qe=new Float32Array(pA+1);te[0]=0;te[te.length-1]=1;Qe[0]=0;Qe[Qe.length-1]=1;for(let e=1;e<pA-1;e++){let A=-.4166666666666667*Math.log(e/(te.length-1))/Math.LN10;Qe[e]=1-A,te[te.length-1-e]=A}function ue(e,A,t,n){switch(e&&(t=1-t),A){case QA.linear:return n?t*2-1:t;case QA.switch:return t=t>.5?1:0,n?t*2-1:t;case QA.concave:return n?(t=t*2-1,t<0?-te[~~(t*-pA)]:te[~~(t*pA)]):te[~~(t*pA)];case QA.convex:return n?(t=t*2-1,t<0?-Qe[~~(t*-pA)]:Qe[~~(t*pA)]):Qe[~~(t*pA)]}}var cn=1,Qn=new Float32Array(1e3);for(let e=0;e<Qn.length;e++)Qn[e]=ue(0,QA.convex,e/1e3,0);var ZA=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=OA(A.modulatedGenerators[r.attackModEnv]);let n=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvDecay],s=OA(A.modulatedGenerators[r.decayModEnv]+n);t.decayDuration=s*(1-t.sustainLevel);let o=(60-A.midiNote)*A.modulatedGenerators[r.keyNumToModEnvHold];t.holdDuration=OA(o+A.modulatedGenerators[r.holdModEnv]);let i=OA(A.modulatedGenerators[r.releaseModEnv]);t.releaseDuration=i*t.releaseStartLevel,t.delayEnd=A.startTime+OA(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=Qn[~~((1-(s.attackEnd-t)/s.attackDuration)*1e3)]:t<s.holdEnd?s.currentValue=cn:t<s.decayEnd?s.currentValue=(1-(s.decayEnd-t)/s.decayDuration)*(s.sustainLevel-cn)+cn:s.currentValue=s.sustainLevel,s.currentValue)}};var Lr=-2320,Ur=-1130,Ft=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,l,a){this.sampleData=A,this.playbackStep=t,this.cursor=n,this.rootKey=s,this.loopStart=o,this.loopEnd=i,this.end=l,this.loopingMode=a,this.isLooping=this.loopingMode===1||this.loopingMode===3}},Ke=class e{sample;filter=new Ce;generators;modulators=[];modulatedGenerators;finished=!1;isInRelease=!1;channelNumber=0;velocity=0;midiNote=0;pressure=0;targetKey=0;modulationEnvelope=new ZA;volumeEnvelope;startTime=0;releaseStartTime=1/0;currentTuningCents=0;currentTuningCalculated=1;currentPan=0;realKey;portamentoFromKey=-1;portamentoDuration=0;overridePan=0;exclusiveClass=0;constructor(A,t,n,s,o,i,l,a,I,d){this.sample=t,this.generators=I,this.exclusiveClass=this.generators[r.exclusiveClass],this.modulatedGenerators=new Int16Array(I),this.modulators=d,this.velocity=s,this.midiNote=n,this.channelNumber=o,this.startTime=i,this.targetKey=l,this.realKey=a,this.volumeEnvelope=new VA(A,I[r.sustainVolEnv])}static copy(A,t){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 e(A.volumeEnvelope.sampleRate,s,A.midiNote,A.velocity,A.channelNumber,t,A.targetKey,A.realKey,A.generators,A.modulators.map(o=>q.copy(o)))}exclusiveRelease(){this.release(yo),this.modulatedGenerators[r.releaseVolEnv]=Lr,this.modulatedGenerators[r.releaseModEnv]=Ur,VA.recalculate(this),ZA.recalculate(this)}release(A=po){this.releaseStartTime=currentTime,this.releaseStartTime-this.startTime<A&&(this.releaseStartTime=this.startTime+A)}};function mo(e,A,t,n,s,o=!1){let i,l=this.workletProcessorChannels[e],a=this.keyModifierManager.hasOverridePatch(e,A),I=l.getBankSelect(),d=l.preset.program;if(a){let B=this.keyModifierManager.getPatch(e,A);I=B.bank,d=B.program}let E=this.getCachedVoice(I,d,A,t);if(E!==void 0)return E.map(B=>Ke.copy(B,n));let Q=l.preset;return a&&(Q=this.soundfontManager.getPreset(I,d)),i=Q.getSamplesAndGenerators(A,t).reduce((B,p)=>{if(p.sample.getAudioData()===void 0)return L(`Discarding invalid sample: ${p.sample.sampleName}`),B;let f=new Int16Array(60);for(let C=0;C<60;C++)f[C]=Xn(C,p.presetGenerators,p.instrumentGenerators);f[r.initialAttenuation]=Math.floor(f[r.initialAttenuation]*.4);let D=p.sample.samplePitch;f[r.overridingRootKey]>-1&&(D=f[r.overridingRootKey]);let w=A;f[r.keyNum]>-1&&(w=f[r.keyNum]);let R=p.sample.sampleLoopStartIndex,Y=p.sample.sampleLoopEndIndex,J=f[r.sampleModes],T=new Ft(p.sample.sampleData,p.sample.sampleRate/sampleRate*Math.pow(2,p.sample.samplePitchCorrection/1200),0,D,R,Y,Math.floor(p.sample.sampleData.length)-1,J);return f[r.velocity]>-1&&(t=f[r.velocity]),o&&Wn([{Sample:p.sample.sampleName,Generators:f,Modulators:p.modulators.map(C=>q.debugString(C)),Velocity:t,TargetKey:w,MidiNote:A,WorkletSample:T}]),B.push(new Ke(sampleRate,T,A,t,e,n,w,s,f,p.modulators.map(C=>q.copy(C)),this.filterSmoothingFactor)),B},[]),this.setCachedVoice(I,d,A,t,i.map(B=>Ke.copy(B,n))),i}var Do=.05,Tr=4600,vr=2e3,So=Math.PI/2,Rt=-500,ko=500,un=ko-Rt,wo=new Float32Array(un+1),Fo=new Float32Array(un+1);for(let e=Rt;e<=ko;e++){let A=(e-Rt)/un,t=e-Rt;wo[t]=Math.cos(So*A),Fo[t]=Math.sin(So*A)}function Ro(e,A,t,n,s,o,i,l){if(isNaN(A[0]))return;let a;e.overridePan?a=e.overridePan:(e.currentPan+=(e.modulatedGenerators[r.pan]-e.currentPan)*this.synth.panSmoothingFactor,a=e.currentPan);let I=this.synth.currentGain,d=~~(a+500),E=wo[d]*I*this.synth.panLeft,Q=Fo[d]*I*this.synth.panRight;if(!this.synth.oneOutputMode){let B=e.modulatedGenerators[r.reverbEffectsSend];if(B>0){let f=this.synth.reverbGain*I*(B/Tr);for(let D=0;D<A.length;D++)s[D]+=f*A[D];o.set(s)}let p=e.modulatedGenerators[r.chorusEffectsSend];if(p>0){let f=this.synth.chorusGain*p/vr,D=E*f,w=Q*f;for(let R=0;R<A.length;R++)i[R]+=D*A[R],l[R]+=w*A[R]}}if(E>0)for(let B=0;B<A.length;B++)t[B]+=E*A[B];if(Q>0)for(let B=0;B<A.length;B++)n[B]+=Q*A[B]}function Go(e=!1){y("%cStop all received!",g.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].stopAllNotes(e);this.callEvent("stopall",void 0)}function Mo(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 xo(e,A=!1){this.clearSoundFont(!1,A);try{A?(this.overrideSoundfont=qe(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(),y("%cSpessaSynth is ready!",g.recognized)}function No(e=!0,A=!0){this.stopAllChannels(!0),A&&(delete this.overrideSoundfont,this.overrideSoundfont=void 0),this.defaultPreset=this.getPreset(0,0),this.drumPreset=this.getPreset(128,0),this.cachedVoices=[];for(let t=0;t<this.workletProcessorChannels.length;t++){let n=this.workletProcessorChannels[t];(!A||A&&n.presetUsesOverride)&&(n.lockPreset=!1),n.programChange(n.preset.program)}e&&this.sendPresetList()}function bo(){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 Lo(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 Uo(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 To(e){e=Math.round(e);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].setCustomController(sA.masterTuning,e)}var Pe=class e{program;bank;patchName;lockPreset;midiControllers;lockedControllers;customControllers;lockVibrato;channelVibrato;channelTransposeKeyShift;channelOctaveTuning;isMuted;velocityOverride;drumChannel;static getChannelSnapshot(A,t){let n=A.workletProcessorChannels[t],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.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.updateChannelTuning(),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 Re=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)=>Pe.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)=>{Pe.applyChannelSnapshot(A,s,n)}),y("%cFinished restoring controllers!",g.info)}};function vo(){this.post({messageType:RA.synthesizerSnapshot,messageData:Re.createSynthesizerSnapshot(this)})}function Ho(e){Re.applySnapshot(this,e),y("%cFinished applying snapshot!",g.info)}function Gt(e,A,t){if(t<e)return 0;let n=(t-e)/(1/A)+.25;return Math.abs(n-~~(n+.5))*4-1}function Yo(e,A,t,n,s,o,i){let l=currentTime;if(e.isInRelease||l>=e.releaseStartTime&&(e.isInRelease=!0,VA.startRelease(e),ZA.startRelease(e),e.sample.loopingMode===3&&(e.sample.isLooping=!1)),e.modulatedGenerators[r.initialAttenuation]>2500)return e.isInRelease&&(e.finished=!0),e.finished;let a=e.targetKey,I=e.modulatedGenerators[r.fineTune]+this.channelOctaveTuning[e.midiNote]+this.channelTuningCents,d=e.modulatedGenerators[r.coarseTune],E=this.synth.tunings[this.preset.program]?.[e.realKey];if(E!==void 0&&E?.midiNote>=0&&(a=E.midiNote,I+=E.centTuning),e.portamentoFromKey>-1){let C=Math.min((l-e.startTime)/e.portamentoDuration,1),P=a-e.portamentoFromKey;d-=P*(1-C)}I+=(a-e.sample.rootKey)*e.modulatedGenerators[r.scaleTuning];let Q=e.modulatedGenerators[r.vibLfoToPitch];if(Q!==0){let C=e.startTime+OA(e.modulatedGenerators[r.delayVibLFO]),P=He(e.modulatedGenerators[r.freqVibLFO]),X=Gt(C,P,l);I+=X*(Q*this.customControllers[sA.modulationMultiplier])}let B=0,p=e.modulatedGenerators[r.modLfoToPitch],f=e.modulatedGenerators[r.modLfoToVolume],D=e.modulatedGenerators[r.modLfoToFilterFc],w=0;if(p!==0||D!==0||f!==0){let C=e.startTime+OA(e.modulatedGenerators[r.delayModLFO]),P=He(e.modulatedGenerators[r.freqModLFO]),X=Gt(C,P,l);I+=X*(p*this.customControllers[sA.modulationMultiplier]),w=-X*f,B+=X*D}if(this.channelVibrato.depth>0){let C=Gt(e.startTime+this.channelVibrato.delay,this.channelVibrato.rate,l);C&&(I+=C*this.channelVibrato.depth)}let R=e.modulatedGenerators[r.modEnvToPitch],Y=e.modulatedGenerators[r.modEnvToFilterFc];if(Y!==0||R!==0){let C=ZA.getValue(e,l);B+=C*Y,I+=C*R}let J=~~(I+d*100);J!==e.currentTuningCents&&(e.currentTuningCents=J,e.currentTuningCalculated=Math.pow(2,J/1200));let T=new Float32Array(A.length);switch(this.synth.interpolationType){case Fe.fourthOrder:we.getSampleCubic(e,T);break;case Fe.linear:default:we.getSampleLinear(e,T);break;case Fe.nearestNeighbor:we.getSampleNearest(e,T);break}return Ce.apply(e,T,B,this.synth.filterSmoothingFactor),VA.apply(e,T,w,this.synth.volumeEnvelopeSmoothingFactor),this.panVoice(e,T,A,t,n,s,o,i),e.finished}function Jo(e,A=-12e3){this.voices.forEach(t=>{t.realKey===e&&(t.modulatedGenerators[r.releaseVolEnv]=A,t.release())})}function qo(e,A=!0){e=Math.round(e),this.setCustomController(sA.channelTuning,e),A&&y(`%cFine tuning for %c${this.channelNumber}%c is now set to %c${e}%c cents.`,g.info,g.recognized,g.info,g.value,g.info)}function Ko(e){e=Math.round(e),y(`%cChannel ${this.channelNumber} modulation depth. Cents: %c${e}`,g.info,g.value),this.setCustomController(sA.modulationMultiplier,e/50)}function Po(e){switch(this.dataEntryState){default:break;case FA.RPCoarse:case FA.RPFine:switch(this.midiControllers[m.RPNMsb]|this.midiControllers[m.RPNLsb]>>7){default:break;case 0:if(e===0)break;this.midiControllers[uA+K.pitchWheelRange]|=e;let t=(this.midiControllers[uA+K.pitchWheelRange]>>7)+e/128;y(`%cChannel ${this.channelNumber} bend range. Semitones: %c${t}`,g.info,g.value);break;case 1:let s=this.customControllers[sA.channelTuning]<<7|e;this.setTuning(s*.01220703125);break;case 5:let i=this.customControllers[sA.modulationMultiplier]*50+e/128*100;this.setModulationDepth(i);break;case 16383:this.resetParameters();break}}}var Hr=1e3/200;function Oo(e,A,t){if(A.transformAmount===0)return A.currentValue=0,0;let n;if(A.sourceUsesCC)n=e[A.sourceIndex];else{let I=A.sourceIndex+uA;switch(A.sourceIndex){case K.noController:n=16383;break;case K.noteOnKeyNum:n=t.midiNote<<7;break;case K.noteOnVelocity:n=t.velocity<<7;break;case K.polyPressure:n=t.pressure<<7;break;default:n=e[I];break}}let s=de[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][n],o;if(A.secSrcUsesCC)o=e[A.secSrcIndex];else{let I=A.secSrcIndex+uA;switch(A.secSrcIndex){case K.noController:o=16383;break;case K.noteOnKeyNum:o=t.midiNote<<7;break;case K.noteOnVelocity:o=t.velocity<<7;break;case K.polyPressure:o=t.pressure<<7;break;default:o=e[I]}}let i=de[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],l=A.transformAmount;A.isEffectModulator&&l<=1e3&&(l*=Hr,l=Math.min(l,1e3));let a=s*i*l;return A.transformType===2&&(a=Math.abs(a)),A.currentValue=a,a}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(I=>{let d=H[I.modulatorDestination],E=i[I.modulatorDestination]+Oo(A,I,e);i[I.modulatorDestination]=Math.max(d.min,Math.min(E,d.max))}),VA.recalculate(e),ZA.recalculate(e);return}let l=new Set([r.initialAttenuation,r.delayVolEnv,r.attackVolEnv,r.holdVolEnv,r.decayVolEnv,r.sustainVolEnv,r.releaseVolEnv,r.keyNumToVolEnvHold,r.keyNumToVolEnvDecay]),a=new Set;s.forEach(I=>{if(I.sourceUsesCC===t&&I.sourceIndex===n||I.secSrcUsesCC===t&&I.secSrcIndex===n){let d=I.modulatorDestination;a.has(d)||(i[d]=o[d],Oo(A,I,e),s.forEach(E=>{if(E.modulatorDestination===d){let Q=H[I.modulatorDestination],B=i[I.modulatorDestination]+E.currentValue;i[I.modulatorDestination]=Math.max(Q.min,Math.min(B,Q.max))}}),a.add(d))}}),[...a].some(I=>l.has(I))&&VA.recalculate(e),ZA.recalculate(e)}var de=[];for(let e=0;e<4;e++){de[e]=[[new Float32Array(pA),new Float32Array(pA)],[new Float32Array(pA),new Float32Array(pA)]];for(let A=0;A<pA;A++)de[e][0][0][A]=ue(0,e,A/pA,0),de[e][1][0][A]=ue(0,e,A/pA,1),de[e][0][1][A]=ue(1,e,A/pA,0),de[e][1][1][A]=ue(1,e,A/pA,1)}function Vo(e,A,t=!1){if(e>127){if(!t)return;switch(e){default:return;case _t.velocityOverride:this.velocityOverride=A}}if(e>=m.lsbForControl1ModulationWheel&&e<=m.lsbForControl13EffectControl2&&e!==m.lsbForControl6DataEntry){let n=e-32;if(this.lockedControllers[n])return;this.midiControllers[n]=this.midiControllers[n]&16256|A&127,this.voices.forEach(s=>WA(s,this.midiControllers,1,n))}if(!this.lockedControllers[e]){switch(this.midiControllers[e]=A<<7,e){case m.allNotesOff:this.stopAllNotes();break;case m.allSoundOff:this.stopAllNotes(!0);break;case m.bankSelect:let n=A;if(!t){switch(this.synth.system){case"gm":y(`%cIgnoring the Bank Select (${A}), as the synth is in GM mode.`,g.info);return;case"xg":n===120||n===126||n===127?this.setDrums(!0):this.channelNumber%16!==GA&&this.setDrums(!1);break;case"gm2":n===120?this.setDrums(!0):this.channelNumber%16!==GA&&this.setDrums(!1)}this.drumChannel&&(n=128),n===128&&!this.drumChannel&&(n=this.getBankSelect())}this.setBankSelect(n);break;case m.lsbForControl0BankSelect:this.synth.system==="xg"?this.drumChannel||A!==127&&this.setBankSelect(A):this.synth.system==="gm2"&&this.setBankSelect(A);break;case m.RPNLsb:this.dataEntryState=FA.RPFine;break;case m.RPNMsb:this.dataEntryState=FA.RPCoarse;break;case m.NRPNMsb:this.dataEntryState=FA.NRPCoarse;break;case m.NRPNLsb:this.dataEntryState=FA.NRPFine;break;case m.dataEntryMsb:this.dataEntryCoarse(A);break;case m.lsbForControl6DataEntry:this.dataEntryFine(A);break;case m.resetAllControllers:this.resetControllersRP15Compliant();break;case m.sustainPedal:A>=64?this.holdPedal=!0:(this.holdPedal=!1,this.sustainedVoices.forEach(s=>{s.release()}),this.sustainedVoices=[]);break;default:this.voices.forEach(s=>WA(s,this.midiControllers,1,e));break}this.synth.callEvent("controllerchange",{channel:this.channelNumber,controllerNumber:e,controllerValue:A})}}function Zo(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 Wo(e){e&&this.stopAllNotes(!0),this.isMuted=e,this.synth.sendChannelProperties(),this.synth.callEvent("mutechannel",{channel:this.channelNumber,isMuted:e})}function Xo(e,A=!1){this.drumChannel||(e+=this.synth.transposition);let t=Math.trunc(e),n=this.channelTransposeKeyShift+this.customControllers[sA.channelTransposeFine]/100;this.drumChannel&&!A||e===n||(t!==this.channelTransposeKeyShift&&this.controllerChange(m.allNotesOff,127),this.channelTransposeKeyShift=t,this.setCustomController(sA.channelTransposeFine,(e-t)*100),this.synth.sendChannelProperties())}var Oe={pitchBendRange:0,fineTuning:1,coarseTuning:2,modulationDepth:5,resetParameters:16383},Ee={partParameter:1,vibratoRate:8,vibratoDepth:9,vibratoDelay:10,EGAttackTime:100,EGReleaseTime:102,TVFFilterCutoff:32,drumReverb:29};function _o(e){let A=()=>{this.channelVibrato.delay===0&&this.channelVibrato.rate===0&&this.channelVibrato.depth===0&&(this.channelVibrato.depth=50,this.channelVibrato.rate=8,this.channelVibrato.delay=.6)},t=(n,s,o)=>{o.length>0&&(o=" "+o),y(`%c${n} for %c${this.channelNumber}%c is now set to %c${s}%c${o}.`,g.info,g.recognized,g.info,g.value,g.info)};switch(this.dataEntryState){default:case FA.Idle:break;case FA.NRPFine:if(this.lockGSNRPNParams)return;let n=this.midiControllers[m.NRPNMsb]>>7,s=this.midiControllers[m.NRPNLsb]>>7;switch(n){default:if(e===64)return;L(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${s.toString(16).toUpperCase()} 0x${s.toString(16).toUpperCase()})%c data value: %c${e}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case Ee.partParameter:switch(s){default:if(e===64)return;L(`%cUnrecognized NRPN for %c${this.channelNumber}%c: %c(0x${n.toString(16)} 0x${s.toString(16)})%c data value: %c${e}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case Ee.vibratoRate:if(e===64)return;A(),this.channelVibrato.rate=e/64*8,t("Vibrato rate",`${e} = ${this.channelVibrato.rate}`,"Hz");break;case Ee.vibratoDepth:if(e===64)return;A(),this.channelVibrato.depth=e/2,t("Vibrato depth",`${e} = ${this.channelVibrato.depth}`,"cents of detune");break;case Ee.vibratoDelay:if(e===64)return;A(),this.channelVibrato.delay=e/64/3,t("Vibrato delay",`${e} = ${this.channelVibrato.delay}`,"seconds");break;case Ee.TVFFilterCutoff:this.controllerChange(m.brightness,e),t("Filter cutoff",e.toString(),"");break;case Ee.EGAttackTime:this.controllerChange(m.attackTime,e),t("EG attack time",e.toString(),"");break;case Ee.EGReleaseTime:this.controllerChange(m.releaseTime,e),t("EG release time",e.toString(),"");break}break;case Ee.drumReverb:let i=e;this.controllerChange(m.reverbDepth,i),t("GS Drum reverb",i.toString(),"percent");break}break;case FA.RPCoarse:case FA.RPFine:let o=this.midiControllers[m.RPNMsb]|this.midiControllers[m.RPNLsb]>>7;switch(o){default:L(`%cUnrecognized RPN for %c${this.channelNumber}%c: %c(0x${o.toString(16)})%c data value: %c${e}`,g.warn,g.recognized,g.warn,g.unrecognized,g.warn,g.value);break;case Oe.pitchBendRange:this.midiControllers[uA+K.pitchWheelRange]=e<<7,t("Pitch bend range",e.toString(),"semitones");break;case Oe.coarseTuning:let i=e-64;this.setCustomController(sA.channelTuningSemitones,i),t("Coarse tuning",i.toString(),"semitones");break;case Oe.fineTuning:this.setTuning(e-64,!1);break;case Oe.modulationDepth:this.setModulationDepth(e*100);break;case Oe.resetParameters:this.resetParameters();break}}}var Ve={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 Yr(e){if(Ve[e]!==void 0)return Ve[e];let A=null,t=null;for(let n of Object.keys(Ve))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=Ve[A],s=Ve[t];return n+(e-A)*(s-n)/(t-A)}return 0}function zo(e,A){return Yr(e)*(A/30)}function jo(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.synth.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 l=this.preset.program;this.synth.tunings[l]?.[o]?.midiNote>=0&&(i=this.synth.tunings[l]?.[o].midiNote),this.velocityOverride>0&&(A=this.velocityOverride);let a=this.synth.keyModifierManager.getVelocity(this.channelNumber,o);a>-1&&(A=a);let I=-1,d=0,E=this.midiControllers[m.portamentoTime]>>7,Q=this.midiControllers[m.portamentoControl],B=Q>>7;if(!this.drumChannel&&B!==i&&this.midiControllers[m.portamentoOnOff]>=8192&&E>0){if(Q!==1){let w=Math.abs(i-B);d=zo(E,w),I=B}this.controllerChange(m.portamentoControl,i)}let p=this.synth.getWorkletVoices(this.channelNumber,i,A,s,o,t),f=0;this.randomPan&&(f=Math.round(Math.random()*1e3-500));let D=this.voices;p.forEach(w=>{w.portamentoFromKey=I,w.portamentoDuration=d,w.overridePan=f;let R=w.exclusiveClass;R!==0&&D.forEach(iA=>{iA.exclusiveClass===R&&iA.exclusiveRelease()}),WA(w,this.midiControllers);let Y=w.modulatedGenerators[r.startAddrsOffset]+w.modulatedGenerators[r.startAddrsCoarseOffset]*32768,J=w.modulatedGenerators[r.endAddrOffset]+w.modulatedGenerators[r.endAddrsCoarseOffset]*32768,T=w.modulatedGenerators[r.startloopAddrsOffset]+w.modulatedGenerators[r.startloopAddrsCoarseOffset]*32768,C=w.modulatedGenerators[r.endloopAddrsOffset]+w.modulatedGenerators[r.endloopAddrsCoarseOffset]*32768,P=w.sample,X=iA=>Math.max(0,Math.min(P.sampleData.length-1,iA));if(P.cursor=X(P.cursor+Y),P.end=X(P.end+J),P.loopStart=X(P.loopStart+T),P.loopEnd=X(P.loopEnd+C),P.loopEnd<P.loopStart){let iA=P.loopStart;P.loopStart=P.loopEnd,P.loopEnd=iA}P.loopEnd-P.loopStart<1&&(P.loopingMode=0,P.isLooping=!1),w.volumeEnvelope.attenuation=w.volumeEnvelope.attenuationTargetGain,w.currentPan=Math.max(-500,Math.min(500,w.modulatedGenerators[r.pan]))}),this.synth.totalVoicesAmount+=p.length,this.synth.totalVoicesAmount>this.synth.voiceCap&&this.synth.voiceKilling(p.length),D.push(...p),n&&(this.synth.sendChannelProperties(),this.synth.callEvent("noteon",{midiNote:e,channel:this.channelNumber,velocity:A}))}function $o(e){if(e>127||e<0){L("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 Ar(e,A){this.voices.forEach(t=>{t.midiNote===e&&(t.pressure=A,WA(t,this.midiControllers,0,K.polyPressure))}),this.synth.callEvent("polypressure",{channel:this.channelNumber,midiNote:e,pressure:A})}function er(e){this.midiControllers[uA+K.channelPressure]=e<<7,this.voices.forEach(A=>WA(A,this.midiControllers,0,K.channelPressure)),this.synth.callEvent("channelpressure",{channel:this.channelNumber,pressure:e})}function tr(e,A){if(this.lockedControllers[uA+K.pitchWheel])return;let t=A|e<<7;this.synth.callEvent("pitchwheel",{channel:this.channelNumber,MSB:e,LSB:A}),this.midiControllers[uA+K.pitchWheel]=t,this.voices.forEach(n=>WA(n,this.midiControllers,0,K.pitchWheel)),this.synth.sendChannelProperties()}function nr(e){if(e.length!==12)throw new Error("Tuning is not the length of 12.");this.channelOctaveTuning=new Int8Array(128);for(let A=0;A<128;A++)this.channelOctaveTuning[A]=e[A%12]}function sr(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(ot);lockedControllers=Array(ot).fill(!1);customControllers=new Float32Array(Wt);channelTransposeKeyShift=0;channelOctaveTuning=new Int8Array(128);channelTuningCents=0;holdPedal=!1;drumChannel=!1;velocityOverride=0;randomPan=!1;dataEntryState=FA.Idle;bank=0;preset=void 0;lockPreset=!1;presetUsesOverride=!1;lockGSNRPNParams=!1;channelVibrato={delay:0,depth:0,rate:0};isMuted=!1;voices=[];sustainedVoices=[];channelNumber;synth;constructor(A,t,n){this.synth=A,this.preset=t,this.channelNumber=n}setCustomController(A,t){this.customControllers[A]=t,this.updateChannelTuning()}updateChannelTuning(){this.channelTuningCents=this.customControllers[sA.channelTuning]+this.customControllers[sA.channelTransposeFine]+this.customControllers[sA.masterTuning]+this.customControllers[sA.channelTuningSemitones]*100}renderAudio(A,t,n,s,o,i){this.voices=this.voices.filter(l=>!this.renderVoice(l,A,t,n,s,o,i))}setBankSelect(A){this.lockPreset||(this.bank=A)}getBankSelect(){return this.drumChannel?128:this.bank}setPreset(A){this.lockPreset||(delete this.preset,this.preset=A)}setDrums(A){this.lockPreset||this.drumChannel!==A&&(A?(this.channelTransposeKeyShift=0,this.drumChannel=!0,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))):(this.drumChannel=!1,this.setPreset(this.synth.getPreset(this.getBankSelect(),this.preset.program))),this.presetUsesOverride=!1,this.synth.callEvent("drumchange",{channel:this.channelNumber,isDrumChannel:this.drumChannel}),this.synth.sendChannelProperties())}setVibrato(A,t,n){this.lockGSNRPNParams||(this.channelVibrato.rate=t,this.channelVibrato.delay=n,this.channelVibrato.depth=A)}disableAndLockGSNRPN(){this.lockGSNRPNParams=!0,this.channelVibrato.rate=0,this.channelVibrato.delay=0,this.channelVibrato.depth=0}};IA.prototype.renderVoice=Yo;IA.prototype.panVoice=Ro;IA.prototype.killNote=Jo;IA.prototype.stopAllNotes=Zo;IA.prototype.muteChannel=Wo;IA.prototype.noteOn=jo;IA.prototype.noteOff=$o;IA.prototype.polyPressure=Ar;IA.prototype.channelPressure=er;IA.prototype.pitchWheel=tr;IA.prototype.programChange=sr;IA.prototype.setTuning=qo;IA.prototype.setOctaveTuning=nr;IA.prototype.setModulationDepth=Ko;IA.prototype.transposeChannel=Xo;IA.prototype.controllerChange=Vo;IA.prototype.resetControllers=Is;IA.prototype.resetControllersRP15Compliant=Cs;IA.prototype.resetParameters=Es;IA.prototype.dataEntryFine=Po;IA.prototype.dataEntryCoarse=_o;function or(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===GA&&this.workletProcessorChannels[this.workletProcessorChannels.length-1].setDrums(!0)}var po=.03,yo=.07,sn=1,CA=class extends AudioWorkletProcessor{cachedVoices=[];alive=!0;deviceID=LA;interpolationType=Fe.fourthOrder;sequencer=new hA(this);transposition=0;tunings=[];soundfontBankOffset=0;masterGain=sn;midiVolume=1;reverbGain=1;chorusGain=1;voiceCap=zn;pan=0;panLeft=.5;panRight=.5;highPerformanceMode=!1;keyModifierManager=new nt;overrideSoundfont=void 0;workletProcessorChannels=[];system=at;totalVoicesAmount=0;constructor(A){super(),this.oneOutputMode=A.processorOptions?.startRenderingData?.oneOutput===!0,this._outputsAmount=this.oneOutputMode?1:A.processorOptions.midiChannels,this.enableEventSystem=A.processorOptions.enableEventSystem;for(let t=0;t<127;t++)this.tunings.push([]);try{this.soundfontManager=new wt(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);for(let t=0;t<A.processorOptions.midiChannels;t++)this.createWorkletChannel(!1);this.workletProcessorChannels[GA].preset=this.drumPreset,this.workletProcessorChannels[GA].drumChannel=!0,this.volumeEnvelopeSmoothingFactor=Fs*(44100/sampleRate),this.panSmoothingFactor=Do*(44100/sampleRate),this.filterSmoothingFactor=fo*(44100/sampleRate),this._snapshot=A.processorOptions?.startRenderingData?.snapshot,this.port.onmessage=t=>this.handleMessage(t.data),A.processorOptions.startRenderingData&&(this._snapshot!==void 0&&(this.applySynthesizerSnapshot(this._snapshot),this.resetAllControllers()),y("%cRendering enabled! Starting render.",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(),y("%cSpessaSynth is ready!",g.recognized)})}get currentGain(){return this.masterGain*this.midiVolume}getCachedVoice(A,t,n,s){return this.cachedVoices?.[A]?.[t]?.[n]?.[s]}setCachedVoice(A,t,n,s,o){this.cachedVoices||(this.cachedVoices=[]),this.cachedVoices[A]||(this.cachedVoices[A]=[]),this.cachedVoices[A][t]||(this.cachedVoices[A][t]=[]),this.cachedVoices[A][t][n]||(this.cachedVoices[A][t][n]=[]),this.cachedVoices[A][t][n][s]=o}post(A){this.enableEventSystem&&this.port.postMessage(A)}postReady(){this.enableEventSystem&&this.port.postMessage({messageType:RA.ready,messageData:void 0})}debugMessage(){y({channels:this.workletProcessorChannels,voicesAmount:this.totalVoicesAmount,outputAmount:this._outputsAmount,dumpedSamples:this.workletDumpedSamplesList})}process(A,t){if(!this.alive)return!1;this.sequencer.processTick();let n=0;return this.workletProcessorChannels.forEach((s,o)=>{if(s.voices.length<1||s.isMuted)return;let i,l,a,I,d,E,Q;if(this.oneOutputMode){let B=t[0];i=o%16*2,l=B[i],a=B[i+1]}else i=o%this._outputsAmount+2,l=t[i][0],a=t[i][1],I=t[0][0],d=t[0][1],E=t[1][0],Q=t[1][1];s.renderAudio(l,a,I,d,E,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.lockedControllers,delete A.preset,delete A.customControllers}),delete this.cachedVoices,delete this.workletProcessorChannels,delete this.sequencer.midiData,delete this.sequencer,this.soundfontManager.destroyManager(),delete this.soundfontManager}controllerChange(A,t,n,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)}};CA.prototype.voiceKilling=Ss;CA.prototype.getWorkletVoices=mo;CA.prototype.handleMessage=Rs;CA.prototype.sendChannelProperties=Ms;CA.prototype.callEvent=Gs;CA.prototype.systemExclusive=xs;CA.prototype.stopAllChannels=Go;CA.prototype.createWorkletChannel=or;CA.prototype.resetAllControllers=gs;CA.prototype.setMasterGain=bs;CA.prototype.setMasterPan=Ls;CA.prototype.setMIDIVolume=Ns;CA.prototype.transposeAllChannels=Uo;CA.prototype.setMasterTuning=To;CA.prototype.getPreset=Lo;CA.prototype.reloadSoundFont=xo;CA.prototype.clearSoundFont=No;CA.prototype.setEmbeddedSoundFont=Mo;CA.prototype.sendPresetList=bo;CA.prototype.sendSynthesizerSnapshot=vo;CA.prototype.applySynthesizerSnapshot=Ho;registerProcessor(_n,CA);y("%cProcessor succesfully registered!",g.recognized);
|