AKMIDIListener не получает SysEx

Я использую протокол AKMIDIListener AudioKit в классе для прослушивания сообщений MIDI. Это нормально работает для стандартных сообщений, таких как Note On, но SysEx сообщения не приходят.

func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
    NSLog("Note On \(noteNumber), \(velocity), \(channel)") // works perfectly
}
func receivedMIDISystemCommand(_ data: [MIDIByte]) {
    NSLog("SysEx \(data)") // never triggers

    // More code to handle the messages...
}

Сообщения SysEx отправляются с внешнего оборудования или тестового программного обеспечения. Я использовал приложения для мониторинга MIDI, чтобы убедиться, что сообщения отправляются правильно, но в моем приложении они не запускаются receivedMIDISystemCommand,

Есть ли какие-либо дополнительные шаги, необходимые для получения сообщений SysEx, которые я пропускаю?

Заранее спасибо за любые подсказки.

1 ответ

Решение

РЕДАКТИРОВАТЬ: Спасибо за доведение этого до нашего сведения. Проблема получения SysEx теперь исправлена ​​в ветви разработки AudioKit: https://github.com/AudioKit/AudioKit/pull/1017

-

Вместо

NSLog("SysEx \(data)")

Ты пытался?

if let sysExCommand = AKMIDISystemCommand(rawValue: data[0]) {
   print("MIDI System Command: \(sysExCommand)")
}

AKMIDISystemCommand преобразует ваши данные SysEx в нечто более удобное для использования и определяется следующим образом:

public enum AKMIDISystemCommand: MIDIByte {
    /// Trivial Case of None
    case none = 0
    /// System Exclusive
    case sysex = 240
    /// Song Position
    case songPosition = 242
    /// Song Selection
    case songSelect = 243
    /// Request Tune
    case tuneRequest = 246
    /// End System Exclusive
    case sysexEnd = 247
    /// Clock
    case clock = 248
    /// Start
    case start = 250
    /// Continue
    case `continue` = 251
    /// Stop
    case stop = 252
    /// Active Sensing
    case activeSensing = 254
    /// System Reset
    case sysReset = 255
}

- Мэтью @ audiokit

Другие вопросы по тегам