Web Audio API - 获取峰值和RMS计量值

时间:2015-07-16 12:02:28

标签: web-audio

我想从AudioNode生成准确的峰值和RMS信息。考虑到Tone.js中尽可能避免脚本处理器的智能程度,我很惊讶their volume meter 使用脚本处理器来计算RMS音量。

我认为必须能够翻译我多年来用于可靠计量的以下SuperCollider代码:

val sig   = In.ar("bus".ir, bus.numChannels)
val tr    = Impulse.kr(20)
val peak  = Peak.kr(sig, tr)
val rms   = A2K.kr(Lag.ar(sig.squared, 0.1))
SendReply.kr(tr, Flatten(Zip(peak, rms)), "/$meter")

那就是我需要一个可重置的running-max和一个平方输入的平滑滤波器。问题是,由于Web Audio API中现有的模块有限,我可能需要一些不存在的单样本延迟反馈循环。

也许我可以通过增益和BiQuad阶段实现RMS?有什么想法(也就性能而言)?任何想法如何获得最大运行(没有脚本处理器)?

1 个答案:

答案 0 :(得分:1)

您可以使用biquad获得近似RMS,但如果没有脚本处理器,则无法运行max。

相关问题