iOS上的数字音频工作站架构

时间:2013-06-18 16:42:43

标签: ios audio signal-processing core-audio audiotoolbox

我正在开发一种适用于 iOS 的数字音频工作站架构(主要是,但也试图支持OS X )。我将慢慢浏览Apple提供的数英里文档及其框架的参考资料。

我有使用DSP的经验,但iOS对我来说更新,有很多对象,教程(即使是旧版本的iOS)和不同API的不同框架。 我想确保在开始时选择正确的,或者组合。

该架构的目标是:

  • 音轨样本访问(访问文件中的示例)
    • iPod库歌曲
    • 本地文件歌曲
    • 远程服务器上的歌曲
    • 电台(无限长歌)
  • 效果链(多个均衡器,或音高和速度同时变化)
  • 多个渠道和混合(甚至环绕)
  • 可移植性
    • Mac OS X至少
    • iOS 6+支持(不需要iOS 5或更低版本)
    • 32位浮点数中的示例访问权限,而非有符号整数。
  • 简易Objective-C API (当然,用C ++完成DSP和处理)
  • 录制,播放
    • 记录到文件(按选择编解码器),或通过网络发送(VoIP)
    • 在iOS上的不同输出(在Mac上)或扬声器/耳机上播放
    • 更改音量/静音
    • 背景音频支持
  • 实时样本处理
    • 当前播放的任何歌曲上的均衡器
    • 实时样本操作
  • 多线程

我希望我没有错过任何内容,但这些是最重要的目标。

我的研究

我查看了大部分框架(虽然没有详细说明),这就是我想到的。 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的信息和教程很少,可以进行更专业的控制,例如录音,播放等。但音频单元还有很多。

我的第一个问题: 音频队列服务究竟是什么以及它们属于哪个框架?

然后是最后一个问题:

应该使用哪个框架来实现大多数预期目标?

您甚至可以建议混合和匹配框架,类,但我请您解释您的答案以及您将使用哪些课程来更详细地实现目标。我鼓励尽可能使用最高级API,但实现目标所需的级别较低。也欢迎示例代码链接。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:4)

Audio Units是最低级别的iOS音频API,以及构建音频队列的API。音频单元将提供具有最低延迟的应用程序,因此最接近实时处理。它是一个C API,因此应用程序可能必须执行一些自己的音频内存管理。

AVFoundation框架可以让应用程序更容易访问音乐库资产。

应用程序只能处理来自其他明确发布音频数据的应用程序的声音,这些应用程序不包括音乐播放器应用程序,但包含一些使用Apple的Inter-App Audio API和第三方Audiobus API的应用程序。