如何获得音频应用程序的可靠时序?

Pla*_*erb 3 audio core-audio avfoundation libpd swift

我有一个音频应用程序,其中所有声音生成工作都是通过纯数据(使用libpd)完成的。

我已经快速编写了一个特殊的音序器,该音序器控制合成引擎在纯数据中播放的多个音序的开始/停止播放。

到目前为止,我完全避免在应用程序的任何方面使用Core Audio或AVFoundation,因为我对它们一无所知,而且它们似乎都需要C或Objective C编码,而我对此一无所知。

但是,从之前的问答中已经得知,我需要使用Core Audio或AVFoundation来获得准确的时间。没有它,我已经尝试了其他所有方法,并且时间完全混乱了(漫长,抖动)。

对我而言,关于Core Audio的所有教程和书籍似乎都极为广泛和深入。如果我从这些框架之一中需要的只是我的音序器的准确时序,那么您如何建议我成为Core Audio和Objective-C的新手,但拥有95%完成的音频应用程序?

hot*_*aw2 5

如果您的音序器是依赖于即时调用来推送音频的Swift代码,那么它将无法以良好的时序精度运行。例如,您无法获得所需的时间。

Core Audio使用实时拉模型(不包括任何有趣的Swift代码)。AVFoundation可能需要您提前创建音频并安排缓冲区。这两种解决方案之一几乎都需要从头开始设计iOS应用。

补充:如果您现有的代码可以提前一点来生成音频样本,足以使用抖动的OS计时器进行统计覆盖,则可以将此预生成的输出安排在几毫秒后播放(例如,在正确的采样时间提取) )。