Как определить частоты играющих струн?

Народ, может кто-то объяснить как получить частоту звучащей ноты? А если не одной? Я изначально знаю какие ноты должны быть сыграны, и по сути мне нужно сравнить звучащую ноту с исходной, я +- разобрался в FFT, ну у меня есть рабочий алгоритм(хоть я и не понимаю детально как он работает), в получившемся массиве комплексных чисел как рассчитать частоту ноты, но самое главное как рассчитать нескольких нот? предположим я сыграл аккорд, я знаю частоты этих нот по отдельности из таблиц, но как их получить математически, для проверки?
  • Вопрос задан
  • 668 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
После БПФ получаете комплексный массив, где каждый элемент - амплитуда определенной частоты.
Частота по сути - это индекс массива.
Но в элементе может быть не одна частота - количество частот в элементе массива зависит от частоты дискретизации сигнала и от длины БПФ: freq_length = sampling_rate / fft_length;
Если sampling_rate == fft_length, то в элементе массива единственная частота.
freq_length - разрешение элемента массива по частоте.
Анализировать можно только половину массива (см. про частоту Найквиста), остальные отсчеты - это сопряжение первой половины. Соответственно реально получить частоты до sampling_rate / 2 - 1.
В вашем случае, видимо, нужно найти энергетический спектр: сложить квадраты действительной и мнимой частей всех частот. Найти максимумы - это и будут ваши частоты аккорда - лучше построить график и посмотреть визуально, что получится.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@s_panfilov
dspace.nbuv.gov.ua/bitstream/handle/123456789/6025...
В статье описан алгоритм определениия высоты ноты. Там проверяется не значение конкретного коэф-та в спектре, а суммарная амплитута в полосе (полосы определены по музыкально темперированной шкале - по нотам).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы