spessasynth_lib 3.20.0 → 3.20.1
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/@types/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Sequencer } from './sequencer/sequencer.js';
|
|
|
2
2
|
import { Synthetizer } from './synthetizer/synthetizer.js';
|
|
3
3
|
import { DEFAULT_PERCUSSION } from './synthetizer/synthetizer.js';
|
|
4
4
|
import { VOICE_CAP } from './synthetizer/synthetizer.js';
|
|
5
|
+
import { BasicSoundFont } from "./soundfont/basic_soundfont/basic_soundfont.js";
|
|
5
6
|
import { loadSoundFont } from "./soundfont/load_soundfont.js";
|
|
6
7
|
import { trimSoundfont } from "./soundfont/basic_soundfont/write_sf2/soundfont_trimmer.js";
|
|
7
8
|
import { modulatorSources } from "./soundfont/read_sf2/modulators.js";
|
|
@@ -33,4 +34,4 @@ import { readBytesAsUintBigEndian } from './utils/byte_functions/big_endian.js';
|
|
|
33
34
|
import { NON_CC_INDEX_OFFSET } from './synthetizer/worklet_system/worklet_utilities/worklet_processor_channel.js';
|
|
34
35
|
import { ALL_CHANNELS_OR_DIFFERENT_ACTION } from './synthetizer/worklet_system/message_protocol/worklet_message.js';
|
|
35
36
|
import { WORKLET_URL_ABSOLUTE } from './synthetizer/worklet_url.js';
|
|
36
|
-
export { Sequencer, Synthetizer, DEFAULT_PERCUSSION, VOICE_CAP, loadSoundFont, trimSoundfont, modulatorSources, encodeVorbis, MIDI, MIDIBuilder, IndexedByteArray, writeMIDIFile, writeRMIDI, applySnapshotToMIDI, modifyMIDI, audioBufferToWav, SpessaSynthLogging, SpessaSynthGroup, SpessaSynthTable, SpessaSynthGroupEnd, SpessaSynthInfo, SpessaSynthWarn, SpessaSynthGroupCollapsed, midiControllers, messageTypes, MIDIDeviceHandler, WebMidiLinkHandler, arrayToHexString, consoleColors, formatTitle, formatTime, readBytesAsUintBigEndian, NON_CC_INDEX_OFFSET, ALL_CHANNELS_OR_DIFFERENT_ACTION, WORKLET_URL_ABSOLUTE };
|
|
37
|
+
export { Sequencer, Synthetizer, DEFAULT_PERCUSSION, VOICE_CAP, BasicSoundFont, loadSoundFont, trimSoundfont, modulatorSources, encodeVorbis, MIDI, MIDIBuilder, IndexedByteArray, writeMIDIFile, writeRMIDI, applySnapshotToMIDI, modifyMIDI, audioBufferToWav, SpessaSynthLogging, SpessaSynthGroup, SpessaSynthTable, SpessaSynthGroupEnd, SpessaSynthInfo, SpessaSynthWarn, SpessaSynthGroupCollapsed, midiControllers, messageTypes, MIDIDeviceHandler, WebMidiLinkHandler, arrayToHexString, consoleColors, formatTitle, formatTime, readBytesAsUintBigEndian, NON_CC_INDEX_OFFSET, ALL_CHANNELS_OR_DIFFERENT_ACTION, WORKLET_URL_ABSOLUTE };
|
package/README.md
CHANGED
|
@@ -76,7 +76,7 @@ document.getElementById("button").onclick = async () => {
|
|
|
76
76
|
- **Easy MIDI editing:** Use [helper functions](https://github.com/spessasus/SpessaSynth/wiki/Writing-MIDI-Files#modifymidi) to modify the song to your needs!
|
|
77
77
|
- **Loop detection:** Automatically detects loops in MIDIs (e.g., from _Touhou Project_)
|
|
78
78
|
- **First note detection:** Skip unnecessary silence at the start by jumping to the first note!
|
|
79
|
-
- **[Write MIDI files from scratch](https://github.com/spessasus/SpessaSynth/wiki/Creating-MIDI-Files
|
|
79
|
+
- **[Write MIDI files from scratch](https://github.com/spessasus/SpessaSynth/wiki/Creating-MIDI-Files)**
|
|
80
80
|
- **Easy saving:** Save with just [one function!](https://github.com/spessasus/SpessaSynth/wiki/Writing-MIDI-Files#writemidifile)
|
|
81
81
|
|
|
82
82
|
#### Read and write [RMID files with embedded SF2 soundfonts](https://github.com/spessasus/sf2-rmidi-specification#readme)
|
package/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Import modules
|
|
2
2
|
import { loadSoundFont } from "./soundfont/load_soundfont.js";
|
|
3
|
+
import { BasicSoundFont } from "./soundfont/basic_soundfont/basic_soundfont.js";
|
|
3
4
|
import { MIDI } from './midi_parser/midi_loader.js';
|
|
4
5
|
import { MIDIBuilder } from "./midi_parser/midi_builder.js";
|
|
5
6
|
import { Synthetizer, VOICE_CAP, DEFAULT_PERCUSSION } from './synthetizer/synthetizer.js';
|
|
@@ -39,6 +40,7 @@ export {
|
|
|
39
40
|
VOICE_CAP,
|
|
40
41
|
|
|
41
42
|
// SoundFont
|
|
43
|
+
BasicSoundFont,
|
|
42
44
|
loadSoundFont,
|
|
43
45
|
trimSoundfont,
|
|
44
46
|
modulatorSources,
|
package/package.json
CHANGED
|
@@ -46,6 +46,14 @@ export class DLSSample extends BasicSample
|
|
|
46
46
|
|
|
47
47
|
getRawData()
|
|
48
48
|
{
|
|
49
|
+
if(this.isCompressed)
|
|
50
|
+
{
|
|
51
|
+
if (!this.compressedData)
|
|
52
|
+
{
|
|
53
|
+
throw new Error("Compressed but no data??")
|
|
54
|
+
}
|
|
55
|
+
return this.compressedData;
|
|
56
|
+
}
|
|
49
57
|
const uint8 = new Uint8Array(this.sampleData.length * 2);
|
|
50
58
|
for (let i = 0; i < this.sampleData.length; i++)
|
|
51
59
|
{
|
|
@@ -46,7 +46,8 @@ export class DLSZone extends BasicInstrumentZone
|
|
|
46
46
|
{
|
|
47
47
|
const fine = diffStart % 32768;
|
|
48
48
|
this.generators.push(new Generator(generatorTypes.startloopAddrsOffset, fine));
|
|
49
|
-
|
|
49
|
+
// coarse generator uses 32768 samples per step
|
|
50
|
+
const coarse = (diffStart - fine) / 32768;
|
|
50
51
|
if(coarse !== 0)
|
|
51
52
|
{
|
|
52
53
|
this.generators.push(new Generator(generatorTypes.startloopAddrsCoarseOffset, fine));
|
|
@@ -56,7 +57,8 @@ export class DLSZone extends BasicInstrumentZone
|
|
|
56
57
|
{
|
|
57
58
|
const fine = diffEnd % 32768;
|
|
58
59
|
this.generators.push(new Generator(generatorTypes.endloopAddrsOffset, fine));
|
|
59
|
-
|
|
60
|
+
// coarse generator uses 32768 samples per step
|
|
61
|
+
const coarse = (diffEnd - fine) / 32768;
|
|
60
62
|
if(coarse !== 0)
|
|
61
63
|
{
|
|
62
64
|
this.generators.push(new Generator(generatorTypes.endloopAddrsCoarseOffset, fine));
|
|
@@ -9,7 +9,7 @@ var ss=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(
|
|
|
9
9
|
`}};function qA(e,A,t,s,n){return e<<10|A<<9|t<<8|s<<7|n}var ct=960,lt=lA.concave,ys=[new rA({srcEnum:qA(lt,0,1,0,P.noteOnVelocity),dest:g.initialAttenuation,amt:ct,secSrcEnum:0,transform:0}),new rA({srcEnum:129,dest:g.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new rA({srcEnum:qA(lt,0,1,1,p.mainVolume),dest:g.initialAttenuation,amt:ct,secSrcEnum:0,transform:0}),new rA({srcEnum:13,dest:g.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new rA({srcEnum:526,dest:g.fineTune,amt:12700,secSrcEnum:16,transform:0}),new rA({srcEnum:650,dest:g.pan,amt:1e3,secSrcEnum:0,transform:0}),new rA({srcEnum:qA(lt,0,1,1,p.expressionController),dest:g.initialAttenuation,amt:ct,secSrcEnum:0,transform:0}),new rA({srcEnum:219,dest:g.reverbEffectsSend,amt:200,secSrcEnum:0,transform:0}),new rA({srcEnum:221,dest:g.chorusEffectsSend,amt:200,secSrcEnum:0,transform:0}),new rA({srcEnum:qA(lA.linear,0,0,0,P.polyPressure),dest:g.vibLfoToPitch,amt:50,secSrcEnum:0,transform:0}),new rA({srcEnum:qA(lA.linear,0,0,1,p.effects2Depth),dest:g.modLfoToVolume,amt:24,secSrcEnum:0,transform:0}),new rA({srcEnum:qA(lA.linear,1,0,1,p.releaseTime),dest:g.releaseVolEnv,amt:1200,secSrcEnum:0,transform:0}),new rA({srcEnum:qA(lA.linear,1,0,1,p.brightness),dest:g.initialFilterFc,amt:4e3,secSrcEnum:0,transform:0})];function ft(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(new rA(e.chunkData));return A}function Ds(e=!1){let A={midiControllers:new Int16Array(ut),lockedControllers:Array(ut).fill(!1),customControllers:new Float32Array(ks),NRPCoarse:0,NRPFine:0,RPValue:0,dataEntryState:fA.Idle,voices:[],sustainedVoices:[],cachedVoices:[],preset:this.defaultPreset,presetUsesOverride:!1,channelTransposeKeyShift:0,channelOctaveTuning:new Int8Array(12),channelVibrato:{delay:0,depth:0,rate:0},lockVibrato:!1,holdPedal:!1,isMuted:!1,drumChannel:!1,lockPreset:!1};for(let t=0;t<128;t++)A.cachedVoices.push([]);this.workletProcessorChannels.push(A),this.resetControllers(this.workletProcessorChannels.length-1),this.sendChannelProperties(),e&&this.callEvent("newchannel",void 0)}var gA=128,ut=147,KA=new Int16Array(ut).fill(0);KA[p.mainVolume]=12800;KA[p.expressionController]=16256;KA[p.pan]=8192;KA[p.releaseTime]=8192;KA[p.brightness]=8192;KA[p.effects1Depth]=5120;KA[gA+P.pitchWheel]=8192;KA[gA+P.pitchWheelRange]=256;var fA={Idle:0,RPCoarse:1,RPFine:2,NRPCoarse:3,NRPFine:4,DataCoarse:5,DataFine:6},iA={channelTuning:0,channelTransposeFine:1,modulationMultiplier:2,masterTuning:3,channelTuningSemitones:4},ks=Object.keys(iA).length,dt=new Float32Array(ks);dt[iA.modulationMultiplier]=1;var Ke={name:"INAM",album:"IPRD",artist:"IART",genre:"IGNR",picture:"IPIC",copyright:"ICOP",creationDate:"ICRD",comment:"ICMT",engineer:"IENG",software:"ISFT",encoding:"IENC",midiEncoding:"MENC",bankOffset:"DBNK"};var ve=class{constructor(){this.timeDivision=0,this.duration=0,this.tempoChanges=[{ticks:0,tempo:120}],this.copyright="",this.tracksAmount=0,this.lyrics=[],this.firstNoteOn=0,this.keyRange={min:0,max:127},this.lastVoiceEventTick=0,this.midiPorts=[0],this.midiPortChannelOffsets=[0],this.usedChannelsOnTrack=[],this.loop={start:0,end:0},this.midiName="",this.fileName="",this.rawMidiName=void 0,this.embeddedSoundFont=void 0,this.format=0,this.RMIDInfo={},this.bankOffset=0,this.tracks=[]}_ticksToSeconds(A){if(A<=0)return 0;let t=this.tempoChanges.find(n=>n.ticks<A),s=A-t.ticks;return this._ticksToSeconds(A-s)+s*60/(t.tempo*this.timeDivision)}};var Pe=class extends ve{constructor(A,t=""){super(),DA("%cParsing MIDI File...",a.info);let s=new H(A),n,o=!1,E=!1,i=!1,h=V(s,4);if(s.currentIndex-=4,h==="RIFF"){s.currentIndex+=8;let D=V(s,4,void 0,!1);if(D!=="RMID")throw X(),new SyntaxError(`Invalid RMIDI Header! Expected "RMID", got "${D}"`);let k=O(s);if(k.header!=="data")throw X(),new SyntaxError(`Invalid RMIDI Chunk header! Expected "data", got "${D}"`);for(n=k.chunkData;s.currentIndex<=s.length;){let x=s.currentIndex,M=O(s,!0);if(M.header==="RIFF"){let N=V(M.chunkData,4).toLowerCase();N==="sfbk"||N==="sfpk"||N==="dls "?(m("%cFound embedded soundfont!",a.recognized),this.embeddedSoundFont=s.slice(x,x+M.size).buffer):Y(`Unknown RIFF chunk: "${N}"`),N==="dls "&&(i=!0)}else if(M.header==="LIST"&&V(M.chunkData,4)==="INFO"){for(m("%cFound RMIDI INFO chunk!",a.recognized),this.RMIDInfo={};M.chunkData.currentIndex<=M.size;){let Z=O(M.chunkData,!0);this.RMIDInfo[Z.header]=Z.chunkData}this.RMIDInfo.ICOP&&(o=!0,this.copyright=V(this.RMIDInfo.ICOP,this.RMIDInfo.ICOP.length)),this.RMIDInfo.INAM&&(this.rawMidiName=this.RMIDInfo[Ke.name],this.midiName=V(this.rawMidiName,this.rawMidiName.length,void 0,!1),E=!0),this.RMIDInfo.IALB&&!this.RMIDInfo.IPRD&&(this.RMIDInfo.IPRD=this.RMIDInfo.IALB),this.RMIDInfo.PRD&&!this.RMIDInfo.IALB&&(this.RMIDInfo.IALB=this.RMIDInfo.IPRD),this.bankOffset=1,this.RMIDInfo[Ke.bankOffset]&&(this.bankOffset=y(this.RMIDInfo[Ke.bankOffset],2))}}i&&(console.log(i),this.bankOffset=0)}else n=s;let c=this.readMIDIChunk(n);if(c.type!=="MThd")throw X(),new SyntaxError(`Invalid MIDI Header! Expected "MThd", got "${c.type}"`);if(c.size!==6)throw X(),new RangeError(`Invalid MIDI header chunk size! Expected 6, got ${c.size}`);this.format=XA(c.data,2),this.tracksAmount=XA(c.data,2),this.timeDivision=XA(c.data,2),this.keyRange={min:127,max:0},this.lyrics=[],this.tempoChanges=[{ticks:0,tempo:120}];let f=null,Q=null;this.lastVoiceEventTick=0,this.midiPorts=[];let l=0;this.midiPortChannelOffsets=[],this.usedChannelsOnTrack=[],this.tracks=[];for(let D=0;D<this.tracksAmount;D++){let k=[],x=this.readMIDIChunk(n),M=new Set;if(this.midiPorts.push(-1),x.type!=="MTrk")throw X(),new SyntaxError(`Invalid track header! Expected "MTrk" got "${x.type}"`);let N,Z=0;for(this.format===2&&D>0&&(Z+=this.tracks[D-1][this.tracks[D-1].length-1].ticks);x.data.currentIndex<x.size;){Z+=qe(x.data);let T=x.data[x.data.currentIndex],r;if(N!==void 0&&T<128)r=N;else{if(!N&&T<128)throw X(),new SyntaxError(`Unexpected byte with no running byte. (${T})`);r=x.data[x.data.currentIndex++]}let sA=os(r),K;switch(sA){case-1:K=0;break;case-2:r=x.data[x.data.currentIndex++],K=qe(x.data);break;case-3:K=qe(x.data);break;default:if(Z>this.lastVoiceEventTick&&(this.lastVoiceEventTick=Z),K=rs[r>>4],(r&240)===w.noteOn){M.add(sA);let aA=x.data[x.data.currentIndex];this.keyRange.min=Math.min(this.keyRange.min,aA),this.keyRange.max=Math.max(this.keyRange.max,aA)}N=r;break}let z=new H(K),$=x.data.slice(x.data.currentIndex,x.data.currentIndex+K);x.data.currentIndex+=K,z.set($,0);let QA=new ne(Z,r,z);switch(k.push(QA),sA){case-2:switch(r){case w.setTempo:this.tempoChanges.push({ticks:Z,tempo:6e7/XA($,3)});break;case w.marker:switch(V(z,z.length).trim().toLowerCase()){default:break;case"start":case"loopstart":f=Z;break;case"loopend":Q=Z}z.currentIndex=0;break;case w.midiPort:let UA=z[0];this.midiPorts[D]=UA,this.midiPortChannelOffsets[UA]===void 0&&(this.midiPortChannelOffsets[UA]=l,l+=16);break;case w.copyright:o||(this.copyright+=V(z,z.length,void 0,!1)+`
|
|
10
10
|
`);break;case w.lyric:this.lyrics.push(z)}break;case-3:if(hA(z.slice(0,7)).trim()==="41 10 45 12 10 00 00"){let aA=z.slice(7,$.length-3),UA=V(aA,aA.length)+`
|
|
11
11
|
`;this.copyright+=UA,m(`%cDecoded Roland SC message! %c${UA}`,a.recognized,a.value)}break;default:if((r&240)===w.controllerChange)switch(z[0]){case 2:case 116:f=Z;break;case 4:case 117:Q===null?Q=Z:Q=0;break;case 0:i&&z[1]!==0&&z[1]!==127&&(m("%cDLS RMIDI with offset 1 detected!",a.recognized),this.bankOffset=1)}}}this.tracks.push(k),this.usedChannelsOnTrack.push(M),m(`%cParsed %c${this.tracks.length}%c / %c${this.tracksAmount}`,a.info,a.value,a.info,a.value)}let d=[];for(let D of this.tracks){let k=D.find(x=>(x.messageStatusByte&240)===w.noteOn);k&&d.push(k.ticks)}this.firstNoteOn=Math.min(...d),m(`%cMIDI file parsed. Total tick time: %c${this.lastVoiceEventTick}`,a.info,a.recognized),X(),f!==null&&Q===null?(f=this.firstNoteOn,Q=this.lastVoiceEventTick):(f===null&&(f=this.firstNoteOn),(Q===null||Q===0)&&(Q=this.lastVoiceEventTick));let S=0;for(let D of this.midiPorts)if(D!==-1){S=D;break}if(this.midiPorts=this.midiPorts.map(D=>D===-1?S:D),this.midiPortChannelOffsets.length===0&&(this.midiPortChannelOffsets=[0]),this.loop={start:f,end:Q},!E)if(this.tracks.length>1){if(this.tracks[0].find(D=>D.messageStatusByte>=w.noteOn&&D.messageStatusByte<w.polyPressure)===void 0){let D=this.tracks[0].find(k=>k.messageStatusByte===w.trackName);D&&(this.rawMidiName=D.messageData,this.midiName=V(D.messageData,D.messageData.length,void 0,!1))}}else{let D=this.tracks[0].find(k=>k.messageStatusByte===w.trackName);D&&(this.rawMidiName=D.messageData,this.midiName=V(D.messageData,D.messageData.length,void 0,!1))}if(this.fileName=t,this.midiName=this.midiName.trim(),this.midiName.length===0){this.midiName=ns(t),this.rawMidiName=new Uint8Array(this.midiName.length);for(let D=0;D<this.midiName.length;D++)this.rawMidiName[D]=this.midiName.charCodeAt(D)}this.tempoChanges.reverse(),this.duration=this._ticksToSeconds(this.lastVoiceEventTick)}readMIDIChunk(A){let t={};t.type=V(A,4),t.size=XA(A,4),t.data=new H(t.size);let s=A.slice(A.currentIndex,A.currentIndex+t.size);return t.data.set(s,0),A.currentIndex+=t.size,t}};function ws(e,A){DA("%cSearching for all used programs and keys...",a.info);let t=16+e.midiPortChannelOffsets.reduce((Q,l)=>l>Q?l:Q),s=[];for(let Q=0;Q<t;Q++){let l=Q%16===MA?128:0;s.push({program:0,bank:l,drums:Q%16===MA,string:`${l}:0`})}function n(Q){let l=A.getPreset(Q.bank,Q.program);Q.bank=l.bank,Q.program=l.program,Q.string=Q.bank+":"+Q.program,o[Q.string]||(m(`%cDetected a new preset: %c${Q.string}`,a.info,a.recognized),o[Q.string]=new Set)}let o={},E=Array(e.tracks.length).fill(0),i=e.tracks.length;function h(){let Q=0,l=1/0;return e.tracks.forEach((d,S)=>{E[S]>=d.length||d[E[S]].ticks<l&&(Q=S,l=d[E[S]].ticks)}),Q}let c=e.midiPorts.slice(),f="gs";for(;i>0;){let Q=h(),l=e.tracks[Q];if(E[Q]>=l.length){i--;continue}let d=l[E[Q]];if(E[Q]++,d.messageStatusByte===w.midiPort){c[Q]=d.messageData[0];continue}let S=d.messageStatusByte&240;if(S!==w.noteOn&&S!==w.controllerChange&&S!==w.programChange&&S!==w.systemExclusive)continue;let D=(d.messageStatusByte&15)+e.midiPortChannelOffsets[c[Q]]||0,k=s[D];switch(S){case w.programChange:k.program=d.messageData[0],n(k);break;case w.controllerChange:if(d.messageData[0]!==p.bankSelect||f==="gs"&&k.drums)continue;let x=d.messageData[1],M=Math.max(0,x-e.bankOffset);if(f==="xg"){let T=x===120||x===126||x===127;T!==k.drums?(k.drums=T,k.bank=k.drums?128:M,n(k)):k.bank=k.drums?128:M;continue}s[D].bank=M;break;case w.noteOn:if(d.messageData[1]===0)continue;n(k),o[k.string].add(`${d.messageData[0]}-${d.messageData[1]}`);break;case w.systemExclusive:if(d.messageData[0]!==65||d.messageData[2]!==66||d.messageData[3]!==18||d.messageData[4]!==64||!(d.messageData[5]&16)||d.messageData[6]!==21){d.messageData[0]===67&&d.messageData[2]===76&&d.messageData[5]===126&&d.messageData[6]===0&&(f="xg");continue}let N=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][d.messageData[5]&15]+e.midiPortChannelOffsets[c[Q]],Z=!!(d.messageData[7]>0&&d.messageData[5]>>4);k=s[N],k.drums=Z,k.bank=Z?128:0,n(k);break}}for(let Q of Object.keys(o))o[Q].size===0&&(m(`%cDetected change but no keys for %c${Q}`,a.info,a.value),delete o[Q]);return X(),o}function Fs(e,A){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 Rs(e){if(this.stop(),!e.tracks)throw"No tracks supplied!";if(this.oneTickToSeconds=60/(120*e.timeDivision),this.midiData=e,this.midiData.embeddedSoundFont!==void 0)m("%cEmbedded soundfont detected! Using it.",a.recognized),this.synth.soundfontBankOffset=this.midiData.bankOffset,this.synth.reloadSoundFont(this.midiData.embeddedSoundFont,!0),this.synth.overrideSoundfont.samples.forEach(A=>A.getAudioData());else{this.synth.overrideSoundfont&&this.synth.clearSoundFont(!0,!0),DA("%cPreloading samples...",a.info);let A=ws(this.midiData,this.synth.soundfontManager);for(let[t,s]of Object.entries(A)){let n=parseInt(t.split(":")[0]),o=parseInt(t.split(":")[1]),E=this.synth.getPreset(n,o);m(`%cPreloading used samples on %c${E.presetName}%c...`,a.info,a.recognized,a.info);for(let i of s){let h=i.split("-");E.preloadSpecific(parseInt(h[0]),parseInt(h[1]))}}X()}this.tracks=this.midiData.tracks,this.midiPorts=this.midiData.midiPorts,this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this.midiData.midiPorts.forEach((A,t)=>{this.assignMIDIPort(t,A)}),this.duration=this.midiData.duration,this.firstNoteTime=Ye(this.midiData.tempoChanges,this.midiData.firstNoteOn,this.midiData.timeDivision),m(`%cTotal song time: ${Bt(Math.ceil(this.duration)).time}`,a.recognized),this.post(kA.songChange,[new Je(this.midiData),this.songIndex]),this.synth.resetAllControllers(),this.duration<=1&&(Y(`%cVery short song: (${Bt(Math.round(this.duration)).time}). Disabling loop!`,a.warn),this.loop=!1),this.play(!0)}function Gs(e){this.songs=e.reduce((A,t)=>{if(t.duration)return A.push(t),A;try{A.push(new Pe(t.binary,t.altName||""))}catch(s){return this.post(kA.midiError,s.message),A}return A},[]),!(this.songs.length<1)&&(this.songIndex=0,this.songs.length>1&&(this.loop=!1),this.loadNewSequence(this.songs[this.songIndex]))}function xs(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex++,this.songIndex%=this.songs.length,this.loadNewSequence(this.songs[this.songIndex])}function Ms(){if(this.songs.length===1){this.currentTime=0;return}this.songIndex--,this.songIndex<0&&(this.songIndex=this.songs.length-1),this.loadNewSequence(this.songs[this.songIndex])}function Ns(e,A){switch(e){default:break;case NA.loadNewSongList:this.loadNewSongList(A);break;case NA.pause:this.pause();break;case NA.play:this.play(A);break;case NA.stop:this.stop();break;case NA.setTime:this.currentTime=A;break;case NA.changeMIDIMessageSending:this.sendMIDIMessages=A;break;case NA.setPlaybackRate:this.playbackRate=A;break;case NA.setLoop:this.loop=A;break;case NA.changeSong:A?this.nextSong():this.previousSong();break;case NA.getMIDI:this.post(kA.getMIDI,this.midiData);break;case NA.setSkipToFirstNote:this._skipToFirstNoteOn=A;break}}function bs(e,A=void 0){this.synth.enableEventSystem&&this.synth.post({messageType:pA.sequencerSpecific,messageData:{messageType:e,messageData:A}})}function Ls(e){this.post(kA.midiEvent,e)}var CA=class{constructor(A){this.synth=A,this.ignoreEvents=!1,this.sendMIDIMessages=!1,this.eventIndex=[],this.songIndex=0,this.playedTime=0,this.pausedTime=void 0,this.absoluteStartTime=currentTime,this._playbackRate=1,this.playingNotes=[],this.loop=!0,this.midiData=void 0,this.midiPorts=[],this.midiPortChannelOffset=0,this.midiPortChannelOffsets={},this._skipToFirstNoteOn=!0}set playbackRate(A){let t=this.currentTime;this._playbackRate=A,this.currentTime=t}get currentTime(){return this.pausedTime?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=[],this.pausedTime=void 0,this.post(kA.timeChange,currentTime-A);let t=this._playTo(A);this._recalculateStartTime(A),t&&this.play()}pause(A=!1){if(this.paused){Y("Already paused");return}this.pausedTime=this.currentTime,this.stop(),this.post(kA.pause,A)}stop(){this.clearProcessHandler();for(let A=0;A<16;A++)this.synth.controllerChange(A,p.sustainPedal,0);if(this.synth.stopAllChannels(),this.sendMIDIMessages)for(let A=0;A<Te;A++)this.sendMIDIMessage([w.controllerChange|A,120,0]),this.sendMIDIMessage([w.controllerChange|A,123,0])}_resetTimers(){this.playedTime=0,this.eventIndex=Array(this.tracks.length).fill(0)}get paused(){return this.pausedTime!==void 0}setProcessHandler(){this.synth.processTickCallback=this._processTick.bind(this)}clearProcessHandler(){this.synth.processTickCallback=void 0}};CA.prototype.post=bs;CA.prototype.sendMIDIMessage=Ls;CA.prototype.assignMIDIPort=Fs;CA.prototype.processMessage=Ns;CA.prototype._processEvent=hs;CA.prototype._addNewMidiPort=Qs;CA.prototype._processTick=cs;CA.prototype._findFirstEventIndex=ls;CA.prototype.loadNewSequence=Rs;CA.prototype.loadNewSongList=Gs;CA.prototype.nextSong=xs;CA.prototype.previousSong=Ms;CA.prototype.play=us;CA.prototype._playTo=fs;CA.prototype.setTimeTicks=ds;CA.prototype._recalculateStartTime=ms;var mt=new Float32Array(30001);for(let e=0;e<mt.length;e++){let A=-15e3+e;mt[e]=Math.pow(2,A/1200)}function uA(e){return mt[e- -15e3]}var Ve=-2e4,Us=16500,pt=new Float32Array(Us-Ve+1);for(let e=0;e<pt.length;e++){let A=Ve+e;pt[e]=440*Math.pow(2,(A-6900)/1200)}function Se(e){return e<Ve||e>Us?440*Math.pow(2,(e-6900)/1200):pt[~~e-Ve]}var yt=-1660,Fo=1600,St=new Float32Array((Fo-yt)*100+1);for(let e=0;e<St.length;e++){let A=(yt*100+e)/100;St[e]=Math.pow(10,-A/20)}function LA(e){return St[Math.floor((e-yt)*100)]}function Oe(e,A,t){if(t<e)return 0;let s=(t-e)/(1/A)-.25;return Math.abs(s-~~(s+.5))*4-1}var IA=16384,Ie=new Float32Array(IA),ae=new Float32Array(IA);Ie[0]=0;Ie[IA-1]=1;ae[0]=0;ae[IA-1]=1;for(let e=1;e<IA-1;e++){let A=-.4166666666666667*Math.log(e/(IA-1))/Math.LN10;ae[e]=1-A,Ie[IA-1-e]=A}function $A(e,A,t,s){switch(e&&(t=1-t),A){case lA.linear:return s?t*2-1:t;case lA.switch:return t=t>.5?1:0,s?t*2-1:t;case lA.concave:return s?(t=t*2-1,t<0?1-Ie[~~(t*-IA)]-1:Ie[~~t*IA]):Ie[~~(t*IA)];case lA.convex:return s?(t=t*2-1,t<0?1-ae[~~(t*-IA)]-1:ae[~~(t*IA)]):ae[~~(t*IA)]}}var Dt=1,kt=new Float32Array(1e3);for(let e=0;e<kt.length;e++)kt[e]=$A(0,lA.convex,e/1e3,0);function Ts(e,A){let t=uA(e.modulatedGenerators[g.attackModEnv]),s=uA(e.modulatedGenerators[g.decayModEnv]+(60-e.midiNote)*e.modulatedGenerators[g.keyNumToModEnvDecay]),n=uA(e.modulatedGenerators[g.holdModEnv]+(60-e.midiNote)*e.modulatedGenerators[g.keyNumToModEnvHold]);if(e.isInRelease&&e.releaseStartTime<A){let Q=uA(e.modulatedGenerators[g.releaseModEnv]);return e.modulatedGenerators[g.releaseModEnv]<-7199?e.releaseStartModEnv:(1-(A-e.releaseStartTime)/Q)*e.releaseStartModEnv}let o=1-e.modulatedGenerators[g.sustainModEnv]/1e3,E=uA(e.modulatedGenerators[g.delayModEnv])+e.startTime,i=t+E,h=n+i,c=s+h,f;return A<E?f=0:A<i?f=kt[~~((1-(i-A)/t)*1e3)]:A<h?f=Dt:A<c?f=(1-(c-A)/s)*(o-Dt)+Dt:f=o,e.currentModEnvValue=f,f}function Hs(e,A,t){let s=e.sample.cursor,n=e.sample.loopingMode===1||e.sample.loopingMode===3&&!e.isInRelease,o=e.sample.loopEnd-e.sample.loopStart;if(n)for(let E=0;E<t.length;E++){for(;s>=e.sample.loopEnd;)s-=o;let i=~~s,h=i+1;for(;h>=e.sample.loopEnd;)h-=o;let c=s-i,f=A[h],Q=A[i];t[E]=Q+(f-Q)*c,s+=e.sample.playbackStep*e.currentTuningCalculated}else{e.sample.end>=A.length&&(e.sample.end=A.length-1);for(let E=0;E<t.length;E++){let i=~~s,h=i+1;if(h>=e.sample.end){e.finished=!0;return}let c=s-i,f=A[h],Q=A[i];t[E]=Q+(f-Q)*c,s+=e.sample.playbackStep*e.currentTuningCalculated}}e.sample.cursor=s}function Ys(e,A,t,s,n,o,E,i,h){if(!isNaN(t[0])){if(E>0){let c=o[0],f=o[1];E=Math.min(E,1e3);let Q=E/500,l=e*Q,d=A*Q;for(let S=0;S<t.length;S++)c[S]+=l*t[S],f[S]+=d*t[S]}if(h>0){let c=i[0],f=i[1];h=Math.min(h,1e3);let Q=h/500,l=e*Q,d=A*Q;for(let S=0;S<t.length;S++)c[S]+=l*t[S],f[S]+=d*t[S]}if(e>0)for(let c=0;c<t.length;c++)s[c]+=e*t[c];if(A>0)for(let c=0;c<t.length;c++)n[c]+=A*t[c]}}var Js={attenuation:100,currentAttenuationDb:100,state:0,releaseStartDb:100,attackDuration:0,decayDuration:0,releaseDuration:0,sustainDb:0,delayEnd:0,attackEnd:0,holdEnd:0,decayEnd:0,currentReleaseGain:1},qs=.001,wt=100,Ro=.005;function Ae(e){let A=e.volumeEnvelope;if(A.attackDuration=uA(e.modulatedGenerators[g.attackVolEnv]),A.decayDuration=uA(e.modulatedGenerators[g.decayVolEnv]+(60-e.midiNote)*e.modulatedGenerators[g.keyNumToVolEnvDecay]),A.releaseDuration=uA(e.modulatedGenerators[g.releaseVolEnv]),A.attenuation=e.modulatedGenerators[g.initialAttenuation]/10,A.sustainDb=e.volumeEnvelope.attenuation+e.modulatedGenerators[g.sustainVolEnv]/10,A.delayEnd=uA(e.modulatedGenerators[g.delayVolEnv])+e.startTime,A.attackEnd=A.attackDuration+A.delayEnd,A.holdEnd=uA(e.modulatedGenerators[g.holdVolEnv]+(60-e.midiNote)*e.modulatedGenerators[g.keyNumToVolEnvHold])+A.attackEnd,A.decayEnd=A.decayDuration+A.holdEnd,e.isInRelease)switch(A.state){case 0:A.releaseStartDb=wt;break;case 1:let s=(1-(A.attackEnd-e.releaseStartTime)/A.attackDuration)*LA(A.attenuation);A.releaseStartDb=20*Math.log10(s)*-1;break;case 2:A.releaseStartDb=A.attenuation;break;case 3:A.releaseStartDb=(1-(A.decayEnd-e.releaseStartTime)/A.decayDuration)*(A.sustainDb-A.attenuation)+A.attenuation;break;case 4:A.releaseStartDb=A.sustainDb;break;default:A.releaseStartDb=A.currentAttenuationDb}}function Ks(e,A,t,s,n,o){let E=s/10,i=e.volumeEnvelope;if(e.isInRelease){let f=o*10,Q=i.releaseStartDb+E,l=t-e.releaseStartTime,d=wt-Q,S=i.currentReleaseGain;for(let D=0;D<A.length;D++){let k=l/i.releaseDuration*d+Q;S=LA(k+E),i.currentReleaseGain+=(S-i.currentReleaseGain)*f,A[D]*=i.currentReleaseGain,l+=n}i.currentReleaseGain<=Ro&&(e.finished=!0);return}let h=t,c=0;switch(i.state){case 0:for(;h<i.delayEnd;)if(i.currentAttenuationDb=wt,A[c]=0,h+=n,++c>=A.length)return;i.state++;case 1:for(;h<i.attackEnd;){let Q=(1-(i.attackEnd-h)/i.attackDuration)*LA(i.attenuation+E);if(A[c]*=Q,i.currentAttenuationDb=i.attenuation,h+=n,++c>=A.length)return}i.state++;case 2:for(;h<i.holdEnd;){let f=i.attenuation+E;if(i.currentAttenuationDb+=(f-i.currentAttenuationDb)*o,A[c]*=LA(i.currentAttenuationDb),h+=n,++c>=A.length)return}i.state++;case 3:for(;h<i.decayEnd;){let f=(1-(i.decayEnd-h)/i.decayDuration)*(i.sustainDb-i.attenuation)+i.attenuation+E;if(i.currentAttenuationDb+=(f-i.currentAttenuationDb)*o,A[c]*=LA(i.currentAttenuationDb),h+=n,++c>=A.length)return}i.state++;case 4:for(;;){let f=i.sustainDb+E;if(i.currentAttenuationDb+=(f-i.currentAttenuationDb)*o,A[c]*=LA(i.currentAttenuationDb),++c>=A.length)return}}}var vs={a0:0,a1:0,a2:0,a3:0,a4:0,x1:0,x2:0,y1:0,y2:0,reasonanceCb:0,reasonanceGain:1,cutoffCents:13500,cutoffHz:2e4};function Ps(e,A,t){if(!(t>13499)){(e.filter.cutoffCents!==t||e.filter.reasonanceCb!==e.modulatedGenerators[g.initialFilterQ])&&(e.filter.cutoffCents=t,e.filter.reasonanceCb=e.modulatedGenerators[g.initialFilterQ],Go(e));for(let s=0;s<A.length;s++){let n=A[s],o=e.filter.a0*n+e.filter.a1*e.filter.x1+e.filter.a2*e.filter.x2-e.filter.a3*e.filter.y1-e.filter.a4*e.filter.y2;e.filter.x2=e.filter.x1,e.filter.x1=n,e.filter.y2=e.filter.y1,e.filter.y1=o,A[s]=o}}}function Go(e){e.filter.cutoffHz=Se(e.filter.cutoffCents),e.filter.cutoffHz>.45*sampleRate&&(e.filter.cutoffHz=.45*sampleRate);let A=e.filter.reasonanceCb/10-3.01;e.filter.reasonanceGain=LA(-1*A);let t=1/Math.sqrt(e.filter.reasonanceGain),s=2*Math.PI*e.filter.cutoffHz/sampleRate,n=Math.cos(s),o=Math.sin(s)/(2*e.filter.reasonanceGain),E=(1-n)*t,i=E/2,h=i,c=1+o,f=-2*n,Q=1-o;e.filter.a0=i/c,e.filter.a1=E/c,e.filter.a2=h/c,e.filter.a3=f/c,e.filter.a4=Q/c}var Vs=Math.PI/2,Os=.01;function Zs(e,A,t,s,n,o){if(A.isInRelease||currentTime>=A.releaseStartTime&&(A.releaseStartModEnv=A.currentModEnvValue,A.isInRelease=!0,Ae(A),A.volumeEnvelope.currentReleaseGain=LA(A.volumeEnvelope.currentAttenuationDb)),A.modulatedGenerators[g.initialAttenuation]>2500){A.isInRelease&&(A.finished=!0);return}let E=A.targetKey,i=A.modulatedGenerators[g.fineTune]+e.customControllers[iA.channelTuning]+e.customControllers[iA.channelTransposeFine]+e.customControllers[iA.masterTuning]+e.channelOctaveTuning[A.midiNote%12],h=A.modulatedGenerators[g.coarseTune]+e.customControllers[iA.channelTuningSemitones],c=this.tunings[e.preset.program]?.[E];c?.midiNote>=0&&(E=c.midiNote,i+=c.centTuning),i+=(E-A.sample.rootKey)*A.modulatedGenerators[g.scaleTuning];let f=A.modulatedGenerators[g.vibLfoToPitch];if(f!==0){let $=A.startTime+uA(A.modulatedGenerators[g.delayVibLFO]),QA=Se(A.modulatedGenerators[g.freqVibLFO]),aA=Oe($,QA,currentTime);i+=aA*(f*e.customControllers[iA.modulationMultiplier])}let Q=A.modulatedGenerators[g.initialFilterFc],l=A.modulatedGenerators[g.modLfoToPitch],d=A.modulatedGenerators[g.modLfoToVolume],S=A.modulatedGenerators[g.modLfoToFilterFc],D=0;if(l+S+d!==0){let $=A.startTime+uA(A.modulatedGenerators[g.delayModLFO]),QA=Se(A.modulatedGenerators[g.freqModLFO]),aA=Oe($,QA,currentTime);i+=aA*(l*e.customControllers[iA.modulationMultiplier]),D=aA*d,Q+=aA*S}if(e.channelVibrato.depth>0){let $=Oe(A.startTime+e.channelVibrato.delay,e.channelVibrato.rate,currentTime);$&&(i+=$*e.channelVibrato.depth)}let k=A.modulatedGenerators[g.modEnvToPitch],x=A.modulatedGenerators[g.modEnvToFilterFc],M=Ts(A,currentTime);Q+=M*x,i+=M*k;let N=~~(i+h*100);N!==A.currentTuningCents&&(A.currentTuningCents=N,A.currentTuningCalculated=Math.pow(2,N/1200));let Z=(Math.max(-500,Math.min(500,A.modulatedGenerators[g.pan]))+500)/1e3,T=new Float32Array(t.length);Hs(A,this.workletDumpedSamplesList[A.sample.sampleID],T),Ps(A,T,Q),Ks(A,T,currentTime,D,this.sampleTime,this.volumeEnvelopeSmoothingFactor),A.currentPan+=(Z-A.currentPan)*this.panSmoothingFactor;let r=Math.cos(Vs*A.currentPan)*this.panLeft,sA=Math.sin(Vs*A.currentPan)*this.panRight,K=this.oneOutputMode?0:A.modulatedGenerators[g.reverbEffectsSend],z=this.oneOutputMode?0:A.modulatedGenerators[g.chorusEffectsSend];Ys(r,sA,T,t,s,n,K,o,z)}function xo(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 Xs(e){let A=[];for(let s of this.workletProcessorChannels)for(let n of s.voices)if(!n.finished){let o=xo(s,n);A.push({channel:s,voice:n,priority:o})}A.sort((s,n)=>s.priority-n.priority);let t=A.slice(0,e);for(let{channel:s,voice:n}of t){let o=s.voices.indexOf(n);o>-1&&s.voices.splice(o,1)}}function Ws(e){e.releaseStartTime=currentTime,e.releaseStartTime-e.startTime<Ft&&(e.releaseStartTime=e.startTime+Ft)}var vA=vA!==void 0?vA:{},_s=!1,zs;vA.isInitialized=new Promise(e=>zs=e);var Mo=function(e){var A,t,s,n,o,E,i,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c="",f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do n=h.indexOf(e.charAt(f++)),o=h.indexOf(e.charAt(f++)),E=h.indexOf(e.charAt(f++)),i=h.indexOf(e.charAt(f++)),A=n<<2|o>>4,t=(15&o)<<4|E>>2,s=(3&E)<<6|i,c+=String.fromCharCode(A),E!==64&&(c+=String.fromCharCode(t)),i!==64&&(c+=String.fromCharCode(s));while(f<e.length);return c};(function(){var e,A,t,s,n,o,E,i,h,c,f,Q,l,d,S,D,k,x,M,N,Z,T,r=r!==void 0?r:{};r.wasmBinary=Uint8Array.from(Mo("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(I){return I.charCodeAt(0)});var r=r!==void 0?r:{},sA={};for(e in r)r.hasOwnProperty(e)&&(sA[e]=r[e]);r.arguments=[],r.thisProgram="./this.program",r.quit=function(I,C){throw C},r.preRun=[],r.postRun=[];var K=!1,z=!1,$=!1,QA=!1;K=typeof window=="object",z=typeof importScripts=="function",$=typeof process=="object"&&typeof ss=="function"&&!K&&!z,QA=!K&&!$&&!z;var aA="";function UA(I){return r.locateFile?r.locateFile(I,aA):aA+I}$?(aA=__dirname+"/",r.read=function(C,B){var u;return A||(A=void 0),t||(t=void 0),C=t.normalize(C),u=A.readFileSync(C),B?u:u.toString()},r.readBinary=function(C){var B=r.read(C,!0);return B.buffer||(B=new Uint8Array(B)),ZA(B.buffer),B},process.argv.length>1&&(r.thisProgram=process.argv[1].replace(/\\/g,"/")),r.arguments=process.argv.slice(2),typeof module<"u",process.on("uncaughtException",function(I){if(!(I instanceof le))throw I}),process.on("unhandledRejection",function(I,C){process.exit(1)}),r.quit=function(I){process.exit(I)},r.inspect=function(){return"[Emscripten Module object]"}):QA?(typeof read<"u"&&(r.read=function(C){return read(C)}),r.readBinary=function(C){var B;return typeof readbuffer=="function"?new Uint8Array(readbuffer(C)):(ZA(typeof(B=read(C,"binary"))=="object"),B)},typeof scriptArgs<"u"?r.arguments=scriptArgs:typeof arguments<"u"&&(r.arguments=arguments),typeof quit=="function"&&(r.quit=function(I){quit(I)})):(K||z)&&(K?document.currentScript&&(aA=document.currentScript.src):aA=self.location.href,aA=aA.indexOf("blob:")!==0?aA.split("/").slice(0,-1).join("/")+"/":"",r.read=function(C){var B=new XMLHttpRequest;return B.open("GET",C,!1),B.send(null),B.responseText},z&&(r.readBinary=function(C){var B=new XMLHttpRequest;return B.open("GET",C,!1),B.responseType="arraybuffer",B.send(null),new Uint8Array(B.response)}),r.readAsync=function(C,B,u){var F=new XMLHttpRequest;F.open("GET",C,!0),F.responseType="arraybuffer",F.onload=function(){if(F.status==200||F.status==0&&F.response){B(F.response);return}u()},F.onerror=u,F.send(null)},r.setWindowTitle=function(I){document.title=I});var Ut=r.print||(typeof console<"u"?console.log.bind(console):typeof print<"u"?print:null),TA=r.printErr||(typeof printErr<"u"?printErr:typeof console<"u"&&console.warn.bind(console)||Ut);for(e in sA)sA.hasOwnProperty(e)&&(r[e]=sA[e]);function we(I){var C=d;return d=d+I+15&-16,C}function Tt(I){var C=h[N>>2],B=C+I+15&-16;return h[N>>2]=B,B>=EA&&!Zt()?(h[N>>2]=C,0):C}function Ht(I,C){return C||(C=16),I=Math.ceil(I/C)*C}function Eo(I){switch(I){case"i1":case"i8":return 1;case"i16":return 2;case"i32":case"float":return 4;case"i64":case"double":return 8;default:if(I[I.length-1]==="*")return 4;if(I[0]!=="i")return 0;var C=parseInt(I.substr(1));return ZA(C%8==0),C/8}}function he(I){he.shown||(he.shown={}),he.shown[I]||(he.shown[I]=1,TA(I))}sA=void 0;var Bo={"f64-rem":function(I,C){return I%C},debugger:function(){}},$e=[];function Yo(I,C){for(var B=0,u=B;u<B+0;u++)if(!$e[u])return $e[u]=I,1+u;throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}function Jo(I){$e[I-1]=null}var At={};function qo(I,C){if(I){ZA(C),At[C]||(At[C]={});var B=At[C];return B[I]||(C.length===1?B[I]=function(){return et(C,I)}:C.length===2?B[I]=function(F){return et(C,I,[F])}:B[I]=function(){return et(C,I,Array.prototype.slice.call(arguments))}),B[I]}}function Ko(I,C,B){return B?+(I>>>0)+4294967296*+(C>>>0):+(I>>>0)+4294967296*+(0|C)}function et(I,C,B){return B&&B.length?r["dynCall_"+I].apply(null,[C].concat(B)):r["dynCall_"+I].call(null,C)}var Fe=0,Yt=0;function ZA(I,C){I||PA("Assertion failed: "+C)}function Jt(I){var C=r["_"+I];return ZA(C,"Cannot call unknown function "+I+", make sure it is exported"),C}var qt={stackSave:function(){at()},stackRestore:function(){It()},arrayToC:function(I){var C,B,u=be(I.length);return C=I,B=u,n.set(C,B),u},stringToC:function(I){var C=0;if(I!=null&&I!==0){var B=(I.length<<2)+1;C=be(B),Pt(I,C,B)}return C}},ho={string:qt.stringToC,array:qt.arrayToC};function Kt(I,C,B,u,F){var v=Jt(I),W=[],G=0;if(u)for(var BA=0;BA<u.length;BA++){var nA=ho[B[BA]];nA?(G===0&&(G=at()),W[BA]=nA(u[BA])):W[BA]=u[BA]}var oA,eA=v.apply(null,W);return eA=(oA=eA,C==="string"?Re(oA):C==="boolean"?!!oA:oA),G!==0&&It(G),eA}function Qo(I,C,B,u){switch((B=B||"i8").charAt(B.length-1)==="*"&&(B="i32"),B){case"i1":case"i8":n[I>>0]=C;break;case"i16":E[I>>1]=C;break;case"i32":h[I>>2]=C;break;case"i64":tempI64=[C>>>0,+mo(tempDouble=C)>=1?tempDouble>0?(0|So(+jt(tempDouble/4294967296),4294967295))>>>0:~~+po((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0],h[I>>2]=tempI64[0],h[I+4>>2]=tempI64[1];break;case"float":f[I>>2]=C;break;case"double":Q[I>>3]=C;break;default:PA("invalid type for setValue: "+B)}}function vo(I,C,B){switch((C=C||"i8").charAt(C.length-1)==="*"&&(C="i32"),C){case"i1":case"i8":return n[I>>0];case"i16":return E[I>>1];case"i32":case"i64":return h[I>>2];case"float":return f[I>>2];case"double":return Q[I>>3];default:PA("invalid type for getValue: "+C)}return null}function Po(I,C,B,u){typeof I=="number"?(v=!0,W=I):(v=!1,W=I.length);var F=typeof C=="string"?C:null;if(G=B==4?u:[typeof Ne=="function"?Ne:we,be,we,Tt][B===void 0?2:B](Math.max(W,F?1:C.length)),v){for(u=G,ZA((3&G)==0),BA=G+(-4&W);u<BA;u+=4)h[u>>2]=0;for(BA=G+W;u<BA;)n[u++>>0]=0;return G}if(F==="i8")return I.subarray||I.slice?o.set(I,G):o.set(new Uint8Array(I),G),G;for(var v,W,G,BA,nA,oA,eA,q=0;q<W;){var mA=I[q];if((nA=F||C[q])===0){q++;continue}nA=="i64"&&(nA="i32"),Qo(G+q,mA,nA),eA!==nA&&(oA=Eo(nA),eA=nA),q+=oA}return G}function Vo(I){return S?rt?Ne(I):Tt(I):we(I)}function Re(I,C){if(C===0||!I)return"";for(var B,u,F,v=0,W=0;v|=u=o[I+W>>0],(u!=0||C)&&(W++,!C||W!=C););C||(C=W);var G="";if(v<128){for(;C>0;)F=String.fromCharCode.apply(String,o.subarray(I,I+Math.min(C,1024))),G=G?G+F:F,I+=1024,C-=1024;return G}return B=I,function(nA,oA){for(var eA=oA;nA[eA];)++eA;if(eA-oA>16&&nA.subarray&&vt)return vt.decode(nA.subarray(oA,eA));for(var q,mA,FA,RA,GA,zA,xA="";;){if(!(q=nA[oA++]))return xA;if(!(128&q)){xA+=String.fromCharCode(q);continue}if(mA=63&nA[oA++],(224&q)==192){xA+=String.fromCharCode((31&q)<<6|mA);continue}if(FA=63&nA[oA++],(240&q)==224?q=(15&q)<<12|mA<<6|FA:(RA=63&nA[oA++],(248&q)==240?q=(7&q)<<18|mA<<12|FA<<6|RA:(GA=63&nA[oA++],q=(252&q)==248?(3&q)<<24|mA<<18|FA<<12|RA<<6|GA:(1&q)<<30|mA<<24|FA<<18|RA<<12|GA<<6|(zA=63&nA[oA++]))),q<65536)xA+=String.fromCharCode(q);else{var fe=q-65536;xA+=String.fromCharCode(55296|fe>>10,56320|1023&fe)}}}(o,B)}function Oo(I){for(var C="";;){var B=n[I++>>0];if(!B)return C;C+=String.fromCharCode(B)}}function Zo(I,C){return function(u,F,v){for(var W=0;W<u.length;++W)n[F++>>0]=u.charCodeAt(W);v||(n[F>>0]=0)}(I,C,!1)}var vt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Ge(I,C,B,u){if(!(u>0))return 0;for(var F=B,v=B+u-1,W=0;W<I.length;++W){var G=I.charCodeAt(W);if(G>=55296&&G<=57343&&(G=65536+((1023&G)<<10)|1023&I.charCodeAt(++W)),G<=127){if(B>=v)break;C[B++]=G}else if(G<=2047){if(B+1>=v)break;C[B++]=192|G>>6,C[B++]=128|63&G}else if(G<=65535){if(B+2>=v)break;C[B++]=224|G>>12,C[B++]=128|G>>6&63,C[B++]=128|63&G}else if(G<=2097151){if(B+3>=v)break;C[B++]=240|G>>18,C[B++]=128|G>>12&63,C[B++]=128|G>>6&63,C[B++]=128|63&G}else if(G<=67108863){if(B+4>=v)break;C[B++]=248|G>>24,C[B++]=128|G>>18&63,C[B++]=128|G>>12&63,C[B++]=128|G>>6&63,C[B++]=128|63&G}else{if(B+5>=v)break;C[B++]=252|G>>30,C[B++]=128|G>>24&63,C[B++]=128|G>>18&63,C[B++]=128|G>>12&63,C[B++]=128|G>>6&63,C[B++]=128|63&G}}return C[B]=0,B-F}function Pt(I,C,B){return Ge(I,o,C,B)}function xe(I){for(var C=0,B=0;B<I.length;++B){var u=I.charCodeAt(B);u>=55296&&u<=57343&&(u=65536+((1023&u)<<10)|1023&I.charCodeAt(++B)),u<=127?++C:u<=2047?C+=2:u<=65535?C+=3:u<=2097151?C+=4:u<=67108863?C+=5:C+=6}return C}var Vt=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function Xo(I){for(var C=I,B=C>>1;E[B];)++B;if((C=B<<1)-I>32&&Vt)return Vt.decode(o.subarray(I,C));for(var u=0,F="";;){var v=E[I+2*u>>1];if(v==0)return F;++u,F+=String.fromCharCode(v)}}function Wo(I,C,B){if(B===void 0&&(B=2147483647),B<2)return 0;for(var u=C,F=(B-=2)<2*I.length?B/2:I.length,v=0;v<F;++v){var W=I.charCodeAt(v);E[C>>1]=W,C+=2}return E[C>>1]=0,C-u}function _o(I){return 2*I.length}function zo(I){for(var C=0,B="";;){var u=h[I+4*C>>2];if(u==0)return B;if(++C,u>=65536){var F=u-65536;B+=String.fromCharCode(55296|F>>10,56320|1023&F)}else B+=String.fromCharCode(u)}}function jo(I,C,B){if(B===void 0&&(B=2147483647),B<4)return 0;for(var u=C,F=u+B-4,v=0;v<I.length;++v){var W=I.charCodeAt(v);if(W>=55296&&W<=57343&&(W=65536+((1023&W)<<10)|1023&I.charCodeAt(++v)),h[C>>2]=W,(C+=4)+4>F)break}return h[C>>2]=0,C-u}function $o(I){for(var C=0,B=0;B<I.length;++B){var u=I.charCodeAt(B);u>=55296&&u<=57343&&++B,C+=4}return C}function Ar(I){var C=xe(I)+1,B=Ne(C);return B&&Ge(I,n,B,C),B}function er(I){var C=xe(I)+1,B=be(C);return Ge(I,n,B,C),B}function tr(I){return I}function sr(){var I,C=function(){var u=Error();if(!u.stack){try{throw Error(0)}catch(F){u=F}if(!u.stack)return"(no stack trace available)"}return u.stack.toString()}();return r.extraStackTrace&&(C+=`
|
|
12
|
-
`+r.extraStackTrace()),(I=C).replace(/__Z[\w\d_]+/g,function(B){var u,F=u=B;return B===F?B:B+" ["+F+"]"})}function tt(I,C){return I%C>0&&(I+=C-I%C),I}function Ot(I){r.buffer=s=I}function st(){r.HEAP8=n=new Int8Array(s),r.HEAP16=E=new Int16Array(s),r.HEAP32=h=new Int32Array(s),r.HEAPU8=o=new Uint8Array(s),r.HEAPU16=i=new Uint16Array(s),r.HEAPU32=c=new Uint32Array(s),r.HEAPF32=f=new Float32Array(s),r.HEAPF64=Q=new Float64Array(s)}function Zt(){var I=r.usingWasm?65536:16777216,C=2147483648-I;if(h[N>>2]>C)return!1;var B=EA;for(EA=Math.max(EA,16777216);EA<h[N>>2];)EA=EA<=536870912?tt(2*EA,I):Math.min(tt((3*EA+2147483648)/4,I),C);var u=r.reallocBuffer(EA);return u&&u.byteLength==EA?(Ot(u),st(),!0):(EA=B,!1)}l=d=D=k=x=M=N=0,S=!1,r.reallocBuffer||(r.reallocBuffer=function(I){try{if(ArrayBuffer.transfer)C=ArrayBuffer.transfer(s,I);else{var C,B=n;C=new ArrayBuffer(I),new Int8Array(C).set(B)}}catch{return!1}return!!yo(C)&&C});try{(Z=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{Z=function(C){return C.byteLength}}var nt=r.TOTAL_STACK||5242880,EA=r.TOTAL_MEMORY||16777216;function co(){return EA}function Qe(I){for(;I.length>0;){var C=I.shift();if(typeof C=="function"){C();continue}var B=C.func;typeof B=="number"?C.arg===void 0?r.dynCall_v(B):r.dynCall_vi(B,C.arg):B(C.arg===void 0?null:C.arg)}}EA<nt&&TA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+EA+"! (TOTAL_STACK="+nt+")"),r.buffer?s=r.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(r.wasmMemory=new WebAssembly.Memory({initial:EA/65536}),s=r.wasmMemory.buffer):s=new ArrayBuffer(EA),r.buffer=s),st();var Xt=[],ot=[],Wt=[],_t=[],zt=[],rt=!1,lo=!1;function fo(I){Xt.unshift(I)}function nr(I){ot.unshift(I)}function or(I){Wt.unshift(I)}function rr(I){_t.unshift(I)}function uo(I){zt.unshift(I)}function ir(I,C,B){var u,F;he("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),B&&(u=n[F=C+xe(I)]),Pt(I,C,1/0),B&&(n[F]=u)}function Ir(I,C,B){return I>=0?I:C<=32?2*Math.abs(1<<C-1)+I:Math.pow(2,C)+I}function ar(I,C,B){if(I<=0)return I;var u=C<=32?Math.abs(1<<C-1):Math.pow(2,C-1);return I>=u&&(C<=32||I>u)&&(I=-2*u+I),I}var mo=Math.abs,po=Math.ceil,jt=Math.floor,So=Math.min,_A=0,it=null,ce=null;function gr(I){return I}r.preloadedImages={},r.preloadedAudios={};var $t="data:application/octet-stream;base64,";function Me(I){return String.prototype.startsWith?I.startsWith($t):I.indexOf($t)===0}(function(){var C="main.wast",B="main.wasm",u="main.temp.asm.js";Me(C)||(C=UA(C)),Me(B)||(B=UA(B)),Me(u)||(u=UA(u));var F={global:null,env:null,asm2wasm:Bo,parent:r},v=null;function W(eA){return eA}function G(){try{if(r.wasmBinary)return new Uint8Array(r.wasmBinary);if(r.readBinary)return r.readBinary(B);throw"both async and sync fetching of the wasm failed"}catch(eA){PA(eA)}}r.asmPreload=r.asm;var BA=r.reallocBuffer,nA=function(eA){eA=tt(eA,r.usingWasm?65536:16777216);var q=r.buffer.byteLength;if(r.usingWasm)try{var mA=r.wasmMemory.grow((eA-q)/65536);return mA!==-1?r.buffer=r.wasmMemory.buffer:null}catch{return null}};r.reallocBuffer=function(eA){return oA==="asmjs"?BA(eA):nA(eA)};var oA="";r.asm=function(eA,q,mA){var FA;if(!(q=FA=q).table){var RA,GA=r.wasmTableSize;GA===void 0&&(GA=1024);var zA=r.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?zA!==void 0?q.table=new WebAssembly.Table({initial:GA,maximum:zA,element:"anyfunc"}):q.table=new WebAssembly.Table({initial:GA,element:"anyfunc"}):q.table=Array(GA),r.wasmTable=q.table}return q.memoryBase||(q.memoryBase=r.STATIC_BASE),q.tableBase||(q.tableBase=0),RA=function(fe,te,Ct){if(typeof WebAssembly!="object")return TA("no native wasm support detected"),!1;if(!(r.wasmMemory instanceof WebAssembly.Memory))return TA("no native wasm Memory in use"),!1;function Le(HA,YA){if((v=HA.exports).memory){var ue,Et,ts;ue=v.memory,Et=r.buffer,ue.byteLength<Et.byteLength&&TA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),ts=new Int8Array(Et),new Int8Array(ue).set(ts),Ot(ue),st()}r.asm=v,r.usingWasm=!0,function(lr){if(_A--,r.monitorRunDependencies&&r.monitorRunDependencies(_A),_A==0&&(it!==null&&(clearInterval(it),it=null),ce)){var Do=ce;ce=null,Do()}}("wasm-instantiate")}if(te.memory=r.wasmMemory,F.global={NaN:NaN,Infinity:1/0},F["global.Math"]=Math,F.env=te,_A++,r.monitorRunDependencies&&r.monitorRunDependencies(_A),r.instantiateWasm)try{return r.instantiateWasm(F,Le)}catch(HA){return TA("Module.instantiateWasm callback failed with error: "+HA),!1}function se(HA){Le(HA.instance,HA.module)}function es(HA){(!r.wasmBinary&&(K||z)&&typeof fetch=="function"?fetch(B,{credentials:"same-origin"}).then(function(YA){if(!YA.ok)throw"failed to load wasm binary file at '"+B+"'";return YA.arrayBuffer()}).catch(function(){return G()}):new Promise(function(YA,ue){YA(G())})).then(function(YA){return WebAssembly.instantiate(YA,F)}).then(HA).catch(function(YA){TA("failed to asynchronously prepare wasm: "+YA),PA(YA)})}return r.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||Me(B)||typeof fetch!="function"?es(se):WebAssembly.instantiateStreaming(fetch(B,{credentials:"same-origin"}),F).then(se).catch(function(HA){TA("wasm streaming compile failed: "+HA),TA("falling back to ArrayBuffer instantiation"),es(se)}),{}}(eA,q,mA),ZA(RA,"no binaryen method succeeded."),RA},r.asm})(),d=(l=1024)+4816,ot.push(),r.STATIC_BASE=l,r.STATIC_BUMP=4816;var yA=d;function Cr(I){n[yA]=n[I],n[yA+1]=n[I+1],n[yA+2]=n[I+2],n[yA+3]=n[I+3]}function Er(I){n[yA]=n[I],n[yA+1]=n[I+1],n[yA+2]=n[I+2],n[yA+3]=n[I+3],n[yA+4]=n[I+4],n[yA+5]=n[I+5],n[yA+6]=n[I+6],n[yA+7]=n[I+7]}function Br(I,C,B){var u=B>0?B:xe(I)+1,F=Array(u),v=Ge(I,F,0,F.length);return C&&(F.length=v),F}function hr(I){for(var C=[],B=0;B<I.length;B++){var u=I[B];u>255&&(u&=255),C.push(String.fromCharCode(u))}return C.join("")}d+=16,N=we(4),x=(D=k=Ht(d))+nt,M=Ht(x),h[N>>2]=M,S=!0,r.wasmTableSize=4,r.wasmMaxTableSize=4,r.asmGlobalArg={},r.asmLibraryArg={abort:PA,assert:ZA,enlargeMemory:Zt,getTotalMemory:co,abortOnCannotGrowMemory:function(){PA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+EA+", (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,B,u){var F=at();try{return r.dynCall_iii(C,B,u)}catch(v){if(It(F),typeof v!="number"&&v!=="longjmp")throw v;r.setThrew(1,0)}},___assert_fail:function(C,B,u,F){PA("Assertion failed: "+Re(C)+", at: "+[B?Re(B):"unknown filename",u,F?Re(F):"unknown function"])},___setErrNo:function(C){return r.___errno_location&&(h[r.___errno_location()>>2]=C),C},_abort:function(){r.abort()},_emscripten_memcpy_big:function(C,B,u){return o.set(o.subarray(B,B+u),C),C},_llvm_floor_f64:jt,DYNAMICTOP_PTR:N,tempDoublePtr:yA,ABORT:Fe,STACKTOP:k,STACK_MAX:x};var As=r.asm(r.asmGlobalArg,r.asmLibraryArg,s);r.asm=As,r.___errno_location=function(){return r.asm.___errno_location.apply(null,arguments)};var yo=r._emscripten_replace_memory=function(){return r.asm._emscripten_replace_memory.apply(null,arguments)};r._free=function(){return r.asm._free.apply(null,arguments)};var Ne=r._malloc=function(){return r.asm._malloc.apply(null,arguments)};r._memcpy=function(){return r.asm._memcpy.apply(null,arguments)},r._memset=function(){return r.asm._memset.apply(null,arguments)},r._sbrk=function(){return r.asm._sbrk.apply(null,arguments)},r._stb_vorbis_js_channels=function(){return r.asm._stb_vorbis_js_channels.apply(null,arguments)},r._stb_vorbis_js_close=function(){return r.asm._stb_vorbis_js_close.apply(null,arguments)},r._stb_vorbis_js_decode=function(){return r.asm._stb_vorbis_js_decode.apply(null,arguments)},r._stb_vorbis_js_open=function(){return r.asm._stb_vorbis_js_open.apply(null,arguments)},r._stb_vorbis_js_sample_rate=function(){return r.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},r.establishStackSpace=function(){return r.asm.establishStackSpace.apply(null,arguments)},r.getTempRet0=function(){return r.asm.getTempRet0.apply(null,arguments)},r.runPostSets=function(){return r.asm.runPostSets.apply(null,arguments)},r.setTempRet0=function(){return r.asm.setTempRet0.apply(null,arguments)},r.setThrew=function(){return r.asm.setThrew.apply(null,arguments)};var be=r.stackAlloc=function(){return r.asm.stackAlloc.apply(null,arguments)},It=r.stackRestore=function(){return r.asm.stackRestore.apply(null,arguments)},at=r.stackSave=function(){return r.asm.stackSave.apply(null,arguments)};function le(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}function gt(I){I=I||r.arguments,!(_A>0)&&(function(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)fo(r.preRun.shift());Qe(Xt)}(),!(_A>0)&&(r.calledRun||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),C()},1)):C())));function C(){!r.calledRun&&(r.calledRun=!0,Fe||(rt||(rt=!0,Qe(ot)),Qe(Wt),r.onRuntimeInitialized&&r.onRuntimeInitialized(),function(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)uo(r.postRun.shift());Qe(zt)}()))}}function Qr(I,C){(!C||!r.noExitRuntime||I!==0)&&(r.noExitRuntime||(Fe=!0,Yt=I,k=T,Qe(_t),lo=!0,r.onExit&&r.onExit(I)),r.quit(I,new le(I)))}function PA(I){throw r.onAbort&&r.onAbort(I),I!==void 0?(Ut(I),TA(I),I=JSON.stringify(I)):I="",Fe=!0,Yt=1,"abort("+I+"). Build with -s ASSERTIONS=1 for more info."}if(r.dynCall_iii=function(){return r.asm.dynCall_iii.apply(null,arguments)},r.asm=As,r.ccall=Kt,r.cwrap=function(C,B,u,F){var v=(u=u||[]).every(function(W){return W==="number"});return B!=="string"&&v&&!F?Jt(C):function(){return Kt(C,B,u,arguments,F)}},le.prototype=Error(),le.prototype.constructor=le,ce=function I(){r.calledRun||gt(),r.calledRun||(ce=I)},r.run=gt,r.abort=PA,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();r.noExitRuntime=!0,gt(),r.onRuntimeInitialized=()=>{_s=!0,zs()},vA.decode=function(I){return function(B){if(!_s)throw Error("Not initialized");var u={};function F(te){return new Int32Array(r.HEAPU8.buffer,te,1)[0]}function v(te,Ct){var Le=new ArrayBuffer(Ct*Float32Array.BYTES_PER_ELEMENT),se=new Float32Array(Le);return se.set(new Float32Array(r.HEAPU8.buffer,te,Ct)),se}u.open=r.cwrap("stb_vorbis_js_open","number",[]),u.close=r.cwrap("stb_vorbis_js_close","void",["number"]),u.channels=r.cwrap("stb_vorbis_js_channels","number",["number"]),u.sampleRate=r.cwrap("stb_vorbis_js_sample_rate","number",["number"]),u.decode=r.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var W,G,BA,nA,oA=u.open(),eA=(W=B,G=B.byteLength,BA=r._malloc(G),(nA=new Uint8Array(r.HEAPU8.buffer,BA,G)).set(new Uint8Array(W,0,G)),nA),q=r._malloc(4),mA=r._malloc(4),FA=u.decode(oA,eA.byteOffset,eA.byteLength,q,mA);if(r._free(eA.byteOffset),FA<0)throw u.close(oA),r._free(q),Error("stbvorbis decode failed: "+FA);for(var RA=u.channels(oA),GA=Array(RA),zA=new Int32Array(r.HEAPU32.buffer,F(q),RA),xA=0;xA<RA;xA++)GA[xA]=v(zA[xA],FA),r._free(zA[xA]);var fe=u.sampleRate(oA);return u.close(oA),r._free(F(q)),r._free(q),{data:GA,sampleRate:fe,eof:!0,error:null}}(I)}})();function js(e){let A=e.messageData,t=e.channelNumber,s={};switch(t>=0&&(s=this.workletProcessorChannels[t]),e.messageType){case AA.noteOn:this.noteOn(t,A[0],A[1],A[2]);break;case AA.noteOff:this.noteOff(t,A);break;case AA.pitchWheel:this.pitchWheel(t,A[0],A[1]);break;case AA.ccChange:this.controllerChange(t,A[0],A[1],A[2]);break;case AA.customcCcChange:s.customControllers[A[0]]=A[1];break;case AA.killNote:this.killNote(t,A);break;case AA.programChange:this.programChange(t,A[0],A[1]);break;case AA.channelPressure:this.channelPressure(t,A);break;case AA.polyPressure:this.polyPressure(t,A[0],A[1]);break;case AA.ccReset:t===bA?this.resetAllControllers():this.resetControllers(t);break;case AA.systemExclusive:this.systemExclusive(A);break;case AA.setChannelVibrato:if(t===bA)for(let E=0;E<this.workletProcessorChannels.length;E++)A.rate===-1?this.disableAndLockVibrato(E):this.setVibrato(E,A.depth,A.rate,A.delay);A.rate===-1?this.disableAndLockVibrato(t):this.setVibrato(t,A.depth,A.rate,A.delay);break;case AA.stopAll:t===bA?this.stopAllChannels(A===1):this.stopAll(t,A===1);break;case AA.killNotes:this.voiceKilling(A);break;case AA.muteChannel:this.muteChannel(t,A);break;case AA.addNewChannel:this.createWorkletChannel(!0);break;case AA.debugMessage:this.debugMessage();break;case AA.setMasterParameter:let n=A[0],o=A[1];switch(n){case pe.masterPan:this.setMasterPan(o);break;case pe.mainVolume:this.setMasterGain(o);break;case pe.voicesCap:this.voiceCap=o;break}break;case AA.setDrums:this.setDrums(t,A);break;case AA.transpose:t===bA?this.transposeAllChannels(A[0],A[1]):this.transposeChannel(t,A[0],A[1]);break;case AA.highPerformanceMode:this.highPerformanceMode=A;break;case AA.lockController:A[0]===bA?s.lockPreset=A[1]:s.lockedControllers[A[0]]=A[1];break;case AA.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case AA.soundFontManager:this.soundfontManager.handleMessage(A[0],A[1]),this.clearSoundFont(!0,!1);break;case AA.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case AA.setLogLevel:gs(A[0],A[1],A[2],A[3]);break;default:Y("Unrecognized event:",A);break}}function $s(e,A){this.enableEventSystem&&this.post({messageType:pA.eventCall,messageData:{eventName:e,eventData:A}})}function An(){if(!this.enableEventSystem)return;let e=this.workletProcessorChannels.map(A=>{let t=(A.midiControllers[gA+P.pitchWheelRange]>>7)+(A.midiControllers[gA+P.pitchWheelRange]&127)/127;return{voicesAmount:A.voices.length,pitchBend:A.midiControllers[gA+P.pitchWheel],pitchBendRangeSemitones:t,isMuted:A.isMuted,isDrum:A.drumChannel}});this.post({messageType:pA.channelProperties,messageData:e})}function No(e,A,t){let s=e,n=A<<7|t;return e===127&&A===127&&t===127?{midiNote:-1,centTuning:null}:{midiNote:s,centTuning:n*.0061}}function en(e,A=0){let t=e[0];if(!(this.deviceID!==bA&&e[1]!==127&&this.deviceID!==e[1]))switch(t){default:Y(`%cUnrecognized SysEx: %c${hA(e)}`,a.warn,a.unrecognized);break;case 126:case 127:switch(e[2]){case 4:let s;switch(e[3]){case 1:let n=e[5]<<7|e[4];this.setMIDIVolume(n/16384),m(`%cMaster Volume. Volume: %c${n}`,a.info,a.value);break;case 2:let E=((e[5]<<7|e[4])-8192)/8192;this.setMasterPan(E),m(`%cMaster Pan. Pan: %c${E}`,a.info,a.value);break;case 3:let i=(e[5]<<7|e[6])-8192;s=Math.floor(i/81.92),this.setMasterTuning(s),m(`%cMaster Fine Tuning. Cents: %c${s}`,a.info,a.value);break;case 4:s=(e[5]-64)*100,this.setMasterTuning(s),m(`%cMaster Coarse Tuning. Cents: %c${s}`,a.info,a.value);break;default:Y(`%cUnrecognized MIDI Device Control Real-time message: %c${hA(e)}`,a.warn,a.unrecognized)}break;case 9:e[3]===1?(m("%cGM system on",a.info),this.system="gm"):e[3]===3?(m("%cGM2 system on",a.info),this.system="gm2"):(m("%cGM system off, defaulting to GS",a.info),this.system="gs");break;case 8:switch(e[3]){case 2:case 7:let n=4;e[3]===7&&n++;let o=e[n++],E=e[n++];for(let h=0;h<E;h++)this.tunings[o][e[n++]]=No(e[n++],e[n++],e[n++]);m(`%cSingle Note Tuning. Program: %c${o}%c Keys affected: ${E}`,a.info,a.recognized,a.info,a.recognized);break;case 9:case 8:let i=new Int8Array(12);if(e[3]===8)for(let h=0;h<12;h++)i[h]=e[7+h]-64;else for(let h=0;h<24;h+=2){let c=(e[7+h]<<7|e[8+h])-8192;i[h/2]=Math.floor(c/81.92)}(e[4]&1)===1&&this.setOctaveTuning(14+A,i),(e[4]>>1&1)===1&&this.setOctaveTuning(15+A,i);for(let h=0;h<7;h++)(e[5]>>h&1)===1&&this.setOctaveTuning(7+h+A,i);for(let h=0;h<7;h++)(e[6]>>h&1)===1&&this.setOctaveTuning(h+A,i);m(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${i.join(" ")}`,a.info,a.value);break;default:Y(`%cUnrecognized MIDI Tuning standard message: %c${hA(e)}`,a.warn,a.unrecognized);break}break;default:Y(`%cUnrecognized MIDI Realtime/non realtime message: %c${hA(e)}`,a.warn,a.unrecognized)}break;case 65:if(e[2]===66&&e[3]===18){let s=e[7];if(e[6]===127){s===0?(m("%cGS system on",a.info),this.system="gs"):s===127&&(m("%cGS system off, switching to GM2",a.info),this.system="gm2");return}else if(e[4]===64){if((e[5]&16)>0){let n=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A;switch(e[6]){default:break;case 21:let o=s>0&&e[5]>>4;this.setDrums(n,o),m(`%cChannel %c${n}%c ${o?"is now a drum channel":"now isn't a drum channel"}%c via: %c${hA(e)}`,a.info,a.value,a.recognized,a.info,a.value);return;case 22:let E=s-64;this.transposeChannel(n,E),m(`%cChannel %c${n}%c pitch shift. Semitones %c${E}%c, with %c${hA(e)}`,a.info,a.recognized,a.info,a.value,a.info,a.value);return;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 i=s-64;m(`%cChannel %c${n}%c tuning. Cents %c${i}%c, with %c${hA(e)}`,a.info,a.recognized,a.info,a.value,a.info,a.value),this.setChannelTuning(n,i)}}else if(e[5]===0&&e[6]===6){m(`%cRoland GS Master Pan set to: %c${s}%c with: %c${hA(e)}`,a.info,a.value,a.info,a.value),this.setMasterPan((s-64)/64);return}else if(e[5]===0&&e[6]===5){let n=s-64;m(`%cRoland GS Master Key-Shift set to: %c${n}%c with: %c${hA(e)}`,a.info,a.value,a.info,a.value),this.setMasterTuning(n*100);return}else if(e[5]===0&&e[6]===4){m(`%cRoland GS Master Volume set to: %c${s}%c with: %c${hA(e)}`,a.info,a.value,a.info,a.value),this.setMIDIVolume(s/127);return}}Y(`%cUnrecognized Roland %cGS %cSysEx: %c${hA(e)}`,a.warn,a.recognized,a.warn,a.unrecognized);return}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),m(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${hA(e)}`,a.info,a.value,a.info,a.value);return}else{Y(`%cUnrecognized Roland SysEx: %c${hA(e)}`,a.warn,a.unrecognized);return}case 67:if(e[2]===76)if(e[3]===0&&e[4]===0)switch(e[5]){case 4:let s=e[6];this.setMIDIVolume(s/127),m(`%cXG master volume. Volume: %c${s}`,a.info,a.recognized);break;case 6:let n=e[6]-64;this.transposeAllChannels(n),m(`%cXG master transpose. Volume: %c${n}`,a.info,a.recognized);break;case 126:m("%cXG system on",a.info),this.system="xg";break}else if(e[3]===8){if(this.system!=="xg")return;let s=e[4]+A,n=e[6];switch(e[5]){case 1:this.controllerChange(s,p.bankSelect,n);break;case 2:this.controllerChange(s,p.lsbForControl0BankSelect,n);break;case 3:this.programChange(s,n);break;case 11:this.controllerChange(s,p.mainVolume,n);break;case 14:let o=n;o===0&&(o=Math.floor(Math.random()*127)),this.controllerChange(s,p.pan,o);break;case 19:this.controllerChange(s,p.effects1Depth,n);break;case 18:this.controllerChange(s,p.effects3Depth,n);break;default:Y(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,a.warn,a.unrecognized)}}else this.system==="xg"&&Y(`%cUnrecognized Yamaha XG SysEx: %c${hA(e)}`,a.warn,a.unrecognized);else this.system==="xg"&&Y(`%cUnrecognized Yamaha SysEx: %c${hA(e)}`,a.warn,a.unrecognized);break}}var Ze=[];function tn(){Ze=[]}function bo(e,A,t,s){Ze[t]=!1,s({channel:e,sampleID:t,sampleData:A.getAudioData()}),Ze[t]=!0}function ye(e){if(e===null||typeof e!="object")return e;if(e instanceof Int16Array)return new Int16Array(e);let A=Array.isArray(e)?[]:{};for(let t in e)e.hasOwnProperty(t)&&(typeof e[t]=="object"&&e[t]!==null?A[t]=ye(e[t]):e[t]instanceof Int16Array?A[t]=new Int16Array(e[t]):A[t]=e[t]);return A}function sn(e,A,t,s,n,o,E,i,h=!1){let c,f=i[A][t];return f!==void 0?(c=f.map(ye),c.forEach(Q=>{Q.startTime=n})):(c=s.getSamplesAndGenerators(A,t).reduce((Q,l)=>{let d=l.sampleID+s.sampleIDOffset;if(Ze[d]!==!0&&bo(e,l.sample,d,E),l.sample.sampleData===void 0)return Y(`Discarding invalid sample: ${l.sample.sampleName}`),Q;let S=new Int16Array(60);for(let r=0;r<60;r++)S[r]=Ss(r,l.presetGenerators,l.instrumentGenerators);S[g.initialAttenuation]=Math.floor(S[g.initialAttenuation]*.4);let D=l.sample.samplePitch;S[g.overridingRootKey]>-1&&(D=S[g.overridingRootKey]);let k=A;S[g.keyNum]>-1&&(k=S[g.keyNum]);let x=l.sample.sampleLoopStartIndex/2+(S[g.startloopAddrsOffset]+S[g.startloopAddrsCoarseOffset]*32768),M=l.sample.sampleLoopEndIndex/2+(S[g.endloopAddrsOffset]+S[g.endloopAddrsCoarseOffset]*32768),N=S[g.sampleModes],Z=l.sample.getAudioData().length;x=Math.min(Math.max(0,x),Z),M=Math.min(Math.max(0,M),Z),M-x<1&&(N=0);let T={sampleID:d,playbackStep:l.sample.sampleRate/o*Math.pow(2,l.sample.samplePitchCorrection/1200),cursor:S[g.startAddrsOffset]+S[g.startAddrsCoarseOffset]*32768,rootKey:D,loopStart:x,loopEnd:M,end:Math.floor(l.sample.sampleData.length)-1+(S[g.endAddrOffset]+S[g.endAddrsCoarseOffset]*32768),loopingMode:N};return S[g.velocity]>-1&&(t=S[g.velocity]),h&&Cs([{Sample:l.sample.sampleName,Generators:S,Modulators:l.modulators.map(r=>r.debugString()),Velocity:t,TargetKey:k,MidiNote:A,WorkletSample:T}]),Q.push({filter:ye(vs),generators:S,modulators:l.modulators,modulatedGenerators:new Int16Array(60),sample:T,velocity:t,midiNote:A,pressure:0,channelNumber:e,startTime:n,targetKey:k,currentTuningCalculated:1,currentTuningCents:0,releaseStartTime:1/0,finished:!1,isInRelease:!1,currentModEnvValue:0,releaseStartModEnv:1,currentPan:.5,volumeEnvelope:ye(Js)}),Q},[]),i[A][t]=c.map(ye)),c}function nn(e,A,t){if(A.transformAmount===0)return 0;let s;if(A.sourceUsesCC)s=e[A.sourceIndex];else{let h=A.sourceIndex+gA;switch(A.sourceIndex){case P.noController:s=16383;break;case P.noteOnKeyNum:s=t.midiNote<<7;break;case P.noteOnVelocity:s=t.velocity<<7;break;case P.polyPressure:s=t.pressure<<7;break;default:s=e[h];break}}let n=dA[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][s],o;if(A.secSrcUsesCC)o=e[A.secSrcIndex];else{let h=A.secSrcIndex+gA;switch(A.secSrcIndex){case P.noController:o=16383;break;case P.noteOnKeyNum:o=t.midiNote<<7;break;case P.noteOnVelocity:o=t.velocity<<7;break;case P.polyPressure:o=t.pressure<<7;break;default:o=e[h]}}let E=dA[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],i=n*E*A.transformAmount;return A.transformType===2?Math.abs(i):i}function VA(e,A,t=-1,s=0){let{modulators:n,generators:o,modulatedGenerators:E}=e;if(t===-1){E.set(o),n.forEach(c=>{E[c.modulatorDestination]+=nn(A,c,e)}),Ae(e);return}let i=new Set([g.initialAttenuation,g.delayVolEnv,g.attackVolEnv,g.holdVolEnv,g.decayVolEnv,g.sustainVolEnv,g.releaseVolEnv,g.keyNumToVolEnvHold,g.keyNumToVolEnvDecay]),h=new Set;n.forEach(c=>{if(c.sourceUsesCC===t&&c.sourceIndex===s||c.secSrcUsesCC===t&&c.secSrcIndex===s){let f=c.modulatorDestination;h.has(f)||(E[f]=o[f],n.forEach(Q=>{Q.modulatorDestination===f&&(E[f]+=nn(A,Q,e))}),h.add(f))}}),[...h].some(c=>i.has(c))&&Ae(e)}var dA=[];for(let e=0;e<4;e++){dA[e]=[[new Float32Array(IA),new Float32Array(IA)],[new Float32Array(IA),new Float32Array(IA)]];for(let A=0;A<IA;A++)dA[e][0][0][A]=$A(0,e,A/IA,0),isNaN(dA[e][0][0][A])&&(dA[e][0][0][A]=1),dA[e][1][0][A]=$A(0,e,A/IA,1),isNaN(dA[e][1][0][A])&&(dA[e][1][0][A]=1),dA[e][0][1][A]=$A(1,e,A/IA,0),isNaN(dA[e][0][1][A])&&(dA[e][0][1][A]=1),dA[e][1][1][A]=$A(1,e,A/IA,1),isNaN(dA[e][1][1][A])&&(dA[e][1][1][A]=1)}function on(e,A,t,s=!1,n=!0,o=currentTime){if(t===0){this.noteOff(e,A);return}let E=this.workletProcessorChannels[e];if(this.highPerformanceMode&&this.totalVoicesAmount>200&&t<40||this.highPerformanceMode&&t<10||E.isMuted)return;let i=A+E.channelTransposeKeyShift;if(A>127||A<0)return;let h=E.preset.program;this.tunings[h]?.[A]?.midiNote>=0&&(i=this.tunings[h]?.[A].midiNote);let c=sn(e,i,t,E.preset,o,sampleRate,Q=>this.sampleDump(Q.channel,Q.sampleID,Q.sampleData),E.cachedVoices,s),f=E.voices;c.forEach(Q=>{let l=Q.generators[g.exclusiveClass];l!==0&&f.forEach(d=>{d.generators[g.exclusiveClass]===l&&(this.releaseVoice(d),d.modulatedGenerators[g.releaseVolEnv]=-7e3,d.modulatedGenerators[g.releaseModEnv]=-7e3,Ae(d))}),VA(Q,E.midiControllers),Q.currentPan=(Math.max(-500,Math.min(500,Q.modulatedGenerators[g.pan]))+500)/1e3}),this.totalVoicesAmount+=c.length,this.totalVoicesAmount>this.voiceCap&&this.voiceKilling(c.length),f.push(...c),n&&(this.sendChannelProperties(),this.callEvent("noteon",{midiNote:A,channel:e,velocity:t}))}function rn(e,A){if(A>127||A<0){Y("Received a noteOn for note",A,"Ignoring.");return}let t=A+this.workletProcessorChannels[e].channelTransposeKeyShift,s=this.workletProcessorChannels[e].preset.program;if(this.tunings[s]?.[A]?.midiNote>=0&&(t=this.tunings[s]?.[A].midiNote),this.highPerformanceMode&&!this.workletProcessorChannels[e].drumChannel){this.killNote(e,t);return}this.workletProcessorChannels[e].voices.forEach(o=>{o.midiNote!==t||o.isInRelease===!0||(this.workletProcessorChannels[e].holdPedal?this.workletProcessorChannels[e].sustainedVoices.push(o):this.releaseVoice(o))}),this.callEvent("noteoff",{midiNote:A,channel:e})}function In(e,A){this.workletProcessorChannels[e].voices.forEach(t=>{t.midiNote===A&&(t.modulatedGenerators[g.releaseVolEnv]=-12e3,this.releaseVoice(t))})}function an(e,A=!1){let t=this.workletProcessorChannels[e].voices;A?(t.length=0,this.workletProcessorChannels[e].sustainedVoices.length=0,this.sendChannelProperties()):(t.forEach(s=>{s.isInRelease||this.releaseVoice(s)}),this.workletProcessorChannels[e].sustainedVoices.forEach(s=>{this.releaseVoice(s)}))}function gn(e=!1){m("%cStop all received!",a.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.stopAll(A,e);this.callEvent("stopall",void 0)}function Cn(e,A=!1){this.transposition=0;for(let t=0;t<this.workletProcessorChannels.length;t++)this.transposeChannel(t,e,A);this.transposition=e}function En(e,A,t=!1){let s=this.workletProcessorChannels[e];s.drumChannel||(A+=this.transposition);let n=Math.trunc(A),o=s.channelTransposeKeyShift+s.customControllers[iA.channelTransposeFine]/100;s.drumChannel&&!t||A===o||(n!==s.channelTransposeKeyShift&&this.stopAll(e,!1),s.channelTransposeKeyShift=n,s.customControllers[iA.channelTransposeFine]=(A-n)*100)}function Bn(e,A,t=!0){let s=this.workletProcessorChannels[e];A=Math.round(A),s.customControllers[iA.channelTuning]=A,t&&m(`%cChannel ${e} fine tuning. Cents: %c${A}`,a.info,a.value)}function hn(e,A){let t=this.workletProcessorChannels[e];A=Math.round(A),t.customControllers[iA.channelTuningSemitones]=A,m(`%cChannel ${e} coarse tuning. Semitones: %c${A}`,a.info,a.value)}function Qn(e){e=Math.round(e);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].customControllers[iA.masterTuning]=e}function cn(e,A){let t=this.workletProcessorChannels[e];A=Math.round(A),m(`%cChannel ${e} modulation depth. Cents: %c${A}`,a.info,a.value),t.customControllers[iA.modulationMultiplier]=A/50}function ln(e,A,t){if(this.workletProcessorChannels[e].lockedControllers[gA+P.pitchWheel])return;let s=t|A<<7;this.callEvent("pitchwheel",{channel:e,MSB:A,LSB:t}),this.workletProcessorChannels[e].midiControllers[gA+P.pitchWheel]=s,this.workletProcessorChannels[e].voices.forEach(n=>VA(n,this.workletProcessorChannels[e].midiControllers,0,P.pitchWheel)),this.sendChannelProperties()}function fn(e,A){let t=this.workletProcessorChannels[e];t.midiControllers[gA+P.channelPressure]=A<<7,this.workletProcessorChannels[e].voices.forEach(s=>VA(s,t.midiControllers,0,P.channelPressure)),this.callEvent("channelpressure",{channel:e,pressure:A})}function un(e,A,t){this.workletProcessorChannels[e].voices.forEach(s=>{s.midiNote===A&&(s.pressure=t,VA(s,this.workletProcessorChannels[e].midiControllers,0,P.polyPressure))}),this.callEvent("polypressure",{channel:e,midiNote:A,pressure:t})}function dn(e,A){if(A.length!==12)throw new Error("Tuning is not the length of 12.");this.workletProcessorChannels[e].channelOctaveTuning=A}function mn(e,A,t,s=!1){let n=this.workletProcessorChannels[e];if(A>=p.lsbForControl1ModulationWheel&&A<=p.lsbForControl13EffectControl2&&A!==p.lsbForControl6DataEntry){let o=A-32;if(n.lockedControllers[o])return;n.midiControllers[o]=n.midiControllers[o]&16256|t&127,n.voices.forEach(E=>VA(E,n.midiControllers,1,o))}switch(A){case p.allNotesOff:this.stopAll(e);break;case p.allSoundOff:this.stopAll(e,!0);break;case p.bankSelect:let o=t;if(!s){switch(this.system){case"gm":m(`%cIgnoring the Bank Select (${t}), as the synth is in GM mode.`,a.info);return;case"xg":o===120||o===126||o===127?this.setDrums(e,!0):this.setDrums(e,!1);break;case"gm2":o===120&&(n.drumChannel=!0,this.callEvent("drumchange",{channel:e,isDrumChannel:!0}))}n.drumChannel&&(o=128),o===128&&!n.drumChannel&&(o=n.midiControllers[p.bankSelect])}n.midiControllers[p.bankSelect]=o;break;case p.lsbForControl0BankSelect:this.system==="xg"?n.drumChannel||t!==127&&(n.midiControllers[p.bankSelect]=t):this.system==="gm2"&&(n.midiControllers[p.bankSelect]=t);break;case p.RPNLsb:n.RPValue=n.RPValue<<7|t,n.dataEntryState=fA.RPFine;break;case p.RPNMsb:n.RPValue=t,n.dataEntryState=fA.RPCoarse;break;case p.NRPNMsb:n.NRPCoarse=t,n.dataEntryState=fA.NRPCoarse;break;case p.NRPNLsb:n.NRPFine=t,n.dataEntryState=fA.NRPFine;break;case p.dataEntryMsb:this.dataEntryCoarse(e,t);break;case p.lsbForControl6DataEntry:this.dataEntryFine(e,t);break;case p.resetAllControllers:this.resetControllers(e);break;case p.sustainPedal:t>=64?n.holdPedal=!0:(n.holdPedal=!1,n.sustainedVoices.forEach(E=>{this.releaseVoice(E)}),n.sustainedVoices=[]);break;default:if(n.lockedControllers[A])return;n.midiControllers[A]=t<<7,n.voices.forEach(E=>VA(E,n.midiControllers,1,A)),this.callEvent("controllerchange",{channel:e,controllerNumber:A,controllerValue:t});break}}function pn(e){this.midiVolume=e,this.setMasterPan(this.pan)}function Sn(e){this.masterGain=e*Rt,this.setMasterPan(this.pan)}function yn(e){this.pan=e,e=e/2+.5,this.panLeft=(1-e)*this.currentGain,this.panRight=e*this.currentGain}function Dn(e,A){A&&this.stopAll(e,!0),this.workletProcessorChannels[e].isMuted=A,this.sendChannelProperties(),this.callEvent("mutechannel",{channel:e,isMuted:A})}function kn(e){this.workletProcessorChannels[e].lockVibrato=!0,this.workletProcessorChannels[e].channelVibrato.rate=0,this.workletProcessorChannels[e].channelVibrato.delay=0,this.workletProcessorChannels[e].channelVibrato.depth=0}function wn(e,A,t,s){this.workletProcessorChannels[e].lockVibrato||(this.workletProcessorChannels[e].channelVibrato.rate=t,this.workletProcessorChannels[e].channelVibrato.delay=s,this.workletProcessorChannels[e].channelVibrato.depth=A)}function Fn(e,A){let t=this.workletProcessorChannels[e],s=()=>{t.channelVibrato.delay===0&&t.channelVibrato.rate===0&&t.channelVibrato.depth===0&&(t.channelVibrato.depth=50,t.channelVibrato.rate=8,t.channelVibrato.delay=.6)};switch(t.dataEntryState){default:case fA.Idle:break;case fA.NRPFine:if(this.system!=="gs")return;switch(t.NRPCoarse){default:if(A===64)return;Y(`%cUnrecognized NRPN for %c${e}%c: %c(0x${t.NRPCoarse.toString(16).toUpperCase()} 0x${t.NRPFine.toString(16).toUpperCase()})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 1:switch(t.NRPFine){default:if(A===64)return;Y(`%cUnrecognized NRPN for %c${e}%c: %c(0x${t.NRPCoarse.toString(16)} 0x${t.NRPFine.toString(16)})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 8:if(t.lockVibrato||A===64)return;s(),t.channelVibrato.rate=A/64*8,m(`%cVibrato rate for channel %c${e}%c is now set to %c${t.channelVibrato.rate}%cHz.`,a.info,a.recognized,a.info,a.value,a.info);break;case 9:if(t.lockVibrato||A===64)return;s(),t.channelVibrato.depth=A/2,m(`%cVibrato depth for %c${e}%c is now set to %c${t.channelVibrato.depth}%c cents range of detune.`,a.info,a.recognized,a.info,a.value,a.info);break;case 10:if(t.lockVibrato||A===64)return;s(),t.channelVibrato.delay=A/64/3,m(`%cVibrato delay for %c${e}%c is now set to %c${t.channelVibrato.delay}%c seconds.`,a.info,a.recognized,a.info,a.value,a.info);break;case 32:let o=A;this.controllerChange(e,p.brightness,A),m(`%cFilter cutoff for %c${e}%c is now set to %c${o}`,a.info,a.recognized,a.info,a.value)}break;case 29:if(!t.drumChannel)return;let n=A;this.controllerChange(e,p.effects1Depth,n),m(`%cGS Drum reverb for %c${e}%c: %c${n}`,a.info,a.recognized,a.info,a.value);break}break;case fA.RPCoarse:case fA.RPFine:switch(t.RPValue){default:Y(`%cUnrecognized RPN for %c${e}%c: %c(0x${t.RPValue.toString(16)})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 0:t.midiControllers[gA+P.pitchWheelRange]=A<<7,m(`%cChannel ${e} bend range. Semitones: %c${A}`,a.info,a.value);break;case 2:this.setChannelTuningSemitones(e,A-64);break;case 1:this.setChannelTuning(e,A-64,!1);break;case 5:this.setModulationDepth(e,A*100);break;case 16383:this.resetParameters(e);break}}}function Rn(e,A){let t=this.workletProcessorChannels[e];switch(t.dataEntryState){default:break;case fA.RPCoarse:case fA.RPFine:switch(t.RPValue){default:break;case 0:if(A===0)break;t.midiControllers[gA+P.pitchWheelRange]|=A;let s=(t.midiControllers[gA+P.pitchWheelRange]>>7)+A/127;m(`%cChannel ${e} bend range. Semitones: %c${s}`,a.info,a.value);break;case 1:let o=t.customControllers[iA.channelTuning]<<7|A;this.setChannelTuning(e,o*.01220703125);break;case 5:let i=t.customControllers[iA.modulationMultiplier]*50+A/128*100;this.setModulationDepth(e,i);break;case 16383:this.resetParameters(e);break}}}function Gn(){m("%cResetting all controllers!",a.info),this.callEvent("allcontrollerreset",void 0);for(let e=0;e<this.workletProcessorChannels.length;e++){this.resetControllers(e);let A=this.workletProcessorChannels[e];A.lockPreset?this.callEvent("drumchange",{channel:e,isDrumChannel:A.drumChannel}):(A.presetUsesOverride=!0,A.midiControllers[p.bankSelect]=0,e%16===MA?(this.setPreset(e,this.drumPreset),A.drumChannel=!0,this.callEvent("drumchange",{channel:e,isDrumChannel:!0})):(A.drumChannel=!1,this.setPreset(e,this.defaultPreset),this.callEvent("drumchange",{channel:e,isDrumChannel:!1}))),this.callEvent("programchange",{channel:e,program:A.preset.program,bank:A.preset.bank,userCalled:!1});let t=s=>{this.workletProcessorChannels[e].lockedControllers[s]&&this.callEvent("controllerchange",{channel:e,controllerNumber:s,controllerValue:this.workletProcessorChannels[e].midiControllers[s]>>7})};if(t(p.mainVolume),t(p.pan),t(p.expressionController),t(p.modulationWheel),t(p.effects3Depth),t(p.effects1Depth),this.workletProcessorChannels[e].lockedControllers[gA+P.pitchWheel]){let s=this.workletProcessorChannels[e].midiControllers[gA+P.pitchWheel],n=s>>7,o=s&127;this.callEvent("pitchwheel",{channel:e,MSB:n,LSB:o})}}this.tunings=[],this.tunings=[];for(let e=0;e<127;e++)this.tunings.push([]);this.setMIDIVolume(1),this.system=He}function xn(e){let A=this.workletProcessorChannels[e],s=A.lockedControllers.reduce((o,E,i)=>(E&&o.push(i),o),[]).map(o=>({ccNum:o,ccVal:A.midiControllers[o]}));A.channelOctaveTuning.fill(0),A.midiControllers.set(KA),A.channelVibrato={rate:0,depth:0,delay:0},A.holdPedal=!1,s.forEach(o=>{A.midiControllers[o.ccNum]=o.ccVal});let n=A.customControllers[iA.channelTransposeFine];A.customControllers.set(dt),A.customControllers[iA.channelTransposeFine]=n,this.resetParameters(e)}function Mn(e){let A=this.workletProcessorChannels[e];A.NRPCoarse=0,A.NRPFine=0,A.RPValue=0,A.dataEntryState=fA.Idle}function Nn(){let e=4;for(let s of this.instruments)e+=s.instrumentZones.reduce((n,o)=>(o.generators=o.generators.filter(E=>E.generatorType!==g.sampleID&&E.generatorType!==g.keyRange&&E.generatorType!==g.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:g.velRange,generatorValue:o.velRange.max<<8|o.velRange.min}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:g.keyRange,generatorValue:o.keyRange.max<<8|o.keyRange.min}),o.isGlobal||o.generators.push({generatorType:g.sampleID,generatorValue:this.samples.indexOf(o.sample)}),o.generators.length*4+n),0);let A=new H(e),t=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.generatorZoneStartIndex=t;for(let o of n.generators)J(A,o.generatorType),J(A,o.generatorValue),t++}return cA(A,0),tA(new j("igen",A.length,A))}function bn(e,A,t,s,n){let o=this.samples.map((c,f)=>{t&&c.compressSample(s,n);let Q=c.getRawData();return m(`%cEncoded sample %c${f}. ${c.sampleName}%c of %c${this.samples.length}`,a.info,a.recognized,a.info,a.recognized),Q}),E=this.samples.reduce((c,f,Q)=>c+o[Q].length+46,0),i=new H(E);this.samples.forEach((c,f)=>{let Q=o[f],l,d,S=Q.length;c.isCompressed?(l=i.currentIndex,d=l+Q.length):(l=i.currentIndex/2,d=l+Q.length/2,S+=46),e.push(l),i.set(Q,i.currentIndex),i.currentIndex+=S,A.push(d)});let h=tA(new j("smpl",i.length,i),new H([115,100,116,97]));return tA(new j("LIST",h.length,h))}function Ln(e,A){let s=new H(46*(this.samples.length+1));return this.samples.forEach((n,o)=>{wA(s,n.sampleName,20);let E=e[o];cA(s,E);let i=A[o];cA(s,i);let h=n.sampleLoopStartIndex/2+E,c=n.sampleLoopEndIndex/2+E;n.isCompressed&&(h-=E,c-=E),cA(s,h),cA(s,c),cA(s,n.sampleRate),s[s.currentIndex++]=n.samplePitch,s[s.currentIndex++]=n.samplePitchCorrection,J(s,n.sampleLink),J(s,n.sampleType)}),wA(s,"EOS",46),tA(new j("shdr",s.length,s))}function Un(){let e=10;for(let s of this.instruments)e+=s.instrumentZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new H(e),t=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.modulatorZoneStartIndex=t;for(let o of n.modulators)J(A,o.modulatorSource),J(A,o.modulatorDestination),J(A,o.transformAmount),J(A,o.modulationSecondarySrc),J(A,o.transformType),t++}return re(A,0,10),tA(new j("imod",A.length,A))}function Tn(){let e=this.instruments.reduce((o,E)=>E.instrumentZones.length*4+o,4),A=new H(e),t=0,s=0,n=0;for(let o of this.instruments){o.instrumentZoneIndex=t;for(let E of o.instrumentZones)E.zoneID=t,J(A,s),J(A,n),s+=E.generators.length,n+=E.modulators.length,t++}return J(A,s),J(A,n),tA(new j("ibag",A.length,A))}function Hn(){let e=this.instruments.length*22+22,A=new H(e),t=0,s=0;for(let n of this.instruments)wA(A,n.instrumentName,20),J(A,t),t+=n.instrumentZones.length,n.instrumentID=s,s++;return wA(A,"EOI",20),J(A,t),tA(new j("inst",A.length,A))}function Yn(){let e=4;for(let s of this.presets)e+=s.presetZones.reduce((n,o)=>(o.generators=o.generators.filter(E=>E.generatorType!==g.instrument&&E.generatorType!==g.keyRange&&E.generatorType!==g.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:g.velRange,generatorValue:o.velRange.max<<8|o.velRange.min}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:g.keyRange,generatorValue:o.keyRange.max<<8|o.keyRange.min}),o.isGlobal||o.generators.push({generatorType:g.instrument,generatorValue:this.instruments.indexOf(o.instrument)}),o.generators.length*4+n),0);let A=new H(e),t=0;for(let s of this.presets)for(let n of s.presetZones){n.generatorZoneStartIndex=t;for(let o of n.generators)J(A,o.generatorType),J(A,o.generatorValue);t+=n.generators.length}return J(A,0),J(A,0),tA(new j("pgen",A.length,A))}function Jn(){let e=10;for(let s of this.presets)e+=s.presetZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new H(e),t=0;for(let s of this.presets)for(let n of s.presetZones){n.modulatorZoneStartIndex=t;for(let o of n.modulators)J(A,o.modulatorSource),J(A,o.modulatorDestination),J(A,o.transformAmount),J(A,o.modulationSecondarySrc),J(A,o.transformType),t++}return re(A,0,10),tA(new j("pmod",A.length,A))}function qn(){let e=this.presets.reduce((o,E)=>E.presetZones.length*4+o,4),A=new H(e),t=0,s=0,n=0;for(let o of this.presets){o.presetZoneStartIndex=t;for(let E of o.presetZones)E.zoneID=t,J(A,s),J(A,n),s+=E.generators.length,n+=E.modulators.length,t++}return J(A,s),J(A,n),tA(new j("pbag",A.length,A))}function Kn(){let e=this.presets.length*38+38,A=new H(e),t=0;for(let s of this.presets)wA(A,s.presetName,20),J(A,s.program),J(A,s.bank),J(A,t),cA(A,s.library),cA(A,s.genre),cA(A,s.morphology),t+=s.presetZones.length;return wA(A,"EOP",20),J(A,0),J(A,0),J(A,t),cA(A,0),cA(A,0),cA(A,0),tA(new j("phdr",A.length,A))}var Lo={compress:!1,compressionQuality:.5,compressionFunction:void 0};function vn(e=Lo){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");DA("%cSaving soundfont...",a.info),m(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,a.info,a.recognized,a.info,a.recognized),m("%cWriting INFO...",a.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0");for(let[Z,T]of Object.entries(this.soundFontInfo))if(Z==="ifil"||Z==="iver"){let r=parseInt(T.split(".")[0]),sA=parseInt(T.split(".")[1]),K=new H(4);J(K,r),J(K,sA),A.push(tA(new j(Z,4,K)))}else{let r=new H(T.length);wA(r,T),A.push(tA(new j(Z,T.length,r)))}let t=de([new H([73,78,70,79]),...A]),s=tA(new j("LIST",t.length,t));m("%cWriting SDTA...",a.info);let n=[],o=[],E=bn.call(this,n,o,e?.compress,e?.compressionQuality||.5,e.compressionFunction);m("%cWriting PDTA...",a.info),m("%cWriting SHDR...",a.info);let i=Ln.call(this,n,o);m("%cWriting IGEN...",a.info);let h=Nn.call(this);m("%cWriting IMOD...",a.info);let c=Un.call(this);m("%cWriting IBAG...",a.info);let f=Tn.call(this);m("%cWriting INST...",a.info);let Q=Hn.call(this),l=Yn.call(this);m("%cWriting PMOD...",a.info);let d=Jn.call(this);m("%cWriting PBAG...",a.info);let S=qn.call(this);m("%cWriting PHDR...",a.info);let D=Kn.call(this),k=de([new H([112,100,116,97]),D,S,d,l,Q,f,c,h,i]),x=tA(new j("LIST",k.length,k));m("%cWriting the output file...",a.info);let M=de([new H([115,102,98,107]),s,E,x]),N=tA(new j("RIFF",M.length,M));return m(`%cSaved succesfully! Final file size: %c${N.length}`,a.info,a.recognized),X(),N}var ee=class e{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}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()}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()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1),this.removeUnusedElements()}getPresetNoFallback(A,t,s=!1){let n=this.presets.find(o=>o.bank===A&&o.program===t);if(n)return n;if(s!==!1)return A===128?this.presets.find(o=>o.bank===128):this.presets.find(o=>o.program===t)}setSampleIDOffset(A){this.presets.forEach(t=>t.sampleIDOffset=A)}getPreset(A,t){let s=this.presets.find(n=>n.bank===A&&n.program===t);return s||(s=this.presets.find(n=>n.program===t&&n.bank!==128),A===128&&(s=this.presets.find(n=>n.bank===128&&n.program===t),s||(s=this.presets.find(n=>n.bank===128))),s&&Y(`%cPreset ${A}.${t} not found. Replaced with %c${s.presetName} (${s.bank}.${s.program})`,a.warn,a.recognized)),s||(Y(`Preset ${t} not found. Defaulting to`,this.presets[0].presetName),s=this.presets[0]),s}getPresetByName(A){let t=this.presets.find(s=>s.presetName===A);return t||(Y("Preset not found. Defaulting to:",this.presets[0].presetName),t=this.presets[0]),t}static mergeSoundfonts(...A){let t=A.shift(),s=t.presets;for(;A.length;)A.shift().presets.forEach(o=>{s.find(E=>E.bank===o.bank&&E.program===o.program)===void 0&&s.push(o)});return new e({presets:s,info:t.soundFontInfo})}};ee.prototype.write=vn;function Pn(e){DA("%cLoading instruments...",a.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(O(e.chunkData));X()}var ge=class{constructor(){this.presetName="",this.program=0,this.bank=0,this.presetZones=[],this.sampleIDOffset=0,this.foundSamplesAndGenerators=[];for(let A=0;A<128;A++)this.foundSamplesAndGenerators[A]=[];this.library=0,this.genre=0,this.morphology=0}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 s=A;s<t+1;s++)for(let n=0;n<128;n++)this.getSamplesAndGenerators(s,n).forEach(o=>{o.sample.isSampleLoaded||o.sample.getAudioData()})}preloadSpecific(A,t){this.getSamplesAndGenerators(A,t).forEach(s=>{s.sample.isSampleLoaded||s.sample.getAudioData()})}getSamplesAndGenerators(A,t){let s=this.foundSamplesAndGenerators[A][t];if(s)return s;if(this.presetZones.length<1)return[];function n(l,d,S){return S>=l&&S<=d}function o(l,d){return l.modulatorSource===d.modulatorSource&&l.modulatorDestination===d.modulatorDestination&&l.modulationSecondarySrc===d.modulationSecondarySrc&&l.transformType===d.transformType}function E(l,d){l.push(...d.filter(S=>!l.find(D=>D.generatorType===S.generatorType)))}function i(l,d){l.push(...d.filter(S=>!l.find(D=>o(S,D))))}let h=[],c=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],f=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[];return this.presetZones.filter(l=>n(l.keyRange.min,l.keyRange.max,A)&&n(l.velRange.min,l.velRange.max,t)&&!l.isGlobal).forEach(l=>{if(l.instrument.instrumentZones.length<1)return;let d=l.generators,S=l.modulators,D=l.instrument.instrumentZones[0].isGlobal?[...l.instrument.instrumentZones[0].generators]:[],k=l.instrument.instrumentZones[0].isGlobal?[...l.instrument.instrumentZones[0].modulators]:[];l.instrument.instrumentZones.filter(M=>n(M.keyRange.min,M.keyRange.max,A)&&n(M.velRange.min,M.velRange.max,t)&&!M.isGlobal).forEach(M=>{let N=[...M.generators],Z=[...M.modulators];E(d,c),E(N,D),i(S,f),i(Z,k),i(Z,ys);let T=[...Z];for(let r=0;r<S.length;r++){let sA=S[r],K=T.findIndex(z=>o(sA,z));K!==-1?T[K]=T[K].sumTransform(sA):T.push(sA)}h.push({instrumentGenerators:N,presetGenerators:d,modulators:T,sample:M.sample,sampleID:M.generators.find(r=>r.generatorType===g.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][t]=h,h}};var De=class{velRange={min:0,max:127};keyRange={min:0,max:127};isGlobal=!1;generators=[];modulators=[]};var WA=class extends De{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},Ce=class extends De{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var Ee=class{constructor(){this.instrumentName="",this.instrumentZones=[],this._useCount=0}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--}get useCount(){return this._useCount}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 Xe=class extends ge{constructor(A,t){super(),this.program=t&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new Ee,this.DLSInstrument.addUseCount();let n=new Ce;n.instrument=this.DLSInstrument,this.presetZones=[n]}};function Vn(e){this.verifyHeader(e,"LIST"),this.verifyText(V(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(O(e.chunkData));let t=A.find(d=>d.header==="insh");if(!t)throw X(),new Error("No instrument header!");let s=y(t.chunkData,4),n=y(t.chunkData,4),o=y(t.chunkData,4),E=new Xe(n,o),i="unnamedPreset",h=SA(A,"INFO");if(h){let d=O(h.chunkData);for(;d.header!=="INAM";)d=O(h.chunkData);i=V(d.chunkData,d.chunkData.length).trim()}E.presetName=i,E.DLSInstrument.instrumentName=i,jA(`%cParsing %c"${i}"%c...`,a.info,a.recognized,a.info);let c=SA(A,"lrgn");if(!c)throw X(),new Error("No region list!");let f=new WA;f.isGlobal=!0;let Q=SA(A,"lart"),l=SA(A,"lar2");this.readLart(Q,l,f),E.DLSInstrument.instrumentZones.push(f);for(let d=0;d<s;d++){let S=O(c.chunkData);this.verifyHeader(S,"LIST");let D=V(S.chunkData,4);if(D!=="rgn "&&D!=="rgn2")throw X(),new SyntaxError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${D}"`);let k=this.readRegion(S);k&&E.DLSInstrument.instrumentZones.push(k)}this.presets.push(E),this.instruments.push(E.DLSInstrument),X()}var R={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var _={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};function On(e){let A,t=!1;switch(e){default:case _.modLfo:case _.vibratoLfo:case _.coarseTune:case _.fineTune:case _.modEnv:return;case _.keyNum:A=P.noteOnKeyNum;break;case _.none:A=P.noController;break;case _.modulationWheel:A=p.modulationWheel,t=!0;break;case _.pan:A=p.pan,t=!0;break;case _.reverb:A=p.effects1Depth,t=!0;break;case _.chorus:A=p.effects3Depth,t=!0;break;case _.expression:A=p.expressionController,t=!0;break;case _.volume:A=p.mainVolume,t=!0;break;case _.velocity:A=P.noteOnVelocity;break;case _.polyPressure:A=P.polyPressure;break;case _.channelPressure:A=P.channelPressure;break;case _.pitchWheel:A=P.pitchWheel;break;case _.pitchWheelRange:A=P.pitchWheelRange;break}if(A===void 0)throw`not known?? ${e}`;return{enum:A,isCC:t}}function Uo(e,A){switch(e){default:case R.none:return;case R.pan:return g.pan;case R.gain:return{gen:g.initialAttenuation,newAmount:A*-1};case R.pitch:return g.fineTune;case R.keyNum:return g.overridingRootKey;case R.volEnvDelay:return g.delayVolEnv;case R.volEnvAttack:return g.attackVolEnv;case R.volEnvHold:return g.holdVolEnv;case R.volEnvDecay:return g.decayVolEnv;case R.volEnvSustain:return{gen:g.sustainVolEnv,newAmount:1e3-A};case R.volEnvRelease:return g.releaseVolEnv;case R.modEnvDelay:return g.delayModEnv;case R.modEnvAttack:return g.attackModEnv;case R.modEnvHold:return g.holdModEnv;case R.modEnvDecay:return g.decayModEnv;case R.modEnvSustain:return{gen:g.sustainModEnv,newAmount:(1e3-A)/10};case R.modEnvRelease:return g.releaseModEnv;case R.filterCutoff:return g.initialFilterFc;case R.filterQ:return g.initialFilterQ;case R.chorusSend:return g.chorusEffectsSend;case R.reverbSend:return g.reverbEffectsSend}}function To(e,A){return e===_.vibratoLfo&&A===R.pitch?g.vibLfoToPitch:e===_.modLfo&&A===R.pitch?g.modLfoToPitch:e===_.modLfo&&A===R.filterCutoff?g.modLfoToFilterFc:e===_.modLfo&&A===R.gain?g.modLfoToVolume:e===_.modEnv&&A===R.filterCutoff?g.modEnvToFilterFc:e===_.modEnv&&A===R.pitch?g.modEnvToPitch:void 0}function Zn(e,A,t,s,n){let o=To(e,t),E,i,h=!1,c=!1;if(o===void 0){let k=Uo(t,n);if(k===void 0||(E=k,k.newAmount!==void 0&&(n=k.newAmount,E=k.gen),i=On(e),i===void 0))return}else E=o,h=!0,i={enum:P.noController,isCC:!1},c=!0;let f=On(A);if(f===void 0)return;let Q;if(c)Q=0;else{let k=s&15,x=s>>10&15;x===lA.linear&&k!==lA.linear&&(x=k);let M=s>>14&1,N=s>>15&1;E===g.initialAttenuation&&(N=!N),Q=qA(x,M,N,i.isCC,i.enum)}let l=s>>4&15,d=s>>8&1,S=s>>9&1,D=qA(l,d,S,f.isCC,f.enum);if(h){let k=D;D=Q,Q=k}return new rA({srcEnum:Q,secSrcEnum:D,dest:E,transform:0,amt:n})}function Gt(e,A){let t=e.chunkData,s=[],n=[];y(t,4);let o=y(t,4);for(let E=0;E<o;E++){let i=y(t,2),h=y(t,2),c=y(t,2),f=y(t,2),Q=y(t,4)>>16;if(i===0&&h===0&&f===0){let l;switch(c){case R.pan:l=new b(g.pan,Q);break;case R.gain:l=new b(g.initialAttenuation,-Q*10/.4);break;case R.filterCutoff:l=new b(g.initialFilterFc,Q);break;case R.filterQ:l=new b(g.initialFilterQ,Q);break;case R.modLfoFreq:l=new b(g.freqModLFO,Q);break;case R.modLfoDelay:l=new b(g.delayModLFO,Q);break;case R.vibLfoFreq:l=new b(g.freqVibLFO,Q);break;case R.vibLfoDelay:l=new b(g.delayVibLFO,Q);break;case R.volEnvDelay:l=new b(g.delayVolEnv,Q);break;case R.volEnvAttack:l=new b(g.attackVolEnv,Q);break;case R.volEnvHold:l=new b(g.holdVolEnv,Q);break;case R.volEnvDecay:l=new b(g.decayVolEnv,Q);break;case R.volEnvRelease:l=new b(g.releaseVolEnv,Q);break;case R.volEnvSustain:let d=(1e3-Q)/10;l=new b(g.sustainVolEnv,d*10);break;case R.modEnvDelay:l=new b(g.delayModEnv,Q);break;case R.modEnvAttack:l=new b(g.attackModEnv,Q);break;case R.modEnvHold:l=new b(g.holdModEnv,Q);break;case R.modEnvDecay:l=new b(g.decayModEnv,Q);break;case R.modEnvRelease:l=new b(g.releaseModEnv,Q);break;case R.modEnvSustain:let S=1e3-Q;l=new b(g.sustainModEnv,S);break;case R.reverbSend:l=new b(g.reverbEffectsSend,Q);break;case R.chorusSend:l=new b(g.chorusEffectsSend,Q);break;case R.pitch:let D=Math.floor(Q/100),k=Math.floor(Q-D*100);l=new b(g.fineTune,k),s.push(new b(g.coarseTune,D));break}l&&s.push(l)}else{let l=!0;if(h===_.none?i===_.modLfo&&c===R.pitch?s.push(new b(g.modLfoToPitch,Q)):i===_.modLfo&&c===R.gain?s.push(new b(g.modLfoToVolume,Q)):i===_.modLfo&&c===R.filterCutoff?s.push(new b(g.modLfoToFilterFc,Q)):i===_.vibratoLfo&&c===R.pitch?s.push(new b(g.vibLfoToPitch,Q)):i===_.modEnv&&c===R.pitch?s.push(new b(g.modEnvToPitch,Q)):i===_.modEnv&&c===R.filterCutoff?s.push(new b(g.modEnvToFilterFc,Q)):i===_.keyNum&&c===R.volEnvHold?s.push(new b(g.keyNumToVolEnvHold,Q/-127)):i===_.keyNum&&c===R.volEnvDecay?s.push(new b(g.keyNumToVolEnvDecay,Q/-127)):i===_.keyNum&&c===R.modEnvHold?s.push(new b(g.keyNumToModEnvHold,Q/-127)):i===_.keyNum&&c===R.modEnvDecay?s.push(new b(g.keyNumToModEnvDecay,Q/-127)):l=!1:l=!1,l===!1){let d=Zn(i,h,c,f,Q);d?(n.push(d),m("%cSucceeded converting to SF2 Modulator!",a.recognized)):Y("Failed converting to SF2 Modulator!")}}}return n.push(new rA({srcEnum:219,dest:g.reverbEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),new rA({srcEnum:221,dest:g.chorusEffectsSend,amt:1e3,secSrcEnum:0,transform:0})),A&&n.push(new rA({srcEnum:129,dest:g.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0}),new rA({srcEnum:13,dest:g.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0})),{modulators:n,generators:s}}function Xn(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let s=O(e.chunkData);this.verifyHeader(s,"art1");let n=Gt(s,!0);t.generators.push(...n.generators),t.modulators.push(...n.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let s=O(A.chunkData);this.verifyHeader(s,"art2");let n=Gt(s,!1);t.generators.push(...n.generators),t.modulators.push(...n.modulators)}}var We=class extends WA{constructor(A,t){super(),this.keyRange=A,this.velRange=t,this.isGlobal=!0}setWavesample(A,t,s,n,o,E){t!==0&&this.generators.push(new b(g.sampleModes,t)),this.generators.push(new b(g.initialAttenuation,A)),this.isGlobal=!1;let i=s.start-o.sampleLoopStartIndex/2,h=s.end-o.sampleLoopEndIndex/2;if(i!==0){let c=i%32768;this.generators.push(new b(g.startloopAddrsOffset,c)),Math.round(i/32768)!==0&&this.generators.push(new b(g.startloopAddrsCoarseOffset,c))}if(h!==0){let c=h%32768;this.generators.push(new b(g.endloopAddrsOffset,c)),Math.round(h/32768)!==0&&this.generators.push(new b(g.endloopAddrsCoarseOffset,c))}n!==o.samplePitch&&this.generators.push(new b(g.overridingRootKey,n)),this.generators.push(new b(g.sampleID,E)),this.sample=o,o.useCount++}};function Wn(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(O(e.chunkData));let t=A.find(r=>r.header==="rgnh"),s=y(t.chunkData,2),n=y(t.chunkData,2),o=y(t.chunkData,2),E=y(t.chunkData,2),i=new We({min:s,max:n},{min:o,max:E});y(t.chunkData,2);let h=y(t.chunkData,2);h!==0&&i.generators.push(new b(g.exclusiveClass,h));let c=SA(A,"lart"),f=SA(A,"lar2");this.readLart(c,f,i),i.isGlobal=!1;let Q=A.find(r=>r.header==="wsmp");y(Q.chunkData,4);let l=y(Q.chunkData,2);y(Q.chunkData,2);let D=(y(Q.chunkData,4)|0)/-655360*10/.4;y(Q.chunkData,4);let k=y(Q.chunkData,4),x,M={start:0,end:0};if(k===0)x=0;else{y(Q.chunkData,4),y(Q.chunkData,4)===0?x=1:x=3,M.start=y(Q.chunkData,4);let sA=y(Q.chunkData,4);M.end=M.start+sA}let N=A.find(r=>r.header==="wlnk");if(N===void 0)return;y(N.chunkData,2),y(N.chunkData,2),y(N.chunkData,4);let Z=y(N.chunkData,4),T=this.samples[Z];if(T===void 0)throw new Error("Invalid sample ID!");return i.setWavesample(D,x,M,l,T,Z),i}var Be=class{constructor(A,t,s,n,o,E,i,h){this.sampleName=A,this.sampleRate=t,this.samplePitch=s,this.samplePitchCorrection=n,this.sampleLink=o,this.sampleType=E,this.sampleLoopStartIndex=i,this.sampleLoopEndIndex=h,this.isCompressed=(E&16)>0,this.compressedData=void 0,this.useCount=0}getRawData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}compressSample(A,t){if(!this.isCompressed)try{this.compressedData=t([this.getAudioData()],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{Y(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=-17}}getAudioData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}};var _e=class extends Be{constructor(A,t,s,n,o,E,i){super(A,t,s,n,0,1,o*2,(E-1)*2),this.sampleData=i}getAudioData(){return this.sampleData}sampleData;getRawData(){let A=new Uint8Array(this.sampleData.length*2);for(let t=0;t<this.sampleData.length;t++){let s=Math.floor(this.sampleData[t]*32767);A[t*2]=s&255,A[t*2+1]=s>>8&255}return A}};function _n(e){DA("%cLoading Wave samples...",a.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=O(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(V(t.chunkData,4),"wave");let s=[];for(;t.chunkData.currentIndex<t.chunkData.length;)s.push(O(t.chunkData));let n=s.find(K=>K.header==="fmt ");if(!n)throw new Error("No fmt chunk in the wave file!");if(y(n.chunkData,2)!==1)throw new Error("Only PCM format in WAVE is supported.");if(y(n.chunkData,2)!==1)throw new Error("Only mono samples are supported.");let i=y(n.chunkData,4);y(n.chunkData,4),y(n.chunkData,2);let h=y(n.chunkData,2),c=h/8,f=Math.pow(2,c*8-1),Q=Math.pow(2,c*8),l,d=!1;h===8?(l=255,d=!0):l=f;let S=s.find(K=>K.header==="data");if(!S)throw new Error("No data chunk in the wave chunk!");let D=S.size/c,k=new Float32Array(D);for(let K=0;K<k.length;K++){let z=y(S.chunkData,c);d?k[K]=z/l-.5:(z>=f&&(z-=Q),k[K]=z/l)}let x=60,M=0,N=0,Z=k.length-1,T=s.find(K=>K.header==="wsmp");if(T){if(y(T.chunkData,4),x=y(T.chunkData,2),M=ie(T.chunkData[T.chunkData.currentIndex++],T.chunkData[T.chunkData.currentIndex++]),y(T.chunkData,4),y(T.chunkData,4),y(T.chunkData,4)===1){y(T.chunkData,8),N=y(T.chunkData,4);let z=y(T.chunkData,4);Z=N+z}}else Y("No wsmp chunk in wave... using sane defaults.");let r=SA(s,"INFO"),sA=`Unnamed ${A}`;if(r){let K=O(r.chunkData);for(;K.header!=="INAM"&&r.chunkData.currentIndex<r.chunkData.length;)K=O(r.chunkData);K.header==="INAM"&&(sA=V(K.chunkData,K.size).trim())}this.samples.push(new _e(sA,i,x,M,N,D,k)),A++,m(`%cLoaded sample %c${sA}`,a.info,a.recognized)}X()}var OA=class extends ee{constructor(A){if(super(),this.dataArray=new H(A),jA("%cParsing DLS...",a.info),!this.dataArray)throw X(),new TypeError("No data!");let t=O(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(V(this.dataArray,4).toLowerCase(),"dls ");let s=[];for(;this.dataArray.currentIndex<this.dataArray.length;)s.push(O(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let n=SA(s,"INFO");if(n)for(;n.chunkData.currentIndex<n.chunkData.length;){let h=O(n.chunkData);this.soundFontInfo[h.header]=V(h.chunkData,h.size)}this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"")+`
|
|
12
|
+
`+r.extraStackTrace()),(I=C).replace(/__Z[\w\d_]+/g,function(B){var u,F=u=B;return B===F?B:B+" ["+F+"]"})}function tt(I,C){return I%C>0&&(I+=C-I%C),I}function Ot(I){r.buffer=s=I}function st(){r.HEAP8=n=new Int8Array(s),r.HEAP16=E=new Int16Array(s),r.HEAP32=h=new Int32Array(s),r.HEAPU8=o=new Uint8Array(s),r.HEAPU16=i=new Uint16Array(s),r.HEAPU32=c=new Uint32Array(s),r.HEAPF32=f=new Float32Array(s),r.HEAPF64=Q=new Float64Array(s)}function Zt(){var I=r.usingWasm?65536:16777216,C=2147483648-I;if(h[N>>2]>C)return!1;var B=EA;for(EA=Math.max(EA,16777216);EA<h[N>>2];)EA=EA<=536870912?tt(2*EA,I):Math.min(tt((3*EA+2147483648)/4,I),C);var u=r.reallocBuffer(EA);return u&&u.byteLength==EA?(Ot(u),st(),!0):(EA=B,!1)}l=d=D=k=x=M=N=0,S=!1,r.reallocBuffer||(r.reallocBuffer=function(I){try{if(ArrayBuffer.transfer)C=ArrayBuffer.transfer(s,I);else{var C,B=n;C=new ArrayBuffer(I),new Int8Array(C).set(B)}}catch{return!1}return!!yo(C)&&C});try{(Z=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get))(new ArrayBuffer(4))}catch{Z=function(C){return C.byteLength}}var nt=r.TOTAL_STACK||5242880,EA=r.TOTAL_MEMORY||16777216;function co(){return EA}function Qe(I){for(;I.length>0;){var C=I.shift();if(typeof C=="function"){C();continue}var B=C.func;typeof B=="number"?C.arg===void 0?r.dynCall_v(B):r.dynCall_vi(B,C.arg):B(C.arg===void 0?null:C.arg)}}EA<nt&&TA("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+EA+"! (TOTAL_STACK="+nt+")"),r.buffer?s=r.buffer:(typeof WebAssembly=="object"&&typeof WebAssembly.Memory=="function"?(r.wasmMemory=new WebAssembly.Memory({initial:EA/65536}),s=r.wasmMemory.buffer):s=new ArrayBuffer(EA),r.buffer=s),st();var Xt=[],ot=[],Wt=[],_t=[],zt=[],rt=!1,lo=!1;function fo(I){Xt.unshift(I)}function nr(I){ot.unshift(I)}function or(I){Wt.unshift(I)}function rr(I){_t.unshift(I)}function uo(I){zt.unshift(I)}function ir(I,C,B){var u,F;he("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),B&&(u=n[F=C+xe(I)]),Pt(I,C,1/0),B&&(n[F]=u)}function Ir(I,C,B){return I>=0?I:C<=32?2*Math.abs(1<<C-1)+I:Math.pow(2,C)+I}function ar(I,C,B){if(I<=0)return I;var u=C<=32?Math.abs(1<<C-1):Math.pow(2,C-1);return I>=u&&(C<=32||I>u)&&(I=-2*u+I),I}var mo=Math.abs,po=Math.ceil,jt=Math.floor,So=Math.min,_A=0,it=null,ce=null;function gr(I){return I}r.preloadedImages={},r.preloadedAudios={};var $t="data:application/octet-stream;base64,";function Me(I){return String.prototype.startsWith?I.startsWith($t):I.indexOf($t)===0}(function(){var C="main.wast",B="main.wasm",u="main.temp.asm.js";Me(C)||(C=UA(C)),Me(B)||(B=UA(B)),Me(u)||(u=UA(u));var F={global:null,env:null,asm2wasm:Bo,parent:r},v=null;function W(eA){return eA}function G(){try{if(r.wasmBinary)return new Uint8Array(r.wasmBinary);if(r.readBinary)return r.readBinary(B);throw"both async and sync fetching of the wasm failed"}catch(eA){PA(eA)}}r.asmPreload=r.asm;var BA=r.reallocBuffer,nA=function(eA){eA=tt(eA,r.usingWasm?65536:16777216);var q=r.buffer.byteLength;if(r.usingWasm)try{var mA=r.wasmMemory.grow((eA-q)/65536);return mA!==-1?r.buffer=r.wasmMemory.buffer:null}catch{return null}};r.reallocBuffer=function(eA){return oA==="asmjs"?BA(eA):nA(eA)};var oA="";r.asm=function(eA,q,mA){var FA;if(!(q=FA=q).table){var RA,GA=r.wasmTableSize;GA===void 0&&(GA=1024);var zA=r.wasmMaxTableSize;typeof WebAssembly=="object"&&typeof WebAssembly.Table=="function"?zA!==void 0?q.table=new WebAssembly.Table({initial:GA,maximum:zA,element:"anyfunc"}):q.table=new WebAssembly.Table({initial:GA,element:"anyfunc"}):q.table=Array(GA),r.wasmTable=q.table}return q.memoryBase||(q.memoryBase=r.STATIC_BASE),q.tableBase||(q.tableBase=0),RA=function(fe,te,Ct){if(typeof WebAssembly!="object")return TA("no native wasm support detected"),!1;if(!(r.wasmMemory instanceof WebAssembly.Memory))return TA("no native wasm Memory in use"),!1;function Le(HA,YA){if((v=HA.exports).memory){var ue,Et,ts;ue=v.memory,Et=r.buffer,ue.byteLength<Et.byteLength&&TA("the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here"),ts=new Int8Array(Et),new Int8Array(ue).set(ts),Ot(ue),st()}r.asm=v,r.usingWasm=!0,function(lr){if(_A--,r.monitorRunDependencies&&r.monitorRunDependencies(_A),_A==0&&(it!==null&&(clearInterval(it),it=null),ce)){var Do=ce;ce=null,Do()}}("wasm-instantiate")}if(te.memory=r.wasmMemory,F.global={NaN:NaN,Infinity:1/0},F["global.Math"]=Math,F.env=te,_A++,r.monitorRunDependencies&&r.monitorRunDependencies(_A),r.instantiateWasm)try{return r.instantiateWasm(F,Le)}catch(HA){return TA("Module.instantiateWasm callback failed with error: "+HA),!1}function se(HA){Le(HA.instance,HA.module)}function es(HA){(!r.wasmBinary&&(K||z)&&typeof fetch=="function"?fetch(B,{credentials:"same-origin"}).then(function(YA){if(!YA.ok)throw"failed to load wasm binary file at '"+B+"'";return YA.arrayBuffer()}).catch(function(){return G()}):new Promise(function(YA,ue){YA(G())})).then(function(YA){return WebAssembly.instantiate(YA,F)}).then(HA).catch(function(YA){TA("failed to asynchronously prepare wasm: "+YA),PA(YA)})}return r.wasmBinary||typeof WebAssembly.instantiateStreaming!="function"||Me(B)||typeof fetch!="function"?es(se):WebAssembly.instantiateStreaming(fetch(B,{credentials:"same-origin"}),F).then(se).catch(function(HA){TA("wasm streaming compile failed: "+HA),TA("falling back to ArrayBuffer instantiation"),es(se)}),{}}(eA,q,mA),ZA(RA,"no binaryen method succeeded."),RA},r.asm})(),d=(l=1024)+4816,ot.push(),r.STATIC_BASE=l,r.STATIC_BUMP=4816;var yA=d;function Cr(I){n[yA]=n[I],n[yA+1]=n[I+1],n[yA+2]=n[I+2],n[yA+3]=n[I+3]}function Er(I){n[yA]=n[I],n[yA+1]=n[I+1],n[yA+2]=n[I+2],n[yA+3]=n[I+3],n[yA+4]=n[I+4],n[yA+5]=n[I+5],n[yA+6]=n[I+6],n[yA+7]=n[I+7]}function Br(I,C,B){var u=B>0?B:xe(I)+1,F=Array(u),v=Ge(I,F,0,F.length);return C&&(F.length=v),F}function hr(I){for(var C=[],B=0;B<I.length;B++){var u=I[B];u>255&&(u&=255),C.push(String.fromCharCode(u))}return C.join("")}d+=16,N=we(4),x=(D=k=Ht(d))+nt,M=Ht(x),h[N>>2]=M,S=!0,r.wasmTableSize=4,r.wasmMaxTableSize=4,r.asmGlobalArg={},r.asmLibraryArg={abort:PA,assert:ZA,enlargeMemory:Zt,getTotalMemory:co,abortOnCannotGrowMemory:function(){PA("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+EA+", (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,B,u){var F=at();try{return r.dynCall_iii(C,B,u)}catch(v){if(It(F),typeof v!="number"&&v!=="longjmp")throw v;r.setThrew(1,0)}},___assert_fail:function(C,B,u,F){PA("Assertion failed: "+Re(C)+", at: "+[B?Re(B):"unknown filename",u,F?Re(F):"unknown function"])},___setErrNo:function(C){return r.___errno_location&&(h[r.___errno_location()>>2]=C),C},_abort:function(){r.abort()},_emscripten_memcpy_big:function(C,B,u){return o.set(o.subarray(B,B+u),C),C},_llvm_floor_f64:jt,DYNAMICTOP_PTR:N,tempDoublePtr:yA,ABORT:Fe,STACKTOP:k,STACK_MAX:x};var As=r.asm(r.asmGlobalArg,r.asmLibraryArg,s);r.asm=As,r.___errno_location=function(){return r.asm.___errno_location.apply(null,arguments)};var yo=r._emscripten_replace_memory=function(){return r.asm._emscripten_replace_memory.apply(null,arguments)};r._free=function(){return r.asm._free.apply(null,arguments)};var Ne=r._malloc=function(){return r.asm._malloc.apply(null,arguments)};r._memcpy=function(){return r.asm._memcpy.apply(null,arguments)},r._memset=function(){return r.asm._memset.apply(null,arguments)},r._sbrk=function(){return r.asm._sbrk.apply(null,arguments)},r._stb_vorbis_js_channels=function(){return r.asm._stb_vorbis_js_channels.apply(null,arguments)},r._stb_vorbis_js_close=function(){return r.asm._stb_vorbis_js_close.apply(null,arguments)},r._stb_vorbis_js_decode=function(){return r.asm._stb_vorbis_js_decode.apply(null,arguments)},r._stb_vorbis_js_open=function(){return r.asm._stb_vorbis_js_open.apply(null,arguments)},r._stb_vorbis_js_sample_rate=function(){return r.asm._stb_vorbis_js_sample_rate.apply(null,arguments)},r.establishStackSpace=function(){return r.asm.establishStackSpace.apply(null,arguments)},r.getTempRet0=function(){return r.asm.getTempRet0.apply(null,arguments)},r.runPostSets=function(){return r.asm.runPostSets.apply(null,arguments)},r.setTempRet0=function(){return r.asm.setTempRet0.apply(null,arguments)},r.setThrew=function(){return r.asm.setThrew.apply(null,arguments)};var be=r.stackAlloc=function(){return r.asm.stackAlloc.apply(null,arguments)},It=r.stackRestore=function(){return r.asm.stackRestore.apply(null,arguments)},at=r.stackSave=function(){return r.asm.stackSave.apply(null,arguments)};function le(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}function gt(I){I=I||r.arguments,!(_A>0)&&(function(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)fo(r.preRun.shift());Qe(Xt)}(),!(_A>0)&&(r.calledRun||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),C()},1)):C())));function C(){!r.calledRun&&(r.calledRun=!0,Fe||(rt||(rt=!0,Qe(ot)),Qe(Wt),r.onRuntimeInitialized&&r.onRuntimeInitialized(),function(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)uo(r.postRun.shift());Qe(zt)}()))}}function Qr(I,C){(!C||!r.noExitRuntime||I!==0)&&(r.noExitRuntime||(Fe=!0,Yt=I,k=T,Qe(_t),lo=!0,r.onExit&&r.onExit(I)),r.quit(I,new le(I)))}function PA(I){throw r.onAbort&&r.onAbort(I),I!==void 0?(Ut(I),TA(I),I=JSON.stringify(I)):I="",Fe=!0,Yt=1,"abort("+I+"). Build with -s ASSERTIONS=1 for more info."}if(r.dynCall_iii=function(){return r.asm.dynCall_iii.apply(null,arguments)},r.asm=As,r.ccall=Kt,r.cwrap=function(C,B,u,F){var v=(u=u||[]).every(function(W){return W==="number"});return B!=="string"&&v&&!F?Jt(C):function(){return Kt(C,B,u,arguments,F)}},le.prototype=Error(),le.prototype.constructor=le,ce=function I(){r.calledRun||gt(),r.calledRun||(ce=I)},r.run=gt,r.abort=PA,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();r.noExitRuntime=!0,gt(),r.onRuntimeInitialized=()=>{_s=!0,zs()},vA.decode=function(I){return function(B){if(!_s)throw Error("Not initialized");var u={};function F(te){return new Int32Array(r.HEAPU8.buffer,te,1)[0]}function v(te,Ct){var Le=new ArrayBuffer(Ct*Float32Array.BYTES_PER_ELEMENT),se=new Float32Array(Le);return se.set(new Float32Array(r.HEAPU8.buffer,te,Ct)),se}u.open=r.cwrap("stb_vorbis_js_open","number",[]),u.close=r.cwrap("stb_vorbis_js_close","void",["number"]),u.channels=r.cwrap("stb_vorbis_js_channels","number",["number"]),u.sampleRate=r.cwrap("stb_vorbis_js_sample_rate","number",["number"]),u.decode=r.cwrap("stb_vorbis_js_decode","number",["number","number","number","number","number"]);var W,G,BA,nA,oA=u.open(),eA=(W=B,G=B.byteLength,BA=r._malloc(G),(nA=new Uint8Array(r.HEAPU8.buffer,BA,G)).set(new Uint8Array(W,0,G)),nA),q=r._malloc(4),mA=r._malloc(4),FA=u.decode(oA,eA.byteOffset,eA.byteLength,q,mA);if(r._free(eA.byteOffset),FA<0)throw u.close(oA),r._free(q),Error("stbvorbis decode failed: "+FA);for(var RA=u.channels(oA),GA=Array(RA),zA=new Int32Array(r.HEAPU32.buffer,F(q),RA),xA=0;xA<RA;xA++)GA[xA]=v(zA[xA],FA),r._free(zA[xA]);var fe=u.sampleRate(oA);return u.close(oA),r._free(F(q)),r._free(q),{data:GA,sampleRate:fe,eof:!0,error:null}}(I)}})();function js(e){let A=e.messageData,t=e.channelNumber,s={};switch(t>=0&&(s=this.workletProcessorChannels[t]),e.messageType){case AA.noteOn:this.noteOn(t,A[0],A[1],A[2]);break;case AA.noteOff:this.noteOff(t,A);break;case AA.pitchWheel:this.pitchWheel(t,A[0],A[1]);break;case AA.ccChange:this.controllerChange(t,A[0],A[1],A[2]);break;case AA.customcCcChange:s.customControllers[A[0]]=A[1];break;case AA.killNote:this.killNote(t,A);break;case AA.programChange:this.programChange(t,A[0],A[1]);break;case AA.channelPressure:this.channelPressure(t,A);break;case AA.polyPressure:this.polyPressure(t,A[0],A[1]);break;case AA.ccReset:t===bA?this.resetAllControllers():this.resetControllers(t);break;case AA.systemExclusive:this.systemExclusive(A);break;case AA.setChannelVibrato:if(t===bA)for(let E=0;E<this.workletProcessorChannels.length;E++)A.rate===-1?this.disableAndLockVibrato(E):this.setVibrato(E,A.depth,A.rate,A.delay);A.rate===-1?this.disableAndLockVibrato(t):this.setVibrato(t,A.depth,A.rate,A.delay);break;case AA.stopAll:t===bA?this.stopAllChannels(A===1):this.stopAll(t,A===1);break;case AA.killNotes:this.voiceKilling(A);break;case AA.muteChannel:this.muteChannel(t,A);break;case AA.addNewChannel:this.createWorkletChannel(!0);break;case AA.debugMessage:this.debugMessage();break;case AA.setMasterParameter:let n=A[0],o=A[1];switch(n){case pe.masterPan:this.setMasterPan(o);break;case pe.mainVolume:this.setMasterGain(o);break;case pe.voicesCap:this.voiceCap=o;break}break;case AA.setDrums:this.setDrums(t,A);break;case AA.transpose:t===bA?this.transposeAllChannels(A[0],A[1]):this.transposeChannel(t,A[0],A[1]);break;case AA.highPerformanceMode:this.highPerformanceMode=A;break;case AA.lockController:A[0]===bA?s.lockPreset=A[1]:s.lockedControllers[A[0]]=A[1];break;case AA.sequencerSpecific:this.sequencer.processMessage(A.messageType,A.messageData);break;case AA.soundFontManager:this.soundfontManager.handleMessage(A[0],A[1]),this.clearSoundFont(!0,!1);break;case AA.requestSynthesizerSnapshot:this.sendSynthesizerSnapshot();break;case AA.setLogLevel:gs(A[0],A[1],A[2],A[3]);break;default:Y("Unrecognized event:",A);break}}function $s(e,A){this.enableEventSystem&&this.post({messageType:pA.eventCall,messageData:{eventName:e,eventData:A}})}function An(){if(!this.enableEventSystem)return;let e=this.workletProcessorChannels.map(A=>{let t=(A.midiControllers[gA+P.pitchWheelRange]>>7)+(A.midiControllers[gA+P.pitchWheelRange]&127)/127;return{voicesAmount:A.voices.length,pitchBend:A.midiControllers[gA+P.pitchWheel],pitchBendRangeSemitones:t,isMuted:A.isMuted,isDrum:A.drumChannel}});this.post({messageType:pA.channelProperties,messageData:e})}function No(e,A,t){let s=e,n=A<<7|t;return e===127&&A===127&&t===127?{midiNote:-1,centTuning:null}:{midiNote:s,centTuning:n*.0061}}function en(e,A=0){let t=e[0];if(!(this.deviceID!==bA&&e[1]!==127&&this.deviceID!==e[1]))switch(t){default:Y(`%cUnrecognized SysEx: %c${hA(e)}`,a.warn,a.unrecognized);break;case 126:case 127:switch(e[2]){case 4:let s;switch(e[3]){case 1:let n=e[5]<<7|e[4];this.setMIDIVolume(n/16384),m(`%cMaster Volume. Volume: %c${n}`,a.info,a.value);break;case 2:let E=((e[5]<<7|e[4])-8192)/8192;this.setMasterPan(E),m(`%cMaster Pan. Pan: %c${E}`,a.info,a.value);break;case 3:let i=(e[5]<<7|e[6])-8192;s=Math.floor(i/81.92),this.setMasterTuning(s),m(`%cMaster Fine Tuning. Cents: %c${s}`,a.info,a.value);break;case 4:s=(e[5]-64)*100,this.setMasterTuning(s),m(`%cMaster Coarse Tuning. Cents: %c${s}`,a.info,a.value);break;default:Y(`%cUnrecognized MIDI Device Control Real-time message: %c${hA(e)}`,a.warn,a.unrecognized)}break;case 9:e[3]===1?(m("%cGM system on",a.info),this.system="gm"):e[3]===3?(m("%cGM2 system on",a.info),this.system="gm2"):(m("%cGM system off, defaulting to GS",a.info),this.system="gs");break;case 8:switch(e[3]){case 2:case 7:let n=4;e[3]===7&&n++;let o=e[n++],E=e[n++];for(let h=0;h<E;h++)this.tunings[o][e[n++]]=No(e[n++],e[n++],e[n++]);m(`%cSingle Note Tuning. Program: %c${o}%c Keys affected: ${E}`,a.info,a.recognized,a.info,a.recognized);break;case 9:case 8:let i=new Int8Array(12);if(e[3]===8)for(let h=0;h<12;h++)i[h]=e[7+h]-64;else for(let h=0;h<24;h+=2){let c=(e[7+h]<<7|e[8+h])-8192;i[h/2]=Math.floor(c/81.92)}(e[4]&1)===1&&this.setOctaveTuning(14+A,i),(e[4]>>1&1)===1&&this.setOctaveTuning(15+A,i);for(let h=0;h<7;h++)(e[5]>>h&1)===1&&this.setOctaveTuning(7+h+A,i);for(let h=0;h<7;h++)(e[6]>>h&1)===1&&this.setOctaveTuning(h+A,i);m(`%cMIDI Octave Scale ${e[3]===8?"(1 byte)":"(2 bytes)"} tuning via Tuning: %c${i.join(" ")}`,a.info,a.value);break;default:Y(`%cUnrecognized MIDI Tuning standard message: %c${hA(e)}`,a.warn,a.unrecognized);break}break;default:Y(`%cUnrecognized MIDI Realtime/non realtime message: %c${hA(e)}`,a.warn,a.unrecognized)}break;case 65:if(e[2]===66&&e[3]===18){let s=e[7];if(e[6]===127){s===0?(m("%cGS system on",a.info),this.system="gs"):s===127&&(m("%cGS system off, switching to GM2",a.info),this.system="gm2");return}else if(e[4]===64){if((e[5]&16)>0){let n=[9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15][e[5]&15]+A;switch(e[6]){default:break;case 21:let o=s>0&&e[5]>>4;this.setDrums(n,o),m(`%cChannel %c${n}%c ${o?"is now a drum channel":"now isn't a drum channel"}%c via: %c${hA(e)}`,a.info,a.value,a.recognized,a.info,a.value);return;case 22:let E=s-64;this.transposeChannel(n,E),m(`%cChannel %c${n}%c pitch shift. Semitones %c${E}%c, with %c${hA(e)}`,a.info,a.recognized,a.info,a.value,a.info,a.value);return;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 i=s-64;m(`%cChannel %c${n}%c tuning. Cents %c${i}%c, with %c${hA(e)}`,a.info,a.recognized,a.info,a.value,a.info,a.value),this.setChannelTuning(n,i)}}else if(e[5]===0&&e[6]===6){m(`%cRoland GS Master Pan set to: %c${s}%c with: %c${hA(e)}`,a.info,a.value,a.info,a.value),this.setMasterPan((s-64)/64);return}else if(e[5]===0&&e[6]===5){let n=s-64;m(`%cRoland GS Master Key-Shift set to: %c${n}%c with: %c${hA(e)}`,a.info,a.value,a.info,a.value),this.setMasterTuning(n*100);return}else if(e[5]===0&&e[6]===4){m(`%cRoland GS Master Volume set to: %c${s}%c with: %c${hA(e)}`,a.info,a.value,a.info,a.value),this.setMIDIVolume(s/127);return}}Y(`%cUnrecognized Roland %cGS %cSysEx: %c${hA(e)}`,a.warn,a.recognized,a.warn,a.unrecognized);return}else if(e[2]===22&&e[3]===18&&e[4]===16){this.setMIDIVolume(e[7]/100),m(`%cRoland Master Volume control set to: %c${e[7]}%c via: %c${hA(e)}`,a.info,a.value,a.info,a.value);return}else{Y(`%cUnrecognized Roland SysEx: %c${hA(e)}`,a.warn,a.unrecognized);return}case 67:if(e[2]===76)if(e[3]===0&&e[4]===0)switch(e[5]){case 4:let s=e[6];this.setMIDIVolume(s/127),m(`%cXG master volume. Volume: %c${s}`,a.info,a.recognized);break;case 6:let n=e[6]-64;this.transposeAllChannels(n),m(`%cXG master transpose. Volume: %c${n}`,a.info,a.recognized);break;case 126:m("%cXG system on",a.info),this.system="xg";break}else if(e[3]===8){if(this.system!=="xg")return;let s=e[4]+A,n=e[6];switch(e[5]){case 1:this.controllerChange(s,p.bankSelect,n);break;case 2:this.controllerChange(s,p.lsbForControl0BankSelect,n);break;case 3:this.programChange(s,n);break;case 11:this.controllerChange(s,p.mainVolume,n);break;case 14:let o=n;o===0&&(o=Math.floor(Math.random()*127)),this.controllerChange(s,p.pan,o);break;case 19:this.controllerChange(s,p.effects1Depth,n);break;case 18:this.controllerChange(s,p.effects3Depth,n);break;default:Y(`%cUnrecognized Yamaha XG Part Setup: %c${e[5].toString(16).toUpperCase()}`,a.warn,a.unrecognized)}}else this.system==="xg"&&Y(`%cUnrecognized Yamaha XG SysEx: %c${hA(e)}`,a.warn,a.unrecognized);else this.system==="xg"&&Y(`%cUnrecognized Yamaha SysEx: %c${hA(e)}`,a.warn,a.unrecognized);break}}var Ze=[];function tn(){Ze=[]}function bo(e,A,t,s){Ze[t]=!1,s({channel:e,sampleID:t,sampleData:A.getAudioData()}),Ze[t]=!0}function ye(e){if(e===null||typeof e!="object")return e;if(e instanceof Int16Array)return new Int16Array(e);let A=Array.isArray(e)?[]:{};for(let t in e)e.hasOwnProperty(t)&&(typeof e[t]=="object"&&e[t]!==null?A[t]=ye(e[t]):e[t]instanceof Int16Array?A[t]=new Int16Array(e[t]):A[t]=e[t]);return A}function sn(e,A,t,s,n,o,E,i,h=!1){let c,f=i[A][t];return f!==void 0?(c=f.map(ye),c.forEach(Q=>{Q.startTime=n})):(c=s.getSamplesAndGenerators(A,t).reduce((Q,l)=>{let d=l.sampleID+s.sampleIDOffset;if(Ze[d]!==!0&&bo(e,l.sample,d,E),l.sample.sampleData===void 0)return Y(`Discarding invalid sample: ${l.sample.sampleName}`),Q;let S=new Int16Array(60);for(let r=0;r<60;r++)S[r]=Ss(r,l.presetGenerators,l.instrumentGenerators);S[g.initialAttenuation]=Math.floor(S[g.initialAttenuation]*.4);let D=l.sample.samplePitch;S[g.overridingRootKey]>-1&&(D=S[g.overridingRootKey]);let k=A;S[g.keyNum]>-1&&(k=S[g.keyNum]);let x=l.sample.sampleLoopStartIndex/2+(S[g.startloopAddrsOffset]+S[g.startloopAddrsCoarseOffset]*32768),M=l.sample.sampleLoopEndIndex/2+(S[g.endloopAddrsOffset]+S[g.endloopAddrsCoarseOffset]*32768),N=S[g.sampleModes],Z=l.sample.getAudioData().length;x=Math.min(Math.max(0,x),Z),M=Math.min(Math.max(0,M),Z),M-x<1&&(N=0);let T={sampleID:d,playbackStep:l.sample.sampleRate/o*Math.pow(2,l.sample.samplePitchCorrection/1200),cursor:S[g.startAddrsOffset]+S[g.startAddrsCoarseOffset]*32768,rootKey:D,loopStart:x,loopEnd:M,end:Math.floor(l.sample.sampleData.length)-1+(S[g.endAddrOffset]+S[g.endAddrsCoarseOffset]*32768),loopingMode:N};return S[g.velocity]>-1&&(t=S[g.velocity]),h&&Cs([{Sample:l.sample.sampleName,Generators:S,Modulators:l.modulators.map(r=>r.debugString()),Velocity:t,TargetKey:k,MidiNote:A,WorkletSample:T}]),Q.push({filter:ye(vs),generators:S,modulators:l.modulators,modulatedGenerators:new Int16Array(60),sample:T,velocity:t,midiNote:A,pressure:0,channelNumber:e,startTime:n,targetKey:k,currentTuningCalculated:1,currentTuningCents:0,releaseStartTime:1/0,finished:!1,isInRelease:!1,currentModEnvValue:0,releaseStartModEnv:1,currentPan:.5,volumeEnvelope:ye(Js)}),Q},[]),i[A][t]=c.map(ye)),c}function nn(e,A,t){if(A.transformAmount===0)return 0;let s;if(A.sourceUsesCC)s=e[A.sourceIndex];else{let h=A.sourceIndex+gA;switch(A.sourceIndex){case P.noController:s=16383;break;case P.noteOnKeyNum:s=t.midiNote<<7;break;case P.noteOnVelocity:s=t.velocity<<7;break;case P.polyPressure:s=t.pressure<<7;break;default:s=e[h];break}}let n=dA[A.sourceCurveType][A.sourcePolarity][A.sourceDirection][s],o;if(A.secSrcUsesCC)o=e[A.secSrcIndex];else{let h=A.secSrcIndex+gA;switch(A.secSrcIndex){case P.noController:o=16383;break;case P.noteOnKeyNum:o=t.midiNote<<7;break;case P.noteOnVelocity:o=t.velocity<<7;break;case P.polyPressure:o=t.pressure<<7;break;default:o=e[h]}}let E=dA[A.secSrcCurveType][A.secSrcPolarity][A.secSrcDirection][o],i=n*E*A.transformAmount;return A.transformType===2?Math.abs(i):i}function VA(e,A,t=-1,s=0){let{modulators:n,generators:o,modulatedGenerators:E}=e;if(t===-1){E.set(o),n.forEach(c=>{E[c.modulatorDestination]+=nn(A,c,e)}),Ae(e);return}let i=new Set([g.initialAttenuation,g.delayVolEnv,g.attackVolEnv,g.holdVolEnv,g.decayVolEnv,g.sustainVolEnv,g.releaseVolEnv,g.keyNumToVolEnvHold,g.keyNumToVolEnvDecay]),h=new Set;n.forEach(c=>{if(c.sourceUsesCC===t&&c.sourceIndex===s||c.secSrcUsesCC===t&&c.secSrcIndex===s){let f=c.modulatorDestination;h.has(f)||(E[f]=o[f],n.forEach(Q=>{Q.modulatorDestination===f&&(E[f]+=nn(A,Q,e))}),h.add(f))}}),[...h].some(c=>i.has(c))&&Ae(e)}var dA=[];for(let e=0;e<4;e++){dA[e]=[[new Float32Array(IA),new Float32Array(IA)],[new Float32Array(IA),new Float32Array(IA)]];for(let A=0;A<IA;A++)dA[e][0][0][A]=$A(0,e,A/IA,0),isNaN(dA[e][0][0][A])&&(dA[e][0][0][A]=1),dA[e][1][0][A]=$A(0,e,A/IA,1),isNaN(dA[e][1][0][A])&&(dA[e][1][0][A]=1),dA[e][0][1][A]=$A(1,e,A/IA,0),isNaN(dA[e][0][1][A])&&(dA[e][0][1][A]=1),dA[e][1][1][A]=$A(1,e,A/IA,1),isNaN(dA[e][1][1][A])&&(dA[e][1][1][A]=1)}function on(e,A,t,s=!1,n=!0,o=currentTime){if(t===0){this.noteOff(e,A);return}let E=this.workletProcessorChannels[e];if(this.highPerformanceMode&&this.totalVoicesAmount>200&&t<40||this.highPerformanceMode&&t<10||E.isMuted)return;let i=A+E.channelTransposeKeyShift;if(A>127||A<0)return;let h=E.preset.program;this.tunings[h]?.[A]?.midiNote>=0&&(i=this.tunings[h]?.[A].midiNote);let c=sn(e,i,t,E.preset,o,sampleRate,Q=>this.sampleDump(Q.channel,Q.sampleID,Q.sampleData),E.cachedVoices,s),f=E.voices;c.forEach(Q=>{let l=Q.generators[g.exclusiveClass];l!==0&&f.forEach(d=>{d.generators[g.exclusiveClass]===l&&(this.releaseVoice(d),d.modulatedGenerators[g.releaseVolEnv]=-7e3,d.modulatedGenerators[g.releaseModEnv]=-7e3,Ae(d))}),VA(Q,E.midiControllers),Q.currentPan=(Math.max(-500,Math.min(500,Q.modulatedGenerators[g.pan]))+500)/1e3}),this.totalVoicesAmount+=c.length,this.totalVoicesAmount>this.voiceCap&&this.voiceKilling(c.length),f.push(...c),n&&(this.sendChannelProperties(),this.callEvent("noteon",{midiNote:A,channel:e,velocity:t}))}function rn(e,A){if(A>127||A<0){Y("Received a noteOn for note",A,"Ignoring.");return}let t=A+this.workletProcessorChannels[e].channelTransposeKeyShift,s=this.workletProcessorChannels[e].preset.program;if(this.tunings[s]?.[A]?.midiNote>=0&&(t=this.tunings[s]?.[A].midiNote),this.highPerformanceMode&&!this.workletProcessorChannels[e].drumChannel){this.killNote(e,t);return}this.workletProcessorChannels[e].voices.forEach(o=>{o.midiNote!==t||o.isInRelease===!0||(this.workletProcessorChannels[e].holdPedal?this.workletProcessorChannels[e].sustainedVoices.push(o):this.releaseVoice(o))}),this.callEvent("noteoff",{midiNote:A,channel:e})}function In(e,A){this.workletProcessorChannels[e].voices.forEach(t=>{t.midiNote===A&&(t.modulatedGenerators[g.releaseVolEnv]=-12e3,this.releaseVoice(t))})}function an(e,A=!1){let t=this.workletProcessorChannels[e].voices;A?(t.length=0,this.workletProcessorChannels[e].sustainedVoices.length=0,this.sendChannelProperties()):(t.forEach(s=>{s.isInRelease||this.releaseVoice(s)}),this.workletProcessorChannels[e].sustainedVoices.forEach(s=>{this.releaseVoice(s)}))}function gn(e=!1){m("%cStop all received!",a.info);for(let A=0;A<this.workletProcessorChannels.length;A++)this.stopAll(A,e);this.callEvent("stopall",void 0)}function Cn(e,A=!1){this.transposition=0;for(let t=0;t<this.workletProcessorChannels.length;t++)this.transposeChannel(t,e,A);this.transposition=e}function En(e,A,t=!1){let s=this.workletProcessorChannels[e];s.drumChannel||(A+=this.transposition);let n=Math.trunc(A),o=s.channelTransposeKeyShift+s.customControllers[iA.channelTransposeFine]/100;s.drumChannel&&!t||A===o||(n!==s.channelTransposeKeyShift&&this.stopAll(e,!1),s.channelTransposeKeyShift=n,s.customControllers[iA.channelTransposeFine]=(A-n)*100)}function Bn(e,A,t=!0){let s=this.workletProcessorChannels[e];A=Math.round(A),s.customControllers[iA.channelTuning]=A,t&&m(`%cChannel ${e} fine tuning. Cents: %c${A}`,a.info,a.value)}function hn(e,A){let t=this.workletProcessorChannels[e];A=Math.round(A),t.customControllers[iA.channelTuningSemitones]=A,m(`%cChannel ${e} coarse tuning. Semitones: %c${A}`,a.info,a.value)}function Qn(e){e=Math.round(e);for(let A=0;A<this.workletProcessorChannels.length;A++)this.workletProcessorChannels[A].customControllers[iA.masterTuning]=e}function cn(e,A){let t=this.workletProcessorChannels[e];A=Math.round(A),m(`%cChannel ${e} modulation depth. Cents: %c${A}`,a.info,a.value),t.customControllers[iA.modulationMultiplier]=A/50}function ln(e,A,t){if(this.workletProcessorChannels[e].lockedControllers[gA+P.pitchWheel])return;let s=t|A<<7;this.callEvent("pitchwheel",{channel:e,MSB:A,LSB:t}),this.workletProcessorChannels[e].midiControllers[gA+P.pitchWheel]=s,this.workletProcessorChannels[e].voices.forEach(n=>VA(n,this.workletProcessorChannels[e].midiControllers,0,P.pitchWheel)),this.sendChannelProperties()}function fn(e,A){let t=this.workletProcessorChannels[e];t.midiControllers[gA+P.channelPressure]=A<<7,this.workletProcessorChannels[e].voices.forEach(s=>VA(s,t.midiControllers,0,P.channelPressure)),this.callEvent("channelpressure",{channel:e,pressure:A})}function un(e,A,t){this.workletProcessorChannels[e].voices.forEach(s=>{s.midiNote===A&&(s.pressure=t,VA(s,this.workletProcessorChannels[e].midiControllers,0,P.polyPressure))}),this.callEvent("polypressure",{channel:e,midiNote:A,pressure:t})}function dn(e,A){if(A.length!==12)throw new Error("Tuning is not the length of 12.");this.workletProcessorChannels[e].channelOctaveTuning=A}function mn(e,A,t,s=!1){let n=this.workletProcessorChannels[e];if(A>=p.lsbForControl1ModulationWheel&&A<=p.lsbForControl13EffectControl2&&A!==p.lsbForControl6DataEntry){let o=A-32;if(n.lockedControllers[o])return;n.midiControllers[o]=n.midiControllers[o]&16256|t&127,n.voices.forEach(E=>VA(E,n.midiControllers,1,o))}switch(A){case p.allNotesOff:this.stopAll(e);break;case p.allSoundOff:this.stopAll(e,!0);break;case p.bankSelect:let o=t;if(!s){switch(this.system){case"gm":m(`%cIgnoring the Bank Select (${t}), as the synth is in GM mode.`,a.info);return;case"xg":o===120||o===126||o===127?this.setDrums(e,!0):this.setDrums(e,!1);break;case"gm2":o===120&&(n.drumChannel=!0,this.callEvent("drumchange",{channel:e,isDrumChannel:!0}))}n.drumChannel&&(o=128),o===128&&!n.drumChannel&&(o=n.midiControllers[p.bankSelect])}n.midiControllers[p.bankSelect]=o;break;case p.lsbForControl0BankSelect:this.system==="xg"?n.drumChannel||t!==127&&(n.midiControllers[p.bankSelect]=t):this.system==="gm2"&&(n.midiControllers[p.bankSelect]=t);break;case p.RPNLsb:n.RPValue=n.RPValue<<7|t,n.dataEntryState=fA.RPFine;break;case p.RPNMsb:n.RPValue=t,n.dataEntryState=fA.RPCoarse;break;case p.NRPNMsb:n.NRPCoarse=t,n.dataEntryState=fA.NRPCoarse;break;case p.NRPNLsb:n.NRPFine=t,n.dataEntryState=fA.NRPFine;break;case p.dataEntryMsb:this.dataEntryCoarse(e,t);break;case p.lsbForControl6DataEntry:this.dataEntryFine(e,t);break;case p.resetAllControllers:this.resetControllers(e);break;case p.sustainPedal:t>=64?n.holdPedal=!0:(n.holdPedal=!1,n.sustainedVoices.forEach(E=>{this.releaseVoice(E)}),n.sustainedVoices=[]);break;default:if(n.lockedControllers[A])return;n.midiControllers[A]=t<<7,n.voices.forEach(E=>VA(E,n.midiControllers,1,A)),this.callEvent("controllerchange",{channel:e,controllerNumber:A,controllerValue:t});break}}function pn(e){this.midiVolume=e,this.setMasterPan(this.pan)}function Sn(e){this.masterGain=e*Rt,this.setMasterPan(this.pan)}function yn(e){this.pan=e,e=e/2+.5,this.panLeft=(1-e)*this.currentGain,this.panRight=e*this.currentGain}function Dn(e,A){A&&this.stopAll(e,!0),this.workletProcessorChannels[e].isMuted=A,this.sendChannelProperties(),this.callEvent("mutechannel",{channel:e,isMuted:A})}function kn(e){this.workletProcessorChannels[e].lockVibrato=!0,this.workletProcessorChannels[e].channelVibrato.rate=0,this.workletProcessorChannels[e].channelVibrato.delay=0,this.workletProcessorChannels[e].channelVibrato.depth=0}function wn(e,A,t,s){this.workletProcessorChannels[e].lockVibrato||(this.workletProcessorChannels[e].channelVibrato.rate=t,this.workletProcessorChannels[e].channelVibrato.delay=s,this.workletProcessorChannels[e].channelVibrato.depth=A)}function Fn(e,A){let t=this.workletProcessorChannels[e],s=()=>{t.channelVibrato.delay===0&&t.channelVibrato.rate===0&&t.channelVibrato.depth===0&&(t.channelVibrato.depth=50,t.channelVibrato.rate=8,t.channelVibrato.delay=.6)};switch(t.dataEntryState){default:case fA.Idle:break;case fA.NRPFine:if(this.system!=="gs")return;switch(t.NRPCoarse){default:if(A===64)return;Y(`%cUnrecognized NRPN for %c${e}%c: %c(0x${t.NRPCoarse.toString(16).toUpperCase()} 0x${t.NRPFine.toString(16).toUpperCase()})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 1:switch(t.NRPFine){default:if(A===64)return;Y(`%cUnrecognized NRPN for %c${e}%c: %c(0x${t.NRPCoarse.toString(16)} 0x${t.NRPFine.toString(16)})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 8:if(t.lockVibrato||A===64)return;s(),t.channelVibrato.rate=A/64*8,m(`%cVibrato rate for channel %c${e}%c is now set to %c${t.channelVibrato.rate}%cHz.`,a.info,a.recognized,a.info,a.value,a.info);break;case 9:if(t.lockVibrato||A===64)return;s(),t.channelVibrato.depth=A/2,m(`%cVibrato depth for %c${e}%c is now set to %c${t.channelVibrato.depth}%c cents range of detune.`,a.info,a.recognized,a.info,a.value,a.info);break;case 10:if(t.lockVibrato||A===64)return;s(),t.channelVibrato.delay=A/64/3,m(`%cVibrato delay for %c${e}%c is now set to %c${t.channelVibrato.delay}%c seconds.`,a.info,a.recognized,a.info,a.value,a.info);break;case 32:let o=A;this.controllerChange(e,p.brightness,A),m(`%cFilter cutoff for %c${e}%c is now set to %c${o}`,a.info,a.recognized,a.info,a.value)}break;case 29:if(!t.drumChannel)return;let n=A;this.controllerChange(e,p.effects1Depth,n),m(`%cGS Drum reverb for %c${e}%c: %c${n}`,a.info,a.recognized,a.info,a.value);break}break;case fA.RPCoarse:case fA.RPFine:switch(t.RPValue){default:Y(`%cUnrecognized RPN for %c${e}%c: %c(0x${t.RPValue.toString(16)})%c data value: %c${A}`,a.warn,a.recognized,a.warn,a.unrecognized,a.warn,a.value);break;case 0:t.midiControllers[gA+P.pitchWheelRange]=A<<7,m(`%cChannel ${e} bend range. Semitones: %c${A}`,a.info,a.value);break;case 2:this.setChannelTuningSemitones(e,A-64);break;case 1:this.setChannelTuning(e,A-64,!1);break;case 5:this.setModulationDepth(e,A*100);break;case 16383:this.resetParameters(e);break}}}function Rn(e,A){let t=this.workletProcessorChannels[e];switch(t.dataEntryState){default:break;case fA.RPCoarse:case fA.RPFine:switch(t.RPValue){default:break;case 0:if(A===0)break;t.midiControllers[gA+P.pitchWheelRange]|=A;let s=(t.midiControllers[gA+P.pitchWheelRange]>>7)+A/127;m(`%cChannel ${e} bend range. Semitones: %c${s}`,a.info,a.value);break;case 1:let o=t.customControllers[iA.channelTuning]<<7|A;this.setChannelTuning(e,o*.01220703125);break;case 5:let i=t.customControllers[iA.modulationMultiplier]*50+A/128*100;this.setModulationDepth(e,i);break;case 16383:this.resetParameters(e);break}}}function Gn(){m("%cResetting all controllers!",a.info),this.callEvent("allcontrollerreset",void 0);for(let e=0;e<this.workletProcessorChannels.length;e++){this.resetControllers(e);let A=this.workletProcessorChannels[e];A.lockPreset?this.callEvent("drumchange",{channel:e,isDrumChannel:A.drumChannel}):(A.presetUsesOverride=!0,A.midiControllers[p.bankSelect]=0,e%16===MA?(this.setPreset(e,this.drumPreset),A.drumChannel=!0,this.callEvent("drumchange",{channel:e,isDrumChannel:!0})):(A.drumChannel=!1,this.setPreset(e,this.defaultPreset),this.callEvent("drumchange",{channel:e,isDrumChannel:!1}))),this.callEvent("programchange",{channel:e,program:A.preset.program,bank:A.preset.bank,userCalled:!1});let t=s=>{this.workletProcessorChannels[e].lockedControllers[s]&&this.callEvent("controllerchange",{channel:e,controllerNumber:s,controllerValue:this.workletProcessorChannels[e].midiControllers[s]>>7})};if(t(p.mainVolume),t(p.pan),t(p.expressionController),t(p.modulationWheel),t(p.effects3Depth),t(p.effects1Depth),this.workletProcessorChannels[e].lockedControllers[gA+P.pitchWheel]){let s=this.workletProcessorChannels[e].midiControllers[gA+P.pitchWheel],n=s>>7,o=s&127;this.callEvent("pitchwheel",{channel:e,MSB:n,LSB:o})}}this.tunings=[],this.tunings=[];for(let e=0;e<127;e++)this.tunings.push([]);this.setMIDIVolume(1),this.system=He}function xn(e){let A=this.workletProcessorChannels[e],s=A.lockedControllers.reduce((o,E,i)=>(E&&o.push(i),o),[]).map(o=>({ccNum:o,ccVal:A.midiControllers[o]}));A.channelOctaveTuning.fill(0),A.midiControllers.set(KA),A.channelVibrato={rate:0,depth:0,delay:0},A.holdPedal=!1,s.forEach(o=>{A.midiControllers[o.ccNum]=o.ccVal});let n=A.customControllers[iA.channelTransposeFine];A.customControllers.set(dt),A.customControllers[iA.channelTransposeFine]=n,this.resetParameters(e)}function Mn(e){let A=this.workletProcessorChannels[e];A.NRPCoarse=0,A.NRPFine=0,A.RPValue=0,A.dataEntryState=fA.Idle}function Nn(){let e=4;for(let s of this.instruments)e+=s.instrumentZones.reduce((n,o)=>(o.generators=o.generators.filter(E=>E.generatorType!==g.sampleID&&E.generatorType!==g.keyRange&&E.generatorType!==g.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:g.velRange,generatorValue:o.velRange.max<<8|o.velRange.min}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:g.keyRange,generatorValue:o.keyRange.max<<8|o.keyRange.min}),o.isGlobal||o.generators.push({generatorType:g.sampleID,generatorValue:this.samples.indexOf(o.sample)}),o.generators.length*4+n),0);let A=new H(e),t=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.generatorZoneStartIndex=t;for(let o of n.generators)J(A,o.generatorType),J(A,o.generatorValue),t++}return cA(A,0),tA(new j("igen",A.length,A))}function bn(e,A,t,s,n){let o=this.samples.map((c,f)=>{t&&c.compressSample(s,n);let Q=c.getRawData();return m(`%cEncoded sample %c${f}. ${c.sampleName}%c of %c${this.samples.length}`,a.info,a.recognized,a.info,a.recognized),Q}),E=this.samples.reduce((c,f,Q)=>c+o[Q].length+46,0),i=new H(E);this.samples.forEach((c,f)=>{let Q=o[f],l,d,S=Q.length;c.isCompressed?(l=i.currentIndex,d=l+Q.length):(l=i.currentIndex/2,d=l+Q.length/2,S+=46),e.push(l),i.set(Q,i.currentIndex),i.currentIndex+=S,A.push(d)});let h=tA(new j("smpl",i.length,i),new H([115,100,116,97]));return tA(new j("LIST",h.length,h))}function Ln(e,A){let s=new H(46*(this.samples.length+1));return this.samples.forEach((n,o)=>{wA(s,n.sampleName,20);let E=e[o];cA(s,E);let i=A[o];cA(s,i);let h=n.sampleLoopStartIndex/2+E,c=n.sampleLoopEndIndex/2+E;n.isCompressed&&(h-=E,c-=E),cA(s,h),cA(s,c),cA(s,n.sampleRate),s[s.currentIndex++]=n.samplePitch,s[s.currentIndex++]=n.samplePitchCorrection,J(s,n.sampleLink),J(s,n.sampleType)}),wA(s,"EOS",46),tA(new j("shdr",s.length,s))}function Un(){let e=10;for(let s of this.instruments)e+=s.instrumentZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new H(e),t=0;for(let s of this.instruments)for(let n of s.instrumentZones){n.modulatorZoneStartIndex=t;for(let o of n.modulators)J(A,o.modulatorSource),J(A,o.modulatorDestination),J(A,o.transformAmount),J(A,o.modulationSecondarySrc),J(A,o.transformType),t++}return re(A,0,10),tA(new j("imod",A.length,A))}function Tn(){let e=this.instruments.reduce((o,E)=>E.instrumentZones.length*4+o,4),A=new H(e),t=0,s=0,n=0;for(let o of this.instruments){o.instrumentZoneIndex=t;for(let E of o.instrumentZones)E.zoneID=t,J(A,s),J(A,n),s+=E.generators.length,n+=E.modulators.length,t++}return J(A,s),J(A,n),tA(new j("ibag",A.length,A))}function Hn(){let e=this.instruments.length*22+22,A=new H(e),t=0,s=0;for(let n of this.instruments)wA(A,n.instrumentName,20),J(A,t),t+=n.instrumentZones.length,n.instrumentID=s,s++;return wA(A,"EOI",20),J(A,t),tA(new j("inst",A.length,A))}function Yn(){let e=4;for(let s of this.presets)e+=s.presetZones.reduce((n,o)=>(o.generators=o.generators.filter(E=>E.generatorType!==g.instrument&&E.generatorType!==g.keyRange&&E.generatorType!==g.velRange),(o.velRange.max!==127||o.velRange.min!==0)&&o.generators.unshift({generatorType:g.velRange,generatorValue:o.velRange.max<<8|o.velRange.min}),(o.keyRange.max!==127||o.keyRange.min!==0)&&o.generators.unshift({generatorType:g.keyRange,generatorValue:o.keyRange.max<<8|o.keyRange.min}),o.isGlobal||o.generators.push({generatorType:g.instrument,generatorValue:this.instruments.indexOf(o.instrument)}),o.generators.length*4+n),0);let A=new H(e),t=0;for(let s of this.presets)for(let n of s.presetZones){n.generatorZoneStartIndex=t;for(let o of n.generators)J(A,o.generatorType),J(A,o.generatorValue);t+=n.generators.length}return J(A,0),J(A,0),tA(new j("pgen",A.length,A))}function Jn(){let e=10;for(let s of this.presets)e+=s.presetZones.reduce((n,o)=>o.modulators.length*10+n,0);let A=new H(e),t=0;for(let s of this.presets)for(let n of s.presetZones){n.modulatorZoneStartIndex=t;for(let o of n.modulators)J(A,o.modulatorSource),J(A,o.modulatorDestination),J(A,o.transformAmount),J(A,o.modulationSecondarySrc),J(A,o.transformType),t++}return re(A,0,10),tA(new j("pmod",A.length,A))}function qn(){let e=this.presets.reduce((o,E)=>E.presetZones.length*4+o,4),A=new H(e),t=0,s=0,n=0;for(let o of this.presets){o.presetZoneStartIndex=t;for(let E of o.presetZones)E.zoneID=t,J(A,s),J(A,n),s+=E.generators.length,n+=E.modulators.length,t++}return J(A,s),J(A,n),tA(new j("pbag",A.length,A))}function Kn(){let e=this.presets.length*38+38,A=new H(e),t=0;for(let s of this.presets)wA(A,s.presetName,20),J(A,s.program),J(A,s.bank),J(A,t),cA(A,s.library),cA(A,s.genre),cA(A,s.morphology),t+=s.presetZones.length;return wA(A,"EOP",20),J(A,0),J(A,0),J(A,t),cA(A,0),cA(A,0),cA(A,0),tA(new j("phdr",A.length,A))}var Lo={compress:!1,compressionQuality:.5,compressionFunction:void 0};function vn(e=Lo){if(e.compress&&typeof e.compressionFunction!="function")throw new TypeError("No compression function supplied but compression enabled.");DA("%cSaving soundfont...",a.info),m(`%cCompression: %c${e?.compress||"false"}%c quality: %c${e?.compressionQuality||"none"}`,a.info,a.recognized,a.info,a.recognized),m("%cWriting INFO...",a.info);let A=[];this.soundFontInfo.ISFT="SpessaSynth",e?.compress&&(this.soundFontInfo.ifil="3.0");for(let[Z,T]of Object.entries(this.soundFontInfo))if(Z==="ifil"||Z==="iver"){let r=parseInt(T.split(".")[0]),sA=parseInt(T.split(".")[1]),K=new H(4);J(K,r),J(K,sA),A.push(tA(new j(Z,4,K)))}else{let r=new H(T.length);wA(r,T),A.push(tA(new j(Z,T.length,r)))}let t=de([new H([73,78,70,79]),...A]),s=tA(new j("LIST",t.length,t));m("%cWriting SDTA...",a.info);let n=[],o=[],E=bn.call(this,n,o,e?.compress,e?.compressionQuality||.5,e.compressionFunction);m("%cWriting PDTA...",a.info),m("%cWriting SHDR...",a.info);let i=Ln.call(this,n,o);m("%cWriting IGEN...",a.info);let h=Nn.call(this);m("%cWriting IMOD...",a.info);let c=Un.call(this);m("%cWriting IBAG...",a.info);let f=Tn.call(this);m("%cWriting INST...",a.info);let Q=Hn.call(this),l=Yn.call(this);m("%cWriting PMOD...",a.info);let d=Jn.call(this);m("%cWriting PBAG...",a.info);let S=qn.call(this);m("%cWriting PHDR...",a.info);let D=Kn.call(this),k=de([new H([112,100,116,97]),D,S,d,l,Q,f,c,h,i]),x=tA(new j("LIST",k.length,k));m("%cWriting the output file...",a.info);let M=de([new H([115,102,98,107]),s,E,x]),N=tA(new j("RIFF",M.length,M));return m(`%cSaved succesfully! Final file size: %c${N.length}`,a.info,a.recognized),X(),N}var ee=class e{constructor(A=void 0){this.soundFontInfo={},this.presets=[],this.samples=[],this.instruments=[],A?.presets&&(this.presets.push(...A.presets),this.soundFontInfo=A.info)}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()}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()}deletePreset(A){A.deletePreset(),this.presets.splice(this.presets.indexOf(A),1),this.removeUnusedElements()}getPresetNoFallback(A,t,s=!1){let n=this.presets.find(o=>o.bank===A&&o.program===t);if(n)return n;if(s!==!1)return A===128?this.presets.find(o=>o.bank===128):this.presets.find(o=>o.program===t)}setSampleIDOffset(A){this.presets.forEach(t=>t.sampleIDOffset=A)}getPreset(A,t){let s=this.presets.find(n=>n.bank===A&&n.program===t);return s||(s=this.presets.find(n=>n.program===t&&n.bank!==128),A===128&&(s=this.presets.find(n=>n.bank===128&&n.program===t),s||(s=this.presets.find(n=>n.bank===128))),s&&Y(`%cPreset ${A}.${t} not found. Replaced with %c${s.presetName} (${s.bank}.${s.program})`,a.warn,a.recognized)),s||(Y(`Preset ${t} not found. Defaulting to`,this.presets[0].presetName),s=this.presets[0]),s}getPresetByName(A){let t=this.presets.find(s=>s.presetName===A);return t||(Y("Preset not found. Defaulting to:",this.presets[0].presetName),t=this.presets[0]),t}static mergeSoundfonts(...A){let t=A.shift(),s=t.presets;for(;A.length;)A.shift().presets.forEach(o=>{s.find(E=>E.bank===o.bank&&E.program===o.program)===void 0&&s.push(o)});return new e({presets:s,info:t.soundFontInfo})}};ee.prototype.write=vn;function Pn(e){DA("%cLoading instruments...",a.info);for(let A=0;A<this.instrumentAmount;A++)this.readDLSInstrument(O(e.chunkData));X()}var ge=class{constructor(){this.presetName="",this.program=0,this.bank=0,this.presetZones=[],this.sampleIDOffset=0,this.foundSamplesAndGenerators=[];for(let A=0;A<128;A++)this.foundSamplesAndGenerators[A]=[];this.library=0,this.genre=0,this.morphology=0}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 s=A;s<t+1;s++)for(let n=0;n<128;n++)this.getSamplesAndGenerators(s,n).forEach(o=>{o.sample.isSampleLoaded||o.sample.getAudioData()})}preloadSpecific(A,t){this.getSamplesAndGenerators(A,t).forEach(s=>{s.sample.isSampleLoaded||s.sample.getAudioData()})}getSamplesAndGenerators(A,t){let s=this.foundSamplesAndGenerators[A][t];if(s)return s;if(this.presetZones.length<1)return[];function n(l,d,S){return S>=l&&S<=d}function o(l,d){return l.modulatorSource===d.modulatorSource&&l.modulatorDestination===d.modulatorDestination&&l.modulationSecondarySrc===d.modulationSecondarySrc&&l.transformType===d.transformType}function E(l,d){l.push(...d.filter(S=>!l.find(D=>D.generatorType===S.generatorType)))}function i(l,d){l.push(...d.filter(S=>!l.find(D=>o(S,D))))}let h=[],c=this.presetZones[0].isGlobal?[...this.presetZones[0].generators]:[],f=this.presetZones[0].isGlobal?[...this.presetZones[0].modulators]:[];return this.presetZones.filter(l=>n(l.keyRange.min,l.keyRange.max,A)&&n(l.velRange.min,l.velRange.max,t)&&!l.isGlobal).forEach(l=>{if(l.instrument.instrumentZones.length<1)return;let d=l.generators,S=l.modulators,D=l.instrument.instrumentZones[0].isGlobal?[...l.instrument.instrumentZones[0].generators]:[],k=l.instrument.instrumentZones[0].isGlobal?[...l.instrument.instrumentZones[0].modulators]:[];l.instrument.instrumentZones.filter(M=>n(M.keyRange.min,M.keyRange.max,A)&&n(M.velRange.min,M.velRange.max,t)&&!M.isGlobal).forEach(M=>{let N=[...M.generators],Z=[...M.modulators];E(d,c),E(N,D),i(S,f),i(Z,k),i(Z,ys);let T=[...Z];for(let r=0;r<S.length;r++){let sA=S[r],K=T.findIndex(z=>o(sA,z));K!==-1?T[K]=T[K].sumTransform(sA):T.push(sA)}h.push({instrumentGenerators:N,presetGenerators:d,modulators:T,sample:M.sample,sampleID:M.generators.find(r=>r.generatorType===g.sampleID).generatorValue})})}),this.foundSamplesAndGenerators[A][t]=h,h}};var De=class{velRange={min:0,max:127};keyRange={min:0,max:127};isGlobal=!1;generators=[];modulators=[]};var WA=class extends De{sample=void 0;useCount=0;deleteZone(){this.useCount--,!this.isGlobal&&this.sample.useCount--}},Ce=class extends De{instrument=void 0;deleteZone(){this.isGlobal||this.instrument.removeUseCount()}};var Ee=class{constructor(){this.instrumentName="",this.instrumentZones=[],this._useCount=0}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--}get useCount(){return this._useCount}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 Xe=class extends ge{constructor(A,t){super(),this.program=t&127,this.bank=A>>8&127,A>>31&&(this.bank=128),this.DLSInstrument=new Ee,this.DLSInstrument.addUseCount();let n=new Ce;n.instrument=this.DLSInstrument,this.presetZones=[n]}};function Vn(e){this.verifyHeader(e,"LIST"),this.verifyText(V(e.chunkData,4),"ins ");let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(O(e.chunkData));let t=A.find(d=>d.header==="insh");if(!t)throw X(),new Error("No instrument header!");let s=y(t.chunkData,4),n=y(t.chunkData,4),o=y(t.chunkData,4),E=new Xe(n,o),i="unnamedPreset",h=SA(A,"INFO");if(h){let d=O(h.chunkData);for(;d.header!=="INAM";)d=O(h.chunkData);i=V(d.chunkData,d.chunkData.length).trim()}E.presetName=i,E.DLSInstrument.instrumentName=i,jA(`%cParsing %c"${i}"%c...`,a.info,a.recognized,a.info);let c=SA(A,"lrgn");if(!c)throw X(),new Error("No region list!");let f=new WA;f.isGlobal=!0;let Q=SA(A,"lart"),l=SA(A,"lar2");this.readLart(Q,l,f),E.DLSInstrument.instrumentZones.push(f);for(let d=0;d<s;d++){let S=O(c.chunkData);this.verifyHeader(S,"LIST");let D=V(S.chunkData,4);if(D!=="rgn "&&D!=="rgn2")throw X(),new SyntaxError(`Invalid DLS region! Expected "rgn " or "rgn2" got "${D}"`);let k=this.readRegion(S);k&&E.DLSInstrument.instrumentZones.push(k)}this.presets.push(E),this.instruments.push(E.DLSInstrument),X()}var R={none:0,gain:1,reserved:2,pitch:3,pan:4,keyNum:5,chorusSend:128,reverbSend:129,modLfoFreq:260,modLfoDelay:261,vibLfoFreq:276,vibLfoDelay:277,volEnvAttack:518,volEnvDecay:519,volEnvRelease:521,volEnvSustain:522,volEnvDelay:523,volEnvHold:524,modEnvAttack:778,modEnvDecay:779,modEnvRelease:781,modEnvSustain:782,modEnvDelay:783,modEnvHold:784,filterCutoff:1280,filterQ:1281};var _={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};function On(e){let A,t=!1;switch(e){default:case _.modLfo:case _.vibratoLfo:case _.coarseTune:case _.fineTune:case _.modEnv:return;case _.keyNum:A=P.noteOnKeyNum;break;case _.none:A=P.noController;break;case _.modulationWheel:A=p.modulationWheel,t=!0;break;case _.pan:A=p.pan,t=!0;break;case _.reverb:A=p.effects1Depth,t=!0;break;case _.chorus:A=p.effects3Depth,t=!0;break;case _.expression:A=p.expressionController,t=!0;break;case _.volume:A=p.mainVolume,t=!0;break;case _.velocity:A=P.noteOnVelocity;break;case _.polyPressure:A=P.polyPressure;break;case _.channelPressure:A=P.channelPressure;break;case _.pitchWheel:A=P.pitchWheel;break;case _.pitchWheelRange:A=P.pitchWheelRange;break}if(A===void 0)throw`not known?? ${e}`;return{enum:A,isCC:t}}function Uo(e,A){switch(e){default:case R.none:return;case R.pan:return g.pan;case R.gain:return{gen:g.initialAttenuation,newAmount:A*-1};case R.pitch:return g.fineTune;case R.keyNum:return g.overridingRootKey;case R.volEnvDelay:return g.delayVolEnv;case R.volEnvAttack:return g.attackVolEnv;case R.volEnvHold:return g.holdVolEnv;case R.volEnvDecay:return g.decayVolEnv;case R.volEnvSustain:return{gen:g.sustainVolEnv,newAmount:1e3-A};case R.volEnvRelease:return g.releaseVolEnv;case R.modEnvDelay:return g.delayModEnv;case R.modEnvAttack:return g.attackModEnv;case R.modEnvHold:return g.holdModEnv;case R.modEnvDecay:return g.decayModEnv;case R.modEnvSustain:return{gen:g.sustainModEnv,newAmount:(1e3-A)/10};case R.modEnvRelease:return g.releaseModEnv;case R.filterCutoff:return g.initialFilterFc;case R.filterQ:return g.initialFilterQ;case R.chorusSend:return g.chorusEffectsSend;case R.reverbSend:return g.reverbEffectsSend}}function To(e,A){return e===_.vibratoLfo&&A===R.pitch?g.vibLfoToPitch:e===_.modLfo&&A===R.pitch?g.modLfoToPitch:e===_.modLfo&&A===R.filterCutoff?g.modLfoToFilterFc:e===_.modLfo&&A===R.gain?g.modLfoToVolume:e===_.modEnv&&A===R.filterCutoff?g.modEnvToFilterFc:e===_.modEnv&&A===R.pitch?g.modEnvToPitch:void 0}function Zn(e,A,t,s,n){let o=To(e,t),E,i,h=!1,c=!1;if(o===void 0){let k=Uo(t,n);if(k===void 0||(E=k,k.newAmount!==void 0&&(n=k.newAmount,E=k.gen),i=On(e),i===void 0))return}else E=o,h=!0,i={enum:P.noController,isCC:!1},c=!0;let f=On(A);if(f===void 0)return;let Q;if(c)Q=0;else{let k=s&15,x=s>>10&15;x===lA.linear&&k!==lA.linear&&(x=k);let M=s>>14&1,N=s>>15&1;E===g.initialAttenuation&&(N=!N),Q=qA(x,M,N,i.isCC,i.enum)}let l=s>>4&15,d=s>>8&1,S=s>>9&1,D=qA(l,d,S,f.isCC,f.enum);if(h){let k=D;D=Q,Q=k}return new rA({srcEnum:Q,secSrcEnum:D,dest:E,transform:0,amt:n})}function Gt(e,A){let t=e.chunkData,s=[],n=[];y(t,4);let o=y(t,4);for(let E=0;E<o;E++){let i=y(t,2),h=y(t,2),c=y(t,2),f=y(t,2),Q=y(t,4)>>16;if(i===0&&h===0&&f===0){let l;switch(c){case R.pan:l=new b(g.pan,Q);break;case R.gain:l=new b(g.initialAttenuation,-Q*10/.4);break;case R.filterCutoff:l=new b(g.initialFilterFc,Q);break;case R.filterQ:l=new b(g.initialFilterQ,Q);break;case R.modLfoFreq:l=new b(g.freqModLFO,Q);break;case R.modLfoDelay:l=new b(g.delayModLFO,Q);break;case R.vibLfoFreq:l=new b(g.freqVibLFO,Q);break;case R.vibLfoDelay:l=new b(g.delayVibLFO,Q);break;case R.volEnvDelay:l=new b(g.delayVolEnv,Q);break;case R.volEnvAttack:l=new b(g.attackVolEnv,Q);break;case R.volEnvHold:l=new b(g.holdVolEnv,Q);break;case R.volEnvDecay:l=new b(g.decayVolEnv,Q);break;case R.volEnvRelease:l=new b(g.releaseVolEnv,Q);break;case R.volEnvSustain:let d=(1e3-Q)/10;l=new b(g.sustainVolEnv,d*10);break;case R.modEnvDelay:l=new b(g.delayModEnv,Q);break;case R.modEnvAttack:l=new b(g.attackModEnv,Q);break;case R.modEnvHold:l=new b(g.holdModEnv,Q);break;case R.modEnvDecay:l=new b(g.decayModEnv,Q);break;case R.modEnvRelease:l=new b(g.releaseModEnv,Q);break;case R.modEnvSustain:let S=1e3-Q;l=new b(g.sustainModEnv,S);break;case R.reverbSend:l=new b(g.reverbEffectsSend,Q);break;case R.chorusSend:l=new b(g.chorusEffectsSend,Q);break;case R.pitch:let D=Math.floor(Q/100),k=Math.floor(Q-D*100);l=new b(g.fineTune,k),s.push(new b(g.coarseTune,D));break}l&&s.push(l)}else{let l=!0;if(h===_.none?i===_.modLfo&&c===R.pitch?s.push(new b(g.modLfoToPitch,Q)):i===_.modLfo&&c===R.gain?s.push(new b(g.modLfoToVolume,Q)):i===_.modLfo&&c===R.filterCutoff?s.push(new b(g.modLfoToFilterFc,Q)):i===_.vibratoLfo&&c===R.pitch?s.push(new b(g.vibLfoToPitch,Q)):i===_.modEnv&&c===R.pitch?s.push(new b(g.modEnvToPitch,Q)):i===_.modEnv&&c===R.filterCutoff?s.push(new b(g.modEnvToFilterFc,Q)):i===_.keyNum&&c===R.volEnvHold?s.push(new b(g.keyNumToVolEnvHold,Q/-127)):i===_.keyNum&&c===R.volEnvDecay?s.push(new b(g.keyNumToVolEnvDecay,Q/-127)):i===_.keyNum&&c===R.modEnvHold?s.push(new b(g.keyNumToModEnvHold,Q/-127)):i===_.keyNum&&c===R.modEnvDecay?s.push(new b(g.keyNumToModEnvDecay,Q/-127)):l=!1:l=!1,l===!1){let d=Zn(i,h,c,f,Q);d?(n.push(d),m("%cSucceeded converting to SF2 Modulator!",a.recognized)):Y("Failed converting to SF2 Modulator!")}}}return n.push(new rA({srcEnum:219,dest:g.reverbEffectsSend,amt:1e3,secSrcEnum:0,transform:0}),new rA({srcEnum:221,dest:g.chorusEffectsSend,amt:1e3,secSrcEnum:0,transform:0})),A&&n.push(new rA({srcEnum:129,dest:g.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0}),new rA({srcEnum:13,dest:g.vibLfoToPitch,amt:0,secSrcEnum:0,transform:0})),{modulators:n,generators:s}}function Xn(e,A,t){if(e)for(;e.chunkData.currentIndex<e.chunkData.length;){let s=O(e.chunkData);this.verifyHeader(s,"art1");let n=Gt(s,!0);t.generators.push(...n.generators),t.modulators.push(...n.modulators)}if(A)for(;A.chunkData.currentIndex<A.chunkData.length;){let s=O(A.chunkData);this.verifyHeader(s,"art2");let n=Gt(s,!1);t.generators.push(...n.generators),t.modulators.push(...n.modulators)}}var We=class extends WA{constructor(A,t){super(),this.keyRange=A,this.velRange=t,this.isGlobal=!0}setWavesample(A,t,s,n,o,E){t!==0&&this.generators.push(new b(g.sampleModes,t)),this.generators.push(new b(g.initialAttenuation,A)),this.isGlobal=!1;let i=s.start-o.sampleLoopStartIndex/2,h=s.end-o.sampleLoopEndIndex/2;if(i!==0){let c=i%32768;this.generators.push(new b(g.startloopAddrsOffset,c)),(i-c)/32768!==0&&this.generators.push(new b(g.startloopAddrsCoarseOffset,c))}if(h!==0){let c=h%32768;this.generators.push(new b(g.endloopAddrsOffset,c)),(h-c)/32768!==0&&this.generators.push(new b(g.endloopAddrsCoarseOffset,c))}n!==o.samplePitch&&this.generators.push(new b(g.overridingRootKey,n)),this.generators.push(new b(g.sampleID,E)),this.sample=o,o.useCount++}};function Wn(e){let A=[];for(;e.chunkData.length>e.chunkData.currentIndex;)A.push(O(e.chunkData));let t=A.find(r=>r.header==="rgnh"),s=y(t.chunkData,2),n=y(t.chunkData,2),o=y(t.chunkData,2),E=y(t.chunkData,2),i=new We({min:s,max:n},{min:o,max:E});y(t.chunkData,2);let h=y(t.chunkData,2);h!==0&&i.generators.push(new b(g.exclusiveClass,h));let c=SA(A,"lart"),f=SA(A,"lar2");this.readLart(c,f,i),i.isGlobal=!1;let Q=A.find(r=>r.header==="wsmp");y(Q.chunkData,4);let l=y(Q.chunkData,2);y(Q.chunkData,2);let D=(y(Q.chunkData,4)|0)/-655360*10/.4;y(Q.chunkData,4);let k=y(Q.chunkData,4),x,M={start:0,end:0};if(k===0)x=0;else{y(Q.chunkData,4),y(Q.chunkData,4)===0?x=1:x=3,M.start=y(Q.chunkData,4);let sA=y(Q.chunkData,4);M.end=M.start+sA}let N=A.find(r=>r.header==="wlnk");if(N===void 0)return;y(N.chunkData,2),y(N.chunkData,2),y(N.chunkData,4);let Z=y(N.chunkData,4),T=this.samples[Z];if(T===void 0)throw new Error("Invalid sample ID!");return i.setWavesample(D,x,M,l,T,Z),i}var Be=class{constructor(A,t,s,n,o,E,i,h){this.sampleName=A,this.sampleRate=t,this.samplePitch=s,this.samplePitchCorrection=n,this.sampleLink=o,this.sampleType=E,this.sampleLoopStartIndex=i,this.sampleLoopEndIndex=h,this.isCompressed=(E&16)>0,this.compressedData=void 0,this.useCount=0}getRawData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}compressSample(A,t){if(!this.isCompressed)try{this.compressedData=t([this.getAudioData()],1,this.sampleRate,A),this.sampleType|=16,this.isCompressed=!0}catch{Y(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`),this.isCompressed=!1,this.compressedData=void 0,this.sampleType&=-17}}getAudioData(){let A=new Error("Not implemented");throw A.name="NotImplementedError",A}};var _e=class extends Be{constructor(A,t,s,n,o,E,i){super(A,t,s,n,0,1,o*2,(E-1)*2),this.sampleData=i}getAudioData(){return this.sampleData}sampleData;getRawData(){if(this.isCompressed){if(!this.compressedData)throw new Error("Compressed but no data??");return this.compressedData}let A=new Uint8Array(this.sampleData.length*2);for(let t=0;t<this.sampleData.length;t++){let s=Math.floor(this.sampleData[t]*32767);A[t*2]=s&255,A[t*2+1]=s>>8&255}return A}};function _n(e){DA("%cLoading Wave samples...",a.recognized);let A=0;for(;e.chunkData.currentIndex<e.chunkData.length;){let t=O(e.chunkData);this.verifyHeader(t,"LIST"),this.verifyText(V(t.chunkData,4),"wave");let s=[];for(;t.chunkData.currentIndex<t.chunkData.length;)s.push(O(t.chunkData));let n=s.find(K=>K.header==="fmt ");if(!n)throw new Error("No fmt chunk in the wave file!");if(y(n.chunkData,2)!==1)throw new Error("Only PCM format in WAVE is supported.");if(y(n.chunkData,2)!==1)throw new Error("Only mono samples are supported.");let i=y(n.chunkData,4);y(n.chunkData,4),y(n.chunkData,2);let h=y(n.chunkData,2),c=h/8,f=Math.pow(2,c*8-1),Q=Math.pow(2,c*8),l,d=!1;h===8?(l=255,d=!0):l=f;let S=s.find(K=>K.header==="data");if(!S)throw new Error("No data chunk in the wave chunk!");let D=S.size/c,k=new Float32Array(D);for(let K=0;K<k.length;K++){let z=y(S.chunkData,c);d?k[K]=z/l-.5:(z>=f&&(z-=Q),k[K]=z/l)}let x=60,M=0,N=0,Z=k.length-1,T=s.find(K=>K.header==="wsmp");if(T){if(y(T.chunkData,4),x=y(T.chunkData,2),M=ie(T.chunkData[T.chunkData.currentIndex++],T.chunkData[T.chunkData.currentIndex++]),y(T.chunkData,4),y(T.chunkData,4),y(T.chunkData,4)===1){y(T.chunkData,8),N=y(T.chunkData,4);let z=y(T.chunkData,4);Z=N+z}}else Y("No wsmp chunk in wave... using sane defaults.");let r=SA(s,"INFO"),sA=`Unnamed ${A}`;if(r){let K=O(r.chunkData);for(;K.header!=="INAM"&&r.chunkData.currentIndex<r.chunkData.length;)K=O(r.chunkData);K.header==="INAM"&&(sA=V(K.chunkData,K.size).trim())}this.samples.push(new _e(sA,i,x,M,N,D,k)),A++,m(`%cLoaded sample %c${sA}`,a.info,a.recognized)}X()}var OA=class extends ee{constructor(A){if(super(),this.dataArray=new H(A),jA("%cParsing DLS...",a.info),!this.dataArray)throw X(),new TypeError("No data!");let t=O(this.dataArray,!1);this.verifyHeader(t,"riff"),this.verifyText(V(this.dataArray,4).toLowerCase(),"dls ");let s=[];for(;this.dataArray.currentIndex<this.dataArray.length;)s.push(O(this.dataArray));this.soundFontInfo.ifil="2.1",this.soundFontInfo.isng="EMU8000",this.soundFontInfo.IPRD="SpessaSynth DLS",this.soundFontInfo.ICRD=new Date().toDateString();let n=SA(s,"INFO");if(n)for(;n.chunkData.currentIndex<n.chunkData.length;){let h=O(n.chunkData);this.soundFontInfo[h.header]=V(h.chunkData,h.size)}this.soundFontInfo.ICMT=(this.soundFontInfo.ICMT||"")+`
|
|
13
13
|
Converted from DLS to SF2 with SpessaSynth`,this.soundFontInfo.ISBJ&&(this.soundFontInfo.ICMT+=`
|
|
14
14
|
`+this.soundFontInfo.ISBJ,delete this.soundFontInfo.ISBJ);for(let[h,c]of Object.entries(this.soundFontInfo))m(`%c"${h}": %c"${c}"`,a.info,a.recognized);let o=s.find(h=>h.header==="colh");if(!o)throw X(),new Error("No colh chunk!");this.instrumentAmount=y(o.chunkData,4),m(`%cInstruments amount: %c${this.instrumentAmount}`,a.info,a.recognized);let E=SA(s,"wvpl");this.readDLSSamples(E);let i=SA(s,"lins");if(!i)throw X(),new Error("No lins chunk!");this.readDLSInstrumentList(i),m(`%cParsing finished! %c"${this.soundFontInfo.INAM||"UNNAMED"}"%c has %c${this.presets.length} %cpresets,
|
|
15
15
|
%c${this.instruments.length}%c instruments and %c${this.samples.length}%c samples.`,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info,a.recognized,a.info),X()}verifyHeader(A,t){if(A.header.toLowerCase()!==t.toLowerCase())throw X(),new SyntaxError(`Invalid DLS chunk header! Expected "${t.toLowerCase()}" got "${A.header.toLowerCase()}"`)}verifyText(A,t){if(A.toLowerCase()!==t.toLowerCase())throw X(),new SyntaxError(`Invalid DLS soundfont! Expected "${t.toLowerCase()}" got "${A.toLowerCase()}"`)}};OA.prototype.readDLSInstrumentList=Pn;OA.prototype.readDLSInstrument=Vn;OA.prototype.readRegion=Wn;OA.prototype.readLart=Xn;OA.prototype.readDLSSamples=_n;var xt=class extends Be{constructor(A,t,s,n,o,E,i,h,c,f,Q,l,d){super(A,E,i,h,c,f,n-t,o-t),this.sampleName=A,this.sampleStartIndex=t,this.sampleEndIndex=s,this.isSampleLoaded=!1,this.sampleID=l,this.sampleLength=this.sampleEndIndex-this.sampleStartIndex,this.sampleDataArray=Q,this.sampleData=new Float32Array(0),this.isCompressed&&(this.sampleLoopStartIndex+=this.sampleStartIndex,this.sampleLoopEndIndex+=this.sampleStartIndex,this.sampleLength=99999999),this.isDataRaw=d}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{if(!this.isDataRaw)throw new Error("Writing SF2Pack samples is not supported.");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,s=A.slice(this.sampleStartIndex/2+t,this.sampleEndIndex/2+t);this.sampleData=new Float32Array(0);let n=vA.decode(s.buffer);this.sampleData=n.data[0]}getAudioData(){return this.isSampleLoaded?this.sampleData:this.sampleLength<1?new Float32Array(1):this.isCompressed?(this.decodeVorbis(),this.isSampleLoaded=!0,this.sampleData):this.isDataRaw?this.loadUncompressedData():this.getUncompressedReadyData()}loadUncompressedData(){if(this.isCompressed)return Y("Trying to load a compressed sample via loadUncompressedData()... aborting!"),new Float32Array(0);let A=new Float32Array(this.sampleLength/2),t=this.sampleDataArray.currentIndex,s=new Int16Array(this.sampleDataArray.slice(t+this.sampleStartIndex,t+this.sampleEndIndex).buffer);for(let n=0;n<s.length;n++)A[n]=s[n]/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 zn(e,A,t=!0){let s=[],n=0;for(;e.chunkData.length>e.chunkData.currentIndex;){let o=Ho(n,e.chunkData,A,t);s.push(o),n++}return s.length>1&&s.pop(),s}function Ho(e,A,t,s){let n=V(A,20),o=y(A,4)*2,E=y(A,4)*2,i=y(A,4)*2,h=y(A,4)*2,c=y(A,4),f=A[A.currentIndex++];f===255&&(f=60);let Q=ps(A[A.currentIndex++]),l=y(A,2),d=y(A,2);return new xt(n,o,E,i,h,c,f,Q,l,d,t,e,s)}var Mt=class extends Ee{constructor(A){super(),this.instrumentName=V(A.chunkData,20).trim(),this.instrumentZoneIndex=y(A.chunkData,2),this.instrumentZonesAmount=0}getInstrumentZones(A,t){this.instrumentZonesAmount=A;for(let s=this.instrumentZoneIndex;s<this.instrumentZonesAmount+this.instrumentZoneIndex;s++)this.instrumentZones.push(t[s])}};function jn(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new Mt(e);if(t.length>0){let n=s.instrumentZoneIndex-t[t.length-1].instrumentZoneIndex;t[t.length-1].getInstrumentZones(n,A)}t.push(s)}return t.length>1&&t.pop(),t}var Nt=class extends WA{constructor(A){super(),this.generatorZoneStartIndex=y(A,2),this.modulatorZoneStartIndex=y(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(s=>s.generatorType===g.sampleID);t&&(this.sample=A[t.generatorValue],this.isGlobal=!1,this.sample.useCount++)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===g.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===g.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function $n(e,A,t,s){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new Nt(e.chunkData);if(n.length>0){let E=o.modulatorZoneStartIndex-n[n.length-1].modulatorZoneStartIndex,i=o.generatorZoneStartIndex-n[n.length-1].generatorZoneStartIndex;n[n.length-1].setZoneSize(E,i),n[n.length-1].getGenerators(A),n[n.length-1].getModulators(t),n[n.length-1].getSample(s),n[n.length-1].getKeyRange(),n[n.length-1].getVelRange()}n.push(o)}return n.length>1&&n.pop(),n}var bt=class extends Ce{constructor(A){super(),this.generatorZoneStartIndex=y(A,2),this.modulatorZoneStartIndex=y(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(s=>s.generatorType===g.instrument);t&&(this.instrument=A[t.generatorValue],this.instrument.addUseCount(),this.isGlobal=!1)}getKeyRange(){let A=this.generators.find(t=>t.generatorType===g.keyRange);A&&(this.keyRange.min=A.generatorValue&127,this.keyRange.max=A.generatorValue>>8&127)}getVelRange(){let A=this.generators.find(t=>t.generatorType===g.velRange);A&&(this.velRange.min=A.generatorValue&127,this.velRange.max=A.generatorValue>>8&127)}};function Ao(e,A,t,s){let n=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let o=new bt(e.chunkData);if(n.length>0){let E=o.modulatorZoneStartIndex-n[n.length-1].modulatorZoneStartIndex,i=o.generatorZoneStartIndex-n[n.length-1].generatorZoneStartIndex;n[n.length-1].setZoneSize(E,i),n[n.length-1].getGenerators(A),n[n.length-1].getModulators(t),n[n.length-1].getInstrument(s),n[n.length-1].getKeyRange(),n[n.length-1].getVelRange()}n.push(o)}return n.length>1&&n.pop(),n}var Lt=class extends ge{constructor(A){super(),this.presetName=V(A.chunkData,20).trim().replace(/\d{3}:\d{3}/,""),this.program=y(A.chunkData,2),this.bank=y(A.chunkData,2),this.presetZoneStartIndex=y(A.chunkData,2),this.library=y(A.chunkData,4),this.genre=y(A.chunkData,4),this.morphology=y(A.chunkData,4),this.presetZonesAmount=0}getPresetZones(A,t){this.presetZonesAmount=A;for(let s=this.presetZoneStartIndex;s<this.presetZonesAmount+this.presetZoneStartIndex;s++)this.presetZones.push(t[s])}};function eo(e,A){let t=[];for(;e.chunkData.length>e.chunkData.currentIndex;){let s=new Lt(e);if(t.length>0){let n=s.presetZoneStartIndex-t[t.length-1].presetZoneStartIndex;t[t.length-1].getPresetZones(n,A)}t.push(s)}return t.length>1&&t.pop(),t}var ze=class extends ee{constructor(A,t=!0){if(super(),t&&console.warn("Using the constructor directly is deprecated. Use loadSoundFont instead."),this.dataArray=new H(A),jA("%cParsing SoundFont...",a.info),!this.dataArray)throw X(),new TypeError("No data!");let s=O(this.dataArray,!1);this.verifyHeader(s,"riff");let n=V(this.dataArray,4).toLowerCase();if(n!=="sfbk"&&n!=="sfpk")throw X(),new SyntaxError(`Invalid soundFont! Expected "sfbk" or "sfpk" got "${n}"`);let o=n==="sfpk",E=O(this.dataArray);for(this.verifyHeader(E,"list"),V(E.chunkData,4);E.chunkData.length>E.chunkData.currentIndex;){let $=O(E.chunkData),QA;switch($.header.toLowerCase()){case"ifil":case"iver":QA=`${y($.chunkData,2)}.${y($.chunkData,2)}`;break;case"icmt":QA=V($.chunkData,$.chunkData.length,void 0,!1);break;default:QA=V($.chunkData,$.chunkData.length)}m(`%c"${$.header}": %c"${QA}"`,a.info,a.recognized),this.soundFontInfo[$.header]=QA}let i=O(this.dataArray,!1);this.verifyHeader(i,"list"),this.verifyText(V(this.dataArray,4),"sdta"),m("%cVerifying smpl chunk...",a.warn);let h=O(this.dataArray,!1);this.verifyHeader(h,"smpl");let c;if(o){m("%cSF2Pack detected, attempting to decode the smpl chunk...",a.info);try{c=vA.decode(this.dataArray.buffer.slice(this.dataArray.currentIndex,this.dataArray.currentIndex+i.size-12)).data[0]}catch($){throw X(),new Error(`SF2Pack Ogg Vorbis decode error: ${$}`)}m(`%cDecoded the smpl chunk! Length: %c${c.length}`,a.info,a.value)}else c=this.dataArray,this.sampleDataStartIndex=this.dataArray.currentIndex;m(`%cSkipping sample chunk, length: %c${i.size-12}`,a.info,a.value),this.dataArray.currentIndex+=i.size-12,m("%cLoading preset data chunk...",a.warn);let f=O(this.dataArray);this.verifyHeader(f,"list"),V(f.chunkData,4);let Q=O(f.chunkData);this.verifyHeader(Q,"phdr");let l=O(f.chunkData);this.verifyHeader(l,"pbag");let d=O(f.chunkData);this.verifyHeader(d,"pmod");let S=O(f.chunkData);this.verifyHeader(S,"pgen");let D=O(f.chunkData);this.verifyHeader(D,"inst");let k=O(f.chunkData);this.verifyHeader(k,"ibag");let x=O(f.chunkData);this.verifyHeader(x,"imod");let M=O(f.chunkData);this.verifyHeader(M,"igen");let N=O(f.chunkData);this.verifyHeader(N,"shdr"),this.dataArray.currentIndex=this.sampleDataStartIndex,this.samples.push(...zn(N,c,!o));let Z=Qt(M),T=ft(x),r=$n(k,Z,T,this.samples);this.instruments=jn(D,r);let sA=Qt(S),K=ft(d),z=Ao(l,sA,K,this.instruments);this.presets.push(...eo(Q,z)),this.presets.sort(($,QA)=>$.program-QA.program+($.bank-QA.bank)),m(`%cParsing finished! %c"${this.soundFontInfo.INAM}"%c has %c${this.presets.length} %cpresets,
|