如何重新启动 AudioBufferSourceNode?

vie*_*bel 2 html javascript html5-audio web-audio-api

我在 WebAudio API ( http://webaudio.github.io/web-audio-api/ ) 中找不到重新启动AudioBufferSourceNode. “循环”模式不合适,因为我需要在节点结束之前重新启动它。

我试图通过执行以下操作来实现它:

  1. 停止
  2. 从缓冲区重新创建节点
  3. 开始

但是有几分之一秒没有声音,使过渡变得不平滑。

重新启动 的最佳方法是AudioBufferSourceNode什么?

cwi*_*lso 5

1) 你不能重启一个buffersourcenode。它们是一次性交易 - 一旦它们被停止,您需要将它们扔掉并创建一个新的(指向同一个 AudioBuffer)。

2) 您需要提前计划,以便在您停止播放的同时重新开始播放。Javascript 不是实时语言,因此播放发生在不同的线程上。

3)如果您只是想靠近但仍然重叠,您可能希望在结尾和开头放置包络以平滑过渡 - 例如使用 setTargetAtTime 向上(在开头)和向下(在停止时间)。