Анализатор неверных данных на осцилляторе - PullRequest
0 голосов

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);

Осциллятор по умолчанию генерирует синусоидальный сигнал 440 Гц (детали oscillator.frequency), но анализатор не определяет его как основную волну.В моем случае значения около 440 Гц - это -200 дБ, а около 220 Гц - это -180 дБ, что громче.

Как определить основную частоту с помощью анализатора?В моем случае я использовал микрофон, но генератор не работает.Что не так с FFT?

1 Ответ

0 голосов

Номер корзины не является частотой. Вам нужно проверить бен с номером 2 * bin count * frequency / sampling rate, где bin count = fft size / 2

@ Игрушка Раймонда, спасибо

...