【问题标题】:Positional Audio in SceneKit / ARKit with AudioKitSceneKit / ARKit 中的位置音频与 AudioKit
【发布时间】:2017-11-02 18:48:02
【问题描述】:

我一直在探索 Scene Kit / ARKit 中的位置音频,并想看看是否可以在这种情况下使用 AudioKit,以从其更高级别的分析、声音生成、效果等工具中受益。

对于某些背景,SCNView 带有一个 AVAudioEnvironmentNode、一个 AVAudioEngine 和一个 audioListener (SCNNode)。这些属性已初始化,环境节点已配置到引擎。位置音频源通过 SCNAudioPlayer 添加到场景中,可以使用 AVAudioNode 进行初始化 - AVAudioNode 必须连接到环境节点并具有单声道输出。

然后将 SCNAudioPlayer 添加到场景中的 SCNNode 并根据其在场景中的位置以及 audioListener 节点的位置和方向自动负责修改 AVAudioNode 的输出。

我希望可以使用 SCNView 的 AVAudioEngine 属性初始化 AudioKit,在引擎的节点图中配置 SCNView 的环境节点,使用 AKNodes 的 AVAudioNode 属性来初始化 SCNAudioPlayers,并确保所有源正确连接到环境节点。我已经开始修改 AudioKit 源代码,但无法弄清楚我需要适应哪些类以及如何将环境节点集成到 AudioKit 管道中。特别是我无法理解 connectionPoints 和 outputNode 属性。

鉴于 AudioKit 的结构或对方法有任何指示,是否有人认为这可能是不可能的?

我当然很乐意分享我的任何发现。

【问题讨论】:

  • 这听起来是一个令人钦佩的目标。有一次,AK 附带了一个 3D 音频示例。你所提议的听起来像是对 AK 的一个有价值的补充。您想邀请加入 AK Slack 小组吗?如果是这样,我的电子邮件是 matthew@audiokitpro.com
  • 太棒了,谢谢!我会给你发一封电子邮件。

标签: ios audio scenekit arkit audiokit


【解决方案1】:

AudioKit 在 AudioKit.swift 的第 38 行创建自己的 AVAudioEngine 实例:

https://github.com/AudioKit/AudioKit/blob/master/AudioKit/Common/Internals/AudioKit.swift#L38

但它是开放的,所以应该可以用 SceneView 的音频引擎覆盖它。我没有看到任何可以阻止它的东西。

【讨论】:

  • 我有一点更新 - 不幸的是,我认为带有场景视图的音频引擎目前可能不适合 AudioKit。场景视图音频引擎的 inputNode 属性 (AVAudioInputNode) 通常带有 0 的采样率,需要另一个引擎来促进从麦克风录制。这一点,以及我发现的有关音频会话/引擎设置的其他特质,让我相信 AVAudioEngine 的完整功能集在 Scene Kit/ARKit 的上下文中可能还不可靠。
最近更新 更多