jdxi_editor.midi.io.connection

MIDI Connection Singleton for JD-Xi

This module defines the MIDIConnection class, which serves as a singleton for managing MIDI input and output connections with the Roland JD-Xi synthesizer. It provides methods for sending MIDI messages, setting input callbacks, and identifying connected devices.

Features: - Implements a singleton pattern to ensure a single MIDI connection instance. - Manages MIDI input and output ports. - Sends MIDI messages with an optional UI indicator blink. - Sets a callback function for incoming MIDI messages. - Sends an Identity Request to detect and verify the connected device. - Retrieves firmware version information from the JD-Xi.

Dependencies: - rtmidi for MIDI communication. - logging for debugging and error handling. - DeviceInfo and IdentityRequest for device identification.

Example Usage:

midi_conn = MIDIConnection() midi_conn.initialize(midi_in, midi_out, main_window) midi_conn.send_message([0x90, 0x40, 0x7F]) # Send a Note On message if midi_conn.identify_device():

print(“Connected to JD-Xi:”, midi_conn.device_version)

Classes

MIDIConnection

Midi connection object

Module Contents

class jdxi_editor.midi.io.connection.MIDIConnection[source]

Midi connection object

_instance = None[source]
_midi_in = None[source]
_midi_out = None[source]
_main_window = None[source]
device_info: jdxi_editor.midi.sysex.device.DeviceInfo | None = None[source]
property midi_in[source]

Get MIDI input port

property midi_out[source]

Get MIDI output port

initialize(midi_in: rtmidi.MidiIn, midi_out: rtmidi.MidiOut, main_window=Optional[QMainWindow]) None[source]

Initialize MIDI connection with input and output ports

Parameters:
  • midi_in – rtmidi.MidiIn

  • midi_out – rtmidi.MidiOut

  • main_window – Optional[QMainWindow] for UI interaction

Returns:

None

send_message(message: Iterable[int]) None[source]

Send MIDI message and trigger indicator

Parameters:

message – Iterable[int], MIDI message to send

Returns:

None

identify_device() None[source]

Send Identity Request and verify response

property is_connected: bool[source]

Check if connected to JD-Xi

property device_version: str[source]

Get device firmware version