Вы ожидаете не то, что нужно !!
Не вина библиотеки
Независимо от того, производит ли библиотека это должным образом или нет, вы ищете образец, который редко существует в реальных звуках. Только совершенная синусоидальная волна, генерируемая электронным способом, вызовет даже частичное дискретное появление «всплеска» частоты. граф. Если вы не верите этому, попробуйте запустить визуализацию «анализатора спектра» в Winamp или медиаплеере. Это не столько вина ПК.
Настоящие звуковые волны - сложные животные
Представьте себе пилообразную или квадратную волну в своем воображении. эти резкие повороты - углы или точки на волне похожи на тонны высших гармоник для БПФ или даже настоящего фурье. И если вы когда-либо видели настоящую «квадратную волну / пилообразную волну» на прицеле или даже «синусоидальную волну», создаваемую инструментом, который должен производить синусоидальную волну, взгляните на все острые укромные уголки и щели всего лишь ОДНА заметка (если у вас нет прицела, просто увеличьте масштаб волны наглости - чем больше вы увеличиваете, тем выше ноты, на которые вы смотрите). Да, все эти отклонения считаются частотами.
Трудно определить разницу между одной нотой и целым оркестром, иногда в спектральном анализе.
Но я слышу отдельные заметки!
Так как ухо это делает? Он рассматривает всю форму волны. Тогда ваш нижний мозг лжет вашему верхнему мозгу о том, что вводит: одна нота, а не беспорядок обертонов.
Вы не можете сделать это в полной мере, но вы можете приблизить это с помощью «обучения».
Приближение: здание некоторые смарт
ИГРАТЬ ноту на инструменте и «сохранить» график частоты. Сделайте это для заметок в нескольких частотных диапазонах или, что еще лучше, для всех заметок.
Затем интерполируйте ноты, чтобы заполнить пробелы (с шагом 1/2 или 1/4), умножив сохраненные графики для этого инструмента на 2 ^ (1/12) (или 1/24 для шагов 1/4 и т. Д. ).
Выясните, как хранить их в быстро доступной структуре данных, такой как BST или Trie. Только это должно было бы вернуть оценку «насколько близко это». Он также должен был бы идентифицировать совпадение по пропорциям частот, в случае если бы он имел разные объемы.
Использование смартов
В следующий раз, когда вы ищете ноту от этого инструмента, просто возьмите «услышанный» график частот и найдите его в этой структуре данных. Вы можете записать несколько инструментов, которые создают различные формы волны, и искать их тоже. Если есть фоновые звуки или несколько нот, возьмите ближайшее совпадение. Затем, если вы хотите определить другие ноты, «вычтите» найденную частотную комбинацию из выборочной и промойте, затем повторите.
Твой голос не сработает ...
Если вы когда-нибудь пытались настроить себя, поя в гитарный тюнер, вы будете знать, что тюнеры не такие умные. Конечно, некоторые инструменты (voice esp) действительно плавают вокруг поля и генерируют постоянно развивающуюся форму волны (даже без пения).
Чего вы пытаетесь достичь?
Вам не нужно было бы полностью получать эту фантазию для «простого» приложения тюнера, но если вы не делаете их просто для другого приложения тюнера, я предполагаю, что вы действительно хотите идентифицировать ноты (например, возможно, вы хотите автоматически сгенерировать) миди файлы из песен на радио; -)
Удачи. Я надеюсь, что вы найдете библиотеку, которая делает весь этот мусор вместо того, чтобы кататься самостоятельно.
Редактировать 2017
Обратите внимание на эту веб-страницу: http://www.feilding.net/sfuad/musi3012-01/html/lectures/015_instruments_II.htm
Хорошо вниз по странице, есть спектральный анализ различных труб органа. Есть много, много обертонов. Их можно обнаружить - при достаточном количестве работы - если вы сначала «обучаете» свое приложение с ними (точно так же, как рассказываете ребенку: «Вот как звучит кларнет» ...)