Audiokit, кажется, получает только первые три числа MIDI-сообщений Sysex
Я пытаюсь использовать audiokit для получения сообщений syses от аппаратного синтезатора в приложении на Mac. Эти сообщения синтезатора состоят из 11 чисел, например:
240,00,32,51,01,16,112,00,40,95,247
текущая выпущенная версия audiokit потерпит крах, как только получит это сообщение, но я обнаружил, что текущая ветвь разработки исправила это. Я имею в виду, это тоже вылетает, но на другом белье;) в AKMIDIEvent.swift:
line 143: computedLength += 1 << Thread 8: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
Я смог исправить это с добавлением
if (computedLength == 255){
break
}
как раз перед строкой 143, но я боюсь, что это решение говорит больше о моем низком / упрощенном уровне кодирования, чем что-либо еще. Когда я печатаю package.data, который получен функцией init в строке 127, он показывает:
(240, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0)
верны только первые 3 числа, остальное пропало, все нули есть. В Cubase я вижу, что все сообщение отправлено, но в аудиоките большая часть его потеряна.
Кто-нибудь может пролить свет на это? предназначен или не предназначен для анализа таких сообщений syses?
заранее спасибо!
1 ответ
Обработка sysex в AudioKit была улучшена с тех пор, как на этот вопрос был задан и дан ответ, поэтому теперь он должен работать лучше.
Мне кажется, что audiokit разрезает мои 11-битные сообщения syses на 4 меньших сообщения по 3 бита каждое. Только первое сообщение начинается с 240 и распознается как сообщение syses.
Следующие 3 части вообще не распознаются как какие-либо и теряются.
Первое сообщение позволит Audiokit аварийно завершить работу, поскольку оно не содержит необходимого конечного номера (247).
Пытались изменить это поведение, но безуспешно. Audiokit - это действительно хороший мир работы, но, к сожалению, не для моего проекта.