我正在寻找模仿标准 DJ 混音器的 3 波段均衡器。
不幸的是,我运气不佳。我知道它涉及创建 BiquadFilter 节点并将它们连接到增益节点。不幸的是,我没有接近预期的结果。
到目前为止,我唯一的成功就是控制轨道音量的 gainNode。
任何帮助将不胜感激。
谢谢,斯坦
我正在寻找模仿标准 DJ 混音器的 3 波段均衡器。
不幸的是,我运气不佳。我知道它涉及创建 BiquadFilter 节点并将它们连接到增益节点。不幸的是,我没有接近预期的结果。
到目前为止,我唯一的成功就是控制轨道音量的 gainNode。
任何帮助将不胜感激。
谢谢,斯坦
我将继续详细说明我对 idbehold 问题的回答:
我会说您可能想要使用类型为 5(峰值)的滤波器,它允许所有频率通过,并且仅在您设置相应 filter.frequency.value 的频率处放大/降低。这使您可以串联连接过滤器,因此您不需要单独的音频路径。您还可以考虑将低架滤波器用作第一个滤波器,将高架滤波器用作第三个滤波器,这在 3 频段均衡器中很常见。
如果您串联使用峰值滤波器,则不需要为每个频率设置单独的增益节点,只需为特定滤波器设置 filter.gain.value。
代码看起来像这样:
var lowshelf = context.createBiquadFilter(),
mid = context.createBiquadFilter(),
highshelf = context.createBiquadFilter();
//set the filter types (you could set all to 5, for a different result, feel free to experiment)
lowshelf.type = 3;
mid.type = 5;
highshelf.type = 4;
//connect 'em in order
yourInput.connect(lowshelf);
lowshelf.connect(mid);
mid.connect(highshelf);
highshelf.connect(yourOutput);
然后,您可以使用各自的 Q、频率和增益值调整每个频段(检查https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#BiquadFilterNode以查看哪些参数适用过滤器类型),例如:
lowshelf.gain.value = 0.6;
lowshelf.frequency.value = 300;
编辑:
要添加单独的增益,只需执行
var gainNode = context.createGainNode();
然后要么做
gainNode.connect(lowshelf); //pre EQ
或者
highshelf.connect(gainNode); //post EQ
取决于您是希望它在 EQ 之后还是在 EQ 之前。你通过做来控制收益
gainNode.gain.value = 0.6;