У меня нет опыта программирования на iPhone, но я быстро взглянул на iOS MIDI API.
В MIDI есть различные события MIDI (примечание включено, отключено, смена контроллера и т. Д.) Каждое событие можетиметь разное количество байтов.Начиная с первого байта вы можете указать тип события и тип сообщения, для которого вы знаете длину сообщения (см. Ссылку MIDI на http://www.midi.org/techspecs/midimessages.php). Единственное исключение - системное MIDI-сообщение (для более подробной информации см. Ссылку MIDI и ссылку для конкретного устройства, которое может отправлятьи получать системные эксклюзивные сообщения)
Кажется, что MIDIPacket может содержать переменное количество MIDI-сообщений.Таким образом, вы можете посмотреть на первый байт.Предположим, вы получили событие Midi Note On на канале MIDI 1. В первом байте у вас будет значение 80 (шестнадцатеричное).Из документации видно, что Note On Event имеет два байта данных.Следующий байт - номер ноты MIDI (вы можете увидеть список номеров ноты MIDI, например, на http://midikits.net23.net/midi_analyser/midi_note_numbers_for_octaves.htm).И следующий номер ноты - это скорость (насколько быстро (или едва) была нажата клавиша)И затем вы можете повторить эту процедуру.
Обратите внимание, что для некоторых сообщений, таких как Pitch Wheel Change, два байта данных несут одно значение (MSB и LSB).
Возможно, вам будет полезнознать, что, когда байт начинается с 0, это байт данных MIDI.События MIDI имеют 1 в своем первом байте.