jdxi_editor.midi.utils.byte
byte data processing
Functions
|
Splits a 16-bit integer into two 8-bit bytes: [LMB, LSB] |
|
Splits an 8-bit integer into two 4-bit nibbles. |
|
Encodes a 28-bit value into 4x 7-bit MIDI bytes (MSB first). |
|
decode_roland_4byte |
|
encode_roland_4byte |
|
Splits an integer into exactly 4 nibbles (4-bit values), padding with zeros if necessary |
|
Splits an integer into 8 nibbles (4-bit values), for 32-bit Roland SysEx DT1 data. |
|
Combines a list of 8 nibbles (4-bit values) into a 32-bit integer |
|
Combines a list of 4 nibbles (4-bit values) into a 16-bit integer |
|
Encodes a 14-bit integer into two 7-bit MIDI-safe bytes. |
Module Contents
- jdxi_editor.midi.utils.byte.split_16bit_value_to_bytes(value: int) list[int][source]
Splits a 16-bit integer into two 8-bit bytes: [LMB, LSB]
- Parameters:
value – int (0–65535)
- Returns:
list[int] [Most Significant Byte, Least Significant Byte]
- jdxi_editor.midi.utils.byte.split_8bit_value_to_nibbles(value: int) list[int][source]
Splits an 8-bit integer into two 4-bit nibbles.
- Parameters:
value – int (0–255)
- Returns:
list[int] with two 4-bit values [upper_nibble, lower_nibble]
- jdxi_editor.midi.utils.byte.encode_roland_7bit(value: int) list[int][source]
Encodes a 28-bit value into 4x 7-bit MIDI bytes (MSB first).
- jdxi_editor.midi.utils.byte.decode_roland_4byte(data_bytes: list[int]) int[source]
decode_roland_4byte
- Parameters:
data_bytes – list[int]
- Returns:
int
decode_roland_4byte([0x08, 0x00, 0x00, 0x01]) # → 1048577
- jdxi_editor.midi.utils.byte.encode_roland_4byte(value: int) list[int][source]
encode_roland_4byte
- Parameters:
value – int
- Returns:
list[int]
>>> encode_roland_4byte(0) # [0x00, 0x00, 0x00, 0x00] [0, 0, 0, 0] >>> encode_roland_4byte(1) # [0x00, 0x00, 0x00, 0x01] [0, 0, 0, 1] >>> encode_roland_4byte(1048576) # [0x00, 0x40, 0x00, 0x00] [0, 64, 0, 0]
- jdxi_editor.midi.utils.byte.split_16bit_value_to_nibbles(value: int) list[int][source]
Splits an integer into exactly 4 nibbles (4-bit values), padding with zeros if necessary
- Parameters:
value – int
- Returns:
list[int]
- jdxi_editor.midi.utils.byte.split_32bit_value_to_nibbles(value: int) list[int][source]
Splits an integer into 8 nibbles (4-bit values), for 32-bit Roland SysEx DT1 data.
- Parameters:
value – int
- Returns:
list[int]
- jdxi_editor.midi.utils.byte.join_nibbles_to_32bit(nibbles: list[int]) int[source]
Combines a list of 8 nibbles (4-bit values) into a 32-bit integer
- Parameters:
nibbles – list[int]
- Returns:
int
- jdxi_editor.midi.utils.byte.join_nibbles_to_16bit(nibbles: list[int]) int[source]
Combines a list of 4 nibbles (4-bit values) into a 16-bit integer
- Parameters:
nibbles – list[int]
- Returns:
int
- jdxi_editor.midi.utils.byte.encode_14bit_to_7bit_midi_bytes(value: int) list[int][source]
Encodes a 14-bit integer into two 7-bit MIDI-safe bytes. MIDI SysEx requires all data bytes to be in the range 0x00–0x7F. # Example usage:
>>> value = 0x1234 # 4660 in decimal >>> data_bytes = encode_14bit_to_7bit_midi_bytes(value) >>> print(data_bytes) # Output: [0x24, 0x34] → [36, 52] [36, 52]