下面的代码在iOS 11中循环播放多个音频文件,但在iOS 10中不能。似乎AKSequencer不能在iOS 10中循环?
let mixer = AKMixer()
var sequencer: AKSequencer = AKSequencer()
sequencer.loadMIDIFile(fromUrl: URL(fileURLWithPath: midiFile))
for index in 0..<sequencer.tracks.count {
let musicTrack: AKMusicTrack = sequencer.tracks[index]
let sampler = AKMIDISampler()
if index < samples.count {
sampler.loadWavFromAbsolutePath(samples[index])
sampler.enableMIDI(midi.client, name: "Sampler_\(index)")
mixer.connect(input: sampler)
}
musicTrack.setMIDIOutput(sampler.midiIn)
}
AudioKit.output = mixer
AudioKit.start()
sequencer.enableLooping()
sequencer.play()发布于 2018-04-29 06:46:09
我只能猜测这可能与iOS 10有什么联系,但我过去遇到过一些问题,即在紧跟在AudioKit.start()之后的its .play()调用中,AKSequencer没有循环。我发现,将.play()调用放在IBAction中或从计时器调用它(延迟100ms左右)可以让它正确地循环。
发布于 2018-06-09 01:02:29
我也遇到过类似的问题,这个问题与AKSequencer属性的作用域有关。
看起来音序器被取消初始化,无法进一步处理MIDI信号。
尝试将var sequencer:AKSequencer = AKSequencer()升级为全局变量。
https://stackoverflow.com/questions/48169970
复制相似问题