Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.3k views
in Technique[技术] by (71.8m points)

ios - How to play MIDI with AudioKit's new AKSequencer

I'm on AudioKit 4.9.1 and can't manage to play a MIDI file with the new AKSequencer (replacing AKAppleSequencer). No sound playing. Assume that MIDI file AND samples are loaded correctly since they previously worked with AKAppleSequencer. Background audio mode capability is also enabled.

Here's the relevant code: (I've also tried both AKSampler and AKAppleSampler but same result)

class MIDIPlayer {
    var sampler: AKSampler
    var legacySampler: AKAppleSampler
    var sequencer: AKSequencer

    init(withSfz sfz: String, orSf2 sf2: String, andMidiFile midiFile: String) {

        self.sampler = AKSampler()
        self.legacySampler = AKAppleSampler()
        try? legacySampler.loadSoundFont(sf2, preset: 0, bank: 0)
        sampler.loadSFZ(url: Bundle.main.url(forResource: sfz, withExtension: "sfz")!)

        AudioKit.output = sampler
        try? AudioKit.start()

        sequencer = AKSequencer(targetNode: sampler)
        // sequencer = AKSequencer(targetNode: legacySampler)

        let midi = AKMIDIFile(url: Bundle.main.url(forResource: midiFile, withExtension: "mid")!)
        sequencer.load(midiFile: midi)
    }

    func play() {
        sequencer.playFromStart()
    } 

Is there some difference in how to set up the signal chain that I'm missing?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

With the new sequencer, it has to be part of the signal chain. So, do something like

let mixer = AKMixer
sampler >>> mixer
for track in sequencer.tracks { track >>> mixer }
AudioKit.output = mixer

and it should work. Sorry for the delay in seeing this on Github issues.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...