【发布时间】:2013-06-14 23:54:48
【问题描述】:
我正在开发一种适用于 iOS 的数字音频工作站架构(主要是,但也尝试支持 OS X)。我正在慢慢浏览 Apple 的数英里文档和他们的框架参考。
我有 DSP 方面的经验,但 iOS 对我来说比较新,而且有很多对象、教程(即使是旧版本的 iOS)和具有不同 API 的不同框架。 我只想确保在开始时选择正确的选项,或两者的组合。
架构的目标是:
-
音轨样本访问(访问文件中的样本)
- iPod 库歌曲
- 本地文件歌曲
- 远程服务器上的歌曲
- 广播电台(无限长歌曲)
- 效果链(多个均衡器,或同时改变音高和速度)
- 多声道和混音(甚至环绕声)
-
便携性
- 至少 Mac OS X
- iOS 6+ 支持(不需要 iOS 5 或更低版本)
- 32 位浮点数 中的示例访问,非有符号整数。
- 简单的 Objective-C API(DSP 和处理当然是用 C++ 完成的)
-
录音、播放
- 录制到文件(可选择编解码器),或通过网络发送 (VoIP)
- 在不同的输出(在 Mac 上)或在 iOS 上的扬声器/耳机上播放
- 改变音量/静音
- 背景音频支持
-
实时样本处理
- 当前播放的任何歌曲的均衡器
- 实时样本处理
- 多线程
我希望我没有错过任何东西,但这些是最重要的目标。
我的研究
我已经浏览了大多数框架(虽然没有那么详细),这就是我的发现。 Apple 列出了以下在 iOS 上使用音频的框架:
- 媒体播放器框架
- AV 基础框架
- 音频工具箱框架
- 音频单元框架
- 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上的信息和教程很少,可以进行更专业的控制,例如录制,播放等。但Audio Units的信息和教程要多得多。
我的第一个问题: 究竟什么是音频队列服务,它们属于什么框架?
然后是最后一个问题:
应该使用哪个框架来实现大部分预期目标?
您甚至可以建议混合和匹配框架、类,但我请您解释一下您的答案以及您将使用哪些类来更详细地实现目标。我鼓励尽可能使用最高级别的 API,但要实现目标所需的最低级别。也欢迎使用示例代码链接。
非常感谢您的帮助。
【问题讨论】:
标签: ios audio signal-processing core-audio audiotoolbox