我正在开发一种适用于 iOS 的数字音频工作站架构(主要是,但也尝试支持OS X) . 我将慢慢浏览Apple的数英里文档及其框架的参考资料 .
我有使用DSP的经验,但iOS对我来说更新,有很多对象,教程(即使是旧版本的iOS)和不同API的不同框架 . I would just like to make sure I choose the right one on start, or combination of those.
The goals of the architecture are:
-
Sound track sample access (访问文件中的示例)
-
iPod库歌曲
-
本地文件歌曲
-
远程服务器上的歌曲
-
电台(无限长歌)
-
Effect chaining (多个均衡器,或同时改变音高和速度)
-
Multiple channels and mixing (甚至环绕)
-
Portability
至少 -
Mac OS X.
-
iOS 6支持(不需要iOS 5或更低版本)
-
32-bit floats 中的示例访问,不是有符号整数 .
-
Easy Objective-C API (DSP当然在C中完成处理)
-
Recording, playing
-
记录到文件(按选择编解码器),或通过网络发送(VoIP)
-
在iOS上的不同输出(在Mac上)或扬声器/耳机上播放
-
更改音量/静音
-
背景音频支持
-
Real-time sample processing
-
当前播放的任何歌曲上的均衡器
-
实时样品操作
-
Multi-threading
我希望我没有错过任何东西,但那些是最重要的目标 .
My research
我已经浏览了大部分框架(虽然不是那么详细)但这就是我想到的 . Apple列出了以下在iOS上使用Audio的框架:
-
Media Player框架
-
AV基金会框架
-
Audio Toolbox框架
-
音频单元框架
-
OpenAL框架
Media Player和AV Foundation是太高级的API,不允许直接访问样本 . 另一侧的OpenAL无法录制音频 . 这样就留下了Audio Toolbox和Audio Unit框架 . 这里解释了许多不同之处:What's the difference between all these audio frameworks?
据我所知,Audio Toolbox将是最佳选择,因为目前不需要MIDI . 但是有关Audio Toolbox的信息和教程很少,可以进行更专业的控制,例如录音,播放等 . 但是音频单元还有很多 .
我的第一个问题: What exactly are Audio Queue Services and what framework they belong to?
然后是最后一个问题:
Which framework should be used to be able to achieve most of the desired goals?
您甚至可以建议混合和匹配框架,类,但我请您解释您的答案以及您将使用哪些类来更详细地实现目标 . 我鼓励尽可能使用最高级API,但实现目标所需的级别较低 . 也欢迎示例代码链接 .
非常感谢您的帮助 .
1 回答
Audio Units是最低级别的iOS音频API,以及构建音频队列的API . 音频单元将提供具有最低延迟的应用程序,因此最接近实时处理 . 它是一个C API,所以一个应用程序可能必须做一些自己的音频内存管理 .
AVFoundation框架可以使应用程序更容易访问音乐库资产 .
应用程序只能处理来自明确发布其音频数据的其他应用程序的声音,其中不包括音乐播放器应用程序,但包含一些使用Apple的Inter-App Audio API和第三方Audiobus API的应用程序 .