Reputation: 3252
Should I be able to use the same AudioBufferSourceNode
to play a sound multiple times? For some reason, calling noteGrainOn
a second time doesn't play audio, even with an intervening noteOff
.
This code only plays the sound once:
var node = audioContext.createBufferSource()
node.buffer = audioBuffer
node.connect(audioContext.destination)
var now = audioContext.currentTime
node.noteGrainOn(now, 0, 2)
node.noteOff(now + 2)
node.noteGrainOn(now + 3, 0, 2)
node.noteOff(now + 5)
Upvotes: 15
Views: 9907
Reputation: 4602
I have some hack to toggle play/pause easily :) You can map the audio to an existing audio tag directly and use the control on it
<audio id="sound" src="./test.mp3" controls="controls"></audio>
var audioElement = document.getElementById('sound');
source = audioContext.createMediaElementSource(audioElement);
/* ... */
audioElement.pause();
My example running here : http://www.b2bweb.fr/bonus/Braincer/ I currently use Chrome build 18.0.xxxx
Others refs :
Upvotes: 1
Reputation: 8472
Once you've played back a source node, you can't reuse it. You need to create another AudioBufferSourceNode
with the same buffer. Check out the Web Audio FAQ for more info (see the noteOn() question).
Upvotes: 25