xsound 4.3.0 → 4.3.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.
Files changed (30) hide show
  1. package/README.md +1 -0
  2. package/build/types/src/AudioModule/index.d.ts +2 -0
  3. package/build/types/src/AudioModule/index.d.ts.map +1 -1
  4. package/build/types/src/MediaModule/index.d.ts +2 -0
  5. package/build/types/src/MediaModule/index.d.ts.map +1 -1
  6. package/build/types/src/MixerModule/index.d.ts +2 -0
  7. package/build/types/src/MixerModule/index.d.ts.map +1 -1
  8. package/build/types/src/NoiseModule/index.d.ts +2 -0
  9. package/build/types/src/NoiseModule/index.d.ts.map +1 -1
  10. package/build/types/src/OneshotModule/index.d.ts +2 -0
  11. package/build/types/src/OneshotModule/index.d.ts.map +1 -1
  12. package/build/types/src/OscillatorModule/index.d.ts +2 -0
  13. package/build/types/src/OscillatorModule/index.d.ts.map +1 -1
  14. package/build/types/src/ProcessorModule/index.d.ts +2 -0
  15. package/build/types/src/ProcessorModule/index.d.ts.map +1 -1
  16. package/build/types/src/SoundModule/Effectors/Harmonizer.d.ts +55 -0
  17. package/build/types/src/SoundModule/Effectors/Harmonizer.d.ts.map +1 -0
  18. package/build/types/src/SoundModule/index.d.ts +6 -2
  19. package/build/types/src/SoundModule/index.d.ts.map +1 -1
  20. package/build/types/src/StreamModule/index.d.ts +2 -0
  21. package/build/types/src/StreamModule/index.d.ts.map +1 -1
  22. package/build/types/src/main.d.ts +4 -1
  23. package/build/types/src/main.d.ts.map +1 -1
  24. package/build/xsound.js +1 -1
  25. package/build/xsound.js.LICENSE.txt +1 -1
  26. package/build/xsound.js.map +1 -1
  27. package/build/xsound.min.js +1 -1
  28. package/build/xsound.min.js.LICENSE.txt +1 -1
  29. package/build/xsound.min.js.map +1 -1
  30. package/package.json +10 -10
package/build/xsound.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see xsound.js.LICENSE.txt */
2
- !function(A,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.xsound=t():A.xsound=t()}(self,(()=>(()=>{"use strict";var A={d:(t,e)=>{for(var s in e)A.o(e,s)&&!A.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},o:(A,t)=>Object.prototype.hasOwnProperty.call(A,t),r:A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})}},t={};A.r(t),A.d(t,{X:()=>MA,XSound:()=>MA});class AudioWorkletProcessor{port=new MessagePort;constructor(A){}}class OverlapAddProcessor extends AudioWorkletProcessor{static RENDER_QUANTUM_SIZE=128;frameSize=2048;hopSize=128;numberOfOverlaps;inputBuffers=[[]];inputBuffersHead=[[]];inputBuffersToSend=[[]];outputBuffers=[[]];outputBuffersToRetrieve=[[]];constructor(A){super(A),A.processorOptions&&(this.frameSize=A.processorOptions.frameSize??2048),this.numberOfOverlaps=this.frameSize/this.hopSize,this.allocateInputChannels(1),this.allocateOutputChannels(1)}process(A,t,e){return this.reallocateChannelsIfNeeded(A,t),this.readInputs(A),this.shiftInputBuffers(),this.prepareInputBuffersToSend(),this.processOverlapAdd(this.inputBuffersToSend,this.outputBuffersToRetrieve,e),this.handleOutputBuffersToRetrieve(),this.writeOutputs(t),this.shiftOutputBuffers(),!0}reallocateChannelsIfNeeded(A,t){const e=A[0].length;e!==this.inputBuffers[0].length&&this.allocateInputChannels(e);const s=t[0].length;s!==this.outputBuffers[0].length&&this.allocateOutputChannels(s)}allocateInputChannels(A){this.inputBuffers=[[]];for(let t=0;t<A;t++)this.inputBuffers[0][t]=new Float32Array(this.frameSize+OverlapAddProcessor.RENDER_QUANTUM_SIZE);this.inputBuffersHead=[[]],this.inputBuffersToSend=[[]];for(let t=0;t<A;t++)this.inputBuffersHead[0][t]=this.inputBuffers[0][t].subarray(0,this.frameSize),this.inputBuffersToSend[0][t]=new Float32Array(this.frameSize)}allocateOutputChannels(A){this.outputBuffers=[[]];for(let t=0;t<A;t++)this.outputBuffers[0][t]=new Float32Array(this.frameSize);this.outputBuffersToRetrieve=[[]];for(let t=0;t<A;t++)this.outputBuffersToRetrieve[0][t]=new Float32Array(this.frameSize)}readInputs(A){if(A[0].length&&0===A[0][0].length)for(let A=0;A<this.inputBuffers[0].length;A++)this.inputBuffers[0][A].fill(0,this.frameSize);else for(let t=0;t<this.inputBuffers[0].length;t++)this.inputBuffers[0][t].set(A[0][t],this.frameSize)}writeOutputs(A){for(let t=0;t<this.inputBuffers[0].length;t++)A[0][t].set(this.outputBuffers[0][t].subarray(0,OverlapAddProcessor.RENDER_QUANTUM_SIZE))}shiftInputBuffers(){for(let A=0;A<this.inputBuffers[0].length;A++)this.inputBuffers[0][A].copyWithin(0,OverlapAddProcessor.RENDER_QUANTUM_SIZE)}shiftOutputBuffers(){for(let A=0;A<this.outputBuffers[0].length;A++)this.outputBuffers[0][A].copyWithin(0,OverlapAddProcessor.RENDER_QUANTUM_SIZE),this.outputBuffers[0][A].subarray(this.frameSize-OverlapAddProcessor.RENDER_QUANTUM_SIZE).fill(0)}prepareInputBuffersToSend(){for(let A=0;A<this.inputBuffers[0].length;A++)this.inputBuffersToSend[0][A].set(this.inputBuffersHead[0][A])}handleOutputBuffersToRetrieve(){for(let A=0;A<this.outputBuffers[0].length;A++)for(let t=0;t<this.frameSize;t++)this.outputBuffers[0][A][t]+=this.outputBuffersToRetrieve[0][A][t]/this.numberOfOverlaps}}function e(A,t,e){return A.audioWorklet.addModule(function(A){return`data:text/javascript,${encodeURIComponent(OverlapAddProcessor.toString())}; ${encodeURIComponent(A.toString())}; registerProcessor('${A.name}', ${A.name})`}(t),e)}class SoundModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class s{static XMLNS="http://www.w3.org/2000/svg";static XLINK="http://www.w3.org/1999/xlink";static SVG_LINEAR_GRADIENT_ID_TIME_OVERVIEW="svg-linear-gradient-time-overview";static SVG_LINEAR_GRADIENT_ID_TIME="svg-linear-gradient-time";static SVG_LINEAR_GRADIENT_ID_FFT="svg-linear-gradient-fft";sampleRate;channel;analyser=null;isActive=!1;graphics="";canvas=null;context=null;svg=null;interval=1e3;styles={shape:"line",gradients:[{offset:0,color:"rgba(0, 128, 255, 1.0)"},{offset:1,color:"rgba(0, 0, 255, 1.0)"}],wave:"rgba(0, 0, 255, 1.0)",grid:"rgba(255, 0, 0, 1.0)",text:"rgba(255, 255, 255, 1.0)",font:{family:"Arial",size:"13px",style:"normal",weight:"normal"},width:1.5,cap:"round",join:"miter",top:15,right:30,bottom:15,left:30};constructor(A,t,e=null){this.sampleRate=A,this.channel=t,this.analyser=e}setup(A){return A instanceof HTMLCanvasElement?(this.graphics="canvas",this.canvas=A,this.context=this.canvas.getContext("2d")):A instanceof SVGSVGElement&&(this.graphics="svg",this.svg=A),this}connect(A){return null===this.analyser?this:A instanceof AudioNode?void A.connect(this.analyser):(A.OUTPUT.connect(this.analyser),this)}start(A,t,e){switch(this.graphics){case"canvas":this.renderCanvas(A,t,e);break;case"svg":this.renderSVG(A,t,e)}return this}param(A){if("string"==typeof A)switch(A){case"interval":return this.interval;case"styles":return this.styles}for(const[t,e]of Object.entries(A))switch(t){case"interval":"number"==typeof e&&(this.interval=e);break;case"styles":"object"==typeof e&&(this.styles={...this.styles,...e})}}get(){switch(this.graphics){case"canvas":return this.canvas;case"svg":return this.svg;default:return null}}clear(){switch(this.graphics){case"canvas":this.canvas&&this.context&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height);break;case"svg":this.svg&&(this.svg.innerHTML="")}return this}create(A,t){switch(this.graphics){case"canvas":if(null===this.canvas)return"";if("string"==typeof A&&/^image\/.+$/.test(A))return this.canvas.toDataURL(A);if(t){const{callback:A,type:e,quality:s}=t;return this.canvas.toBlob(A,e,s)}return this.canvas.toDataURL("image/png").replace("image/png","image/octet-stream");case"svg":return null===this.svg?"":this.svg.outerHTML;default:return""}}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}renderTimeDomainFloat32ArrayCanvas(A,t,e,s,i,r){const a=this.styles.top??15,n=this.styles.left??30,g=this.styles.width??1.5,o=this.styles.cap??"round",I=this.styles.join??"miter",h=this.styles.wave??"rgba(0, 0, 255, 1.0)";switch(this.styles.shape){case"line":A.strokeStyle=h,A.lineWidth=g,A.lineCap=o,A.lineJoin=I,A.beginPath();for(let i=0,g=t.length;i<g;i++)if(!r||i%r==0){const r=i/g*e+n,o=(1-t[i])*(s/2)+a;0===i?A.moveTo(r+A.lineWidth/2,o):A.lineTo(r,o)}A.stroke();break;case"rect":for(let o=0,I=t.length;o<I;o++)if(!r||o%r==0){const r=o/I*e+n,c=t[o]*(s/2)*-1;if(this.styles.gradients){const t=s/2+a,e=A.createLinearGradient(0,t,0,t+c);for(const A of this.styles.gradients)e.addColorStop(A.offset,A.color);A.fillStyle=e}else A.fillStyle=h;A.fillRect(r,i,g,c)}}}renderTimeDomainFloat32ArraySVG(A,t,e,i,r,a){const n=this.styles.top??15,g=this.styles.left??30,o=this.styles.width??1.5,I=this.styles.cap??"round",h=this.styles.join??"miter",c=this.styles.wave??"rgba(0, 0, 255, 1.0)";switch(this.styles.shape){case"line":{const i=document.createElementNS(s.XMLNS,"path");let a="";for(let s=0,i=A.length;s<i;s++)if(s%r==0){const r=s/i*t+g,o=(1-A[s])*(e/2)+n;a+=0===s?`M${r+(this.styles.width??1.5)/2} ${o}`:` L${r} ${o}`}return i.setAttribute("d",a),i.setAttribute("stroke",c),i.setAttribute("fill","none"),i.setAttribute("stroke-width",o.toString(10)),i.setAttribute("stroke-linecap",I),i.setAttribute("stroke-linejoin",h),i}case"rect":{let n=null;this.styles.gradients&&(n=this.createSVGLinearGradient(a));const I=document.createElementNS(s.XMLNS,"g");null!==n&&I.appendChild(n);for(let h=0,C=A.length;h<C;h++)if(h%r==0){const r=document.createElementNS(s.XMLNS,"rect"),Q=h/C*t+g,B=A[h]*(e/2);r.setAttribute("x",Q.toString(10)),r.setAttribute("y",i.toString(10)),r.setAttribute("width",o.toString(10)),r.setAttribute("height",Math.abs(B).toString(10)),B>=0&&r.setAttribute("transform",`rotate(180 ${Q+o/2} ${i})`),r.setAttribute("stroke","none"),r.setAttribute("fill",null===n?c:`url(#${a})`),I.appendChild(r)}return I}default:return null}}createSVGLinearGradient(A){if(!this.styles.gradients)return null;const t=document.createElementNS(s.XMLNS,"defs"),e=document.createElementNS(s.XMLNS,"linearGradient");e.setAttribute("id",A),e.setAttribute("x1","0%"),e.setAttribute("y1","0%"),e.setAttribute("x2","0%"),e.setAttribute("y2","100%");for(const A of this.styles.gradients){const t=document.createElementNS(s.XMLNS,"stop");t.setAttribute("offset",A.offset.toString(10)),t.setAttribute("stop-color",A.color),e.appendChild(t)}return t.appendChild(e),t}createFontString(){const{style:A,weight:t,size:e,family:s}=this.styles.font??{};return`${A??"normal"} ${t??"normal"} ${e??"13px"} "${s??"Arial"}"`}}const i="xsound-svg-current-time",r="xsound-svg-sprite";class a extends s{callback=()=>{};currentImageData=null;currentSVGElement=null;currentDataSize=0;currentTime={width:1,color:"rgba(0, 0, 0, 0.5)"};sprite="rgba(255, 255, 255, 0.25)";plotInterval=.0625;textInterval=60;isDown=!1;mode="update";offsetX=0;startTime=0;endTime=0;constructor(A,t){super(A,t),this.onMouseStart=this.onMouseStart.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onTouchStart=this.onTouchStart.bind(this),this.onTouchMove=this.onTouchMove.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this)}param(A){if("string"==typeof A)switch(A){case"currentTime":return this.currentTime;case"sprite":return this.sprite;case"plotInterval":return this.plotInterval;case"textInterval":return this.textInterval;case"mode":return this.mode;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"currentTime":"object"==typeof e&&(this.currentTime={...this.currentTime,...e});break;case"sprite":"string"==typeof e&&(this.sprite=e);break;case"plotInterval":"number"==typeof e&&(this.plotInterval=e);break;case"textInterval":"number"==typeof e&&(this.textInterval=e);break;case"mode":"string"==typeof e&&("update"!==e&&"sprite"!==e||(this.mode=e))}return super.param(A),this}update(A){switch(this.graphics){case"canvas":{if(null===this.currentImageData)return this;if(null===this.canvas||null===this.context)return this;const t=this.context,e=this.canvas.width,s=this.canvas.height,i=e-((this.styles.left??30)+(this.styles.right??30)),r=s-((this.styles.top??15)+(this.styles.bottom??15)),a=A*this.sampleRate/this.currentDataSize*i,n=this.styles.left??30,g=this.styles.top??15,o=this.currentTime.color??"rgba(0, 0, 0, 0.5)";switch(t.clearRect(0,0,e,s),t.putImageData(this.currentImageData,0,0),this.mode){case"update":t.fillStyle=o,t.fillRect(n,g+1,a,r-1);break;case"sprite":if(0!==this.endTime){const A=Math.abs(this.endTime-this.startTime)*this.sampleRate/this.currentDataSize*i;t.fillStyle=this.sprite,a>=this.offsetX?t.fillRect(n+this.offsetX,g+1,A,r-1):t.fillRect(n+this.offsetX-A,g+1,A,r-1)}t.fillStyle=o,a>=this.offsetX?t.fillRect(n+this.offsetX,g+1,Math.abs(a-this.offsetX),r-1):t.fillRect(n+a,g+1,Math.abs(a-this.offsetX),r-1)}break}case"svg":if(null===this.currentSVGElement)return this;if(this.svg){const t=this.svg.querySelector(`.${i}`);if(null===t)return this;const e=Number(this.svg.getAttribute("width")??"0"),s=this.styles.top??15,n=this.styles.left??30,g=e-(n+(this.styles.right??30)),o=A*this.sampleRate/this.currentDataSize*g;if("update"===this.mode){const A=this.svg.querySelector(`.${r}`);A&&A.parentNode?.removeChild(A),t.setAttribute("x",n.toString(10)),t.setAttribute("width",o.toString(10)),t.setAttribute("aria-label","current time")}else if("sprite"===this.mode){if(0!==this.endTime){const A=this.svg.querySelector(`.${r}`);A&&A.parentNode?.removeChild(A);const e=document.createElementNS(a.XMLNS,"rect");e.classList.add(r);const i=Math.abs(this.endTime-this.startTime)*this.sampleRate/this.currentDataSize*g;e.setAttribute("y",(s+1).toString(10)),e.setAttribute("height",t.getAttribute("height")??"0"),e.setAttribute("stroke","none"),e.setAttribute("fill",this.sprite),e.setAttribute("aria-label","current time"),o>=this.offsetX?e.setAttribute("x",(n+this.offsetX).toString(10)):e.setAttribute("x",(n+this.offsetX-i).toString(10)),e.setAttribute("width",i.toString(10)),this.svg.appendChild(e),this.svg.appendChild(t)}o>=this.offsetX?t.setAttribute("x",(n+this.offsetX).toString(10)):t.setAttribute("x",(n+o).toString(10)),t.setAttribute("width",Math.abs(o-this.offsetX).toString(10)),t.setAttribute("aria-label","sprite time")}}}return this}drag(A){let t=null;switch(this.graphics){case"canvas":if(null===this.canvas)return this;t=this.canvas;break;case"svg":if(null===this.svg)return this;t=this.svg}return null===t||(A&&(this.callback=A),t.removeEventListener("mousedown",{handleEvent:this.onMouseStart},!1),t.removeEventListener("mousemove",{handleEvent:this.onMouseMove},!1),window.removeEventListener("mouseup",{handleEvent:this.onMouseUp},!1),t.removeEventListener("touchstart",{handleEvent:this.onTouchStart},!1),t.removeEventListener("touchmove",{handleEvent:this.onTouchMove},!1),window.removeEventListener("touchend",{handleEvent:this.onTouchEnd},!1),t.addEventListener("mousedown",{handleEvent:this.onMouseStart},!1),t.addEventListener("mousemove",{handleEvent:this.onMouseMove},!1),window.addEventListener("mouseup",{handleEvent:this.onMouseUp},!1),t.addEventListener("touchstart",{handleEvent:this.onTouchStart},!1),t.addEventListener("touchmove",{handleEvent:this.onTouchMove},!1),window.addEventListener("touchend",{handleEvent:this.onTouchEnd},!1)),this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context||!this.isActive||A instanceof Uint8Array)return;const s=this.context,i=this.canvas.width,r=this.canvas.height,a=this.styles.top??15,n=this.styles.bottom??15,g=this.styles.left??30,o=i-(g+(this.styles.right??30)),I=r-(a+n),h=I/2+a,c=this.styles.grid??"none",C=this.styles.text??"none",Q=parseInt(this.styles.font?.size??"13px",10),B=Math.trunc(this.plotInterval*this.sampleRate),l=Math.trunc(this.textInterval*this.sampleRate);if(s.clearRect(0,0,i,r),this.renderTimeDomainFloat32ArrayCanvas(s,A,o,I,h,B),"none"!==c||"none"!==C){for(let t=0,e=A.length;t<e;t++)if(t%l==0){const A=t/e*o+g,i=`${Math.trunc(t/this.sampleRate/60)} min`;"none"!==c&&(s.fillStyle=c,s.fillRect(A,a,1,I)),"none"!==C&&(s.fillStyle=C,s.font=this.createFontString(),s.fillText(i,A-s.measureText(i).width/2,a+I+Q))}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=g-s.measureText(A).width,e=(1-Number(A.trim()))*(I/2)+a;"none"!==c&&(s.fillStyle=c,s.fillRect(g,e,o,1)),"none"!==C&&(s.fillStyle=C,s.font=this.createFontString(),s.fillText(A,t,e-Q/4))}}this.currentImageData=s.getImageData(0,0,i,r),this.currentDataSize=A.length,s.fillStyle=this.currentTime.color??"rgba(0, 0, 0, 0.5)",s.fillRect(g,a,1,I)}renderSVG(A,t,e){if(null===this.svg||!this.isActive||A instanceof Uint8Array)return;const s=this.svg,r=Number(s.getAttribute("width")??"0"),n=Number(s.getAttribute("height")??"0"),g=this.styles.top??15,o=this.styles.bottom??15,I=this.styles.left??30,h=r-(I+(this.styles.right??30)),c=n-(g+o),C=c/2+g,Q=this.styles.grid??"none",B=this.styles.text??"none",l=parseInt(this.styles.font?.size??"13px",10),u=Math.trunc(this.plotInterval*this.sampleRate),E=Math.trunc(this.textInterval*this.sampleRate);s.innerHTML="";const p=this.renderTimeDomainFloat32ArraySVG(A,h,c,C,u,`${a.SVG_LINEAR_GRADIENT_ID_TIME_OVERVIEW}-${this.channel}`);if(p&&s.appendChild(p),"none"!==Q||"none"!==B){for(let t=0,e=A.length;t<e;t++)if(t%E==0){const A=t/e*h+I,i=`${Math.trunc(t/this.sampleRate/60)} min`;if("none"!==Q){const t=document.createElementNS(a.XMLNS,"rect");t.setAttribute("x",A.toString(10)),t.setAttribute("y",g.toString(10)),t.setAttribute("width","1"),t.setAttribute("height",c.toString(10)),t.setAttribute("stroke","none"),t.setAttribute("fill",Q),s.appendChild(t)}if("none"!==B){const t=document.createElementNS(a.XMLNS,"text");t.textContent=i,t.setAttribute("x",A.toString(10)),t.setAttribute("y",(g+c+l).toString(10)),t.setAttribute("text-anchor","middle"),t.setAttribute("stroke","none"),t.setAttribute("fill",B),t.setAttribute("font-family",this.styles.font?.family??"Arial"),t.setAttribute("font-size",l.toString(10)),t.setAttribute("font-style",this.styles.font?.style??"normal"),t.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(t)}}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=I,e=(1-Number(A.trim()))*(c/2)+g;if("none"!==Q){const A=document.createElementNS(a.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",e.toString(10)),A.setAttribute("width",h.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",Q),s.appendChild(A)}if("none"!==B){const i=document.createElementNS(a.XMLNS,"text");i.textContent=A,i.setAttribute("x",t.toString(10)),i.setAttribute("y",(e-l/4).toString(10)),i.setAttribute("text-anchor","end"),i.setAttribute("stroke","none"),i.setAttribute("fill",B),i.setAttribute("font-family",this.styles.font?.family??"Arial"),i.setAttribute("font-size",l.toString(10)),i.setAttribute("font-style",this.styles.font?.style??"normal"),i.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(i)}}}const d=document.createElementNS(a.XMLNS,"rect");d.classList.add(i),d.setAttribute("y",(g+1).toString(10)),d.setAttribute("height",(c-1).toString(10)),d.setAttribute("stroke","none"),d.setAttribute("fill",this.currentTime.color??"rgba(0, 0, 0, 0.5)"),s.appendChild(d),this.currentSVGElement=s,this.currentDataSize=A.length}visualize(A,t,e){let s=0,i=0;switch(this.graphics){case"canvas":if(null===this.canvas)return;s=this.canvas.offsetLeft,i=this.canvas.width;break;case"svg":if(null===this.svg)return;s=this.svg.parentElement?.offsetLeft??0,i=Number(this.svg.getAttribute("width")??"0")}let r=e-(s+(this.styles.left??30));"canvas"===this.graphics&&this.canvas?.parentElement&&(r+=this.canvas.parentElement.scrollLeft),"svg"===this.graphics&&this.svg?.parentElement&&(r+=this.svg.parentElement.scrollLeft),i-=(this.styles.left??30)+(this.styles.right??30),r<0&&(r=0),r>i&&(r=i);const a=r/i*this.currentDataSize/this.sampleRate;"mousedown"!==t&&"touchstart"!==t||(this.offsetX=r,this.startTime=a,this.endTime=0),"mouseup"!==t&&"touchend"!==t||(this.endTime=a),this.update(a),this.startTime<=a?this.callback(A,this.startTime,a,this.mode,!0):this.startTime>a&&this.callback(A,a,this.startTime,this.mode,!1)}onMouseStart(A){"mousedown"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!0}onMouseMove(A){this.isDown&&(A.stopPropagation(),"mousemove"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)))}onMouseUp(A){this.isDown&&("mouseup"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!1)}onTouchStart(A){"touchstart"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!0}onTouchMove(A){this.isDown&&(A.stopPropagation(),A.preventDefault(),"touchmove"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)))}onTouchEnd(A){this.isDown&&("touchend"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!1)}getOffsetX(A){return A instanceof MouseEvent?A.pageX:A instanceof TouchEvent?A.touches[0].pageX:0}}class n extends s{type="uint";textInterval=.005;constructor(A,t,e){super(A,t,e)}param(A){if("string"==typeof A)switch(A){case"type":return this.type;case"textInterval":return this.textInterval;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"type":"string"==typeof e&&("uint"!==e&&"float"!==e||(this.type=e));break;case"textInterval":"number"==typeof e&&(this.textInterval=e)}return super.param(A),this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context||!this.isActive)return;const s=this.context,i=this.canvas.width,r=this.canvas.height,a=this.styles.top??15,n=this.styles.bottom??15,g=this.styles.left??30,o=i-(g+(this.styles.right??30)),I=r-(a+n),h=I/2+a,c=this.styles.width??1.5,C=this.styles.cap??"round",Q=this.styles.join??"miter",B=this.styles.wave??"rgba(0, 0, 255, 1.0)",l=this.styles.grid??"none",u=this.styles.text??"none",E=parseInt(this.styles.font?.size??"13px",10),p=Math.trunc(this.textInterval*this.sampleRate);switch(s.clearRect(0,0,i,r),this.type){case"float":A instanceof Float32Array&&this.renderTimeDomainFloat32ArrayCanvas(s,A,o,I,h);break;case"uint":switch(this.styles.shape){case"line":s.strokeStyle=B,s.lineWidth=c,s.lineCap=C,s.lineJoin=Q,s.beginPath();for(let t=0,e=A.length;t<e;t++){const i=t/e*o+g,r=(1-A[t]/255)*I+a;0===t?s.moveTo(i+c/2,r):s.lineTo(i,r)}s.stroke();break;case"rect":for(let t=0,e=A.length;t<e;t++){const i=t/e*o+g,r=(.5-A[t]/255)*I;if(this.styles.gradients){const A=I/2+a,t=s.createLinearGradient(0,A,0,A+r);for(const A of this.styles.gradients)t.addColorStop(A.offset,A.color);s.fillStyle=t}else s.fillStyle=B;s.fillRect(i,h,1,r)}}}if("none"!==l||"none"!==u){for(let t=0,e=A.length;t<e;t++)if(t%p==0){const A=t/e*o+g,i=`${Math.ceil(t/this.sampleRate*1e3)} ms`;"none"!==l&&(s.fillStyle=l,s.fillRect(A,a,1,I)),"none"!==u&&(s.fillStyle=u,s.font=this.createFontString(),s.fillText(i,A-s.measureText(i).width/2,a+I+E))}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=g-s.measureText(A).width,e=(1-Number(A.trim()))*(I/2)+a;"none"!==l&&(s.fillStyle=l,s.fillRect(g,e,o,1)),"none"!==u&&(s.fillStyle=u,s.font=this.createFontString(),s.fillText(A,t,e-E/4))}}}renderSVG(A,t,e){if(null===this.svg||!this.isActive)return;const s=this.svg,i=Number(s.getAttribute("width")??"0"),r=Number(s.getAttribute("height")??"0"),a=this.styles.top??15,g=this.styles.bottom??15,o=this.styles.left??30,I=i-(o+(this.styles.right??30)),h=r-(a+g),c=h/2+a,C=this.styles.width??1.5,Q=this.styles.cap??"round",B=this.styles.join??"miter",l=this.styles.wave??"rgba(0, 0, 255, 1.0)",u=this.styles.grid??"none",E=this.styles.text??"none",p=parseInt(this.styles.font?.size??"13px",10),d=Math.trunc(this.textInterval*this.sampleRate);switch(s.innerHTML="",this.type){case"float":if(A instanceof Float32Array){const t=this.renderTimeDomainFloat32ArraySVG(A,I,h,c,0,n.SVG_LINEAR_GRADIENT_ID_TIME);null!==t&&s.appendChild(t)}break;case"uint":switch(this.styles.shape){case"line":{const t=document.createElementNS(n.XMLNS,"path");let e="";for(let t=0,s=A.length;t<s;t++){const i=t/s*I+o,r=(1-A[t]/255)*h+a;e+=0===t?`M${i+C/2} ${r}`:` L${i} ${r}`}t.setAttribute("d",e),t.setAttribute("stroke",l),t.setAttribute("fill","none"),t.setAttribute("stroke-width",C.toString(10)),t.setAttribute("stroke-linecap",Q),t.setAttribute("stroke-linejoin",B),s.appendChild(t);break}case"rect":{let t=null;this.styles.gradients&&(t=this.createSVGLinearGradient(`${n.SVG_LINEAR_GRADIENT_ID_TIME}-${this.channel}`));const e=document.createElementNS(n.XMLNS,"g");null!==t&&e.appendChild(t);for(let s=0,i=A.length;s<i;s++){const r=document.createElementNS(n.XMLNS,"rect"),a=s/i*I+o,g=(A[s]/255-.5)*h;r.setAttribute("x",a.toString(10)),r.setAttribute("y",c.toString(10)),r.setAttribute("width",C.toString(10)),r.setAttribute("height",Math.abs(g).toString(10)),g>=0&&r.setAttribute("transform",`rotate(180 ${a+C/2} ${c})`),r.setAttribute("stroke","none"),r.setAttribute("fill",null===t?l:`url(#${n.SVG_LINEAR_GRADIENT_ID_TIME}-${this.channel})`),e.appendChild(r)}s.appendChild(e);break}}}if("none"!==u||"none"!==E){for(let t=0,e=A.length;t<e;t++)if(t%d==0){const A=t/e*I+o,i=`${Math.ceil(t/this.sampleRate*1e3)} ms`;if("none"!==u){const t=document.createElementNS(n.XMLNS,"rect");t.setAttribute("x",A.toString(10)),t.setAttribute("y",a.toString(10)),t.setAttribute("width","1"),t.setAttribute("height",h.toString(10)),t.setAttribute("stroke","none"),t.setAttribute("fill",u),s.appendChild(t)}if("none"!==E){const t=document.createElementNS(n.XMLNS,"text");t.textContent=i,t.setAttribute("x",A.toString(10)),t.setAttribute("y",(a+h+p).toString(10)),t.setAttribute("text-anchor","middle"),t.setAttribute("stroke","none"),t.setAttribute("fill",E),t.setAttribute("font-family",this.styles.font?.family??"Arial"),t.setAttribute("font-size",p.toString(10)),t.setAttribute("font-style",this.styles.font?.style??"normal"),t.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(t)}}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=o,e=(1-Number(A.trim()))*(h/2)+a;if("none"!==u){const A=document.createElementNS(n.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",e.toString(10)),A.setAttribute("width",I.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",u),s.appendChild(A)}if("none"!==E){const i=document.createElementNS(n.XMLNS,"text");i.textContent=A,i.setAttribute("x",t.toString(10)),i.setAttribute("y",(e-p/4).toString(10)),i.setAttribute("text-anchor","end"),i.setAttribute("stroke","none"),i.setAttribute("fill",E),i.setAttribute("font-family",this.styles.font?.family??"Arial"),i.setAttribute("font-size",p.toString(10)),i.setAttribute("font-style",this.styles.font?.style??"normal"),i.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(i)}}}}}class g extends s{type="uint";size=256;scale="linear";logarithmicFrequencies=[32,62.5,125,250,500,1e3,2e3,4e3,8e3,16e3];minFrequency=this.logarithmicFrequencies[0];maxFrequency=this.logarithmicFrequencies[this.logarithmicFrequencies.length-1];ratio=this.maxFrequency/this.minFrequency;log10Ratio=Math.log10(this.ratio);textInterval=1e3;constructor(A,t,e){super(A,t,e)}param(A){if("string"==typeof A)switch(A){case"type":return this.type;case"size":return this.size;case"scale":return this.scale;case"logarithmicFrequencies":return this.logarithmicFrequencies;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"textInterval":return this.textInterval;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"type":"string"==typeof e&&("uint"!==e&&"float"!==e||(this.type=e));break;case"size":"number"==typeof e&&(this.size=e);break;case"scale":"string"==typeof e&&("linear"!==e&&"logarithmic"!==e||(this.scale=e));break;case"logarithmicFrequencies":Array.isArray(e)&&(this.logarithmicFrequencies=e,this.minFrequency=e[0],this.maxFrequency=e[e.length-1],this.ratio=this.maxFrequency/this.minFrequency,this.log10Ratio=Math.log10(this.ratio));break;case"textInterval":"number"==typeof e&&(this.textInterval=e)}return super.param(A),this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context||!this.isActive)return;const s=t??-100,i=e??-30,r=i-s,a=this.context,n=this.canvas.width,g=this.canvas.height,o=this.styles.top??0,I=this.styles.bottom??0,h=this.styles.left??30,c=this.styles.right??30,C=n-(h+c),Q=g-(o+I),B=this.styles.width??1.5,l=this.styles.cap??"round",u=this.styles.join??"miter",E=this.styles.wave??"rgba(0, 0, 255, 1.0)",p=this.styles.grid??"none",d=this.styles.text??"none",f=parseInt(this.styles.font?.size??"13px",10),y=this.size>A.length?A.length:this.size,m=this.sampleRate/(2*A.length),D=Math.trunc(this.textInterval/m);switch(a.clearRect(0,0,n,g),this.type){case"float":switch(a.strokeStyle=E,a.lineWidth=B,a.lineCap=l,a.lineJoin=u,a.beginPath(),this.scale){case"linear":for(let t=0;t<y;t++){const e=t/y*C+h,s=(0-(A[t]-i))*(Q/r)+o;0===t?a.moveTo(e+B/2,s):a.lineTo(e,s)}break;case"logarithmic":for(let t=0,e=A.length;t<e;t++){if(0===t)continue;const e=t*m/this.minFrequency,s=Math.log10(e)/this.log10Ratio*C+h,n=(0-(A[t]-i))*(Q/r)+o;Number.isFinite(n)&&(s<h||s>h+C||(1===t?a.moveTo(h+B/2,n):a.lineTo(s,n)))}}a.stroke();break;case"uint":switch(this.styles.shape){case"line":a.strokeStyle=E,a.lineWidth=B,a.lineCap=l,a.lineJoin=u,a.beginPath();for(let t=0;t<y;t++){const e=t/y*C+h,s=(1-A[t]/255)*Q+o;0===t?a.moveTo(e+B/2,s):a.lineTo(e,s)}a.stroke();break;case"rect":for(let t=0;t<y;t++){const e=t/y*C+h,s=(0-A[t]/255)*Q;if(this.styles.gradients){const A=Q+o,t=a.createLinearGradient(0,A,0,A+s);for(const A of this.styles.gradients)t.addColorStop(A.offset,A.color);a.fillStyle=t}else a.fillStyle=E;a.fillRect(e,Q+o,B,s)}}}if("none"!==p||"none"!==d){switch(this.scale){case"linear":for(let A=0;A<y;A++)if(A%D==0){const t=A/y*C+h,e=A*m,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(t,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,t-a.measureText(s).width/2,o+Q+f))}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*C+h,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(e,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,e-a.measureText(s).width/2,o+Q+f))}))}switch(this.type){case"float":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=h-a.measureText(t).width,s=Q/r*(0-(A-i))+o;"none"!==p&&(a.fillStyle=p,a.fillRect(h,s,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(t,e,s))}break;case"uint":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=h-a.measureText(s).width,r=Q/t*e+o;"none"!==p&&(a.fillStyle=p,a.fillRect(h,r,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,i,r))}));break}}}}renderSVG(A,t,e){if(null===this.svg||!this.isActive)return;const s=t??-100,i=e??-30,r=i-s,a=this.svg,n=Number(a.getAttribute("width")??"0"),o=Number(a.getAttribute("height")??"0"),I=this.styles.top??0,h=this.styles.bottom??0,c=this.styles.left??30,C=this.styles.right??30,Q=n-(c+C),B=o-(I+h),l=this.styles.wave??"rgba(0, 0, 255, 1.0)",u=this.styles.width??1.5,E=this.styles.cap??"round",p=this.styles.join??"miter",d=this.styles.grid??"none",f=this.styles.text??"none",y=parseInt(this.styles.font?.size??"13px",10),m=this.size>A.length?A.length:this.size,D=this.sampleRate/(2*A.length),w=Math.trunc(this.textInterval/D);switch(a.innerHTML="",this.type){case"float":{const t=document.createElementNS(g.XMLNS,"path");let e="";switch(this.scale){case"linear":for(let t=0;t<m;t++){const s=t/m*Q+c,a=(0-(A[t]-i))*(B/r)+I;Number.isFinite(s)&&Number.isFinite(a)&&(e+=""===e?`M${s+u/2} ${a}`:` L${s} ${a}`)}break;case"logarithmic":for(let t=0;t<A.length;t++){if(0===t)continue;const s=t*D/this.minFrequency,a=Math.log10(s)/this.log10Ratio*Q+c,n=(0-(A[t]-i))*(B/r)+I;Number.isFinite(n)&&(a<c||a>c+Q||(e+=""===e?`M${a} ${n}`:` L${a} ${n}`))}}t.setAttribute("d",e),t.setAttribute("stroke",l),t.setAttribute("fill","none"),t.setAttribute("stroke-width",u.toString(10)),t.setAttribute("stroke-linecap",E),t.setAttribute("stroke-linejoin",p),a.appendChild(t);break}case"uint":switch(this.styles.shape){case"line":{const t=document.createElementNS(g.XMLNS,"path");let e="";for(let t=0;t<m;t++){const s=t/m*Q+c,i=(1-A[t]/255)*B+I;e+=0===t?`M${s+u/2} ${i}`:` L${s} ${i}`}t.setAttribute("d",e),t.setAttribute("stroke",l),t.setAttribute("fill","none"),t.setAttribute("stroke-width",u.toString(10)),t.setAttribute("stroke-linecap",E),t.setAttribute("stroke-linejoin",p),a.appendChild(t);break}case"rect":{let t=null;this.styles.gradients&&(t=this.createSVGLinearGradient(`${g.SVG_LINEAR_GRADIENT_ID_FFT}-${this.channel}`));const e=document.createElementNS(g.XMLNS,"g");null!==t&&e.appendChild(t);for(let s=0;s<m;s++){const i=document.createElementNS(g.XMLNS,"rect"),r=s/m*Q+c,a=A[s]/255*B;i.setAttribute("x",r.toString(10)),i.setAttribute("y",(I+B).toString(10)),i.setAttribute("width",u.toString(10)),i.setAttribute("height",Math.abs(a).toString(10)),a>=0&&i.setAttribute("transform",`rotate(180 ${r+u/2} ${I+B})`),i.setAttribute("stroke","none"),i.setAttribute("fill",null===t?l:`url(#${g.SVG_LINEAR_GRADIENT_ID_FFT}-${this.channel})`),e.appendChild(i)}a.appendChild(e);break}}}if("none"!==d||"none"!==f){switch(this.scale){case"linear":for(let A=0;A<m;A++)if(A%w==0){const t=A/m*Q+c,e=A*D,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",I.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(g.XMLNS,"text");A.textContent=s,A.setAttribute("x",t.toString(10)),A.setAttribute("y",(I+B+h).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*Q+c,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",I.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(g.XMLNS,"text");A.textContent=s,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(I+B+h).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}))}switch(this.type){case"float":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=c,s=B/r*(0-(A-i))+I;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",s.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==d){const A=document.createElementNS(g.XMLNS,"text");A.textContent=t,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(s-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}break;case"uint":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=c,r=B/t*e+I;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",i.toString(10)),A.setAttribute("y",r.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(g.XMLNS,"text");A.textContent=s,A.setAttribute("x",i.toString(10)),A.setAttribute("y",(r-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}));break}}}}}class o extends s{type="uint";scale="logarithmic";duration=10;plotInterval=4;linearFrequencyTextInterval=8;timeTextInterval=16;timeOffset=1;numberOfSamples=0;renderSize=64;logarithmicFrequencies=[32,62.5,125,250,500,1e3,2e3,4e3,8e3,16e3];minFrequency=this.logarithmicFrequencies[0];maxFrequency=this.logarithmicFrequencies[this.logarithmicFrequencies.length-1];ratio=this.maxFrequency/this.minFrequency;imagedata=null;colorFromNumber=null;static numberToJetColor(A,t,e,s){switch(t){case"uint":{const t=A/255*4;return`rgb(${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-1.5,0-t+4.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-.5,0-t+3.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t+.5,0-t+2.5))))})`}case"float":if("number"==typeof e&&"number"==typeof s){const t=1/(e-s)*Math.max(0,A-s)*4;return`rgb(${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-1.5,0-t+4.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-.5,0-t+3.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t+.5,0-t+2.5))))})`}return"rgb(0 0 0)"}}constructor(A,t,e){super(A,t,e),this.interval=40}param(A){if("string"==typeof A)switch(A){case"type":return this.type;case"size":return this.renderSize;case"scale":return this.scale;case"duration":return this.duration;case"plotInterval":return this.plotInterval;case"linearFrequencyTextInterval":return this.linearFrequencyTextInterval;case"timeTextInterval":return this.timeTextInterval;case"logarithmicFrequencies":return this.logarithmicFrequencies;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"type":"string"==typeof e&&("uint"!==e&&"float"!==e||(this.type=e));break;case"size":"number"==typeof e&&(this.renderSize=e);break;case"scale":"string"==typeof e&&("linear"!==e&&"logarithmic"!==e||(this.scale=e));break;case"duration":"number"==typeof e&&e>0&&(this.duration=e);break;case"plotInterval":"number"==typeof e&&(this.plotInterval=e);break;case"linearFrequencyTextInterval":"number"==typeof e&&e>0&&(this.linearFrequencyTextInterval=e);break;case"timeTextInterval":"number"==typeof e&&e>0&&(this.timeTextInterval=e);break;case"logarithmicFrequencies":Array.isArray(e)&&(this.logarithmicFrequencies=e,this.minFrequency=e[0],this.maxFrequency=e[e.length-1],this.ratio=this.maxFrequency/this.minFrequency)}return super.param(A),this}setColorFromNumberFunction(A){return this.colorFromNumber=A,this}renderCanvas(A){if(null===this.canvas||null===this.context||!this.isActive)return;const t=this.context,e=this.canvas.width,s=this.canvas.height,i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),I=s-(i+r),h=this.styles.grid??"none",c=this.styles.text??"none",C=A.length,Q=2*C,B=this.sampleRate/Q,l=this.duration*this.sampleRate;if(this.numberOfSamples>=l&&(this.imagedata=null,this.timeOffset=1,this.numberOfSamples=0),null===this.imagedata){t.clearRect(0,0,e,s),t.fillStyle=h,t.fillRect(a,i+I,g,2),t.fillRect(a,i,2,I),t.fillStyle=c,t.font=this.createFontString(),t.textAlign="start";const A=l/this.timeTextInterval;for(let e=0;e<l;e++){if(e%A!=0)continue;const s=e*(g/l)+a,r=i+I+Number.parseInt(this.styles.font?.size??"13",10),n=e/l*this.duration;0!==n&&n<1e-4?t.fillText(`${(1e3*n).toFixed(1)} msec`,s,r):t.fillText(`${n.toFixed(2)} sec`,s,r)}switch(t.textAlign="end",this.scale){case"linear":{const A=Math.min(C,this.renderSize);for(let e=0;e<=A;e++){if(e%this.linearFrequencyTextInterval!=0)continue;const s=a,r=(1-e/A)*I+i,n=e*B;t.fillText(`${Math.trunc(n)} Hz`,s,r)}break}case"logarithmic":this.logarithmicFrequencies.forEach(((A,e)=>{const s=a,r=(1-e/this.logarithmicFrequencies.length)*I+i;A>=1e3?t.fillText(`${Math.trunc(A/1e3)} kHz`,s,r):t.fillText(`${A} Hz`,s,r)}))}}else t.putImageData(this.imagedata,0,0);switch(this.scale){case"linear":{const e=Math.min(C,this.renderSize),s=Number.parseInt(this.styles.font?.size??"13",10);for(let r=0;r<e;r++){const n=r*B;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=a+this.timeOffset,h=(1-r/e)*I+i;if(null===this.colorFromNumber){const e=o.numberToJetColor(A[r],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);t.fillStyle=e,t.fillRect(g,h-s,1,s)}else{const e=this.colorFromNumber(A[r]);t.fillStyle=e,t.fillRect(g,h-s,1,s)}}break}case"logarithmic":{const e=Math.log10(this.ratio),s=I/(this.logarithmicFrequencies.length-1);for(let r=0;r<C;r++){if(0===r)continue;if(1!==r&&r%this.plotInterval!=0)continue;const n=r*B;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=n/this.minFrequency,h=Math.log10(g),c=a+this.timeOffset,C=(1-h/e)*I+i;if(!(C<i))if(null===this.colorFromNumber){const e=o.numberToJetColor(A[r],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);t.fillStyle=e,t.fillRect(c,C>i+I-s?i+I-s:C,1,s)}else{const e=this.colorFromNumber(A[r]);t.fillStyle=e,t.fillRect(c,C>i+I-s?i+I-s:C,1,s)}}break}}t.fillStyle=c,t.font=this.createFontString(),t.textAlign="center",this.numberOfSamples+=C,this.timeOffset=this.numberOfSamples*(1/this.sampleRate)*(g/this.duration),this.imagedata=t.getImageData(0,0,e,s)}renderSVG(A){if(null===this.svg||!this.isActive)return;const t=this.svg,e=Number(t.getAttribute("width")??"0"),s=Number(t.getAttribute("height")??"0"),i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),I=s-(i+r),h=this.styles.grid??"none",c=this.styles.text??"none",C=Number.parseInt(this.styles.font?.size??"13px",10),Q=A.length,B=2*Q,l=this.sampleRate/B,u=this.duration*this.sampleRate;if(this.numberOfSamples>=u&&(t.innerHTML="",this.timeOffset=1,this.numberOfSamples=0),0===t.innerHTML.length){const A=document.createElementNS(o.XMLNS,"rect");A.setAttribute("x",a.toString(10)),A.setAttribute("y",(i+I).toString(10)),A.setAttribute("width",g.toString(10)),A.setAttribute("height","2"),A.setAttribute("fill",h),A.setAttribute("stroke","none");const e=document.createElementNS(o.XMLNS,"rect");e.setAttribute("x",a.toString(10)),e.setAttribute("y",i.toString(10)),e.setAttribute("width","2"),e.setAttribute("height",I.toString(10)),e.setAttribute("fill",h),e.setAttribute("stroke","none"),t.appendChild(A),t.appendChild(e);const s=document.createElementNS(o.XMLNS,"g"),r=u/this.timeTextInterval;for(let A=0;A<u;A++){if(A%r!=0)continue;const t=A*(g/u)+a,e=i+I+C,n=document.createElementNS(o.XMLNS,"text"),h=A/u*this.duration;n.textContent=0!==h&&h<1e-4?`${(1e3*h).toFixed(1)} msec`:`${h.toFixed(2)} sec`,n.setAttribute("x",t.toString(10)),n.setAttribute("y",e.toString(10)),n.setAttribute("text-anchor","start"),n.setAttribute("stroke","none"),n.setAttribute("fill",c),n.setAttribute("font-size",C.toString(10)),s.appendChild(n)}switch(t.appendChild(s),this.scale){case"linear":{const A=Math.min(Q,this.renderSize),e=document.createElementNS(o.XMLNS,"g");for(let t=0;t<=A;t++){if(t%this.linearFrequencyTextInterval!=0)continue;const s=a,r=(1-t/A)*I+i,n=t*l,g=document.createElementNS(o.XMLNS,"text");g.textContent=`${Math.trunc(n)} Hz`,g.setAttribute("x",s.toString(10)),g.setAttribute("y",r.toString(10)),g.setAttribute("text-anchor","end"),g.setAttribute("stroke","none"),g.setAttribute("fill",c),g.setAttribute("font-size",C.toString(10)),e.appendChild(g)}t.appendChild(e);break}case"logarithmic":{const A=document.createElementNS(o.XMLNS,"g");this.logarithmicFrequencies.forEach(((t,e)=>{const s=a,r=(1-e/this.logarithmicFrequencies.length)*I+i,n=document.createElementNS(o.XMLNS,"text");n.textContent=t>=1e3?`${Math.trunc(t/1e3)} kHz`:`${t} Hz`,n.setAttribute("x",s.toString(10)),n.setAttribute("y",r.toString(10)),n.setAttribute("text-anchor","end"),n.setAttribute("stroke","none"),n.setAttribute("fill",c),n.setAttribute("font-size",C.toString(10)),A.appendChild(n)})),t.appendChild(A);break}}}switch(this.scale){case"linear":{const e=Math.min(Q,this.renderSize),s=Number.parseInt(this.styles.font?.size??"13",10),r=document.createElementNS(o.XMLNS,"g");for(let t=0;t<e;t++){const n=t*l;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=a+this.timeOffset,h=(1-t/e)*I+i,c=document.createElementNS(o.XMLNS,"rect");if(null===this.colorFromNumber){const e=o.numberToJetColor(A[t],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);c.setAttribute("fill",e)}else{const e=this.colorFromNumber(A[t]);c.setAttribute("fill",e)}c.setAttribute("x",g.toString(10)),c.setAttribute("y",(h-s).toString(10)),c.setAttribute("width",this.styles.width?this.styles.width.toString(10):"1"),c.setAttribute("height",s.toString(10)),c.setAttribute("stroke","none"),r.appendChild(c)}t.appendChild(r);break}case"logarithmic":{const e=document.createElementNS(o.XMLNS,"g"),s=Math.log10(this.ratio),r=I/(this.logarithmicFrequencies.length-1);for(let t=0;t<Q;t++){if(0===t)continue;if(1!==t&&t%this.plotInterval!=0)continue;const n=t*l;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=n/this.minFrequency,h=Math.log10(g),c=a+this.timeOffset,C=(1-h/s)*I+i;if(C<i)continue;const Q=document.createElementNS(o.XMLNS,"rect");if(null===this.colorFromNumber){const e=o.numberToJetColor(A[t],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);Q.setAttribute("fill",e)}else{const e=this.colorFromNumber(A[t]);Q.setAttribute("fill",e)}Q.setAttribute("x",c.toString(10)),Q.setAttribute("y",(C>i+I-r?i+I-r:C).toString(10)),Q.setAttribute("width",this.styles.width?this.styles.width.toString(10):"1"),Q.setAttribute("height",r.toString(10)),Q.setAttribute("stroke","none"),e.appendChild(Q)}t.appendChild(e);break}}this.numberOfSamples+=Q,this.timeOffset=this.numberOfSamples*(1/this.sampleRate)*(g/this.duration)}}class I extends s{scale="linear";logarithmicFrequencies=[32,62.5,125,250,500,1e3,2e3,4e3,8e3,16e3];minFrequency=this.logarithmicFrequencies[0];maxFrequency=this.logarithmicFrequencies[this.logarithmicFrequencies.length-1];ratio=this.maxFrequency/this.minFrequency;log10Ratio=Math.log10(this.ratio);textInterval=1e3;constructor(A,t){super(A,t)}param(A){if("string"==typeof A)switch(A){case"scale":return this.scale;case"logarithmicFrequencies":return this.logarithmicFrequencies;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"textInterval":return this.textInterval;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"scale":"string"==typeof e&&("linear"!==e&&"logarithmic"!==e||(this.scale=e));break;case"logarithmicFrequencies":Array.isArray(e)&&(this.logarithmicFrequencies=e,this.minFrequency=e[0],this.maxFrequency=e[e.length-1],this.ratio=this.maxFrequency/this.minFrequency,this.log10Ratio=Math.log10(this.ratio));break;case"textInterval":"number"==typeof e&&(this.textInterval=e)}return super.param(A),this}}class h extends I{unit="none";renderAmplitudeTexts=null;constructor(A,t){super(A,t)}param(A){if("string"==typeof A)switch(A){case"unit":return this.unit;case"scale":return this.scale;case"logarithmicFrequencies":case"minFrequency":case"maxFrequency":case"textInterval":case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))if("unit"===t)"string"==typeof e&&("none"!==e&&"decibel"!==e||(this.unit=e));return super.param(A),this}setRenderAmplitudeTextsFunction(A){return this.renderAmplitudeTexts=A,this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context)return;const s=t??-100,i=e??-30,r=i-s,a=this.context,n=this.canvas.width,g=this.canvas.height,o=this.styles.top??0,I=this.styles.bottom??0,h=this.styles.left??30,c=this.styles.right??30,C=n-(h+c),Q=g-(o+I),B=this.styles.width??1.5,l=this.styles.cap??"round",u=this.styles.join??"miter",E=this.styles.wave??"rgba(0, 0, 255, 1.0)",p=this.styles.grid??"none",d=this.styles.text??"none",f=Number.parseInt(this.styles.font?.size??"13px",10),y=A.length,m=this.sampleRate/(2*A.length),D=Math.trunc(this.textInterval/m);switch(a.clearRect(0,0,n,g),a.strokeStyle=E,a.lineWidth=B,a.lineCap=l,a.lineJoin=u,a.beginPath(),this.scale){case"linear":for(let t=0;t<y;t++){const e=t/y*C+h,s="none"===this.unit?(1-A[t])*Q+o:(0-(A[t]-i))*(Q/r)+o;0===t?a.moveTo(e+B/2,s):a.lineTo(e,s)}break;case"logarithmic":for(let t=0;t<y;t++){if(0===t)continue;const e=t*m/this.minFrequency,s=Math.log10(e)/this.log10Ratio*C+h,n="none"===this.unit?(1-A[t])*Q+o:(0-(A[t]-i))*(Q/r)+o;Number.isFinite(n)&&(s<h||s>h+C||(1===t?a.moveTo(h+B/2,n):a.lineTo(s,n)))}}if(a.stroke(),"none"!==p||"none"!==d){switch(this.scale){case"linear":for(let A=0;A<y;A++)if(A%D==0){const t=A/y*C+h,e=A*m,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(t,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,t-a.measureText(s).width/2,o+Q+f))}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*C+h,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(e,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,e-a.measureText(s).width/2,o+Q+f))}))}if("function"==typeof this.renderAmplitudeTexts)this.renderAmplitudeTexts(A);else switch(this.unit){case"none":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=h-a.measureText(s).width,r=Q/t*e+o;"none"!==p&&(a.fillStyle=p,a.fillRect(h,r,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,i,r))}));break}case"decibel":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=h-a.measureText(t).width,s=Q/r*(0-(A-i))+o;"none"!==p&&(a.fillStyle=p,a.fillRect(h,s,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(t,e,s))}}}}renderSVG(A,t,e){if(null===this.svg)return;const s=t??-100,i=e??-30,r=i-s,a=this.svg,n=Number(a.getAttribute("width")??"0"),g=Number(a.getAttribute("height")??"0"),o=this.styles.top??0,h=this.styles.bottom??0,c=this.styles.left??30,C=this.styles.right??30,Q=n-(c+C),B=g-(o+h),l=this.styles.width??1.5,u=this.styles.cap??"round",E=this.styles.join??"miter",p=this.styles.wave??"rgba(0, 0, 255, 1.0)",d=this.styles.grid??"none",f=this.styles.text??"none",y=Number.parseInt(this.styles.font?.size??"13px",10),m=A.length,D=this.sampleRate/(2*A.length),w=Math.trunc(this.textInterval/D);a.innerHTML="";const b=document.createElementNS(I.XMLNS,"path");let F="";switch(this.scale){case"linear":for(let t=0;t<m;t++){const e=t/m*Q+c,s="none"===this.unit?(1-A[t])*B+o:0-(A[t]-i)*(B/r)+o;Number.isFinite(e)&&Number.isFinite(s)&&(F+=""===F?`M${e+l/2} ${s}`:` L${e} ${s}`)}break;case"logarithmic":for(let t=0;t<m;t++){if(0===t)continue;const e=t*D/this.minFrequency,s=Math.log10(e)/this.log10Ratio*Q+c,a="none"===this.unit?(1-A[t])*B+o:0-(A[t]-i)*(B/r)+o;Number.isFinite(a)&&(s<c||s>c+Q||(F+=""===F?`M${s} ${a}`:` L${s} ${a}`))}}if(b.setAttribute("d",F),b.setAttribute("stroke",p),b.setAttribute("fill","none"),b.setAttribute("stroke-width",l.toString(10)),b.setAttribute("stroke-linecap",u),b.setAttribute("stroke-linejoin",E),a.appendChild(b),"none"!==d||"none"!==f){switch(this.scale){case"linear":for(let A=0;A<m;A++)if(A%w==0){const t=A/m*Q+c,e=A*D,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",o.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(I.XMLNS,"text");A.textContent=s,A.setAttribute("x",t.toString(10)),A.setAttribute("y",(o+B+h).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*Q+c,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",o.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(I.XMLNS,"text");A.textContent=s,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(o+B+h).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}))}if("function"==typeof this.renderAmplitudeTexts)this.renderAmplitudeTexts(A);else switch(this.unit){case"none":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=c,r=B/t*e+o;if("none"!==d){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",i.toString(10)),A.setAttribute("y",r.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(I.XMLNS,"text");A.textContent=s,A.setAttribute("x",i.toString(10)),A.setAttribute("y",(r-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}));break}case"decibel":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=c,s=B/r*(0-(A-i))+o;if("none"!==d){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",s.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(I.XMLNS,"text");A.textContent=t,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(s-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}}}}}class c extends I{unit="radian";renderPhaseTexts=null;constructor(A,t){super(A,t)}param(A){if("string"==typeof A)switch(A){case"unit":return this.unit;case"scale":return this.scale;case"logarithmicFrequencies":case"minFrequency":case"maxFrequency":case"textInterval":case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))if("unit"===t)"string"==typeof e&&("radian"!==e&&"degree"!==e||(this.unit=e));return super.param(A),this}setRenderPhaseTextsFunction(A){return this.renderPhaseTexts=A,this}renderCanvas(A){if(null===this.canvas||null===this.context)return;const t=this.context,e=this.canvas.width,s=this.canvas.height,i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),o=s-(i+r),I=this.styles.width??1.5,h=this.styles.cap??"round",c=this.styles.join??"miter",C=this.styles.wave??"rgba(0, 0, 255, 1.0)",Q=this.styles.grid??"none",B=this.styles.text??"none",l=Number.parseInt(this.styles.font?.size??"13px",10),u=A.length,E=this.sampleRate/(2*A.length),p=Math.trunc(this.textInterval/E);switch(t.clearRect(0,0,e,s),t.strokeStyle=C,t.lineWidth=I,t.lineCap=h,t.lineJoin=c,t.beginPath(),this.scale){case"linear":for(let e=0;e<u;e++){const s=e/u*g+a,r=(1-A[e]/Math.PI)*(o/2)+i;0===e?t.moveTo(s+I/2,r):t.lineTo(s,r)}break;case"logarithmic":for(let e=0,s=A.length;e<s;e++){if(0===e)continue;const s=e*E/this.minFrequency,r=Math.log10(s)/this.log10Ratio*g+a,n=(1-A[e]/Math.PI)*(o/2)+i;Number.isFinite(n)&&(r<a||r>a+g||(1===e?t.moveTo(a+I/2,n):t.lineTo(r,n)))}}if(t.stroke(),"none"!==Q||"none"!==B){switch(this.scale){case"linear":for(let A=0;A<u;A++)if(A%p==0){const e=A/u*g+a,s=A*E,r=s<1e3?`${s} Hz`:`${(s/1e3).toString(10).slice(0,3)} kHz`;"none"!==Q&&(t.fillStyle=Q,t.fillRect(e,i,1,o)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,e-t.measureText(r).width/2,i+o+l))}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const e=A/this.minFrequency,s=Math.log10(e)/this.log10Ratio*g+a,r=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;"none"!==Q&&(t.fillStyle=Q,t.fillRect(s,i,1,o)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,s-t.measureText(r).width/2,i+o+l))}))}if("function"==typeof this.renderPhaseTexts)this.renderPhaseTexts(A);else switch(this.unit){case"radian":{const A=["π","0","-π"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A} rad`,n=a-t.measureText(r).width,I=o/e*s+i;"none"!==Q&&(t.fillStyle=Q,t.fillRect(a,I,g,1)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,n,I))}));break}case"degree":{const A=["180","0","-180"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A}°`,n=a-t.measureText(r).width,I=o/e*s+i;"none"!==Q&&(t.fillStyle=Q,t.fillRect(a,I,g,1)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,n,I))}));break}}}}renderSVG(A){if(null===this.svg)return;const t=this.svg,e=Number(t.getAttribute("width")??"0"),s=Number(t.getAttribute("height")??"0"),i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),o=s-(i+r),h=this.styles.width??1.5,c=this.styles.cap??"round",C=this.styles.join??"miter",Q=this.styles.wave??"rgba(0, 0, 255, 1.0)",B=this.styles.grid??"none",l=this.styles.text??"none",u=Number.parseInt(this.styles.font?.size??"13px",10),E=A.length,p=this.sampleRate/(2*A.length),d=Math.trunc(this.textInterval/p);t.innerHTML="";const f=document.createElementNS(I.XMLNS,"path");let y="";switch(this.scale){case"linear":for(let t=0;t<E;t++){const e=t/E*g+a,s=(1-A[t]/Math.PI)*(o/2)+i;Number.isFinite(e)&&Number.isFinite(s)&&(y+=""===y?`M${e+h/2} ${s}`:` L${e} ${s}`)}break;case"logarithmic":for(let t=0;t<A.length;t++){if(0===t)continue;const e=t*p/this.minFrequency,s=Math.log10(e)/this.log10Ratio*g+a,r=(1-A[t]/Math.PI)*(o/2)+i;Number.isFinite(r)&&(s<a||s>a+g||(y+=""===y?`M${s} ${r}`:` L${s} ${r}`))}}if(f.setAttribute("d",y),f.setAttribute("stroke",Q),f.setAttribute("fill","none"),f.setAttribute("stroke-width",h.toString(10)),f.setAttribute("stroke-linecap",c),f.setAttribute("stroke-linejoin",C),t.appendChild(f),"none"!==B||"none"!==l){switch(this.scale){case"linear":for(let A=0;A<E;A++)if(A%d==0){const e=A/E*g+a,s=A*p,n=s<1e3?`${s} Hz`:`${(s/1e3).toString(10).slice(0,3)} kHz`;if("none"!==B){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",i.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",o.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==l){const A=document.createElementNS(I.XMLNS,"text");A.textContent=n,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(i+o+r).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const e=A/this.minFrequency,s=Math.log10(e)/this.log10Ratio*g+a,n=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;if("none"!==B){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",s.toString(10)),A.setAttribute("y",i.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",o.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==l){const A=document.createElementNS(I.XMLNS,"text");A.textContent=n,A.setAttribute("x",s.toString(10)),A.setAttribute("y",(i+o+r).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}))}if("function"==typeof this.renderPhaseTexts)this.renderPhaseTexts(A);else switch(this.unit){case"radian":{const A=["π","0","-π"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A} rad`,n=a,h=o/e*s+i;if("none"!==B){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",n.toString(10)),A.setAttribute("y",h.toString(10)),A.setAttribute("width",g.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==B){const A=document.createElementNS(I.XMLNS,"text");A.textContent=r,A.setAttribute("x",n.toString(10)),A.setAttribute("y",(h-u/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}));break}case"degree":{const A=["180","0","-180"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A}°`,n=a,h=o/e*s+i;if("none"!==B){const A=document.createElementNS(I.XMLNS,"rect");A.setAttribute("x",n.toString(10)),A.setAttribute("y",h.toString(10)),A.setAttribute("width",g.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==B){const A=document.createElementNS(I.XMLNS,"text");A.textContent=r,A.setAttribute("x",n.toString(10)),A.setAttribute("y",(h-u/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}));break}}}}}class C{analysers;splitter;input;timeOverviews;times;ffts;spectrograms;timeDomainAnimationIds=[null,null];timeDomainTimerIds=[null,null];frequencyDomainAnimationIds=[null,null];frequencyDomainTimerIds=[null,null];spectrogramAnimationIds=[null,null];spectrogramTimerIds=[null,null];amplitudeSpectrum;phaseSpectrum;minDecibels=-100;maxDecibels=-30;constructor(A){this.analysers=[A.createAnalyser(),A.createAnalyser()],this.splitter=A.createChannelSplitter(2),this.input=A.createGain(),this.input.connect(this.splitter),this.splitter.connect(this.analysers[0],0,0),this.splitter.connect(this.analysers[1],1,0),this.timeOverviews=[new a(A.sampleRate,0),new a(A.sampleRate,1)],this.times=[new n(A.sampleRate,0,this.analysers[0]),new n(A.sampleRate,1,this.analysers[1])],this.ffts=[new g(A.sampleRate,0,this.analysers[0]),new g(A.sampleRate,1,this.analysers[1])],this.spectrograms=[new o(A.sampleRate,0,this.analysers[0]),new o(A.sampleRate,1,this.analysers[1])],this.amplitudeSpectrum=new h(A.sampleRate,0),this.phaseSpectrum=new c(A.sampleRate,0),this.analysers.forEach((A=>{A.fftSize=2048,A.minDecibels=-100,A.maxDecibels=-30,A.smoothingTimeConstant=.8}))}start(A,t,e,s){let i=t;switch(void 0!==i&&-1!==i||(this.input.disconnect(this.splitter),this.splitter.disconnect(0),this.splitter.disconnect(1),this.input.connect(this.analysers[0]),i=0),A){case"timeoverview":if(e&&e.numberOfChannels>i){const A=new Float32Array(e.length);A.set(e.getChannelData(i)),this.timeOverviews[i].start(A)}break;case"time":{const e=this.times[i].param("interval");switch(this.times[i].param("type")){case"uint":{const A=new Uint8Array(this.analysers[i].fftSize);this.analysers[i].getByteTimeDomainData(A),this.times[i].start(A);break}case"float":{const A=new Float32Array(this.analysers[i].fftSize);this.analysers[i].getFloatTimeDomainData(A),this.times[i].start(A);break}}"number"==typeof e&&(this.stop(A,t),e<0?this.timeDomainAnimationIds[i]=window.requestAnimationFrame((()=>{this.start(A,t)})):this.timeDomainTimerIds[i]=window.setTimeout((()=>{this.start(A,t)}),e));break}case"fft":{const e=this.ffts[i].param("interval");switch(this.ffts[i].param("type")){case"uint":{const A=new Uint8Array(this.analysers[i].frequencyBinCount);this.analysers[i].getByteFrequencyData(A),this.ffts[i].start(A);break}case"float":{const A=new Float32Array(this.analysers[i].frequencyBinCount);this.analysers[i].getFloatFrequencyData(A),this.ffts[i].start(A,this.analysers[i].minDecibels,this.analysers[i].maxDecibels);break}}"number"==typeof e&&(this.stop(A,t),e<0?this.frequencyDomainAnimationIds[i]=window.requestAnimationFrame((()=>{this.start(A,t)})):this.frequencyDomainTimerIds[i]=window.setTimeout((()=>{this.start(A,t)}),e));break}case"spectrogram":{const e=this.spectrograms[i].param("interval");switch(this.spectrograms[i].param("type")){case"uint":{const A=new Uint8Array(this.analysers[i].frequencyBinCount);this.analysers[i].getByteFrequencyData(A),this.spectrograms[i].start(A);break}case"float":{const A=new Float32Array(this.analysers[i].frequencyBinCount);this.analysers[i].getFloatFrequencyData(A),this.spectrograms[i].start(A);break}}"number"==typeof e&&(this.stop(A,t),e<0?this.spectrogramAnimationIds[i]=window.requestAnimationFrame((()=>{this.start(A,t)})):this.spectrogramTimerIds[i]=window.setTimeout((()=>{this.start(A,t)}),e));break}case"offline-amplitude-spectrum":s&&this.amplitudeSpectrum.start(s,this.minDecibels,this.maxDecibels);break;case"offline-phase-spectrum":s&&this.phaseSpectrum.start(s,this.minDecibels,this.maxDecibels)}return this}stop(A,t){let e=t;switch(void 0!==e&&-1!==e||(e=0),A){case"time":{const A=this.times[e].param("interval");if("number"==typeof A){const t=this.timeDomainAnimationIds[e],s=this.timeDomainTimerIds[e];A<0&&t?(window.cancelAnimationFrame(t),this.timeDomainAnimationIds[e]=null):s&&(window.clearTimeout(s),this.timeDomainTimerIds[e]=null)}break}case"fft":{const A=this.ffts[e].param("interval");if("number"==typeof A){const t=this.frequencyDomainAnimationIds[e],s=this.frequencyDomainTimerIds[e];A<0&&t?(window.cancelAnimationFrame(t),this.frequencyDomainAnimationIds[e]=null):s&&(window.clearTimeout(s),this.frequencyDomainTimerIds[e]=null)}break}case"spectrogram":{const A=this.spectrograms[e].param("interval");if("number"==typeof A){const t=this.spectrogramAnimationIds[e],s=this.spectrogramTimerIds[e];A<0&&t?(window.cancelAnimationFrame(t),this.spectrogramAnimationIds[e]=null):s&&(window.clearTimeout(s),this.spectrogramTimerIds[e]=null)}break}}return this}param(A){if("string"==typeof A)switch(A){case"fftSize":return this.analysers[0].fftSize;case"frequencyBinCount":return this.analysers[0].frequencyBinCount;case"minDecibels":return this.analysers[0].minDecibels;case"maxDecibels":return this.analysers[0].maxDecibels;case"smoothingTimeConstant":return this.analysers[0].smoothingTimeConstant}for(const[t,e]of Object.entries(A))switch(t){case"fftSize":this.analysers[0].fftSize=e,this.analysers[1].fftSize=e;break;case"minDecibels":this.analysers[0].minDecibels=e,this.analysers[1].minDecibels=e,this.minDecibels=e;break;case"maxDecibels":this.analysers[0].maxDecibels=e,this.analysers[1].maxDecibels=e,this.maxDecibels=e;break;case"smoothingTimeConstant":this.analysers[0].smoothingTimeConstant=e,this.analysers[1].smoothingTimeConstant=e}return this}domain(A,t){let e=t;switch(void 0!==e&&-1!==e||(e=0),A){case"timeoverview":return this.timeOverviews[e];case"time":return this.times[e];case"fft":return this.ffts[e];case"spectrogram":return this.spectrograms[e];case"offline-amplitude-spectrum":return this.amplitudeSpectrum;case"offline-phase-spectrum":return this.phaseSpectrum}return this}get(A){let t=A;return void 0!==t&&-1!==t||(t=0),this.analysers[t]}get INPUT(){return this.input}get OUTPUT(){return this.input}}class Q{id;dataBlocks=[];constructor(A){this.id=A}get(){return this.dataBlocks}append(A){return this.dataBlocks.push(A),this}clear(){this.dataBlocks.length=0}has(){return this.dataBlocks.length>0}toString(){return this.id}}class B{id;frames=[];channelGain=1;constructor(A){this.id=A}append(A){return this.frames.push(A),this}get(A){return"number"==typeof A&&A>=0&&A<this.frames.length?this.frames[A]:this.frames}gain(A){if(!("number"==typeof A&&A>=0&&A<=1))return this.channelGain;this.channelGain=A}length(){return this.frames.length}toString(){return this.id}}class RecorderProcessor extends AudioWorkletProcessor{static BUFFER_SIZE=128;constructor(){super()}process(A){if(0===A.length||0===A[0].length)return!0;const t={inputs:A};return this.port.postMessage(t),!0}}class l{processor;sampleRate;channels=[];activeTrack=-1;paused=!0;constructor(A){this.processor=new AudioWorkletNode(A,RecorderProcessor.name),this.sampleRate=A.sampleRate,this.processor.port.onmessage=A=>{if(-1===this.activeTrack)return;if(0===A.data.inputs.length)return;const t=A.data.inputs[0];if(0===t.length)return;const e=RecorderProcessor.BUFFER_SIZE;if(1===t.length){const A=t[0],s=this.channels[0].gain(),i=this.channels[0].get(this.activeTrack),r=new Float32Array(e);for(let t=0;t<e;t++)r[t]=s*A[t];return void i?.append(r)}const s=t[0],i=t[1],r=this.channels[0].gain(),a=this.channels[1].gain(),n=this.channels[0].get(this.activeTrack),g=this.channels[1].get(this.activeTrack),o=new Float32Array(e),I=new Float32Array(e);for(let A=0;A<e;A++)o[A]=r*s[A],I[A]=a*i[A];n?.append(o),g?.append(I)}}setup(A,t){this.channels.push(new B("0")),this.channels.push(new B("1"));for(const A of this.channels)for(let e=0;e<t;e++)A.append(new Q(e.toString(10)));return this}ready(A){return this.hasTrack(A)?this.activeTrack=A:this.activeTrack=-1,this}start(){return-1!==this.activeTrack&&this.paused?(this.paused=!1,this):this}stop(){return this.activeTrack=-1,this.paused=!0,this.processor.disconnect(0),this}param(A){if("string"==typeof A)switch(A){case"0":if(this.channels[0])return this.channels[0].gain();break;case"1":if(this.channels[1])return this.channels[1].gain()}for(const[t,e]of Object.entries(A))switch(t){case"0":this.channels[0]&&"number"==typeof e&&this.channels[0].gain(e);break;case"1":this.channels[1]&&"number"==typeof e&&this.channels[1].gain(e)}return this}get(){return this.activeTrack}clear(A){if(-1!==this.activeTrack&&this.stop(),-1===A)for(const A of this.channels){const t=A.get();for(const A of t)A.clear()}else if(this.hasTrack(A))for(const t of this.channels){const e=t.get(A);e?.clear()}return this}create(A,t,e,s){-1!==this.activeTrack&&this.stop();let i=null,r=null;if(-1===A&&this.has(-1,-1))i=this.mixTrack(0),r=this.mixTrack(1);else{if(!this.has(0,A)||!this.has(1,A))return"";i=this.flatTrack(0,A),r=this.flatTrack(1,A)}if(null===i||null===r)return"";const a=this.sampleRate,n=e,g=t,o=g*Math.min(i.length,r.length),I=36+(8+o*(n/8)),h=I-8,c=a*g*(n/8),C=o*(n/8);let Q=null;switch(n){case 8:Q=new Uint8Array(o);for(let A=0;A<o;A++){let t=0;t=A%g==0?Math.round((i[Math.trunc(A/g)]+1)/2*255):Math.round((r[Math.trunc(A/g)]+1)/2*255),t>255&&(t=255),t<0&&(t=0),Q[A]=t}break;case 16:Q=new Int16Array(o);for(let A=0;A<o;A++){let t=0;t=A%g==0?Math.round(32768*i[Math.trunc(A/g)]):Math.round(32768*r[Math.trunc(A/g)]),t>32767&&(t=32767),t<-32768&&(t=-32768),Q[A]=t}}if(null===Q)return"";const B=new Uint8Array(I);B[0]=82,B[1]=73,B[2]=70,B[3]=70,B[4]=255&h,B[5]=h>>8&255,B[6]=h>>16&255,B[7]=h>>24&255,B[8]=87,B[9]=65,B[10]=86,B[11]=69,B[12]=102,B[13]=109,B[14]=116,B[15]=32,B[16]=16,B[17]=0,B[18]=0,B[19]=0,B[20]=1,B[21]=0,B[22]=g,B[23]=0,B[24]=255&a,B[25]=a>>8&255,B[26]=a>>16&255,B[27]=a>>24&255,B[28]=255&c,B[29]=c>>8&255,B[30]=c>>16&255,B[31]=c>>24&255,B[32]=g*(n/8),B[33]=0,B[34]=n,B[35]=0,B[36]=100,B[37]=97,B[38]=116,B[39]=97,B[40]=255&C,B[41]=C>>8&255,B[42]=C>>16&255,B[43]=C>>24&255;for(let A=0;A<o;A++){const t=I-C;switch(n){case 8:B[t+A]=Q[A];break;case 16:B[t+2*A+0]=255&Q[A],B[t+2*A+1]=Q[A]>>8&255}}switch(s){case"base64":case"dataURL":{const A=window.btoa(Array.from(B).map((A=>String.fromCodePoint(A))).join(""));return"base64"===s?A:`data:audio/wav;base64,${A}`}case"blob":case"objectURL":{const A=new Blob([B],{type:"audio/wav"});return"blob"===s?A:window.URL.createObjectURL(A)}}}has(A,t){if(!this.hasChannel(A))return this.channels.some((A=>A.get().some((A=>A.has()))));const e=this.channels[A].get();if(!this.hasTrack(t))return e.some((A=>A.has()));const s=this.channels[A].get(t);return s?.has()??!1}hasChannel(A){return A>=0&&A<this.channels.length}hasTrack(A){return A>=0&&this.channels.every((t=>A<t.length()))}get INPUT(){return this.processor}get OUTPUT(){return this.processor}flatTrack(A,t){if(!this.hasChannel(A)||!this.hasTrack(t))return null;const e=this.channels[A].get(t);if(null===e)return null;const s=e.get(),i=RecorderProcessor.BUFFER_SIZE,r=new Float32Array(s.length*i);for(let A=0,t=s.length;A<t;A++){const t=s[A];for(let e=0;e<i;e++)r[A*i+e]=t[e]}return r}mixTrack(A){if(!this.hasChannel(A))return null;const t=this.channels[A].get(),e=RecorderProcessor.BUFFER_SIZE;let s=0,i=0,r=0,a=0,n=0;for(const A of t){const t=A.get();n<t.length&&(n=t.length)}const g=new Float32Array(n*e);for(;;){for(let A=0,e=t.length;A<e;A++){const e=t[A].get()[r];e&&a>=0&&a<=e.length&&(s+=e[a],i++)}if(i<=0)return g;g[r*e+a]=s/i,s=0,i=0,a<e-1?a++:(r++,a=0)}}}class u{context;input;output;lfo;depth;rate;isActive=!0;paused=!0;constructor(A){this.context=A,this.input=A.createGain(),this.output=A.createGain(),this.lfo=A.createOscillator(),this.depth=A.createGain(),this.rate=this.lfo.frequency}start(A){this.isActive&&this.paused&&(this.lfo.start(A??this.context.currentTime),this.paused=!1)}stop(A,t){if(!this.isActive||this.paused)return;const e=this.lfo.type,s=this.lfo.frequency.value;this.lfo.stop((A??this.context.currentTime)+(t??0)),this.lfo=this.context.createOscillator(),this.lfo.type=e,this.lfo.frequency.value=s,this.rate=this.lfo.frequency,this.paused=!0}toJSON(){return JSON.stringify(this.params())}state(){return this.isActive}activate(){return this.isActive=!0,this.connect(),this.start(0),this}deactivate(){return this.stop(0),this.isActive=!1,this.connect(),this}get INPUT(){return this.input}get OUTPUT(){return this.output}}class E extends u{panner;constructor(A){super(A),this.panner=this.context.createStereoPanner(),this.panner.pan.value=0,this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.panner.pan)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.panner.pan))}connect(){return this.input.disconnect(0),this.panner.disconnect(0),this.isActive?(this.input.connect(this.panner),this.panner.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"depth":return this.depth.gain.value;case"rate":return this.rate.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"depth":"number"==typeof e&&(this.depth.gain.value=e);break;case"rate":"number"==typeof e&&(this.rate.value=e)}return this}params(){return{state:this.isActive,depth:this.depth.gain.value,rate:this.rate.value}}}class p extends u{shaper;inputShaper;outputShaper;inputLevel;outputLevel;bitsInput;bitsGain;bits=0;constructor(A){super(A),this.shaper=this.context.createWaveShaper(),this.inputShaper=this.context.createWaveShaper(),this.outputShaper=this.context.createWaveShaper(),this.inputLevel=this.context.createGain(),this.outputLevel=this.context.createGain(),this.bitsInput=this.context.createConstantSource(),this.bitsGain=this.context.createGain();const t=new Float32Array(1023);for(let A=0;A<512;A++){const e=(A/512*128|0)/128;t[511+A]=e,t[511-A]=-e}const e=new Float32Array(10),s=new Float32Array(10);for(let A=0,t=64;A<6;A++,t*=.5)e[0+A]=1/64,e[4+A]=1/t,s[0+A]=64,s[4+A]=t;this.shaper.curve=t,this.shaper.oversample="4x",this.inputShaper.curve=e,this.outputShaper.curve=s,this.inputLevel.gain.value=0,this.outputLevel.gain.value=0,this.bitsInput.offset.value=this.bits,this.bitsGain.gain.value=1/8,this.deactivate()}start(A){this.isActive&&this.paused&&(this.bitsInput.start(this.context.currentTime),this.paused=!1)}stop(A,t){this.isActive&&!this.paused&&(this.bitsInput.stop(this.context.currentTime),this.bitsInput=this.context.createConstantSource(),this.bitsInput.offset.value=this.bits,this.paused=!0,this.connect())}connect(){return this.input.disconnect(0),this.shaper.disconnect(0),this.inputShaper.disconnect(0),this.outputShaper.disconnect(0),this.inputLevel.disconnect(0),this.outputLevel.disconnect(0),this.bitsInput.disconnect(0),this.bitsGain.disconnect(0),this.isActive?(this.input.connect(this.inputLevel),this.inputLevel.connect(this.shaper),this.shaper.connect(this.outputLevel),this.outputLevel.connect(this.output),this.bitsInput.connect(this.bitsGain),this.bitsGain.connect(this.inputShaper),this.inputShaper.connect(this.inputLevel.gain),this.bitsGain.connect(this.outputShaper),this.outputShaper.connect(this.outputLevel.gain)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"bits":return this.bits;case"oversample":return this.shaper.oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"bits":"number"==typeof e&&(this.bits=e,this.bitsInput.offset.value=this.bits);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e))}return this}params(){return{state:this.isActive,bits:this.bits,oversample:this.shaper.oversample}}}class d extends u{delay;tone;dry;wet;feedback;depthRate=0;constructor(A){super(A),this.delay=A.createDelay(),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.feedback=A.createGain(),this.delay.delayTime.value=0,this.depth.gain.value=0,this.rate.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.feedback.gain.value=0,this.depthRate=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime))}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.feedback.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.delay),this.delay.connect(this.wet),this.wet.connect(this.output),this.delay.connect(this.feedback),this.feedback.connect(this.delay)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"mix":case"wet":return this.wet.gain.value;case"dry":return this.dry.gain.value;case"tone":return this.tone.frequency.value;case"feedback":return this.feedback.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e,this.depth.gain.value=this.delay.delayTime.value*this.depthRate);break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.delay.delayTime.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"mix":"number"==typeof e&&(this.wet.gain.value=e,this.dry.gain.value=1-this.wet.gain.value);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e);break;case"feedback":"number"==typeof e&&(this.feedback.gain.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value,depth:this.depthRate,rate:this.rate.value,mix:this.wet.gain.value,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value,feedback:this.feedback.gain.value}}}class f extends u{compressor;constructor(A){super(A),this.compressor=A.createDynamicsCompressor(),this.compressor.threshold.value=-24,this.compressor.knee.value=30,this.compressor.ratio.value=12,this.compressor.attack.value=.003,this.compressor.release.value=.25,this.activate()}connect(){return this.input.disconnect(0),this.compressor.disconnect(0),this.isActive?(this.input.connect(this.compressor),this.compressor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"threshold":return this.compressor.threshold.value;case"knee":return this.compressor.knee.value;case"ratio":return this.compressor.ratio.value;case"attack":return this.compressor.attack.value;case"release":return this.compressor.release.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"threshold":"number"==typeof e&&(this.compressor.threshold.value=e);break;case"knee":"number"==typeof e&&(this.compressor.knee.value=e);break;case"ratio":"number"==typeof e&&(this.compressor.ratio.value=e);break;case"attack":"number"==typeof e&&(this.compressor.attack.value=e);break;case"release":"number"==typeof e&&(this.compressor.release.value=e)}return this}params(){return{state:this.isActive,threshold:this.compressor.threshold.value,knee:this.compressor.knee.value,ratio:this.compressor.ratio.value,attack:this.compressor.attack.value,release:this.compressor.release.value}}}class y extends u{static MAX_DELAY_TIME=5;delay;dry;wet;tone;feedback;constructor(A){super(A),this.delay=A.createDelay(y.MAX_DELAY_TIME),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.feedback=A.createGain(),this.delay.delayTime.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.feedback.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.feedback.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.delay),this.delay.connect(this.wet),this.wet.connect(this.output),this.delay.connect(this.feedback),this.feedback.connect(this.delay)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value;case"dry":return this.dry.gain.value;case"wet":return this.wet.gain.value;case"tone":return this.tone.frequency.value;case"feedback":return this.feedback.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e);break;case"feedback":"number"==typeof e&&(this.feedback.gain.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value,feedback:this.feedback.gain.value}}}class m{static MIN_GAIN=.001;context;generators=[];activeIndexes=[];activeCounter=0;attack=.01;decay=.3;sustain=.5;release=1;isActive=!0;constructor(A){this.context=A}ready(A,t,e){t&&e&&this.generators[A]?(t.connect(this.generators[A]),this.generators[A].connect(e)):t&&null===e&&this.generators[A]?t.connect(this.generators[A]):null===t&&e&&this.generators[A]&&this.generators[A].connect(e),this.activeIndexes[A]=A,this.activeCounter++}start(A){const t=A,e=t+this.attack,s=this.decay,i=this.sustain;for(const A of this.activeIndexes)void 0!==A&&(this.isActive?(this.generators[A].gain.cancelScheduledValues(t),this.generators[A].gain.setValueAtTime(0,t),this.generators[A].gain.linearRampToValueAtTime(1,e),this.generators[A].gain.setTargetAtTime(i,e,s)):this.generators[A].gain.value=1)}stop(A,t){const e=A-this.release,s=e>=this.context.currentTime?e:this.context.currentTime,i=this.release;for(const A of this.activeIndexes)if(void 0!==A)if(this.isActive){if("function"==typeof this.generators[A].gain.cancelAndHoldAtTime)this.generators[A].gain.cancelAndHoldAtTime(s);else{const t=this.generators[A].gain.value;this.generators[A].gain.cancelScheduledValues(s),this.generators[A].gain.setValueAtTime(t,s)}t?this.generators[A].gain.setValueCurveAtTime(new Float32Array([1,.5,.25,0]),s,i):this.generators[A].gain.setTargetAtTime(0,s,i)}else this.generators[A].gain.value=0}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"attack":return this.attack;case"decay":return this.decay;case"sustain":return this.sustain;case"release":return this.release}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"attack":"number"==typeof e&&(this.attack=e);break;case"decay":"number"==typeof e&&(this.decay=e);break;case"sustain":"number"==typeof e&&(this.sustain=e);break;case"release":"number"==typeof e&&(this.release=e)}return this}getGenerator(A){return A>=0&&A<this.generators.length?this.generators[A]:null}setGenerator(A){this.generators[A]=this.context.createGain()}paused(){let A=0;for(const t of this.activeIndexes)if(void 0!==t){if(this.generators[t].gain.value>m.MIN_GAIN)return!1;if(A++,A===this.activeCounter)return!0}return!1}clear(A){this.activeIndexes.length=0,this.activeCounter=0;for(const t of this.generators)t.gain.cancelScheduledValues(this.context.currentTime),t.gain.value=1,A&&t.disconnect(0)}params(){return{state:this.isActive,attack:this.attack,decay:this.decay,sustain:this.sustain,release:this.release}}toJSON(){return JSON.stringify(this.params())}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}}class D extends u{bass;middle;treble;presence;constructor(A){super(A),this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.presence=A.createBiquadFilter(),this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.presence.type="highshelf",this.bass.frequency.value=500,this.middle.frequency.value=1e3,this.treble.frequency.value=2e3,this.presence.frequency.value=4e3,this.bass.Q.value=Math.SQRT1_2,this.middle.Q.value=Math.SQRT1_2,this.treble.Q.value=Math.SQRT1_2,this.presence.Q.value=Math.SQRT1_2,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0,this.presence.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.bass.disconnect(0),this.middle.disconnect(0),this.treble.disconnect(0),this.presence.disconnect(0),this.isActive?(this.input.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.presence),this.presence.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"presence":return this.presence.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"presence":"number"==typeof e&&(this.presence.gain.value=e)}return this}params(){return{state:this.isActive,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,presence:this.presence.gain.value}}}class w extends u{filter;maxFrequency;range=.1;attack=.01;decay=.3;sustain=1;release=1;constructor(A){super(A),this.filter=A.createBiquadFilter(),this.filter.type="lowpass",this.filter.frequency.value=350,this.filter.Q.value=1,this.filter.gain.value=0,this.maxFrequency=this.filter.frequency.value,this.deactivate()}start(A){if(!this.isActive)return;const t=A??this.context.currentTime,e=t+this.attack,s=this.decay,i=this.sustain*this.maxFrequency,r=this.maxFrequency*this.range;this.filter.frequency.cancelScheduledValues(t),this.filter.frequency.setValueAtTime(r,t),this.filter.frequency.linearRampToValueAtTime(this.maxFrequency,e),this.filter.frequency.setTargetAtTime(i,e,s)}stop(A){if(!this.isActive)return;const t=A??this.context.currentTime,e=this.release,s=this.maxFrequency*this.range;if("function"==typeof this.filter.frequency.cancelAndHoldAtTime)this.filter.frequency.cancelAndHoldAtTime(t);else{const A=this.filter.frequency.value;this.filter.frequency.cancelScheduledValues(t),this.filter.frequency.setValueAtTime(A,t)}this.filter.frequency.setTargetAtTime(s,t,e)}connect(){return this.input.disconnect(0),this.filter.disconnect(0),this.isActive?(this.input.connect(this.filter),this.filter.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.filter.type;case"frequency":return this.filter.frequency.value;case"Q":return this.filter.Q.value;case"gain":return this.filter.gain.value;case"range":return this.range;case"attack":return this.attack;case"decay":return this.decay;case"sustain":return this.sustain;case"release":return this.release}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":"string"==typeof e&&(this.filter.type=e);break;case"frequency":"number"==typeof e&&(this.filter.frequency.value=e,this.maxFrequency=e);break;case"Q":"number"==typeof e&&(this.filter.Q.value=e);break;case"gain":"number"==typeof e&&(this.filter.gain.value=e);break;case"range":"number"==typeof e&&(this.range=e);break;case"attack":"number"==typeof e&&(this.attack=e);break;case"decay":"number"==typeof e&&(this.decay=e);break;case"sustain":"number"==typeof e&&(this.sustain=e);break;case"release":"number"==typeof e&&(this.release=e)}return this}params(){return{state:this.isActive,type:this.filter.type,frequency:this.filter.frequency.value,Q:this.filter.Q.value,gain:this.filter.gain.value,range:this.range,attack:this.attack,decay:this.decay,sustain:this.sustain,release:this.release}}activate(){return this.isActive=!0,this.connect(),this}deactivate(){return this.isActive=!1,this.connect(),this}}class b extends u{delay;tone;dry;wet;feedback;depthRate=0;constructor(A){super(A),this.delay=A.createDelay(),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.feedback=A.createGain(),this.delay.delayTime.value=0,this.depth.gain.value=0,this.rate.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.feedback.gain.value=0,this.depthRate=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime))}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.feedback.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.delay),this.delay.connect(this.wet),this.wet.connect(this.output),this.delay.connect(this.feedback),this.feedback.connect(this.delay)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"mix":case"wet":return this.wet.gain.value;case"dry":return this.dry.gain.value;case"tone":return this.tone.frequency.value;case"feedback":return this.feedback.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e,this.depth.gain.value=this.delay.delayTime.value*this.depthRate);break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.delay.delayTime.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"mix":"number"==typeof e&&(this.wet.gain.value=e,this.dry.gain.value=1-this.wet.gain.value);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e);break;case"feedback":"number"==typeof e&&(this.feedback.gain.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value,depth:this.depthRate,rate:this.rate.value,mix:this.wet.gain.value,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value,feedback:this.feedback.gain.value}}}class F extends u{positiveShaper;negativeShaper;positiveInputGain;negativeInputGain;positiveOutputGain;negativeOutputGain;outFilter;driveInput;level;drive=0;constructor(A){super(A),this.positiveShaper=this.context.createWaveShaper(),this.negativeShaper=this.context.createWaveShaper(),this.positiveInputGain=this.context.createGain(),this.negativeInputGain=this.context.createGain(),this.positiveOutputGain=this.context.createGain(),this.negativeOutputGain=this.context.createGain(),this.driveInput=this.context.createConstantSource(),this.outFilter=this.context.createBiquadFilter(),this.level=this.context.createGain();const t=new Float32Array(1024);for(let A=0;A<512;A++){const e=.5*Math.tanh(4*A/512),s=1-A/512;t[512+A]=e,t[511-A]=e*s**4}this.positiveShaper.curve=t,this.negativeShaper.curve=t,this.positiveShaper.oversample="4x",this.negativeShaper.oversample="4x",this.positiveInputGain.gain.value=1,this.negativeInputGain.gain.value=-1,this.positiveOutputGain.gain.value=1,this.negativeOutputGain.gain.value=-1,this.driveInput.offset.value=this.drive,this.outFilter.type="highpass",this.outFilter.frequency.value=80,this.outFilter.Q.value=1,this.outFilter.gain.value=0,this.level.gain.value=1,this.deactivate()}start(A){this.isActive&&this.paused&&(this.driveInput.start(this.context.currentTime),this.paused=!1)}stop(A,t){this.isActive&&!this.paused&&(this.driveInput.stop(this.context.currentTime),this.driveInput=this.context.createConstantSource(),this.driveInput.offset.value=this.drive,this.paused=!0,this.connect())}connect(){return this.input.disconnect(0),this.positiveShaper.disconnect(0),this.negativeShaper.disconnect(0),this.positiveInputGain.disconnect(0),this.negativeInputGain.disconnect(0),this.positiveOutputGain.disconnect(0),this.negativeOutputGain.disconnect(0),this.driveInput.disconnect(0),this.outFilter.disconnect(0),this.level.disconnect(0),this.isActive?(this.input.connect(this.positiveInputGain),this.positiveInputGain.connect(this.positiveShaper),this.positiveShaper.connect(this.positiveOutputGain),this.positiveOutputGain.connect(this.outFilter),this.input.connect(this.negativeInputGain),this.negativeInputGain.connect(this.negativeShaper),this.negativeShaper.connect(this.negativeOutputGain),this.negativeOutputGain.connect(this.outFilter),this.driveInput.connect(this.negativeOutputGain.gain),this.outFilter.connect(this.level),this.level.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"drive":return this.drive;case"level":return this.level.gain.value;case"oversample":return this.positiveShaper.oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"drive":"number"==typeof e&&(this.drive=e,this.driveInput.offset.value=this.drive);break;case"level":"number"==typeof e&&(this.level.gain.value=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.positiveShaper.oversample=e,this.negativeShaper.oversample=e))}return this}params(){return{state:this.isActive,drive:this.drive,level:this.level.gain.value,oversample:this.positiveShaper.oversample}}}class v extends u{listener;positions;forwards;ups;constructor(A){super(A),this.listener=A.listener,this.positions={x:0,y:0,z:0},this.forwards={x:0,y:0,z:-1},this.ups={x:0,y:1,z:0},this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z),this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z)}connect(){return this.output}param(A){if("string"==typeof A)switch(A){case"x":return this.positions.x;case"y":return this.positions.y;case"z":return this.positions.z;case"fx":return this.forwards.x;case"fy":return this.forwards.y;case"fz":return this.forwards.z;case"ux":return this.ups.x;case"uy":return this.ups.y;case"uz":return this.ups.z}for(const[t,e]of Object.entries(A))switch(t){case"x":"number"==typeof e&&(this.positions.x=e,this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z));break;case"y":"number"==typeof e&&(this.positions.y=e,this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z));break;case"z":"number"==typeof e&&(this.positions.z=e,this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z));break;case"fx":"number"==typeof e&&(this.forwards.x=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"fy":"number"==typeof e&&(this.forwards.y=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"fz":"number"==typeof e&&(this.forwards.z=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"ux":"number"==typeof e&&(this.ups.x=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"uy":"number"==typeof e&&(this.ups.y=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"uz":"number"==typeof e&&(this.ups.z=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z))}return this}params(){return{x:this.positions.x,y:this.positions.y,z:this.positions.z,fx:this.forwards.x,fy:this.forwards.y,fz:this.forwards.z,ux:this.ups.x,uy:this.ups.y,uz:this.ups.z}}}class NoiseGateProcessor extends AudioWorkletProcessor{instance=null;level=0;isActive=!0;constructor(){super(),this.port.onmessage=A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"level":"number"==typeof e&&(this.level=e)}}}process(A,t){if(null===this.instance)return!1;const e=A[0],s=t[0];if(0===e.length||0===s.length)return!0;if(!this.isActive||0===this.level){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}const i=this.instance.exports,r=i.memory.buffer,a=e[0].length;for(let A=0,t=e.length;A<t;A++){const t=i.alloc_memory_inputs();new Float32Array(r,t,a).set(e[A]);const n=i.noisegate(this.level);s[A].set(new Float32Array(r,n,a))}return!0}}class N extends u{processor;level=0;constructor(A){super(A),this.processor=new AudioWorkletNode(this.context,NoiseGateProcessor.name),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"level":return this.level}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"level":if("number"==typeof e){this.level=e;const A={level:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,level:this.level}}}class NoiseSuppressorProcessor extends OverlapAddProcessor{instance=null;threshold=0;isActive=!0;constructor(A){super(A),this.port.onmessage=async A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"threshold":"number"==typeof e&&(this.threshold=e)}}}processOverlapAdd(A,t){if(null===this.instance)return!1;const e=A[0],s=t[0];if(0===e.length||0===s.length)return!0;if(!this.isActive||0===this.threshold){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}const i=this.instance.exports,r=i.memory.buffer;for(let A=0,t=e.length;A<t;A++){const t=i.alloc_memory_inputs(this.frameSize);new Float32Array(r,t,this.frameSize).set(e[A]);const a=i.noisesuppressor(this.threshold,this.frameSize);s[A].set(new Float32Array(r,a,this.frameSize))}return!0}}class k extends u{processor;threshold=0;constructor(A){super(A),this.processor=new AudioWorkletNode(this.context,NoiseSuppressorProcessor.name,{processorOptions:{frameSize:1024}}),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"threshold":return this.threshold}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"threshold":if("number"==typeof e&&e>=0){this.threshold=e;const A={threshold:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,threshold:this.threshold}}}class R extends u{shaper;inputShaper;outputShaper;inputGain;outputGain;driveInput;level;drive=0;constructor(A){super(A),this.shaper=this.context.createWaveShaper(),this.inputShaper=this.context.createWaveShaper(),this.outputShaper=this.context.createWaveShaper(),this.inputGain=this.context.createGain(),this.outputGain=this.context.createGain(),this.driveInput=this.context.createConstantSource(),this.level=this.context.createGain();const t=new Float32Array(1024);for(let A=0;A<512;A++){const e=.5*Math.tanh(4*A/512);t[512+A]=e,t[511-A]=-e}const e=new Float32Array(101);for(let A=0;A<101;A++)e[A]=.25;for(let A=52,t=.25;A<101;A++,t*=1.1)e[A]=t;const s=new Float32Array([2,2,2,2,2,.9,.5,.35,.3]);this.shaper.curve=t,this.shaper.oversample="4x",this.inputShaper.curve=e,this.outputShaper.curve=s,this.inputGain.gain.value=0,this.outputGain.gain.value=0,this.driveInput.offset.value=this.drive,this.level.gain.value=1,this.deactivate()}start(A){this.isActive&&this.paused&&(this.driveInput.start(this.context.currentTime),this.paused=!1)}stop(A,t){this.isActive&&!this.paused&&(this.driveInput.stop(this.context.currentTime),this.driveInput=this.context.createConstantSource(),this.driveInput.offset.value=this.drive,this.paused=!0,this.connect())}connect(){return this.input.disconnect(0),this.shaper.disconnect(0),this.inputShaper.disconnect(0),this.outputShaper.disconnect(0),this.inputGain.disconnect(0),this.outputGain.disconnect(0),this.driveInput.disconnect(0),this.level.disconnect(0),this.isActive?(this.input.connect(this.inputGain),this.inputGain.connect(this.shaper),this.shaper.connect(this.outputGain),this.outputGain.connect(this.level),this.level.connect(this.output),this.driveInput.connect(this.inputShaper),this.inputShaper.connect(this.inputGain.gain),this.driveInput.connect(this.outputShaper),this.outputShaper.connect(this.outputGain.gain)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"drive":return this.drive;case"level":return this.level.gain.value;case"oversample":return this.shaper.oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"drive":"number"==typeof e&&(this.drive=e,this.driveInput.offset.value=this.drive);break;case"level":"number"==typeof e&&(this.level.gain.value=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e))}return this}params(){return{state:this.isActive,drive:this.drive,level:this.level.gain.value,oversample:this.shaper.oversample}}}class S extends u{panner;positions;orientations;constructor(A){super(A),this.panner=A.createPanner(),this.positions={x:0,y:0,z:0},this.orientations={x:1,y:0,z:0},this.panner.refDistance=1,this.panner.maxDistance=1e4,this.panner.rolloffFactor=1,this.panner.coneInnerAngle=360,this.panner.coneOuterAngle=360,this.panner.coneOuterGain=0,this.panner.panningModel="HRTF",this.panner.distanceModel="inverse",this.panner.positionX.value=this.positions.x,this.panner.positionY.value=this.positions.y,this.panner.positionZ.value=this.positions.z,this.panner.orientationX.value=this.orientations.x,this.panner.orientationY.value=this.orientations.y,this.panner.orientationZ.value=this.orientations.z,this.deactivate()}connect(){return this.input.disconnect(0),this.panner.disconnect(0),this.isActive?(this.input.connect(this.panner),this.panner.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"x":return this.panner.positionX.value;case"y":return this.panner.positionY.value;case"z":return this.panner.positionZ.value;case"ox":return this.panner.orientationX.value;case"oy":return this.panner.orientationY.value;case"oz":return this.panner.orientationZ.value;case"refDistance":return this.panner.refDistance;case"maxDistance":return this.panner.maxDistance;case"rolloffFactor":return this.panner.rolloffFactor;case"coneInnerAngle":return this.panner.coneInnerAngle;case"coneOuterAngle":return this.panner.coneOuterAngle;case"coneOuterGain":return this.panner.coneOuterGain;case"panningModel":return this.panner.panningModel;case"distanceModel":return this.panner.distanceModel}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"x":"number"==typeof e&&(this.panner.positionX.value=e);break;case"y":"number"==typeof e&&(this.panner.positionY.value=e);break;case"z":"number"==typeof e&&(this.panner.positionZ.value=e);break;case"ox":"number"==typeof e&&(this.panner.orientationX.value=e);break;case"oy":"number"==typeof e&&(this.panner.orientationY.value=e);break;case"oz":"number"==typeof e&&(this.panner.orientationZ.value=e);break;case"refDistance":"number"==typeof e&&(this.panner.refDistance=e);break;case"maxDistance":"number"==typeof e&&(this.panner.maxDistance=e);break;case"rolloffFactor":"number"==typeof e&&(this.panner.rolloffFactor=e);break;case"coneInnerAngle":"number"==typeof e&&(this.panner.coneInnerAngle=e);break;case"coneOuterAngle":"number"==typeof e&&(this.panner.coneOuterAngle=e);break;case"coneOuterGain":"number"==typeof e&&(this.panner.coneOuterGain=e);break;case"panningModel":"HRTF"!==e&&"equalpower"!==e||(this.panner.panningModel=e);break;case"distanceModel":"linear"!==e&&"inverse"!==e&&"exponential"!==e||(this.panner.distanceModel=e)}return this}params(){return{state:this.isActive,x:this.positions.x,y:this.positions.y,z:this.positions.z,ox:this.orientations.x,oy:this.orientations.y,oz:this.orientations.z,refDistance:this.panner.refDistance,maxDistance:this.panner.maxDistance,rolloffFactor:this.panner.rolloffFactor,coneInnerAngle:this.panner.coneInnerAngle,coneOuterAngle:this.panner.coneOuterAngle,coneOuterGain:this.panner.coneOuterGain,panningModel:this.panner.panningModel,distanceModel:this.panner.distanceModel}}}class U extends u{static MAX_STAGES=24;numberOfStages=12;connectionType="serial";filters=[];dry;wet;depthRate=0;constructor(A){super(A);for(let t=0;t<U.MAX_STAGES;t++){const t=A.createBiquadFilter();t.type="allpass",t.frequency.value=350,t.Q.value=1,t.gain.value=0,this.filters.push(t)}this.dry=A.createGain(),this.wet=A.createGain(),this.depth.gain.value=0,this.rate.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.deactivate(),this.lfo.connect(this.depth);for(let A=0;A<U.MAX_STAGES;A++)this.depth.connect(this.filters[A].frequency)}stop(A,t){if(super.stop(A,t),this.isActive){this.lfo.connect(this.depth);for(let A=0;A<U.MAX_STAGES;A++)this.depth.connect(this.filters[A].frequency)}}connect(){this.input.disconnect(0);for(let A=0;A<U.MAX_STAGES;A++)this.filters[A].disconnect(0);if(this.dry.disconnect(0),this.wet.disconnect(0),this.isActive&&this.numberOfStages>0)switch(this.input.connect(this.dry),this.dry.connect(this.output),this.connectionType){case"serial":this.input.connect(this.filters[0]);for(let A=0;A<this.numberOfStages;A++)A<this.numberOfStages-1?this.filters[A].connect(this.filters[A+1]):(this.filters[A].connect(this.wet),this.wet.connect(this.output));break;case"parallel":for(let A=0;A<this.numberOfStages;A++)this.input.connect(this.filters[A]),this.filters[A].connect(this.wet);this.wet.connect(this.output)}else this.input.connect(this.output);return this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"stage":return this.numberOfStages;case"type":return this.connectionType;case"frequency":return this.filters[0].frequency.value;case"resonance":return this.filters[0].Q.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"mix":case"wet":return this.wet.gain.value;case"dry":return this.dry.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"stage":switch(e){case 0:case 2:case 4:case 8:case 12:case 24:this.numberOfStages=e,this.connect()}break;case"type":"string"==typeof e&&("serial"!==e&&"parallel"!==e||(this.connectionType=e,this.connect()));break;case"frequency":if("number"==typeof e){for(const A of this.filters)A.frequency.value=e;this.depth.gain.value=e*this.depthRate}break;case"resonance":if("number"==typeof e)for(const A of this.filters)A.Q.value=e;break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.filters[0].frequency.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"mix":"number"==typeof e&&(this.wet.gain.value=e,this.dry.gain.value=1-this.wet.gain.value);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e)}return this}params(){return{state:this.isActive,stage:this.numberOfStages,type:this.connectionType,frequency:this.filters[0].frequency.value,resonance:this.filters[0].Q.value,depth:this.depthRate,rate:this.rate.value,mix:this.wet.gain.value,dry:this.dry.gain.value,wet:this.wet.gain.value}}}class PitchShifterProcessor extends OverlapAddProcessor{instance=null;timeCursor=0;isActive=!0;pitch=1;speed=1;dry=0;wet=1;constructor(A){super(A),this.port.onmessage=async A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"pitch":"number"==typeof e&&(this.pitch=e);break;case"speed":"number"==typeof e&&(this.speed=e);break;case"dry":"number"==typeof e&&(this.dry=e);break;case"wet":"number"==typeof e&&(this.wet=e)}}}processOverlapAdd(A,t){if(null===this.instance)return;const e=A[0],s=t[0];if(!this.isActive||1===this.pitch&&1===this.speed){for(let A=0;A<e.length;A++)s[A].set(e[A]);return}const i=this.instance.exports,r=i.memory.buffer;for(let A=0;A<e.length;A++){const t=i.alloc_memory_inputs(this.frameSize);new Float32Array(r,t,this.frameSize).set(e[A]);const a=i.pitchshifter(this.pitch,this.speed,this.frameSize,this.timeCursor),n=new Float32Array(r,a,this.frameSize);if(0===this.dry)s[A].set(n);else for(let t=0;t<this.frameSize;t++)s[A][t]=this.dry*e[A][t]+this.wet*n[t]}this.timeCursor+=this.hopSize}}class G extends u{processor;pitch=1;speed=1;dry=0;wet=1;constructor(A){super(A),this.processor=new AudioWorkletNode(this.context,PitchShifterProcessor.name),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"pitch":return this.pitch;case"speed":return this.speed;case"dry":return this.dry;case"wet":return this.wet}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"pitch":if("number"==typeof e&&e>0){this.pitch=e;const A={pitch:e};this.processor.port.postMessage(A)}break;case"speed":if("number"==typeof e&&e>0){this.speed=e;const A={speed:e};this.processor.port.postMessage(A)}break;case"dry":if("number"==typeof e&&e>=0&&e<=1){this.dry=e;const A={dry:e};this.processor.port.postMessage(A)}break;case"wet":if("number"==typeof e&&e>=0&&e<=1){this.wet=e;const A={wet:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,pitch:this.pitch,speed:this.speed,dry:this.dry,wet:this.wet}}}class M extends u{lowpass;notch;constructor(A){super(A),this.lowpass=A.createBiquadFilter(),this.notch=A.createBiquadFilter(),this.lowpass.type="lowpass",this.lowpass.frequency.value=3200,this.lowpass.Q.value=6,this.lowpass.gain.value=0,this.notch.type="notch",this.notch.frequency.value=8e3,this.notch.Q.value=1,this.notch.gain.value=0,this.activate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.notch),this.notch.connect(this.lowpass),this.lowpass.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A&&"state"===A)return this.isActive;for(const[t,e]of Object.entries(A))if("state"===t)"boolean"==typeof e&&(e?this.activate():this.deactivate())}params(){return{state:this.isActive}}}class Y extends u{shaper;preGain;leadGain;lowpass;highpass1;highpass2;highpass3;constructor(A){super(A),this.shaper=A.createWaveShaper(),this.preGain=A.createGain(),this.leadGain=A.createGain(),this.lowpass=A.createBiquadFilter(),this.highpass1=A.createBiquadFilter(),this.highpass2=A.createBiquadFilter(),this.highpass3=A.createBiquadFilter(),this.shaper.oversample="4x",this.preGain.gain.value=.5,this.leadGain.gain.value=.5,this.lowpass.type="lowpass",this.lowpass.frequency.value=3200,this.lowpass.Q.value=-3,this.lowpass.gain.value=0,this.highpass1.type="highpass",this.highpass1.frequency.value=80,this.highpass1.Q.value=-3,this.highpass1.gain.value=0,this.highpass2.type="highpass",this.highpass2.frequency.value=640,this.highpass2.Q.value=-3,this.highpass2.gain.value=0,this.highpass3.type="highpass",this.highpass3.frequency.value=80,this.highpass3.Q.value=-3,this.highpass3.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.highpass1),this.highpass1.connect(this.lowpass),this.lowpass.connect(this.preGain),this.preGain.connect(this.highpass3),this.input.connect(this.highpass2),this.highpass2.connect(this.leadGain),this.leadGain.connect(this.highpass3),this.highpass3.connect(this.shaper),this.shaper.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"curve":case"oversample":return this.shaper.curve;case"gain":return this.preGain.gain.value;case"lead":return this.leadGain.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"curve":"number"!=typeof e&&"boolean"!=typeof e&&(e instanceof Float32Array||null===e)&&(this.shaper.curve=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e));break;case"gain":"number"==typeof e&&(this.preGain.gain.value=e);break;case"lead":"number"==typeof e&&(this.leadGain.gain.value=e)}}params(){return{state:this.isActive,curve:this.shaper.curve,gain:this.preGain.gain.value,lead:this.leadGain.gain.value,oversample:this.shaper.oversample}}}class x extends u{shaper;bass;middle;treble;lowpass;highpass;constructor(A){super(A),this.shaper=A.createWaveShaper(),this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.shaper.oversample="4x",this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.bass.frequency.value=240,this.middle.frequency.value=500,this.treble.frequency.value=1600,this.bass.Q.value=0,this.middle.Q.value=1.5,this.treble.Q.value=0,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0,this.lowpass=A.createBiquadFilter(),this.highpass=A.createBiquadFilter(),this.lowpass.type="lowpass",this.lowpass.frequency.value=4e3,this.lowpass.Q.value=-3,this.lowpass.gain.value=0,this.highpass.type="highpass",this.highpass.frequency.value=40,this.highpass.Q.value=-3,this.highpass.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.lowpass),this.lowpass.connect(this.highpass),this.highpass.connect(this.shaper),this.shaper.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"curve":return this.shaper.curve;case"oversample":return this.shaper.oversample;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"frequency":return this.middle.frequency.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"curve":"number"!=typeof e&&"boolean"!=typeof e&&(e instanceof Float32Array||null===e)&&(this.shaper.curve=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e));break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"frequency":"number"==typeof e&&(this.middle.frequency.value=e)}}params(){return{state:this.isActive,curve:this.shaper.curve,oversample:this.shaper.oversample,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,frequency:this.middle.frequency.value}}}class q extends u{preEQ;postEQ;cabinet;level=0;numberOfSamples=1024;constructor(A){super(A),this.preEQ=new Y(A),this.postEQ=new x(A),this.cabinet=new M(A),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preEQ.INPUT),this.preEQ.OUTPUT.connect(this.postEQ.INPUT),this.postEQ.OUTPUT.connect(this.cabinet.INPUT),this.cabinet.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"level":return this.level;case"samples":return this.numberOfSamples;case"pre":return this.preEQ.params();case"post":return this.postEQ.params();case"cabinet":return this.cabinet.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preEQ.activate(),this.postEQ.activate()):(this.deactivate(),this.preEQ.deactivate(),this.postEQ.deactivate()));break;case"level":if("number"==typeof e){this.level=e;const A=P(this.level,this.numberOfSamples);this.preEQ.param({curve:A}),this.postEQ.param({curve:A})}break;case"samples":if("number"==typeof e){this.numberOfSamples=e;const A=P(this.level,this.numberOfSamples);this.preEQ.param({curve:A}),this.postEQ.param({curve:A})}break;case"pre":"object"==typeof e&&this.preEQ.param(e);break;case"post":"object"==typeof e&&this.postEQ.param(e);break;case"cabinet":"object"==typeof e&&this.cabinet.param(e)}return this}params(){return{state:this.isActive,level:this.level,samples:this.numberOfSamples,pre:this.preEQ.params(),post:this.postEQ.params(),cabinet:this.cabinet.params()}}}class L extends u{preGain;preHighpass;postHighpass;bass;middle;treble;shapers=[];level=0;numberOfSamples=1024;usePostFilters=!0;lowpass;highpass;constructor(A){super(A),this.preGain=A.createGain(),this.preGain.gain.value=.5,this.preHighpass=A.createBiquadFilter(),this.postHighpass=A.createBiquadFilter(),this.preHighpass.type="highpass",this.postHighpass.type="highpass",this.preHighpass.frequency.value=40,this.postHighpass.frequency.value=80,this.preHighpass.Q.value=-3,this.postHighpass.Q.value=-3,this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.bass.frequency.value=160,this.middle.frequency.value=284,this.treble.frequency.value=1200,this.middle.Q.value=1.5,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0;const t=P(this.level,this.numberOfSamples);for(let e=0;e<2;e++)this.shapers[e]=A.createWaveShaper(),this.shapers[e].curve=t,this.shapers[e].oversample="4x";this.lowpass=A.createBiquadFilter(),this.highpass=A.createBiquadFilter(),this.lowpass.type="lowpass",this.highpass.type="highpass",this.lowpass.frequency.value=4e3,this.highpass.frequency.value=40,this.lowpass.Q.value=-3,this.highpass.Q.value=-3,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preGain),this.preGain.connect(this.preHighpass),this.preHighpass.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.postHighpass),this.postHighpass.connect(this.shapers[0]),this.usePostFilters?(this.shapers[0].connect(this.lowpass),this.lowpass.connect(this.highpass),this.highpass.connect(this.shapers[1])):this.shapers[0].connect(this.shapers[1]),this.shapers[1].connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"gain":return this.preGain.gain.value;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"level":return this.level;case"samples":return this.numberOfSamples;case"oversample":return this.shapers[0].oversample;case"postFilters":return this.usePostFilters}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"gain":"number"==typeof e&&(this.preGain.gain.value=e);break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"level":if("number"==typeof e){this.level=e;const A=P(this.level,this.numberOfSamples);for(let t=0;t<2;t++)this.shapers[t].curve=A}break;case"samples":if("number"==typeof e){this.numberOfSamples=e;const A=P(this.level,this.numberOfSamples);for(let t=0;t<2;t++)this.shapers[t].curve=A}break;case"oversample":if("string"==typeof e&&("none"===e||"2x"===e||"4x"===e))for(let A=0;A<2;A++)this.shapers[A].oversample=e;break;case"postFilters":"boolean"==typeof e&&(this.usePostFilters=e,this.connect())}}params(){return{state:this.isActive,gain:this.preGain.gain.value,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,level:this.level,samples:this.numberOfSamples,oversample:this.shapers[0].oversample,postFilters:this.usePostFilters}}}class T extends u{peakingFilters=[];constructor(A){super(A);for(let t=0;t<5;t++)this.peakingFilters[t]=A.createBiquadFilter(),this.peakingFilters[t].type="peaking",this.peakingFilters[t].gain.value=0;this.peakingFilters[0].frequency.value=100,this.peakingFilters[1].frequency.value=360,this.peakingFilters[2].frequency.value=720,this.peakingFilters[3].frequency.value=1600,this.peakingFilters[4].frequency.value=4800,this.peakingFilters[0].Q.value=1.5,this.peakingFilters[1].Q.value=2,this.peakingFilters[2].Q.value=2,this.peakingFilters[3].Q.value=1.1,this.peakingFilters[4].Q.value=1.2,this.deactivate()}connect(){if(this.input.disconnect(0),this.isActive){this.input.connect(this.peakingFilters[0]);for(let A=0,t=this.peakingFilters.length-1;A<t;A++)this.peakingFilters[A].connect(this.peakingFilters[A+1]);this.peakingFilters[4].connect(this.output)}else this.input.connect(this.output);return this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"fc100":return this.peakingFilters[0].gain.value;case"fc360":return this.peakingFilters[1].gain.value;case"fc720":return this.peakingFilters[2].gain.value;case"fc1600":return this.peakingFilters[3].gain.value;case"fc4800":return this.peakingFilters[4].gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"fc100":"number"==typeof e&&(this.peakingFilters[0].gain.value=e);break;case"fc360":"number"==typeof e&&(this.peakingFilters[1].gain.value=e);break;case"fc720":"number"==typeof e&&(this.peakingFilters[2].gain.value=e);break;case"fc1600":"number"==typeof e&&(this.peakingFilters[3].gain.value=e);break;case"fc4800":"number"==typeof e&&(this.peakingFilters[4].gain.value=e)}}params(){return{state:this.isActive,fc100:this.peakingFilters[0].gain.value,fc360:this.peakingFilters[1].gain.value,fc720:this.peakingFilters[2].gain.value,fc1600:this.peakingFilters[3].gain.value,fc4800:this.peakingFilters[4].gain.value}}}class J extends u{preEQ;postEQ;cabinet;constructor(A){super(A),this.preEQ=new L(A),this.postEQ=new T(A),this.cabinet=new M(A),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preEQ.INPUT),this.preEQ.OUTPUT.connect(this.cabinet.INPUT),this.cabinet.OUTPUT.connect(this.postEQ.INPUT),this.postEQ.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"pre":return this.preEQ.params();case"post":return this.postEQ.params();case"cabinet":return this.cabinet.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preEQ.activate(),this.postEQ.activate()):(this.deactivate(),this.preEQ.deactivate(),this.postEQ.deactivate()));break;case"pre":"object"==typeof e&&this.preEQ.param(e);break;case"post":"object"==typeof e&&this.postEQ.param(e);break;case"cabinet":"object"==typeof e&&this.cabinet.param(e)}return this}params(){return{state:this.isActive,pre:this.preEQ.params(),post:this.postEQ.params(),cabinet:this.cabinet.params()}}}class H extends u{preGain;highpass;bass;middle;treble;gainEdge;gainBody;gainBottom;shapers=[];iirLowpassFilters=[];iirHighpassFilters=[];mixer;level=0;numberOfSamples=1024;constructor(A){super(A),this.preGain=A.createGain(),this.preGain.gain.value=.5,this.highpass=A.createBiquadFilter(),this.highpass.type="highpass",this.highpass.frequency.value=40,this.highpass.Q.value=1,this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.bass.frequency.value=160,this.middle.frequency.value=284,this.treble.frequency.value=1200,this.middle.Q.value=1.5,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0,this.gainEdge=A.createGain(),this.gainBody=A.createGain(),this.gainBottom=A.createGain(),this.gainEdge.gain.value=1,this.gainBody.gain.value=1,this.gainBottom.gain.value=1;const t=P(this.level,this.numberOfSamples);for(let e=0;e<3;e++)this.shapers[e]=A.createWaveShaper(),this.shapers[e].curve=t,this.shapers[e].oversample="4x";const e=220/A.sampleRate*Math.PI,s=220/A.sampleRate*Math.PI,i=new Float32Array([e,e]),r=new Float32Array([s,s]),a=new Float32Array([1+e,-1+e]),n=new Float32Array([1+s,-1+s]),g=new Float32Array([1,-1]),o=new Float32Array([1,-1]),I=new Float32Array([1+e,-1+e]),h=new Float32Array([1+s,-1+s]);this.iirLowpassFilters[0]=A.createIIRFilter(i,a),this.iirLowpassFilters[1]=A.createIIRFilter(r,n),this.iirHighpassFilters[0]=A.createIIRFilter(g,I),this.iirHighpassFilters[1]=A.createIIRFilter(o,h),this.mixer=A.createGain(),this.mixer.gain.value=1,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preGain),this.preGain.connect(this.highpass),this.highpass.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.iirHighpassFilters[1]),this.iirHighpassFilters[1].connect(this.shapers[0]),this.shapers[0].connect(this.gainEdge),this.gainEdge.connect(this.mixer),this.treble.connect(this.iirHighpassFilters[0]),this.iirHighpassFilters[0].connect(this.shapers[1]),this.shapers[1].connect(this.iirLowpassFilters[1]),this.iirLowpassFilters[1].connect(this.gainBody),this.gainBody.connect(this.mixer),this.treble.connect(this.iirLowpassFilters[0]),this.iirLowpassFilters[0].connect(this.shapers[2]),this.shapers[2].connect(this.gainBottom),this.gainBottom.connect(this.mixer),this.mixer.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"gain":return this.preGain.gain.value;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"level":return this.level;case"samples":return this.numberOfSamples;case"oversample":return this.shapers[0].oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"gain":"number"==typeof e&&(this.preGain.gain.value=e);break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"level":if("number"==typeof e){this.level=e;const A=P(this.level,this.numberOfSamples);for(let t=0;t<3;t++)this.shapers[t].curve=A}break;case"samples":if("number"==typeof e){this.numberOfSamples=e;const A=P(this.level,this.numberOfSamples);for(let t=0;t<3;t++)this.shapers[t].curve=A}break;case"oversample":if("string"==typeof e&&("none"===e||"2x"===e||"4x"===e))for(let A=0;A<3;A++)this.shapers[A].oversample=e}}params(){return{state:this.isActive,gain:this.preGain.gain.value,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,level:this.level,samples:this.numberOfSamples,oversample:this.shapers[0].oversample}}}class K extends u{cabinet;inch=-1;tilt=!1;speakerFilter;tiltFilter;constructor(A,t){super(A),this.cabinet=t,this.speakerFilter=A.createBiquadFilter(),this.speakerFilter.type="peaking",this.speakerFilter.frequency.value=40,this.speakerFilter.Q.value=-3,this.speakerFilter.gain.value=0,this.tiltFilter=A.createBiquadFilter(),this.tiltFilter.type="highshelf",this.tiltFilter.frequency.value=3200,this.tiltFilter.Q.value=Math.SQRT1_2,this.tiltFilter.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.cabinet.INPUT),this.cabinet.OUTPUT.connect(this.speakerFilter),this.speakerFilter.connect(this.tiltFilter),this.tiltFilter.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"inch":return this.inch;case"tilt":return this.tilt}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"inch":if("number"==typeof e)switch(e){case-1:this.inch=-1,this.speakerFilter.frequency.value=40,this.speakerFilter.Q.value=Math.SQRT1_2,this.speakerFilter.gain.value=0;break;case 10:this.inch=10,this.speakerFilter.frequency.value=120,this.speakerFilter.Q.value=3,this.speakerFilter.gain.value=9;break;case 12:this.inch=12,this.speakerFilter.frequency.value=80,this.speakerFilter.Q.value=6,this.speakerFilter.gain.value=10;break;case 15:this.inch=15,this.speakerFilter.frequency.value=60,this.speakerFilter.Q.value=9,this.speakerFilter.gain.value=12}break;case"tilt":"boolean"==typeof e&&(this.tilt=e,this.tilt?this.tiltFilter.gain.value=6:this.tiltFilter.gain.value=0)}}params(){return{state:this.isActive,inch:this.inch,tilt:this.tilt}}}class O extends u{preEQ;postFilter;cabinet;constructor(A){super(A),this.cabinet=new M(A),this.preEQ=new H(A),this.postFilter=new K(A,this.cabinet),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preEQ.INPUT),this.preEQ.OUTPUT.connect(this.postFilter.INPUT),this.postFilter.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"pre":return this.preEQ.params();case"post":return this.postFilter.params();case"cabinet":return this.cabinet.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preEQ.activate(),this.postFilter.activate()):(this.deactivate(),this.preEQ.deactivate(),this.postFilter.deactivate()));break;case"pre":"object"==typeof e&&this.preEQ.param(e);break;case"post":"object"==typeof e&&this.postFilter.param(e);break;case"cabinet":"object"==typeof e&&this.cabinet.param(e)}return this}params(){return{state:this.isActive,pre:this.preEQ.params(),post:this.postFilter.params(),cabinet:this.cabinet.params()}}}function P(A,t){const e=Math.trunc((t-1)/2),s=new Float32Array(t),i=(10**(A/5-1)-.1)/5+1;let r=.4;1===i?r=1:i>1&&i<1.04&&(r=-15.5*i+16.52);for(let A=0;A<e;A++)s[e+A]=r*(1-i**-A+A*i**-e/e),s[e-A]=r*(-1+i**-A-A*i**-e/e);return s[e]=0,s}class X extends u{type="marshall";preamp;constructor(A){super(A),this.preamp=new q(A),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.preamp.connect(),this.input.connect(this.preamp.INPUT),this.preamp.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.type;case"preamp":return this.preamp.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preamp.activate()):(this.deactivate(),this.preamp.deactivate()));break;case"type":if("string"==typeof e){switch(e){case"marshall":this.type="marshall",this.preamp=new q(this.context);break;case"mesa/boogie":this.type="mesa/boogie",this.preamp=new J(this.context);break;case"fender":this.type="fender",this.preamp=new O(this.context)}this.connect()}break;case"preamp":if("object"==typeof e){if(this.preamp instanceof q){const A=e;this.preamp.param(A)}if(this.preamp instanceof J){const A=e;this.preamp.param(A)}if(this.preamp instanceof O){const A=e;this.preamp.param(A)}}}return this.preamp}params(){return{state:this.isActive,type:this.type,preamp:this.preamp.params()}}}class z extends u{convolver;dry;wet;tone;rirs=[];loadError=!1;constructor(A){super(A),this.convolver=A.createConvolver(),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.convolver.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.convolver),this.convolver.connect(this.wet),this.wet.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"buffer":return this.convolver.buffer;case"dry":return this.dry.gain.value;case"wet":return this.wet.gain.value;case"tone":return this.tone.frequency.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"buffer":"number"==typeof e?e>=0&&e<this.rirs.length&&(this.convolver.buffer=this.rirs[e],this.connect()):e instanceof AudioBuffer?(this.convolver.buffer=e,this.connect()):null===e&&(this.convolver.buffer=null,this.input.disconnect(0),this.input.connect(this.output));break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e)}return this}add(A,t){if(A instanceof AudioBuffer)this.convolver.buffer=A,this.rirs.push(A);else if(A instanceof ArrayBuffer){const e=A=>{this.convolver.buffer=A,this.rirs.push(A)};this.context.decodeAudioData(A,e,t??(()=>{}))}return this}preset(A){const{rirs:t,timeout:e,successCallback:s,errorCallback:i,progressCallback:r}=A;for(let A=0,a=t.length;A<a;A++){const a=t[A];"string"==typeof a?this.load({rir:a,index:A,timeout:e,successCallback:s,errorCallback:i,progressCallback:r}):this.rirs[A]=a}}params(){return{state:this.isActive,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value}}activate(){return this.isActive=!0,this.connect(),this}deactivate(){return this.isActive=!1,this.connect(),this}load(A){const{rir:t,index:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A,n=new XMLHttpRequest;n.timeout=s??6e4,n.ontimeout=A=>{!this.loadError&&r&&r(A,"timeout"),this.loadError=!0},n.onprogress=A=>{this.loadError?n.abort():a&&a(A)},n.onerror=A=>{!this.loadError&&r&&r(A,"error"),this.loadError=!0},n.onload=A=>{if(200===n.status){const t=n.response,s=t=>{this.rirs[e]=t;for(const A of this.rirs)if(void 0===A)return;i&&i(A)},a=A=>{r&&r(A,"decode")};this.context.decodeAudioData(t,s,a)}},n.open("GET",t,!0),n.responseType="arraybuffer",n.send(null)}}class j extends u{amplitude;constructor(A){super(A),this.amplitude=A.createGain(),this.amplitude.gain.value=0,this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain))}connect(){return this.input.disconnect(0),this.amplitude.disconnect(0),this.isActive?(this.input.connect(this.amplitude),this.amplitude.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"depth":return this.depth.gain.value;case"rate":return this.rate.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"depth":"number"==typeof e&&(this.depth.gain.value=e);break;case"rate":"number"==typeof e&&(this.rate.value=e)}return this}params(){return{state:this.isActive,depth:this.depth.gain.value,rate:this.rate.value}}}class W extends u{static MAX_DELAY_TIME=1;splitter;merger;delay;gainL;gainR;constructor(A){super(A),this.splitter=A.createChannelSplitter(2),this.merger=A.createChannelMerger(2),this.delay=A.createDelay(W.MAX_DELAY_TIME),this.gainL=A.createGain(),this.gainR=A.createGain(),this.delay.delayTime.value=0,this.gainL.gain.value=1,this.gainR.gain.value=-1,this.deactivate()}start(){}stop(){}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.splitter.disconnect(0),this.splitter.disconnect(1),this.gainL.disconnect(0),this.gainR.disconnect(0),this.merger.disconnect(0),this.isActive?(this.input.connect(this.merger,0,0),this.input.connect(this.merger,0,1),this.input.connect(this.delay),this.delay.connect(this.splitter),this.splitter.connect(this.gainL,0,0),this.splitter.connect(this.gainR,1,0),this.gainL.connect(this.merger,0,0),this.gainR.connect(this.merger,0,1),this.merger.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value}}}class V extends u{amplitude;constructor(A){super(A),this.amplitude=A.createGain(),this.amplitude.gain.value=1,this.lfo.type="sine",this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain))}connect(){return this.input.disconnect(0),this.amplitude.disconnect(0),this.isActive?(this.input.connect(this.amplitude),this.amplitude.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.lfo.type;case"depth":return this.depth.gain.value;case"rate":return this.rate.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":"string"==typeof e&&(this.lfo.type=e);break;case"depth":"number"==typeof e&&(this.depth.gain.value=e);break;case"rate":"number"==typeof e&&(this.rate.value=e)}return this}params(){return{state:this.isActive,type:this.lfo.type,depth:this.depth.gain.value,rate:this.rate.value}}}class VocalCancelerProcessor extends OverlapAddProcessor{instance=null;algorithm="time";depth=0;minFrequency=200;maxFrequency=8e3;threshold=.05;isActive=!0;constructor(A){super(A),this.port.onmessage=A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"algorithm":"string"==typeof e&&(this.algorithm=e);break;case"depth":"number"==typeof e&&(this.depth=e);break;case"minFrequency":"number"==typeof e&&(this.minFrequency=e);break;case"maxFrequency":"number"==typeof e&&(this.maxFrequency=e);break;case"threshold":"number"==typeof e&&(this.threshold=e)}}}processOverlapAdd(A,t){if(null===this.instance)return!1;const e=A[0],s=t[0];if(0===e.length||0===s.length)return!0;if(2!==e.length||2!==s.length){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}if(!this.isActive||0===this.depth){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}const i=this.instance.exports,r=i.memory.buffer,a=i.alloc_memory_inputLs(this.frameSize),n=i.alloc_memory_inputRs(this.frameSize),g=new Float32Array(r,a,this.frameSize),o=new Float32Array(r,n,this.frameSize);switch(g.set(e[0]),o.set(e[1]),this.algorithm){case"time":{const A=i.vocalcancelerL(this.depth,this.frameSize),t=i.vocalcancelerR(this.depth,this.frameSize);s[0].set(new Float32Array(r,A,this.frameSize)),s[1].set(new Float32Array(r,t,this.frameSize));break}case"spectrum":{const A=i.vocalcanceler_on_spectrum(sampleRate,this.minFrequency,this.maxFrequency,this.threshold,this.frameSize),t=A+this.frameSize*Float32Array.BYTES_PER_ELEMENT,a=new Float32Array(r,A,this.frameSize),n=new Float32Array(r,t,this.frameSize);for(let A=0;A<this.frameSize;A++)s[0][A]=(1-this.depth)*e[0][A]+this.depth*a[A],s[1][A]=(1-this.depth)*e[1][A]+this.depth*n[A];break}}return!0}}class Z extends u{processor;algorithm="time";minFrequency=200;maxFrequency=8e3;threshold=.05;constructor(A){super(A),this.depth.gain.value=0,this.processor=new AudioWorkletNode(this.context,VocalCancelerProcessor.name),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"algorithm":return this.algorithm;case"depth":return this.depth.gain.value;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"threshold":return this.threshold}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"algorithm":if("string"==typeof e){this.algorithm=e;const A={algorithm:e};this.processor.port.postMessage(A)}break;case"depth":if("number"==typeof e){this.depth.gain.value=e;const A={depth:e};this.processor.port.postMessage(A)}break;case"minFrequency":if("number"==typeof e){this.minFrequency=e;const A={minFrequency:e};this.processor.port.postMessage(A)}break;case"maxFrequency":if("number"==typeof e){this.maxFrequency=e;const A={maxFrequency:e};this.processor.port.postMessage(A)}break;case"threshold":if("number"==typeof e){this.threshold=e;const A={threshold:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,algorithm:this.algorithm,depth:this.depth.gain.value,minFrequency:this.minFrequency,maxFrequency:this.maxFrequency,threshold:this.threshold}}}class _ extends u{auto=!1;lowpass;envelopeFollower;sensitivity;depthRate=0;constructor(A){super(A),this.lowpass=A.createBiquadFilter(),this.envelopeFollower=A.createWaveShaper(),this.sensitivity=A.createBiquadFilter(),this.lowpass.type="lowpass",this.lowpass.frequency.value=this.auto?20:350,this.lowpass.Q.value=1,this.lowpass.gain.value=0,this.envelopeFollower.curve=new Float32Array([1,0,1]),this.sensitivity.type="lowpass",this.sensitivity.frequency.value=350,this.sensitivity.Q.value=1,this.sensitivity.gain.value=0,this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.connect()}stop(A,t){super.stop(A,t),!this.auto&&this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.lowpass.frequency))}connect(){return this.input.disconnect(0),this.sensitivity.disconnect(0),this.envelopeFollower.disconnect(0),this.lowpass.disconnect(0),this.depth.disconnect(0),this.isActive?this.auto?(this.input.connect(this.sensitivity),this.sensitivity.connect(this.output),this.input.connect(this.envelopeFollower),this.envelopeFollower.connect(this.lowpass),this.lowpass.connect(this.depth),this.depth.connect(this.sensitivity.frequency)):(this.input.connect(this.lowpass),this.lowpass.connect(this.output),this.lfo.connect(this.depth),this.depth.connect(this.lowpass.frequency)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"auto":return this.auto;case"cutoff":return this.auto?this.sensitivity.frequency.value:this.lowpass.frequency.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"resonance":return this.auto?this.sensitivity.Q.value:this.lowpass.Q.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"auto":"boolean"==typeof e&&(this.auto=e,this.connect());break;case"cutoff":"number"==typeof e&&(this.auto?(this.sensitivity.frequency.value=e,this.lowpass.frequency.value=20):this.lowpass.frequency.value=e);break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.auto?1e4*e:this.lowpass.frequency.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"resonance":"number"==typeof e&&(this.auto?(this.sensitivity.Q.value=e,this.lowpass.Q.value=1):this.lowpass.Q.value=e)}return this}params(){return{state:this.isActive,auto:this.auto,cutoff:this.auto?this.sensitivity.frequency.value:this.lowpass.frequency.value,depth:this.auto?this.depth.gain.value:this.depthRate,rate:this.rate.value,resonance:this.auto?this.sensitivity.Q.value:this.lowpass.Q.value}}}class ${static NUMBER_OF_INPUTS=2;static NUMBER_OF_OUTPUTS=2;context;destination;modules=[];mastervolume;processor;analyser;recorder;autopanner;bitcrusher;chorus;compressor;delay;envelopegenerator;equalizer;filter;flanger;fuzz;listener;noisegate;noisesuppressor;overdrive;panner;phaser;pitchshifter;preamp;reverb;ringmodulator;stereo;tremolo;vocalcanceler;wah;runningAnalyser=!1;mixed=!1;constructor(A){this.context=A,this.destination=A.destination,this.mastervolume=A.createGain(),this.processor=new AudioWorkletNode(A,SoundModuleProcessor.name),this.analyser=new C(A),this.recorder=new l(A),this.autopanner=new E(A),this.bitcrusher=new p(A),this.chorus=new d(A),this.compressor=new f(A),this.delay=new y(A),this.envelopegenerator=new m(A),this.equalizer=new D(A),this.filter=new w(A),this.flanger=new b(A),this.fuzz=new F(A),this.listener=new v(A),this.noisegate=new N(A),this.noisesuppressor=new k(A),this.overdrive=new R(A),this.panner=new S(A),this.phaser=new U(A),this.pitchshifter=new G(A),this.preamp=new X(A),this.reverb=new z(A),this.ringmodulator=new j(A),this.stereo=new W(A),this.tremolo=new V(A),this.vocalcanceler=new Z(A),this.wah=new _(A),this.modules=[this.compressor,this.wah,this.bitcrusher,this.overdrive,this.fuzz,this.preamp,this.equalizer,this.filter,this.pitchshifter,this.tremolo,this.ringmodulator,this.phaser,this.flanger,this.chorus,this.delay,this.reverb,this.panner,this.autopanner]}connect(A){if(A.disconnect(0),this.modules.length>0){const t=this.modules[0].INPUT;if(null===t)return;A.connect(t)}else A.connect(this.mastervolume);for(let A=0,t=this.modules.length;A<t;A++){const t=this.modules[A].OUTPUT;if(null!==t)if(t.disconnect(0),A<this.modules.length-1){const e=this.modules[A+1].INPUT;if(null===e)continue;t.connect(e)}else t.connect(this.mastervolume)}this.mastervolume.connect(this.destination),this.mastervolume.connect(this.analyser.INPUT),this.mastervolume.connect(this.recorder.INPUT),this.recorder.OUTPUT.connect(this.destination)}disconnect(){this.processor.disconnect(0)}audioDestination(){return this.destination=this.context.destination,this}streamDestination(A){if(this.destination=this.context.createMediaStreamDestination(),A?.sinkId){const{sinkId:t,successCallback:e,errorCallback:s}=A;this.setSinkId(t,e,s)}return this}setSinkId(A,t,e){return this.context.setSinkId&&this.context.setSinkId(A).then((()=>{"function"==typeof t&&t()})).catch((A=>{"function"==typeof e&&e(A)})),this}install(A){const t=new A(this.context);return this.modules.push(t),t}on(A){const t=A??this.context.currentTime;return this.autopanner.start(t),this.bitcrusher.start(t),this.chorus.start(t),this.filter.start(t),this.flanger.start(t),this.fuzz.start(t),this.overdrive.start(t),this.phaser.start(t),this.ringmodulator.start(t),this.tremolo.start(t),this.wah.start(t),this}off(A){const t=A??this.context.currentTime;return this.autopanner.stop(t),this.bitcrusher.stop(t),this.chorus.stop(t),this.filter.stop(t),this.flanger.stop(t),this.fuzz.stop(t),this.overdrive.stop(t),this.phaser.stop(t),this.ringmodulator.stop(t),this.tremolo.stop(t),this.wah.stop(t),this}suspend(){return this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),this.runningAnalyser=!1,this.recorder.stop(),this}mix(){return this.mixed=!0,this}demix(){return this.mixed=!1,this}params(){return{mastervolume:this.mastervolume.gain.value,stereo:this.stereo.params(),compressor:this.compressor.params(),bitcrusher:this.bitcrusher.params(),overdrive:this.overdrive.params(),fuzz:this.fuzz.params(),preamp:this.preamp.params(),wah:this.wah.params(),pitchshifter:this.pitchshifter.params(),equalizer:this.equalizer.params(),filter:this.filter.params(),autopanner:this.autopanner.params(),tremolo:this.tremolo.params(),ringmodulator:this.ringmodulator.params(),phaser:this.phaser.params(),flanger:this.flanger.params(),chorus:this.chorus.params(),delay:this.delay.params(),reverb:this.reverb.params(),panner:this.panner.params(),listener:this.listener.params(),envelopegenerator:this.envelopegenerator.params(),noisegate:this.noisegate.params(),noisesuppressor:this.noisesuppressor.params(),vocalcanceler:this.vocalcanceler.params()}}edit(A){const t=this.modules;return this.modules=A,t}toJSON(){return JSON.stringify(this.params())}init(A){this.mastervolume.disconnect(0),this.processor.disconnect(0),this.analyser.INPUT.disconnect(0),this.recorder.INPUT.disconnect(0);for(const A of this.modules)A.INPUT&&A.INPUT.disconnect(0),A.OUTPUT&&A.OUTPUT.disconnect(0);this.modules.length=0,this.analyser=new C(A),this.recorder=new l(A),this.autopanner=new E(A),this.bitcrusher=new p(A),this.chorus=new d(A),this.compressor=new f(A),this.delay=new y(A),this.envelopegenerator=new m(A),this.equalizer=new D(A),this.filter=new w(A),this.flanger=new b(A),this.fuzz=new F(A),this.listener=new v(A),this.noisegate=new N(A),this.noisesuppressor=new k(A),this.overdrive=new R(A),this.panner=new S(A),this.phaser=new U(A),this.pitchshifter=new G(A),this.preamp=new X(A),this.reverb=new z(A),this.ringmodulator=new j(A),this.stereo=new W(A),this.tremolo=new V(A),this.vocalcanceler=new Z(A),this.wah=new _(A),this.modules=[this.compressor,this.wah,this.bitcrusher,this.overdrive,this.fuzz,this.preamp,this.equalizer,this.filter,this.pitchshifter,this.tremolo,this.ringmodulator,this.phaser,this.flanger,this.chorus,this.delay,this.reverb,this.panner,this.autopanner]}}class OscillatorModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class AA{context;type="linear";time=0;prevFrequency=-1;nextFrequency=0;isActive=!0;constructor(A){this.context=A}ready(A){this.nextFrequency=A;const t=-1===this.prevFrequency?0:this.nextFrequency-this.prevFrequency;this.isActive&&0!==this.time&&0!==t||(this.prevFrequency=this.nextFrequency)}start(A,t){const e=t??this.context.currentTime,s=e+this.time;A.frequency.cancelScheduledValues(e),A.frequency.setValueAtTime(this.prevFrequency,e),"exponential"===this.type?A.frequency.exponentialRampToValueAtTime(this.nextFrequency,s):A.frequency.linearRampToValueAtTime(this.nextFrequency,s)}stop(){this.prevFrequency=this.nextFrequency}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.type;case"time":return this.time}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":"string"==typeof e&&(this.type=e);break;case"time":"number"==typeof e&&(this.time=e)}return this}params(){return{state:this.isActive,type:this.type,time:this.time}}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}}class tA{static OCTAVE=1200;context;source;volume;octave=0;fine=0;custom={real:new Float32Array([0,1]),imag:new Float32Array([0,1])};isActive;paused=!0;constructor(A,t){this.context=A,this.source=A.createOscillator(),this.volume=A.createGain(),this.isActive=t}ready(A){if(!this.isActive)return;const t=this.source.type,e=this.source.frequency.value,s=this.source.detune.value;if(this.paused||(this.source.stop(this.context.currentTime),this.source.disconnect(0)),this.source=this.context.createOscillator(),"custom"===t){const A=this.custom.real,t=this.custom.imag,e=this.context.createPeriodicWave(A,t);this.source.setPeriodicWave(e)}else this.source.type=t;this.source.frequency.value=e,this.source.detune.value=s,this.volume.connect(A)}start(A){this.isActive?(this.source.start(A??this.context.currentTime),this.paused=!1):(this.paused||(this.source.stop(this.context.currentTime),this.paused=!0),this.source.disconnect(0))}stop(A){this.paused||(this.source.stop(A??this.context.currentTime),this.source.disconnect(0),this.paused=!0)}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.source.type;case"octave":return this.octave;case"fine":return this.fine;case"volume":return this.volume.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":if("string"==typeof e)this.source.type=e;else if("object"==typeof e){let{real:A,imag:t}=e;const s=4096;A.length>s&&(A=A.subarray(0,s)),t.length>s&&(t=t.subarray(0,s)),0!==A[0]&&(A[0]=0),0!==t[0]&&(t[0]=0);const i=this.context.createPeriodicWave(A,t);this.source.setPeriodicWave(i),this.custom.real=A,this.custom.imag=t}break;case"octave":"number"==typeof e&&(this.octave=e,this.source.detune.value=this.fine+e*tA.OCTAVE);break;case"fine":"number"==typeof e&&(this.fine=e,this.source.detune.value=e+this.octave*tA.OCTAVE);break;case"volume":"number"==typeof e&&(this.volume.gain.value=e)}return this}get(){return this.source}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}params(){return{state:this.isActive,type:this.source.type,octave:this.octave,fine:this.fine,volume:this.volume.gain.value}}get INPUT(){return this.source}get OUTPUT(){return this.volume}}class eA extends ${sources=[];glide;startTime=0;duration=0;constructor(A){super(A),this.processor=new AudioWorkletNode(A,OscillatorModuleProcessor.name),this.glide=new AA(A)}setup(A){this.sources.length=0;for(let t=0,e=A.length;t<e;t++)this.sources[t]=new tA(this.context,A[t]),this.envelopegenerator.setGenerator(t);return this}ready(A,t){return this.startTime=A??this.context.currentTime,this.duration=t??0,this.envelopegenerator.clear(!0),this}start(A){const t=this.context.currentTime+this.startTime;this.mixed||(this.envelopegenerator.clear(!0),this.connect(this.processor));for(let e=0,s=A.length;e<s&&!(e>=this.sources.length);e++){const s=this.sources[e],i=A[e];s.ready(this.processor),this.envelopegenerator.ready(e,s.INPUT,s.OUTPUT),this.glide.ready(i),this.glide.start(s.INPUT,t),s.start(t)}return this.envelopegenerator.start(t),this.on(t),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this}stop(){const A=this.context.currentTime+this.startTime+this.duration;return this.envelopegenerator.stop(A,!1),this.glide.stop(),this.filter.stop(A),this}param(A){if("string"==typeof A&&"mastervolume"===A)return this.mastervolume.gain.value;for(const[t,e]of Object.entries(A))if("mastervolume"===t)"number"==typeof e&&(this.mastervolume.gain.value=e);return this}get(A){return"number"==typeof A&&A>=0&&A<this.sources.length?this.sources[A]:this.sources}length(){return this.sources.length}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah;case"glide":return this.glide}}params(){return{...super.params(),oscillator:{glide:this.glide.params(),params:this.sources.map((A=>A.params()))}}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}}class OneshotModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class sA extends ${sources=[];resources=[];buffers=[];volumes=[];states=[];settings=[];startTime=0;duration=0;transpose=0;loadError=!1;constructor(A){super(A),this.processor=new AudioWorkletNode(A,OneshotModuleProcessor.name)}setup(A){const{resources:t,settings:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A;for(let A=0,t=e.length;A<t;A++)this.states[A]=!1,this.volumes[A]=this.context.createGain(),this.settings[A]=e[A],this.envelopegenerator.setGenerator(A);for(let A=0,e=t.length;A<e;A++){this.resources[A]=t[A];const e=this.resources[A];"string"==typeof e?this.load({url:e,index:A,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}):this.buffers[A]=e}return this}ready(A,t){return this.startTime=A??0,this.duration=t??0,this.envelopegenerator.clear(!1),this}start(A){const t=this.context.currentTime+this.startTime;this.mixed||(this.envelopegenerator.clear(!1),this.connect(this.processor));for(const e of A){if(e<0||e>=this.settings.length)continue;const{bufferIndex:A,playbackRate:s,loop:i,loopStart:r,loopEnd:a,volume:n}=this.settings[e],g=this.context.createBufferSource();g.buffer=this.buffers[A],g.playbackRate.value=s??1,g.detune.value=100*this.transpose,g.loop=i??!1,g.loopStart=r??0,g.loopEnd=a??g.buffer.duration,this.volumes[e].gain.value=n??1,this.envelopegenerator.ready(e,g,this.volumes[e]),this.volumes[e].connect(this.processor),g.loop?g.start(t,t+g.loopStart,g.loopEnd-t):g.start(t),this.sources[e]=g,this.states[e]=!0}return this.envelopegenerator.start(t),this.on(t),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this}stop(A){const t=this.context.currentTime+this.startTime+this.duration;return A.forEach((A=>{this.states[A]&&(this.sources[A].stop(t),this.states[A]=!1)})),this.envelopegenerator.stop(t),this.envelopegenerator.clear(!1),this.off(t),this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"transpose":return this.transpose}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"transpose":"number"==typeof e&&(this.transpose=e)}return this}get(A){return"number"==typeof A&&A>=0&&A<this.buffers.length?this.buffers[A]:this.buffers}reset(A,t,e){if(A>=0&&A<this.settings.length)switch(t){case"bufferIndex":case"playbackRate":case"loopStart":case"loopEnd":case"volume":"number"==typeof e&&(this.settings[A][t]=e);break;case"loop":"boolean"==typeof e&&(this.settings[A][t]=e)}return this}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),transpose:this.transpose}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}load(A){const{url:t,index:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A,n=new XMLHttpRequest;n.timeout=s??6e4,n.ontimeout=A=>{!this.loadError&&r&&r(A,"timeout"),this.loadError=!0},n.onprogress=A=>{this.loadError?n.abort():a&&a(A)},n.onerror=A=>{!this.loadError&&r&&r(A,"error"),this.loadError=!0},n.onload=A=>{if(200===n.status){const t=n.response;if(!(t instanceof ArrayBuffer))return;const s=t=>{this.buffers[e]=t;for(const A of this.buffers)if(void 0===A)return;i&&i(A,this.buffers)},a=A=>{r&&r(A,"decode")};this.context.decodeAudioData(t,s,a)}},n.open("GET",t,!0),n.responseType="arraybuffer",n.send(null)}}class NoiseModuleProcessor extends AudioWorkletProcessor{instance=null;processing=!1;type="whitenoise";constructor(){super(),this.port.onmessage=A=>{A.data instanceof ArrayBuffer?WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A})):("boolean"==typeof A.data.processing&&(this.processing=A.data.processing),A.data.type&&(this.type=A.data.type))}}process(A,t){if(null===this.instance)return!1;if(!this.processing)return!0;const e=t[0],s=this.instance.exports,i=s.memory.buffer;for(let A=0,t=e.length;A<t;A++){const t=e[A].length;switch(this.type){case"whitenoise":{const r=s.whitenoise(currentFrame);e[A].set(new Float32Array(i,r,t));break}case"pinknoise":{const r=s.pinknoise(currentFrame);e[A].set(new Float32Array(i,r,t));break}case"browniannoise":{const r=s.browniannoise(currentFrame);e[A].set(new Float32Array(i,r,t));break}}}return!0}}class iA extends ${type="whitenoise";constructor(A){super(A),this.processor=new AudioWorkletNode(A,NoiseModuleProcessor.name),this.envelopegenerator.setGenerator(0),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t)})).catch((A=>{throw A}))}setup(){return this}ready(){return this}start(){const A=this.context.currentTime;if(!this.mixed){const A=this.envelopegenerator.getGenerator(0);A&&this.connect(A)}this.envelopegenerator.ready(0,this.processor,null),this.envelopegenerator.start(A),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this.on(A);return this.processor.port.postMessage({processing:!0}),this}stop(){const A=this.context.currentTime;this.envelopegenerator.stop(A),this.off(A);return this.processor.port.postMessage({processing:!1}),this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"type":return this.type}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"type":if("string"==typeof e&&("whitenoise"===e||"pinknoise"===e||"browniannoise"===e)){this.type=e;const A={type:e};this.processor.port.postMessage(A)}}return this}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}disconnect(){const A=this.envelopegenerator.getGenerator(0);A&&A.disconnect(0)}params(){return{...super.params(),type:this.type}}get INPUT(){const A=this.envelopegenerator.getGenerator(0);return A||null}get OUTPUT(){return this.mastervolume}}class AudioModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];e.length>0&&e[0].length>0&&currentFrame%16384==0&&this.port.postMessage({});for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class rA extends ${source;buffer=null;currentTime=0;stopped=!0;speed=1;constructor(A){super(A),this.processor=new AudioWorkletNode(A,AudioModuleProcessor.name),this.source=A.createBufferSource()}setup(A){const{decodeCallback:t,updateCallback:e,endedCallback:s,errorCallback:i}=A??{};return t&&(this.decodeCallback=t),e&&(this.updateCallback=e),s&&(this.endedCallback=s),i&&(this.errorCallback=i),this.envelopegenerator.setGenerator(0),this.envelopegenerator.param({attack:0,decay:.01,sustain:1,release:.01}),this}ready(A){if(A instanceof ArrayBuffer){this.buffer=null;const t=A=>{this.buffer=A,this.analyser.start("timeoverview",0,this.buffer),this.analyser.start("timeoverview",1,this.buffer),this.decodeCallback&&this.decodeCallback(this.buffer)};this.context.decodeAudioData(A,t,this.errorCallback)}else A instanceof AudioBuffer&&(this.buffer=A);return this}start(A,t){if(null===this.buffer||!this.stopped)return this;const e=this.context.currentTime,s=A??0,i=t??this.buffer.duration;this.currentTime=i>=0?s>=0&&s<=i?s:0:s>=0&&s<=this.buffer.duration?s:0;const r=this.source.playbackRate.value,a=this.source.detune.value,n=this.source.loop;this.source=this.context.createBufferSource(),this.source.buffer=this.buffer,this.source.playbackRate.value=r,this.source.detune.value=a,this.source.loop=n,this.source.loopStart=this.currentTime,this.source.loopEnd=i>=0?i:this.buffer.duration,this.envelopegenerator.ready(0,this.source,this.processor),this.connect(this.processor);const g=this.computePlaybackRate();i>=0?this.source.start(e,this.currentTime,i-s):this.source.start(e,this.currentTime,this.buffer.duration-this.currentTime),this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.stopped=!1,this.envelopegenerator.start(e),i>=0?this.envelopegenerator.stop(e+(i-s)/g,!0):this.envelopegenerator.stop(e+(this.buffer.duration-s)/g,!0),this.on(e);const o=this.analyser.domain("timeoverview",0),I=this.analyser.domain("timeoverview",1);return this.processor.port.onmessage=()=>{if(null!==this.buffer)if(Math.abs(this.source.loopEnd-this.currentTime)>.5){const A=this.computePlaybackRate();this.currentTime+=16384/this.buffer.sampleRate*A,this.updateCallback&&this.updateCallback(this.source,this.currentTime),o.update(this.currentTime),I.update(this.currentTime)}else this.source.loop?(this.stop(),"sprite"===o.param("mode")?this.start(this.source.loopStart,this.source.loopEnd):this.start(0,this.buffer.duration)):this.end();else this.end()},this}stop(){if(null===this.buffer||this.stopped)return this;const A=this.context.currentTime;return this.source.stop(A),this.off(A),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),this.stopped=!0,this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"playbackRate":return this.source.playbackRate.value;case"detune":return this.source.detune.value;case"speed":return this.speed;case"loop":return this.source.loop;case"currentTime":return this.currentTime;case"duration":return this.source.buffer?.duration??0;case"sampleRate":return this.source.buffer?.sampleRate??this.context.sampleRate;case"numberOfChannels":return this.source.buffer?.numberOfChannels??0}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"playbackRate":if("number"==typeof e&&e>0){this.source.playbackRate.value=e;const A=this.computePlaybackRate(),t=this.context.currentTime,s=this.currentTime,i=this.source.buffer?.duration??0;this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(i-s)/A,!0)}break;case"detune":if("number"==typeof e){this.source.detune.value=e;const A=this.computePlaybackRate(),t=this.context.currentTime,s=this.currentTime,i=this.source.buffer?.duration??0;this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(i-s)/A,!0)}break;case"speed":if("number"==typeof e&&e>0){this.speed=e;const A=this.pitchshifter.param("pitch");this.pitchshifter.param({pitch:A,speed:this.speed}),this.source.playbackRate.value=this.speed;const t=this.context.currentTime,s=this.currentTime,i=this.source.buffer?.duration??0;this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(i-s)/this.speed,!0)}break;case"loop":"boolean"==typeof e&&(this.source.loop=e);break;case"currentTime":"number"==typeof e&&(this.currentTime=e,this.stopped||(this.stop(),this.start(e)))}return this}get(){return this.source}end(){return this.stop(),this.currentTime=0,this.endedCallback&&this.endedCallback(this.source,0),this}has(){return null!==this.buffer}paused(){return this.stopped}fadeIn(A){if("number"!=typeof A)return this.envelopegenerator.param("attack");this.envelopegenerator.param({attack:A});const t=this.context.currentTime,e=this.currentTime,s=this.source.buffer?.duration??0,i=this.computePlaybackRate();return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}fadeOut(A){if("number"!=typeof A)return this.envelopegenerator.param("release");this.envelopegenerator.param({release:A});const t=this.context.currentTime,e=this.currentTime,s=this.source.buffer?.duration??0,i=this.computePlaybackRate();return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}slice(A,t){if(null===this.buffer)return null;const e=this.buffer.duration,s=this.buffer.sampleRate,i=this.buffer.numberOfChannels,r=Math.trunc((A??0)*s),a=Math.trunc((t??e)*s),n=i>0?this.buffer.getChannelData(0):null,g=i>1?this.buffer.getChannelData(1):null,o=a-r;switch(i){case 1:{if(null===n)return null;const A=new Float32Array(o);for(let t=r;t<a;t++)A[t-r]=n[t];const t=this.context.createBuffer(1,o,s);return t.copyToChannel(A,0),t}case 2:{if(null===n||null===g)return null;const A=new Float32Array(o),t=new Float32Array(o);for(let e=r;e<a;e++)A[e-r]=n[e],t[e-r]=g[e];const e=this.context.createBuffer(2,o,s);return e.copyToChannel(A,0),e.copyToChannel(t,1),e}}return null}sprite(A){return null===this.buffer?null:Object.keys(A).reduce(((t,e)=>{const s=A[e],i=this.slice(...s);return null!==i&&(t[e]=i),t}),{})}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),playbackRate:this.source.playbackRate.value,detune:this.source.detune.value,speed:this.speed,loop:this.source.loop,currentTime:this.currentTime,duration:this.buffer?.duration??0,sampleRate:this.buffer?.sampleRate??this.context.sampleRate,numberOfChannels:this.buffer?.numberOfChannels??0,vocalcanceler:this.vocalcanceler.params()}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}computePlaybackRate(){return this.source.playbackRate.value*2**(this.source.detune.value/1200)}}class MediaModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class aA extends ${source=null;media=null;ext="";autoplay=!1;mediaSource=null;sourceBuffer=null;file="";mimeType="";listeners={};constructor(A){super(A),this.processor=new AudioWorkletNode(A,MediaModuleProcessor.name),this.onSourceOpen=this.onSourceOpen.bind(this),this.onSourceEnded=this.onSourceEnded.bind(this),this.onSourceClose=this.onSourceClose.bind(this),this.onSourceBufferUpdateEnd=this.onSourceBufferUpdateEnd.bind(this),this.onSourceBufferError=this.onSourceBufferError.bind(this)}setup(A){this.envelopegenerator.setGenerator(0),this.envelopegenerator.param({attack:0,decay:.01,sustain:1,release:.01});const{media:t,formats:e,listeners:s,autoplay:i}=A;if(!t)return this;this.media=t;for(const A of e??[]){const t=`audio/${A}`,e=`video/${A}`,s=this.media.canPlayType(t),i=this.media.canPlayType(e);if(/^(?:maybe|probably)/.test(s)||/^(?:maybe|probably)/.test(i)){this.ext=A;break}}return s&&(this.listeners=s,Object.keys(s).forEach((A=>{const t=s[A];"function"==typeof t&&(s[A]=t),this.media&&this.media.addEventListener(A,t,!1)}))),this.media.addEventListener("loadstart",(()=>{null!==this.media&&(null!==this.source&&this.media===t||(this.source=this.context.createMediaElementSource(this.media)))}),!1),this.media.addEventListener("ended",(()=>{null!==this.media&&(this.media.pause(),this.off(this.context.currentTime),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1))}),!1),this.autoplay=i??!1,this.autoplay&&null===this.source&&(this.source=this.context.createMediaElementSource(this.media)),this.autoplay&&this.media.src&&this.context.resume().then((()=>{this.start(this.media?.currentTime??0)})).catch((A=>{this.listeners.error&&this.listeners.error(A)})),this}ready(A,t){if(null===this.media)return this;if(this.mediaSource&&"open"===this.mediaSource.readyState&&(this.mediaSource.endOfStream(),window.URL.revokeObjectURL(this.media.src),this.mediaSource.removeEventListener("sourceopen",this.onSourceOpen,!1),this.mediaSource.removeEventListener("sourceended",this.onSourceEnded,!1),this.mediaSource.removeEventListener("sourceclose",this.onSourceClose,!1),this.sourceBuffer&&(this.sourceBuffer.removeEventListener("updateend",this.onSourceBufferUpdateEnd,!1),this.sourceBuffer.removeEventListener("error",this.onSourceBufferError,!1))),t){if(!MediaSource||!MediaSource.isTypeSupported(t))return this;this.media.removeAttribute("src"),this.media.load(),this.mediaSource=new MediaSource,this.media.src=window.URL.createObjectURL(this.mediaSource),this.mimeType=t,this.file=A,this.mediaSource.addEventListener("sourceopen",this.onSourceOpen,!1),this.mediaSource.addEventListener("sourceended",this.onSourceEnded,!1),this.mediaSource.addEventListener("sourceclose",this.onSourceClose,!1)}else A.startsWith("blob:")||""===this.ext?this.media.src=A:this.media.src=`${A}.${this.ext}`;return this}start(A,t){return null===this.source||null===this.media||(this.envelopegenerator.ready(0,this.source,this.processor),this.connect(this.processor),this.media.play().then((()=>{if(null===this.media)return;const t=this.context.currentTime;this.media.currentTime=A??0,this.envelopegenerator.start(t),Number.isFinite(this.media.duration)&&this.envelopegenerator.stop(t+(this.media.duration-this.media.currentTime)/this.media.playbackRate,!0),this.on(t),this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1)})).catch((()=>{this.stop((()=>{null!==this.media&&(this.autoplay&&(this.media.muted=!0,this.media.volume=0),this.start(A))}),t)}))),this}stop(A,t){return null===this.source||null===this.media||this.media.play().then((()=>{null!==this.media&&(this.media.pause(),this.off(this.context.currentTime),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),A&&A())})).catch((A=>{t&&t(A)})),this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"autoplay":return this.autoplay;case"playbackRate":return this.media?.playbackRate??1;case"currentTime":return this.media?.currentTime??0;case"controls":return this.media?.controls??!1;case"loop":return this.media?.loop??!1;case"muted":return this.media?.muted??!1;case"duration":return Number.isNaN(this.media?.duration)?0:this.media?.duration??0}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"playbackRate":if(this.media&&"number"==typeof e&&e>0){this.media.playbackRate=e;const A=this.context.currentTime,t=this.media.currentTime,s=this.media.duration;this.envelopegenerator.start(A),Number.isFinite(s)&&this.envelopegenerator.stop(A+(s-t)/e,!0)}break;case"currentTime":if(this.media&&"number"==typeof e){this.media.currentTime=e;const A=this.context.currentTime,t=this.media.duration,s=this.media.playbackRate;this.envelopegenerator.start(A),Number.isFinite(t)&&this.envelopegenerator.stop(A+(t-e)/s,!0)}break;case"controls":this.media&&"boolean"==typeof e&&(this.media.controls=e);break;case"loop":this.media&&"boolean"==typeof e&&(this.media.loop=e);break;case"muted":this.media&&"boolean"==typeof e&&(this.media.muted=e)}return this}get(){return this.source}hasMedia(){return null!==this.media}hasSource(){return null!==this.source}paused(){return null===this.media||this.media.paused}fadeIn(A){if("number"!=typeof A)return this.envelopegenerator.param("attack");this.envelopegenerator.param({attack:A});const t=this.context.currentTime,e=this.media?.currentTime??0,s=this.media?.duration??0,i=this.media?.playbackRate??1;return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}fadeOut(A){if("number"!=typeof A)return this.envelopegenerator.param("release");this.envelopegenerator.param({release:A});const t=this.context.currentTime,e=this.media?.currentTime??0,s=this.media?.duration??0,i=this.media?.playbackRate??1;return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}requestPictureInPicture(){return this.media instanceof HTMLVideoElement&&"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled?this.media.disablePictureInPicture||0===this.media.readyState||this.media===document.pictureInPictureElement?Promise.reject():this.media.requestPictureInPicture():Promise.reject()}exitPictureInPicture(){return this.media instanceof HTMLVideoElement&&"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled?this.media.disablePictureInPicture||0===this.media.readyState||this.media!==document.pictureInPictureElement?Promise.reject():document.exitPictureInPicture():Promise.reject()}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),autoplay:this.autoplay,playbackRate:this.media?.playbackRate??1,controls:this.media?.controls??!1,loop:this.media?.loop??!1,muted:this.media?.muted??!1,currentTime:this.media?.currentTime??0,duration:Number.isNaN(this.media?.duration??0)?0:this.media?.duration??0,vocalcanceler:this.vocalcanceler.params()}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}onSourceOpen(A){if(null===this.mediaSource)return;this.sourceBuffer=this.mediaSource.addSourceBuffer(this.mimeType),this.sourceBuffer.mode="sequence",this.sourceBuffer.addEventListener("updateend",this.onSourceBufferUpdateEnd,!1),this.sourceBuffer.addEventListener("error",this.onSourceBufferError,!1);const t=new Request(this.file);fetch(t).then((A=>A.arrayBuffer())).then((A=>{this.sourceBuffer&&this.sourceBuffer.appendBuffer(A)})).catch((A=>{this.listeners.error&&this.listeners.error(A)})).finally((()=>{this.listeners.sourceopen&&this.listeners.sourceopen(A)}))}onSourceEnded(A){this.listeners.sourceended&&this.listeners.sourceended(A)}onSourceClose(A){this.listeners.sourceclose&&this.listeners.sourceclose(A)}onSourceBufferUpdateEnd(A){this.listeners.updateend&&this.listeners.updateend(A)}onSourceBufferError(A){this.listeners.error&&this.listeners.error(A)}}class StreamModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class nA extends ${sources=[];stream=null;constraints={audio:!0,video:!1};output=!0;track=!1;paused=!0;constructor(A){super(A),this.processor=new AudioWorkletNode(A,StreamModuleProcessor.name)}setup(A){return A&&(this.constraints={...this.constraints,...A}),this}ready(A){return navigator.mediaDevices&&navigator.mediaDevices.getUserMedia&&window.MediaStream?(this.paused=!1,A?.stream?(this.stream=A.stream,Promise.resolve(this.stream)):navigator.mediaDevices.getUserMedia(this.constraints).then((t=>(this.paused||(this.stream=t,A?.successCallback&&A.successCallback(t)),t))).catch((t=>(A?.errorCallback&&A.errorCallback(t),t)))):Promise.reject()}start(){if(null===this.stream)return this;if(this.track){const A=this.stream.getAudioTracks();for(let t=0,e=A.length;t<e;t++)this.sources[t]=this.context.createMediaStreamTrackSource(A[t]),this.sources[t].connect(this.processor),this.connect(this.processor)}else this.sources[0]=this.context.createMediaStreamSource(this.stream),this.sources[0].connect(this.processor),this.connect(this.processor);return this.output||(this.mastervolume.disconnect(0),this.mastervolume.connect(this.analyser.INPUT),this.mastervolume.connect(this.recorder.INPUT),this.recorder.OUTPUT.connect(this.destination)),this.on(this.context.currentTime),this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this}stop(){return this.sources.length=0,this.off(this.context.currentTime),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),this.paused=!0,this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"output":return this.output;case"track":return this.track}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"output":"boolean"==typeof e&&(this.output=e);break;case"track":"boolean"==typeof e&&(this.track=e)}return this}get(A){return"number"==typeof A&&A>=0&&A<this.sources.length?this.sources[A]:this.sources}getStream(){return this.stream}getConstraints(){return this.constraints}setConstraints(A){return this.constraints=A,this}clear(){return this.stop(),this.clearAudioDevices(),this.clearVideoDevices(),this.stream=null,this}clearAudioDevices(){if(null===this.stream)return this;this.stop();const A=this.stream.getAudioTracks();for(const t of A)t.stop();return this}clearVideoDevices(){if(null===this.stream)return this;this.stop();const A=this.stream.getVideoTracks();for(const t of A)t.stop();return this.stream=null,this}devices(){return navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices?navigator.mediaDevices.enumerateDevices():Promise.reject()}streaming(){return!this.paused}setInputDeviceId(A){const t=this.constraints.audio??{};return this.constraints="boolean"==typeof t?{...this.constraints,audio:{deviceId:A}}:{...this.constraints,audio:{...t,deviceId:A}},this}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),output:this.output,track:this.track,noisegate:this.noisegate.params(),noisesuppressor:this.noisesuppressor.params()}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}}class gA extends ${processorName="";options={};moduleURL="";constructor(A){super(A),this.envelopegenerator.setGenerator(0)}setup(A,t){return this.processorName=A,this.options=t??{},this}ready(A,t){return this.moduleURL=A,this.context.audioWorklet.addModule(this.moduleURL,t??{credentials:"same-origin"}).then((()=>{this.processor=new AudioWorkletNode(this.context,this.processorName,this.options)}))}start(){const A=this.envelopegenerator.getGenerator(0);if(null===A)return this;const t=this.context.currentTime;return this.mixed||(this.envelopegenerator.clear(!0),this.processor.disconnect(0),this.connect(A)),this.envelopegenerator.ready(0,this.processor,null),this.envelopegenerator.start(t),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this.on(t),this}stop(){const A=this.context.currentTime;return this.envelopegenerator.stop(A),this.off(A),this}postMessage(A){return this.processor.port.postMessage(A),this}onMessage(A){return this.processor.port.onmessage=A,this}onMessageError(A){return this.processor.port.onmessageerror=A,this}map(){return this.processor.parameters}get(){return this.processor}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}suspend(){super.suspend();const A=this.envelopegenerator.getGenerator(0);return this.processor&&A&&(A.disconnect(0),this.processor.connect(A)),this}get INPUT(){const A=this.envelopegenerator.getGenerator(0);return A||null}get OUTPUT(){return this.mastervolume}}class MixerModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class oA extends ${sources=[];gainNodes=[];constructor(A){super(A),this.processor=new AudioWorkletNode(A,MixerModuleProcessor.name)}setup(){return this}ready(){return this}start(A,t){this.sources=A;for(let A=0,e=this.sources.length;A<e;A++){const e=this.sources[A],s=this.context.currentTime;e.off(s),e.suspend(),e.mix(),e.INPUT&&(this.gainNodes[A]=this.context.createGain(),this.gainNodes[A].gain.value=t?t[A]:1,e.disconnect(),e.INPUT.connect(this.gainNodes[A]),this.gainNodes[A].connect(this.processor))}this.connect(this.processor);const e=this.context.currentTime;return this.on(e),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this}stop(){const A=this.context.currentTime;this.off(A),this.suspend();for(const A of this.sources)A.demix(),A.INPUT&&(A.disconnect(),A.connect(A.INPUT));for(const A of this.gainNodes)A.disconnect(0);return this}param(A){if("string"==typeof A&&"mastervolume"===A)return this.mastervolume.gain.value;for(const[t,e]of Object.entries(A))if("mastervolume"===t)"number"==typeof e&&(this.mastervolume.gain.value=e);return this}get(){return this.sources}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}}class IA{midiAccess=null;inputs=[];outputs=[];constructor(){}setup(A){if(!navigator.requestMIDIAccess)return Promise.reject();const{options:t,successCallback:e,errorCallback:s}=A;return navigator.requestMIDIAccess(t).then((A=>{this.midiAccess=A,A.inputs.forEach((A=>{this.inputs.push(A)})),A.outputs.forEach((A=>{this.outputs.push(A)})),e&&e(this.midiAccess,this.inputs,this.outputs)})).catch((A=>{s&&s(A)}))}get(){return this.midiAccess}}function hA(A){return A.replace(/^.+?\{/s,"").replace(/\};?$/s,"")}function cA(A){return window.URL.createObjectURL(function(A){return new Blob([hA(A)],{type:"text/javascript"})}(A))}const CA=new Map([["T","TEMPO"],["O","OCTAVE"],["C","NOTE"],["D","NOTE"],["E","NOTE"],["F","NOTE"],["G","NOTE"],["A","NOTE"],["B","NOTE"],["+","NOTE"],["-","NOTE"],["#","NOTE"],["R","REST"],["0","NUMBER"],["1","NUMBER"],["2","NUMBER"],["3","NUMBER"],["4","NUMBER"],["5","NUMBER"],["6","NUMBER"],["7","NUMBER"],["8","NUMBER"],["9","NUMBER"],[".","NUMBER"],["&","TIE"],[" ","SPACE"],[void 0,"EOS"]]);class QA{_id;_type;_token;_value;constructor(A,t,e){this._id=A,this._type=t,this._token=e,this._value=e?Number(e):-1}get type(){return this._type}get token(){return this._token}get value(){return Number.isNaN(this._value)?-1:this._value}toString(){return JSON.stringify({id:this._id,type:this._type,token:this._token,value:this._value})}}class BA{static id=0;tokens=[];notes=[];numbers=[];constructor(A){this.tokens=A.trim().toUpperCase().split("").reverse()}get(){let A=this.tokens.pop(),t=CA.get(A);if(BA.id++,!t)return new QA(BA.id.toString(10),"UNKNOWN",A);for(;"SPACE"===t;)if(A=this.tokens.pop(),t=CA.get(A),!t)return new QA(BA.id.toString(10),"UNKNOWN",A);if("EOS"===t)return new QA(BA.id.toString(10),"EOS",A);switch(this.notes.length=0,this.numbers.length=0,t){case"TEMPO":if(A)return new QA(BA.id.toString(10),"TEMPO",A);break;case"OCTAVE":if(A)return new QA(BA.id.toString(10),"OCTAVE",A);break;case"NOTE":if(A){if(this.notes.push(A),A=this.tokens.pop(),!A)return new QA(BA.id.toString(10),"NOTE",this.notes.join(""));if(t=CA.get(A),!t)return new QA(BA.id.toString(10),"UNKNOWN",A);for(;"NOTE"===t;){if(this.notes.push(A),A=this.tokens.pop(),!A)return new QA(BA.id.toString(10),"NOTE",this.notes.join(""));if(t=CA.get(A),!t)return new QA(BA.id.toString(10),"UNKNOWN",A)}return this.tokens.push(A),new QA(BA.id.toString(10),"NOTE",this.notes.join(""))}break;case"REST":if(A)return new QA(BA.id.toString(10),"REST",A);break;case"NUMBER":if(A){if(this.numbers.push(A),A=this.tokens.pop(),!A)return new QA(BA.id.toString(10),"NUMBER",this.numbers.join(""));if(t=CA.get(A),!t)return new QA(BA.id.toString(10),"UNKNOWN",A);for(;"NUMBER"===t;){if(this.numbers.push(A),A=this.tokens.pop(),!A)return new QA(BA.id.toString(10),"NUMBER",this.numbers.join(""));if(t=CA.get(A),!t)return new QA(BA.id.toString(10),"UNKNOWN",A)}return this.tokens.push(A),new QA(BA.id.toString(10),"NUMBER",this.numbers.join(""))}break;case"TIE":if(A)return new QA(BA.id.toString(10),"TIE",A)}return null}}class lA{static indent=0;_id;_operator;_left;_right;constructor(A,t,e,s){this._id=A,this._operator=t,this._left=e,this._right=s}concat(A){this._right=A}get operator(){return this._operator}get left(){return this._left}get right(){return this._right}clear(){lA.indent=0}toString(){let A="";for(let t=0;t<lA.indent;t++)A+=" ";return lA.indent++,`\n${A} ${this._operator.token} (id = ${this._id})\n${A} /\\\n${A}${this._left?.operator.token??""}${null!==this._right&&void 0!==this._right._operator.token?this.toString.call(this._right):"EOS"}\n`}}class uA{_token;constructor(A){this._token=A}get token(){return this._token}}class EA{static id=0;tokenizer;syntaxTree=[];constructor(A){this.tokenizer=A}parse(){BA.id=0;let A=this.tokenizer.get(),t=this.tokenizer.get();for(;;){if(!A||!t)return this.syntaxTree;switch(EA.id+=2,A.type){case"TEMPO":if("NUMBER"===t.type){const e=new lA((EA.id-0).toString(10),t,null,null),s=new lA((EA.id-1).toString(10),A,e,null);this.syntaxTree.push(s);break}return new uA(A);case"OCTAVE":if(this.syntaxTree.length>0&&"NUMBER"===t.type){const e=new lA((EA.id-0).toString(10),t,null,null),s=new lA((EA.id-1).toString(10),A,e,null);this.syntaxTree[this.syntaxTree.length-1].concat(s),this.syntaxTree.push(s);break}return new uA(A);case"NOTE":if(this.syntaxTree.length>0&&"NUMBER"===t.type){const e=new lA((EA.id-0).toString(10),t,null,null),s=new lA((EA.id-1).toString(10),A,e,null);this.syntaxTree[this.syntaxTree.length-1].concat(s),this.syntaxTree.push(s);break}return new uA(A);case"REST":if(this.syntaxTree.length>0&&"NUMBER"===t.type){const e=new lA((EA.id-0).toString(10),t,null,null),s=new lA((EA.id-1).toString(10),A,e,null);this.syntaxTree[this.syntaxTree.length-1].concat(s),this.syntaxTree.push(s);break}return new uA(A);case"NUMBER":EA.id-=2;break;case"TIE":if(this.syntaxTree.length>0){EA.id--;const t=new lA((EA.id-0).toString(10),A,null,null);this.syntaxTree[this.syntaxTree.length-1].concat(t),this.syntaxTree.push(t);break}return new uA(A);case"EOS":if(this.syntaxTree.length>0){const t=new lA((EA.id-1).toString(10),A,null,null);this.syntaxTree[this.syntaxTree.length-1].concat(t),this.syntaxTree.push(t)}else{const t=new lA((EA.id-1).toString(10),A,null,null);this.syntaxTree.push(t)}return this.syntaxTree}A=t,t=this.tokenizer.get()}}free(){this.syntaxTree.length=0}}const pA=1.0594630943592953;function dA(A){switch(A.toUpperCase()){case"C":case"D":case"E":case"F":case"G":case"A":case"B":case"R":return!0;default:return!1}}function fA(A,t){let e=0;switch(t){case"C":e=3;break;case"D":e=5;break;case"E":e=7;break;case"F":e=8;break;case"G":e=10;break;case"A":e=12;break;case"B":e=14;break;case"R":return-1}const s=12*(A-1)+e;return s>=0?s:-1}function yA(A){return A>=0?27.5*pA**A:0}function mA(A,t="rect"){if(A<=0)return new Float32Array([]);const e=new Float32Array(A);switch(t){case"rect":for(let t=0;t<A;t++)e[t]=1;break;case"hanning":for(let t=0;t<A;t++)e[t]=.5-.5*Math.cos(2*Math.PI*t/(A-1));break;case"hamming":for(let t=0;t<A;t++)e[t]=.54-.46*Math.cos(2*Math.PI*t/(A-1));break;case"blackman":{const t=.16,s=(1-t)/2,i=.5,r=t/2;for(let t=0;t<A;t++)e[t]=s-i*Math.cos(2*Math.PI*t/(A-1))+r*Math.cos(4*Math.PI*t/(A-1));break}}return e}let DA=null;function wA(A,t,e){if(null===DA)return;const s=DA.exports,i=s.memory.buffer,r=s.alloc_memory_reals(e),a=s.alloc_memory_imags(e),n=new Float32Array(i,r,e),g=new Float32Array(i,a,e);n.set(A),g.set(t),s.FFT(e),A.set(n),t.set(g)}function bA(A){const{file:t,type:e,successCallback:s,errorCallback:i,progressCallback:r}=A,a=new FileReader;switch(a.onprogress=A=>{r&&r(A)},a.onerror=A=>{if(!i)return;let t;switch(a.error?.code){case a.error?.NOT_FOUND_ERR:t="NOT_FOUND_ERR";break;case a.error?.SECURITY_ERR:t="SECURITY_ERR";break;case a.error?.ABORT_ERR:t="ABORT_ERR";break;case a.error?.NOT_SUPPORTED_ERR:t="NOT_READABLE_ERR";break;default:t="ERR"}i(A,t)},a.onload=A=>{if(!s)return;let t=a.result;switch(e){case"text":"string"==typeof t&&(t=t.replace(/<(\/?script.*?)>/gi,"&lt;$1&gt;"));break;case"json":"string"==typeof t&&(t=JSON.parse(t.replace(/<(\/?script.*?)>/gi,"&lt;$1&gt;")))}s(A,t)},e){case"arraybuffer":a.readAsArrayBuffer(t);break;case"dataURL":a.readAsDataURL(t);break;case"text":case"json":a.readAsText(t,"UTF-8")}}WebAssembly.instantiateStreaming(fetch("data:application/wasm;base64,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")).then((A=>{DA=A.instance})).catch((A=>A));class FA{_id;_note;_indexes;_frequencies;_start;_stop;_duration;constructor(A){const{id:t,note:e,indexes:s,frequencies:i,start:r,stop:a,duration:n}=A;this._id=t,this._note=e,this._indexes=s,this._frequencies=i,this._start=r,this._stop=a,this._duration=n}concat(A){return new FA({id:this._id,note:`${this._note}&${A.note}`,indexes:this._indexes,frequencies:this._frequencies,start:this._start,duration:this._duration+A.duration,stop:this._start+(this._duration+A.duration)})}get note(){return this._note}get indexes(){return this._indexes}get frequencies(){return this._frequencies}get start(){return this._start}get stop(){return this._stop}get duration(){return this._duration}toString(){return JSON.stringify({id:this._id,note:this._note,indexes:this._indexes,frequencies:this._frequencies,start:this._start,stop:this._stop,duration:this._duration})}}class vA{sequences=[];treeConstructor;syntaxTree="";timeOf4note=0;octave=-1;currentTime=0;errorCallback;constructor(A,t){this.treeConstructor=A,this.errorCallback=t||(A=>{throw A})}get(){EA.id=0;const A=this.treeConstructor.parse();if(!A)return void this.errorCallback(new uA(new QA("1","UNKNOWN","")));if(A instanceof uA)return void this.errorCallback(A);this.timeOf4note=0,this.octave=-1,this.currentTime=0;let t=A[0];for(;null!==t;){if(!t)return void this.errorCallback(new uA(new QA((this.sequences.length+1).toString(10),"UNKNOWN","")));if(t instanceof uA)return void this.errorCallback(t);const A=t.operator,e=A.type,s=t.left,i=null!==s?s.operator.value:-1;switch(e){case"TEMPO":if(i<=0)return void this.errorCallback(new uA(A));this.timeOf4note=60/i,t=t.right;break;case"OCTAVE":if(i<0)return void this.errorCallback(new uA(A));this.octave=i,t=t.right;break;case"NOTE":case"REST":case"TIE":{const A=this.push("TIE"===e?t.right:t);if(A instanceof uA)return void this.errorCallback(A);"TIE"===e?(this.concat(),t=t.right?.right??null):t=t.right;break}case"EOS":t=t.right}}return this.syntaxTree=A[0].toString(),this.treeConstructor.free(),this.sequences}getSyntaxTree(){return this.syntaxTree}push(A){if(null===A)return;const t=A.left,e=A.right;if(null===t||null===e)return;const s=t.operator,i=e.operator;if(null===s&&null===i)return this.push(t),void this.push(e);const r=A.operator.token,a=s.value,n=s.token,g=[],o=[];if(!r)return;for(let A=0,t=r.length;A<t;A++){const t=r.charAt(A);if(!dA(t))continue;let e=fA(this.octave,t);switch(r.charAt(A+1)){case"+":case"#":e++,A++;break;case"-":e--,A++}if(e>=g[0]&&(e-=12),-1!==e&&e<0)return;g.push(e)}for(const A of g){const t=yA(A);if(t<0)return;o.push(t)}let I=0;switch(a){case 1:case 2:case 4:case 8:case 16:case 32:case 64:case 128:case 256:if(n){const A=4/a;n.includes(".")?I+=A*this.timeOf4note*1.5:I+=A*this.timeOf4note}break;case 6:I+=2*this.timeOf4note/3;break;case 12:I+=this.timeOf4note/3;break;case 18:I+=2*this.timeOf4note/9;break;case 24:I+=.5*this.timeOf4note/3;break;case 36:I+=this.timeOf4note/9;break;case 48:I+=.25*this.timeOf4note/3;break;case 72:I+=.5*this.timeOf4note/9;break;case 96:I+=.125*this.timeOf4note/3;break;case 144:I+=.25*this.timeOf4note/9;break;case 192:I+=.0625*this.timeOf4note/3;break;default:return void this.errorCallback(new uA(s))}const h=(this.sequences.length+1).toString(10),c=`${r}${n}`,C=this.currentTime,Q=C+I;this.sequences.push(new FA({id:h,note:c,indexes:g,frequencies:o,start:C,stop:Q,duration:I})),this.currentTime+=I}concat(){const A=this.sequences.pop(),t=this.sequences.pop();t&&A&&this.sequences.push(t.concat(A))}}const NA=()=>{let A=null;self.onmessage=t=>{switch(t.data.type){case"schedule":"number"==typeof t.data.duration&&(A=self.setTimeout((()=>{self.postMessage({type:"next"})}),1e3*t.data.duration));break;case"next":break;case"stop":null!==A&&(self.clearTimeout(A),self.close(),A=null)}}};class kA{sequences=[];source;mml;syntaxTree;previous=null;scheduleWorker=null;currentIndex=0;currentPosition=0;offset=0;constructor(A){const{source:t,mml:e,offset:s,startCallback:i,stopCallback:r,endedCallback:a,errorCallback:n}=A;this.source=t,this.mml=e,this.offset=s??0,i&&(this.startCallback=i),r&&(this.stopCallback=r),a&&(this.endedCallback=a),n&&(this.errorCallback=n);const g=new BA(e),o=new EA(g),I=new vA(o,this.errorCallback),h=I.get();h&&(this.sequences=h),this.syntaxTree=I.getSyntaxTree();const c=cA(NA.toString());this.scheduleWorker=new Worker(c),window.URL.revokeObjectURL(c)}start(A){if(null===this.scheduleWorker)return;if(!this.sequences[this.currentIndex])return this.stop(),void(this.endedCallback&&this.endedCallback());const t=this.sequences[this.currentIndex++];if(A){const A=this.mml.slice(0,this.currentPosition),e=this.mml.slice(this.currentPosition).replace(t.note,`<span class="x-highlight">${t.note}</span>`);this.mml=`${A}${e}`,this.currentPosition+=this.mml.slice(this.currentPosition).indexOf("</span>")+7}else{const A=this.mml.slice(0,this.currentPosition),e=t.note;this.mml=`${A}${e}`,this.currentPosition+=e.length}if(this.source instanceof eA)this.source.ready(0,t.duration).start(t.frequencies),this.startCallback&&this.startCallback(t);else if(this.source instanceof sA){const A=t.indexes.filter((A=>-1!==A)).map((A=>A+this.offset));this.source.ready(0,t.duration).start(A),this.startCallback&&this.startCallback(t,this.offset)}else this.source instanceof iA&&(this.source.start(),this.startCallback&&this.startCallback(t));const e={type:"schedule",duration:t.duration};this.scheduleWorker.postMessage(e),this.scheduleWorker.onmessage=e=>{"next"===e.data.type&&(this.source instanceof eA?this.stopCallback&&this.stopCallback(t):this.source instanceof sA?this.stopCallback&&this.stopCallback(t,this.offset):this.source instanceof iA&&(this.source.stop(),this.stopCallback&&this.stopCallback(t)),this.previous=t,this.start(A))}}stop(){if(null===this.scheduleWorker)return;if(null===this.previous)return;if(this.source instanceof eA)this.source.stop(),this.stopCallback&&this.stopCallback(this.previous);else if(this.source instanceof sA){const A=this.previous.indexes.filter((A=>-1!==A)).map((A=>A+this.offset));this.source.stop(A),this.stopCallback&&this.stopCallback(this.previous,this.offset)}else this.source instanceof iA&&(this.source.stop(),this.stopCallback&&this.stopCallback(this.previous));this.scheduleWorker.postMessage({type:"stop"}),this.scheduleWorker.terminate(),this.scheduleWorker=null}getMML(){return this.mml}getSequences(){return this.sequences}getSyntaxTree(){return this.syntaxTree}has(){return this.sequences.length>0}paused(){return null===this.scheduleWorker}getCurrentIndex(){return this.currentIndex}setCurrentIndex(A){A>=0&&A<this.sequences.length&&(this.currentIndex=A)}}class RA{parts=[];constructor(){}setup(A){return A?.startCallback&&(this.startCallback=A.startCallback),A?.stopCallback&&(this.stopCallback=A.stopCallback),A?.endedCallback&&(this.endedCallback=A.endedCallback),A?.errorCallback&&(this.errorCallback=A.errorCallback),this}ready(A){const{source:t,mmls:e,offset:s}=A;this.stop(),this.clear();const i=this.startCallback,r=this.stopCallback,a=this.endedCallback,n=this.errorCallback;for(const A of e)this.parts.push(new kA({source:t,mml:A,offset:s,startCallback:i,stopCallback:r,endedCallback:a,errorCallback:n}));return this}start(A,t){if(A>=0&&A<this.parts.length){this.parts[A].start(t??!1)}return this}stop(){for(const A of this.parts)A.stop();return this}getMML(A){return A>=0&&A<this.parts.length?this.parts[A].getMML():""}getMMLs(){return this.parts.map((A=>A.getMML()))}has(){return this.parts.length>0&&this.parts.every((A=>A.has()))}getSequences(A){return A>=0&&A<this.parts.length?this.parts[A].getSequences():[]}getAllSequences(){return this.parts.map((A=>A.getSequences()))}getSyntaxTree(A){return A>=0&&A<this.parts.length?this.parts[A].getSyntaxTree():""}paused(){return 0===this.parts.length||this.parts.every((A=>A.paused()))}currentIndex(A,t){return A<0||A>=this.parts.length?this:t?(this.parts[A].setCurrentIndex(t),this):this.parts[A].getCurrentIndex()}clear(){for(const A of this.parts)A.stop();return this.parts.length=0,this}toABC(A,t,e,s,i,r){let a="";a+=`X:${t||1}\n`,a+=`T:${e||""}\n`,a+=`M:${s||"4/4"}\n`,a+=`L:${i||"1/256"}\n`,a+=`K:${r||""}\n`;const n=A.match(/\s*(?:T\d+)\s*|\s*(?:O\d+)\s*|\s*(?:(?:[CDEFGABR][#+-]?)+(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)\.?)(?:&(?:[CDEFGABR][#+-]?)+(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)\.?)*\s*/gi);if(null===n)return a;let g=null,o=0;for(;n.length>0;){const A=n.shift()?.trim();if(!A)return a;if(/T\d+/i.test(A)){const t=Number(A.slice(1));if(t<=0)return a;a+=`Q:1/4=${t}\n`}else if(/O\d+/i.test(A)){if(g=Number(A.slice(1)),g<0)return a}else if(/(?:(?:[CDEFGABR][#+-]?)+)(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)(?:&(?:[CDEFGABR][#+-]?)+(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)\.?)*/i.test(A)){if(null===g)return a;let t=null;t=A.includes("&")?A.split("&"):[A];let e="";for(;t.length>0;){const A=t.shift();if(!A)return a;let s="",i=0;switch(Number(A.replace(/^.+?(\d+)\.*$/,"$1"))){case 1:s=A.replace("1","256");break;case 2:s=A.replace("2","128");break;case 4:s=A.replace("4","64");break;case 8:s=A.replace("8","32");break;case 16:s=A.replace("16","16");break;case 32:s=A.replace("32","8");break;case 64:s=A.replace("64","4");break;case 128:s=A.replace("128","2");break;case 256:s=A.replace("256","1");break;case 6:s=`(3${A.replace("6","128")}`,i=128/3;break;case 12:s=`(3${A.replace("12","64")}`,i=64/3;break;case 18:s=`(9${A.replace("18","128")}`,i=128/9;break;case 24:s=`(3${A.replace("24","32")}`,i=32/3;break;case 36:s=`(9${A.replace("36","64")}`,i=64/9;break;case 48:s=`(3${A.replace("48","16")}`,i=16/3;break;case 72:s=`(9${A.replace("72","32")}`,i=32/9;break;case 96:s=`(3${A.replace("96","8")}`,i=8/3;break;case 144:s=`(9${A.replace("144","16")}`,i=16/9;break;case 192:s=`(3${A.replace("192","4")}`,i=4/3;break;default:return a}if(s.includes(".")&&(s=s.replace(/^(.+?)\d+\.+$/,"$1"+1.5*Number(s.replace(/^.+?(\d+)\.+$/,"$1")))),s.includes("(")?o+=Number(s.replace(/^.+?(\d+)\.*$/i,"$1")):o+=i,o>=256&&(s+=" | ",o=0),/R/i.test(s)){a+=`${s} `;continue}let r="";switch(g){case 0:r=",,,,";break;case 1:r=",,,";break;case 2:r=",,";break;case 3:r=",";break;case 5:r="'";break;case 6:r="''";break;case 7:r="'''"}const n=s.match(/^(\(\d+)?((?:[CDEFGAB][#+-]?)+)(.*)$/i);if(null===n)return a;const I=n[1]?n[1]:"",h=n[2].length,c=n[3]?n[3]:"";let C=0;if(I.length>0&&(s=s.replace(/^(?:\(\d+)?((?:[CDEFGAB][#+-]?)+)(.*)$/i,"$1$2")),1===h)e+=`${I}${s.slice(0,1)}${r}${c}`;else if(2===h&&/[#+-]/.test(s.charAt(1)))e+=`${I}${s.slice(1,2)}${s.slice(0,1)}${r}${c}`;else for(;C<h;)0===C&&(e+=`${I}[`),/[#+-]/.test(s.charAt(C+1))?(e+=`${s.slice(C+1,C+2)}${s.slice(C,C+1)}${r}`,C+=2):(e+=`${s.slice(C,C+1)}${r}`,C++),C===h&&(e+=`]${c}`);t.length>0?e+="&":a+=`${e} `}}}return a.replace(/R/gi,"z").replace(/[#+]/g,"^").replace(/-/g,"_").replace(/&/g,"-").replace(/\s{2}/g," ").trim()}}window.AudioContext=window.AudioContext||window.webkitAudioContext,window.URL=window.URL||window.webkitURL;const SA=new AudioContext,UA={oscillator:null,oneshot:null,noise:null,audio:null,media:null,stream:null,processor:null,mixer:null,analyser:null,midi:null,mml:null},GA=Promise.all([e(SA,SoundModuleProcessor),e(SA,RecorderProcessor),e(SA,OscillatorModuleProcessor),e(SA,OneshotModuleProcessor),e(SA,NoiseModuleProcessor),e(SA,AudioModuleProcessor),e(SA,MediaModuleProcessor),e(SA,StreamModuleProcessor),e(SA,MixerModuleProcessor),e(SA,NoiseGateProcessor),e(SA,NoiseSuppressorProcessor),e(SA,PitchShifterProcessor),e(SA,VocalCancelerProcessor)]).then((()=>(UA.oscillator=new eA(SA),UA.oneshot=new sA(SA),UA.noise=new iA(SA),UA.audio=new rA(SA),UA.media=new aA(SA),UA.stream=new nA(SA),UA.processor=new gA(SA),UA.mixer=new oA(SA),UA.analyser=new C(SA),UA.midi=new IA,UA.mml=new RA,UA))).catch((A=>A));function MA(A){switch(A){case"oscillator":return UA.oscillator;case"oneshot":return UA.oneshot;case"noise":return UA.noise;case"audio":return UA.audio;case"media":return UA.media;case"stream":return UA.stream;case"processor":return UA.processor;case"mixer":return UA.mixer;case"analyser":return UA.analyser;case"midi":return UA.midi;case"mml":return UA.mml;default:return null}}MA.SAMPLE_RATE=SA.sampleRate,MA.EQUAL_TEMPERAMENT=12,MA.FREQUENCY_RATIO=pA,MA.MIN_A=27.5,MA.QUARTER_NOT=4,MA.HALF_UP="+",MA.HALF_DOWN="-",MA.DOT=".",MA.isPitchChar=dA,MA.computeIndex=fA,MA.computeHz=function(A,t){return A<=0?0:A*2**(t/1200)},MA.computeFrequency=yA,MA.computePlaybackRate=function(A,t){return A<=0?1:A*2**(t/1200)},MA.windowFunction=mA,MA.fft=wA,MA.ifft=function(A,t,e){if(null===DA)return;const s=DA.exports,i=s.memory.buffer,r=s.alloc_memory_reals(e),a=s.alloc_memory_imags(e),n=new Float32Array(i,r,e),g=new Float32Array(i,a,e);n.set(A),g.set(t),s.IFFT(e),A.set(n),t.set(g)},MA.spectrum=function(A,t="amplitude",e="hanning",s=.05){const i=A.length,r=new Float32Array(i),a=new Float32Array(i),n=mA(i,e);for(let t=0;t<i;t++)r[t]=n[t]*A[t];wA(r,a,i);const g=i/2;switch(t){case"amplitude":{const A=new Float32Array(g);for(let t=0;t<g;t++)A[t]=Math.sqrt(r[t]**2+a[t]**2);return A}case"phase":{const A=new Float32Array(g);for(let t=0;t<g;t++){const e=Math.sqrt(r[t]**2+a[t]**2);A[t]=e>s?Math.atan2(a[t],r[t]):0}return A}}},MA.toDecibels=function(A){const t=new Float32Array(A.length);for(let e=0,s=t.length;e<s;e++)0!==A[e]?t[e]=20*Math.log10(Math.abs(A[e])):t[e]=20*Math.log10(1e-6);return t},MA.fromDecibels=function(A){const t=new Float32Array(A.length);for(let e=0,s=t.length;e<s;e++)t[e]=Math.pow(10,A[e]/20);return t},MA.ajax=function(A){const{url:t,type:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A,n=new XMLHttpRequest;n.timeout=s??6e4,n.ontimeout=A=>{r&&r(A,"timeout")},n.onprogress=A=>{a&&a(A)},n.onerror=A=>{r&&r(A,"error")},n.onload=A=>{i&&200===n.status&&i(A,n.response)},n.open("GET",t,!0),n.responseType=e??"arraybuffer",n.send(null)},MA.convertTime=function(A){return A<0?{minutes:-1,seconds:-1,milliseconds:-1}:{minutes:Math.trunc(A/60),seconds:Math.trunc(A%60),milliseconds:A-Math.trunc(A)}},MA.decode=function(A,t,e,s){return e||(e=()=>{}),s||(s=()=>{}),A.decodeAudioData(t,e,s)},MA.permission=function(A){return navigator.permissions.query({name:A})},MA.requestFullscreen=function(A){return A.requestFullscreen()},MA.exitFullscreen=function(){return document.exitFullscreen()},MA.read=bA,MA.drop=function(A){const{event:t,type:e,successCallback:s,errorCallback:i,progressCallback:r}=A;if(t.preventDefault(),!t.dataTransfer?.items[0])return null;const a=t.dataTransfer.items[0].getAsFile();return null===a?null:"objectURL"===e?window.URL.createObjectURL(a):(bA({file:a,type:e,successCallback:s,errorCallback:i,progressCallback:r}),a)},MA.file=function(A){const{event:t,type:e,successCallback:s,errorCallback:i,progressCallback:r}=A,a=t.target.files?.item(0)??null;return null===a?null:"objectURL"===e?window.URL.createObjectURL(a):(bA({file:a,type:e,successCallback:s,errorCallback:i,progressCallback:r}),a)},MA.toFrequencies=function(A){return A.map((A=>yA(A)))},MA.toTextFile=function(A,t){if(t){const t=new Blob([A],{type:"text/plain"});return window.URL.createObjectURL(t)}return`data:,${encodeURIComponent(A)}`},MA.Analyser=C,MA.Recorder=l,MA.Effector=u,MA.Autopanner=E,MA.BitCrusher=p,MA.Chorus=d,MA.Compressor=f,MA.Delay=y,MA.Equalizer=D,MA.Filter=w,MA.Flanger=b,MA.Fuzz=F,MA.Listener=v,MA.NoiseGate=N,MA.NoiseSuppressor=k,MA.OverDrive=R,MA.Panner=S,MA.Phaser=U,MA.PitchShifter=G,MA.Preamp=X,MA.Reverb=z,MA.Ringmodulator=j,MA.Stereo=W,MA.Tremolo=V,MA.VocalCanceler=Z,MA.Wah=_,MA.setup=()=>"running"!==SA.state?SA.resume():Promise.resolve(),MA.promise=()=>GA,MA.clone=()=>{const A={oscillator:null,oneshot:null,noise:null,audio:null,media:null,stream:null,processor:null,mixer:null,analyser:null,midi:null,mml:null};function t(t){switch(t){case"oscillator":return A.oscillator;case"oneshot":return A.oneshot;case"noise":return A.noise;case"audio":return A.audio;case"media":return A.media;case"stream":return A.stream;case"processor":return A.processor;case"mixer":return A.mixer;case"analyser":return A.analyser;case"midi":return A.midi;case"mml":return A.mml;default:return null}}return t.free=t=>{for(const e of t)null!==e&&Object.entries(A).forEach((([t,s])=>{e===s&&(A[t]=null)}))},A.oscillator=new eA(SA),A.oneshot=new sA(SA),A.noise=new iA(SA),A.audio=new rA(SA),A.media=new aA(SA),A.stream=new nA(SA),A.processor=new gA(SA),A.mixer=new oA(SA),A.analyser=new C(SA),A.midi=new IA,A.mml=new RA,t},MA.free=A=>{for(const t of A)null!==t&&Object.entries(UA).forEach((([A,e])=>{t===e&&(UA[A]=null)}))},MA.noConflict=A=>(window.X===MA&&(window.X=void 0),A&&window.XSound===MA&&(window.XSound=void 0),MA),MA.get=()=>SA,MA.getCurrentTime=()=>SA.currentTime;const YA=A=>{A.stopImmediatePropagation(),MA.setup().finally((()=>{document.removeEventListener("mousedown",YA,!1),document.removeEventListener("touchstart",YA,!1)}))};return document.addEventListener("mousedown",YA,!1),document.addEventListener("touchstart",YA,!1),t})()));
2
+ !function(A,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.xsound=t():A.xsound=t()}(self,(()=>(()=>{"use strict";var A={d:(t,e)=>{for(var s in e)A.o(e,s)&&!A.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},o:(A,t)=>Object.prototype.hasOwnProperty.call(A,t),r:A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})}},t={};A.r(t),A.d(t,{X:()=>YA,XSound:()=>YA});class AudioWorkletProcessor{port=new MessagePort;constructor(A){}}class OverlapAddProcessor extends AudioWorkletProcessor{static RENDER_QUANTUM_SIZE=128;frameSize=2048;hopSize=128;numberOfOverlaps;inputBuffers=[[]];inputBuffersHead=[[]];inputBuffersToSend=[[]];outputBuffers=[[]];outputBuffersToRetrieve=[[]];constructor(A){super(A),A.processorOptions&&(this.frameSize=A.processorOptions.frameSize??2048),this.numberOfOverlaps=this.frameSize/this.hopSize,this.allocateInputChannels(1),this.allocateOutputChannels(1)}process(A,t,e){return this.reallocateChannelsIfNeeded(A,t),this.readInputs(A),this.shiftInputBuffers(),this.prepareInputBuffersToSend(),this.processOverlapAdd(this.inputBuffersToSend,this.outputBuffersToRetrieve,e),this.handleOutputBuffersToRetrieve(),this.writeOutputs(t),this.shiftOutputBuffers(),!0}reallocateChannelsIfNeeded(A,t){const e=A[0].length;e!==this.inputBuffers[0].length&&this.allocateInputChannels(e);const s=t[0].length;s!==this.outputBuffers[0].length&&this.allocateOutputChannels(s)}allocateInputChannels(A){this.inputBuffers=[[]];for(let t=0;t<A;t++)this.inputBuffers[0][t]=new Float32Array(this.frameSize+OverlapAddProcessor.RENDER_QUANTUM_SIZE);this.inputBuffersHead=[[]],this.inputBuffersToSend=[[]];for(let t=0;t<A;t++)this.inputBuffersHead[0][t]=this.inputBuffers[0][t].subarray(0,this.frameSize),this.inputBuffersToSend[0][t]=new Float32Array(this.frameSize)}allocateOutputChannels(A){this.outputBuffers=[[]];for(let t=0;t<A;t++)this.outputBuffers[0][t]=new Float32Array(this.frameSize);this.outputBuffersToRetrieve=[[]];for(let t=0;t<A;t++)this.outputBuffersToRetrieve[0][t]=new Float32Array(this.frameSize)}readInputs(A){if(A[0].length&&0===A[0][0].length)for(let A=0;A<this.inputBuffers[0].length;A++)this.inputBuffers[0][A].fill(0,this.frameSize);else for(let t=0;t<this.inputBuffers[0].length;t++)this.inputBuffers[0][t].set(A[0][t],this.frameSize)}writeOutputs(A){for(let t=0;t<this.inputBuffers[0].length;t++)A[0][t].set(this.outputBuffers[0][t].subarray(0,OverlapAddProcessor.RENDER_QUANTUM_SIZE))}shiftInputBuffers(){for(let A=0;A<this.inputBuffers[0].length;A++)this.inputBuffers[0][A].copyWithin(0,OverlapAddProcessor.RENDER_QUANTUM_SIZE)}shiftOutputBuffers(){for(let A=0;A<this.outputBuffers[0].length;A++)this.outputBuffers[0][A].copyWithin(0,OverlapAddProcessor.RENDER_QUANTUM_SIZE),this.outputBuffers[0][A].subarray(this.frameSize-OverlapAddProcessor.RENDER_QUANTUM_SIZE).fill(0)}prepareInputBuffersToSend(){for(let A=0;A<this.inputBuffers[0].length;A++)this.inputBuffersToSend[0][A].set(this.inputBuffersHead[0][A])}handleOutputBuffersToRetrieve(){for(let A=0;A<this.outputBuffers[0].length;A++)for(let t=0;t<this.frameSize;t++)this.outputBuffers[0][A][t]+=this.outputBuffersToRetrieve[0][A][t]/this.numberOfOverlaps}}function e(A,t,e){return A.audioWorklet.addModule(function(A){return`data:text/javascript,${encodeURIComponent(OverlapAddProcessor.toString())}; ${encodeURIComponent(A.toString())}; registerProcessor('${A.name}', ${A.name})`}(t),e)}class SoundModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class s{static XMLNS="http://www.w3.org/2000/svg";static XLINK="http://www.w3.org/1999/xlink";static SVG_LINEAR_GRADIENT_ID_TIME_OVERVIEW="svg-linear-gradient-time-overview";static SVG_LINEAR_GRADIENT_ID_TIME="svg-linear-gradient-time";static SVG_LINEAR_GRADIENT_ID_FFT="svg-linear-gradient-fft";sampleRate;channel;analyser=null;isActive=!1;graphics="";canvas=null;context=null;svg=null;interval=1e3;styles={shape:"line",gradients:[{offset:0,color:"rgba(0, 128, 255, 1.0)"},{offset:1,color:"rgba(0, 0, 255, 1.0)"}],wave:"rgba(0, 0, 255, 1.0)",grid:"rgba(255, 0, 0, 1.0)",text:"rgba(255, 255, 255, 1.0)",font:{family:"Arial",size:"13px",style:"normal",weight:"normal"},width:1.5,cap:"round",join:"miter",top:15,right:30,bottom:15,left:30};constructor(A,t,e=null){this.sampleRate=A,this.channel=t,this.analyser=e}setup(A){return A instanceof HTMLCanvasElement?(this.graphics="canvas",this.canvas=A,this.context=this.canvas.getContext("2d")):A instanceof SVGSVGElement&&(this.graphics="svg",this.svg=A),this}connect(A){return null===this.analyser?this:A instanceof AudioNode?void A.connect(this.analyser):(A.OUTPUT.connect(this.analyser),this)}start(A,t,e){switch(this.graphics){case"canvas":this.renderCanvas(A,t,e);break;case"svg":this.renderSVG(A,t,e)}return this}param(A){if("string"==typeof A)switch(A){case"interval":return this.interval;case"styles":return this.styles}for(const[t,e]of Object.entries(A))switch(t){case"interval":"number"==typeof e&&(this.interval=e);break;case"styles":"object"==typeof e&&(this.styles={...this.styles,...e})}}get(){switch(this.graphics){case"canvas":return this.canvas;case"svg":return this.svg;default:return null}}clear(){switch(this.graphics){case"canvas":this.canvas&&this.context&&this.context.clearRect(0,0,this.canvas.width,this.canvas.height);break;case"svg":this.svg&&(this.svg.innerHTML="")}return this}create(A,t){switch(this.graphics){case"canvas":if(null===this.canvas)return"";if("string"==typeof A&&/^image\/.+$/.test(A))return this.canvas.toDataURL(A);if(t){const{callback:A,type:e,quality:s}=t;return this.canvas.toBlob(A,e,s)}return this.canvas.toDataURL("image/png").replace("image/png","image/octet-stream");case"svg":return null===this.svg?"":this.svg.outerHTML;default:return""}}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}renderTimeDomainFloat32ArrayCanvas(A,t,e,s,i,r){const a=this.styles.top??15,n=this.styles.left??30,g=this.styles.width??1.5,o=this.styles.cap??"round",h=this.styles.join??"miter",I=this.styles.wave??"rgba(0, 0, 255, 1.0)";switch(this.styles.shape){case"line":A.strokeStyle=I,A.lineWidth=g,A.lineCap=o,A.lineJoin=h,A.beginPath();for(let i=0,g=t.length;i<g;i++)if(!r||i%r==0){const r=i/g*e+n,o=(1-t[i])*(s/2)+a;0===i?A.moveTo(r+A.lineWidth/2,o):A.lineTo(r,o)}A.stroke();break;case"rect":for(let o=0,h=t.length;o<h;o++)if(!r||o%r==0){const r=o/h*e+n,c=t[o]*(s/2)*-1;if(this.styles.gradients){const t=s/2+a,e=A.createLinearGradient(0,t,0,t+c);for(const A of this.styles.gradients)e.addColorStop(A.offset,A.color);A.fillStyle=e}else A.fillStyle=I;A.fillRect(r,i,g,c)}}}renderTimeDomainFloat32ArraySVG(A,t,e,i,r,a){const n=this.styles.top??15,g=this.styles.left??30,o=this.styles.width??1.5,h=this.styles.cap??"round",I=this.styles.join??"miter",c=this.styles.wave??"rgba(0, 0, 255, 1.0)";switch(this.styles.shape){case"line":{const i=document.createElementNS(s.XMLNS,"path");let a="";for(let s=0,i=A.length;s<i;s++)if(s%r==0){const r=s/i*t+g,o=(1-A[s])*(e/2)+n;a+=0===s?`M${r+(this.styles.width??1.5)/2} ${o}`:` L${r} ${o}`}return i.setAttribute("d",a),i.setAttribute("stroke",c),i.setAttribute("fill","none"),i.setAttribute("stroke-width",o.toString(10)),i.setAttribute("stroke-linecap",h),i.setAttribute("stroke-linejoin",I),i}case"rect":{let n=null;this.styles.gradients&&(n=this.createSVGLinearGradient(a));const h=document.createElementNS(s.XMLNS,"g");null!==n&&h.appendChild(n);for(let I=0,C=A.length;I<C;I++)if(I%r==0){const r=document.createElementNS(s.XMLNS,"rect"),Q=I/C*t+g,B=A[I]*(e/2);r.setAttribute("x",Q.toString(10)),r.setAttribute("y",i.toString(10)),r.setAttribute("width",o.toString(10)),r.setAttribute("height",Math.abs(B).toString(10)),B>=0&&r.setAttribute("transform",`rotate(180 ${Q+o/2} ${i})`),r.setAttribute("stroke","none"),r.setAttribute("fill",null===n?c:`url(#${a})`),h.appendChild(r)}return h}default:return null}}createSVGLinearGradient(A){if(!this.styles.gradients)return null;const t=document.createElementNS(s.XMLNS,"defs"),e=document.createElementNS(s.XMLNS,"linearGradient");e.setAttribute("id",A),e.setAttribute("x1","0%"),e.setAttribute("y1","0%"),e.setAttribute("x2","0%"),e.setAttribute("y2","100%");for(const A of this.styles.gradients){const t=document.createElementNS(s.XMLNS,"stop");t.setAttribute("offset",A.offset.toString(10)),t.setAttribute("stop-color",A.color),e.appendChild(t)}return t.appendChild(e),t}createFontString(){const{style:A,weight:t,size:e,family:s}=this.styles.font??{};return`${A??"normal"} ${t??"normal"} ${e??"13px"} "${s??"Arial"}"`}}const i="xsound-svg-current-time",r="xsound-svg-sprite";class a extends s{callback=()=>{};currentImageData=null;currentSVGElement=null;currentDataSize=0;currentTime={width:1,color:"rgba(0, 0, 0, 0.5)"};sprite="rgba(255, 255, 255, 0.25)";plotInterval=.0625;textInterval=60;isDown=!1;mode="update";offsetX=0;startTime=0;endTime=0;constructor(A,t){super(A,t),this.onMouseStart=this.onMouseStart.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onTouchStart=this.onTouchStart.bind(this),this.onTouchMove=this.onTouchMove.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this)}param(A){if("string"==typeof A)switch(A){case"currentTime":return this.currentTime;case"sprite":return this.sprite;case"plotInterval":return this.plotInterval;case"textInterval":return this.textInterval;case"mode":return this.mode;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"currentTime":"object"==typeof e&&(this.currentTime={...this.currentTime,...e});break;case"sprite":"string"==typeof e&&(this.sprite=e);break;case"plotInterval":"number"==typeof e&&(this.plotInterval=e);break;case"textInterval":"number"==typeof e&&(this.textInterval=e);break;case"mode":"string"==typeof e&&("update"!==e&&"sprite"!==e||(this.mode=e))}return super.param(A),this}update(A){switch(this.graphics){case"canvas":{if(null===this.currentImageData)return this;if(null===this.canvas||null===this.context)return this;const t=this.context,e=this.canvas.width,s=this.canvas.height,i=e-((this.styles.left??30)+(this.styles.right??30)),r=s-((this.styles.top??15)+(this.styles.bottom??15)),a=A*this.sampleRate/this.currentDataSize*i,n=this.styles.left??30,g=this.styles.top??15,o=this.currentTime.color??"rgba(0, 0, 0, 0.5)";switch(t.clearRect(0,0,e,s),t.putImageData(this.currentImageData,0,0),this.mode){case"update":t.fillStyle=o,t.fillRect(n,g+1,a,r-1);break;case"sprite":if(0!==this.endTime){const A=Math.abs(this.endTime-this.startTime)*this.sampleRate/this.currentDataSize*i;t.fillStyle=this.sprite,a>=this.offsetX?t.fillRect(n+this.offsetX,g+1,A,r-1):t.fillRect(n+this.offsetX-A,g+1,A,r-1)}t.fillStyle=o,a>=this.offsetX?t.fillRect(n+this.offsetX,g+1,Math.abs(a-this.offsetX),r-1):t.fillRect(n+a,g+1,Math.abs(a-this.offsetX),r-1)}break}case"svg":if(null===this.currentSVGElement)return this;if(this.svg){const t=this.svg.querySelector(`.${i}`);if(null===t)return this;const e=Number(this.svg.getAttribute("width")??"0"),s=this.styles.top??15,n=this.styles.left??30,g=e-(n+(this.styles.right??30)),o=A*this.sampleRate/this.currentDataSize*g;if("update"===this.mode){const A=this.svg.querySelector(`.${r}`);A&&A.parentNode?.removeChild(A),t.setAttribute("x",n.toString(10)),t.setAttribute("width",o.toString(10)),t.setAttribute("aria-label","current time")}else if("sprite"===this.mode){if(0!==this.endTime){const A=this.svg.querySelector(`.${r}`);A&&A.parentNode?.removeChild(A);const e=document.createElementNS(a.XMLNS,"rect");e.classList.add(r);const i=Math.abs(this.endTime-this.startTime)*this.sampleRate/this.currentDataSize*g;e.setAttribute("y",(s+1).toString(10)),e.setAttribute("height",t.getAttribute("height")??"0"),e.setAttribute("stroke","none"),e.setAttribute("fill",this.sprite),e.setAttribute("aria-label","current time"),o>=this.offsetX?e.setAttribute("x",(n+this.offsetX).toString(10)):e.setAttribute("x",(n+this.offsetX-i).toString(10)),e.setAttribute("width",i.toString(10)),this.svg.appendChild(e),this.svg.appendChild(t)}o>=this.offsetX?t.setAttribute("x",(n+this.offsetX).toString(10)):t.setAttribute("x",(n+o).toString(10)),t.setAttribute("width",Math.abs(o-this.offsetX).toString(10)),t.setAttribute("aria-label","sprite time")}}}return this}drag(A){let t=null;switch(this.graphics){case"canvas":if(null===this.canvas)return this;t=this.canvas;break;case"svg":if(null===this.svg)return this;t=this.svg}return null===t||(A&&(this.callback=A),t.removeEventListener("mousedown",{handleEvent:this.onMouseStart},!1),t.removeEventListener("mousemove",{handleEvent:this.onMouseMove},!1),window.removeEventListener("mouseup",{handleEvent:this.onMouseUp},!1),t.removeEventListener("touchstart",{handleEvent:this.onTouchStart},!1),t.removeEventListener("touchmove",{handleEvent:this.onTouchMove},!1),window.removeEventListener("touchend",{handleEvent:this.onTouchEnd},!1),t.addEventListener("mousedown",{handleEvent:this.onMouseStart},!1),t.addEventListener("mousemove",{handleEvent:this.onMouseMove},!1),window.addEventListener("mouseup",{handleEvent:this.onMouseUp},!1),t.addEventListener("touchstart",{handleEvent:this.onTouchStart},!1),t.addEventListener("touchmove",{handleEvent:this.onTouchMove},!1),window.addEventListener("touchend",{handleEvent:this.onTouchEnd},!1)),this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context||!this.isActive||A instanceof Uint8Array)return;const s=this.context,i=this.canvas.width,r=this.canvas.height,a=this.styles.top??15,n=this.styles.bottom??15,g=this.styles.left??30,o=i-(g+(this.styles.right??30)),h=r-(a+n),I=h/2+a,c=this.styles.grid??"none",C=this.styles.text??"none",Q=parseInt(this.styles.font?.size??"13px",10),B=Math.trunc(this.plotInterval*this.sampleRate),l=Math.trunc(this.textInterval*this.sampleRate);if(s.clearRect(0,0,i,r),this.renderTimeDomainFloat32ArrayCanvas(s,A,o,h,I,B),"none"!==c||"none"!==C){for(let t=0,e=A.length;t<e;t++)if(t%l==0){const A=t/e*o+g,i=`${Math.trunc(t/this.sampleRate/60)} min`;"none"!==c&&(s.fillStyle=c,s.fillRect(A,a,1,h)),"none"!==C&&(s.fillStyle=C,s.font=this.createFontString(),s.fillText(i,A-s.measureText(i).width/2,a+h+Q))}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=g-s.measureText(A).width,e=(1-Number(A.trim()))*(h/2)+a;"none"!==c&&(s.fillStyle=c,s.fillRect(g,e,o,1)),"none"!==C&&(s.fillStyle=C,s.font=this.createFontString(),s.fillText(A,t,e-Q/4))}}this.currentImageData=s.getImageData(0,0,i,r),this.currentDataSize=A.length,s.fillStyle=this.currentTime.color??"rgba(0, 0, 0, 0.5)",s.fillRect(g,a,1,h)}renderSVG(A,t,e){if(null===this.svg||!this.isActive||A instanceof Uint8Array)return;const s=this.svg,r=Number(s.getAttribute("width")??"0"),n=Number(s.getAttribute("height")??"0"),g=this.styles.top??15,o=this.styles.bottom??15,h=this.styles.left??30,I=r-(h+(this.styles.right??30)),c=n-(g+o),C=c/2+g,Q=this.styles.grid??"none",B=this.styles.text??"none",l=parseInt(this.styles.font?.size??"13px",10),u=Math.trunc(this.plotInterval*this.sampleRate),E=Math.trunc(this.textInterval*this.sampleRate);s.innerHTML="";const p=this.renderTimeDomainFloat32ArraySVG(A,I,c,C,u,`${a.SVG_LINEAR_GRADIENT_ID_TIME_OVERVIEW}-${this.channel}`);if(p&&s.appendChild(p),"none"!==Q||"none"!==B){for(let t=0,e=A.length;t<e;t++)if(t%E==0){const A=t/e*I+h,i=`${Math.trunc(t/this.sampleRate/60)} min`;if("none"!==Q){const t=document.createElementNS(a.XMLNS,"rect");t.setAttribute("x",A.toString(10)),t.setAttribute("y",g.toString(10)),t.setAttribute("width","1"),t.setAttribute("height",c.toString(10)),t.setAttribute("stroke","none"),t.setAttribute("fill",Q),s.appendChild(t)}if("none"!==B){const t=document.createElementNS(a.XMLNS,"text");t.textContent=i,t.setAttribute("x",A.toString(10)),t.setAttribute("y",(g+c+l).toString(10)),t.setAttribute("text-anchor","middle"),t.setAttribute("stroke","none"),t.setAttribute("fill",B),t.setAttribute("font-family",this.styles.font?.family??"Arial"),t.setAttribute("font-size",l.toString(10)),t.setAttribute("font-style",this.styles.font?.style??"normal"),t.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(t)}}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=h,e=(1-Number(A.trim()))*(c/2)+g;if("none"!==Q){const A=document.createElementNS(a.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",e.toString(10)),A.setAttribute("width",I.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",Q),s.appendChild(A)}if("none"!==B){const i=document.createElementNS(a.XMLNS,"text");i.textContent=A,i.setAttribute("x",t.toString(10)),i.setAttribute("y",(e-l/4).toString(10)),i.setAttribute("text-anchor","end"),i.setAttribute("stroke","none"),i.setAttribute("fill",B),i.setAttribute("font-family",this.styles.font?.family??"Arial"),i.setAttribute("font-size",l.toString(10)),i.setAttribute("font-style",this.styles.font?.style??"normal"),i.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(i)}}}const d=document.createElementNS(a.XMLNS,"rect");d.classList.add(i),d.setAttribute("y",(g+1).toString(10)),d.setAttribute("height",(c-1).toString(10)),d.setAttribute("stroke","none"),d.setAttribute("fill",this.currentTime.color??"rgba(0, 0, 0, 0.5)"),s.appendChild(d),this.currentSVGElement=s,this.currentDataSize=A.length}visualize(A,t,e){let s=0,i=0;switch(this.graphics){case"canvas":if(null===this.canvas)return;s=this.canvas.offsetLeft,i=this.canvas.width;break;case"svg":if(null===this.svg)return;s=this.svg.parentElement?.offsetLeft??0,i=Number(this.svg.getAttribute("width")??"0")}let r=e-(s+(this.styles.left??30));"canvas"===this.graphics&&this.canvas?.parentElement&&(r+=this.canvas.parentElement.scrollLeft),"svg"===this.graphics&&this.svg?.parentElement&&(r+=this.svg.parentElement.scrollLeft),i-=(this.styles.left??30)+(this.styles.right??30),r<0&&(r=0),r>i&&(r=i);const a=r/i*this.currentDataSize/this.sampleRate;"mousedown"!==t&&"touchstart"!==t||(this.offsetX=r,this.startTime=a,this.endTime=0),"mouseup"!==t&&"touchend"!==t||(this.endTime=a),this.update(a),this.startTime<=a?this.callback(A,this.startTime,a,this.mode,!0):this.startTime>a&&this.callback(A,a,this.startTime,this.mode,!1)}onMouseStart(A){"mousedown"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!0}onMouseMove(A){this.isDown&&(A.stopPropagation(),"mousemove"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)))}onMouseUp(A){this.isDown&&("mouseup"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!1)}onTouchStart(A){"touchstart"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!0}onTouchMove(A){this.isDown&&(A.stopPropagation(),A.preventDefault(),"touchmove"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)))}onTouchEnd(A){this.isDown&&("touchend"===A.type&&this.visualize(A,A.type,this.getOffsetX(A)),this.isDown=!1)}getOffsetX(A){return A instanceof MouseEvent?A.pageX:A instanceof TouchEvent?A.touches[0].pageX:0}}class n extends s{type="uint";textInterval=.005;constructor(A,t,e){super(A,t,e)}param(A){if("string"==typeof A)switch(A){case"type":return this.type;case"textInterval":return this.textInterval;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"type":"string"==typeof e&&("uint"!==e&&"float"!==e||(this.type=e));break;case"textInterval":"number"==typeof e&&(this.textInterval=e)}return super.param(A),this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context||!this.isActive)return;const s=this.context,i=this.canvas.width,r=this.canvas.height,a=this.styles.top??15,n=this.styles.bottom??15,g=this.styles.left??30,o=i-(g+(this.styles.right??30)),h=r-(a+n),I=h/2+a,c=this.styles.width??1.5,C=this.styles.cap??"round",Q=this.styles.join??"miter",B=this.styles.wave??"rgba(0, 0, 255, 1.0)",l=this.styles.grid??"none",u=this.styles.text??"none",E=parseInt(this.styles.font?.size??"13px",10),p=Math.trunc(this.textInterval*this.sampleRate);switch(s.clearRect(0,0,i,r),this.type){case"float":A instanceof Float32Array&&this.renderTimeDomainFloat32ArrayCanvas(s,A,o,h,I);break;case"uint":switch(this.styles.shape){case"line":s.strokeStyle=B,s.lineWidth=c,s.lineCap=C,s.lineJoin=Q,s.beginPath();for(let t=0,e=A.length;t<e;t++){const i=t/e*o+g,r=(1-A[t]/255)*h+a;0===t?s.moveTo(i+c/2,r):s.lineTo(i,r)}s.stroke();break;case"rect":for(let t=0,e=A.length;t<e;t++){const i=t/e*o+g,r=(.5-A[t]/255)*h;if(this.styles.gradients){const A=h/2+a,t=s.createLinearGradient(0,A,0,A+r);for(const A of this.styles.gradients)t.addColorStop(A.offset,A.color);s.fillStyle=t}else s.fillStyle=B;s.fillRect(i,I,1,r)}}}if("none"!==l||"none"!==u){for(let t=0,e=A.length;t<e;t++)if(t%p==0){const A=t/e*o+g,i=`${Math.ceil(t/this.sampleRate*1e3)} ms`;"none"!==l&&(s.fillStyle=l,s.fillRect(A,a,1,h)),"none"!==u&&(s.fillStyle=u,s.font=this.createFontString(),s.fillText(i,A-s.measureText(i).width/2,a+h+E))}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=g-s.measureText(A).width,e=(1-Number(A.trim()))*(h/2)+a;"none"!==l&&(s.fillStyle=l,s.fillRect(g,e,o,1)),"none"!==u&&(s.fillStyle=u,s.font=this.createFontString(),s.fillText(A,t,e-E/4))}}}renderSVG(A,t,e){if(null===this.svg||!this.isActive)return;const s=this.svg,i=Number(s.getAttribute("width")??"0"),r=Number(s.getAttribute("height")??"0"),a=this.styles.top??15,g=this.styles.bottom??15,o=this.styles.left??30,h=i-(o+(this.styles.right??30)),I=r-(a+g),c=I/2+a,C=this.styles.width??1.5,Q=this.styles.cap??"round",B=this.styles.join??"miter",l=this.styles.wave??"rgba(0, 0, 255, 1.0)",u=this.styles.grid??"none",E=this.styles.text??"none",p=parseInt(this.styles.font?.size??"13px",10),d=Math.trunc(this.textInterval*this.sampleRate);switch(s.innerHTML="",this.type){case"float":if(A instanceof Float32Array){const t=this.renderTimeDomainFloat32ArraySVG(A,h,I,c,0,n.SVG_LINEAR_GRADIENT_ID_TIME);null!==t&&s.appendChild(t)}break;case"uint":switch(this.styles.shape){case"line":{const t=document.createElementNS(n.XMLNS,"path");let e="";for(let t=0,s=A.length;t<s;t++){const i=t/s*h+o,r=(1-A[t]/255)*I+a;e+=0===t?`M${i+C/2} ${r}`:` L${i} ${r}`}t.setAttribute("d",e),t.setAttribute("stroke",l),t.setAttribute("fill","none"),t.setAttribute("stroke-width",C.toString(10)),t.setAttribute("stroke-linecap",Q),t.setAttribute("stroke-linejoin",B),s.appendChild(t);break}case"rect":{let t=null;this.styles.gradients&&(t=this.createSVGLinearGradient(`${n.SVG_LINEAR_GRADIENT_ID_TIME}-${this.channel}`));const e=document.createElementNS(n.XMLNS,"g");null!==t&&e.appendChild(t);for(let s=0,i=A.length;s<i;s++){const r=document.createElementNS(n.XMLNS,"rect"),a=s/i*h+o,g=(A[s]/255-.5)*I;r.setAttribute("x",a.toString(10)),r.setAttribute("y",c.toString(10)),r.setAttribute("width",C.toString(10)),r.setAttribute("height",Math.abs(g).toString(10)),g>=0&&r.setAttribute("transform",`rotate(180 ${a+C/2} ${c})`),r.setAttribute("stroke","none"),r.setAttribute("fill",null===t?l:`url(#${n.SVG_LINEAR_GRADIENT_ID_TIME}-${this.channel})`),e.appendChild(r)}s.appendChild(e);break}}}if("none"!==u||"none"!==E){for(let t=0,e=A.length;t<e;t++)if(t%d==0){const A=t/e*h+o,i=`${Math.ceil(t/this.sampleRate*1e3)} ms`;if("none"!==u){const t=document.createElementNS(n.XMLNS,"rect");t.setAttribute("x",A.toString(10)),t.setAttribute("y",a.toString(10)),t.setAttribute("width","1"),t.setAttribute("height",I.toString(10)),t.setAttribute("stroke","none"),t.setAttribute("fill",u),s.appendChild(t)}if("none"!==E){const t=document.createElementNS(n.XMLNS,"text");t.textContent=i,t.setAttribute("x",A.toString(10)),t.setAttribute("y",(a+I+p).toString(10)),t.setAttribute("text-anchor","middle"),t.setAttribute("stroke","none"),t.setAttribute("fill",E),t.setAttribute("font-family",this.styles.font?.family??"Arial"),t.setAttribute("font-size",p.toString(10)),t.setAttribute("font-style",this.styles.font?.style??"normal"),t.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(t)}}for(const A of["-1.00","-0.50"," 0.00"," 0.50"," 1.00"]){const t=o,e=(1-Number(A.trim()))*(I/2)+a;if("none"!==u){const A=document.createElementNS(n.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",e.toString(10)),A.setAttribute("width",h.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",u),s.appendChild(A)}if("none"!==E){const i=document.createElementNS(n.XMLNS,"text");i.textContent=A,i.setAttribute("x",t.toString(10)),i.setAttribute("y",(e-p/4).toString(10)),i.setAttribute("text-anchor","end"),i.setAttribute("stroke","none"),i.setAttribute("fill",E),i.setAttribute("font-family",this.styles.font?.family??"Arial"),i.setAttribute("font-size",p.toString(10)),i.setAttribute("font-style",this.styles.font?.style??"normal"),i.setAttribute("font-weight",this.styles.font?.weight??"normal"),s.appendChild(i)}}}}}class g extends s{type="uint";size=256;scale="linear";logarithmicFrequencies=[32,62.5,125,250,500,1e3,2e3,4e3,8e3,16e3];minFrequency=this.logarithmicFrequencies[0];maxFrequency=this.logarithmicFrequencies[this.logarithmicFrequencies.length-1];ratio=this.maxFrequency/this.minFrequency;log10Ratio=Math.log10(this.ratio);textInterval=1e3;constructor(A,t,e){super(A,t,e)}param(A){if("string"==typeof A)switch(A){case"type":return this.type;case"size":return this.size;case"scale":return this.scale;case"logarithmicFrequencies":return this.logarithmicFrequencies;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"textInterval":return this.textInterval;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"type":"string"==typeof e&&("uint"!==e&&"float"!==e||(this.type=e));break;case"size":"number"==typeof e&&(this.size=e);break;case"scale":"string"==typeof e&&("linear"!==e&&"logarithmic"!==e||(this.scale=e));break;case"logarithmicFrequencies":Array.isArray(e)&&(this.logarithmicFrequencies=e,this.minFrequency=e[0],this.maxFrequency=e[e.length-1],this.ratio=this.maxFrequency/this.minFrequency,this.log10Ratio=Math.log10(this.ratio));break;case"textInterval":"number"==typeof e&&(this.textInterval=e)}return super.param(A),this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context||!this.isActive)return;const s=t??-100,i=e??-30,r=i-s,a=this.context,n=this.canvas.width,g=this.canvas.height,o=this.styles.top??0,h=this.styles.bottom??0,I=this.styles.left??30,c=this.styles.right??30,C=n-(I+c),Q=g-(o+h),B=this.styles.width??1.5,l=this.styles.cap??"round",u=this.styles.join??"miter",E=this.styles.wave??"rgba(0, 0, 255, 1.0)",p=this.styles.grid??"none",d=this.styles.text??"none",f=parseInt(this.styles.font?.size??"13px",10),y=this.size>A.length?A.length:this.size,m=this.sampleRate/(2*A.length),D=Math.trunc(this.textInterval/m);switch(a.clearRect(0,0,n,g),this.type){case"float":switch(a.strokeStyle=E,a.lineWidth=B,a.lineCap=l,a.lineJoin=u,a.beginPath(),this.scale){case"linear":for(let t=0;t<y;t++){const e=t/y*C+I,s=(0-(A[t]-i))*(Q/r)+o;0===t?a.moveTo(e+B/2,s):a.lineTo(e,s)}break;case"logarithmic":for(let t=0,e=A.length;t<e;t++){if(0===t)continue;const e=t*m/this.minFrequency,s=Math.log10(e)/this.log10Ratio*C+I,n=(0-(A[t]-i))*(Q/r)+o;Number.isFinite(n)&&(s<I||s>I+C||(1===t?a.moveTo(I+B/2,n):a.lineTo(s,n)))}}a.stroke();break;case"uint":switch(this.styles.shape){case"line":a.strokeStyle=E,a.lineWidth=B,a.lineCap=l,a.lineJoin=u,a.beginPath();for(let t=0;t<y;t++){const e=t/y*C+I,s=(1-A[t]/255)*Q+o;0===t?a.moveTo(e+B/2,s):a.lineTo(e,s)}a.stroke();break;case"rect":for(let t=0;t<y;t++){const e=t/y*C+I,s=(0-A[t]/255)*Q;if(this.styles.gradients){const A=Q+o,t=a.createLinearGradient(0,A,0,A+s);for(const A of this.styles.gradients)t.addColorStop(A.offset,A.color);a.fillStyle=t}else a.fillStyle=E;a.fillRect(e,Q+o,B,s)}}}if("none"!==p||"none"!==d){switch(this.scale){case"linear":for(let A=0;A<y;A++)if(A%D==0){const t=A/y*C+I,e=A*m,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(t,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,t-a.measureText(s).width/2,o+Q+f))}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*C+I,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(e,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,e-a.measureText(s).width/2,o+Q+f))}))}switch(this.type){case"float":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=I-a.measureText(t).width,s=Q/r*(0-(A-i))+o;"none"!==p&&(a.fillStyle=p,a.fillRect(I,s,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(t,e,s))}break;case"uint":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=I-a.measureText(s).width,r=Q/t*e+o;"none"!==p&&(a.fillStyle=p,a.fillRect(I,r,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,i,r))}));break}}}}renderSVG(A,t,e){if(null===this.svg||!this.isActive)return;const s=t??-100,i=e??-30,r=i-s,a=this.svg,n=Number(a.getAttribute("width")??"0"),o=Number(a.getAttribute("height")??"0"),h=this.styles.top??0,I=this.styles.bottom??0,c=this.styles.left??30,C=this.styles.right??30,Q=n-(c+C),B=o-(h+I),l=this.styles.wave??"rgba(0, 0, 255, 1.0)",u=this.styles.width??1.5,E=this.styles.cap??"round",p=this.styles.join??"miter",d=this.styles.grid??"none",f=this.styles.text??"none",y=parseInt(this.styles.font?.size??"13px",10),m=this.size>A.length?A.length:this.size,D=this.sampleRate/(2*A.length),w=Math.trunc(this.textInterval/D);switch(a.innerHTML="",this.type){case"float":{const t=document.createElementNS(g.XMLNS,"path");let e="";switch(this.scale){case"linear":for(let t=0;t<m;t++){const s=t/m*Q+c,a=(0-(A[t]-i))*(B/r)+h;Number.isFinite(s)&&Number.isFinite(a)&&(e+=""===e?`M${s+u/2} ${a}`:` L${s} ${a}`)}break;case"logarithmic":for(let t=0;t<A.length;t++){if(0===t)continue;const s=t*D/this.minFrequency,a=Math.log10(s)/this.log10Ratio*Q+c,n=(0-(A[t]-i))*(B/r)+h;Number.isFinite(n)&&(a<c||a>c+Q||(e+=""===e?`M${a} ${n}`:` L${a} ${n}`))}}t.setAttribute("d",e),t.setAttribute("stroke",l),t.setAttribute("fill","none"),t.setAttribute("stroke-width",u.toString(10)),t.setAttribute("stroke-linecap",E),t.setAttribute("stroke-linejoin",p),a.appendChild(t);break}case"uint":switch(this.styles.shape){case"line":{const t=document.createElementNS(g.XMLNS,"path");let e="";for(let t=0;t<m;t++){const s=t/m*Q+c,i=(1-A[t]/255)*B+h;e+=0===t?`M${s+u/2} ${i}`:` L${s} ${i}`}t.setAttribute("d",e),t.setAttribute("stroke",l),t.setAttribute("fill","none"),t.setAttribute("stroke-width",u.toString(10)),t.setAttribute("stroke-linecap",E),t.setAttribute("stroke-linejoin",p),a.appendChild(t);break}case"rect":{let t=null;this.styles.gradients&&(t=this.createSVGLinearGradient(`${g.SVG_LINEAR_GRADIENT_ID_FFT}-${this.channel}`));const e=document.createElementNS(g.XMLNS,"g");null!==t&&e.appendChild(t);for(let s=0;s<m;s++){const i=document.createElementNS(g.XMLNS,"rect"),r=s/m*Q+c,a=A[s]/255*B;i.setAttribute("x",r.toString(10)),i.setAttribute("y",(h+B).toString(10)),i.setAttribute("width",u.toString(10)),i.setAttribute("height",Math.abs(a).toString(10)),a>=0&&i.setAttribute("transform",`rotate(180 ${r+u/2} ${h+B})`),i.setAttribute("stroke","none"),i.setAttribute("fill",null===t?l:`url(#${g.SVG_LINEAR_GRADIENT_ID_FFT}-${this.channel})`),e.appendChild(i)}a.appendChild(e);break}}}if("none"!==d||"none"!==f){switch(this.scale){case"linear":for(let A=0;A<m;A++)if(A%w==0){const t=A/m*Q+c,e=A*D,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",h.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(g.XMLNS,"text");A.textContent=s,A.setAttribute("x",t.toString(10)),A.setAttribute("y",(h+B+I).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*Q+c,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",h.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(g.XMLNS,"text");A.textContent=s,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(h+B+I).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}))}switch(this.type){case"float":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=c,s=B/r*(0-(A-i))+h;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",s.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==d){const A=document.createElementNS(g.XMLNS,"text");A.textContent=t,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(s-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}break;case"uint":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=c,r=B/t*e+h;if("none"!==d){const A=document.createElementNS(g.XMLNS,"rect");A.setAttribute("x",i.toString(10)),A.setAttribute("y",r.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(g.XMLNS,"text");A.textContent=s,A.setAttribute("x",i.toString(10)),A.setAttribute("y",(r-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}));break}}}}}class o extends s{type="uint";scale="logarithmic";duration=10;plotInterval=4;linearFrequencyTextInterval=8;timeTextInterval=16;timeOffset=1;numberOfSamples=0;renderSize=64;logarithmicFrequencies=[32,62.5,125,250,500,1e3,2e3,4e3,8e3,16e3];minFrequency=this.logarithmicFrequencies[0];maxFrequency=this.logarithmicFrequencies[this.logarithmicFrequencies.length-1];ratio=this.maxFrequency/this.minFrequency;imagedata=null;colorFromNumber=null;static numberToJetColor(A,t,e,s){switch(t){case"uint":{const t=A/255*4;return`rgb(${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-1.5,0-t+4.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-.5,0-t+3.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t+.5,0-t+2.5))))})`}case"float":if("number"==typeof e&&"number"==typeof s){const t=1/(e-s)*Math.max(0,A-s)*4;return`rgb(${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-1.5,0-t+4.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t-.5,0-t+3.5))))} ${Math.max(0,Math.min(255,Math.trunc(255*Math.min(t+.5,0-t+2.5))))})`}return"rgb(0 0 0)"}}constructor(A,t,e){super(A,t,e),this.interval=40}param(A){if("string"==typeof A)switch(A){case"type":return this.type;case"size":return this.renderSize;case"scale":return this.scale;case"duration":return this.duration;case"plotInterval":return this.plotInterval;case"linearFrequencyTextInterval":return this.linearFrequencyTextInterval;case"timeTextInterval":return this.timeTextInterval;case"logarithmicFrequencies":return this.logarithmicFrequencies;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"type":"string"==typeof e&&("uint"!==e&&"float"!==e||(this.type=e));break;case"size":"number"==typeof e&&(this.renderSize=e);break;case"scale":"string"==typeof e&&("linear"!==e&&"logarithmic"!==e||(this.scale=e));break;case"duration":"number"==typeof e&&e>0&&(this.duration=e);break;case"plotInterval":"number"==typeof e&&(this.plotInterval=e);break;case"linearFrequencyTextInterval":"number"==typeof e&&e>0&&(this.linearFrequencyTextInterval=e);break;case"timeTextInterval":"number"==typeof e&&e>0&&(this.timeTextInterval=e);break;case"logarithmicFrequencies":Array.isArray(e)&&(this.logarithmicFrequencies=e,this.minFrequency=e[0],this.maxFrequency=e[e.length-1],this.ratio=this.maxFrequency/this.minFrequency)}return super.param(A),this}setColorFromNumberFunction(A){return this.colorFromNumber=A,this}renderCanvas(A){if(null===this.canvas||null===this.context||!this.isActive)return;const t=this.context,e=this.canvas.width,s=this.canvas.height,i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),h=s-(i+r),I=this.styles.grid??"none",c=this.styles.text??"none",C=A.length,Q=2*C,B=this.sampleRate/Q,l=this.duration*this.sampleRate;if(this.numberOfSamples>=l&&(this.imagedata=null,this.timeOffset=1,this.numberOfSamples=0),null===this.imagedata){t.clearRect(0,0,e,s),t.fillStyle=I,t.fillRect(a,i+h,g,2),t.fillRect(a,i,2,h),t.fillStyle=c,t.font=this.createFontString(),t.textAlign="start";const A=l/this.timeTextInterval;for(let e=0;e<l;e++){if(e%A!=0)continue;const s=e*(g/l)+a,r=i+h+Number.parseInt(this.styles.font?.size??"13",10),n=e/l*this.duration;0!==n&&n<1e-4?t.fillText(`${(1e3*n).toFixed(1)} msec`,s,r):t.fillText(`${n.toFixed(2)} sec`,s,r)}switch(t.textAlign="end",this.scale){case"linear":{const A=Math.min(C,this.renderSize);for(let e=0;e<=A;e++){if(e%this.linearFrequencyTextInterval!=0)continue;const s=a,r=(1-e/A)*h+i,n=e*B;t.fillText(`${Math.trunc(n)} Hz`,s,r)}break}case"logarithmic":this.logarithmicFrequencies.forEach(((A,e)=>{const s=a,r=(1-e/this.logarithmicFrequencies.length)*h+i;A>=1e3?t.fillText(`${Math.trunc(A/1e3)} kHz`,s,r):t.fillText(`${A} Hz`,s,r)}))}}else t.putImageData(this.imagedata,0,0);switch(this.scale){case"linear":{const e=Math.min(C,this.renderSize),s=Number.parseInt(this.styles.font?.size??"13",10);for(let r=0;r<e;r++){const n=r*B;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=a+this.timeOffset,I=(1-r/e)*h+i;if(null===this.colorFromNumber){const e=o.numberToJetColor(A[r],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);t.fillStyle=e,t.fillRect(g,I-s,1,s)}else{const e=this.colorFromNumber(A[r]);t.fillStyle=e,t.fillRect(g,I-s,1,s)}}break}case"logarithmic":{const e=Math.log10(this.ratio),s=h/(this.logarithmicFrequencies.length-1);for(let r=0;r<C;r++){if(0===r)continue;if(1!==r&&r%this.plotInterval!=0)continue;const n=r*B;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=n/this.minFrequency,I=Math.log10(g),c=a+this.timeOffset,C=(1-I/e)*h+i;if(!(C<i))if(null===this.colorFromNumber){const e=o.numberToJetColor(A[r],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);t.fillStyle=e,t.fillRect(c,C>i+h-s?i+h-s:C,1,s)}else{const e=this.colorFromNumber(A[r]);t.fillStyle=e,t.fillRect(c,C>i+h-s?i+h-s:C,1,s)}}break}}t.fillStyle=c,t.font=this.createFontString(),t.textAlign="center",this.numberOfSamples+=C,this.timeOffset=this.numberOfSamples*(1/this.sampleRate)*(g/this.duration),this.imagedata=t.getImageData(0,0,e,s)}renderSVG(A){if(null===this.svg||!this.isActive)return;const t=this.svg,e=Number(t.getAttribute("width")??"0"),s=Number(t.getAttribute("height")??"0"),i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),h=s-(i+r),I=this.styles.grid??"none",c=this.styles.text??"none",C=Number.parseInt(this.styles.font?.size??"13px",10),Q=A.length,B=2*Q,l=this.sampleRate/B,u=this.duration*this.sampleRate;if(this.numberOfSamples>=u&&(t.innerHTML="",this.timeOffset=1,this.numberOfSamples=0),0===t.innerHTML.length){const A=document.createElementNS(o.XMLNS,"rect");A.setAttribute("x",a.toString(10)),A.setAttribute("y",(i+h).toString(10)),A.setAttribute("width",g.toString(10)),A.setAttribute("height","2"),A.setAttribute("fill",I),A.setAttribute("stroke","none");const e=document.createElementNS(o.XMLNS,"rect");e.setAttribute("x",a.toString(10)),e.setAttribute("y",i.toString(10)),e.setAttribute("width","2"),e.setAttribute("height",h.toString(10)),e.setAttribute("fill",I),e.setAttribute("stroke","none"),t.appendChild(A),t.appendChild(e);const s=document.createElementNS(o.XMLNS,"g"),r=u/this.timeTextInterval;for(let A=0;A<u;A++){if(A%r!=0)continue;const t=A*(g/u)+a,e=i+h+C,n=document.createElementNS(o.XMLNS,"text"),I=A/u*this.duration;n.textContent=0!==I&&I<1e-4?`${(1e3*I).toFixed(1)} msec`:`${I.toFixed(2)} sec`,n.setAttribute("x",t.toString(10)),n.setAttribute("y",e.toString(10)),n.setAttribute("text-anchor","start"),n.setAttribute("stroke","none"),n.setAttribute("fill",c),n.setAttribute("font-size",C.toString(10)),s.appendChild(n)}switch(t.appendChild(s),this.scale){case"linear":{const A=Math.min(Q,this.renderSize),e=document.createElementNS(o.XMLNS,"g");for(let t=0;t<=A;t++){if(t%this.linearFrequencyTextInterval!=0)continue;const s=a,r=(1-t/A)*h+i,n=t*l,g=document.createElementNS(o.XMLNS,"text");g.textContent=`${Math.trunc(n)} Hz`,g.setAttribute("x",s.toString(10)),g.setAttribute("y",r.toString(10)),g.setAttribute("text-anchor","end"),g.setAttribute("stroke","none"),g.setAttribute("fill",c),g.setAttribute("font-size",C.toString(10)),e.appendChild(g)}t.appendChild(e);break}case"logarithmic":{const A=document.createElementNS(o.XMLNS,"g");this.logarithmicFrequencies.forEach(((t,e)=>{const s=a,r=(1-e/this.logarithmicFrequencies.length)*h+i,n=document.createElementNS(o.XMLNS,"text");n.textContent=t>=1e3?`${Math.trunc(t/1e3)} kHz`:`${t} Hz`,n.setAttribute("x",s.toString(10)),n.setAttribute("y",r.toString(10)),n.setAttribute("text-anchor","end"),n.setAttribute("stroke","none"),n.setAttribute("fill",c),n.setAttribute("font-size",C.toString(10)),A.appendChild(n)})),t.appendChild(A);break}}}switch(this.scale){case"linear":{const e=Math.min(Q,this.renderSize),s=Number.parseInt(this.styles.font?.size??"13",10),r=document.createElementNS(o.XMLNS,"g");for(let t=0;t<e;t++){const n=t*l;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=a+this.timeOffset,I=(1-t/e)*h+i,c=document.createElementNS(o.XMLNS,"rect");if(null===this.colorFromNumber){const e=o.numberToJetColor(A[t],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);c.setAttribute("fill",e)}else{const e=this.colorFromNumber(A[t]);c.setAttribute("fill",e)}c.setAttribute("x",g.toString(10)),c.setAttribute("y",(I-s).toString(10)),c.setAttribute("width",this.styles.width?this.styles.width.toString(10):"1"),c.setAttribute("height",s.toString(10)),c.setAttribute("stroke","none"),r.appendChild(c)}t.appendChild(r);break}case"logarithmic":{const e=document.createElementNS(o.XMLNS,"g"),s=Math.log10(this.ratio),r=h/(this.logarithmicFrequencies.length-1);for(let t=0;t<Q;t++){if(0===t)continue;if(1!==t&&t%this.plotInterval!=0)continue;const n=t*l;if(n<this.minFrequency||n>this.maxFrequency)continue;const g=n/this.minFrequency,I=Math.log10(g),c=a+this.timeOffset,C=(1-I/s)*h+i;if(C<i)continue;const Q=document.createElementNS(o.XMLNS,"rect");if(null===this.colorFromNumber){const e=o.numberToJetColor(A[t],this.type,this.analyser?.maxDecibels,this.analyser?.minDecibels);Q.setAttribute("fill",e)}else{const e=this.colorFromNumber(A[t]);Q.setAttribute("fill",e)}Q.setAttribute("x",c.toString(10)),Q.setAttribute("y",(C>i+h-r?i+h-r:C).toString(10)),Q.setAttribute("width",this.styles.width?this.styles.width.toString(10):"1"),Q.setAttribute("height",r.toString(10)),Q.setAttribute("stroke","none"),e.appendChild(Q)}t.appendChild(e);break}}this.numberOfSamples+=Q,this.timeOffset=this.numberOfSamples*(1/this.sampleRate)*(g/this.duration)}}class h extends s{scale="linear";logarithmicFrequencies=[32,62.5,125,250,500,1e3,2e3,4e3,8e3,16e3];minFrequency=this.logarithmicFrequencies[0];maxFrequency=this.logarithmicFrequencies[this.logarithmicFrequencies.length-1];ratio=this.maxFrequency/this.minFrequency;log10Ratio=Math.log10(this.ratio);textInterval=1e3;constructor(A,t){super(A,t)}param(A){if("string"==typeof A)switch(A){case"scale":return this.scale;case"logarithmicFrequencies":return this.logarithmicFrequencies;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"textInterval":return this.textInterval;case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))switch(t){case"scale":"string"==typeof e&&("linear"!==e&&"logarithmic"!==e||(this.scale=e));break;case"logarithmicFrequencies":Array.isArray(e)&&(this.logarithmicFrequencies=e,this.minFrequency=e[0],this.maxFrequency=e[e.length-1],this.ratio=this.maxFrequency/this.minFrequency,this.log10Ratio=Math.log10(this.ratio));break;case"textInterval":"number"==typeof e&&(this.textInterval=e)}return super.param(A),this}}class I extends h{unit="none";renderAmplitudeTexts=null;constructor(A,t){super(A,t)}param(A){if("string"==typeof A)switch(A){case"unit":return this.unit;case"scale":return this.scale;case"logarithmicFrequencies":case"minFrequency":case"maxFrequency":case"textInterval":case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))if("unit"===t)"string"==typeof e&&("none"!==e&&"decibel"!==e||(this.unit=e));return super.param(A),this}setRenderAmplitudeTextsFunction(A){return this.renderAmplitudeTexts=A,this}renderCanvas(A,t,e){if(null===this.canvas||null===this.context)return;const s=t??-100,i=e??-30,r=i-s,a=this.context,n=this.canvas.width,g=this.canvas.height,o=this.styles.top??0,h=this.styles.bottom??0,I=this.styles.left??30,c=this.styles.right??30,C=n-(I+c),Q=g-(o+h),B=this.styles.width??1.5,l=this.styles.cap??"round",u=this.styles.join??"miter",E=this.styles.wave??"rgba(0, 0, 255, 1.0)",p=this.styles.grid??"none",d=this.styles.text??"none",f=Number.parseInt(this.styles.font?.size??"13px",10),y=A.length,m=this.sampleRate/(2*A.length),D=Math.trunc(this.textInterval/m);switch(a.clearRect(0,0,n,g),a.strokeStyle=E,a.lineWidth=B,a.lineCap=l,a.lineJoin=u,a.beginPath(),this.scale){case"linear":for(let t=0;t<y;t++){const e=t/y*C+I,s="none"===this.unit?(1-A[t])*Q+o:(0-(A[t]-i))*(Q/r)+o;0===t?a.moveTo(e+B/2,s):a.lineTo(e,s)}break;case"logarithmic":for(let t=0;t<y;t++){if(0===t)continue;const e=t*m/this.minFrequency,s=Math.log10(e)/this.log10Ratio*C+I,n="none"===this.unit?(1-A[t])*Q+o:(0-(A[t]-i))*(Q/r)+o;Number.isFinite(n)&&(s<I||s>I+C||(1===t?a.moveTo(I+B/2,n):a.lineTo(s,n)))}}if(a.stroke(),"none"!==p||"none"!==d){switch(this.scale){case"linear":for(let A=0;A<y;A++)if(A%D==0){const t=A/y*C+I,e=A*m,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(t,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,t-a.measureText(s).width/2,o+Q+f))}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*C+I,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;"none"!==p&&(a.fillStyle=p,a.fillRect(e,o,1,Q)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,e-a.measureText(s).width/2,o+Q+f))}))}if("function"==typeof this.renderAmplitudeTexts)this.renderAmplitudeTexts(A);else switch(this.unit){case"none":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=I-a.measureText(s).width,r=Q/t*e+o;"none"!==p&&(a.fillStyle=p,a.fillRect(I,r,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(s,i,r))}));break}case"decibel":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=I-a.measureText(t).width,s=Q/r*(0-(A-i))+o;"none"!==p&&(a.fillStyle=p,a.fillRect(I,s,C,1)),"none"!==d&&(a.fillStyle=d,a.font=this.createFontString(),a.fillText(t,e,s))}}}}renderSVG(A,t,e){if(null===this.svg)return;const s=t??-100,i=e??-30,r=i-s,a=this.svg,n=Number(a.getAttribute("width")??"0"),g=Number(a.getAttribute("height")??"0"),o=this.styles.top??0,I=this.styles.bottom??0,c=this.styles.left??30,C=this.styles.right??30,Q=n-(c+C),B=g-(o+I),l=this.styles.width??1.5,u=this.styles.cap??"round",E=this.styles.join??"miter",p=this.styles.wave??"rgba(0, 0, 255, 1.0)",d=this.styles.grid??"none",f=this.styles.text??"none",y=Number.parseInt(this.styles.font?.size??"13px",10),m=A.length,D=this.sampleRate/(2*A.length),w=Math.trunc(this.textInterval/D);a.innerHTML="";const b=document.createElementNS(h.XMLNS,"path");let F="";switch(this.scale){case"linear":for(let t=0;t<m;t++){const e=t/m*Q+c,s="none"===this.unit?(1-A[t])*B+o:0-(A[t]-i)*(B/r)+o;Number.isFinite(e)&&Number.isFinite(s)&&(F+=""===F?`M${e+l/2} ${s}`:` L${e} ${s}`)}break;case"logarithmic":for(let t=0;t<m;t++){if(0===t)continue;const e=t*D/this.minFrequency,s=Math.log10(e)/this.log10Ratio*Q+c,a="none"===this.unit?(1-A[t])*B+o:0-(A[t]-i)*(B/r)+o;Number.isFinite(a)&&(s<c||s>c+Q||(F+=""===F?`M${s} ${a}`:` L${s} ${a}`))}}if(b.setAttribute("d",F),b.setAttribute("stroke",p),b.setAttribute("fill","none"),b.setAttribute("stroke-width",l.toString(10)),b.setAttribute("stroke-linecap",u),b.setAttribute("stroke-linejoin",E),a.appendChild(b),"none"!==d||"none"!==f){switch(this.scale){case"linear":for(let A=0;A<m;A++)if(A%w==0){const t=A/m*Q+c,e=A*D,s=e<1e3?`${e} Hz`:`${(e/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",t.toString(10)),A.setAttribute("y",o.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(h.XMLNS,"text");A.textContent=s,A.setAttribute("x",t.toString(10)),A.setAttribute("y",(o+B+I).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const t=A/this.minFrequency,e=Math.log10(t)/this.log10Ratio*Q+c,s=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;if("none"!==d){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",o.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",B.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(h.XMLNS,"text");A.textContent=s,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(o+B+I).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}))}if("function"==typeof this.renderAmplitudeTexts)this.renderAmplitudeTexts(A);else switch(this.unit){case"none":{const A=[1,.5,0],t=A.length-1;A.forEach(((A,e)=>{const s=A.toFixed(1),i=c,r=B/t*e+o;if("none"!==d){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",i.toString(10)),A.setAttribute("y",r.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(h.XMLNS,"text");A.textContent=s,A.setAttribute("x",i.toString(10)),A.setAttribute("y",(r-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}));break}case"decibel":for(let A=s;A<=i;A+=10){const t=`${A} dB`,e=c,s=B/r*(0-(A-i))+o;if("none"!==d){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",s.toString(10)),A.setAttribute("width",Q.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",d),a.appendChild(A)}if("none"!==f){const A=document.createElementNS(h.XMLNS,"text");A.textContent=t,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(s-y/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",f),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",y.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),a.appendChild(A)}}}}}}class c extends h{unit="radian";renderPhaseTexts=null;constructor(A,t){super(A,t)}param(A){if("string"==typeof A)switch(A){case"unit":return this.unit;case"scale":return this.scale;case"logarithmicFrequencies":case"minFrequency":case"maxFrequency":case"textInterval":case"interval":case"styles":return super.param(A)}for(const[t,e]of Object.entries(A))if("unit"===t)"string"==typeof e&&("radian"!==e&&"degree"!==e||(this.unit=e));return super.param(A),this}setRenderPhaseTextsFunction(A){return this.renderPhaseTexts=A,this}renderCanvas(A){if(null===this.canvas||null===this.context)return;const t=this.context,e=this.canvas.width,s=this.canvas.height,i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),o=s-(i+r),h=this.styles.width??1.5,I=this.styles.cap??"round",c=this.styles.join??"miter",C=this.styles.wave??"rgba(0, 0, 255, 1.0)",Q=this.styles.grid??"none",B=this.styles.text??"none",l=Number.parseInt(this.styles.font?.size??"13px",10),u=A.length,E=this.sampleRate/(2*A.length),p=Math.trunc(this.textInterval/E);switch(t.clearRect(0,0,e,s),t.strokeStyle=C,t.lineWidth=h,t.lineCap=I,t.lineJoin=c,t.beginPath(),this.scale){case"linear":for(let e=0;e<u;e++){const s=e/u*g+a,r=(1-A[e]/Math.PI)*(o/2)+i;0===e?t.moveTo(s+h/2,r):t.lineTo(s,r)}break;case"logarithmic":for(let e=0,s=A.length;e<s;e++){if(0===e)continue;const s=e*E/this.minFrequency,r=Math.log10(s)/this.log10Ratio*g+a,n=(1-A[e]/Math.PI)*(o/2)+i;Number.isFinite(n)&&(r<a||r>a+g||(1===e?t.moveTo(a+h/2,n):t.lineTo(r,n)))}}if(t.stroke(),"none"!==Q||"none"!==B){switch(this.scale){case"linear":for(let A=0;A<u;A++)if(A%p==0){const e=A/u*g+a,s=A*E,r=s<1e3?`${s} Hz`:`${(s/1e3).toString(10).slice(0,3)} kHz`;"none"!==Q&&(t.fillStyle=Q,t.fillRect(e,i,1,o)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,e-t.measureText(r).width/2,i+o+l))}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const e=A/this.minFrequency,s=Math.log10(e)/this.log10Ratio*g+a,r=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;"none"!==Q&&(t.fillStyle=Q,t.fillRect(s,i,1,o)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,s-t.measureText(r).width/2,i+o+l))}))}if("function"==typeof this.renderPhaseTexts)this.renderPhaseTexts(A);else switch(this.unit){case"radian":{const A=["π","0","-π"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A} rad`,n=a-t.measureText(r).width,h=o/e*s+i;"none"!==Q&&(t.fillStyle=Q,t.fillRect(a,h,g,1)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,n,h))}));break}case"degree":{const A=["180","0","-180"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A}°`,n=a-t.measureText(r).width,h=o/e*s+i;"none"!==Q&&(t.fillStyle=Q,t.fillRect(a,h,g,1)),"none"!==B&&(t.fillStyle=B,t.font=this.createFontString(),t.fillText(r,n,h))}));break}}}}renderSVG(A){if(null===this.svg)return;const t=this.svg,e=Number(t.getAttribute("width")??"0"),s=Number(t.getAttribute("height")??"0"),i=this.styles.top??0,r=this.styles.bottom??0,a=this.styles.left??30,n=this.styles.right??30,g=e-(a+n),o=s-(i+r),I=this.styles.width??1.5,c=this.styles.cap??"round",C=this.styles.join??"miter",Q=this.styles.wave??"rgba(0, 0, 255, 1.0)",B=this.styles.grid??"none",l=this.styles.text??"none",u=Number.parseInt(this.styles.font?.size??"13px",10),E=A.length,p=this.sampleRate/(2*A.length),d=Math.trunc(this.textInterval/p);t.innerHTML="";const f=document.createElementNS(h.XMLNS,"path");let y="";switch(this.scale){case"linear":for(let t=0;t<E;t++){const e=t/E*g+a,s=(1-A[t]/Math.PI)*(o/2)+i;Number.isFinite(e)&&Number.isFinite(s)&&(y+=""===y?`M${e+I/2} ${s}`:` L${e} ${s}`)}break;case"logarithmic":for(let t=0;t<A.length;t++){if(0===t)continue;const e=t*p/this.minFrequency,s=Math.log10(e)/this.log10Ratio*g+a,r=(1-A[t]/Math.PI)*(o/2)+i;Number.isFinite(r)&&(s<a||s>a+g||(y+=""===y?`M${s} ${r}`:` L${s} ${r}`))}}if(f.setAttribute("d",y),f.setAttribute("stroke",Q),f.setAttribute("fill","none"),f.setAttribute("stroke-width",I.toString(10)),f.setAttribute("stroke-linecap",c),f.setAttribute("stroke-linejoin",C),t.appendChild(f),"none"!==B||"none"!==l){switch(this.scale){case"linear":for(let A=0;A<E;A++)if(A%d==0){const e=A/E*g+a,s=A*p,n=s<1e3?`${s} Hz`:`${(s/1e3).toString(10).slice(0,3)} kHz`;if("none"!==B){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",e.toString(10)),A.setAttribute("y",i.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",o.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==l){const A=document.createElementNS(h.XMLNS,"text");A.textContent=n,A.setAttribute("x",e.toString(10)),A.setAttribute("y",(i+o+r).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}break;case"logarithmic":this.logarithmicFrequencies.forEach((A=>{const e=A/this.minFrequency,s=Math.log10(e)/this.log10Ratio*g+a,n=A<1e3?`${A} Hz`:`${(A/1e3).toString(10).slice(0,3)} kHz`;if("none"!==B){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",s.toString(10)),A.setAttribute("y",i.toString(10)),A.setAttribute("width","1"),A.setAttribute("height",o.toString(10)),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==l){const A=document.createElementNS(h.XMLNS,"text");A.textContent=n,A.setAttribute("x",s.toString(10)),A.setAttribute("y",(i+o+r).toString(10)),A.setAttribute("text-anchor","middle"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}))}if("function"==typeof this.renderPhaseTexts)this.renderPhaseTexts(A);else switch(this.unit){case"radian":{const A=["π","0","-π"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A} rad`,n=a,I=o/e*s+i;if("none"!==B){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",n.toString(10)),A.setAttribute("y",I.toString(10)),A.setAttribute("width",g.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==B){const A=document.createElementNS(h.XMLNS,"text");A.textContent=r,A.setAttribute("x",n.toString(10)),A.setAttribute("y",(I-u/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}));break}case"degree":{const A=["180","0","-180"],e=A.length-1;A.forEach(((A,s)=>{const r=`${A}°`,n=a,I=o/e*s+i;if("none"!==B){const A=document.createElementNS(h.XMLNS,"rect");A.setAttribute("x",n.toString(10)),A.setAttribute("y",I.toString(10)),A.setAttribute("width",g.toString(10)),A.setAttribute("height","1"),A.setAttribute("stroke","none"),A.setAttribute("fill",B),t.appendChild(A)}if("none"!==B){const A=document.createElementNS(h.XMLNS,"text");A.textContent=r,A.setAttribute("x",n.toString(10)),A.setAttribute("y",(I-u/4).toString(10)),A.setAttribute("text-anchor","end"),A.setAttribute("stroke","none"),A.setAttribute("fill",l),A.setAttribute("font-family",this.styles.font?.family??"Arial"),A.setAttribute("font-size",u.toString(10)),A.setAttribute("font-style",this.styles.font?.style??"normal"),A.setAttribute("font-weight",this.styles.font?.weight??"normal"),t.appendChild(A)}}));break}}}}}class C{analysers;splitter;input;timeOverviews;times;ffts;spectrograms;timeDomainAnimationIds=[null,null];timeDomainTimerIds=[null,null];frequencyDomainAnimationIds=[null,null];frequencyDomainTimerIds=[null,null];spectrogramAnimationIds=[null,null];spectrogramTimerIds=[null,null];amplitudeSpectrum;phaseSpectrum;minDecibels=-100;maxDecibels=-30;constructor(A){this.analysers=[A.createAnalyser(),A.createAnalyser()],this.splitter=A.createChannelSplitter(2),this.input=A.createGain(),this.input.connect(this.splitter),this.splitter.connect(this.analysers[0],0,0),this.splitter.connect(this.analysers[1],1,0),this.timeOverviews=[new a(A.sampleRate,0),new a(A.sampleRate,1)],this.times=[new n(A.sampleRate,0,this.analysers[0]),new n(A.sampleRate,1,this.analysers[1])],this.ffts=[new g(A.sampleRate,0,this.analysers[0]),new g(A.sampleRate,1,this.analysers[1])],this.spectrograms=[new o(A.sampleRate,0,this.analysers[0]),new o(A.sampleRate,1,this.analysers[1])],this.amplitudeSpectrum=new I(A.sampleRate,0),this.phaseSpectrum=new c(A.sampleRate,0),this.analysers.forEach((A=>{A.fftSize=2048,A.minDecibels=-100,A.maxDecibels=-30,A.smoothingTimeConstant=.8}))}start(A,t,e,s){let i=t;switch(void 0!==i&&-1!==i||(this.input.disconnect(this.splitter),this.splitter.disconnect(0),this.splitter.disconnect(1),this.input.connect(this.analysers[0]),i=0),A){case"timeoverview":if(e&&e.numberOfChannels>i){const A=new Float32Array(e.length);A.set(e.getChannelData(i)),this.timeOverviews[i].start(A)}break;case"time":{const e=this.times[i].param("interval");switch(this.times[i].param("type")){case"uint":{const A=new Uint8Array(this.analysers[i].fftSize);this.analysers[i].getByteTimeDomainData(A),this.times[i].start(A);break}case"float":{const A=new Float32Array(this.analysers[i].fftSize);this.analysers[i].getFloatTimeDomainData(A),this.times[i].start(A);break}}"number"==typeof e&&(this.stop(A,t),e<0?this.timeDomainAnimationIds[i]=window.requestAnimationFrame((()=>{this.start(A,t)})):this.timeDomainTimerIds[i]=window.setTimeout((()=>{this.start(A,t)}),e));break}case"fft":{const e=this.ffts[i].param("interval");switch(this.ffts[i].param("type")){case"uint":{const A=new Uint8Array(this.analysers[i].frequencyBinCount);this.analysers[i].getByteFrequencyData(A),this.ffts[i].start(A);break}case"float":{const A=new Float32Array(this.analysers[i].frequencyBinCount);this.analysers[i].getFloatFrequencyData(A),this.ffts[i].start(A,this.analysers[i].minDecibels,this.analysers[i].maxDecibels);break}}"number"==typeof e&&(this.stop(A,t),e<0?this.frequencyDomainAnimationIds[i]=window.requestAnimationFrame((()=>{this.start(A,t)})):this.frequencyDomainTimerIds[i]=window.setTimeout((()=>{this.start(A,t)}),e));break}case"spectrogram":{const e=this.spectrograms[i].param("interval");switch(this.spectrograms[i].param("type")){case"uint":{const A=new Uint8Array(this.analysers[i].frequencyBinCount);this.analysers[i].getByteFrequencyData(A),this.spectrograms[i].start(A);break}case"float":{const A=new Float32Array(this.analysers[i].frequencyBinCount);this.analysers[i].getFloatFrequencyData(A),this.spectrograms[i].start(A);break}}"number"==typeof e&&(this.stop(A,t),e<0?this.spectrogramAnimationIds[i]=window.requestAnimationFrame((()=>{this.start(A,t)})):this.spectrogramTimerIds[i]=window.setTimeout((()=>{this.start(A,t)}),e));break}case"offline-amplitude-spectrum":s&&this.amplitudeSpectrum.start(s,this.minDecibels,this.maxDecibels);break;case"offline-phase-spectrum":s&&this.phaseSpectrum.start(s,this.minDecibels,this.maxDecibels)}return this}stop(A,t){let e=t;switch(void 0!==e&&-1!==e||(e=0),A){case"time":{const A=this.times[e].param("interval");if("number"==typeof A){const t=this.timeDomainAnimationIds[e],s=this.timeDomainTimerIds[e];A<0&&t?(window.cancelAnimationFrame(t),this.timeDomainAnimationIds[e]=null):s&&(window.clearTimeout(s),this.timeDomainTimerIds[e]=null)}break}case"fft":{const A=this.ffts[e].param("interval");if("number"==typeof A){const t=this.frequencyDomainAnimationIds[e],s=this.frequencyDomainTimerIds[e];A<0&&t?(window.cancelAnimationFrame(t),this.frequencyDomainAnimationIds[e]=null):s&&(window.clearTimeout(s),this.frequencyDomainTimerIds[e]=null)}break}case"spectrogram":{const A=this.spectrograms[e].param("interval");if("number"==typeof A){const t=this.spectrogramAnimationIds[e],s=this.spectrogramTimerIds[e];A<0&&t?(window.cancelAnimationFrame(t),this.spectrogramAnimationIds[e]=null):s&&(window.clearTimeout(s),this.spectrogramTimerIds[e]=null)}break}}return this}param(A){if("string"==typeof A)switch(A){case"fftSize":return this.analysers[0].fftSize;case"frequencyBinCount":return this.analysers[0].frequencyBinCount;case"minDecibels":return this.analysers[0].minDecibels;case"maxDecibels":return this.analysers[0].maxDecibels;case"smoothingTimeConstant":return this.analysers[0].smoothingTimeConstant}for(const[t,e]of Object.entries(A))switch(t){case"fftSize":this.analysers[0].fftSize=e,this.analysers[1].fftSize=e;break;case"minDecibels":this.analysers[0].minDecibels=e,this.analysers[1].minDecibels=e,this.minDecibels=e;break;case"maxDecibels":this.analysers[0].maxDecibels=e,this.analysers[1].maxDecibels=e,this.maxDecibels=e;break;case"smoothingTimeConstant":this.analysers[0].smoothingTimeConstant=e,this.analysers[1].smoothingTimeConstant=e}return this}domain(A,t){let e=t;switch(void 0!==e&&-1!==e||(e=0),A){case"timeoverview":return this.timeOverviews[e];case"time":return this.times[e];case"fft":return this.ffts[e];case"spectrogram":return this.spectrograms[e];case"offline-amplitude-spectrum":return this.amplitudeSpectrum;case"offline-phase-spectrum":return this.phaseSpectrum}return this}get(A){let t=A;return void 0!==t&&-1!==t||(t=0),this.analysers[t]}get INPUT(){return this.input}get OUTPUT(){return this.input}}class Q{id;dataBlocks=[];constructor(A){this.id=A}get(){return this.dataBlocks}append(A){return this.dataBlocks.push(A),this}clear(){this.dataBlocks.length=0}has(){return this.dataBlocks.length>0}toString(){return this.id}}class B{id;frames=[];channelGain=1;constructor(A){this.id=A}append(A){return this.frames.push(A),this}get(A){return"number"==typeof A&&A>=0&&A<this.frames.length?this.frames[A]:this.frames}gain(A){if(!("number"==typeof A&&A>=0&&A<=1))return this.channelGain;this.channelGain=A}length(){return this.frames.length}toString(){return this.id}}class RecorderProcessor extends AudioWorkletProcessor{static BUFFER_SIZE=128;constructor(){super()}process(A){if(0===A.length||0===A[0].length)return!0;const t={inputs:A};return this.port.postMessage(t),!0}}class l{processor;sampleRate;channels=[];activeTrack=-1;paused=!0;constructor(A){this.processor=new AudioWorkletNode(A,RecorderProcessor.name),this.sampleRate=A.sampleRate,this.processor.port.onmessage=A=>{if(-1===this.activeTrack)return;if(0===A.data.inputs.length)return;const t=A.data.inputs[0];if(0===t.length)return;const e=RecorderProcessor.BUFFER_SIZE;if(1===t.length){const A=t[0],s=this.channels[0].gain(),i=this.channels[0].get(this.activeTrack),r=new Float32Array(e);for(let t=0;t<e;t++)r[t]=s*A[t];return void i?.append(r)}const s=t[0],i=t[1],r=this.channels[0].gain(),a=this.channels[1].gain(),n=this.channels[0].get(this.activeTrack),g=this.channels[1].get(this.activeTrack),o=new Float32Array(e),h=new Float32Array(e);for(let A=0;A<e;A++)o[A]=r*s[A],h[A]=a*i[A];n?.append(o),g?.append(h)}}setup(A,t){this.channels.push(new B("0")),this.channels.push(new B("1"));for(const A of this.channels)for(let e=0;e<t;e++)A.append(new Q(e.toString(10)));return this}ready(A){return this.hasTrack(A)?this.activeTrack=A:this.activeTrack=-1,this}start(){return-1!==this.activeTrack&&this.paused?(this.paused=!1,this):this}stop(){return this.activeTrack=-1,this.paused=!0,this.processor.disconnect(0),this}param(A){if("string"==typeof A)switch(A){case"0":if(this.channels[0])return this.channels[0].gain();break;case"1":if(this.channels[1])return this.channels[1].gain()}for(const[t,e]of Object.entries(A))switch(t){case"0":this.channels[0]&&"number"==typeof e&&this.channels[0].gain(e);break;case"1":this.channels[1]&&"number"==typeof e&&this.channels[1].gain(e)}return this}get(){return this.activeTrack}clear(A){if(-1!==this.activeTrack&&this.stop(),-1===A)for(const A of this.channels){const t=A.get();for(const A of t)A.clear()}else if(this.hasTrack(A))for(const t of this.channels){const e=t.get(A);e?.clear()}return this}create(A,t,e,s){-1!==this.activeTrack&&this.stop();let i=null,r=null;if(-1===A&&this.has(-1,-1))i=this.mixTrack(0),r=this.mixTrack(1);else{if(!this.has(0,A)||!this.has(1,A))return"";i=this.flatTrack(0,A),r=this.flatTrack(1,A)}if(null===i||null===r)return"";const a=this.sampleRate,n=e,g=t,o=g*Math.min(i.length,r.length),h=36+(8+o*(n/8)),I=h-8,c=a*g*(n/8),C=o*(n/8);let Q=null;switch(n){case 8:Q=new Uint8Array(o);for(let A=0;A<o;A++){let t=0;t=A%g==0?Math.round((i[Math.trunc(A/g)]+1)/2*255):Math.round((r[Math.trunc(A/g)]+1)/2*255),t>255&&(t=255),t<0&&(t=0),Q[A]=t}break;case 16:Q=new Int16Array(o);for(let A=0;A<o;A++){let t=0;t=A%g==0?Math.round(32768*i[Math.trunc(A/g)]):Math.round(32768*r[Math.trunc(A/g)]),t>32767&&(t=32767),t<-32768&&(t=-32768),Q[A]=t}}if(null===Q)return"";const B=new Uint8Array(h);B[0]=82,B[1]=73,B[2]=70,B[3]=70,B[4]=255&I,B[5]=I>>8&255,B[6]=I>>16&255,B[7]=I>>24&255,B[8]=87,B[9]=65,B[10]=86,B[11]=69,B[12]=102,B[13]=109,B[14]=116,B[15]=32,B[16]=16,B[17]=0,B[18]=0,B[19]=0,B[20]=1,B[21]=0,B[22]=g,B[23]=0,B[24]=255&a,B[25]=a>>8&255,B[26]=a>>16&255,B[27]=a>>24&255,B[28]=255&c,B[29]=c>>8&255,B[30]=c>>16&255,B[31]=c>>24&255,B[32]=g*(n/8),B[33]=0,B[34]=n,B[35]=0,B[36]=100,B[37]=97,B[38]=116,B[39]=97,B[40]=255&C,B[41]=C>>8&255,B[42]=C>>16&255,B[43]=C>>24&255;for(let A=0;A<o;A++){const t=h-C;switch(n){case 8:B[t+A]=Q[A];break;case 16:B[t+2*A+0]=255&Q[A],B[t+2*A+1]=Q[A]>>8&255}}switch(s){case"base64":case"dataURL":{const A=window.btoa(Array.from(B).map((A=>String.fromCodePoint(A))).join(""));return"base64"===s?A:`data:audio/wav;base64,${A}`}case"blob":case"objectURL":{const A=new Blob([B],{type:"audio/wav"});return"blob"===s?A:window.URL.createObjectURL(A)}}}has(A,t){if(!this.hasChannel(A))return this.channels.some((A=>A.get().some((A=>A.has()))));const e=this.channels[A].get();if(!this.hasTrack(t))return e.some((A=>A.has()));const s=this.channels[A].get(t);return s?.has()??!1}hasChannel(A){return A>=0&&A<this.channels.length}hasTrack(A){return A>=0&&this.channels.every((t=>A<t.length()))}get INPUT(){return this.processor}get OUTPUT(){return this.processor}flatTrack(A,t){if(!this.hasChannel(A)||!this.hasTrack(t))return null;const e=this.channels[A].get(t);if(null===e)return null;const s=e.get(),i=RecorderProcessor.BUFFER_SIZE,r=new Float32Array(s.length*i);for(let A=0,t=s.length;A<t;A++){const t=s[A];for(let e=0;e<i;e++)r[A*i+e]=t[e]}return r}mixTrack(A){if(!this.hasChannel(A))return null;const t=this.channels[A].get(),e=RecorderProcessor.BUFFER_SIZE;let s=0,i=0,r=0,a=0,n=0;for(const A of t){const t=A.get();n<t.length&&(n=t.length)}const g=new Float32Array(n*e);for(;;){for(let A=0,e=t.length;A<e;A++){const e=t[A].get()[r];e&&a>=0&&a<=e.length&&(s+=e[a],i++)}if(i<=0)return g;g[r*e+a]=s/i,s=0,i=0,a<e-1?a++:(r++,a=0)}}}class u{context;input;output;lfo;depth;rate;isActive=!0;paused=!0;constructor(A){this.context=A,this.input=A.createGain(),this.output=A.createGain(),this.lfo=A.createOscillator(),this.depth=A.createGain(),this.rate=this.lfo.frequency}start(A){this.isActive&&this.paused&&(this.lfo.start(A??this.context.currentTime),this.paused=!1)}stop(A,t){if(!this.isActive||this.paused)return;const e=this.lfo.type,s=this.lfo.frequency.value;this.lfo.stop((A??this.context.currentTime)+(t??0)),this.lfo=this.context.createOscillator(),this.lfo.type=e,this.lfo.frequency.value=s,this.rate=this.lfo.frequency,this.paused=!0}toJSON(){return JSON.stringify(this.params())}state(){return this.isActive}activate(){return this.isActive=!0,this.connect(),this.start(0),this}deactivate(){return this.stop(0),this.isActive=!1,this.connect(),this}get INPUT(){return this.input}get OUTPUT(){return this.output}}class E extends u{panner;constructor(A){super(A),this.panner=this.context.createStereoPanner(),this.panner.pan.value=0,this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.panner.pan)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.panner.pan))}connect(){return this.input.disconnect(0),this.panner.disconnect(0),this.isActive?(this.input.connect(this.panner),this.panner.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"depth":return this.depth.gain.value;case"rate":return this.rate.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"depth":"number"==typeof e&&(this.depth.gain.value=e);break;case"rate":"number"==typeof e&&(this.rate.value=e)}return this}params(){return{state:this.isActive,depth:this.depth.gain.value,rate:this.rate.value}}}class p extends u{shaper;inputShaper;outputShaper;inputLevel;outputLevel;bitsInput;bitsGain;bits=0;constructor(A){super(A),this.shaper=this.context.createWaveShaper(),this.inputShaper=this.context.createWaveShaper(),this.outputShaper=this.context.createWaveShaper(),this.inputLevel=this.context.createGain(),this.outputLevel=this.context.createGain(),this.bitsInput=this.context.createConstantSource(),this.bitsGain=this.context.createGain();const t=new Float32Array(1023);for(let A=0;A<512;A++){const e=(A/512*128|0)/128;t[511+A]=e,t[511-A]=-e}const e=new Float32Array(10),s=new Float32Array(10);for(let A=0,t=64;A<6;A++,t*=.5)e[0+A]=1/64,e[4+A]=1/t,s[0+A]=64,s[4+A]=t;this.shaper.curve=t,this.shaper.oversample="4x",this.inputShaper.curve=e,this.outputShaper.curve=s,this.inputLevel.gain.value=0,this.outputLevel.gain.value=0,this.bitsInput.offset.value=this.bits,this.bitsGain.gain.value=1/8,this.deactivate()}start(A){this.isActive&&this.paused&&(this.bitsInput.start(this.context.currentTime),this.paused=!1)}stop(A,t){this.isActive&&!this.paused&&(this.bitsInput.stop(this.context.currentTime),this.bitsInput=this.context.createConstantSource(),this.bitsInput.offset.value=this.bits,this.paused=!0,this.connect())}connect(){return this.input.disconnect(0),this.shaper.disconnect(0),this.inputShaper.disconnect(0),this.outputShaper.disconnect(0),this.inputLevel.disconnect(0),this.outputLevel.disconnect(0),this.bitsInput.disconnect(0),this.bitsGain.disconnect(0),this.isActive?(this.input.connect(this.inputLevel),this.inputLevel.connect(this.shaper),this.shaper.connect(this.outputLevel),this.outputLevel.connect(this.output),this.bitsInput.connect(this.bitsGain),this.bitsGain.connect(this.inputShaper),this.inputShaper.connect(this.inputLevel.gain),this.bitsGain.connect(this.outputShaper),this.outputShaper.connect(this.outputLevel.gain)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"bits":return this.bits;case"oversample":return this.shaper.oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"bits":"number"==typeof e&&(this.bits=e,this.bitsInput.offset.value=this.bits);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e))}return this}params(){return{state:this.isActive,bits:this.bits,oversample:this.shaper.oversample}}}class d extends u{delay;tone;dry;wet;feedback;depthRate=0;constructor(A){super(A),this.delay=A.createDelay(),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.feedback=A.createGain(),this.delay.delayTime.value=0,this.depth.gain.value=0,this.rate.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.feedback.gain.value=0,this.depthRate=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime))}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.feedback.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.delay),this.delay.connect(this.wet),this.wet.connect(this.output),this.delay.connect(this.feedback),this.feedback.connect(this.delay)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"mix":case"wet":return this.wet.gain.value;case"dry":return this.dry.gain.value;case"tone":return this.tone.frequency.value;case"feedback":return this.feedback.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e,this.depth.gain.value=this.delay.delayTime.value*this.depthRate);break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.delay.delayTime.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"mix":"number"==typeof e&&(this.wet.gain.value=e,this.dry.gain.value=1-this.wet.gain.value);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e);break;case"feedback":"number"==typeof e&&(this.feedback.gain.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value,depth:this.depthRate,rate:this.rate.value,mix:this.wet.gain.value,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value,feedback:this.feedback.gain.value}}}class f extends u{compressor;constructor(A){super(A),this.compressor=A.createDynamicsCompressor(),this.compressor.threshold.value=-24,this.compressor.knee.value=30,this.compressor.ratio.value=12,this.compressor.attack.value=.003,this.compressor.release.value=.25,this.activate()}connect(){return this.input.disconnect(0),this.compressor.disconnect(0),this.isActive?(this.input.connect(this.compressor),this.compressor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"threshold":return this.compressor.threshold.value;case"knee":return this.compressor.knee.value;case"ratio":return this.compressor.ratio.value;case"attack":return this.compressor.attack.value;case"release":return this.compressor.release.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"threshold":"number"==typeof e&&(this.compressor.threshold.value=e);break;case"knee":"number"==typeof e&&(this.compressor.knee.value=e);break;case"ratio":"number"==typeof e&&(this.compressor.ratio.value=e);break;case"attack":"number"==typeof e&&(this.compressor.attack.value=e);break;case"release":"number"==typeof e&&(this.compressor.release.value=e)}return this}params(){return{state:this.isActive,threshold:this.compressor.threshold.value,knee:this.compressor.knee.value,ratio:this.compressor.ratio.value,attack:this.compressor.attack.value,release:this.compressor.release.value}}}class y extends u{static MAX_DELAY_TIME=5;delay;dry;wet;tone;feedback;constructor(A){super(A),this.delay=A.createDelay(y.MAX_DELAY_TIME),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.feedback=A.createGain(),this.delay.delayTime.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.feedback.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.feedback.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.delay),this.delay.connect(this.wet),this.wet.connect(this.output),this.delay.connect(this.feedback),this.feedback.connect(this.delay)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value;case"dry":return this.dry.gain.value;case"wet":return this.wet.gain.value;case"tone":return this.tone.frequency.value;case"feedback":return this.feedback.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e);break;case"feedback":"number"==typeof e&&(this.feedback.gain.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value,feedback:this.feedback.gain.value}}}class m{static MIN_GAIN=.001;context;generators=[];activeIndexes=[];activeCounter=0;attack=.01;decay=.3;sustain=.5;release=1;isActive=!0;constructor(A){this.context=A}ready(A,t,e){t&&e&&this.generators[A]?(t.connect(this.generators[A]),this.generators[A].connect(e)):t&&null===e&&this.generators[A]?t.connect(this.generators[A]):null===t&&e&&this.generators[A]&&this.generators[A].connect(e),this.activeIndexes[A]=A,this.activeCounter++}start(A){const t=A,e=t+this.attack,s=this.decay,i=this.sustain;for(const A of this.activeIndexes)void 0!==A&&(this.isActive?(this.generators[A].gain.cancelScheduledValues(t),this.generators[A].gain.setValueAtTime(0,t),this.generators[A].gain.linearRampToValueAtTime(1,e),this.generators[A].gain.setTargetAtTime(i,e,s)):this.generators[A].gain.value=1)}stop(A,t){const e=A-this.release,s=e>=this.context.currentTime?e:this.context.currentTime,i=this.release;for(const A of this.activeIndexes)if(void 0!==A)if(this.isActive){if("function"==typeof this.generators[A].gain.cancelAndHoldAtTime)this.generators[A].gain.cancelAndHoldAtTime(s);else{const t=this.generators[A].gain.value;this.generators[A].gain.cancelScheduledValues(s),this.generators[A].gain.setValueAtTime(t,s)}t?this.generators[A].gain.setValueCurveAtTime(new Float32Array([1,.5,.25,0]),s,i):this.generators[A].gain.setTargetAtTime(0,s,i)}else this.generators[A].gain.value=0}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"attack":return this.attack;case"decay":return this.decay;case"sustain":return this.sustain;case"release":return this.release}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"attack":"number"==typeof e&&(this.attack=e);break;case"decay":"number"==typeof e&&(this.decay=e);break;case"sustain":"number"==typeof e&&(this.sustain=e);break;case"release":"number"==typeof e&&(this.release=e)}return this}getGenerator(A){return A>=0&&A<this.generators.length?this.generators[A]:null}setGenerator(A){this.generators[A]=this.context.createGain()}paused(){let A=0;for(const t of this.activeIndexes)if(void 0!==t){if(this.generators[t].gain.value>m.MIN_GAIN)return!1;if(A++,A===this.activeCounter)return!0}return!1}clear(A){this.activeIndexes.length=0,this.activeCounter=0;for(const t of this.generators)t.gain.cancelScheduledValues(this.context.currentTime),t.gain.value=1,A&&t.disconnect(0)}params(){return{state:this.isActive,attack:this.attack,decay:this.decay,sustain:this.sustain,release:this.release}}toJSON(){return JSON.stringify(this.params())}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}}class D extends u{bass;middle;treble;presence;constructor(A){super(A),this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.presence=A.createBiquadFilter(),this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.presence.type="highshelf",this.bass.frequency.value=500,this.middle.frequency.value=1e3,this.treble.frequency.value=2e3,this.presence.frequency.value=4e3,this.bass.Q.value=Math.SQRT1_2,this.middle.Q.value=Math.SQRT1_2,this.treble.Q.value=Math.SQRT1_2,this.presence.Q.value=Math.SQRT1_2,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0,this.presence.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.bass.disconnect(0),this.middle.disconnect(0),this.treble.disconnect(0),this.presence.disconnect(0),this.isActive?(this.input.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.presence),this.presence.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"presence":return this.presence.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"presence":"number"==typeof e&&(this.presence.gain.value=e)}return this}params(){return{state:this.isActive,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,presence:this.presence.gain.value}}}class w extends u{filter;maxFrequency;range=.1;attack=.01;decay=.3;sustain=1;release=1;constructor(A){super(A),this.filter=A.createBiquadFilter(),this.filter.type="lowpass",this.filter.frequency.value=350,this.filter.Q.value=1,this.filter.gain.value=0,this.maxFrequency=this.filter.frequency.value,this.deactivate()}start(A){if(!this.isActive)return;const t=A??this.context.currentTime,e=t+this.attack,s=this.decay,i=this.sustain*this.maxFrequency,r=this.maxFrequency*this.range;this.filter.frequency.cancelScheduledValues(t),this.filter.frequency.setValueAtTime(r,t),this.filter.frequency.linearRampToValueAtTime(this.maxFrequency,e),this.filter.frequency.setTargetAtTime(i,e,s)}stop(A){if(!this.isActive)return;const t=A??this.context.currentTime,e=this.release,s=this.maxFrequency*this.range;if("function"==typeof this.filter.frequency.cancelAndHoldAtTime)this.filter.frequency.cancelAndHoldAtTime(t);else{const A=this.filter.frequency.value;this.filter.frequency.cancelScheduledValues(t),this.filter.frequency.setValueAtTime(A,t)}this.filter.frequency.setTargetAtTime(s,t,e)}connect(){return this.input.disconnect(0),this.filter.disconnect(0),this.isActive?(this.input.connect(this.filter),this.filter.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.filter.type;case"frequency":return this.filter.frequency.value;case"Q":return this.filter.Q.value;case"gain":return this.filter.gain.value;case"range":return this.range;case"attack":return this.attack;case"decay":return this.decay;case"sustain":return this.sustain;case"release":return this.release}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":"string"==typeof e&&(this.filter.type=e);break;case"frequency":"number"==typeof e&&(this.filter.frequency.value=e,this.maxFrequency=e);break;case"Q":"number"==typeof e&&(this.filter.Q.value=e);break;case"gain":"number"==typeof e&&(this.filter.gain.value=e);break;case"range":"number"==typeof e&&(this.range=e);break;case"attack":"number"==typeof e&&(this.attack=e);break;case"decay":"number"==typeof e&&(this.decay=e);break;case"sustain":"number"==typeof e&&(this.sustain=e);break;case"release":"number"==typeof e&&(this.release=e)}return this}params(){return{state:this.isActive,type:this.filter.type,frequency:this.filter.frequency.value,Q:this.filter.Q.value,gain:this.filter.gain.value,range:this.range,attack:this.attack,decay:this.decay,sustain:this.sustain,release:this.release}}activate(){return this.isActive=!0,this.connect(),this}deactivate(){return this.isActive=!1,this.connect(),this}}class b extends u{delay;tone;dry;wet;feedback;depthRate=0;constructor(A){super(A),this.delay=A.createDelay(),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.feedback=A.createGain(),this.delay.delayTime.value=0,this.depth.gain.value=0,this.rate.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.feedback.gain.value=0,this.depthRate=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.delay.delayTime))}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.feedback.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.delay),this.delay.connect(this.wet),this.wet.connect(this.output),this.delay.connect(this.feedback),this.feedback.connect(this.delay)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"mix":case"wet":return this.wet.gain.value;case"dry":return this.dry.gain.value;case"tone":return this.tone.frequency.value;case"feedback":return this.feedback.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e,this.depth.gain.value=this.delay.delayTime.value*this.depthRate);break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.delay.delayTime.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"mix":"number"==typeof e&&(this.wet.gain.value=e,this.dry.gain.value=1-this.wet.gain.value);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e);break;case"feedback":"number"==typeof e&&(this.feedback.gain.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value,depth:this.depthRate,rate:this.rate.value,mix:this.wet.gain.value,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value,feedback:this.feedback.gain.value}}}class F extends u{positiveShaper;negativeShaper;positiveInputGain;negativeInputGain;positiveOutputGain;negativeOutputGain;outFilter;driveInput;level;drive=0;constructor(A){super(A),this.positiveShaper=this.context.createWaveShaper(),this.negativeShaper=this.context.createWaveShaper(),this.positiveInputGain=this.context.createGain(),this.negativeInputGain=this.context.createGain(),this.positiveOutputGain=this.context.createGain(),this.negativeOutputGain=this.context.createGain(),this.driveInput=this.context.createConstantSource(),this.outFilter=this.context.createBiquadFilter(),this.level=this.context.createGain();const t=new Float32Array(1024);for(let A=0;A<512;A++){const e=.5*Math.tanh(4*A/512),s=1-A/512;t[512+A]=e,t[511-A]=e*s**4}this.positiveShaper.curve=t,this.negativeShaper.curve=t,this.positiveShaper.oversample="4x",this.negativeShaper.oversample="4x",this.positiveInputGain.gain.value=1,this.negativeInputGain.gain.value=-1,this.positiveOutputGain.gain.value=1,this.negativeOutputGain.gain.value=-1,this.driveInput.offset.value=this.drive,this.outFilter.type="highpass",this.outFilter.frequency.value=80,this.outFilter.Q.value=1,this.outFilter.gain.value=0,this.level.gain.value=1,this.deactivate()}start(A){this.isActive&&this.paused&&(this.driveInput.start(this.context.currentTime),this.paused=!1)}stop(A,t){this.isActive&&!this.paused&&(this.driveInput.stop(this.context.currentTime),this.driveInput=this.context.createConstantSource(),this.driveInput.offset.value=this.drive,this.paused=!0,this.connect())}connect(){return this.input.disconnect(0),this.positiveShaper.disconnect(0),this.negativeShaper.disconnect(0),this.positiveInputGain.disconnect(0),this.negativeInputGain.disconnect(0),this.positiveOutputGain.disconnect(0),this.negativeOutputGain.disconnect(0),this.driveInput.disconnect(0),this.outFilter.disconnect(0),this.level.disconnect(0),this.isActive?(this.input.connect(this.positiveInputGain),this.positiveInputGain.connect(this.positiveShaper),this.positiveShaper.connect(this.positiveOutputGain),this.positiveOutputGain.connect(this.outFilter),this.input.connect(this.negativeInputGain),this.negativeInputGain.connect(this.negativeShaper),this.negativeShaper.connect(this.negativeOutputGain),this.negativeOutputGain.connect(this.outFilter),this.driveInput.connect(this.negativeOutputGain.gain),this.outFilter.connect(this.level),this.level.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"drive":return this.drive;case"level":return this.level.gain.value;case"oversample":return this.positiveShaper.oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"drive":"number"==typeof e&&(this.drive=e,this.driveInput.offset.value=this.drive);break;case"level":"number"==typeof e&&(this.level.gain.value=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.positiveShaper.oversample=e,this.negativeShaper.oversample=e))}return this}params(){return{state:this.isActive,drive:this.drive,level:this.level.gain.value,oversample:this.positiveShaper.oversample}}}class PitchShifterProcessor extends OverlapAddProcessor{instance=null;timeCursor=0;isActive=!0;pitch=1;speed=1;dry=0;wet=1;constructor(A){super(A),this.port.onmessage=async A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"pitch":"number"==typeof e&&(this.pitch=e);break;case"speed":"number"==typeof e&&(this.speed=e);break;case"dry":"number"==typeof e&&(this.dry=e);break;case"wet":"number"==typeof e&&(this.wet=e)}}}processOverlapAdd(A,t){if(null===this.instance)return;const e=A[0],s=t[0];if(!this.isActive||1===this.pitch&&1===this.speed){for(let A=0;A<e.length;A++)s[A].set(e[A]);return}const i=this.instance.exports,r=i.memory.buffer;for(let A=0;A<e.length;A++){const t=i.alloc_memory_inputs(this.frameSize);new Float32Array(r,t,this.frameSize).set(e[A]);const a=i.pitchshifter(this.pitch,this.speed,this.frameSize,this.timeCursor),n=new Float32Array(r,a,this.frameSize);if(0===this.dry)s[A].set(n);else for(let t=0;t<this.frameSize;t++)s[A][t]=this.dry*e[A][t]+this.wet*n[t]}this.timeCursor+=this.hopSize}}class v extends u{processor;pitch=1;speed=1;dry=0;wet=1;constructor(A){super(A),this.processor=new AudioWorkletNode(this.context,PitchShifterProcessor.name),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"pitch":return this.pitch;case"speed":return this.speed;case"dry":return this.dry;case"wet":return this.wet}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"pitch":if("number"==typeof e&&e>0){this.pitch=e;const A={pitch:e};this.processor.port.postMessage(A)}break;case"speed":if("number"==typeof e&&e>0){this.speed=e;const A={speed:e};this.processor.port.postMessage(A)}break;case"dry":if("number"==typeof e&&e>=0&&e<=1){this.dry=e;const A={dry:e};this.processor.port.postMessage(A)}break;case"wet":if("number"==typeof e&&e>=0&&e<=1){this.wet=e;const A={wet:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,pitch:this.pitch,speed:this.speed,dry:this.dry,wet:this.wet}}}class N extends u{static indexes=[0,1];type="harmony";mode="major";shifts=[1,1];pitchShifters;dry=1;wets=[0,0];constructor(A){super(A),this.pitchShifters=[new v(A),new v(A)],N.indexes.forEach((A=>{this.pitchShifters[A].param({pitch:this.shifts[A],dry:this.dry,wet:this.wets[A]})})),this.deactivate()}start(){}stop(){}connect(){return this.input.disconnect(0),N.indexes.forEach((A=>{this.pitchShifters[A].OUTPUT.disconnect(0)})),this.isActive?N.indexes.forEach((A=>{this.input.connect(this.pitchShifters[A].INPUT),this.pitchShifters[A].OUTPUT.connect(this.output)})):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.type;case"mode":return this.mode;case"shifts":return this.shifts;case"dry":return this.dry;case"wets":return this.wets}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":"string"==typeof e&&("harmony"!==e&&"octave"!==e&&"detune"!==e||(this.type=e,this.setPitch()));break;case"mode":"string"==typeof e&&("major"!==e&&"minor"!==e||(this.mode=e));break;case"shifts":Array.isArray(e)&&2===e.length&&(this.shifts=e,this.setPitch());break;case"dry":"number"==typeof e&&(this.dry=e,N.indexes.forEach((A=>{this.pitchShifters[A].param({dry:this.dry})})));break;case"wets":Array.isArray(e)&&2===e.length&&(this.wets=e,N.indexes.forEach((A=>{this.pitchShifters[A].param({wet:this.wets[A]})})))}return this}params(){return{state:this.isActive,type:this.type,mode:this.mode,shifts:this.shifts,dry:this.dry,wets:this.wets}}setPitch(){switch(this.type){case"harmony":switch(this.mode){case"major":{const A=1+400/1200,t=1+700/1200;this.pitchShifters[0].param({pitch:A}),this.pitchShifters[1].param({pitch:t});break}case"minor":{const A=1.25,t=1+700/1200;this.pitchShifters[0].param({pitch:A}),this.pitchShifters[1].param({pitch:t});break}}break;case"octave":N.indexes.forEach((A=>{const t=Math.abs(Math.trunc(this.shifts[A])),e=this.shifts[A]>=0?1+t:1/2**t;this.pitchShifters[A].param({pitch:e})}));break;case"detune":N.indexes.forEach((A=>{const t=Math.abs(this.shifts[A]/1200),e=this.shifts[A]>=0?1+t:1/2**t;this.pitchShifters[A].param({pitch:e})}))}return this}}class k extends u{listener;positions;forwards;ups;constructor(A){super(A),this.listener=A.listener,this.positions={x:0,y:0,z:0},this.forwards={x:0,y:0,z:-1},this.ups={x:0,y:1,z:0},this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z),this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z)}connect(){return this.output}param(A){if("string"==typeof A)switch(A){case"x":return this.positions.x;case"y":return this.positions.y;case"z":return this.positions.z;case"fx":return this.forwards.x;case"fy":return this.forwards.y;case"fz":return this.forwards.z;case"ux":return this.ups.x;case"uy":return this.ups.y;case"uz":return this.ups.z}for(const[t,e]of Object.entries(A))switch(t){case"x":"number"==typeof e&&(this.positions.x=e,this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z));break;case"y":"number"==typeof e&&(this.positions.y=e,this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z));break;case"z":"number"==typeof e&&(this.positions.z=e,this.listener.setPosition(this.positions.x,this.positions.y,this.positions.z));break;case"fx":"number"==typeof e&&(this.forwards.x=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"fy":"number"==typeof e&&(this.forwards.y=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"fz":"number"==typeof e&&(this.forwards.z=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"ux":"number"==typeof e&&(this.ups.x=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"uy":"number"==typeof e&&(this.ups.y=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z));break;case"uz":"number"==typeof e&&(this.ups.z=e,this.listener.setOrientation(this.forwards.x,this.forwards.y,this.forwards.z,this.ups.x,this.ups.y,this.ups.z))}return this}params(){return{x:this.positions.x,y:this.positions.y,z:this.positions.z,fx:this.forwards.x,fy:this.forwards.y,fz:this.forwards.z,ux:this.ups.x,uy:this.ups.y,uz:this.ups.z}}}class NoiseGateProcessor extends AudioWorkletProcessor{instance=null;level=0;isActive=!0;constructor(){super(),this.port.onmessage=A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"level":"number"==typeof e&&(this.level=e)}}}process(A,t){if(null===this.instance)return!1;const e=A[0],s=t[0];if(0===e.length||0===s.length)return!0;if(!this.isActive||0===this.level){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}const i=this.instance.exports,r=i.memory.buffer,a=e[0].length;for(let A=0,t=e.length;A<t;A++){const t=i.alloc_memory_inputs();new Float32Array(r,t,a).set(e[A]);const n=i.noisegate(this.level);s[A].set(new Float32Array(r,n,a))}return!0}}class R extends u{processor;level=0;constructor(A){super(A),this.processor=new AudioWorkletNode(this.context,NoiseGateProcessor.name),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"level":return this.level}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"level":if("number"==typeof e){this.level=e;const A={level:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,level:this.level}}}class NoiseSuppressorProcessor extends OverlapAddProcessor{instance=null;threshold=0;isActive=!0;constructor(A){super(A),this.port.onmessage=async A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"threshold":"number"==typeof e&&(this.threshold=e)}}}processOverlapAdd(A,t){if(null===this.instance)return!1;const e=A[0],s=t[0];if(0===e.length||0===s.length)return!0;if(!this.isActive||0===this.threshold){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}const i=this.instance.exports,r=i.memory.buffer;for(let A=0,t=e.length;A<t;A++){const t=i.alloc_memory_inputs(this.frameSize);new Float32Array(r,t,this.frameSize).set(e[A]);const a=i.noisesuppressor(this.threshold,this.frameSize);s[A].set(new Float32Array(r,a,this.frameSize))}return!0}}class S extends u{processor;threshold=0;constructor(A){super(A),this.processor=new AudioWorkletNode(this.context,NoiseSuppressorProcessor.name,{processorOptions:{frameSize:1024}}),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"threshold":return this.threshold}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"threshold":if("number"==typeof e&&e>=0){this.threshold=e;const A={threshold:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,threshold:this.threshold}}}class U extends u{shaper;inputShaper;outputShaper;inputGain;outputGain;driveInput;level;drive=0;constructor(A){super(A),this.shaper=this.context.createWaveShaper(),this.inputShaper=this.context.createWaveShaper(),this.outputShaper=this.context.createWaveShaper(),this.inputGain=this.context.createGain(),this.outputGain=this.context.createGain(),this.driveInput=this.context.createConstantSource(),this.level=this.context.createGain();const t=new Float32Array(1024);for(let A=0;A<512;A++){const e=.5*Math.tanh(4*A/512);t[512+A]=e,t[511-A]=-e}const e=new Float32Array(101);for(let A=0;A<101;A++)e[A]=.25;for(let A=52,t=.25;A<101;A++,t*=1.1)e[A]=t;const s=new Float32Array([2,2,2,2,2,.9,.5,.35,.3]);this.shaper.curve=t,this.shaper.oversample="4x",this.inputShaper.curve=e,this.outputShaper.curve=s,this.inputGain.gain.value=0,this.outputGain.gain.value=0,this.driveInput.offset.value=this.drive,this.level.gain.value=1,this.deactivate()}start(A){this.isActive&&this.paused&&(this.driveInput.start(this.context.currentTime),this.paused=!1)}stop(A,t){this.isActive&&!this.paused&&(this.driveInput.stop(this.context.currentTime),this.driveInput=this.context.createConstantSource(),this.driveInput.offset.value=this.drive,this.paused=!0,this.connect())}connect(){return this.input.disconnect(0),this.shaper.disconnect(0),this.inputShaper.disconnect(0),this.outputShaper.disconnect(0),this.inputGain.disconnect(0),this.outputGain.disconnect(0),this.driveInput.disconnect(0),this.level.disconnect(0),this.isActive?(this.input.connect(this.inputGain),this.inputGain.connect(this.shaper),this.shaper.connect(this.outputGain),this.outputGain.connect(this.level),this.level.connect(this.output),this.driveInput.connect(this.inputShaper),this.inputShaper.connect(this.inputGain.gain),this.driveInput.connect(this.outputShaper),this.outputShaper.connect(this.outputGain.gain)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"drive":return this.drive;case"level":return this.level.gain.value;case"oversample":return this.shaper.oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"drive":"number"==typeof e&&(this.drive=e,this.driveInput.offset.value=this.drive);break;case"level":"number"==typeof e&&(this.level.gain.value=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e))}return this}params(){return{state:this.isActive,drive:this.drive,level:this.level.gain.value,oversample:this.shaper.oversample}}}class G extends u{panner;positions;orientations;constructor(A){super(A),this.panner=A.createPanner(),this.positions={x:0,y:0,z:0},this.orientations={x:1,y:0,z:0},this.panner.refDistance=1,this.panner.maxDistance=1e4,this.panner.rolloffFactor=1,this.panner.coneInnerAngle=360,this.panner.coneOuterAngle=360,this.panner.coneOuterGain=0,this.panner.panningModel="HRTF",this.panner.distanceModel="inverse",this.panner.positionX.value=this.positions.x,this.panner.positionY.value=this.positions.y,this.panner.positionZ.value=this.positions.z,this.panner.orientationX.value=this.orientations.x,this.panner.orientationY.value=this.orientations.y,this.panner.orientationZ.value=this.orientations.z,this.deactivate()}connect(){return this.input.disconnect(0),this.panner.disconnect(0),this.isActive?(this.input.connect(this.panner),this.panner.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"x":return this.panner.positionX.value;case"y":return this.panner.positionY.value;case"z":return this.panner.positionZ.value;case"ox":return this.panner.orientationX.value;case"oy":return this.panner.orientationY.value;case"oz":return this.panner.orientationZ.value;case"refDistance":return this.panner.refDistance;case"maxDistance":return this.panner.maxDistance;case"rolloffFactor":return this.panner.rolloffFactor;case"coneInnerAngle":return this.panner.coneInnerAngle;case"coneOuterAngle":return this.panner.coneOuterAngle;case"coneOuterGain":return this.panner.coneOuterGain;case"panningModel":return this.panner.panningModel;case"distanceModel":return this.panner.distanceModel}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"x":"number"==typeof e&&(this.panner.positionX.value=e);break;case"y":"number"==typeof e&&(this.panner.positionY.value=e);break;case"z":"number"==typeof e&&(this.panner.positionZ.value=e);break;case"ox":"number"==typeof e&&(this.panner.orientationX.value=e);break;case"oy":"number"==typeof e&&(this.panner.orientationY.value=e);break;case"oz":"number"==typeof e&&(this.panner.orientationZ.value=e);break;case"refDistance":"number"==typeof e&&(this.panner.refDistance=e);break;case"maxDistance":"number"==typeof e&&(this.panner.maxDistance=e);break;case"rolloffFactor":"number"==typeof e&&(this.panner.rolloffFactor=e);break;case"coneInnerAngle":"number"==typeof e&&(this.panner.coneInnerAngle=e);break;case"coneOuterAngle":"number"==typeof e&&(this.panner.coneOuterAngle=e);break;case"coneOuterGain":"number"==typeof e&&(this.panner.coneOuterGain=e);break;case"panningModel":"HRTF"!==e&&"equalpower"!==e||(this.panner.panningModel=e);break;case"distanceModel":"linear"!==e&&"inverse"!==e&&"exponential"!==e||(this.panner.distanceModel=e)}return this}params(){return{state:this.isActive,x:this.positions.x,y:this.positions.y,z:this.positions.z,ox:this.orientations.x,oy:this.orientations.y,oz:this.orientations.z,refDistance:this.panner.refDistance,maxDistance:this.panner.maxDistance,rolloffFactor:this.panner.rolloffFactor,coneInnerAngle:this.panner.coneInnerAngle,coneOuterAngle:this.panner.coneOuterAngle,coneOuterGain:this.panner.coneOuterGain,panningModel:this.panner.panningModel,distanceModel:this.panner.distanceModel}}}class M extends u{static MAX_STAGES=24;numberOfStages=12;connectionType="serial";filters=[];dry;wet;depthRate=0;constructor(A){super(A);for(let t=0;t<M.MAX_STAGES;t++){const t=A.createBiquadFilter();t.type="allpass",t.frequency.value=350,t.Q.value=1,t.gain.value=0,this.filters.push(t)}this.dry=A.createGain(),this.wet=A.createGain(),this.depth.gain.value=0,this.rate.value=0,this.dry.gain.value=1,this.wet.gain.value=0,this.deactivate(),this.lfo.connect(this.depth);for(let A=0;A<M.MAX_STAGES;A++)this.depth.connect(this.filters[A].frequency)}stop(A,t){if(super.stop(A,t),this.isActive){this.lfo.connect(this.depth);for(let A=0;A<M.MAX_STAGES;A++)this.depth.connect(this.filters[A].frequency)}}connect(){this.input.disconnect(0);for(let A=0;A<M.MAX_STAGES;A++)this.filters[A].disconnect(0);if(this.dry.disconnect(0),this.wet.disconnect(0),this.isActive&&this.numberOfStages>0)switch(this.input.connect(this.dry),this.dry.connect(this.output),this.connectionType){case"serial":this.input.connect(this.filters[0]);for(let A=0;A<this.numberOfStages;A++)A<this.numberOfStages-1?this.filters[A].connect(this.filters[A+1]):(this.filters[A].connect(this.wet),this.wet.connect(this.output));break;case"parallel":for(let A=0;A<this.numberOfStages;A++)this.input.connect(this.filters[A]),this.filters[A].connect(this.wet);this.wet.connect(this.output)}else this.input.connect(this.output);return this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"stage":return this.numberOfStages;case"type":return this.connectionType;case"frequency":return this.filters[0].frequency.value;case"resonance":return this.filters[0].Q.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"mix":case"wet":return this.wet.gain.value;case"dry":return this.dry.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"stage":switch(e){case 0:case 2:case 4:case 8:case 12:case 24:this.numberOfStages=e,this.connect()}break;case"type":"string"==typeof e&&("serial"!==e&&"parallel"!==e||(this.connectionType=e,this.connect()));break;case"frequency":if("number"==typeof e){for(const A of this.filters)A.frequency.value=e;this.depth.gain.value=e*this.depthRate}break;case"resonance":if("number"==typeof e)for(const A of this.filters)A.Q.value=e;break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.filters[0].frequency.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"mix":"number"==typeof e&&(this.wet.gain.value=e,this.dry.gain.value=1-this.wet.gain.value);break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e)}return this}params(){return{state:this.isActive,stage:this.numberOfStages,type:this.connectionType,frequency:this.filters[0].frequency.value,resonance:this.filters[0].Q.value,depth:this.depthRate,rate:this.rate.value,mix:this.wet.gain.value,dry:this.dry.gain.value,wet:this.wet.gain.value}}}class Y extends u{lowpass;notch;constructor(A){super(A),this.lowpass=A.createBiquadFilter(),this.notch=A.createBiquadFilter(),this.lowpass.type="lowpass",this.lowpass.frequency.value=3200,this.lowpass.Q.value=6,this.lowpass.gain.value=0,this.notch.type="notch",this.notch.frequency.value=8e3,this.notch.Q.value=1,this.notch.gain.value=0,this.activate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.notch),this.notch.connect(this.lowpass),this.lowpass.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A&&"state"===A)return this.isActive;for(const[t,e]of Object.entries(A))if("state"===t)"boolean"==typeof e&&(e?this.activate():this.deactivate())}params(){return{state:this.isActive}}}class x extends u{shaper;preGain;leadGain;lowpass;highpass1;highpass2;highpass3;constructor(A){super(A),this.shaper=A.createWaveShaper(),this.preGain=A.createGain(),this.leadGain=A.createGain(),this.lowpass=A.createBiquadFilter(),this.highpass1=A.createBiquadFilter(),this.highpass2=A.createBiquadFilter(),this.highpass3=A.createBiquadFilter(),this.shaper.oversample="4x",this.preGain.gain.value=.5,this.leadGain.gain.value=.5,this.lowpass.type="lowpass",this.lowpass.frequency.value=3200,this.lowpass.Q.value=-3,this.lowpass.gain.value=0,this.highpass1.type="highpass",this.highpass1.frequency.value=80,this.highpass1.Q.value=-3,this.highpass1.gain.value=0,this.highpass2.type="highpass",this.highpass2.frequency.value=640,this.highpass2.Q.value=-3,this.highpass2.gain.value=0,this.highpass3.type="highpass",this.highpass3.frequency.value=80,this.highpass3.Q.value=-3,this.highpass3.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.highpass1),this.highpass1.connect(this.lowpass),this.lowpass.connect(this.preGain),this.preGain.connect(this.highpass3),this.input.connect(this.highpass2),this.highpass2.connect(this.leadGain),this.leadGain.connect(this.highpass3),this.highpass3.connect(this.shaper),this.shaper.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"curve":case"oversample":return this.shaper.curve;case"gain":return this.preGain.gain.value;case"lead":return this.leadGain.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"curve":"number"!=typeof e&&"boolean"!=typeof e&&(e instanceof Float32Array||null===e)&&(this.shaper.curve=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e));break;case"gain":"number"==typeof e&&(this.preGain.gain.value=e);break;case"lead":"number"==typeof e&&(this.leadGain.gain.value=e)}}params(){return{state:this.isActive,curve:this.shaper.curve,gain:this.preGain.gain.value,lead:this.leadGain.gain.value,oversample:this.shaper.oversample}}}class q extends u{shaper;bass;middle;treble;lowpass;highpass;constructor(A){super(A),this.shaper=A.createWaveShaper(),this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.shaper.oversample="4x",this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.bass.frequency.value=240,this.middle.frequency.value=500,this.treble.frequency.value=1600,this.bass.Q.value=0,this.middle.Q.value=1.5,this.treble.Q.value=0,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0,this.lowpass=A.createBiquadFilter(),this.highpass=A.createBiquadFilter(),this.lowpass.type="lowpass",this.lowpass.frequency.value=4e3,this.lowpass.Q.value=-3,this.lowpass.gain.value=0,this.highpass.type="highpass",this.highpass.frequency.value=40,this.highpass.Q.value=-3,this.highpass.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.lowpass),this.lowpass.connect(this.highpass),this.highpass.connect(this.shaper),this.shaper.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"curve":return this.shaper.curve;case"oversample":return this.shaper.oversample;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"frequency":return this.middle.frequency.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"curve":"number"!=typeof e&&"boolean"!=typeof e&&(e instanceof Float32Array||null===e)&&(this.shaper.curve=e);break;case"oversample":"string"==typeof e&&("none"!==e&&"2x"!==e&&"4x"!==e||(this.shaper.oversample=e));break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"frequency":"number"==typeof e&&(this.middle.frequency.value=e)}}params(){return{state:this.isActive,curve:this.shaper.curve,oversample:this.shaper.oversample,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,frequency:this.middle.frequency.value}}}class L extends u{preEQ;postEQ;cabinet;level=0;numberOfSamples=1024;constructor(A){super(A),this.preEQ=new x(A),this.postEQ=new q(A),this.cabinet=new Y(A),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preEQ.INPUT),this.preEQ.OUTPUT.connect(this.postEQ.INPUT),this.postEQ.OUTPUT.connect(this.cabinet.INPUT),this.cabinet.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"level":return this.level;case"samples":return this.numberOfSamples;case"pre":return this.preEQ.params();case"post":return this.postEQ.params();case"cabinet":return this.cabinet.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preEQ.activate(),this.postEQ.activate()):(this.deactivate(),this.preEQ.deactivate(),this.postEQ.deactivate()));break;case"level":if("number"==typeof e){this.level=e;const A=z(this.level,this.numberOfSamples);this.preEQ.param({curve:A}),this.postEQ.param({curve:A})}break;case"samples":if("number"==typeof e){this.numberOfSamples=e;const A=z(this.level,this.numberOfSamples);this.preEQ.param({curve:A}),this.postEQ.param({curve:A})}break;case"pre":"object"==typeof e&&this.preEQ.param(e);break;case"post":"object"==typeof e&&this.postEQ.param(e);break;case"cabinet":"object"==typeof e&&this.cabinet.param(e)}return this}params(){return{state:this.isActive,level:this.level,samples:this.numberOfSamples,pre:this.preEQ.params(),post:this.postEQ.params(),cabinet:this.cabinet.params()}}}class T extends u{preGain;preHighpass;postHighpass;bass;middle;treble;shapers=[];level=0;numberOfSamples=1024;usePostFilters=!0;lowpass;highpass;constructor(A){super(A),this.preGain=A.createGain(),this.preGain.gain.value=.5,this.preHighpass=A.createBiquadFilter(),this.postHighpass=A.createBiquadFilter(),this.preHighpass.type="highpass",this.postHighpass.type="highpass",this.preHighpass.frequency.value=40,this.postHighpass.frequency.value=80,this.preHighpass.Q.value=-3,this.postHighpass.Q.value=-3,this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.bass.frequency.value=160,this.middle.frequency.value=284,this.treble.frequency.value=1200,this.middle.Q.value=1.5,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0;const t=z(this.level,this.numberOfSamples);for(let e=0;e<2;e++)this.shapers[e]=A.createWaveShaper(),this.shapers[e].curve=t,this.shapers[e].oversample="4x";this.lowpass=A.createBiquadFilter(),this.highpass=A.createBiquadFilter(),this.lowpass.type="lowpass",this.highpass.type="highpass",this.lowpass.frequency.value=4e3,this.highpass.frequency.value=40,this.lowpass.Q.value=-3,this.highpass.Q.value=-3,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preGain),this.preGain.connect(this.preHighpass),this.preHighpass.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.postHighpass),this.postHighpass.connect(this.shapers[0]),this.usePostFilters?(this.shapers[0].connect(this.lowpass),this.lowpass.connect(this.highpass),this.highpass.connect(this.shapers[1])):this.shapers[0].connect(this.shapers[1]),this.shapers[1].connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"gain":return this.preGain.gain.value;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"level":return this.level;case"samples":return this.numberOfSamples;case"oversample":return this.shapers[0].oversample;case"postFilters":return this.usePostFilters}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"gain":"number"==typeof e&&(this.preGain.gain.value=e);break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"level":if("number"==typeof e){this.level=e;const A=z(this.level,this.numberOfSamples);for(let t=0;t<2;t++)this.shapers[t].curve=A}break;case"samples":if("number"==typeof e){this.numberOfSamples=e;const A=z(this.level,this.numberOfSamples);for(let t=0;t<2;t++)this.shapers[t].curve=A}break;case"oversample":if("string"==typeof e&&("none"===e||"2x"===e||"4x"===e))for(let A=0;A<2;A++)this.shapers[A].oversample=e;break;case"postFilters":"boolean"==typeof e&&(this.usePostFilters=e,this.connect())}}params(){return{state:this.isActive,gain:this.preGain.gain.value,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,level:this.level,samples:this.numberOfSamples,oversample:this.shapers[0].oversample,postFilters:this.usePostFilters}}}class J extends u{peakingFilters=[];constructor(A){super(A);for(let t=0;t<5;t++)this.peakingFilters[t]=A.createBiquadFilter(),this.peakingFilters[t].type="peaking",this.peakingFilters[t].gain.value=0;this.peakingFilters[0].frequency.value=100,this.peakingFilters[1].frequency.value=360,this.peakingFilters[2].frequency.value=720,this.peakingFilters[3].frequency.value=1600,this.peakingFilters[4].frequency.value=4800,this.peakingFilters[0].Q.value=1.5,this.peakingFilters[1].Q.value=2,this.peakingFilters[2].Q.value=2,this.peakingFilters[3].Q.value=1.1,this.peakingFilters[4].Q.value=1.2,this.deactivate()}connect(){if(this.input.disconnect(0),this.isActive){this.input.connect(this.peakingFilters[0]);for(let A=0,t=this.peakingFilters.length-1;A<t;A++)this.peakingFilters[A].connect(this.peakingFilters[A+1]);this.peakingFilters[4].connect(this.output)}else this.input.connect(this.output);return this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"fc100":return this.peakingFilters[0].gain.value;case"fc360":return this.peakingFilters[1].gain.value;case"fc720":return this.peakingFilters[2].gain.value;case"fc1600":return this.peakingFilters[3].gain.value;case"fc4800":return this.peakingFilters[4].gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"fc100":"number"==typeof e&&(this.peakingFilters[0].gain.value=e);break;case"fc360":"number"==typeof e&&(this.peakingFilters[1].gain.value=e);break;case"fc720":"number"==typeof e&&(this.peakingFilters[2].gain.value=e);break;case"fc1600":"number"==typeof e&&(this.peakingFilters[3].gain.value=e);break;case"fc4800":"number"==typeof e&&(this.peakingFilters[4].gain.value=e)}}params(){return{state:this.isActive,fc100:this.peakingFilters[0].gain.value,fc360:this.peakingFilters[1].gain.value,fc720:this.peakingFilters[2].gain.value,fc1600:this.peakingFilters[3].gain.value,fc4800:this.peakingFilters[4].gain.value}}}class H extends u{preEQ;postEQ;cabinet;constructor(A){super(A),this.preEQ=new T(A),this.postEQ=new J(A),this.cabinet=new Y(A),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preEQ.INPUT),this.preEQ.OUTPUT.connect(this.cabinet.INPUT),this.cabinet.OUTPUT.connect(this.postEQ.INPUT),this.postEQ.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"pre":return this.preEQ.params();case"post":return this.postEQ.params();case"cabinet":return this.cabinet.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preEQ.activate(),this.postEQ.activate()):(this.deactivate(),this.preEQ.deactivate(),this.postEQ.deactivate()));break;case"pre":"object"==typeof e&&this.preEQ.param(e);break;case"post":"object"==typeof e&&this.postEQ.param(e);break;case"cabinet":"object"==typeof e&&this.cabinet.param(e)}return this}params(){return{state:this.isActive,pre:this.preEQ.params(),post:this.postEQ.params(),cabinet:this.cabinet.params()}}}class K extends u{preGain;highpass;bass;middle;treble;gainEdge;gainBody;gainBottom;shapers=[];iirLowpassFilters=[];iirHighpassFilters=[];mixer;level=0;numberOfSamples=1024;constructor(A){super(A),this.preGain=A.createGain(),this.preGain.gain.value=.5,this.highpass=A.createBiquadFilter(),this.highpass.type="highpass",this.highpass.frequency.value=40,this.highpass.Q.value=1,this.bass=A.createBiquadFilter(),this.middle=A.createBiquadFilter(),this.treble=A.createBiquadFilter(),this.bass.type="lowshelf",this.middle.type="peaking",this.treble.type="highshelf",this.bass.frequency.value=160,this.middle.frequency.value=284,this.treble.frequency.value=1200,this.middle.Q.value=1.5,this.bass.gain.value=0,this.middle.gain.value=0,this.treble.gain.value=0,this.gainEdge=A.createGain(),this.gainBody=A.createGain(),this.gainBottom=A.createGain(),this.gainEdge.gain.value=1,this.gainBody.gain.value=1,this.gainBottom.gain.value=1;const t=z(this.level,this.numberOfSamples);for(let e=0;e<3;e++)this.shapers[e]=A.createWaveShaper(),this.shapers[e].curve=t,this.shapers[e].oversample="4x";const e=220/A.sampleRate*Math.PI,s=220/A.sampleRate*Math.PI,i=new Float32Array([e,e]),r=new Float32Array([s,s]),a=new Float32Array([1+e,-1+e]),n=new Float32Array([1+s,-1+s]),g=new Float32Array([1,-1]),o=new Float32Array([1,-1]),h=new Float32Array([1+e,-1+e]),I=new Float32Array([1+s,-1+s]);this.iirLowpassFilters[0]=A.createIIRFilter(i,a),this.iirLowpassFilters[1]=A.createIIRFilter(r,n),this.iirHighpassFilters[0]=A.createIIRFilter(g,h),this.iirHighpassFilters[1]=A.createIIRFilter(o,I),this.mixer=A.createGain(),this.mixer.gain.value=1,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preGain),this.preGain.connect(this.highpass),this.highpass.connect(this.bass),this.bass.connect(this.middle),this.middle.connect(this.treble),this.treble.connect(this.iirHighpassFilters[1]),this.iirHighpassFilters[1].connect(this.shapers[0]),this.shapers[0].connect(this.gainEdge),this.gainEdge.connect(this.mixer),this.treble.connect(this.iirHighpassFilters[0]),this.iirHighpassFilters[0].connect(this.shapers[1]),this.shapers[1].connect(this.iirLowpassFilters[1]),this.iirLowpassFilters[1].connect(this.gainBody),this.gainBody.connect(this.mixer),this.treble.connect(this.iirLowpassFilters[0]),this.iirLowpassFilters[0].connect(this.shapers[2]),this.shapers[2].connect(this.gainBottom),this.gainBottom.connect(this.mixer),this.mixer.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"gain":return this.preGain.gain.value;case"bass":return this.bass.gain.value;case"middle":return this.middle.gain.value;case"treble":return this.treble.gain.value;case"level":return this.level;case"samples":return this.numberOfSamples;case"oversample":return this.shapers[0].oversample}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"gain":"number"==typeof e&&(this.preGain.gain.value=e);break;case"bass":"number"==typeof e&&(this.bass.gain.value=e);break;case"middle":"number"==typeof e&&(this.middle.gain.value=e);break;case"treble":"number"==typeof e&&(this.treble.gain.value=e);break;case"level":if("number"==typeof e){this.level=e;const A=z(this.level,this.numberOfSamples);for(let t=0;t<3;t++)this.shapers[t].curve=A}break;case"samples":if("number"==typeof e){this.numberOfSamples=e;const A=z(this.level,this.numberOfSamples);for(let t=0;t<3;t++)this.shapers[t].curve=A}break;case"oversample":if("string"==typeof e&&("none"===e||"2x"===e||"4x"===e))for(let A=0;A<3;A++)this.shapers[A].oversample=e}}params(){return{state:this.isActive,gain:this.preGain.gain.value,bass:this.bass.gain.value,middle:this.middle.gain.value,treble:this.treble.gain.value,level:this.level,samples:this.numberOfSamples,oversample:this.shapers[0].oversample}}}class O extends u{cabinet;inch=-1;tilt=!1;speakerFilter;tiltFilter;constructor(A,t){super(A),this.cabinet=t,this.speakerFilter=A.createBiquadFilter(),this.speakerFilter.type="peaking",this.speakerFilter.frequency.value=40,this.speakerFilter.Q.value=-3,this.speakerFilter.gain.value=0,this.tiltFilter=A.createBiquadFilter(),this.tiltFilter.type="highshelf",this.tiltFilter.frequency.value=3200,this.tiltFilter.Q.value=Math.SQRT1_2,this.tiltFilter.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.cabinet.INPUT),this.cabinet.OUTPUT.connect(this.speakerFilter),this.speakerFilter.connect(this.tiltFilter),this.tiltFilter.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"inch":return this.inch;case"tilt":return this.tilt}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?this.activate():this.deactivate());break;case"inch":if("number"==typeof e)switch(e){case-1:this.inch=-1,this.speakerFilter.frequency.value=40,this.speakerFilter.Q.value=Math.SQRT1_2,this.speakerFilter.gain.value=0;break;case 10:this.inch=10,this.speakerFilter.frequency.value=120,this.speakerFilter.Q.value=3,this.speakerFilter.gain.value=9;break;case 12:this.inch=12,this.speakerFilter.frequency.value=80,this.speakerFilter.Q.value=6,this.speakerFilter.gain.value=10;break;case 15:this.inch=15,this.speakerFilter.frequency.value=60,this.speakerFilter.Q.value=9,this.speakerFilter.gain.value=12}break;case"tilt":"boolean"==typeof e&&(this.tilt=e,this.tilt?this.tiltFilter.gain.value=6:this.tiltFilter.gain.value=0)}}params(){return{state:this.isActive,inch:this.inch,tilt:this.tilt}}}class P extends u{preEQ;postFilter;cabinet;constructor(A){super(A),this.cabinet=new Y(A),this.preEQ=new K(A),this.postFilter=new O(A,this.cabinet),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.input.connect(this.preEQ.INPUT),this.preEQ.OUTPUT.connect(this.postFilter.INPUT),this.postFilter.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"pre":return this.preEQ.params();case"post":return this.postFilter.params();case"cabinet":return this.cabinet.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preEQ.activate(),this.postFilter.activate()):(this.deactivate(),this.preEQ.deactivate(),this.postFilter.deactivate()));break;case"pre":"object"==typeof e&&this.preEQ.param(e);break;case"post":"object"==typeof e&&this.postFilter.param(e);break;case"cabinet":"object"==typeof e&&this.cabinet.param(e)}return this}params(){return{state:this.isActive,pre:this.preEQ.params(),post:this.postFilter.params(),cabinet:this.cabinet.params()}}}function z(A,t){const e=Math.trunc((t-1)/2),s=new Float32Array(t),i=(10**(A/5-1)-.1)/5+1;let r=.4;1===i?r=1:i>1&&i<1.04&&(r=-15.5*i+16.52);for(let A=0;A<e;A++)s[e+A]=r*(1-i**-A+A*i**-e/e),s[e-A]=r*(-1+i**-A-A*i**-e/e);return s[e]=0,s}class X extends u{type="marshall";preamp;constructor(A){super(A),this.preamp=new L(A),this.deactivate()}connect(){return this.input.disconnect(0),this.isActive?(this.preamp.connect(),this.input.connect(this.preamp.INPUT),this.preamp.OUTPUT.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.type;case"preamp":return this.preamp.params()}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(e?(this.activate(),this.preamp.activate()):(this.deactivate(),this.preamp.deactivate()));break;case"type":if("string"==typeof e){switch(e){case"marshall":this.type="marshall",this.preamp=new L(this.context);break;case"mesa/boogie":this.type="mesa/boogie",this.preamp=new H(this.context);break;case"fender":this.type="fender",this.preamp=new P(this.context)}this.connect()}break;case"preamp":if("object"==typeof e){if(this.preamp instanceof L){const A=e;this.preamp.param(A)}if(this.preamp instanceof H){const A=e;this.preamp.param(A)}if(this.preamp instanceof P){const A=e;this.preamp.param(A)}}}return this.preamp}params(){return{state:this.isActive,type:this.type,preamp:this.preamp.params()}}}class j extends u{convolver;dry;wet;tone;rirs=[];loadError=!1;constructor(A){super(A),this.convolver=A.createConvolver(),this.dry=A.createGain(),this.wet=A.createGain(),this.tone=A.createBiquadFilter(),this.dry.gain.value=1,this.wet.gain.value=0,this.tone.type="lowpass",this.tone.frequency.value=350,this.tone.Q.value=Math.SQRT1_2,this.tone.gain.value=0,this.deactivate()}connect(){return this.input.disconnect(0),this.convolver.disconnect(0),this.dry.disconnect(0),this.wet.disconnect(0),this.tone.disconnect(0),this.isActive?(this.input.connect(this.dry),this.dry.connect(this.output),this.input.connect(this.tone),this.tone.connect(this.convolver),this.convolver.connect(this.wet),this.wet.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"buffer":return this.convolver.buffer;case"dry":return this.dry.gain.value;case"wet":return this.wet.gain.value;case"tone":return this.tone.frequency.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"buffer":"number"==typeof e?e>=0&&e<this.rirs.length&&(this.convolver.buffer=this.rirs[e],this.connect()):e instanceof AudioBuffer?(this.convolver.buffer=e,this.connect()):null===e&&(this.convolver.buffer=null,this.input.disconnect(0),this.input.connect(this.output));break;case"dry":"number"==typeof e&&(this.dry.gain.value=e);break;case"wet":"number"==typeof e&&(this.wet.gain.value=e);break;case"tone":"number"==typeof e&&(this.tone.frequency.value=e)}return this}add(A,t){if(A instanceof AudioBuffer)this.convolver.buffer=A,this.rirs.push(A);else if(A instanceof ArrayBuffer){const e=A=>{this.convolver.buffer=A,this.rirs.push(A)};this.context.decodeAudioData(A,e,t??(()=>{}))}return this}preset(A){const{rirs:t,timeout:e,successCallback:s,errorCallback:i,progressCallback:r}=A;for(let A=0,a=t.length;A<a;A++){const a=t[A];"string"==typeof a?this.load({rir:a,index:A,timeout:e,successCallback:s,errorCallback:i,progressCallback:r}):this.rirs[A]=a}}params(){return{state:this.isActive,dry:this.dry.gain.value,wet:this.wet.gain.value,tone:this.tone.frequency.value}}activate(){return this.isActive=!0,this.connect(),this}deactivate(){return this.isActive=!1,this.connect(),this}load(A){const{rir:t,index:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A,n=new XMLHttpRequest;n.timeout=s??6e4,n.ontimeout=A=>{!this.loadError&&r&&r(A,"timeout"),this.loadError=!0},n.onprogress=A=>{this.loadError?n.abort():a&&a(A)},n.onerror=A=>{!this.loadError&&r&&r(A,"error"),this.loadError=!0},n.onload=A=>{if(200===n.status){const t=n.response,s=t=>{this.rirs[e]=t;for(const A of this.rirs)if(void 0===A)return;i&&i(A)},a=A=>{r&&r(A,"decode")};this.context.decodeAudioData(t,s,a)}},n.open("GET",t,!0),n.responseType="arraybuffer",n.send(null)}}class W extends u{amplitude;constructor(A){super(A),this.amplitude=A.createGain(),this.amplitude.gain.value=0,this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain))}connect(){return this.input.disconnect(0),this.amplitude.disconnect(0),this.isActive?(this.input.connect(this.amplitude),this.amplitude.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"depth":return this.depth.gain.value;case"rate":return this.rate.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"depth":"number"==typeof e&&(this.depth.gain.value=e);break;case"rate":"number"==typeof e&&(this.rate.value=e)}return this}params(){return{state:this.isActive,depth:this.depth.gain.value,rate:this.rate.value}}}class V extends u{static MAX_DELAY_TIME=1;splitter;merger;delay;gainL;gainR;constructor(A){super(A),this.splitter=A.createChannelSplitter(2),this.merger=A.createChannelMerger(2),this.delay=A.createDelay(V.MAX_DELAY_TIME),this.gainL=A.createGain(),this.gainR=A.createGain(),this.delay.delayTime.value=0,this.gainL.gain.value=1,this.gainR.gain.value=-1,this.deactivate()}start(){}stop(){}connect(){return this.input.disconnect(0),this.delay.disconnect(0),this.splitter.disconnect(0),this.splitter.disconnect(1),this.gainL.disconnect(0),this.gainR.disconnect(0),this.merger.disconnect(0),this.isActive?(this.input.connect(this.merger,0,0),this.input.connect(this.merger,0,1),this.input.connect(this.delay),this.delay.connect(this.splitter),this.splitter.connect(this.gainL,0,0),this.splitter.connect(this.gainR,1,0),this.gainL.connect(this.merger,0,0),this.gainR.connect(this.merger,0,1),this.merger.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"time":return this.delay.delayTime.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"time":"number"==typeof e&&(this.delay.delayTime.value=e)}return this}params(){return{state:this.isActive,time:this.delay.delayTime.value}}}class Z extends u{amplitude;constructor(A){super(A),this.amplitude=A.createGain(),this.amplitude.gain.value=1,this.lfo.type="sine",this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain)}stop(A,t){super.stop(A,t),this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.amplitude.gain))}connect(){return this.input.disconnect(0),this.amplitude.disconnect(0),this.isActive?(this.input.connect(this.amplitude),this.amplitude.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.lfo.type;case"depth":return this.depth.gain.value;case"rate":return this.rate.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":"string"==typeof e&&(this.lfo.type=e);break;case"depth":"number"==typeof e&&(this.depth.gain.value=e);break;case"rate":"number"==typeof e&&(this.rate.value=e)}return this}params(){return{state:this.isActive,type:this.lfo.type,depth:this.depth.gain.value,rate:this.rate.value}}}class VocalCancelerProcessor extends OverlapAddProcessor{instance=null;algorithm="time";depth=0;minFrequency=200;maxFrequency=8e3;threshold=.05;isActive=!0;constructor(A){super(A),this.port.onmessage=A=>{if(A.data instanceof ArrayBuffer)WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A}));else for(const[t,e]of Object.entries(A.data))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"algorithm":"string"==typeof e&&(this.algorithm=e);break;case"depth":"number"==typeof e&&(this.depth=e);break;case"minFrequency":"number"==typeof e&&(this.minFrequency=e);break;case"maxFrequency":"number"==typeof e&&(this.maxFrequency=e);break;case"threshold":"number"==typeof e&&(this.threshold=e)}}}processOverlapAdd(A,t){if(null===this.instance)return!1;const e=A[0],s=t[0];if(0===e.length||0===s.length)return!0;if(2!==e.length||2!==s.length){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}if(!this.isActive||0===this.depth){for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}const i=this.instance.exports,r=i.memory.buffer,a=i.alloc_memory_inputLs(this.frameSize),n=i.alloc_memory_inputRs(this.frameSize),g=new Float32Array(r,a,this.frameSize),o=new Float32Array(r,n,this.frameSize);switch(g.set(e[0]),o.set(e[1]),this.algorithm){case"time":{const A=i.vocalcancelerL(this.depth,this.frameSize),t=i.vocalcancelerR(this.depth,this.frameSize);s[0].set(new Float32Array(r,A,this.frameSize)),s[1].set(new Float32Array(r,t,this.frameSize));break}case"spectrum":{const A=i.vocalcanceler_on_spectrum(sampleRate,this.minFrequency,this.maxFrequency,this.threshold,this.frameSize),t=A+this.frameSize*Float32Array.BYTES_PER_ELEMENT,a=new Float32Array(r,A,this.frameSize),n=new Float32Array(r,t,this.frameSize);for(let A=0;A<this.frameSize;A++)s[0][A]=(1-this.depth)*e[0][A]+this.depth*a[A],s[1][A]=(1-this.depth)*e[1][A]+this.depth*n[A];break}}return!0}}class _ extends u{processor;algorithm="time";minFrequency=200;maxFrequency=8e3;threshold=.05;constructor(A){super(A),this.depth.gain.value=0,this.processor=new AudioWorkletNode(this.context,VocalCancelerProcessor.name),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t),this.activate()})).catch((A=>{throw A}))}start(){}stop(){}connect(){return this.input.disconnect(0),this.processor.disconnect(0),this.isActive?(this.input.connect(this.processor),this.processor.connect(this.output)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"algorithm":return this.algorithm;case"depth":return this.depth.gain.value;case"minFrequency":return this.minFrequency;case"maxFrequency":return this.maxFrequency;case"threshold":return this.threshold}for(const[t,e]of Object.entries(A))switch(t){case"state":if("boolean"==typeof e){this.isActive=e;const A={state:e};this.processor.port.postMessage(A)}break;case"algorithm":if("string"==typeof e){this.algorithm=e;const A={algorithm:e};this.processor.port.postMessage(A)}break;case"depth":if("number"==typeof e){this.depth.gain.value=e;const A={depth:e};this.processor.port.postMessage(A)}break;case"minFrequency":if("number"==typeof e){this.minFrequency=e;const A={minFrequency:e};this.processor.port.postMessage(A)}break;case"maxFrequency":if("number"==typeof e){this.maxFrequency=e;const A={maxFrequency:e};this.processor.port.postMessage(A)}break;case"threshold":if("number"==typeof e){this.threshold=e;const A={threshold:e};this.processor.port.postMessage(A)}}return this}params(){return{state:this.isActive,algorithm:this.algorithm,depth:this.depth.gain.value,minFrequency:this.minFrequency,maxFrequency:this.maxFrequency,threshold:this.threshold}}}class $ extends u{auto=!1;lowpass;envelopeFollower;sensitivity;depthRate=0;constructor(A){super(A),this.lowpass=A.createBiquadFilter(),this.envelopeFollower=A.createWaveShaper(),this.sensitivity=A.createBiquadFilter(),this.lowpass.type="lowpass",this.lowpass.frequency.value=this.auto?20:350,this.lowpass.Q.value=1,this.lowpass.gain.value=0,this.envelopeFollower.curve=new Float32Array([1,0,1]),this.sensitivity.type="lowpass",this.sensitivity.frequency.value=350,this.sensitivity.Q.value=1,this.sensitivity.gain.value=0,this.depth.gain.value=0,this.rate.value=0,this.deactivate(),this.connect()}stop(A,t){super.stop(A,t),!this.auto&&this.isActive&&(this.lfo.connect(this.depth),this.depth.connect(this.lowpass.frequency))}connect(){return this.input.disconnect(0),this.sensitivity.disconnect(0),this.envelopeFollower.disconnect(0),this.lowpass.disconnect(0),this.depth.disconnect(0),this.isActive?this.auto?(this.input.connect(this.sensitivity),this.sensitivity.connect(this.output),this.input.connect(this.envelopeFollower),this.envelopeFollower.connect(this.lowpass),this.lowpass.connect(this.depth),this.depth.connect(this.sensitivity.frequency)):(this.input.connect(this.lowpass),this.lowpass.connect(this.output),this.lfo.connect(this.depth),this.depth.connect(this.lowpass.frequency)):this.input.connect(this.output),this.output}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"auto":return this.auto;case"cutoff":return this.auto?this.sensitivity.frequency.value:this.lowpass.frequency.value;case"depth":return this.depthRate;case"rate":return this.rate.value;case"resonance":return this.auto?this.sensitivity.Q.value:this.lowpass.Q.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"auto":"boolean"==typeof e&&(this.auto=e,this.connect());break;case"cutoff":"number"==typeof e&&(this.auto?(this.sensitivity.frequency.value=e,this.lowpass.frequency.value=20):this.lowpass.frequency.value=e);break;case"depth":"number"==typeof e&&(this.depthRate=e,this.depth.gain.value=this.auto?1e4*e:this.lowpass.frequency.value*e);break;case"rate":"number"==typeof e&&(this.rate.value=e);break;case"resonance":"number"==typeof e&&(this.auto?(this.sensitivity.Q.value=e,this.lowpass.Q.value=1):this.lowpass.Q.value=e)}return this}params(){return{state:this.isActive,auto:this.auto,cutoff:this.auto?this.sensitivity.frequency.value:this.lowpass.frequency.value,depth:this.auto?this.depth.gain.value:this.depthRate,rate:this.rate.value,resonance:this.auto?this.sensitivity.Q.value:this.lowpass.Q.value}}}class AA{static NUMBER_OF_INPUTS=2;static NUMBER_OF_OUTPUTS=2;context;destination;modules=[];mastervolume;processor;analyser;recorder;autopanner;bitcrusher;chorus;compressor;delay;envelopegenerator;equalizer;filter;flanger;fuzz;harmonizer;listener;noisegate;noisesuppressor;overdrive;panner;phaser;pitchshifter;preamp;reverb;ringmodulator;stereo;tremolo;vocalcanceler;wah;runningAnalyser=!1;mixed=!1;constructor(A){this.context=A,this.destination=A.destination,this.mastervolume=A.createGain(),this.processor=new AudioWorkletNode(A,SoundModuleProcessor.name),this.analyser=new C(A),this.recorder=new l(A),this.autopanner=new E(A),this.bitcrusher=new p(A),this.chorus=new d(A),this.compressor=new f(A),this.delay=new y(A),this.envelopegenerator=new m(A),this.equalizer=new D(A),this.filter=new w(A),this.flanger=new b(A),this.fuzz=new F(A),this.harmonizer=new N(A),this.listener=new k(A),this.noisegate=new R(A),this.noisesuppressor=new S(A),this.overdrive=new U(A),this.panner=new G(A),this.phaser=new M(A),this.pitchshifter=new v(A),this.preamp=new X(A),this.reverb=new j(A),this.ringmodulator=new W(A),this.stereo=new V(A),this.tremolo=new Z(A),this.vocalcanceler=new _(A),this.wah=new $(A),this.modules=[this.compressor,this.wah,this.bitcrusher,this.overdrive,this.fuzz,this.preamp,this.equalizer,this.filter,this.pitchshifter,this.tremolo,this.ringmodulator,this.phaser,this.flanger,this.chorus,this.harmonizer,this.delay,this.reverb,this.panner,this.autopanner]}connect(A){if(A.disconnect(0),this.modules.length>0){const t=this.modules[0].INPUT;if(null===t)return;A.connect(t)}else A.connect(this.mastervolume);for(let A=0,t=this.modules.length;A<t;A++){const t=this.modules[A].OUTPUT;if(null!==t)if(t.disconnect(0),A<this.modules.length-1){const e=this.modules[A+1].INPUT;if(null===e)continue;t.connect(e)}else t.connect(this.mastervolume)}this.mastervolume.connect(this.destination),this.mastervolume.connect(this.analyser.INPUT),this.mastervolume.connect(this.recorder.INPUT),this.recorder.OUTPUT.connect(this.destination)}disconnect(){this.processor.disconnect(0)}audioDestination(){return this.destination=this.context.destination,this}streamDestination(A){if(this.destination=this.context.createMediaStreamDestination(),A?.sinkId){const{sinkId:t,successCallback:e,errorCallback:s}=A;this.setSinkId(t,e,s)}return this}setSinkId(A,t,e){return this.context.setSinkId&&this.context.setSinkId(A).then((()=>{"function"==typeof t&&t()})).catch((A=>{"function"==typeof e&&e(A)})),this}install(A){const t=new A(this.context);return this.modules.push(t),t}on(A){const t=A??this.context.currentTime;return this.autopanner.start(t),this.bitcrusher.start(t),this.chorus.start(t),this.filter.start(t),this.flanger.start(t),this.fuzz.start(t),this.overdrive.start(t),this.phaser.start(t),this.ringmodulator.start(t),this.tremolo.start(t),this.wah.start(t),this}off(A){const t=A??this.context.currentTime;return this.autopanner.stop(t),this.bitcrusher.stop(t),this.chorus.stop(t),this.filter.stop(t),this.flanger.stop(t),this.fuzz.stop(t),this.overdrive.stop(t),this.phaser.stop(t),this.ringmodulator.stop(t),this.tremolo.stop(t),this.wah.stop(t),this}suspend(){return this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),this.runningAnalyser=!1,this.recorder.stop(),this}mix(){return this.mixed=!0,this}demix(){return this.mixed=!1,this}params(){return{mastervolume:this.mastervolume.gain.value,stereo:this.stereo.params(),compressor:this.compressor.params(),bitcrusher:this.bitcrusher.params(),overdrive:this.overdrive.params(),fuzz:this.fuzz.params(),preamp:this.preamp.params(),wah:this.wah.params(),pitchshifter:this.pitchshifter.params(),equalizer:this.equalizer.params(),filter:this.filter.params(),autopanner:this.autopanner.params(),tremolo:this.tremolo.params(),ringmodulator:this.ringmodulator.params(),phaser:this.phaser.params(),flanger:this.flanger.params(),chorus:this.chorus.params(),harmonizer:this.harmonizer.params(),delay:this.delay.params(),reverb:this.reverb.params(),panner:this.panner.params(),listener:this.listener.params(),envelopegenerator:this.envelopegenerator.params(),noisegate:this.noisegate.params(),noisesuppressor:this.noisesuppressor.params(),vocalcanceler:this.vocalcanceler.params()}}edit(A){const t=this.modules;return this.modules=A,t}toJSON(){return JSON.stringify(this.params())}init(A){this.mastervolume.disconnect(0),this.processor.disconnect(0),this.analyser.INPUT.disconnect(0),this.recorder.INPUT.disconnect(0);for(const A of this.modules)A.INPUT&&A.INPUT.disconnect(0),A.OUTPUT&&A.OUTPUT.disconnect(0);this.modules.length=0,this.analyser=new C(A),this.recorder=new l(A),this.autopanner=new E(A),this.bitcrusher=new p(A),this.chorus=new d(A),this.compressor=new f(A),this.delay=new y(A),this.envelopegenerator=new m(A),this.equalizer=new D(A),this.filter=new w(A),this.flanger=new b(A),this.fuzz=new F(A),this.harmonizer=new N(A),this.listener=new k(A),this.noisegate=new R(A),this.noisesuppressor=new S(A),this.overdrive=new U(A),this.panner=new G(A),this.phaser=new M(A),this.pitchshifter=new v(A),this.preamp=new X(A),this.reverb=new j(A),this.ringmodulator=new W(A),this.stereo=new V(A),this.tremolo=new Z(A),this.vocalcanceler=new _(A),this.wah=new $(A),this.modules=[this.compressor,this.wah,this.bitcrusher,this.overdrive,this.fuzz,this.preamp,this.equalizer,this.filter,this.pitchshifter,this.tremolo,this.ringmodulator,this.phaser,this.flanger,this.chorus,this.harmonizer,this.delay,this.reverb,this.panner,this.autopanner]}}class OscillatorModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class tA{context;type="linear";time=0;prevFrequency=-1;nextFrequency=0;isActive=!0;constructor(A){this.context=A}ready(A){this.nextFrequency=A;const t=-1===this.prevFrequency?0:this.nextFrequency-this.prevFrequency;this.isActive&&0!==this.time&&0!==t||(this.prevFrequency=this.nextFrequency)}start(A,t){const e=t??this.context.currentTime,s=e+this.time;A.frequency.cancelScheduledValues(e),A.frequency.setValueAtTime(this.prevFrequency,e),"exponential"===this.type?A.frequency.exponentialRampToValueAtTime(this.nextFrequency,s):A.frequency.linearRampToValueAtTime(this.nextFrequency,s)}stop(){this.prevFrequency=this.nextFrequency}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.type;case"time":return this.time}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":"string"==typeof e&&(this.type=e);break;case"time":"number"==typeof e&&(this.time=e)}return this}params(){return{state:this.isActive,type:this.type,time:this.time}}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}}class eA{static OCTAVE=1200;context;source;volume;octave=0;fine=0;custom={real:new Float32Array([0,1]),imag:new Float32Array([0,1])};isActive;paused=!0;constructor(A,t){this.context=A,this.source=A.createOscillator(),this.volume=A.createGain(),this.isActive=t}ready(A){if(!this.isActive)return;const t=this.source.type,e=this.source.frequency.value,s=this.source.detune.value;if(this.paused||(this.source.stop(this.context.currentTime),this.source.disconnect(0)),this.source=this.context.createOscillator(),"custom"===t){const A=this.custom.real,t=this.custom.imag,e=this.context.createPeriodicWave(A,t);this.source.setPeriodicWave(e)}else this.source.type=t;this.source.frequency.value=e,this.source.detune.value=s,this.volume.connect(A)}start(A){this.isActive?(this.source.start(A??this.context.currentTime),this.paused=!1):(this.paused||(this.source.stop(this.context.currentTime),this.paused=!0),this.source.disconnect(0))}stop(A){this.paused||(this.source.stop(A??this.context.currentTime),this.source.disconnect(0),this.paused=!0)}param(A){if("string"==typeof A)switch(A){case"state":return this.isActive;case"type":return this.source.type;case"octave":return this.octave;case"fine":return this.fine;case"volume":return this.volume.gain.value}for(const[t,e]of Object.entries(A))switch(t){case"state":"boolean"==typeof e&&(this.isActive=e);break;case"type":if("string"==typeof e)this.source.type=e;else if("object"==typeof e){let{real:A,imag:t}=e;const s=4096;A.length>s&&(A=A.subarray(0,s)),t.length>s&&(t=t.subarray(0,s)),0!==A[0]&&(A[0]=0),0!==t[0]&&(t[0]=0);const i=this.context.createPeriodicWave(A,t);this.source.setPeriodicWave(i),this.custom.real=A,this.custom.imag=t}break;case"octave":"number"==typeof e&&(this.octave=e,this.source.detune.value=this.fine+e*eA.OCTAVE);break;case"fine":"number"==typeof e&&(this.fine=e,this.source.detune.value=e+this.octave*eA.OCTAVE);break;case"volume":"number"==typeof e&&(this.volume.gain.value=e)}return this}get(){return this.source}state(){return this.isActive}activate(){return this.isActive=!0,this}deactivate(){return this.isActive=!1,this}params(){return{state:this.isActive,type:this.source.type,octave:this.octave,fine:this.fine,volume:this.volume.gain.value}}get INPUT(){return this.source}get OUTPUT(){return this.volume}}class sA extends AA{sources=[];glide;startTime=0;duration=0;constructor(A){super(A),this.processor=new AudioWorkletNode(A,OscillatorModuleProcessor.name),this.glide=new tA(A)}setup(A){this.sources.length=0;for(let t=0,e=A.length;t<e;t++)this.sources[t]=new eA(this.context,A[t]),this.envelopegenerator.setGenerator(t);return this}ready(A,t){return this.startTime=A??this.context.currentTime,this.duration=t??0,this.envelopegenerator.clear(!0),this}start(A){const t=this.context.currentTime+this.startTime;this.mixed||(this.envelopegenerator.clear(!0),this.connect(this.processor));for(let e=0,s=A.length;e<s&&!(e>=this.sources.length);e++){const s=this.sources[e],i=A[e];s.ready(this.processor),this.envelopegenerator.ready(e,s.INPUT,s.OUTPUT),this.glide.ready(i),this.glide.start(s.INPUT,t),s.start(t)}return this.envelopegenerator.start(t),this.on(t),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this}stop(){const A=this.context.currentTime+this.startTime+this.duration;return this.envelopegenerator.stop(A,!1),this.glide.stop(),this.filter.stop(A),this}param(A){if("string"==typeof A&&"mastervolume"===A)return this.mastervolume.gain.value;for(const[t,e]of Object.entries(A))if("mastervolume"===t)"number"==typeof e&&(this.mastervolume.gain.value=e);return this}get(A){return"number"==typeof A&&A>=0&&A<this.sources.length?this.sources[A]:this.sources}length(){return this.sources.length}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah;case"glide":return this.glide}}params(){return{...super.params(),oscillator:{glide:this.glide.params(),params:this.sources.map((A=>A.params()))}}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}}class OneshotModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class iA extends AA{sources=[];resources=[];buffers=[];volumes=[];states=[];settings=[];startTime=0;duration=0;transpose=0;loadError=!1;constructor(A){super(A),this.processor=new AudioWorkletNode(A,OneshotModuleProcessor.name)}setup(A){const{resources:t,settings:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A;for(let A=0,t=e.length;A<t;A++)this.states[A]=!1,this.volumes[A]=this.context.createGain(),this.settings[A]=e[A],this.envelopegenerator.setGenerator(A);for(let A=0,e=t.length;A<e;A++){this.resources[A]=t[A];const e=this.resources[A];"string"==typeof e?this.load({url:e,index:A,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}):this.buffers[A]=e}return this}ready(A,t){return this.startTime=A??0,this.duration=t??0,this.envelopegenerator.clear(!1),this}start(A){const t=this.context.currentTime+this.startTime;this.mixed||(this.envelopegenerator.clear(!1),this.connect(this.processor));for(const e of A){if(e<0||e>=this.settings.length)continue;const{bufferIndex:A,playbackRate:s,loop:i,loopStart:r,loopEnd:a,volume:n}=this.settings[e],g=this.context.createBufferSource();g.buffer=this.buffers[A],g.playbackRate.value=s??1,g.detune.value=100*this.transpose,g.loop=i??!1,g.loopStart=r??0,g.loopEnd=a??g.buffer.duration,this.volumes[e].gain.value=n??1,this.envelopegenerator.ready(e,g,this.volumes[e]),this.volumes[e].connect(this.processor),g.loop?g.start(t,t+g.loopStart,g.loopEnd-t):g.start(t),this.sources[e]=g,this.states[e]=!0}return this.envelopegenerator.start(t),this.on(t),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this}stop(A){const t=this.context.currentTime+this.startTime+this.duration;return A.forEach((A=>{this.states[A]&&(this.sources[A].stop(t),this.states[A]=!1)})),this.envelopegenerator.stop(t),this.envelopegenerator.clear(!1),this.off(t),this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"transpose":return this.transpose}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"transpose":"number"==typeof e&&(this.transpose=e)}return this}get(A){return"number"==typeof A&&A>=0&&A<this.buffers.length?this.buffers[A]:this.buffers}reset(A,t,e){if(A>=0&&A<this.settings.length)switch(t){case"bufferIndex":case"playbackRate":case"loopStart":case"loopEnd":case"volume":"number"==typeof e&&(this.settings[A][t]=e);break;case"loop":"boolean"==typeof e&&(this.settings[A][t]=e)}return this}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),transpose:this.transpose}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}load(A){const{url:t,index:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A,n=new XMLHttpRequest;n.timeout=s??6e4,n.ontimeout=A=>{!this.loadError&&r&&r(A,"timeout"),this.loadError=!0},n.onprogress=A=>{this.loadError?n.abort():a&&a(A)},n.onerror=A=>{!this.loadError&&r&&r(A,"error"),this.loadError=!0},n.onload=A=>{if(200===n.status){const t=n.response;if(!(t instanceof ArrayBuffer))return;const s=t=>{this.buffers[e]=t;for(const A of this.buffers)if(void 0===A)return;i&&i(A,this.buffers)},a=A=>{r&&r(A,"decode")};this.context.decodeAudioData(t,s,a)}},n.open("GET",t,!0),n.responseType="arraybuffer",n.send(null)}}class NoiseModuleProcessor extends AudioWorkletProcessor{instance=null;processing=!1;type="whitenoise";constructor(){super(),this.port.onmessage=A=>{A.data instanceof ArrayBuffer?WebAssembly.instantiate(A.data).then((({instance:A})=>{this.instance=A})).catch((A=>{throw A})):("boolean"==typeof A.data.processing&&(this.processing=A.data.processing),A.data.type&&(this.type=A.data.type))}}process(A,t){if(null===this.instance)return!1;if(!this.processing)return!0;const e=t[0],s=this.instance.exports,i=s.memory.buffer;for(let A=0,t=e.length;A<t;A++){const t=e[A].length;switch(this.type){case"whitenoise":{const r=s.whitenoise(currentFrame);e[A].set(new Float32Array(i,r,t));break}case"pinknoise":{const r=s.pinknoise(currentFrame);e[A].set(new Float32Array(i,r,t));break}case"browniannoise":{const r=s.browniannoise(currentFrame);e[A].set(new Float32Array(i,r,t));break}}}return!0}}class rA extends AA{type="whitenoise";constructor(A){super(A),this.processor=new AudioWorkletNode(A,NoiseModuleProcessor.name),this.envelopegenerator.setGenerator(0),fetch("data:application/wasm;base64,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").then((async A=>{const t=await A.arrayBuffer();this.processor.port.postMessage(t)})).catch((A=>{throw A}))}setup(){return this}ready(){return this}start(){const A=this.context.currentTime;if(!this.mixed){const A=this.envelopegenerator.getGenerator(0);A&&this.connect(A)}this.envelopegenerator.ready(0,this.processor,null),this.envelopegenerator.start(A),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this.on(A);return this.processor.port.postMessage({processing:!0}),this}stop(){const A=this.context.currentTime;this.envelopegenerator.stop(A),this.off(A);return this.processor.port.postMessage({processing:!1}),this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"type":return this.type}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"type":if("string"==typeof e&&("whitenoise"===e||"pinknoise"===e||"browniannoise"===e)){this.type=e;const A={type:e};this.processor.port.postMessage(A)}}return this}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}disconnect(){const A=this.envelopegenerator.getGenerator(0);A&&A.disconnect(0)}params(){return{...super.params(),type:this.type}}get INPUT(){const A=this.envelopegenerator.getGenerator(0);return A||null}get OUTPUT(){return this.mastervolume}}class AudioModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];e.length>0&&e[0].length>0&&currentFrame%16384==0&&this.port.postMessage({});for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class aA extends AA{source;buffer=null;currentTime=0;stopped=!0;speed=1;constructor(A){super(A),this.processor=new AudioWorkletNode(A,AudioModuleProcessor.name),this.source=A.createBufferSource()}setup(A){const{decodeCallback:t,updateCallback:e,endedCallback:s,errorCallback:i}=A??{};return t&&(this.decodeCallback=t),e&&(this.updateCallback=e),s&&(this.endedCallback=s),i&&(this.errorCallback=i),this.envelopegenerator.setGenerator(0),this.envelopegenerator.param({attack:0,decay:.01,sustain:1,release:.01}),this}ready(A){if(A instanceof ArrayBuffer){this.buffer=null;const t=A=>{this.buffer=A,this.analyser.start("timeoverview",0,this.buffer),this.analyser.start("timeoverview",1,this.buffer),this.decodeCallback&&this.decodeCallback(this.buffer)};this.context.decodeAudioData(A,t,this.errorCallback)}else A instanceof AudioBuffer&&(this.buffer=A);return this}start(A,t){if(null===this.buffer||!this.stopped)return this;const e=this.context.currentTime,s=A??0,i=t??this.buffer.duration;this.currentTime=i>=0?s>=0&&s<=i?s:0:s>=0&&s<=this.buffer.duration?s:0;const r=this.source.playbackRate.value,a=this.source.detune.value,n=this.source.loop;this.source=this.context.createBufferSource(),this.source.buffer=this.buffer,this.source.playbackRate.value=r,this.source.detune.value=a,this.source.loop=n,this.source.loopStart=this.currentTime,this.source.loopEnd=i>=0?i:this.buffer.duration,this.envelopegenerator.ready(0,this.source,this.processor),this.connect(this.processor);const g=this.computePlaybackRate();i>=0?this.source.start(e,this.currentTime,i-s):this.source.start(e,this.currentTime,this.buffer.duration-this.currentTime),this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.stopped=!1,this.envelopegenerator.start(e),i>=0?this.envelopegenerator.stop(e+(i-s)/g,!0):this.envelopegenerator.stop(e+(this.buffer.duration-s)/g,!0),this.on(e);const o=this.analyser.domain("timeoverview",0),h=this.analyser.domain("timeoverview",1);return this.processor.port.onmessage=()=>{if(null!==this.buffer)if(Math.abs(this.source.loopEnd-this.currentTime)>.5){const A=this.computePlaybackRate();this.currentTime+=16384/this.buffer.sampleRate*A,this.updateCallback&&this.updateCallback(this.source,this.currentTime),o.update(this.currentTime),h.update(this.currentTime)}else this.source.loop?(this.stop(),"sprite"===o.param("mode")?this.start(this.source.loopStart,this.source.loopEnd):this.start(0,this.buffer.duration)):this.end();else this.end()},this}stop(){if(null===this.buffer||this.stopped)return this;const A=this.context.currentTime;return this.source.stop(A),this.off(A),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),this.stopped=!0,this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"playbackRate":return this.source.playbackRate.value;case"detune":return this.source.detune.value;case"speed":return this.speed;case"loop":return this.source.loop;case"currentTime":return this.currentTime;case"duration":return this.source.buffer?.duration??0;case"sampleRate":return this.source.buffer?.sampleRate??this.context.sampleRate;case"numberOfChannels":return this.source.buffer?.numberOfChannels??0}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"playbackRate":if("number"==typeof e&&e>0){this.source.playbackRate.value=e;const A=this.computePlaybackRate(),t=this.context.currentTime,s=this.currentTime,i=this.source.buffer?.duration??0;this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(i-s)/A,!0)}break;case"detune":if("number"==typeof e){this.source.detune.value=e;const A=this.computePlaybackRate(),t=this.context.currentTime,s=this.currentTime,i=this.source.buffer?.duration??0;this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(i-s)/A,!0)}break;case"speed":if("number"==typeof e&&e>0){this.speed=e;const A=this.pitchshifter.param("pitch");this.pitchshifter.param({pitch:A,speed:this.speed}),this.source.playbackRate.value=this.speed;const t=this.context.currentTime,s=this.currentTime,i=this.source.buffer?.duration??0;this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(i-s)/this.speed,!0)}break;case"loop":"boolean"==typeof e&&(this.source.loop=e);break;case"currentTime":"number"==typeof e&&(this.currentTime=e,this.stopped||(this.stop(),this.start(e)))}return this}get(){return this.source}end(){return this.stop(),this.currentTime=0,this.endedCallback&&this.endedCallback(this.source,0),this}has(){return null!==this.buffer}paused(){return this.stopped}fadeIn(A){if("number"!=typeof A)return this.envelopegenerator.param("attack");this.envelopegenerator.param({attack:A});const t=this.context.currentTime,e=this.currentTime,s=this.source.buffer?.duration??0,i=this.computePlaybackRate();return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}fadeOut(A){if("number"!=typeof A)return this.envelopegenerator.param("release");this.envelopegenerator.param({release:A});const t=this.context.currentTime,e=this.currentTime,s=this.source.buffer?.duration??0,i=this.computePlaybackRate();return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}slice(A,t){if(null===this.buffer)return null;const e=this.buffer.duration,s=this.buffer.sampleRate,i=this.buffer.numberOfChannels,r=Math.trunc((A??0)*s),a=Math.trunc((t??e)*s),n=i>0?this.buffer.getChannelData(0):null,g=i>1?this.buffer.getChannelData(1):null,o=a-r;switch(i){case 1:{if(null===n)return null;const A=new Float32Array(o);for(let t=r;t<a;t++)A[t-r]=n[t];const t=this.context.createBuffer(1,o,s);return t.copyToChannel(A,0),t}case 2:{if(null===n||null===g)return null;const A=new Float32Array(o),t=new Float32Array(o);for(let e=r;e<a;e++)A[e-r]=n[e],t[e-r]=g[e];const e=this.context.createBuffer(2,o,s);return e.copyToChannel(A,0),e.copyToChannel(t,1),e}}return null}sprite(A){return null===this.buffer?null:Object.keys(A).reduce(((t,e)=>{const s=A[e],i=this.slice(...s);return null!==i&&(t[e]=i),t}),{})}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),playbackRate:this.source.playbackRate.value,detune:this.source.detune.value,speed:this.speed,loop:this.source.loop,currentTime:this.currentTime,duration:this.buffer?.duration??0,sampleRate:this.buffer?.sampleRate??this.context.sampleRate,numberOfChannels:this.buffer?.numberOfChannels??0,vocalcanceler:this.vocalcanceler.params()}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}computePlaybackRate(){return this.source.playbackRate.value*2**(this.source.detune.value/1200)}}class MediaModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class nA extends AA{source=null;media=null;ext="";autoplay=!1;mediaSource=null;sourceBuffer=null;file="";mimeType="";listeners={};constructor(A){super(A),this.processor=new AudioWorkletNode(A,MediaModuleProcessor.name),this.onSourceOpen=this.onSourceOpen.bind(this),this.onSourceEnded=this.onSourceEnded.bind(this),this.onSourceClose=this.onSourceClose.bind(this),this.onSourceBufferUpdateEnd=this.onSourceBufferUpdateEnd.bind(this),this.onSourceBufferError=this.onSourceBufferError.bind(this)}setup(A){this.envelopegenerator.setGenerator(0),this.envelopegenerator.param({attack:0,decay:.01,sustain:1,release:.01});const{media:t,formats:e,listeners:s,autoplay:i}=A;if(!t)return this;this.media=t;for(const A of e??[]){const t=`audio/${A}`,e=`video/${A}`,s=this.media.canPlayType(t),i=this.media.canPlayType(e);if(/^(?:maybe|probably)/.test(s)||/^(?:maybe|probably)/.test(i)){this.ext=A;break}}return s&&(this.listeners=s,Object.keys(s).forEach((A=>{const t=s[A];"function"==typeof t&&(s[A]=t),this.media&&this.media.addEventListener(A,t,!1)}))),this.media.addEventListener("loadstart",(()=>{null!==this.media&&(null!==this.source&&this.media===t||(this.source=this.context.createMediaElementSource(this.media)))}),!1),this.media.addEventListener("ended",(()=>{null!==this.media&&(this.media.pause(),this.off(this.context.currentTime),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1))}),!1),this.autoplay=i??!1,this.autoplay&&null===this.source&&(this.source=this.context.createMediaElementSource(this.media)),this.autoplay&&this.media.src&&this.context.resume().then((()=>{this.start(this.media?.currentTime??0)})).catch((A=>{this.listeners.error&&this.listeners.error(A)})),this}ready(A,t){if(null===this.media)return this;if(this.mediaSource&&"open"===this.mediaSource.readyState&&(this.mediaSource.endOfStream(),window.URL.revokeObjectURL(this.media.src),this.mediaSource.removeEventListener("sourceopen",this.onSourceOpen,!1),this.mediaSource.removeEventListener("sourceended",this.onSourceEnded,!1),this.mediaSource.removeEventListener("sourceclose",this.onSourceClose,!1),this.sourceBuffer&&(this.sourceBuffer.removeEventListener("updateend",this.onSourceBufferUpdateEnd,!1),this.sourceBuffer.removeEventListener("error",this.onSourceBufferError,!1))),t){if(!MediaSource||!MediaSource.isTypeSupported(t))return this;this.media.removeAttribute("src"),this.media.load(),this.mediaSource=new MediaSource,this.media.src=window.URL.createObjectURL(this.mediaSource),this.mimeType=t,this.file=A,this.mediaSource.addEventListener("sourceopen",this.onSourceOpen,!1),this.mediaSource.addEventListener("sourceended",this.onSourceEnded,!1),this.mediaSource.addEventListener("sourceclose",this.onSourceClose,!1)}else A.startsWith("blob:")||""===this.ext?this.media.src=A:this.media.src=`${A}.${this.ext}`;return this}start(A,t){return null===this.source||null===this.media||(this.envelopegenerator.ready(0,this.source,this.processor),this.connect(this.processor),this.media.play().then((()=>{if(null===this.media)return;const t=this.context.currentTime;this.media.currentTime=A??0,this.envelopegenerator.start(t),Number.isFinite(this.media.duration)&&this.envelopegenerator.stop(t+(this.media.duration-this.media.currentTime)/this.media.playbackRate,!0),this.on(t),this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1)})).catch((()=>{this.stop((()=>{null!==this.media&&(this.autoplay&&(this.media.muted=!0,this.media.volume=0),this.start(A))}),t)}))),this}stop(A,t){return null===this.source||null===this.media||this.media.play().then((()=>{null!==this.media&&(this.media.pause(),this.off(this.context.currentTime),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),A&&A())})).catch((A=>{t&&t(A)})),this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"autoplay":return this.autoplay;case"playbackRate":return this.media?.playbackRate??1;case"currentTime":return this.media?.currentTime??0;case"controls":return this.media?.controls??!1;case"loop":return this.media?.loop??!1;case"muted":return this.media?.muted??!1;case"duration":return Number.isNaN(this.media?.duration)?0:this.media?.duration??0}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"playbackRate":if(this.media&&"number"==typeof e&&e>0){this.media.playbackRate=e;const A=this.context.currentTime,t=this.media.currentTime,s=this.media.duration;this.envelopegenerator.start(A),Number.isFinite(s)&&this.envelopegenerator.stop(A+(s-t)/e,!0)}break;case"currentTime":if(this.media&&"number"==typeof e){this.media.currentTime=e;const A=this.context.currentTime,t=this.media.duration,s=this.media.playbackRate;this.envelopegenerator.start(A),Number.isFinite(t)&&this.envelopegenerator.stop(A+(t-e)/s,!0)}break;case"controls":this.media&&"boolean"==typeof e&&(this.media.controls=e);break;case"loop":this.media&&"boolean"==typeof e&&(this.media.loop=e);break;case"muted":this.media&&"boolean"==typeof e&&(this.media.muted=e)}return this}get(){return this.source}hasMedia(){return null!==this.media}hasSource(){return null!==this.source}paused(){return null===this.media||this.media.paused}fadeIn(A){if("number"!=typeof A)return this.envelopegenerator.param("attack");this.envelopegenerator.param({attack:A});const t=this.context.currentTime,e=this.media?.currentTime??0,s=this.media?.duration??0,i=this.media?.playbackRate??1;return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}fadeOut(A){if("number"!=typeof A)return this.envelopegenerator.param("release");this.envelopegenerator.param({release:A});const t=this.context.currentTime,e=this.media?.currentTime??0,s=this.media?.duration??0,i=this.media?.playbackRate??1;return this.envelopegenerator.start(t),this.envelopegenerator.stop(t+(s-e)/i,!0),this}requestPictureInPicture(){return this.media instanceof HTMLVideoElement&&"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled?this.media.disablePictureInPicture||0===this.media.readyState||this.media===document.pictureInPictureElement?Promise.reject():this.media.requestPictureInPicture():Promise.reject()}exitPictureInPicture(){return this.media instanceof HTMLVideoElement&&"pictureInPictureEnabled"in document&&document.pictureInPictureEnabled?this.media.disablePictureInPicture||0===this.media.readyState||this.media!==document.pictureInPictureElement?Promise.reject():document.exitPictureInPicture():Promise.reject()}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),autoplay:this.autoplay,playbackRate:this.media?.playbackRate??1,controls:this.media?.controls??!1,loop:this.media?.loop??!1,muted:this.media?.muted??!1,currentTime:this.media?.currentTime??0,duration:Number.isNaN(this.media?.duration??0)?0:this.media?.duration??0,vocalcanceler:this.vocalcanceler.params()}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}onSourceOpen(A){if(null===this.mediaSource)return;this.sourceBuffer=this.mediaSource.addSourceBuffer(this.mimeType),this.sourceBuffer.mode="sequence",this.sourceBuffer.addEventListener("updateend",this.onSourceBufferUpdateEnd,!1),this.sourceBuffer.addEventListener("error",this.onSourceBufferError,!1);const t=new Request(this.file);fetch(t).then((A=>A.arrayBuffer())).then((A=>{this.sourceBuffer&&this.sourceBuffer.appendBuffer(A)})).catch((A=>{this.listeners.error&&this.listeners.error(A)})).finally((()=>{this.listeners.sourceopen&&this.listeners.sourceopen(A)}))}onSourceEnded(A){this.listeners.sourceended&&this.listeners.sourceended(A)}onSourceClose(A){this.listeners.sourceclose&&this.listeners.sourceclose(A)}onSourceBufferUpdateEnd(A){this.listeners.updateend&&this.listeners.updateend(A)}onSourceBufferError(A){this.listeners.error&&this.listeners.error(A)}}class StreamModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class gA extends AA{sources=[];stream=null;constraints={audio:!0,video:!1};output=!0;track=!1;paused=!0;constructor(A){super(A),this.processor=new AudioWorkletNode(A,StreamModuleProcessor.name)}setup(A){return A&&(this.constraints={...this.constraints,...A}),this}ready(A){return navigator.mediaDevices&&navigator.mediaDevices.getUserMedia&&window.MediaStream?(this.paused=!1,A?.stream?(this.stream=A.stream,Promise.resolve(this.stream)):navigator.mediaDevices.getUserMedia(this.constraints).then((t=>(this.paused||(this.stream=t,A?.successCallback&&A.successCallback(t)),t))).catch((t=>(A?.errorCallback&&A.errorCallback(t),t)))):Promise.reject()}start(){if(null===this.stream)return this;if(this.track){const A=this.stream.getAudioTracks();for(let t=0,e=A.length;t<e;t++)this.sources[t]=this.context.createMediaStreamTrackSource(A[t]),this.sources[t].connect(this.processor),this.connect(this.processor)}else this.sources[0]=this.context.createMediaStreamSource(this.stream),this.sources[0].connect(this.processor),this.connect(this.processor);return this.output||(this.mastervolume.disconnect(0),this.mastervolume.connect(this.analyser.INPUT),this.mastervolume.connect(this.recorder.INPUT),this.recorder.OUTPUT.connect(this.destination)),this.on(this.context.currentTime),this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this}stop(){return this.sources.length=0,this.off(this.context.currentTime),this.analyser.stop("time",0),this.analyser.stop("time",1),this.analyser.stop("fft",0),this.analyser.stop("fft",1),this.analyser.stop("spectrogram",0),this.analyser.stop("spectrogram",1),this.paused=!0,this}param(A){if("string"==typeof A)switch(A){case"mastervolume":return this.mastervolume.gain.value;case"output":return this.output;case"track":return this.track}for(const[t,e]of Object.entries(A))switch(t){case"mastervolume":"number"==typeof e&&(this.mastervolume.gain.value=e);break;case"output":"boolean"==typeof e&&(this.output=e);break;case"track":"boolean"==typeof e&&(this.track=e)}return this}get(A){return"number"==typeof A&&A>=0&&A<this.sources.length?this.sources[A]:this.sources}getStream(){return this.stream}getConstraints(){return this.constraints}setConstraints(A){return this.constraints=A,this}clear(){return this.stop(),this.clearAudioDevices(),this.clearVideoDevices(),this.stream=null,this}clearAudioDevices(){if(null===this.stream)return this;this.stop();const A=this.stream.getAudioTracks();for(const t of A)t.stop();return this}clearVideoDevices(){if(null===this.stream)return this;this.stop();const A=this.stream.getVideoTracks();for(const t of A)t.stop();return this.stream=null,this}devices(){return navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices?navigator.mediaDevices.enumerateDevices():Promise.reject()}streaming(){return!this.paused}setInputDeviceId(A){const t=this.constraints.audio??{};return this.constraints="boolean"==typeof t?{...this.constraints,audio:{deviceId:A}}:{...this.constraints,audio:{...t,deviceId:A}},this}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}params(){return{...super.params(),output:this.output,track:this.track,noisegate:this.noisegate.params(),noisesuppressor:this.noisesuppressor.params()}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}}class oA extends AA{processorName="";options={};moduleURL="";constructor(A){super(A),this.envelopegenerator.setGenerator(0)}setup(A,t){return this.processorName=A,this.options=t??{},this}ready(A,t){return this.moduleURL=A,this.context.audioWorklet.addModule(this.moduleURL,t??{credentials:"same-origin"}).then((()=>{this.processor=new AudioWorkletNode(this.context,this.processorName,this.options)}))}start(){const A=this.envelopegenerator.getGenerator(0);if(null===A)return this;const t=this.context.currentTime;return this.mixed||(this.envelopegenerator.clear(!0),this.processor.disconnect(0),this.connect(A)),this.envelopegenerator.ready(0,this.processor,null),this.envelopegenerator.start(t),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this.on(t),this}stop(){const A=this.context.currentTime;return this.envelopegenerator.stop(A),this.off(A),this}postMessage(A){return this.processor.port.postMessage(A),this}onMessage(A){return this.processor.port.onmessage=A,this}onMessageError(A){return this.processor.port.onmessageerror=A,this}map(){return this.processor.parameters}get(){return this.processor}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}suspend(){super.suspend();const A=this.envelopegenerator.getGenerator(0);return this.processor&&A&&(A.disconnect(0),this.processor.connect(A)),this}get INPUT(){const A=this.envelopegenerator.getGenerator(0);return A||null}get OUTPUT(){return this.mastervolume}}class MixerModuleProcessor extends AudioWorkletProcessor{constructor(){super()}process(A,t){const e=A[0],s=t[0];for(let A=0,t=e.length;A<t;A++)s[A].set(e[A]);return!0}}class hA extends AA{sources=[];gainNodes=[];constructor(A){super(A),this.processor=new AudioWorkletNode(A,MixerModuleProcessor.name)}setup(){return this}ready(){return this}start(A,t){this.sources=A;for(let A=0,e=this.sources.length;A<e;A++){const e=this.sources[A],s=this.context.currentTime;e.off(s),e.suspend(),e.mix(),e.INPUT&&(this.gainNodes[A]=this.context.createGain(),this.gainNodes[A].gain.value=t?t[A]:1,e.disconnect(),e.INPUT.connect(this.gainNodes[A]),this.gainNodes[A].connect(this.processor))}this.connect(this.processor);const e=this.context.currentTime;return this.on(e),this.runningAnalyser||(this.analyser.start("time",0),this.analyser.start("time",1),this.analyser.start("fft",0),this.analyser.start("fft",1),this.analyser.start("spectrogram",0),this.analyser.start("spectrogram",1),this.runningAnalyser=!0),this}stop(){const A=this.context.currentTime;this.off(A),this.suspend();for(const A of this.sources)A.demix(),A.INPUT&&(A.disconnect(),A.connect(A.INPUT));for(const A of this.gainNodes)A.disconnect(0);return this}param(A){if("string"==typeof A&&"mastervolume"===A)return this.mastervolume.gain.value;for(const[t,e]of Object.entries(A))if("mastervolume"===t)"number"==typeof e&&(this.mastervolume.gain.value=e);return this}get(){return this.sources}module(A){switch(A){case"analyser":return this.analyser;case"recorder":return this.recorder;case"autopanner":return this.autopanner;case"bitcrusher":return this.bitcrusher;case"chorus":return this.chorus;case"compressor":return this.compressor;case"delay":return this.delay;case"envelopegenerator":return this.envelopegenerator;case"equalizer":return this.equalizer;case"filter":return this.filter;case"flanger":return this.flanger;case"fuzz":return this.fuzz;case"harmonizer":return this.harmonizer;case"listener":return this.listener;case"noisegate":return this.noisegate;case"noisesuppressor":return this.noisesuppressor;case"overdrive":return this.overdrive;case"panner":return this.panner;case"phaser":return this.phaser;case"pitchshifter":return this.pitchshifter;case"preamp":return this.preamp;case"reverb":return this.reverb;case"ringmodulator":return this.ringmodulator;case"stereo":return this.stereo;case"tremolo":return this.tremolo;case"vocalcanceler":return this.vocalcanceler;case"wah":return this.wah}}get INPUT(){return this.processor}get OUTPUT(){return this.mastervolume}}class IA{midiAccess=null;inputs=[];outputs=[];constructor(){}setup(A){if(!navigator.requestMIDIAccess)return Promise.reject();const{options:t,successCallback:e,errorCallback:s}=A;return navigator.requestMIDIAccess(t).then((A=>{this.midiAccess=A,A.inputs.forEach((A=>{this.inputs.push(A)})),A.outputs.forEach((A=>{this.outputs.push(A)})),e&&e(this.midiAccess,this.inputs,this.outputs)})).catch((A=>{s&&s(A)}))}get(){return this.midiAccess}}function cA(A){return A.replace(/^.+?\{/s,"").replace(/\};?$/s,"")}function CA(A){return window.URL.createObjectURL(function(A){return new Blob([cA(A)],{type:"text/javascript"})}(A))}const QA=new Map([["T","TEMPO"],["O","OCTAVE"],["C","NOTE"],["D","NOTE"],["E","NOTE"],["F","NOTE"],["G","NOTE"],["A","NOTE"],["B","NOTE"],["+","NOTE"],["-","NOTE"],["#","NOTE"],["R","REST"],["0","NUMBER"],["1","NUMBER"],["2","NUMBER"],["3","NUMBER"],["4","NUMBER"],["5","NUMBER"],["6","NUMBER"],["7","NUMBER"],["8","NUMBER"],["9","NUMBER"],[".","NUMBER"],["&","TIE"],[" ","SPACE"],[void 0,"EOS"]]);class BA{_id;_type;_token;_value;constructor(A,t,e){this._id=A,this._type=t,this._token=e,this._value=e?Number(e):-1}get type(){return this._type}get token(){return this._token}get value(){return Number.isNaN(this._value)?-1:this._value}toString(){return JSON.stringify({id:this._id,type:this._type,token:this._token,value:this._value})}}class lA{static id=0;tokens=[];notes=[];numbers=[];constructor(A){this.tokens=A.trim().toUpperCase().split("").reverse()}get(){let A=this.tokens.pop(),t=QA.get(A);if(lA.id++,!t)return new BA(lA.id.toString(10),"UNKNOWN",A);for(;"SPACE"===t;)if(A=this.tokens.pop(),t=QA.get(A),!t)return new BA(lA.id.toString(10),"UNKNOWN",A);if("EOS"===t)return new BA(lA.id.toString(10),"EOS",A);switch(this.notes.length=0,this.numbers.length=0,t){case"TEMPO":if(A)return new BA(lA.id.toString(10),"TEMPO",A);break;case"OCTAVE":if(A)return new BA(lA.id.toString(10),"OCTAVE",A);break;case"NOTE":if(A){if(this.notes.push(A),A=this.tokens.pop(),!A)return new BA(lA.id.toString(10),"NOTE",this.notes.join(""));if(t=QA.get(A),!t)return new BA(lA.id.toString(10),"UNKNOWN",A);for(;"NOTE"===t;){if(this.notes.push(A),A=this.tokens.pop(),!A)return new BA(lA.id.toString(10),"NOTE",this.notes.join(""));if(t=QA.get(A),!t)return new BA(lA.id.toString(10),"UNKNOWN",A)}return this.tokens.push(A),new BA(lA.id.toString(10),"NOTE",this.notes.join(""))}break;case"REST":if(A)return new BA(lA.id.toString(10),"REST",A);break;case"NUMBER":if(A){if(this.numbers.push(A),A=this.tokens.pop(),!A)return new BA(lA.id.toString(10),"NUMBER",this.numbers.join(""));if(t=QA.get(A),!t)return new BA(lA.id.toString(10),"UNKNOWN",A);for(;"NUMBER"===t;){if(this.numbers.push(A),A=this.tokens.pop(),!A)return new BA(lA.id.toString(10),"NUMBER",this.numbers.join(""));if(t=QA.get(A),!t)return new BA(lA.id.toString(10),"UNKNOWN",A)}return this.tokens.push(A),new BA(lA.id.toString(10),"NUMBER",this.numbers.join(""))}break;case"TIE":if(A)return new BA(lA.id.toString(10),"TIE",A)}return null}}class uA{static indent=0;_id;_operator;_left;_right;constructor(A,t,e,s){this._id=A,this._operator=t,this._left=e,this._right=s}concat(A){this._right=A}get operator(){return this._operator}get left(){return this._left}get right(){return this._right}clear(){uA.indent=0}toString(){let A="";for(let t=0;t<uA.indent;t++)A+=" ";return uA.indent++,`\n${A} ${this._operator.token} (id = ${this._id})\n${A} /\\\n${A}${this._left?.operator.token??""}${null!==this._right&&void 0!==this._right._operator.token?this.toString.call(this._right):"EOS"}\n`}}class EA{_token;constructor(A){this._token=A}get token(){return this._token}}class pA{static id=0;tokenizer;syntaxTree=[];constructor(A){this.tokenizer=A}parse(){lA.id=0;let A=this.tokenizer.get(),t=this.tokenizer.get();for(;;){if(!A||!t)return this.syntaxTree;switch(pA.id+=2,A.type){case"TEMPO":if("NUMBER"===t.type){const e=new uA((pA.id-0).toString(10),t,null,null),s=new uA((pA.id-1).toString(10),A,e,null);this.syntaxTree.push(s);break}return new EA(A);case"OCTAVE":if(this.syntaxTree.length>0&&"NUMBER"===t.type){const e=new uA((pA.id-0).toString(10),t,null,null),s=new uA((pA.id-1).toString(10),A,e,null);this.syntaxTree[this.syntaxTree.length-1].concat(s),this.syntaxTree.push(s);break}return new EA(A);case"NOTE":if(this.syntaxTree.length>0&&"NUMBER"===t.type){const e=new uA((pA.id-0).toString(10),t,null,null),s=new uA((pA.id-1).toString(10),A,e,null);this.syntaxTree[this.syntaxTree.length-1].concat(s),this.syntaxTree.push(s);break}return new EA(A);case"REST":if(this.syntaxTree.length>0&&"NUMBER"===t.type){const e=new uA((pA.id-0).toString(10),t,null,null),s=new uA((pA.id-1).toString(10),A,e,null);this.syntaxTree[this.syntaxTree.length-1].concat(s),this.syntaxTree.push(s);break}return new EA(A);case"NUMBER":pA.id-=2;break;case"TIE":if(this.syntaxTree.length>0){pA.id--;const t=new uA((pA.id-0).toString(10),A,null,null);this.syntaxTree[this.syntaxTree.length-1].concat(t),this.syntaxTree.push(t);break}return new EA(A);case"EOS":if(this.syntaxTree.length>0){const t=new uA((pA.id-1).toString(10),A,null,null);this.syntaxTree[this.syntaxTree.length-1].concat(t),this.syntaxTree.push(t)}else{const t=new uA((pA.id-1).toString(10),A,null,null);this.syntaxTree.push(t)}return this.syntaxTree}A=t,t=this.tokenizer.get()}}free(){this.syntaxTree.length=0}}const dA=1.0594630943592953;function fA(A){switch(A.toUpperCase()){case"C":case"D":case"E":case"F":case"G":case"A":case"B":case"R":return!0;default:return!1}}function yA(A,t){let e=0;switch(t){case"C":e=3;break;case"D":e=5;break;case"E":e=7;break;case"F":e=8;break;case"G":e=10;break;case"A":e=12;break;case"B":e=14;break;case"R":return-1}const s=12*(A-1)+e;return s>=0?s:-1}function mA(A){return A>=0?27.5*dA**A:0}function DA(A,t="rect"){if(A<=0)return new Float32Array([]);const e=new Float32Array(A);switch(t){case"rect":for(let t=0;t<A;t++)e[t]=1;break;case"hanning":for(let t=0;t<A;t++)e[t]=.5-.5*Math.cos(2*Math.PI*t/(A-1));break;case"hamming":for(let t=0;t<A;t++)e[t]=.54-.46*Math.cos(2*Math.PI*t/(A-1));break;case"blackman":{const t=.16,s=(1-t)/2,i=.5,r=t/2;for(let t=0;t<A;t++)e[t]=s-i*Math.cos(2*Math.PI*t/(A-1))+r*Math.cos(4*Math.PI*t/(A-1));break}}return e}let wA=null;function bA(A,t,e){if(null===wA)return;const s=wA.exports,i=s.memory.buffer,r=s.alloc_memory_reals(e),a=s.alloc_memory_imags(e),n=new Float32Array(i,r,e),g=new Float32Array(i,a,e);n.set(A),g.set(t),s.FFT(e),A.set(n),t.set(g)}function FA(A){const{file:t,type:e,successCallback:s,errorCallback:i,progressCallback:r}=A,a=new FileReader;switch(a.onprogress=A=>{r&&r(A)},a.onerror=A=>{if(!i)return;let t;switch(a.error?.code){case a.error?.NOT_FOUND_ERR:t="NOT_FOUND_ERR";break;case a.error?.SECURITY_ERR:t="SECURITY_ERR";break;case a.error?.ABORT_ERR:t="ABORT_ERR";break;case a.error?.NOT_SUPPORTED_ERR:t="NOT_READABLE_ERR";break;default:t="ERR"}i(A,t)},a.onload=A=>{if(!s)return;let t=a.result;switch(e){case"text":"string"==typeof t&&(t=t.replace(/<(\/?script.*?)>/gi,"&lt;$1&gt;"));break;case"json":"string"==typeof t&&(t=JSON.parse(t.replace(/<(\/?script.*?)>/gi,"&lt;$1&gt;")))}s(A,t)},e){case"arraybuffer":a.readAsArrayBuffer(t);break;case"dataURL":a.readAsDataURL(t);break;case"text":case"json":a.readAsText(t,"UTF-8")}}WebAssembly.instantiateStreaming(fetch("data:application/wasm;base64,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")).then((A=>{wA=A.instance})).catch((A=>A));class vA{_id;_note;_indexes;_frequencies;_start;_stop;_duration;constructor(A){const{id:t,note:e,indexes:s,frequencies:i,start:r,stop:a,duration:n}=A;this._id=t,this._note=e,this._indexes=s,this._frequencies=i,this._start=r,this._stop=a,this._duration=n}concat(A){return new vA({id:this._id,note:`${this._note}&${A.note}`,indexes:this._indexes,frequencies:this._frequencies,start:this._start,duration:this._duration+A.duration,stop:this._start+(this._duration+A.duration)})}get note(){return this._note}get indexes(){return this._indexes}get frequencies(){return this._frequencies}get start(){return this._start}get stop(){return this._stop}get duration(){return this._duration}toString(){return JSON.stringify({id:this._id,note:this._note,indexes:this._indexes,frequencies:this._frequencies,start:this._start,stop:this._stop,duration:this._duration})}}class NA{sequences=[];treeConstructor;syntaxTree="";timeOf4note=0;octave=-1;currentTime=0;errorCallback;constructor(A,t){this.treeConstructor=A,this.errorCallback=t||(A=>{throw A})}get(){pA.id=0;const A=this.treeConstructor.parse();if(!A)return void this.errorCallback(new EA(new BA("1","UNKNOWN","")));if(A instanceof EA)return void this.errorCallback(A);this.timeOf4note=0,this.octave=-1,this.currentTime=0;let t=A[0];for(;null!==t;){if(!t)return void this.errorCallback(new EA(new BA((this.sequences.length+1).toString(10),"UNKNOWN","")));if(t instanceof EA)return void this.errorCallback(t);const A=t.operator,e=A.type,s=t.left,i=null!==s?s.operator.value:-1;switch(e){case"TEMPO":if(i<=0)return void this.errorCallback(new EA(A));this.timeOf4note=60/i,t=t.right;break;case"OCTAVE":if(i<0)return void this.errorCallback(new EA(A));this.octave=i,t=t.right;break;case"NOTE":case"REST":case"TIE":{const A=this.push("TIE"===e?t.right:t);if(A instanceof EA)return void this.errorCallback(A);"TIE"===e?(this.concat(),t=t.right?.right??null):t=t.right;break}case"EOS":t=t.right}}return this.syntaxTree=A[0].toString(),this.treeConstructor.free(),this.sequences}getSyntaxTree(){return this.syntaxTree}push(A){if(null===A)return;const t=A.left,e=A.right;if(null===t||null===e)return;const s=t.operator,i=e.operator;if(null===s&&null===i)return this.push(t),void this.push(e);const r=A.operator.token,a=s.value,n=s.token,g=[],o=[];if(!r)return;for(let A=0,t=r.length;A<t;A++){const t=r.charAt(A);if(!fA(t))continue;let e=yA(this.octave,t);switch(r.charAt(A+1)){case"+":case"#":e++,A++;break;case"-":e--,A++}if(e>=g[0]&&(e-=12),-1!==e&&e<0)return;g.push(e)}for(const A of g){const t=mA(A);if(t<0)return;o.push(t)}let h=0;switch(a){case 1:case 2:case 4:case 8:case 16:case 32:case 64:case 128:case 256:if(n){const A=4/a;n.includes(".")?h+=A*this.timeOf4note*1.5:h+=A*this.timeOf4note}break;case 6:h+=2*this.timeOf4note/3;break;case 12:h+=this.timeOf4note/3;break;case 18:h+=2*this.timeOf4note/9;break;case 24:h+=.5*this.timeOf4note/3;break;case 36:h+=this.timeOf4note/9;break;case 48:h+=.25*this.timeOf4note/3;break;case 72:h+=.5*this.timeOf4note/9;break;case 96:h+=.125*this.timeOf4note/3;break;case 144:h+=.25*this.timeOf4note/9;break;case 192:h+=.0625*this.timeOf4note/3;break;default:return void this.errorCallback(new EA(s))}const I=(this.sequences.length+1).toString(10),c=`${r}${n}`,C=this.currentTime,Q=C+h;this.sequences.push(new vA({id:I,note:c,indexes:g,frequencies:o,start:C,stop:Q,duration:h})),this.currentTime+=h}concat(){const A=this.sequences.pop(),t=this.sequences.pop();t&&A&&this.sequences.push(t.concat(A))}}const kA=()=>{let A=null;self.onmessage=t=>{switch(t.data.type){case"schedule":"number"==typeof t.data.duration&&(A=self.setTimeout((()=>{self.postMessage({type:"next"})}),1e3*t.data.duration));break;case"next":break;case"stop":null!==A&&(self.clearTimeout(A),self.close(),A=null)}}};class RA{sequences=[];source;mml;syntaxTree;previous=null;scheduleWorker=null;currentIndex=0;currentPosition=0;offset=0;constructor(A){const{source:t,mml:e,offset:s,startCallback:i,stopCallback:r,endedCallback:a,errorCallback:n}=A;this.source=t,this.mml=e,this.offset=s??0,i&&(this.startCallback=i),r&&(this.stopCallback=r),a&&(this.endedCallback=a),n&&(this.errorCallback=n);const g=new lA(e),o=new pA(g),h=new NA(o,this.errorCallback),I=h.get();I&&(this.sequences=I),this.syntaxTree=h.getSyntaxTree();const c=CA(kA.toString());this.scheduleWorker=new Worker(c),window.URL.revokeObjectURL(c)}start(A){if(null===this.scheduleWorker)return;if(!this.sequences[this.currentIndex])return this.stop(),void(this.endedCallback&&this.endedCallback());const t=this.sequences[this.currentIndex++];if(A){const A=this.mml.slice(0,this.currentPosition),e=this.mml.slice(this.currentPosition).replace(t.note,`<span class="x-highlight">${t.note}</span>`);this.mml=`${A}${e}`,this.currentPosition+=this.mml.slice(this.currentPosition).indexOf("</span>")+7}else{const A=this.mml.slice(0,this.currentPosition),e=t.note;this.mml=`${A}${e}`,this.currentPosition+=e.length}if(this.source instanceof sA)this.source.ready(0,t.duration).start(t.frequencies),this.startCallback&&this.startCallback(t);else if(this.source instanceof iA){const A=t.indexes.filter((A=>-1!==A)).map((A=>A+this.offset));this.source.ready(0,t.duration).start(A),this.startCallback&&this.startCallback(t,this.offset)}else this.source instanceof rA&&(this.source.start(),this.startCallback&&this.startCallback(t));const e={type:"schedule",duration:t.duration};this.scheduleWorker.postMessage(e),this.scheduleWorker.onmessage=e=>{"next"===e.data.type&&(this.source instanceof sA?this.stopCallback&&this.stopCallback(t):this.source instanceof iA?this.stopCallback&&this.stopCallback(t,this.offset):this.source instanceof rA&&(this.source.stop(),this.stopCallback&&this.stopCallback(t)),this.previous=t,this.start(A))}}stop(){if(null===this.scheduleWorker)return;if(null===this.previous)return;if(this.source instanceof sA)this.source.stop(),this.stopCallback&&this.stopCallback(this.previous);else if(this.source instanceof iA){const A=this.previous.indexes.filter((A=>-1!==A)).map((A=>A+this.offset));this.source.stop(A),this.stopCallback&&this.stopCallback(this.previous,this.offset)}else this.source instanceof rA&&(this.source.stop(),this.stopCallback&&this.stopCallback(this.previous));this.scheduleWorker.postMessage({type:"stop"}),this.scheduleWorker.terminate(),this.scheduleWorker=null}getMML(){return this.mml}getSequences(){return this.sequences}getSyntaxTree(){return this.syntaxTree}has(){return this.sequences.length>0}paused(){return null===this.scheduleWorker}getCurrentIndex(){return this.currentIndex}setCurrentIndex(A){A>=0&&A<this.sequences.length&&(this.currentIndex=A)}}class SA{parts=[];constructor(){}setup(A){return A?.startCallback&&(this.startCallback=A.startCallback),A?.stopCallback&&(this.stopCallback=A.stopCallback),A?.endedCallback&&(this.endedCallback=A.endedCallback),A?.errorCallback&&(this.errorCallback=A.errorCallback),this}ready(A){const{source:t,mmls:e,offset:s}=A;this.stop(),this.clear();const i=this.startCallback,r=this.stopCallback,a=this.endedCallback,n=this.errorCallback;for(const A of e)this.parts.push(new RA({source:t,mml:A,offset:s,startCallback:i,stopCallback:r,endedCallback:a,errorCallback:n}));return this}start(A,t){if(A>=0&&A<this.parts.length){this.parts[A].start(t??!1)}return this}stop(){for(const A of this.parts)A.stop();return this}getMML(A){return A>=0&&A<this.parts.length?this.parts[A].getMML():""}getMMLs(){return this.parts.map((A=>A.getMML()))}has(){return this.parts.length>0&&this.parts.every((A=>A.has()))}getSequences(A){return A>=0&&A<this.parts.length?this.parts[A].getSequences():[]}getAllSequences(){return this.parts.map((A=>A.getSequences()))}getSyntaxTree(A){return A>=0&&A<this.parts.length?this.parts[A].getSyntaxTree():""}paused(){return 0===this.parts.length||this.parts.every((A=>A.paused()))}currentIndex(A,t){return A<0||A>=this.parts.length?this:t?(this.parts[A].setCurrentIndex(t),this):this.parts[A].getCurrentIndex()}clear(){for(const A of this.parts)A.stop();return this.parts.length=0,this}toABC(A,t,e,s,i,r){let a="";a+=`X:${t||1}\n`,a+=`T:${e||""}\n`,a+=`M:${s||"4/4"}\n`,a+=`L:${i||"1/256"}\n`,a+=`K:${r||""}\n`;const n=A.match(/\s*(?:T\d+)\s*|\s*(?:O\d+)\s*|\s*(?:(?:[CDEFGABR][#+-]?)+(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)\.?)(?:&(?:[CDEFGABR][#+-]?)+(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)\.?)*\s*/gi);if(null===n)return a;let g=null,o=0;for(;n.length>0;){const A=n.shift()?.trim();if(!A)return a;if(/T\d+/i.test(A)){const t=Number(A.slice(1));if(t<=0)return a;a+=`Q:1/4=${t}\n`}else if(/O\d+/i.test(A)){if(g=Number(A.slice(1)),g<0)return a}else if(/(?:(?:[CDEFGABR][#+-]?)+)(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)(?:&(?:[CDEFGABR][#+-]?)+(?:256|192|144|128|96|72|64|48|36|32|24|18|16|12|8|6|4|2|1)\.?)*/i.test(A)){if(null===g)return a;let t=null;t=A.includes("&")?A.split("&"):[A];let e="";for(;t.length>0;){const A=t.shift();if(!A)return a;let s="",i=0;switch(Number(A.replace(/^.+?(\d+)\.*$/,"$1"))){case 1:s=A.replace("1","256");break;case 2:s=A.replace("2","128");break;case 4:s=A.replace("4","64");break;case 8:s=A.replace("8","32");break;case 16:s=A.replace("16","16");break;case 32:s=A.replace("32","8");break;case 64:s=A.replace("64","4");break;case 128:s=A.replace("128","2");break;case 256:s=A.replace("256","1");break;case 6:s=`(3${A.replace("6","128")}`,i=128/3;break;case 12:s=`(3${A.replace("12","64")}`,i=64/3;break;case 18:s=`(9${A.replace("18","128")}`,i=128/9;break;case 24:s=`(3${A.replace("24","32")}`,i=32/3;break;case 36:s=`(9${A.replace("36","64")}`,i=64/9;break;case 48:s=`(3${A.replace("48","16")}`,i=16/3;break;case 72:s=`(9${A.replace("72","32")}`,i=32/9;break;case 96:s=`(3${A.replace("96","8")}`,i=8/3;break;case 144:s=`(9${A.replace("144","16")}`,i=16/9;break;case 192:s=`(3${A.replace("192","4")}`,i=4/3;break;default:return a}if(s.includes(".")&&(s=s.replace(/^(.+?)\d+\.+$/,"$1"+1.5*Number(s.replace(/^.+?(\d+)\.+$/,"$1")))),s.includes("(")?o+=Number(s.replace(/^.+?(\d+)\.*$/i,"$1")):o+=i,o>=256&&(s+=" | ",o=0),/R/i.test(s)){a+=`${s} `;continue}let r="";switch(g){case 0:r=",,,,";break;case 1:r=",,,";break;case 2:r=",,";break;case 3:r=",";break;case 5:r="'";break;case 6:r="''";break;case 7:r="'''"}const n=s.match(/^(\(\d+)?((?:[CDEFGAB][#+-]?)+)(.*)$/i);if(null===n)return a;const h=n[1]?n[1]:"",I=n[2].length,c=n[3]?n[3]:"";let C=0;if(h.length>0&&(s=s.replace(/^(?:\(\d+)?((?:[CDEFGAB][#+-]?)+)(.*)$/i,"$1$2")),1===I)e+=`${h}${s.slice(0,1)}${r}${c}`;else if(2===I&&/[#+-]/.test(s.charAt(1)))e+=`${h}${s.slice(1,2)}${s.slice(0,1)}${r}${c}`;else for(;C<I;)0===C&&(e+=`${h}[`),/[#+-]/.test(s.charAt(C+1))?(e+=`${s.slice(C+1,C+2)}${s.slice(C,C+1)}${r}`,C+=2):(e+=`${s.slice(C,C+1)}${r}`,C++),C===I&&(e+=`]${c}`);t.length>0?e+="&":a+=`${e} `}}}return a.replace(/R/gi,"z").replace(/[#+]/g,"^").replace(/-/g,"_").replace(/&/g,"-").replace(/\s{2}/g," ").trim()}}window.AudioContext=window.AudioContext||window.webkitAudioContext,window.URL=window.URL||window.webkitURL;const UA=new AudioContext,GA={oscillator:null,oneshot:null,noise:null,audio:null,media:null,stream:null,processor:null,mixer:null,analyser:null,midi:null,mml:null},MA=Promise.all([e(UA,SoundModuleProcessor),e(UA,RecorderProcessor),e(UA,OscillatorModuleProcessor),e(UA,OneshotModuleProcessor),e(UA,NoiseModuleProcessor),e(UA,AudioModuleProcessor),e(UA,MediaModuleProcessor),e(UA,StreamModuleProcessor),e(UA,MixerModuleProcessor),e(UA,NoiseGateProcessor),e(UA,NoiseSuppressorProcessor),e(UA,PitchShifterProcessor),e(UA,VocalCancelerProcessor)]).then((()=>(GA.oscillator=new sA(UA),GA.oneshot=new iA(UA),GA.noise=new rA(UA),GA.audio=new aA(UA),GA.media=new nA(UA),GA.stream=new gA(UA),GA.processor=new oA(UA),GA.mixer=new hA(UA),GA.analyser=new C(UA),GA.midi=new IA,GA.mml=new SA,GA))).catch((A=>A));function YA(A){switch(A){case"oscillator":return GA.oscillator;case"oneshot":return GA.oneshot;case"noise":return GA.noise;case"audio":return GA.audio;case"media":return GA.media;case"stream":return GA.stream;case"processor":return GA.processor;case"mixer":return GA.mixer;case"analyser":return GA.analyser;case"midi":return GA.midi;case"mml":return GA.mml;default:return null}}YA.SAMPLE_RATE=UA.sampleRate,YA.EQUAL_TEMPERAMENT=12,YA.FREQUENCY_RATIO=dA,YA.MIN_A=27.5,YA.QUARTER_NOT=4,YA.HALF_UP="+",YA.HALF_DOWN="-",YA.DOT=".",YA.isPitchChar=fA,YA.computeIndex=yA,YA.computeHz=function(A,t){return A<=0?0:A*2**(t/1200)},YA.computeFrequency=mA,YA.computePlaybackRate=function(A,t){return A<=0?1:A*2**(t/1200)},YA.windowFunction=DA,YA.fft=bA,YA.ifft=function(A,t,e){if(null===wA)return;const s=wA.exports,i=s.memory.buffer,r=s.alloc_memory_reals(e),a=s.alloc_memory_imags(e),n=new Float32Array(i,r,e),g=new Float32Array(i,a,e);n.set(A),g.set(t),s.IFFT(e),A.set(n),t.set(g)},YA.spectrum=function(A,t="amplitude",e="hanning",s=.05){const i=A.length,r=new Float32Array(i),a=new Float32Array(i),n=DA(i,e);for(let t=0;t<i;t++)r[t]=n[t]*A[t];bA(r,a,i);const g=i/2;switch(t){case"amplitude":{const A=new Float32Array(g);for(let t=0;t<g;t++)A[t]=Math.sqrt(r[t]**2+a[t]**2);return A}case"phase":{const A=new Float32Array(g);for(let t=0;t<g;t++){const e=Math.sqrt(r[t]**2+a[t]**2);A[t]=e>s?Math.atan2(a[t],r[t]):0}return A}}},YA.toDecibels=function(A){const t=new Float32Array(A.length);for(let e=0,s=t.length;e<s;e++)0!==A[e]?t[e]=20*Math.log10(Math.abs(A[e])):t[e]=20*Math.log10(1e-6);return t},YA.fromDecibels=function(A){const t=new Float32Array(A.length);for(let e=0,s=t.length;e<s;e++)t[e]=Math.pow(10,A[e]/20);return t},YA.ajax=function(A){const{url:t,type:e,timeout:s,successCallback:i,errorCallback:r,progressCallback:a}=A,n=new XMLHttpRequest;n.timeout=s??6e4,n.ontimeout=A=>{r&&r(A,"timeout")},n.onprogress=A=>{a&&a(A)},n.onerror=A=>{r&&r(A,"error")},n.onload=A=>{i&&200===n.status&&i(A,n.response)},n.open("GET",t,!0),n.responseType=e??"arraybuffer",n.send(null)},YA.convertTime=function(A){return A<0?{minutes:-1,seconds:-1,milliseconds:-1}:{minutes:Math.trunc(A/60),seconds:Math.trunc(A%60),milliseconds:A-Math.trunc(A)}},YA.decode=function(A,t,e,s){return e||(e=()=>{}),s||(s=()=>{}),A.decodeAudioData(t,e,s)},YA.permission=function(A){return navigator.permissions.query({name:A})},YA.requestFullscreen=function(A){return A.requestFullscreen()},YA.exitFullscreen=function(){return document.exitFullscreen()},YA.read=FA,YA.drop=function(A){const{event:t,type:e,successCallback:s,errorCallback:i,progressCallback:r}=A;if(t.preventDefault(),!t.dataTransfer?.items[0])return null;const a=t.dataTransfer.items[0].getAsFile();return null===a?null:"objectURL"===e?window.URL.createObjectURL(a):(FA({file:a,type:e,successCallback:s,errorCallback:i,progressCallback:r}),a)},YA.file=function(A){const{event:t,type:e,successCallback:s,errorCallback:i,progressCallback:r}=A,a=t.target.files?.item(0)??null;return null===a?null:"objectURL"===e?window.URL.createObjectURL(a):(FA({file:a,type:e,successCallback:s,errorCallback:i,progressCallback:r}),a)},YA.toFrequencies=function(A){return A.map((A=>mA(A)))},YA.toTextFile=function(A,t){if(t){const t=new Blob([A],{type:"text/plain"});return window.URL.createObjectURL(t)}return`data:,${encodeURIComponent(A)}`},YA.Analyser=C,YA.Recorder=l,YA.Effector=u,YA.Autopanner=E,YA.BitCrusher=p,YA.Chorus=d,YA.Compressor=f,YA.Delay=y,YA.Equalizer=D,YA.Filter=w,YA.Flanger=b,YA.Fuzz=F,YA.Harmonizer=N,YA.Listener=k,YA.NoiseGate=R,YA.NoiseSuppressor=S,YA.OverDrive=U,YA.Panner=G,YA.Phaser=M,YA.PitchShifter=v,YA.Preamp=X,YA.Reverb=j,YA.Ringmodulator=W,YA.Stereo=V,YA.Tremolo=Z,YA.VocalCanceler=_,YA.Wah=$,YA.setup=()=>"running"!==UA.state?UA.resume():Promise.resolve(),YA.promise=()=>MA,YA.clone=()=>{const A={oscillator:null,oneshot:null,noise:null,audio:null,media:null,stream:null,processor:null,mixer:null,analyser:null,midi:null,mml:null};function t(t){switch(t){case"oscillator":return A.oscillator;case"oneshot":return A.oneshot;case"noise":return A.noise;case"audio":return A.audio;case"media":return A.media;case"stream":return A.stream;case"processor":return A.processor;case"mixer":return A.mixer;case"analyser":return A.analyser;case"midi":return A.midi;case"mml":return A.mml;default:return null}}return t.free=t=>{for(const e of t)null!==e&&Object.entries(A).forEach((([t,s])=>{e===s&&(A[t]=null)}))},A.oscillator=new sA(UA),A.oneshot=new iA(UA),A.noise=new rA(UA),A.audio=new aA(UA),A.media=new nA(UA),A.stream=new gA(UA),A.processor=new oA(UA),A.mixer=new hA(UA),A.analyser=new C(UA),A.midi=new IA,A.mml=new SA,t},YA.free=A=>{for(const t of A)null!==t&&Object.entries(GA).forEach((([A,e])=>{t===e&&(GA[A]=null)}))},YA.noConflict=A=>(window.X===YA&&(window.X=void 0),A&&window.XSound===YA&&(window.XSound=void 0),YA),YA.get=()=>UA,YA.getCurrentTime=()=>UA.currentTime;const xA=A=>{A.stopImmediatePropagation(),YA.setup().finally((()=>{document.removeEventListener("mousedown",xA,!1),document.removeEventListener("touchstart",xA,!1)}))};return document.addEventListener("mousedown",xA,!1),document.addEventListener("touchstart",xA,!1),t})()));
3
3
  //# sourceMappingURL=xsound.js.map