我只是试图在此代码中读取1000Hz正弦波的FFT值。但是,控制台输出显示“-128” 1000次。为什么分析器节点不能在其中工作?

window.onload = init;
var sourceNode;

function init(){

var context = new AudioContext();
var osc = context.createOscillator();
var analyser = context.createAnalyser();
var gain = context.createGain();
sourceNode = context.createBufferSource();
var amplitudeArray = new Float32Array(analyser.frequencyBinCount);

osc.frequency.value=1000;
osc.start();


gain.gain.value=0.07;

osc.connect(analyser);
analyser.connect(gain);
gain.connect(context.destination);

analyser.getFloatFrequencyData(amplitudeArray);

for(var i=0;i<amplitudeArray.length;i++){
    console.log(amplitudeArray[i]);
}

}

最佳答案

您基本上是在振荡器启动时立即向分析仪询问FFT数据。此时,内部缓冲区充满零,因此输出为-128 dB。也就是说,一切都为零。

尝试等待一秒钟,然后再调用analyser.getFloatFrequencyData。您会看到输出不是常数-128。

关于javascript - Web Audio API Analyzer节点无法按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33110684/

10-11 03:16