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)
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).
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 :
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With