Я выполняю некоторую работу с API JavaSound для отправки сообщения MIDI System Exclusive (Sysex) на внешнее MIDI-устройство (электронную клавиатуру). Согласно руководству Yamaha, данные для отправки, чтобы подсвечивать один из ключей, - это серия байтов: F0 43 7F 00 00 03 00 41 F7.Проблема с отправкой байтов размером более 127 в Java Sound's SysexMessage
Согласно JavaDoc на SysexMessage, правильный способ отправки данных для сообщения - setMessage(int status, byte[] data, int length)
. В этом случае F0 (или 240 десятичных знаков) является статусом, а все остальное - данными, включая F7 (247 десятичный знак) в конце, что указывает на конец сообщения Sysex.
Проблема в том, что байты в Java ограничены диапазоном -128..127, поэтому я не могу отправить F7 в массив байтов. Но JavaDoc для SysexMessage не замечает этого факта, говоря: «Если это сообщение содержит все системные эксклюзивные данные для сообщения, оно должно заканчиваться байтом состояния 0xF7».
Любые предложения по правильному отправке этого финального байта? Я неверно истолковал JavaDoc для SysexMessage?
Is литье необходимо? «байт b = 0xF7;» достаточно, я считаю. – tafa
Всё зависит. Вы можете написать «byte b = 0x7F;», но вы получите ошибку, если попытаетесь скомпилировать «byte b = 0x80;» (возможная потеря точности, найденная: int, требуемый байт). – matsev