繁体   English   中英

如何在iOS中使用aubio框架?

[英]How to use aubio framework in iOS?

我试图在iOS中检测音频文件的节拍,音调,起始和快速傅里叶变换(FFT),我发现aubio提供了这些功能,并且iOS框架也可用。

到目前为止,我正在使用The Amazing Audio Engine接收Core AudioAudioBufferList音频数据,如下所示:

id<AEAudioReceiver> receiver = [AEBlockAudioReceiver audioReceiverWithBlock:
                               ^(void                     *source,
                                 const AudioTimeStamp     *time,
                                 UInt32                    frames,
                                 AudioBufferList          *audio) {
    // I don't know how to use audio library.
}];

我可以使用此AudioBufferList aubio来检测节拍,音调,起始和快速傅里叶变换(FFT)以及如何? 如果我走错了路,请给我任何建议?

看看aubio下载页面,我相信他们已经将它编译成iOS框架,你可以直接导入你的Xcode。

参考: http//aubio.org/download#ios

下载页面中有一个与iOS一起使用的编译框架。

您可以将库拖放到项目中,确保您还拥有以下框架:

  • Accelerate.framework
  • AudioToolbox.framework

现在,如果您下载Aubio的源代码,您将拥有一个示例文件夹。 在那里,你会找到用C语言编写的用于检测节拍,音调,起始(也有FFT)的代码,由于ObjC是C的超集,因此它也适用于你的项目。

我的解决方案是将音频缓冲区写入文件,然后将文件发送到aubio。 每当你得到一个新的音频缓冲区时,你可以附加到文件中(如果你想分析到目前为止的全部内容),或者只是覆盖你是否只对增量片段感兴趣。

更新所以看起来Aocoa的Cocoa Pod不是最新的,在我的Podfile中,我使用这段代码将Aubio添加到我的Xcode工作区:

pod 'aubio-iOS-SDK', '~> 0.4'

这将安装Aubio 0.4.1,这不是最新的。 总的来说,查找Aubio的文档是一个模糊的过程,您可以将多个互联网搜索结果拼凑成一个工作解决方案。

对于iOS来说,它更加模糊,如果你去Aubio下载页面你会发现iOS版本0.4.2,滚动到底部,这是比Aubio Cocoa Pod更高版本。 然而, 在这里 ,我在评论中发现了一个后来的iOS Aubio模块,0.4.3,这里可以直接下载到最新的Aubio for iOS:

https://aubio.org/bin/tmp/aubio-0.4.3~const.iosuniversal_framework.zip

如果你使用我原来的答案中提到的Swift,你仍然需要一个对aubio.h的桥接头引用

原始答案 aubio有CocoaPod,可以很容易地引用Swift中的aubio库。 这是iOS的Aubio CocoaPod:

https://cocoapods.org/pods/aubio-iOS-SDK

安装完成后,请注意,在Swift中,您不会写:

import aubio 

在Swift文件的顶部。

您需要确保添加一个目标C桥接头以将aubio C库公开给Swift,在您编写以下内容的桥接头中:

#import <aubio/aubio.h>

现在,Swift可以访问aubio库/框架。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM