我期待实现模拟标准DJ混音器的3频段均衡器。使用网络音频API实现3频段均衡器
不幸的是我没有太多的运气。我知道它涉及到创建BiquadFilter节点并将它们连接到增益节点。不幸的是,我没有得到任何希望的结果。
我到目前为止唯一的成功只是gainNode来控制音轨的音量。
任何援助将不胜感激。
感谢, 斯坦
我期待实现模拟标准DJ混音器的3频段均衡器。使用网络音频API实现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,看看哪些PARAMS与滤波器类型的作品),例如调节各频段:
lowshelf.gain.value = 0.6;
lowshelf.frequency.value = 300;
编辑:
要添加一个独立的增益,只是做
var gainNode = context.createGainNode();
,然后要么做
gainNode.connect(lowshelf); //pre EQ
或
highshelf.connect(gainNode); //post EQ
取决于你是否希望它张贴或预先的EQ。您可通过执行
gainNode.gain.value = 0.6;
控制增益我有一个非常类似的问题在这里:创建10波段均衡器使用网络音频API(http://stackoverflow.com/questions/12738056/creating-a-10 -band-equalizer-using-web-audio-api) – idbehold
看起来答案并没有真正讨论如何定义滤波器并将它们与增益节点连接起来。 – stan229