【发布时间】:2018-10-28 04:25:41
【问题描述】:
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 有什么问题?
【问题讨论】:
-
在采样率为 44.1 kHz 的机器上运行您的 sn-p。相关的分析器输出为:“20”:-28.359,“21”:-28.948。 Bin 20 对应于大约 430 Hz 的频率。 Bin 21 为 452 赫兹。这是合理的,默认 FFT 大小为 2048,其中每个 bin 的宽度约为 21 Hz。
-
@RaymondToy,如何计算 bin 数量?
标签: javascript fft web-audio-api