Если уровень громкости представлен как значение с плавающей точкой от 0 до 1, как создать байты данных универсального SysEx Master Volume?Как создать MIDI-сообщение громкоговорителя MIDI Sysex с уровня громкости?
Это Sysex конструктор сообщения с присвоенным статусом сообщения SYSEX байтами (0xF0) и байтами данных:
new SysexMessage(0xF0, data, data.length)
Согласно MIDI спецификации, есть 2 байт состояния и 6 байт данных в сообщении Master Volume (без статуса байта), с байтами последних двух данных с указанием уровня громкости:
0xF0 SysEx (Статус)
0x7F Универсального Realtime
0x7F пренебрегает канал
0x04 Sub-ID - Устройство управления
0х01 Sub-ID2 - Master Volume
0xLL Биты 0 до 6 из 14-разрядного объема
0xMM Биты 7 до 13 из 14-разрядного объема
0xF7 Конец SysEx (Статус)
Так что, если я не ошибаюсь, байты данных должны выглядеть следующим образом:
data = new byte[] { 0x7F, 0x7F, 0x04, 0x01, LL, MM }
Мой вопрос заключается в том, чтобы получить LL и MM байт из поплавка уровня громкости между 0 и 1?
0: 1 <> 0: 2^14 – obiwanjacobi