Обнаружение шага БПФ для гитарной струны
У меня просто определение высоты тона. Входные (микрофонные) данные передаются в процедуру fft, затем я ищу шаг с максимальным значением. Это означает:
Max(pow(data[i].getRe(), 2) + pow(data[i].getIm(), 2)) for 0<= i < SAmplesSize
Мне это нужно для определения основной частоты гитарной струны. Это работает хорошо для частоты 440 Гц (и, возможно, выше, я не проверял это) до 250 Гц. Ниже этого значения обнаруженная частота в два раза выше, чем должна быть, т.е. для 195 Гц обнаруженная частота составляет около 380 Гц. Похоже, что он обнаруживает высшие гармоники ниже 250 Гц. Для чистого тона 195 Гц он распознается отлично, но для струн кита-то что-то не так.
Любое предложение, что может вызвать это? Или я должен использовать более сложное определение высоты тона?
Ps. частота дискретизации: 8000 Гц, размер входных данных: 1024
1 ответ
Я не знаю конкретно о гитарах, но отсутствующие основы, кажется, довольно распространены в акустике. Страница Википедии об обнаружении основного тона ссылается на вторичные этапы обработки после БПФ, возможно, один из них будет полезен.
Также посмотрите эти два SO вопроса, много полезной информации: (1), (2).