jdxi_editor.ui.editors.synth.base
Synth Control Base Module
This module defines the SynthControlBase class, a Qt-based widget that provides MIDI control functionality for synthesizer parameters in the JD-Xi editor.
It facilitates: - Sending and receiving MIDI SysEx messages. - Handling parameter updates through UI elements (sliders, combo boxes, spin boxes, switches). - Managing MIDI helper instances for communication.
Dependencies: - PySide6 for GUI components. - jdxi_editor.midi for MIDI communication. - jdxi_editor.ui.widgets for UI elements.
Classes: - SynthControlBase: A base widget for controlling synth parameters via MIDI.
Classes
base class for all synth editors |
Module Contents
- class jdxi_editor.ui.editors.synth.base.SynthBase(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper | None = None, parent: PySide6.QtWidgets.QWidget = None)[source]
Bases:
PySide6.QtWidgets.QWidgetbase class for all synth editors
- controls: Dict[picomidi.sysex.parameter.address.AddressParameter, PySide6.QtWidgets.QWidget][source]
- property midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper[source]
- send_raw_message(message: bytes) bool[source]
Send a raw MIDI message using the MIDI helper.
- Parameters:
message – bytes MIDI message to send
- Returns:
bool True on success, False otherwise
- data_request(channel=None, program=None)[source]
Request the current value of the NRPN parameter from the device.
- Parameters:
channel – int MIDI channel to send the request on (discarded)
program – int Program number to request data for (discarded)
- _on_midi_message_received(message: mido.Message) None[source]
Handle incoming MIDI messages
- Parameters:
message – mido.Message MIDI message received
- Returns:
None
- send_tone_name(parameter_cls: picomidi.sysex.parameter.address.AddressParameter, tone_name: str) None[source]
send_tone_name
- Parameters:
tone_name – str Name of the Tone/preset
parameter_cls – AddressParameter
Send the characters of the tone name to SysEx parameters.
- send_midi_parameter(param: picomidi.sysex.parameter.address.AddressParameter, value: int, address: jdxi_editor.midi.data.address.address.RolandSysExAddress = None) bool[source]
Send MIDI parameter with error handling
- Parameters:
address – RolandSysExAddress
param – AddressParameter the parameter to send
value – int value to send
- Returns:
bool True on success, False otherwise
- get_controls_as_dict()[source]
Get the current values of self.controls as a dictionary.
- Returns:
dict A dictionary of control parameter names and their values.
- _on_parameter_changed(param: picomidi.sysex.parameter.address.AddressParameter, display_value: int, address: jdxi_editor.midi.data.address.address.RolandSysExAddress = None) None[source]
Handle parameter change event, convert display value to MIDI value,
- Parameters:
param – AddressParameter Parameter that was changed
display_value – int Display value from the UI control
- Returns:
None
- _create_parameter_slider(param: picomidi.sysex.parameter.address.AddressParameter, label: str, vertical: bool = False, initial_value: int | None = 0, address: jdxi_editor.midi.data.address.address.RolandSysExAddress = None, show_value_label: bool = True) jdxi_editor.ui.widgets.slider.Slider[source]
Create a slider for an address parameter with proper display conversion.
- Parameters:
param – AddressParameter Parameter to create slider for
label – str label for the slider
initial_value – int initial value for the slider
vertical – bool whether the slider is vertical
address – RolandSysExAddress
show_value_label – str whether to show the value label
- Returns:
Slider
- _create_parameter_combo_box(param: picomidi.sysex.parameter.address.AddressParameter, label: str = None, options: list = None, values: list = None, show_label: bool = True) jdxi_editor.ui.widgets.combo_box.combo_box.ComboBox[source]
Create a combo box for an address parameter with options and values.
- Parameters:
param – AddressParameter
label – str label for the combo box
options – list of options to display in the combo box
values – list of values corresponding to the options
show_label – bool whether to show the label
- Returns:
ComboBox
- _create_parameter_spin_box(param: picomidi.sysex.parameter.address.AddressParameter, label: str = None) jdxi_editor.ui.widgets.spin_box.spin_box.SpinBox[source]
Create address spin box for address parameter with proper display conversion
- Parameters:
param – AddressParameter Parameter to create spin box for
label – str label for the spin box
- Returns:
SpinBox
- _create_parameter_switch(param: picomidi.sysex.parameter.address.AddressParameter, label: str, values: list[str]) jdxi_editor.ui.widgets.switch.switch.Switch[source]
Create a switch for an address parameter with specified label and values.
- Parameters:
param – AddressParameter Parameter to create switch for
label – str label for the switch
values – list of values for the switch
- Returns:
Switch
- _init_synth_data(synth_type: jdxi_editor.jdxi.synth.type.JDXiSynth = JDXiSynth.DIGITAL_SYNTH_1, partial_number: int | None = 0)[source]
Initialize synth-specific data.
- _update_slider(param: picomidi.sysex.parameter.address.AddressParameter, midi_value: int, successes: list = None, failures: list = None, slider: PySide6.QtWidgets.QWidget = None) None[source]
Update slider based on parameter and value.
- Parameters:
param – AddressParameter
midi_value – int value
successes – list
failures – list
- Returns:
None
- _update_switch(param: picomidi.sysex.parameter.address.AddressParameter, midi_value: int, successes: list = None, failures: list = None) None[source]
Update switch based on parameter and value.
- Parameters:
param – AddressParameter
midi_value – int value
successes – list
failures – list
- Returns:
None
- _update_partial_slider(partial_no: int, param: picomidi.sysex.parameter.address.AddressParameter, value: int, successes: list = None, failures: list = None) None[source]
Update the slider for a specific partial based on the parameter and value.
- Parameters:
partial_no – int
param – AddressParameter
value – int
successes – list list of successful updates
failures – list list of failed updates
- Returns:
None