У меня была похожая проблема на iOS. Вы правы, количество MIDI-пакетов всегда равно 1.
В моем случае, при получении нескольких событий MIDI с одной и той же временной меткой (события MIDI, полученные в одно и то же время), iOS не разделяет эти несколько событий MIDI на несколько пакетов, как ожидалось.
Но, к счастью, ничего не потеряно! Действительно, вместо того, чтобы получать несколько пакетов с их правильным количеством байтов, вы получите один пакет с несколькими событиями в нем, и число байтов будет соответственно увеличено.
Итак, вот что вам нужно сделать:
В вашем обратном вызове MIDI IN проанализируйте все полученные пакеты (всегда 1 для iOS), затем для каждого полученного пакета вы должны проверить длину пакета, а также статус MIDI, а затем зациклиться на этом пакете, чтобы получить все события MIDI в текущем пакете.
Например, если пакет содержит 9 байтов, а статус MIDI - это нота ON (сообщение из 3 байтов), это означает, что ваш текущий пакет содержит более одной ON, тогда вы должны проанализировать первое ON (байты). От 0 до 2), затем проверьте следующий статус MIDI из байта 3 и т. Д.
Надеюсь, это поможет ...
Джером