首页 > 解决方案 > Web Audio API - 计算滤波器的累积增益

问题描述

MediaStreamAudioSourceNode配置了几个链式和重叠BiquadFilterNodes的。每个滤波器都有不同的频率、增益和质量。如何计算这些双二阶滤波器的总增益?

该增益对于防止削波是必要的。知道增益后,我将能够添加一个 GainNode 来降低音量以防止削波。

标签: javascriptweb-audio-api

解决方案


对于每个BiquadFilterNode,使用相同的数组getFrequencyReponse获取滤波器的频率响应。frequencyHz每一个都有一个magResponse数组。将这些按元素相乘以获得组合响应。

元素 0 是直流增益。您可以将其(倒数)用于 GainNode 的增益值。但这可能会导致其他频率被削波,因此您可能希望找到组合响应中的最大值并使用它。但是,这可能会导致音量非常低,具体取决于所使用的过滤器。


推荐阅读