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 = b’ðA÷’ # 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

RolandSysExMessage

Specialized class for Roland JD-Xi SysEx messages.

RolandSysEx

Specialized class for Roland JD-Xi SysEx messages.

JDXiSysEx

JD-Xi specific SysEx message

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.RolandSysExMessage[source]

Bases: jdxi_editor.midi.message.sysex.SysExMessage

Specialized class for Roland JD-Xi SysEx messages.

manufacturer_id: int[source]
device_id: int[source]
model_id: list[int][source]
command: int[source]
sysex_address: jdxi_editor.midi.data.address.address.RolandSysExAddress[source]
value: int | List[int][source]
size: int = 1[source]
synth_type: int = None[source]
part: int = None[source]
dt1_command: int[source]
rq1_command: int[source]
__post_init__()[source]

Initialize data and resolve address bytes.

to_message_list() List[int][source]

Convert the SysEx message to a list of integers.

Returns:

list

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

Bases: jdxi_editor.midi.message.sysex.SysExMessage

Specialized class for Roland JD-Xi SysEx messages.

manufacturer_id: int[source]
device_id: int[source]
model_id: List[int][source]
command: int[source]
sysex_address: jdxi_editor.midi.data.address.address.RolandSysExAddress | 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]

Ensure proper initialization of address, model_id, and data fields.

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

from_sysex_address :param sysex_address: RolandSysExAddress :return: None

to_message_list() List[int][source]

to_message_list

Returns:

List[int]

construct_sysex(address: jdxi_editor.midi.data.address.address.RolandSysExAddress, *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.JDXiSysEx[source]

Bases: RolandSysEx

JD-Xi specific SysEx message

model_id: List[int][source]
device_id: int = 16[source]
command: int[source]
address: List[int] = [0, 0, 0, 0][source]
data: List[int] = [][source]
__post_init__()[source]

Validate message components

to_bytes() bytes[source]

Convert message to bytes for sending

calculate_checksum() int[source]

Calculate Roland checksum for the message

classmethod from_bytes(data: bytes)[source]

Create message from received bytes

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