Есть ли кроме FFT способы реализации Guitar Tuner? - PullRequest
0 голосов
/ 23 октября 2018

Я хочу сделать точный гитарный тюнер, это обычно делают многие с помощью вычисления БПФ и получения пика.Но это низкое применение по нескольким причинам:

  • Дискретная точность дает недостаточное разрешение для настройки бас-гитары.
  • Высокое время и сложность вычислений при попытке увеличить размер буфера (и/ или частота дискретизации).Вводит видимую задержку (задержку).
  • Большая часть частотного диапазона, где концентрируется вся точность БПФ, не используется.Все, что выше 1-2 кГц, не подходит для настройки музыкальных инструментов.

Должен быть более простой способ для сигналов, которые имеют одночастотную синусоидальную форму.Учитывая достаточно маленький буфер (скажем, 256 сэмплов с частотой дискретизации 96 кГц) - как вы можете измерить базовую (малую) частоту?

Простыми словами: как найти частоту F, так что разница " синусоидальный сигнал с частотой F "и" фактически записанный сигнал"даст минимальная ошибка , чем для любой частоты, отличной от F?(Таким образом, мы можем однозначно сделать вывод, что синусоида частоты F является наилучшим приближением записанного звукового буфера).

PS.Что угодно, но не используя БПФ!

1 Ответ

0 голосов
/ 02 декабря 2018

Вот простой подход, основанный на пересечении нуля.Он основан на возможности отобразить сигнал прибора на простой синусоиде.Это может работать нормально, когда отношение сигнал / шум высокое, но это не очень надежный метод.

  • Полосовой фильтр вокруг основной частоты тона, для которого вы хотите настроиться.Пример 82,41 Гц для струны с низкой E на гитаре.
  • Рассмотрим окно из последних N сэмплов.Установите значение ex 100 мс для обновления оценки основного тона 10 раз в секунду.
  • Выполните обнаружение пересечения нуля с пороговым значением T. Например, T можно установить равным 10% пикового сигнала.Посчитайте периоды между каждым пересечением нуля, соберите их в массив.
  • Возьмите медиану периодов, чтобы получить оценку основного тона

Вы также можете вычислить квантили периодов дляоцените, насколько надежен метод.Если они дают очень отличающиеся числа от медианы, то метод работает не очень хорошо.

Подход может быть расширен путем вычисления автокорреляции на пересечениях нуля, как описано в https://www.cycfi.com/2018/03/fast-and-efficient-pitch-detection-bitstream-autocorrelation/

...