AudioKit 4.6发布:AKMIDICallbackInstrument没有回拨

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

对4.6中的所有新增内容感到非常兴奋!在回顾了大部分的变化后,我没有看到AKMIDICallbackInstrument有任何明显的不同,但是,我再也无法接到回电。这是我的实现:

var sequencer: AKSequencer = AKSequencer()
var callbackTrack: AKMusicTrack = AKMusicTrack()
var callbackInst: AKMIDICallbackInstrument = AKMIDICallbackInstrument() 

---

public func setupSequencerWithBeats(beats: Int, bpm: Double) {

    print("Num beats: \(beats) | BPM: \(bpm)")
    sequencer.setTempo(bpm)

    callbackTrack = sequencer.newTrack()!
    callbackTrack.setMIDIOutput(callbackInst.midiIn)

    for i in 0 ..< beats {
        callbackTrack.add(noteNumber: MIDINoteNumber(60), velocity: 100, position: AKDuration(beats: Double(i)), duration: AKDuration(beats: 1))
        }

    callbackInst.callback = {status, noteNumber, velocity in

        //Using the new AKMIDIStatus object to unwrap the status and check if it's .noteOn
        if let midiStatus = AKMIDIStatus(byte: status), midiStatus.type != .noteOn
            {
                return
            }

        // just some delegates to other classes                 
        self.sequencerdDelegate?.didRecieveCallbackFromSequencer(beatNumber: self.beatNumber)
        self.beatNumber += 1
    }

当我打电话给sequencer.play()时,callbackInst无法再发起回调。我在这里的假设是用setMIDIOutput()方法改变了一些东西?如果在我的音序器中触发.noteOn事件时有更好的方法来获取回调,我很想知道。感谢大家!

ios swift audiokit
1个回答
0
投票

感谢AudioKit贡献者oettam看到了影响所有MIDI组件的4.6.0中的一个非常小的变化!这个问题已通过4.6.1修复!他的承诺:https://github.com/AudioKit/AudioKit/commit/dcfbbb98058425e43af23b9df69fd9794ecc34d5

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