AVAudio обнаруживает ноту / высоту звука и т.д.iPhone XCode Objective-C - PullRequest
5 голосов
/ 02 октября 2011

Я делаю приложение на iphone, и мне нужен способ определения мелодии звуков, поступающих через микрофон.(То есть A #, G, C ♭ и т. Д.) Я предполагал, что буду использовать AVAudio, но я действительно не знаю, и я ничего не могу найти в документации ..

Любая помощь?

Ответы [ 3 ]

4 голосов
/ 02 октября 2011

Музыкальные ноты - не что иное, как определенные частоты звука.Вам понадобится способ проанализировать все частоты во входном сигнале, а затем найти способ изолировать отдельные ноты.

Нахождение частот в аудиосигнале выполняется с использованием быстрого преобразования Фурье (FFT) .В Интернете доступно множество исходных кодов для вычисления БПФ из аудиосигнала.В частности, oScope предлагает решение с открытым исходным кодом для iPhone.

Редактировать: Обнаружение высоты тона , кажется,быть техническим названием того, что вы пытаетесь сделать.Ответы на подобный вопрос здесь, на SO, могут быть полезны.

2 голосов
/ 02 октября 2011

В API iOS нет ничего встроенного для оценки музыкального тона.Вам нужно будет написать свою собственную функцию DSP.БПФ в Accelerate Framework предоставит вам информацию о спектральной частоте из выборочного сигнала PCM, но частота отличается от психо-перцептивной высоты.У меня есть длинный частичный список различных методов оценки на моей странице ресурсов DSP .

Вы можете посмотреть пример приложения Apple aurioTouch для получения аудиовхода устройства iOS и отображения его частотного спектра.

1 голос
/ 02 октября 2011

Как сказал @ e.James, вы ищете, чтобы найти ноту, которая называется Pitch Detection. В CCRMA, Стэнфордский университет, есть масса ресурсов для того, что вы ищете. Просто Google для Pitch Detection, и вы увидите блестящую коллекцию алгоритмов. Если вы хотите найти БПФ блоков аудиосэмплов, вы можете использовать встроенную функцию БПФ в Accelerate Framework (см. this и this ) или использовать Инструментарий MoMu . Преимущество использования MoMu состоит в том, что он позволяет вам разбивать аудиопоток на сэмплы и легко применять FFT, используя свои собственные функции.

...