Web Audio API - 计算过滤器的累积增益

Web Audio API - calculate cumulative gain of filters

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

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

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

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