2015-06-20 1 views
1

Я пытаюсь построить модульный синтезатор, используя веб-аудио api. Главное, что я не могу понять, как это сделать, - это «ворота», или, другими словами, как запускать функции jj-события или события звукового сигнала.Как триггер звукового сигнала функционирует с помощью API веб-аудио?

Например, у меня есть низкочастотная квадратная волна, и я хочу, чтобы функция срабатывала каждый раз, когда амплитуда квадратной волны превышала определенное значение. Каков наилучший процесс для создания такого слушателя?

+0

Я бы выполнил узел анализатора и проверил при каждом вызове requestanimationframe. Не знаю, это лучший способ. – Cracker0dks

ответ

2

В веб-аудио нет обычных обратных вызовов. Единственным «слушателем», который вы можете создать, является тот, который использует ScriptProcessorNode.

Подключите узел, в котором вы хотите найти величину квадратной волны. Определите функцию scriptNode.onaudioprocess, и она будет вызываться на каждом проходе через аудио-сеть, которую вы создали.

Затем вы можете захватить входные данные, используя audioProcessingEvent.inputBuffer и inputDataMic = inputBuffer.getChannelData(0) (при условии, что вы предоставите себе доступ к событию, вызвавшему вызов обратного вызова).

Эти вызовы дают вам доступ к фактическим значениям данных, которые поступают. Вы должны искать свою прямоугольную волну в каждом звуковом кадре. Вы можете найти узел анализатора полезным для определения кадров, которые имеют мощность вокруг частот в вашей квадратной волне.

Смежные вопросы