jdxi_editor.jdxi.midi.message.sysex.offset

This module defines the offsets for various JD-Xi SysEx messages, including control change, program change, pitch bend, and identity messages. Each offset is represented as an IntEnum to provide a clear and structured way to access the byte positions within the SysEx messages.

Classes

FieldSpec

JDXIControlChangeOffset

JDXIControlChangeOffset

JDXIProgramChangeOffset

JDXIProgramChangeOffset

JDXIPitchBendOffset

JDXIPitchBendOffset

JDXiSysExModelIDOffset

Model ID Offsets

JDXiSysExToneNameOffset

Tone Name offsets

JDXiSysExAddressOffset

Sysex Offsets

Checksum

JDXiSysExMessageLayout

JDXiSysExMessageLayout

JDXiIdentityHeaderOffset

ID Offsets

JDXiIdentityDeviceOffset

Device Offsets

JDXiIdentitySoftwareOffset

Software revision offsets

JDXiSysExIdentityLayout

JDXiIdentitySysExLayout

Module Contents

class jdxi_editor.jdxi.midi.message.sysex.offset.FieldSpec[source]
offset: int | type[source]
length: int | None[source]
parser: Type | None[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXIControlChangeOffset[source]

Bases: enum.IntEnum

JDXIControlChangeOffset Represents the offsets for JD-Xi Control Change messages. Byte | Description ——————————————————– Status | 0xB0 to 0xBF — Control Change on MIDI channels 1–16 Data 1 | Control Number (0–127) Data 2 | Control Value (0–127)

STATUS_BYTE = 0[source]
CONTROL = 1[source]
VALUE = 2[source]
END = -1[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXIProgramChangeOffset[source]

Bases: enum.IntEnum

JDXIProgramChangeOffset Represents the offsets for JD-Xi Program Change messages.

Byte | Description

Status | 0xC0 to 0xCF — Program Change on MIDI channels 1–16 Data 1 | Program Number (0–127)

STATUS_BYTE = 0[source]
PROGRAM_NUMBER = 1[source]
END = -1[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXIPitchBendOffset[source]

Bases: enum.IntEnum

JDXIPitchBendOffset Represents the offsets for JD-Xi Pitch Bend messages.

Byte | Description

Status | 0xE0 to 0xEF — Pitch Bend on MIDI channels 1–16 Data 1 | Pitch Bend Value (14-bit, split into two bytes)

STATUS_BYTE = 0[source]
PITCH_BEND_VALUE = 1[source]
END = -1[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiSysExModelIDOffset[source]

Bases: enum.IntEnum

Model ID Offsets

POS1 = 3[source]
POS2 = 4[source]
POS3 = 5[source]
POS4 = 6[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiSysExToneNameOffset[source]

Bases: enum.IntEnum

Tone Name offsets

START = 12[source]
END = 24[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiSysExAddressOffset[source]

Bases: enum.IntEnum

Sysex Offsets

MSB = 8[source]
UMB = 9[source]
LMB = 10[source]
LSB = 11[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.Checksum[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiSysExMessageLayout[source]

JDXiSysExMessageLayout

Represents the offsets for JD-Xi SysEx messages. Byte | Description ——————————————————– SYSEX_START | Start of SysEx message (0xF0) ROLAND_ID | Roland ID (0x41) DEVICE_ID | Device ID (0x10) MODEL_ID_1 | First byte of Model ID (0x00) MODEL_ID_2 | Second byte of Model ID (0x0E) MODEL_ID_3 | Third byte of Model ID (0x00) MODEL_ID_4 | Fourth byte of Model ID (0x00) COMMAND_ID | Command ID (0x00 for Identity Request, 0x01 for Identity Reply) ADDRESS_MSB | Most Significant Byte of Address ADDRESS_UMB | Upper Middle Byte of Address ADDRESS_LMB | Lower Middle Byte of Address ADDRESS_LSB | Least Significant Byte of Address TONE_NAME_START | Start of Tone Name (12 bytes) TONE_NAME_END | End of Tone Name (24 bytes) VALUE | Value (3 bytes, varies by command) CHECKSUM | Checksum byte (calculated from the message) SYSEX_END | End of SysEx message (0xF7)

for field in self.FIELDS:

raw = slice_bytes(data, field) parsed = field.parser.from_bytes(raw)

FIELDS[source]
START = 0[source]
ROLAND_ID = 1[source]
DEVICE_ID = 2[source]
MODEL_ID[source]
COMMAND_ID = 7[source]
ADDRESS[source]
TONE_NAME[source]
VALUE = -3[source]
CHECKSUM = -2[source]
END = -1[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiIdentityHeaderOffset[source]

ID Offsets

NUMBER = 1[source]
DEVICE = 2[source]
SUB1 = 3[source]
SUB2 = 4[source]
ROLAND = 5[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiIdentityDeviceOffset[source]

Device Offsets

FAMILY_CODE_1 = 6[source]
FAMILY_CODE_2 = 7[source]
FAMILY_NUMBER_CODE_1 = 8[source]
FAMILY_NUMBER_CODE_2 = 9[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiIdentitySoftwareOffset[source]

Software revision offsets

REVISION_1 = 10[source]
REVISION_2 = 11[source]
REVISION_3 = 12[source]
REVISION_4 = 13[source]
class jdxi_editor.jdxi.midi.message.sysex.offset.JDXiSysExIdentityLayout[source]

JDXiIdentitySysExLayout Represents the offsets for JD-Xi Identity SysEx messages. Pos | Byte | Description ——————————————————– 0 | SYSEX_START | Start of SysEx message (0xF0) 1 | ID_NUMBER | ID Number (0x7E for non-realtime, 0x7F for realtime) 2 | DEVICE_ID | Device ID (0x7F for all devices) 3 | SUB_ID_1 | Sub ID 1 (0x06 for General Information) 4 | SUB_ID_2 | Sub ID 2 (0x01 for Identity Request, 0x02 for Identity Reply) 5 | ROLAND_ID | Roland Manufacturer ID (0x41, 0x10, 0x00) 6-9 | DEVICE_ID_1-4 | Device ID (0x0E for JD-Xi) 10-13 | REVISION_1-4 | Revision bytes x 4 14 | SYSEX_END | End of SysEx message (0xF7)

START = 0[source]
ID[source]
DEVICE[source]
SOFTWARE[source]
END = -1[source]
LENGTH = 14[source]
__len__ = 14[source]
classmethod expected_length() int[source]