分析器节点振荡器上的坏数据

时间:2018-05-17 19:33:37

标签: javascript fft web-audio

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出了什么问题?

1 个答案:

答案 0 :(得分:0)

Bin号码不是频率。您需要使用编号2 * bin count * frequency / sampling rate检查bin,其中bin count = fft size / 2

@Raymond玩具,谢谢