2016-08-11 4 views
2

Я работаю над некоторым звуковым эффектом с задержкой, которую я создал с помощью delayNode и цикла обратной связи. Однако это кажется бесконечным циклом, и через некоторое время (довольно быстро) звук начинает отставать, а затем полностью останавливается с хрустом.Обратная связь в API веб-аудио

source.connect(delayNode); 
delayNode.connect(someMoreEffects); 
someMoreEffects.connect(delayNode); 
source.connect(context.destination); 
delayNode.connect(context.destination); 

Как я могу ограничить количество проходов?

ответ

3

Не совсем понятно, что вы подразумеваете под «начинается задержка», «хруст» и «количество проходов», но если вы хотите остановить цикл обратной связи, отключите источник от узла задержки и/или узел задержки из адресата. Или некоторые изменения этого. Или вставьте узел усиления в контур обратной связи и установите коэффициент усиления на 0 в какое-то время; это также остановит обратную связь.

+0

Спасибо, по какой-то причине я не думал об установке таймаута, чтобы отключить цикл обратной связи. Silly me :) – pokrishka

+2

Как правило, вам захочется сделать второе предложение Раймонда - поместите узел усиления между «someMoreEffects» и loop обратно в delayNode и установите коэффициент усиления меньше единицы. Это контроль «обратной связи», который всегда имеет единицы задержки, и он почти всегда установлен менее одного (так что звук постепенно исчезает). – cwilso

+0

Спасибо @cwilso. Да, я закончил это. Я нашел проблему в своей цепочке, где выигрыш никогда не исчезал до достаточно низких уровней – pokrishka