播放AudioBufferSourceNode两次?

问题描述:

我应该能够使用相同的AudioBufferSourceNode多次播放声音吗?由于某种原因,即使拨打noteOff,第二次拨打noteGrainOn也不会播放音频。播放AudioBufferSourceNode两次?

此代码只播放声音一次:

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) 

一旦你播放源节点,你不能重复使用。您需要使用相同的缓冲区创建另一个AudioBufferSourceNode。查看Web Audio FAQ了解更多信息(请参阅noteOn()问题)。

+1

感谢您的回答和FAQ。 – alltom 2012-02-25 00:03:58

+1

如您所说,这似乎不可行http://www.html5rocks.com/en/tutorials/webaudio/intro/#toc-volume需要重新加载。我也有麻烦重新加载使用currentime // play = function(){source.noteOn(now); },pause = function(){now = audioContext.currentTime; source.noteOff(0); } – molokoloco 2012-03-23 04:18:27

我有一些黑客切换播放/暂停轻松:) 您可以直接在音频到现有的音频标签映射,并使用它

<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

其他裁判: