Подсчет гармоник в сэмпле музыки - PullRequest
6 голосов
/ 06 ноября 2011

Чтобы определить насыщенность звука, я бы хотел определить количество гармоник в сэмпле музыки.Для этого я использую Обработка с библиотекой Minim , которая дает мне полный спектр с FFT .Мне интересно, как подсчитать все пики в спектре, производимые FFT , меня даже не интересует основная частота.

1 Ответ

3 голосов
/ 06 ноября 2011

Есть много способов сделать это в зависимости от ваших потребностей.

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

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

...