过滤音频信号,然后在不将其发送给主设备的情况下读取仪表
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/.
我正在尝试过滤信号,然后使用 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/.