jdxi_editor.midi.message.roland

This module provides a class for constructing and parsing Roland System Exclusive (SysEx) messages. The RolandSysEx class allows for easy creation of messages to be sent to Roland devices, as well as the ability to parse incoming SysEx messages.

Usage Example:

```python from roland_sysex import RolandSysEx

# Creating a SysEx message message = RolandSysEx(command=0x12, area=0x01, section=0x02, group=0x03, param=0x04, value=0x05) message_bytes = message.to_bytes() print(“Generated SysEx Message (bytes):”, message_bytes)

# Parsing a SysEx message from bytes received_bytes = bytes.fromhex(‘f0411012000102030405f7’) # Example received SysEx message parsed_message = RolandSysEx.from_bytes(received_bytes) print(“Parsed Command:”, parsed_message.command) print(“Parsed Address:”, parsed_message.address) print(“Parsed Value:”, parsed_message.value)

Classes

JDXiSysEx

JD-Xi specialized class for Roland SysEx messages.

ParameterMessage

Base class for parameter messages

SystemMessage

System parameter message

ProgramMessage

Program parameter message

Effect1Message

Effect 1 parameter message

Effect2Message

Effect 2 parameter message

DelayMessage

Delay parameter message

ReverbMessage

Reverb parameter message

PartMessage

Program Part parameter message

ZoneMessage

Program Zone parameter message

ControllerMessage

Program Controller parameter message

DigitalToneCommonMessage

SuperNATURAL Synth Tone Common parameter message

DigitalToneModifyMessage

SuperNATURAL Synth Tone Modify parameter message

DigitalTonePartialMessage

SuperNATURAL Synth Tone Partial parameter message

AnalogToneMessage

Message for analog tone parameters

DrumKitCommonMessage

Drum Kit Common parameter message

DrumKitPartialMessage

Drum Kit Partial parameter message

Functions

create_sysex_message(→ JDXiSysEx)

Create address JD-Xi SysEx message with the given parameters

create_patch_load_message(→ List[JDXiSysEx])

Create messages to load address patch (bank select + program change)

create_patch_request_message(→ JDXiSysEx)

Create address message to request patch data

Module Contents

class jdxi_editor.midi.message.roland.JDXiSysEx[source]

Bases: picomidi.RolandSysExMessage

JD-Xi specialized class for Roland SysEx messages.

Inherits from PicoMidi’s generic RolandSysExMessage and adds JD-Xi specific features like address object handling, automatic value conversion, and JD-Xi validation.

device_id: int[source]
model_id: List[int][source]
command: int[source]
sysex_address: jdxi_editor.midi.data.address.address.JDXiSysExAddress | None = None[source]
msb: int[source]
umb: int[source]
lmb: int[source]
lsb: int[source]
value: int | List[int][source]
size: int = 1[source]
synth_type: int | None = None[source]
part: int | None = None[source]
dt1_command: int[source]
rq1_command: int[source]
__post_init__() None[source]

Initialize JD-Xi specific features, then call parent.

from_sysex_address(sysex_address: jdxi_editor.midi.data.address.address.JDXiSysExAddress) None[source]

Update address from RolandSysExAddress object.

Parameters:

sysex_address – RolandSysExAddress

Returns:

None

to_message_list() List[int][source]

Convert to message list using parent implementation.

Maintains backward compatibility with existing code that calls to_message_list().

Returns:

List[int]

to_list() List[int][source]

Alias for to_message_list() for compatibility with PicoMidi Message interface.

Returns:

List[int]

to_bytes() bytes[source]

Convert message to bytes for sending.

Returns:

bytes representation of the message

classmethod from_bytes(data: bytes) JDXiSysEx[source]

Create message from received bytes with JD-Xi specific validation.

Parameters:

data – Raw SysEx message bytes

Returns:

Parsed JDXiSysEx instance

Raises:

ValueError – If message format is invalid or not JD-Xi

construct_sysex(address: jdxi_editor.midi.data.address.address.JDXiSysExAddress, *data_bytes: List[int] | int, request: bool = False) List[int][source]

Construct a SysEx message based on the provided address and data bytes.

Parameters:
  • address – RolandSysExAddress

  • data_bytes – list of data bytes

  • request – bool is this a request?

Returns:

None

class jdxi_editor.midi.message.roland.ParameterMessage[source]

Bases: JDXiSysEx

Base class for parameter messages

command: int[source]
__post_init__()[source]

Handle parameter value conversion

convert_value(value: int) list[int][source]

Convert parameter value to data bytes

Parameters:

value – int

Returns:

list[int]

classmethod from_bytes(data: bytes) JDXiSysEx[source]

Create message from received bytes

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

class jdxi_editor.midi.message.roland.SystemMessage[source]

Bases: ParameterMessage

System parameter message

msb: int = 2[source]
class jdxi_editor.midi.message.roland.ProgramMessage[source]

Bases: ParameterMessage

Program parameter message

msb: int = 24[source]
class jdxi_editor.midi.message.roland.Effect1Message[source]

Bases: ParameterMessage

Effect 1 parameter message

msb: int = 24[source]
umb: int = 2[source]
class jdxi_editor.midi.message.roland.Effect2Message[source]

Bases: ParameterMessage

Effect 2 parameter message

msb: int = 24[source]
umb: int = 4[source]
class jdxi_editor.midi.message.roland.DelayMessage[source]

Bases: ParameterMessage

Delay parameter message

msb: int = 24[source]
umb: int = 6[source]
class jdxi_editor.midi.message.roland.ReverbMessage[source]

Bases: ParameterMessage

Reverb parameter message

msb: int = 24[source]
umb: int = 8[source]
class jdxi_editor.midi.message.roland.PartMessage[source]

Bases: ParameterMessage

Program Part parameter message

msb: int = 24[source]
umb: int = 0[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

class jdxi_editor.midi.message.roland.ZoneMessage[source]

Bases: ParameterMessage

Program Zone parameter message

msb: int = 24[source]
umb: int = 1[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

class jdxi_editor.midi.message.roland.ControllerMessage[source]

Bases: ParameterMessage

Program Controller parameter message

msb: int[source]
umb: int = 64[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

Parameters:

value

Returns:

List[int]

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

Parameters:

data – List

Returns:

int

class jdxi_editor.midi.message.roland.DigitalToneCommonMessage[source]

Bases: ParameterMessage

SuperNATURAL Synth Tone Common parameter message

msb: int[source]
umb: int = 0[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

Parameters:

value

Returns:

List[int]

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

Parameters:

data – List

Returns:

int

class jdxi_editor.midi.message.roland.DigitalToneModifyMessage[source]

Bases: ParameterMessage

SuperNATURAL Synth Tone Modify parameter message

msb: int[source]
umb: int = 80[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

Parameters:

value

Returns:

List[int]

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

Parameters:

data – List

Returns:

int

class jdxi_editor.midi.message.roland.DigitalTonePartialMessage[source]

Bases: ParameterMessage

SuperNATURAL Synth Tone Partial parameter message

msb: int[source]
umb: int = 32[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

Parameters:

value

Returns:

List[int]

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

Parameters:

data – List

Returns:

int

class jdxi_editor.midi.message.roland.AnalogToneMessage[source]

Bases: ParameterMessage

Message for analog tone parameters

msb: int = 0[source]
umb: int = 0[source]
lmb: int = 0[source]
lsb: int = 0[source]
value: int = 0[source]
to_message_list() List[int][source]

Convert to SysEx message bytes

class jdxi_editor.midi.message.roland.DrumKitCommonMessage[source]

Bases: ParameterMessage

Drum Kit Common parameter message

msb: int[source]
umb: int = 16[source]
lmb: int = 0[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

Parameters:

value

Returns:

List[int]

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

Parameters:

data – List

Returns:

int

class jdxi_editor.midi.message.roland.DrumKitPartialMessage[source]

Bases: ParameterMessage

Drum Kit Partial parameter message

msb: int[source]
umb: int = 16[source]
lmb: int = 1[source]
convert_value(value: int) List[int][source]

Convert parameter value based on parameter preset_type

Parameters:

value

Returns:

List[int]

classmethod convert_data(data: List[int]) int[source]

Convert data bytes back to parameter value

Parameters:

data – List

Returns:

int

jdxi_editor.midi.message.roland.create_sysex_message(msb: int, umb: int, lmb: int, lsb: int, value: int) JDXiSysEx[source]

Create address JD-Xi SysEx message with the given parameters

jdxi_editor.midi.message.roland.create_patch_load_message(bank_msb: int, bank_lsb: int, program: int) List[JDXiSysEx][source]

Create messages to load address patch (bank select + program change)

jdxi_editor.midi.message.roland.create_patch_request_message(msb: int, umb: int = 0, size: int = 0) JDXiSysEx[source]

Create address message to request patch data