播放AudioBufferSourceNode两次?

时间:2012-02-24 23:35:48

标签: javascript web-audio

我应该能够使用相同的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)

2 个答案:

答案 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

其他人参考: