拥有长maxDelayTime有什么害处?

时间:2015-05-13 21:32:56

标签: javascript delay web-audio

我正在构建一个使用多个延迟节点的实时循环应用程序。我通过将maxDelayTime设置为略长于delayTime来初始化延迟节点,因为这似乎是正确的做法。我不知道它是否真的有所作为,但设置一个例如maxDelayTime似乎是浪费的。 3分钟的时候我只需要延迟~10-15秒。

但是,我希望用户能够调整循环的大小,这就是我遇到问题的地方。如果用户希望循环更小,我可以将delayTime设置为更小的数字,并且一切都很好。但是,用户无法使循环变大,因为无法覆盖maxDelayTime。我可以使用适当的maxDelayTime重新创建所有延迟节点,但是延迟节点与一堆其他节点连接,所以我宁愿不重新创建整个节点。

所以我的问题是:

创建8个延迟节点并且maxDelayTime为3分钟是不是一个坏主意,即使delayTime通常小于30秒,以防用户想要进行更长的循环?

1 个答案:

答案 0 :(得分:4)

是的,这是一个坏主意。

考虑到这一点的最佳方法是maxDelayTime设置不断更新的内部缓冲区的大小 - delayTime只是改变了缓冲区中的查找点。如果你将maxDelay设置得过于大,你会咀嚼大量的内存(例如,立体声44.1kHz的8个延迟节点,maxDelay为3分钟,将占用大约496兆字节。在移动设备上,这是一个巨大的数量。(即使在桌面上,它也相当多。)

我可能在某些拐点周围有边界,这些拐点换掉了新的节点 - 例如> 30秒,> 2分钟 - 并为这些尺寸设置maxDelay。例如,如果您的默认值为30秒,则您的8个节点仅为"仅为#34; 82 meg。