Вопрос реализации AKMIDICallbackInstrument - PullRequest
0 голосов
/ 18 ноября 2018

Обновление до последней версии AudioKit привело к тому, что я изменил несколько экземпляров AKCallbackInstrument на новый класс AKMIDICallbackInstrument, который теперь включает первый как устаревшее поведение.Однако при этом я столкнулся с этой странной ошибкой.Может быть, нюанс Swift, которого мне не хватает?

let callback = AKMIDICallbackInstrument() { status, note, velocity in
    if status == .noteOn {  //errors out
       // do something
    }
}

Сравнение status с .noteOn с: «Тип выражения« Bool »неоднозначен без дополнительного контекста.».Имеет смысл, потому что AKMIDICallbackInstrument больше не возвращает статус AKMIDIStatus, а прямой MIDIByte (UInt8).Использование прямой MIDI команды чисел работает.

let callback = AKMIDICallbackInstrument() { status, note, velocity in
    if status == 0x90 {
       // do something
    }
}

Итак, у нас есть проблема и потенциальное решение.Я просто не уверен, что это путь, и AKMIDICallbackInstrument еще не попал в документы.

1 Ответ

0 голосов
/ 19 ноября 2018

В настоящее время вы можете преобразовать MIDIByte в AKMIDIStatus следующим образом:

let status = AKMIDIStatus(rawValue: Int(statusByte >> 4))

В ветви разработки есть новый инициализатор для AKMIDIStatus, который напрямую принимает MIDIByte как параметр, чтобы сделать это немного проще.

...