如何使用remoteIO核心音频最佳地构建程序

时间:2012-12-21 15:46:45

标签: objective-c ios xcode core-audio

我正在编写一个有两个视图控制器的程序。一个视图控制器配置通过remoteIO audioUnit播放的声音。另一个视图控制器从麦克风接收音频,处理该音频并显示与从麦克风接收的声音有关的信息。两个视图控制器都需要使用相同的音频图。我使用了Apple的AurioTouch2示例来指导我的代码,但该程序将大部分代码放在应用程序委托(以及帮助程序类)中,包括设置音频图和传入和传出音频的回调。这似乎在应用程序委托中放入了比必要更多的代码。构建我的应用程序的最佳实践是什么?音频单元应该放在哪里?回调应该在哪里发送音频到音频单元?回调应该在哪里接收音频?

1 个答案:

答案 0 :(得分:1)

由于iOS应用程序只能使用一个RemoteIO音频单元,因此单个控制器对象可能是集中定位与该音频单元相关的所有代码的好地方。 app delegate加上可能的帮助对象或类的组合可以作为小型简单应用程序中这个单例控制器的代理。但在较大的应用程序中,使用单独的音频控制器类可能更好。某种Model类可能适合封装任何音频状态数据(波形数据等)

对音频控制器对象或数据模型对象的引用可以传递给需要控制或访问音频的任何其他视图控制器。这将适合组合光(UIViews)和声音(音频单元)的MVC模式。

请注意,Audio Unit API是一个C API,因此也可以使用全局可见的C子例程和状态(例如,某些.c文件与任何类无关)。