我只是试图在此代码中读取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/