<!-- SS · part 179 -->
ld t}))}stop(){return ni(this,void 0,void 0,(function*(){Bn("stopped"!==this.state,"Recorder is not started");const t=new Promise((t=>{const e=s=>{this._recorder.removeEventListener("dataavailable",e,!1),t(s.data)};this._recorder.addEventListener("dataavailable",e,!1)}));return this._recorder.stop(),yield t}))}pause(){return Bn("started"===this.state,"Recorder must be started"),this._recorder.pause(),this}dispose(){return super.dispose(),this.input.dispose(),this._stream.disconnect(),this}}class cc extends io{constructor(){const t=ui(cc.getDefaults(),arguments,["threshold","ratio"]);super(t),this.name="Compressor",this._compressor=this.context.createDynamicsCompressor(),this.input=this._compressor,this.output=this._compressor,this.threshold=new no({minValue:this._compressor.threshold.minValue,maxValue:this._compressor.threshold.maxValue,context:this.context,convert:!1,param:this._compressor.threshold,units:"decibels",value:t.threshold}),this.attack=new no({minValue:this._compressor.attack.minValue,maxValue:this._compressor.attack.maxValue,context:this.context,param:this._compressor.attack,units:"time",value:t.attack}),this.release=new no({minValue:this._compressor.release.minValue,maxValue:this._compressor.release.maxValue,context:this.context,param:this._compressor.release,units:"time",value:t.release}),this.knee=new no({minValue:this._compressor.knee.minValue,maxValue:this._compressor.knee.maxValue,context:this.context,convert:!1,param:this._compressor.knee,units:"decibels",value:t.knee}),this.ratio=new no({minValue:this._compressor.ratio.minValue,maxValue:this._compressor.ratio.maxValue,context:this.context,convert:!1,param:this._compressor.ratio,units:"positive",value:t.ratio}),Di(this,["knee","release","attack","ratio","threshold"])}static getDefaults(){return Object.assign(io.getDefaults(),{attack:.003,knee:30,ratio:12,release:.25,threshold:-24})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.disconnect(),this.attack.dispose(),this.release.dispose(),this.threshold.dispose(),this.ratio.dispose(),this.knee.dispose(),this}}class hc extends io{constructor(){const t=ui(hc.getDefaults(),arguments,["threshold","smoothing"]);super(t),this.name="Gate",this._follower=new _a({context:this.context,smoothing:t.smoothing}),this._gt=new vr({context:this.context,value:ji(t.threshold)}),this.input=new ho({context:this.context}),this._gate=this.output=new ho({context:this.context}),this.input.connect(this._gate),this.input.chain(this._follower,this._gt,this._gate.gain)}static getDefaults(){return Object.assign(io.getDefaults(),{smoothing:.1,threshold:-40})}get threshold(){return Li(this._gt.value)}set threshold(t){this._gt.value=ji(t)}get smoothing(){return this._follower.smoothing}set smoothing(t){this._follower.smoothing=t}dispose(){return super.dispose(),this.input.dispose(),this._follower.dispose(),this._gt.dispose(),this._gate.dispose(),this}}class lc extends io{constructor(){const t=ui(lc.getDefaults(),arguments,["threshold"]);super(t),this.name="Limiter",this._compressor=this.input=this.output=new cc({context:this.context,ratio:20,attack:.003,release:.01,threshold:t.threshold}),this.threshold=this._compressor.threshold,Di(this,"threshold")}static getDefaults(){return Object.assign(io.getDefaults(),{threshold:-12})}get reduction(){return this._compressor.reduction}dispose(){return super.dispose(),this._compressor.dispose(),this.threshold.dispose(),this}}class uc extends io{constructor(){const t=ui(uc.getDefaults(),arguments);super(t),this.name="MidSideCompressor",this._midSideSplit=this.input=new Ba({context:this.context}),this._midSideMerge=this.output=new Ua({context:this.context}),this.mid=new cc(Object.assign(t.mid,{context:this.context})),this.side=new cc(Object.assign(t.side,{context:this.context})),this._midSideSplit.mid.chain(this.mid,this._midSideMerge.mid),this._midSideSplit.side.chain(this.side,this._midSideMerge.side),Di(this,["mid","side"])}static getDefaults(){return Object.assign(io.getDefaults(),{mid:{ratio:3,threshold:-24,release:.03,attack:.02,knee:16},side:{ratio:6,threshold:-30,release:.25,attack:.03,knee:10}})}dispose(){return super.dispose(),this.mid.dispose(),this.side.dispose(),this._midSideSplit.dispose(),this._midSideMerge.dispose(),this}}class pc extends io{constructor(){const t=ui(pc.getDefaults(),arguments);super(t),this.name="MultibandCompressor",this._splitter=this.input=new oc({context:this.context,lowFrequency:t.lowFrequency,highFrequency:t.highFrequency}),this.lowFrequency=this._splitter.lowFrequency,this.highFrequency=this._splitter.highFrequency,this.output=new ho({context:this.context}),this.low=new cc(Object.assign(t.low,{context:this.context})),this.mid=new cc(Object.assign(t.mid,{context:this.context})),this.high=new cc(Object.assign(t.high,{context:this.context})),this._splitter.low.chain(this.low,this.output),this._splitter.mid.chain(this.mid,this.output),this._splitter.high.chain(this.high,this