Установите значение DelayNode более 1

#javascript #audiocontext

Вопрос:

Как установить значение 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.
 

Если невозможно установить задержку более чем на один, существуют ли какие-либо обходные пути или альтернативные способы?

Ответ №1:

DelayNode Для хранения отложенных выборок используется внутренний буфер. Этот буфер необходимо создать при создании узла. Его размер определяет максимальное значение задержки. Буфер не может быть изменен после создания узла. По умолчанию он может удерживать только до 1 секунды звука. Но вы можете установить его так высоко, как захотите. Установка его на 3 секунды будет выглядеть так.

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