swift - 如何为我的音频应用程序获得可靠的计时?

标签 swift audio avfoundation core-audio libpd

我有一个音频应用程序,其中所有声音生成工作都是通过纯数据(使用 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/

相关文章:

regex - Swift中字符串中子字符串的出现次数

ios - 为什么 NSDecimalNumber.notANumber.intValue 返回 9?

android - 如何在一个 Activity 中停止音乐并在下一个 Activity 中开始另一音乐?

ios - 即使打开闪光灯,AVCaptureOutput 也会拍出黑暗的照片

ios - SKVideoNode 仅在节点或相机移动时在 SCNScene 中渲染

swift - 如何从 CLLocationManager 更新创建 Observable

ios - objective-c 和 swift 中 NSDate 的大小是多少

swift - 计算 NSSound 循环的次数(Swift)

iphone - iOS 5 中的规范音频样本数据类型是什么

ios - AVAudioEngine 在连接 AVAudioPlayerNode 输出时抛出异常