Swift 和 C++ 中的低延迟音频回调模板

AudioCallBackTemplate

IoS 上用于 SwiftUI 和 C++ 中快速渲染音频 DSP 代码的低延迟音频回调 Xcode 模板。

此模板可用于在 IoS 上构建独立音频应用程序,支持 SwiftUI 和 C++ 中快速渲染的音频 DSP 代码。 音频单元与宿主应用程序运行在同一进程中,从而加速开发。

相反,auv3 音频单元在单独进程中运行。如果你要创建共享音频单元插件(例如,适用于 Logic Audio),请构建 auv3 音频单元扩展。

我们的模板尽可能简化创建音频应用程序的过程:

  • 使用 Apple RemoteIO 将麦克风输入以低延迟渲染到输出
  • AVAudioSession:输入 -> RemoteIO -> 输出
  • 使用方法创建在 Swift 中创建的 RemoteIO 音频单元来提供渲染回调
  • 管理 AVAudioSession 的所有方面

在 iPhone 12 上,我们通常使用有线耳机实现低于 4 毫秒的往返延迟,并且仅使用 Scarlet USB 接口等音频接口实现 2.5 毫秒的延迟! 麦克风声音响亮清晰。

请始终在硬件上进行测试,音频在模拟器上不起作用。 使用有线耳机,例如 Apple EarPods 或 USB 音频接口 蓝牙会导致高于 160 毫秒的延迟,这使我们无法进行耳内监听。 如果你不需要耳内监听,则可以更改:.allowBluetoothA2DP 至 .allowBluetooth 以启用选择蓝牙麦克风

AudioController.swift 负责抽象化 AVAudioSession 和管理音频设备

DSP.h 是你修改或生成样本的应用程序 DSP 逻辑实现的位置

AVAudioSession 图表

在 iPhone 中测试 GUI:

音频回调模板屏幕截图

在你的项目中使用:

  • 将 AudioController.swift 文件添加到项目中
  • 在 Xcode 中,在 Swift 编译器中启用 C++(目标、构建设置、Swift 编译器 —— 语言、C++ 和 Objective-C 互操作性)
  • 将桥接标头添加到项目(或将 AudioCallBackTemplate-Bridging-Header.h 重命名以适合项目),并确保在 Xcode 目标、构建设置、Swift 编译器 —— 常规的 Objective-C 桥接标头中引用它)
  • 将 DSP.h 文件添加到项目并实现渲染回调

给我发邮件:[email protected]

访问我们的公司 TECH41 GmbH:https://www.tech41.de

寻找代码库(Apache 许可证):https://github.com/tech41-de/AudioCallBackTemplate

尽情享受 -:)

GitHub

点击跳转