基于iOS的数字音频工作站体系结构

基于iOS的数字音频工作站体系结构,ios,audio,signal-processing,core-audio,audiotoolbox,Ios,Audio,Signal Processing,Core Audio,Audiotoolbox,我正在为数字音频工作站开发一种体系结构,它可以在iOS上运行(主要是,但也尝试支持OSX)。我正在慢慢地浏览苹果公司数英里的文档和他们框架的参考资料 我有使用DSP的经验,但iOS对我来说更为陌生,有太多的对象、教程(即使是较旧版本的iOS)和具有不同API的不同框架我只想确保我在开始时选择了正确的一个,或者这些选项的组合。 体系结构的目标是: 音轨样本访问(访问文件中的样本) iPod图书馆歌曲 本地文件歌曲 远程服务器上的歌曲 广播电台(无限长歌曲) 效果链接(多个均衡器,或同时改变音

我正在为数字音频工作站开发一种体系结构,它可以在iOS上运行(主要是,但也尝试支持OSX)。我正在慢慢地浏览苹果公司数英里的文档和他们框架的参考资料

我有使用DSP的经验,但iOS对我来说更为陌生,有太多的对象、教程(即使是较旧版本的iOS)和具有不同API的不同框架我只想确保我在开始时选择了正确的一个,或者这些选项的组合。

体系结构的目标是:

  • 音轨样本访问(访问文件中的样本)
    • iPod图书馆歌曲
    • 本地文件歌曲
    • 远程服务器上的歌曲
    • 广播电台(无限长歌曲)
  • 效果链接(多个均衡器,或同时改变音高和节奏)
  • 多声道和混音(均匀环绕)
  • 可移植性
    • 至少是MacOSX
    • iOS 6+支持(不需要iOS 5或更低版本)
    • 32位浮点中的样本访问,而不是有符号整数
  • 强>易Objul-C API <强>(DSP和C++课程中的处理)
  • 录制、播放
    • 录制到文件(可选择编解码器)或通过网络发送(VoIP)
    • 使用不同的输出(Mac)或iOS上的扬声器/耳机播放
    • 更改音量/静音
    • 后台音频支持
  • 实时样本处理
    • 当前播放的任何歌曲的均衡器
    • 实时样本处理
  • 多线程
我希望我没有错过任何东西,但这些是最重要的目标

我的研究

我已经浏览了大多数框架(虽然没有太多细节),下面是我所了解到的。苹果列出了以下在iOS上使用音频的框架:

  • 媒体播放器框架
  • A.AV基础框架
  • 音频工具箱框架
  • 音频单元框架
  • 开放式框架

媒体播放器和AV基础太高级API,不允许直接采样访问。另一侧的OpenAL无法录制音频。这样就剩下了音频工具箱和音频单元框架。这里解释了许多差异:

据我所知,音频工具箱将是一条出路,因为目前不需要MIDI。但关于音频工具箱的信息和教程很少,用于更专业的控制,如录音、播放等。尽管如此,关于音频单元的信息和教程还有很多

我的第一个问题:音频队列服务到底是什么,它们属于什么框架?

最后一个问题是:

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

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


非常感谢您的帮助。

音频单元是最低级别的iOS音频API,也是构建音频队列的API。音频单元将提供延迟最低的应用程序,因此最接近实时处理。不过,它是一个C API,因此应用程序可能需要自己进行一些音频内存管理

AVFoundation框架可以为应用程序提供更方便的音乐库资源访问


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

音频单元是最低级别的iOS音频API,是音频队列构建的API。音频单元将提供延迟最低的应用程序,因此最接近实时处理。不过,它是一个C API,因此应用程序可能需要自己进行一些音频内存管理

AVFoundation框架可以为应用程序提供更方便的音乐库资源访问


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

那么,使用音乐播放器应用程序是否可以访问文件?那么,使用音乐播放器应用程序,有可能拿到文件吗?