我开发的应用程序需要动态添加/删除/重新排列声音链中的组件。
到目前为止,我主要在大多数组件上使用.disconnectOutput()
方法,然后重新连接所有内容。这在大多数情况下都有效,但偶尔似乎节点连接在声链的多个点上,如果节点连接到AudioKit.output
,我也会崩溃。
AudioKit提供了许多公共方法,例如.detach()
,.disconnectInput()
,.disconnect()
,而且我不清楚什么是最干净或最安全的修改声音链的方法。这样做的最佳方式是什么?
另外,有没有办法跟踪哪些节点连接到哪个节点?
答案 0 :(得分:2)
使用AKNode上的detach()
方法将其从链中删除。
不推荐使用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