我正在为我的下一个项目寻找Web Audio API,我对缺少播放/暂停感到困惑。
我需要以下功能:用户可以点击“暂停”,声音会在N
秒内淡出。淡出后,声音暂停。如果在淡出过程中单击“播放”,则声音会在后面消失并且不会暂停。
我能找到的唯一解决方案如下,但我不确定它能否防止出现故障。 “点击播放”之后的步骤是否足够快?还有,有更简单的方法吗?
当前正在播放source
,已连接到gain
节点和ouput
节点。
(t,o)
=(上次声音开始,然后偏移)
和end
= 0
end := (o+N)%soundDuration
source
currentTime+N
设置为淡出gain
(t,o) := (currentTime, o + (currentTime-t))
(t,o) := (currentTime, end)
source2
o
与source2
和gain
output
设为fadein gain
和source
gain
output
在交换节点时避免毛刺的一种方法:
source := source2
与其source
和gain
节点断开连接。 output
连接到相同的2个节点。 source2
在1毫秒内停止,source
在偏移source2
的1毫秒内启动。 (o + (currentTime - t) + 1ms)
断开连接。