无法将 createAnalyser() 和 createGain() 连接到 audioContext()

Cannot connect createAnalyser() and createGain() to audioContext()

本文关键字:连接 audioContext createGain createAnalyser      更新时间:2023-09-26

我正在学习WebAudio API,并通过构建带有可视化器和均衡器的简单音频播放器进行实验。

可视化器和均衡器都可以独立工作,但是当我将它们连接到 AudioContext 时,均衡器停止工作。

下面是一些代码...

均衡器

var sum = APP.audioContext.createGain();
APP.lGain.connect(sum);
APP.mGain.connect(sum);
APP.hGain.connect(sum);
sum.connect(APP.audioContext.destination);

和可视化师

APP.analyser = APP.audioContext.createAnalyser();
APP.source.connect(APP.analyser);
APP.analyser.connect(APP.audioContext.destination);

如果我APP.analyser.connect(APP.audioContext.destination);删除最后一行,那么均衡器就可以工作了,但随后我的可视化器显然坏了。

这在Firefox中工作正常,但在Chrome(osx)中则不行。

提前感谢任何帮助!

1)我的猜测是,不是均衡器"停止工作" - 而是您将均衡器的输出和分析器的输出(这是源的直通!)连接到目的地,并且它正在对它们求和 - 所以你有一个均衡副本和一个非均衡副本,它大大减少了均衡器的影响。 解决方法很简单 - 不要将分析器连接到目标。 (它不需要连接到任何东西即可工作。

2)我怀疑你正在使用一种不太理想的均衡方式。 您应该在SERIES中使用搁架滤波器和峰值滤波器(一个连接到另一个到另一个),而不是并行使用三个滤波器(总和到一个节点)。 如果将它们并联连接,您将获得奇怪的相位偏移效果。 看看这里: 网络音频 API 均衡器。