播放AudioBufferSourceNode两次

Play an AudioBufferSourceNode twice?

本文关键字:两次 AudioBufferSourceNode 播放      更新时间:2023-09-26

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

一旦回放了源节点,就不能重用它。您需要创建另一个具有相同缓冲区的AudioBufferSourceNode。查看Web音频常见问题解答了解更多信息(请参阅noteOn()问题)。

我有一些技巧可以轻松切换播放/暂停:)您可以直接将音频映射到现有的音频标签,并使用上的控件

<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

其他参考文献:

  • 使用Chrome Canary的MediaElementAudioSourceNode的工作示例
  • http://updates.html5rocks.com/tag/webaudio