#audiokit
#аудиокит
Вопрос:
У меня есть небольшое приложение, получающее MIDI от канала Bluetooth. Он хорошо работает с использованием основных API, поэтому я попытался использовать AudioKit, чтобы упростить свой код.
Проблема в том, что я не вижу события SysEx в прослушивателе (хотя я вижу их в своем базовом коде). Получены другие события midi.
AKMidi = AudioKit.midi
AKMidi?.addListener(AVKMIDIControl())
...
AKMidi?.openInput(index: i)
...
class AVKMIDIControl:AKMIDIListener {
...
// copy paste from audiokit.io example
func receivedMIDISystemCommand(_ data: [MIDIByte]) {
if let command = AKMIDISystemCommand(rawValue: data[0]) {
var newString = "MIDI System Command: (command) n"
for i in 0 ..< data.count {
newString.append("(data[i]) ")
}
print(newString)
}
}
...
Я должен получать события SysEx в прослушивателе (кстати, я реализовал все другие функции, чтобы быть уверенным, что я все улавливаю), но я получаю только сообщения журнала, такие как
AKMIDI.swift:startReceivingSysex(с помощью:):102:Начинаю получать Sysex
AKMIDI.swift: stopReceivingSysex():107: Получение Sysex завершено
но ничего через слушателя…
Как я могу получить данные сообщения Sysex?
Ответ №1:
Однако я могу подтвердить это поведение в текущей версии (4.7.2): в версии 4.5.6 sysex (и другие MIDI-сообщения) принимаются вашим midilistener. Итак, мое приложение все еще использует эту версию. по какой-то причине прием MIDI просто кажется нарушенным в более поздних версиях.
Но версия 4.5.6 тоже не идеальна. Он разбивает большие сообщения sysex на несколько небольших сообщений. У меня есть кое-какой код, чтобы справиться с этим, дайте мне знать, если он вам понадобится.
Комментарии:
1. Большое спасибо за подтверждение. Я буду продолжать использовать свое собственное приложение до тех пор, пока эта библиотека не будет исправлена.
2. Привет, Мартен, меня бы заинтересовал ваш код. Я получаю большой системный запрос с Audiokit (который фактически состоит из нескольких системных запросов). Но Audiokit получает только первый F7 … Блок F0 … а затем записывает в консоль «Начинаю получать Sysex ..», но останавливается там …. как будто он обнаружил несколько сообщений sysex, но не смог завершить…… Большое спасибо