Как использовать фреймворк aubio в iOS?
Я пытаюсь обнаружить биение, высоту звука, начало и быстрое преобразование Фурье (FFT) аудиофайла в iOS, и я обнаружил, что aubio предоставляет эти функции, и iOS Framework также доступен.
До сих пор я использую http://theamazingaudioengine.com/ для получения аудиоданных с точки зрения Core Audio
"s AudioBufferList
как это:
id<AEAudioReceiver> receiver = [AEBlockAudioReceiver audioReceiverWithBlock:
^(void *source,
const AudioTimeStamp *time,
UInt32 frames,
AudioBufferList *audio) {
// I don't know how to use audio library.
}];
Могу ли я обнаружить биение, высоту тона, начало и быстрое преобразование Фурье (FFT), используя aubio из этого AudioBufferList
и как? Если я на неправильном пути, пожалуйста, дайте мне какие-либо предложения?
4 ответа
Посмотрите на страницу загрузки aubio, я думаю, что они скомпилировали ее в платформу для iOS, и вы можете импортировать ее в свой Xcode напрямую.
Ссылка: http://aubio.org/download
На странице загрузки есть скомпилированный фреймворк для использования с iOS.
После того, как вы перетащили библиотеку в свой проект, убедитесь, что у вас также есть следующие фреймворки:
- Accelerate.framework
- AudioToolbox.framework
Теперь, если вы загрузите исходный код Aubio, у вас будет папка примеров. Там вы найдете код для определения удара, высоты тона, начала (есть также БПФ), написанный на C, который, поскольку ObjC является надмножеством C, также будет работать в вашем проекте.
Мое решение для этого было записать аудио буфер в файл, а затем отправить файл в aubio. Всякий раз, когда вы получаете новый буфер аудио, вы можете либо добавить его в файл (если вы хотите проанализировать все это до сих пор), либо просто перезаписать, если вас интересует только добавочная часть.
ОБНОВЛЕНИЕ Итак, похоже, что Cocoa Pod для Aubio не самый последний, в моем Podfile я использую этот код для добавления Aubio в свою рабочую область Xcode:
pod 'aubio-iOS-SDK', '~> 0.4'
Это устанавливает Aubio 0.4.1, и это не последний. В общем, поиск документации для Aubio - это немного непонятный процесс, когда вы объединяете несколько результатов поиска в Интернете вместе в рабочее решение.
Для iOS это еще более непонятно, если вы перейдете на страницу загрузок Aubio, вы найдете версию 0.4.2 для iOS, прокрутите вниз, то есть более позднюю версию, чем Aubio Cocoa Pod. И все же, здесь, в комментариях я обнаружил более поздний модуль iOS Aubio, 0.4.3, вот прямая загрузка того, что может быть последним Aubio для iOS:
https://aubio.org/bin/tmp/aubio-0.4.3~const.iosuniversal_framework.zip
Вам все еще нужна ссылка на заголовок моста на aubio.h, если вы используете Swift, как я уже упоминал в моем первоначальном ответе
ОРИГИНАЛЬНЫЙ ОТВЕТ Существует a CocioPod для aubio, который действительно упрощает ссылки на библиотеки aubio в Swift. Вот Aubio CocoaPod из iOS:
https://cocoapods.org/pods/aubio-iOS-SDK
После установки обратите внимание, что в Swift вы НЕ будете писать:
import aubio
в верхней части вашего файла Swift.
Вы должны убедиться, что вы добавили целевой заголовок C-моста, чтобы выставить библиотеку aubio C в Swift, в этом заголовке моста вы напишите следующее:
#import <aubio/aubio.h>
Теперь у Swift будет доступ к библиотеке / фреймворку aubio.