How to play MIDI with AudioKit's new AKSequencer
Asked Answered
M

1

6

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?

Matterhorn answered 13/11, 2019 at 9:1 Comment(0)
C
3

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.

Caprice answered 14/11, 2019 at 18:18 Comment(6)
I am getting a compilation error: Cannot convert value of type 'AKSequencer' to expected argument type 'AKNode?'Matterhorn
Sorry, I updated my code, it was just a pseudo code before, this should work better.Caprice
Binary operator '>>>' cannot be applied to operands of type 'AKMusicTrack' and 'AKMixer?'Tipple
@Tipple make sure you're using the latest AudioKit with the new AKSequencer, not the old one, which has been renamed AKAppleSequencerCaprice
Any news? I'm facing something similarHaematocryal
@Haematocryal have you found a solution?Olio

© 2022 - 2024 — McMap. All rights reserved.