过滤音频信号,然后在不将其发送给主设备的情况下读取仪表

Filtering an audio signal and then reading the meter without sending it to master

我正在尝试过滤信号,然后使用 Tone.js / Web-Audio API.

分析过滤信号的值

我希望得到过滤信号的值,但我只得到-Infinity,这意味着我的节点之间的连接是错误的。我做了一个小的 fiddle 演示,但是在我的用例中我不想将这个节点发送到上下文的目的地 - 我只想分析它,而不是听它。

osc.connect(filter)
filter.connect(gainNode)
gainNode.connect(meter)
console.log(meter.getLevel())

经过一些挖掘,我发现我需要一个 scriptProcessorNode - which is apparently no longer recommended - so looking into Audio Worklet Nodes

我猜您测试了 Chrome 中的代码,因为 Chrome 存在问题,导致它在连接到目标之前无法处理任何内容。当使用 Tone.js 时,这意味着您需要在链的末尾调用 .toMaster()。我更新了你 fiddle 使其工作:https://jsfiddle.net/8f7abzoL/.

在 Firefox 中调用 .toMaster() 是不必要的,因此以下在 Firefox 中也适用:https://jsfiddle.net/yrjgfdtz/.