如何重新启动AudioBufferSourceNode
how to do restart a AudioBufferSourceNode?
本文关键字:AudioBufferSourceNode 重新启动 更新时间:2023-09-26
我无法在WebAudio API (http://webaudio.github.io/web-audio-api/)中找到重新启动AudioBufferSourceNode
的方法。"循环"模式是不合适的,因为我需要在它结束之前重新启动节点。
我试着这样做来实现它:
- 从缓冲区重新创建节点
但随后有一小段时间没有声音,使得过渡不顺利。
重启AudioBufferSourceNode
的最佳方法是什么?
1)您不能重新启动buffersourcenode。它们是一次性交易-一旦它们停止,你需要扔掉它们并创建一个新的(指向相同的AudioBuffer)。
2)你需要提前计划,以便在你停止播放的同时重新播放。Javascript不是实时语言,所以回放发生在不同的线程上。
3)如果你只是想接近,但仍然重叠,你可能想把信封在结束和开始平滑过渡-例如使用setTargetAtTime增加增益值(在开始时)和下降(在停止时间)。
"循环"模式是不合适的,因为我需要在它结束之前重新启动节点
AudioBufferSourceNode中实际上有loopEnd和loopStart属性,所以可以在结束之前重新启动节点。
// say you want to restart node every time it reaches 2.3 seconds
var node = audioCtx.createBufferSource();
node.buffer = getSomeAudioBuffer('someSound.mp3');
node.connect(audioCtx.destination);
node.loopEnd = 2.3;
node.loop = true;
node.start();
JSFiddle
相关文章:
- 没有找到相关文章