From 65702e7722c8df561fbec03014d87a618fcfa754 Mon Sep 17 00:00:00 2001 From: "Michael \"Z\" Goddard" Date: Wed, 6 Jun 2018 14:42:05 -0400 Subject: [PATCH] use VolumeEffect in AudioPlayer --- src/AudioPlayer.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/AudioPlayer.js b/src/AudioPlayer.js index 868282e..1619e4c 100644 --- a/src/AudioPlayer.js +++ b/src/AudioPlayer.js @@ -1,5 +1,6 @@ -const PitchEffect = require('./effects/PitchEffect'); const PanEffect = require('./effects/PanEffect'); +const PitchEffect = require('./effects/PitchEffect'); +const VolumeEffect = require('./effects/VolumeEffect'); const SoundPlayer = require('./SoundPlayer'); @@ -17,9 +18,11 @@ class AudioPlayer { this.outputNode = this.audioEngine.audioContext.createGain(); // Create the audio effects - const pitchEffect = new PitchEffect(this.audioEngine, this, null); + const volumeEffect = new VolumeEffect(this.audioEngine, this, null); + const pitchEffect = new PitchEffect(this.audioEngine, this, volumeEffect); const panEffect = new PanEffect(this.audioEngine, this, pitchEffect); this.effects = { + volume: volumeEffect, pitch: pitchEffect, pan: panEffect }; @@ -28,6 +31,7 @@ class AudioPlayer { // outputNode -> "pitchEffect" -> panEffect -> audioEngine.input panEffect.connect(this.audioEngine); pitchEffect.connect(panEffect); + volumeEffect.connect(pitchEffect); // reset effects to their default parameters this.clearEffects(); @@ -123,9 +127,6 @@ class AudioPlayer { for (const effectName in this.effects) { this.effects[effectName].clear(); } - - if (this.audioEngine === null) return; - this.outputNode.gain.setTargetAtTime(1.0, 0, this.audioEngine.DECAY_TIME); } /** @@ -133,8 +134,7 @@ class AudioPlayer { * @param {number} value - the volume in range 0-100 */ setVolume (value) { - if (this.audioEngine === null) return; - this.outputNode.gain.setTargetAtTime(value / 100, 0, this.audioEngine.DECAY_TIME); + this.setEffect('volume', value); } /** @@ -150,6 +150,7 @@ class AudioPlayer { * Clean up and disconnect audio nodes. */ dispose () { + this.effects.volume.dispose(); this.effects.pitch.dispose(); this.effects.pan.dispose();