我应该能够使用相同的AudioBufferSourceNode
多次播放声音吗?出于某种原因,即使有干预noteGrainOn
,第二次拨打noteOff
也不会播放音频。
此代码仅播放一次声音:
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)
答案 0 :(得分:16)
一旦您回放了源节点,就无法重复使用它。您需要使用相同的缓冲区创建另一个AudioBufferSourceNode
。查看Web Audio FAQ了解更多信息(请参阅noteOn()问题)。
答案 1 :(得分:2)
我有一些黑客可以轻松切换播放/暂停:) 您可以直接将音频映射到现有音频标签并使用其上的控件
<audio id="sound" src="./test.mp3" controls="controls"></audio>
var audioElement = document.getElementById('sound');
source = audioContext.createMediaElementSource(audioElement);
/* ... */
audioElement.pause();
我在这里运行的示例:http://www.b2bweb.fr/bonus/Braincer/ 我目前使用的是Chrome版本18.0.xxxx
其他人参考: