AudioKit "disconnected state" 与链中节点的创建顺序相关的崩溃

AudioKit "disconnected state" crash related to creation order of nodes in the chain

我在使用 AudioKit 时发生崩溃 *** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: 'player started when in a disconnected state' 当我按一个顺序创建和添加节点时会发生这种情况,但当我按另一个顺序添加它们时不会发生这种情况。这是所需的链:

[player]->[booster1]->[mixer1]->[booster2]->[mixer2]->[peak limiter]->[output]

当我按此顺序构建它时,它崩溃了:

let mixer2 = AKMixer()

let peakLimiter = AKPeakLimiter(mixer2)

AudioKit.output = peakLimiter
AudioKit.start()

let mixer1 = AKMixer()

let booster2 = AKBooster(mixer1)
mixer2.connect(input: booster2)

let booster1 = AKBooster(player)
mixer1.connect(input: booster1)

player.play()

但是当我按照这个顺序构建它时,它起作用了:

let booster1 = AKBooster(player)

let mixer1 = AKMixer()
mixer1.connect(input: booster1)

let booster2 = AKBooster(mixer1)

let mixer2 = AKMixer()
mixer2.connect(input: booster2)

let peakLimiter = AKPeakLimiter(mixer2)

AudioKit.output = peakLimiter
AudioKit.start()

player.play()

知道为什么吗?由于应用程序中的动态原因,第一个示例(崩溃)是它需要的创建顺序。

同样奇怪的是,如果我使用第一个创建顺序示例并省略第二个助推器,它就可以工作。 [player]->[booster1]->[mixer1]->[mixer2]->[peak limiter]->[output]

let mixer2 = AKMixer()

let peakLimiter = AKPeakLimiter(mixer2)

AudioKit.output = peakLimiter
AudioKit.start()

let mixer1 = AKMixer()
mixer2.connect(input: mixer1)

let booster1 = AKBooster(player)
mixer1.connect(input: booster1)

player.play()

您可以尝试移动 outputstart,就在 play 之前(但在 connect 之后):

AudioKit.output = peakLimiter
AudioKit.start()
player.play()