В принципе, проблема обычно озвучивается примерно так:
"Многие китайские устройства USB-MIDI, передавая "регулярные" MIDI сообщения, не могут передавать SysEx".
Из моей практики: при передачи от USB (ПК Windows) к MIDI (аппаратное MIDI устройство) из всего SysEx сообщения проходят только первые 3 байта, а остальные безвозвратно теряются. При этом никак не контролируется, что это именно SysEx, т.е. что начинается с F0. Т.е. теоретически никто не мешает передавать SysEx сообщение порциями по 3 байта.
Спецификация https://usb.org/sites/default/files/midi10.pdf в главе 4 явно описывает, как следует передавать MIDI SysEx сообщения, подразделяя их на:
- начало или середина сообщения (всегда 3 байта),
- конец сообщения - 3 байта,
- конец сообщения - 2 байта,
- конец сообщения - 1 байт.
Другими словами, еще ДО передачи необходимо осуществить элементарный разбор сообщения. Что как бы делает сомнительной передачу фрагмента, не начинающегося с F0. Ибо если сообщение изначально неправильно разобрано и передано, то собрать его "на той стороне" уже оказывается принципиально невозможно.
Вопроса, как всегда, два: кто виноват и что делать.
Т.е. а так ли уж виноваты китайцы в неработоспособности своих изделий? Может, это Майкрософт не умеет читать документацию?
Ну и соответственно, насколько надежен способ передачи SysEx сообщений порциями по 3 байта?
А заодно интересно было бы узнать, вообще существует ли какая-либо статистика по передаче SysEx сообщений через USB посредством устройств различных производителей (включая европейских, американских и японских), а также в других ОС, в частности, в Линуксе.
Опять же, существует ли софт, умеющий передавать SysEx через "неправильные" китайские кабели?