首页 > 解决方案 > 将 DelayNode 设置为大于 1

问题描述

如何将DelayNode.delayTime设置为大于 1?

我已经尝试过了,但它会导致一条警告消息,并且只会产生一秒的最大延迟。

var delayNode = audioContext.createDelay();
delayNode.delayTime.maxValue = 3
delayNode.delayTime.minValue = 3
delayNode.delayTime.value = 3

这是警告

Delay.delayTime.value 3 outside nominal range [0, 1]; value will be clamped.

如果无法将延迟设置为多个,是否有任何解决方法或替代方法?

标签: javascriptaudiocontext

解决方案


使用DelayNode内部缓冲区来存储延迟的样本。创建节点时需要创建此缓冲区。它的大小决定了延迟的最大值。创建节点后不能更改缓冲区。默认情况下,它最多只能保存 1 秒的音频。但是您可以将其设置为任意高。将其设置为 3 秒看起来像这样。

audioContext.createDelay(3);
// or
new DelayNode(audioContext, { maxDelayTime: 3 });

推荐阅读