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
Midi connection object |
Module Contents
- class jdxi_editor.midi.io.connection.MIDIConnection[source]
Midi connection object
- device_info: jdxi_editor.midi.sysex.device.DeviceInfo | None = None[source]
- 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