同步播放AKSamplerMetronome和AKAppleSequencer。

问题描述 投票:1回答:1

感谢AudioKit!我有下一个问题:我想让AKSampleMetronome和一个用AKMIDISampler包装的midi文件实现理想的同步播放。这是我的代码。

let metronome = AKSamplerMetronome()
let mixer = AKMixer()
let midiSampler = AKMIDISampler()
midiSampler.samplerUnit.loadSoundBankInstrument(....)
metronome >>> mixer
midiSampler >>> mixer
AudioKit.output = mixer
AudioKit.start()
let sequencer = AKAppleSequencer(filename: "midifilename")
sequencer.enableLooping()
sequencer.tracks[1].setMIDIOutput(midiSampler.midiIn)
//now play
sequencer.play()
metronome.beatTime = 0
metronome.play()

但是当我像这样改变速度的时候

sequencer.setTempo(bpm)
let now = AVAudioTime(hostTime: mach_absolute_time())
metronome.setTempo(Double(bpm), at: now)

过了一会儿,节拍器和midi音序器的声音就不一样了,我怎样才能准确地解决这个问题?

ios swift synchronization midi audiokit
1个回答
1
投票

有很多方法可以做到这一点,但我会把音序器中的一个音轨变成节拍器音轨,然后把midi信号发送到midiSampler。

© www.soinside.com 2019 - 2024. All rights reserved.