我正在学习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)。
提前感谢您的帮助!
答案 0 :(得分:1)
1)我的猜测是,并非均衡器"停止工作" - 您将均衡器的输出和连接到分析仪的输出(这是源的传递!)到目的地,它和&# #39;对它们求和 - 所以你有一个均衡的副本与非均衡副本相加,并且它大大减轻了均衡器的效果。修复很简单 - 不要将分析仪连接到目的地。 (它不需要连接到任何工作。)
2)我怀疑你是否采用了不太理想的均衡方式。您应该在SERIES中使用搁置滤波器和峰值滤波器(一个连接到另一个),而不是三个并联滤波器(汇总到一个节点)。如果您并行连接它们,您将获得奇数相位偏移效果。看看这里:Web audio API equalizer。