Количество гармоник в музыкальном образце

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


person LaurentC    schedule 06.11.2011    source источник


Ответы (1)


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

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

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

person Adam Zalcman    schedule 06.11.2011