jdxi_editor.midi.message.sysex

This module provides functionality for constructing, parsing, and handling Roland JD-Xi SysEx messages. It includes support for both writing (DT1) and reading (RQ1) parameter data, ensuring compliance with Roland’s SysEx format.

Features:

  • Constructs valid SysEx messages for Roland JD-Xi.

  • Supports both parameter write (DT1) and read (RQ1) operations.

  • Computes and verifies Roland SysEx checksums.

  • Allows dynamic configuration of MIDI parameters.

  • Provides utilities to convert between byte sequences and structured data.

Classes:

  • RolandSysEx: Base class for handling Roland SysEx messages.

  • SysExParameter: Enum for predefined SysEx parameters and command mappings.

  • SysExMessage: Helper class for constructing and sending SysEx messages.

Usage Example:

```python message = SysExMessage(area=0x19, synth_type=0x01, part=0x00, group=0x00, parameter=0x10, value=0x7F) sysex_bytes = message.construct_sysex() print(sysex_bytes) # Outputs a valid SysEx message as a byte sequence [0xF0, 0x41, 0x10, 0x00, 0x00, 0x00, 0x0E, 0x12, 0x19, 0x01, 0x00, 0x00, 0x10, 0x7F, 0x57, 0xF7]

Attributes

JD_XI_HEADER_BYTES

Classes

SysexParameter

SysEx Parameters for Roland JD-Xi

SysExMessage

Base class for MIDI System Exclusive (SysEx) messages.

Module Contents

jdxi_editor.midi.message.sysex.JD_XI_HEADER_BYTES[source]
class jdxi_editor.midi.message.sysex.SysexParameter[source]

Bases: enum.Enum

SysEx Parameters for Roland JD-Xi

DT1_COMMAND_12[source]
RQ1_COMMAND_11[source]
PROGRAM_COMMON[source]
classmethod get_command_name(command_type: int) str | None[source]

Retrieve the command name given a command type.

class jdxi_editor.midi.message.sysex.SysExMessage[source]

Bases: jdxi_editor.midi.message.midi.MidiMessage

Base class for MIDI System Exclusive (SysEx) messages.

start_of_sysex: int[source]
manufacturer_id: int[source]
device_id: int[source]
model_id: list[int] | None = None[source]
command: int[source]
address: list[int] | None = None[source]
data: list[int] | None = None[source]
end_of_sysex: int[source]
__post_init__() None[source]

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

calculate_checksum() int[source]

Calculate Roland checksum: (128 - sum(bytes) & 0x7F).

to_message_list() List[int][source]

Convert the SysEx message to a list of integers.

classmethod from_bytes(data: bytes) SysExMessage[source]

Parse a received SysEx message into an instance.