在 AudioKit 中断开节点的正确方法

c_b*_*oth 6 audiokit

我正在开发的应用程序需要在声音链中动态添加/删除/重新排列组件。

到目前为止,我主要.disconnectOutput()在大多数组件上使用该方法,然后重新连接所有组件。这在大多数情况下都有效,但有时似乎一个节点连接在声音链中的多个点,如果节点连接到AudioKit.output.

AudioKit 提供了许多公共方法,例如.detach(), .disconnectInput().disconnect()我不太清楚修改声音链的最干净或最安全的方法。做这个的最好方式是什么?

另外,是否有某种方法可以跟踪哪些节点连接到哪些节点?

Ste*_* D. 5

使用detach()AKNode 上的方法将其从链中删除。

不推荐使用 AKNode的disconnect()disconnect(nodes: )方法。使用AKNode.detach()AudioKit.detach(nodes: )代替。

我同意这个术语非常不清楚,并且在现有文档中没有解释。当我学习 API 时,我仍然在生命周期和运行时链动态方面苦苦挣扎,所以我无法传达最佳实践。通常,您不想破坏对象图。我正在使用 AKMixer 对象,然后使用.connect(input:bus:).disconnectInput(bus:)方法以及相关总线的内部跟踪动态附加子节点,但我仍然使用这种方法遇到崩溃:(

Apple 的父 AVAudioEngine 文档页面为动态链接实践提供了一些经验法则:https : //developer.apple.com/documentation/avfoundation/avaudioengine