首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Web Audio API实现3频带均衡器

使用Web Audio API实现3频带均衡器
EN

Stack Overflow用户
提问于 2012-12-10 10:44:05
回答 1查看 2.4K关注 0票数 1

我希望实现一个3波段均衡器模仿一个标准的DJ混音器。

不幸的是,我没有太多的运气。我知道这涉及到创建BiquadFilter节点并将它们连接到gain节点。不幸的是,我没有得到任何想要的结果。

到目前为止,我唯一成功的就是用gainNode来控制音量。

任何帮助都将不胜感激。

谢谢,斯坦

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-10 16:42:58

我将继续详细说明我对idbehold的问题的回答:

我想说的是,您可能希望使用类型5(峰值)的滤波器,它允许所有频率通过,并且仅以您设置的相应filter.frequency.value的频率放大/降低。这让你可以串联过滤器,这样你就不需要单独的音频路径。您还可以考虑使用低架滤波器作为第一个滤波器,使用高架滤波器作为第三个滤波器,这在3波段均衡器中相当常见。

如果你使用串联的峰值滤波器,你不需要为每个频率单独的增益节点,你只需要为特定的滤波器设置filter.gain.value。

代码将如下所示:

代码语言:javascript
运行
复制
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以了解哪些参数适用于哪种滤波器类型),例如:

代码语言:javascript
运行
复制
 lowshelf.gain.value = 0.6;
 lowshelf.frequency.value = 300;

编辑

要添加单独的增益,只需执行以下操作

代码语言:javascript
运行
复制
  var gainNode = context.createGainNode();

然后要么这样做

代码语言:javascript
运行
复制
gainNode.connect(lowshelf); //pre EQ

代码语言:javascript
运行
复制
highshelf.connect(gainNode); //post EQ

这取决于你是想在情商后还是在情商前。你通过做什么来控制收益

代码语言:javascript
运行
复制
gainNode.gain.value = 0.6;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13794284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档