首页 > 解决方案 > 如何为我的音频应用程序获得可靠的时序?

问题描述

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

我用 swift 编写了一个特殊的音序器,它控制多个序列的开始/停止播放,由合成引擎以纯数据形式播放。

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

但是,我在这里之前的问答中被告知,我需要使用 Core Audio 或 AVFoundation 来获得准确的时间。没有它,我已经尝试了其他所有方法,而且时间完全混乱(迟钝,紧张)。

所有关于 Core Audio 的教程和书籍对我来说似乎都非常广泛和深入。如果我需要从其中一个框架中获得的只是我的音序器的准确时序,那么作为一个完全是 Core Audio 和 Objective-C 的新手,但拥有 95% 完成的音频应用程序的人,你如何建议我实现这一点?

标签: swiftaudioavfoundationcore-audiolibpd

解决方案


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

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

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


推荐阅读