【问题标题】:Cannot connect createAnalyser() and createGain() to audioContext()无法将 createAnalyser() 和 createGain() 连接到 audioContext()
【发布时间】:2016-04-25 01:18:16
【问题描述】:

我正在学习 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) 中却不行。

提前感谢您的帮助!

【问题讨论】:

  • 我认为您可以使用sum.connect(APP.analyser) 并将分析仪连接到audioContext.destination
  • 感谢@DavidDomain。刚刚尝试过,不幸的是没有运气

标签: javascript web-audio-api


【解决方案1】:

1) 我的猜测是均衡器不是“停止工作”——而是你正在连接均衡器的输出分析器的输出(这是一个通过-通过源!)到目的地,并将它们相加 - 所以你有一个均衡的副本和一个非均衡的副本相加,它大大降低了均衡器的效果。解决方法很简单——不要将分析仪连接到目的地。 (它不需要连接到任何东西就可以工作。)

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

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2020-11-22
    • 2017-03-24
    • 2018-08-19
    • 2019-05-10
    • 2018-08-01
    相关资源
    最近更新 更多