Spaces:
Runtime error
Runtime error
| class EchoEffect { | |
| static get DELAY_TIME () { | |
| return 0.25; | |
| } | |
| static get TAIL_SECONDS () { | |
| return 0.75; | |
| } | |
| constructor (audioContext, startTime, endTime) { | |
| this.audioContext = audioContext; | |
| this.input = this.audioContext.createGain(); | |
| this.output = this.audioContext.createGain(); | |
| this.effectInput = this.audioContext.createGain(); | |
| this.effectInput.gain.value = 0; | |
| this.effectInput.gain.setValueAtTime(0.75, startTime); | |
| this.effectInput.gain.setValueAtTime(0, endTime); | |
| this.delay = this.audioContext.createDelay(1); | |
| this.delay.delayTime.value = EchoEffect.DELAY_TIME; | |
| this.decay = this.audioContext.createGain(); | |
| this.decay.gain.value = 0.3; | |
| this.compressor = this.audioContext.createDynamicsCompressor(); | |
| this.compressor.threshold.value = -5; | |
| this.compressor.knee.value = 15; | |
| this.compressor.ratio.value = 12; | |
| this.compressor.attack.value = 0; | |
| this.compressor.release.value = 0.25; | |
| this.input.connect(this.effectInput); | |
| this.effectInput.connect(this.delay); | |
| this.delay.connect(this.compressor); | |
| this.input.connect(this.compressor); | |
| this.delay.connect(this.decay); | |
| this.decay.connect(this.delay); | |
| this.compressor.connect(this.output); | |
| } | |
| } | |
| export default EchoEffect; | |