此项目在播放循环中使用多个AKMIDISamplers,在此期间频繁更改音高和音频文件。一切都像魅力一样。然而,在看似完整的随机间隔(分钟)之后,Xcode会进入调试器:
Thread 13: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
function signature specialization <Arg[1] = Dead> of AudioKit.AKMIDIEvent.init(packet: __C.MIDIPacket) -> AudioKit.AKMIDIEvent
0 specialized AKMIDIEvent.init(packet:)
1 specialized closure #1 in AKMIDISampler.enableMIDI(_:name:)
这是初始化代码:
let sampler = AKMIDISampler()
do {
if let audioFile = try AKAudioFile(readFileName: filePath) as AKAudioFile! {
try sampler.loadAudioFile(audioFile)
}
} catch { print("audio file error: \(error)") }
没有使用AKMIDISampler的MIDI功能,即没有收听MIDI事件或发送任何MIDI事件。故意造成此崩溃的唯一方法是暂停AKMIDISampler附加的序列器一段时间。这是AudioKit 4.0.4。