我有一个音频应用程序,其中所有声音生成工作都是通过纯数据(使用 libpd)完成的。
我用 swift 编写了一个特殊的音序器,它控制多个序列的开始/停止播放,由合成引擎在纯数据中播放。
直到现在,我已经完全避免在我的应用程序的任何方面使用 Core Audio 或 AVFoundation,因为我对它们一无所知,而且它们似乎都需要 C 或 Objective C 编码,而我对此几乎一无所知。
但是,我从之前的问答中得知,我需要使用 Core Audio 或 AVFoundation 来获得准确的时序。没有它,我已经尝试了所有其他方法,但时间完全搞砸了(滞后、紧张)。
所有关于 Core Audio 的教程和书籍对我来说似乎都非常广泛和深入。如果我只需要这些框架之一为我的音序器提供准确的计时,作为一个对 Core Audio 和 Objective-C 完全陌生但拥有 95% 完成音频应用程序的人,你如何建议我实现这一点?
最佳答案
如果您的音序器是依赖于被及时调用以推送音频的 Swift 代码,则它无法以良好的计时精度工作。例如您无法获得所需的时间。
Core Audio 使用实时拉取模型(不包括任何有趣的复杂性的 Swift 代码)。 AVFoundation 可能需要您提前创建音频并安排缓冲区。对于这两种解决方案中的一种,iOS 应用程序需要几乎从头开始设计。
补充:如果您现有的代码可以提前一点生成音频样本,足以从统计上覆盖使用抖动的操作系统计时器,您可以安排这个预先生成的输出在几毫秒后播放(例如,当在正确的采样时间)。
关于swift - 如何为我的音频应用程序获得可靠的计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50163515/