Web Audio API - рассчитать совокупный коэффициент усиления фильтров - PullRequest
0 голосов
/ 25 января 2020

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

Это усиление необходимо для предотвращения отсечения. Зная усиление, я смогу добавить GainNode, чтобы уменьшить громкость, чтобы предотвратить отсечение.

1 Ответ

1 голос
/ 27 января 2020

Для каждого BiquadFilterNode используйте getFrequencyReponse, чтобы получить частотную характеристику фильтра, используя тот же массив frequencyHz. Каждый из них будет иметь массив magResponse. Умножьте их вместе, поэлементно, чтобы получить комбинированный ответ.

Элемент 0 - это усиление D C. Вы можете использовать это (обратное) для значения усиления GainNode. Но это может позволить обрезать другие частоты, поэтому вы можете найти наибольшее значение в комбинированном ответе и использовать его. Однако это может привести к очень низкой громкости в зависимости от используемых фильтров.

...