Web Audio API:如何在没有故障的情况下取消预定暂停?

时间:2016-01-09 01:06:52

标签: javascript audio web-audio

我正在为我的下一个项目寻找Web Audio API,我对缺少播放/暂停感到困惑。

我需要以下功能:用户可以点击“暂停”,声音会在N秒内淡出。淡出后,声音暂停。如果在淡出过程中单击“播放”,则声音会在后面消失并且不会暂停。

我能找到的唯一解决方案如下,但我不确定它能否防止出现故障。 “点击播放”之后的步骤是否足够快?还有,有更简单的方法吗?

当前正在播放source,已连接到gain节点和ouput节点。

(t,o) =(上次声音开始,然后偏移) 和end = 0

  • 点击暂停,
    • end := (o+N)%soundDuration
    • 在[{1}}
    • 时间安排停留source
    • currentTime+N设置为淡出
  • 点击播放,
    • 如果仍然淡出gain
    • 否则(t,o) := (currentTime, o + (currentTime-t))
    • 在偏移(t,o) := (currentTime, end)
    • 处开始source2
    • osource2gain
    • 联系起来
    • output设为fadein
    • gainsource
    • 中断开gain
    • output

修改

在交换节点时避免毛刺的一种方法:

  1. 不要将source := source2与其sourcegain节点断开连接。
  2. output连接到相同的2个节点。
  3. 安排source2在1毫秒内停止,source在偏移source2的1毫秒内启动。
  4. 如果需要用于GC目的,请在以后安排(o + (currentTime - t) + 1ms)断开连接。

0 个答案:

没有答案