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 - это действительно хороший мир работы, но, к сожалению, не для моего проекта.

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