Как вы используете AKMIDIStatus в обратном вызове AKMIDICallbackInstrument с AudioKit 4.6.1 - PullRequest
0 голосов
/ 20 февраля 2019

Использование AKSequencer для миди и контрольной дорожки.Я знаю, что AKMIDIStatus претерпел некоторые изменения в последних ревизиях.Мои исследования заставили меня поверить, что этот простой обратный вызов «note on» «note off» должен работать:

        func playThroughCallback(_ statusByte: UInt8,
                             _ noteNumber: MIDINoteNumber,
                             _ velocity: MIDIVelocity) {
        //print("MIDI Sequence Event \(status)")
        guard let status = AKMIDIStatus(byte: statusByte) else { return }

        switch status {
        case .noteOn: midi?.sendNoteOnMessage(noteNumber: noteNumber, velocity: velocity)
        case .noteOff: midi?.sendNoteOffMessage(noteNumber: noteNumber, velocity: velocity)
        default: return

        }
}

Но случаи перечисления, похоже, исчезли.

Редактировать: Возврат к 4.5.5 позволил мне использовать решение здесь: AKMIDICallbackInstrument Проблема с реализацией

1 Ответ

0 голосов
/ 23 февраля 2019

Попробуйте создать AKMIDIStatus , используя входящий байт, затем прочитав AKMIDIStatusType

let callbackReceiver = AKMIDICallbackInstrument(midiInputName: "myCoolInput", 
    callback: { status, noteNumber, velocity in
        let statusType = AKMIDIStatus(byte: status)?.type //can be noteOn, noteOff, etc
        if(statusType == AKMIDIStatusType.noteOn){
            print("Note on.")
        }
})

myTrack.setMIDIOutput(callbackReceiver.midiIn)

Только что протестировано на работу в AudioKit 4.6.1

...