<!-- SS · part 176 -->
is._twoTimesWidthSide.dispose(),this._oneMinusWidth.dispose(),this}}class Za extends Ta{constructor(){const t=ui(Za.getDefaults(),arguments,["frequency","depth"]);super(t),this.name="Tremolo",this._lfoL=new ar({context:this.context,type:t.type,min:1,max:0}),this._lfoR=new ar({context:this.context,type:t.type,min:1,max:0}),this._amplitudeL=new ho({context:this.context}),this._amplitudeR=new ho({context:this.context}),this.frequency=new po({context:this.context,value:t.frequency,units:"frequency"}),this.depth=new po({context:this.context,value:t.depth,units:"normalRange"}),Di(this,["frequency","depth"]),this.connectEffectLeft(this._amplitudeL),this.connectEffectRight(this._amplitudeR),this._lfoL.connect(this._amplitudeL.gain),this._lfoR.connect(this._amplitudeR.gain),this.frequency.fan(this._lfoL.frequency,this._lfoR.frequency),this.depth.fan(this._lfoR.amplitude,this._lfoL.amplitude),this.spread=t.spread}static getDefaults(){return Object.assign(Ta.getDefaults(),{frequency:10,type:"sine",depth:.5,spread:180})}start(t){return this._lfoL.start(t),this._lfoR.start(t),this}stop(t){return this._lfoL.stop(t),this._lfoR.stop(t),this}sync(){return this._lfoL.sync(),this._lfoR.sync(),this.context.transport.syncSignal(this.frequency),this}unsync(){return this._lfoL.unsync(),this._lfoR.unsync(),this.context.transport.unsyncSignal(this.frequency),this}get type(){return this._lfoL.type}set type(t){this._lfoL.type=t,this._lfoR.type=t}get spread(){return this._lfoR.phase-this._lfoL.phase}set spread(t){this._lfoL.phase=90-t/2,this._lfoR.phase=t/2+90}dispose(){return super.dispose(),this._lfoL.dispose(),this._lfoR.dispose(),this._amplitudeL.dispose(),this._amplitudeR.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Xa extends la{constructor(){const t=ui(Xa.getDefaults(),arguments,["frequency","depth"]);super(t),this.name="Vibrato",this._delayNode=new yo({context:this.context,delayTime:0,maxDelay:t.maxDelay}),this._lfo=new ar({context:this.context,type:t.type,min:0,max:t.maxDelay,frequency:t.frequency,phase:-90}).start().connect(this._delayNode.delayTime),this.frequency=this._lfo.frequency,this.depth=this._lfo.amplitude,this.depth.value=t.depth,Di(this,["frequency","depth"]),this.effectSend.chain(this._delayNode,this.effectReturn)}static getDefaults(){return Object.assign(la.getDefaults(),{maxDelay:.005,frequency:5,depth:.1,type:"sine"})}get type(){return this._lfo.type}set type(t){this._lfo.type=t}dispose(){return super.dispose(),this._delayNode.dispose(),this._lfo.dispose(),this.frequency.dispose(),this.depth.dispose(),this}}class Ya extends io{constructor(){const t=ui(Ya.getDefaults(),arguments,["type","size"]);super(t),this.name="Analyser",this._analysers=[],this._buffers=[],this.input=this.output=this._gain=new ho({context:this.context}),this._split=new wa({context:this.context,channels:t.channels}),this.input.connect(this._split),Un(t.channels,1);for(let e=0;e<t.channels;e++)this._analysers[e]=this.context.createAnalyser(),this._split.connect(this._analysers[e],e,0);this.size=t.size,this.type=t.type,this.smoothing=t.smoothing}static getDefaults(){return Object.assign(io.getDefaults(),{size:1024,smoothing:.8,type:"fft",channels:1})}getValue(){return this._analysers.forEach(((t,e)=>{const s=this._buffers[e];"fft"===this._type?t.getFloatFrequencyData(s):"waveform"===this._type&&t.getFloatTimeDomainData(s)})),1===this.channels?this._buffers[0]:this._buffers}get size(){return this._analysers[0].frequencyBinCount}set size(t){this._analysers.forEach(((e,s)=>{e.fftSize=2*t,this._buffers[s]=new Float32Array(t)}))}get channels(){return this._analysers.length}get type(){return this._type}set type(t){Bn("waveform"===t||"fft"===t,`Analyser: invalid type: ${t}`),this._type=t}get smoothing(){return this._analysers[0].smoothingTimeConstant}set smoothing(t){this._analysers.forEach((e=>e.smoothingTimeConstant=t))}dispose(){return super.dispose(),this._analysers.forEach((t=>t.disconnect())),this._split.dispose(),this._gain.dispose(),this}}class $a extends io{constructor(){super(ui($a.getDefaults(),arguments)),this.name="MeterBase",this.input=this.output=this._analyser=new Ya({context:this.context,size:256,type:"waveform"})}dispose(){return super.dispose(),this._analyser.dispose(),this}}class Ha extends $a{constructor(){const t=ui(Ha.getDefaults(),arguments,["smoothing"]);super(t),this.name="Meter",this.input=this.output=this._analyser=new Ya({context:this.context,size:256,type:"waveform",channels:t.channelCount}),this.smoothing=t.smoothing,this.normalRange=t.normalRange,this._rms=new Array(t.channelCount),this._rms.fill(0)}static getDefaults(){return Object.assign($a.getDefaults(),{smoothing:.8,normalRange:!1,channelCount:1})}getLevel(){return Kn("'getLevel' has been changed to 'getValue'"),this.getValue()}getValue(){const t=this._analyser.getValue(),e=(1===this.channels?[t]:t).map(((t,e)=>{const s=t.reduce(((t,e)=>t+e*e),0),n=Math.sqrt(s/t.length);return this._rms[e]=Math.max(n,this._rms[e]*thi