let ctx = new AudioContext(),
analyser = ctx.createAnalyser(),
oscillator = ctx.createOscillator(),
data = new Float32Array(analyser.frequencyBinCount);
oscillator.connect(analyser);
oscillator.start();
setTimeout(()=>{
analyser.getFloatFrequencyData(data);
console.log(oscillator.frequency, data);
}, 1000);
默认情况下,振荡器产生440hz正弦波(oscillator.frequency
详细信息),但分析仪不会将其检测为主波。在我的情况下,大约440hz的值是-200db,但大约220hz是-180db,更响亮。
如何通过分析仪检测主频率?在我的情况下,我使用麦克风,但振荡器不起作用。 FFT出了什么问题?
答案 0 :(得分:0)
Bin号码不是频率。您需要使用编号2 * bin count * frequency / sampling rate
检查bin,其中bin count = fft size / 2
@Raymond玩具,谢谢