diff --git a/src/SoundPlayer.js b/src/SoundPlayer.js
index cd7b5f7..0cbf868 100644
--- a/src/SoundPlayer.js
+++ b/src/SoundPlayer.js
@@ -299,8 +299,8 @@ class SoundPlayer extends EventEmitter {
         taken.finished().then(() => taken.dispose());
 
         taken.volumeEffect.set(0);
-        const {currentTime, DECAY_WAIT, DECAY_DURATION} = this.audioEngine;
-        taken.outputNode.stop(currentTime + DECAY_WAIT + DECAY_DURATION);
+        const {currentTime, DECAY_DURATION} = this.audioEngine;
+        taken.outputNode.stop(currentTime + DECAY_DURATION);
     }
 
     /**
diff --git a/src/effects/VolumeEffect.js b/src/effects/VolumeEffect.js
index b37e7e8..311d3d3 100644
--- a/src/effects/VolumeEffect.js
+++ b/src/effects/VolumeEffect.js
@@ -42,9 +42,8 @@ class VolumeEffect extends Effect {
         this.value = value;
 
         const {gain} = this.outputNode;
-        const {currentTime, DECAY_WAIT, DECAY_DURATION} = this.audioEngine;
-        gain.setValueAtTime(gain.value, currentTime + DECAY_WAIT);
-        gain.linearRampToValueAtTime(value / 100, currentTime + DECAY_WAIT + DECAY_DURATION);
+        const {currentTime, DECAY_DURATION} = this.audioEngine;
+        gain.linearRampToValueAtTime(value / 100, currentTime + DECAY_DURATION);
     }
 
     /**
diff --git a/test/SoundPlayer.js b/test/SoundPlayer.js
index 1f7b089..7931119 100644
--- a/test/SoundPlayer.js
+++ b/test/SoundPlayer.js
@@ -71,7 +71,7 @@ tap.test('SoundPlayer', suite => {
     });
 
     suite.test('stop decay', t => {
-        t.plan(7);
+        t.plan(5);
         soundPlayer.play();
         soundPlayer.connect(audioEngine);
         const outputNode = soundPlayer.outputNode;
@@ -88,13 +88,10 @@ tap.test('SoundPlayer', suite => {
             inputs: [outputNode.toJSON()]
         }], 'output node connects to gain node to input node');
 
-        audioContext.$processTo(audioEngine.DECAY_WAIT + audioEngine.DECAY_DURATION / 2);
-        const engineInputs = help.engineInputs;
-        t.notEqual(engineInputs[0].gain.value, 1, 'gain value should not be 1');
-        t.notEqual(engineInputs[0].gain.value, 0, 'gain value should not be 0');
+        audioContext.$processTo(audioEngine.DECAY_DURATION / 2);
         t.equal(outputNode.$state, 'PLAYING');
 
-        audioContext.$processTo(audioEngine.DECAY_WAIT + audioEngine.DECAY_DURATION + 0.001);
+        audioContext.$processTo(audioEngine.DECAY_DURATION + 0.001);
         t.deepEqual(help.engineInputs, [{
             name: 'GainNode',
             gain: {