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()
您可以尝试移动 output
和 start
,就在 play
之前(但在 connect
之后):
AudioKit.output = peakLimiter
AudioKit.start()
player.play()
我在使用 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()
您可以尝试移动 output
和 start
,就在 play
之前(但在 connect
之后):
AudioKit.output = peakLimiter
AudioKit.start()
player.play()