jdxi_editor.ui.editors
Editor modules for JD-Xi parameters
Submodules
- jdxi_editor.ui.editors.analog
- jdxi_editor.ui.editors.arpeggio
- jdxi_editor.ui.editors.config
- jdxi_editor.ui.editors.digital
- jdxi_editor.ui.editors.drum
- jdxi_editor.ui.editors.effects
- jdxi_editor.ui.editors.helpers
- jdxi_editor.ui.editors.io
- jdxi_editor.ui.editors.main
- jdxi_editor.ui.editors.pattern
- jdxi_editor.ui.editors.synth
Classes
Analog Synth Editor UI. |
|
Arpeggio Editor Window |
|
class for Digital Synth Editor containing 3 partials |
|
Editor for JD-Xi Drum Kit parameters |
|
Effects Editor Window |
|
Vocal Effects Window Class |
|
Program Editor Window |
|
Base class for all editor windows |
Package Contents
- class jdxi_editor.ui.editors.AnalogSynthEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper | None = None, preset_helper: JDXiPresetHelper | None = None, parent: PySide6.QtWidgets.QWidget | None = None)[source]
Bases:
jdxi_editor.ui.editors.synth.editor.SynthEditorAnalog Synth Editor UI.
- amp_section: jdxi_editor.ui.editors.analog.amp.AnalogAmpSection | None = None
- oscillator_section: jdxi_editor.ui.editors.analog.oscillator.AnalogOscillatorSection | None = None
- filter_section: jdxi_editor.ui.editors.analog.filter.AnalogFilterSection | None = None
- read_request_button = None
- tab_widget = None
- lfo_section = None
- instrument_selection_label = None
- instrument_title_label = None
- preset_helper = None
- wave_buttons
- lfo_shape_buttons
- controls: Dict[jdxi_editor.midi.data.parameter.analog.AnalogParam, PySide6.QtWidgets.QWidget]
- updating_from_spinbox = False
- previous_json_data = None
- main_window = None
- adsr_mapping
- pitch_env_mapping
- pwm_mapping = []
- refresh_shortcut
- sub_osc_type_map
- filter_switch_map
- osc_waveform_map
- update_filter_state(value: int)[source]
Update the filter state
- Parameters:
value – int value
- Returns:
None
- _on_waveform_selected(waveform: jdxi_editor.midi.data.analog.oscillator.AnalogOscWave)[source]
Handle waveform button selection
- Parameters:
waveform – AnalogOscWave value
- Returns:
None
- get_controls_as_dict()[source]
Get the current values of self.controls as a dictionary. Override to handle waveform buttons specially.
- Returns:
dict A dictionary of control parameter names and their values.
- _on_lfo_shape_changed(value: int)[source]
Handle LFO shape change
- Parameters:
value – int value
- Returns:
None
- update_slider(param: jdxi_editor.midi.data.parameter.analog.AnalogParam, midi_value: int, successes: list = None, failures: list = None) None[source]
Helper function to update sliders safely.
- Parameters:
param – AddressParameterAnalog value
failures – list of failed parameters
successes – list of successful parameters
midi_value – int value
- Returns:
None
- update_adsr_widget(param: jdxi_editor.midi.data.parameter.analog.AnalogParam, midi_value: int, successes: list = None, failures: list = None) None[source]
Helper function to update ADSR widgets.
- Parameters:
param – AddressParameterAnalog value
midi_value – int value
failures – list of failed parameters
successes – list of successful parameters
- Returns:
None
- update_pitch_env_widget(parameter: jdxi_editor.midi.data.parameter.analog.AnalogParam, value: int, successes: list = None, failures: list = None) None[source]
Helper function to update ADSR widgets.
- Parameters:
parameter – AddressParameterAnalog value
value – int value
failures – list of failed parameters
successes – list of successful parameters
- Returns:
None
- update_pwm_widget(parameter: jdxi_editor.midi.data.parameter.analog.AnalogParam, value: int, successes: list = None, failures: list = None) None[source]
Helper function to update PWM widgets.
- Parameters:
parameter – AddressParameterAnalog value
value – int value
failures – list of failed parameters
successes – list of successful parameters
- Returns:
None
- _update_partial_controls(partial_no: int, sysex_data: dict, successes: list, failures: list) None[source]
Update sliders and combo boxes based on parsed SysEx data.
- Parameters:
sysex_data – dict SysEx data
successes – list SysEx data
failures – list SysEx data
- Returns:
None
- _update_waveform_buttons(value: int)[source]
Update the waveform buttons based on the OSC_WAVE value with visual feedback.
- Parameters:
value – int value
- Returns:
None
- _update_lfo_shape_buttons(value: int)[source]
Update the LFO shape buttons with visual feedback.
- Parameters:
value – int value
- Returns:
None
- _update_pw_controls_state(waveform: jdxi_editor.midi.data.analog.oscillator.AnalogOscWave)[source]
Enable/disable PW controls based on waveform
- Parameters:
waveform – AnalogOscWave value
- Returns:
None
- create_instrument_preset_group(synth_type: str = 'Analog') PySide6.QtWidgets.QGroupBox[source]
Create the instrument preset group box with tabs for normal and cheat presets.
- Parameters:
synth_type – str
- Returns:
QGroupBox
- class jdxi_editor.ui.editors.ArpeggioEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper, preset_helper: jdxi_editor.jdxi.preset.helper.JDXiPresetHelper | None = None, parent: PySide6.QtWidgets.QWidget | None = None)[source]
Bases:
jdxi_editor.ui.editors.synth.simple.BasicEditorArpeggio Editor Window
- midi_helper
- preset_helper = None
- address
- partial_number = 0
- instrument_icon_folder = 'arpeggiator'
- default_image = 'arpeggiator2.png'
- controls: Dict[picomidi.sysex.parameter.address.AddressParameter, PySide6.QtWidgets.QWidget]
- title_label
- image_label
- switch_button
- style_combo
- grid_combo
- duration_combo
- velocity_slider
- accent_slider
- octave_combo
- motif_combo
- class jdxi_editor.ui.editors.DigitalSynthEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper | None = None, preset_helper: jdxi_editor.jdxi.preset.helper.JDXiPresetHelper = None, synth_number: int = 1, parent: PySide6.QtWidgets.QWidget = None)[source]
Bases:
jdxi_editor.ui.editors.synth.editor.SynthEditorclass for Digital Synth Editor containing 3 partials
- preset_changed
- partial_number = None
- current_data = None
- midi_helper = None
- preset_helper
- main_window = None
- controls: Dict[jdxi_editor.midi.data.parameter.digital.DigitalPartialParam | jdxi_editor.midi.data.parameter.digital.DigitalCommonParam, PySide6.QtWidgets.QWidget]
- synth_number = 1
- refresh_shortcut
- adsr_parameters
- pitch_env_parameters
- pwm_parameters
- _create_partial_tab_widget(container_layout: PySide6.QtWidgets.QVBoxLayout, midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper) None[source]
Create the partial tab widget for the digital synth editor.
- Parameters:
container_layout – QVBoxLayout for the main container
midi_helper – MiodiIOHelper instance for MIDI communication
- Returns:
None
- _on_partial_state_changed(partial: jdxi_editor.midi.data.parameter.digital.DigitalPartialParam, enabled: bool, selected: bool) None[source]
Handle the state change of a partial (enabled/disabled and selected/unselected).
- Parameters:
partial – The partial to modify
enabled – Whether the partial is enabled (ON/OFF)
selected – Whether the partial is selected
- Returns:
None
- set_partial_state(partial: jdxi_editor.midi.data.parameter.digital.DigitalPartialParam, enabled: bool = True, selected: bool = True) bool | None[source]
Set the state of a partial (enabled/disabled and selected/unselected).
- Parameters:
partial – The partial to modify
enabled – Whether the partial is enabled (ON/OFF)
selected – Whether the partial is selected
- Returns:
True if successful, False otherwise
- _initialize_partial_states()[source]
Initialize partial states with defaults Default: Partial 1 enabled and selected, others disabled
- _handle_special_params(partial_no: int, param: picomidi.sysex.parameter.address.AddressParameter, value: int) None[source]
Handle special parameters that require additional UI updates.
- Parameters:
partial_no – int
param – AddressParameter
value – int
- Returns:
None
- _update_partial_controls(partial_no: int, sysex_data: dict, successes: list, failures: list) None[source]
Apply updates to the UI components based on the received SysEx data.
- Parameters:
partial_no – int
sysex_data – dict
successes – list
failures – list
- Returns:
None
- _update_filter_state(partial_no: int, value: int) None[source]
Update the filter state of a partial based on the given value.
- Parameters:
partial_no – int
value – int
- Returns:
None
- _update_common_controls(partial_number: int, sysex_data: Dict, successes: list = None, failures: list = None) None[source]
Update the UI components for tone common and modify parameters.
- Parameters:
partial_number – int partial number
sysex_data – Dictionary containing SysEx data
successes – List of successful parameters
failures – List of failed parameters
- Returns:
None
- _update_modify_controls(partial_number: int, sysex_data: dict, successes: list = None, failures: list = None) None[source]
Update the UI components for tone common and modify parameters.
- Parameters:
partial_number – int partial number
sysex_data – dict Dictionary containing SysEx data
successes – list List of successful parameters
failures – list List of failed parameters
- Returns:
None
- _update_partial_adsr_widgets(partial_no: int, param: jdxi_editor.midi.data.parameter.digital.DigitalPartialParam, midi_value: int, successes: list = None, failures: list = None)[source]
Update the ADSR widget for a specific partial based on the parameter and value.
- Parameters:
partial_no – int Partial number
param – AddressParameter address
midi_value – int value
- Returns:
None
- _update_partial_pitch_env_widgets(partial_no: int, param: jdxi_editor.midi.data.parameter.digital.DigitalPartialParam, midi_value: int, successes: list = None, failures: list = None)[source]
Update the Pitch Env widget for a specific partial based on the parameter and value.
- Parameters:
partial_no – int Partial number
param – AddressParameter address
midi_value – int value
successes – list = None,
failures – list = None,
- Returns:
None
- _update_pulse_width_widgets(partial_no: int, param: jdxi_editor.midi.data.parameter.digital.DigitalPartialParam, midi_value: int, successes: list = None, failures: list = None)[source]
Update the Pitch Env widget for a specific partial based on the parameter and value.
- Parameters:
partial_no – int Partial number
param – AddressParameter address
midi_value – int value
successes – list = None,
failures – list = None,
- Returns:
None
- _update_partial_selection_switch(param: picomidi.sysex.parameter.address.AddressParameter, value: int, successes: list, failures: list) None[source]
Update the partial selection switches based on parameter and value.
- Parameters:
param – AddressParameter
value – int
successes – list
failures – list
- Returns:
None
- _update_partial_selected_state(param: picomidi.sysex.parameter.address.AddressParameter, value: int, successes: list, failures: list) None[source]
Update the partial selected state based on parameter and value.
- Parameters:
param – AddressParameter
value – int
successes – list
failures – list
debug – bool
- Returns:
None
- class jdxi_editor.ui.editors.DrumCommonEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper | None = None, preset_helper: jdxi_editor.jdxi.preset.helper.JDXiPresetHelper | None = None, parent: PySide6.QtWidgets.QWidget | None = None)[source]
Bases:
jdxi_editor.ui.editors.synth.editor.SynthEditorEditor for JD-Xi Drum Kit parameters
- presets_parts_tab_widget = None
- preset_helper = None
- midi_helper = None
- partial_number = 0
- sysex_current_data = None
- sysex_previous_data = None
- partial_mapping
- main_window = None
- partial_editors
- partial_tab_widget
- instrument_image_label = None
- instrument_title_label = None
- controls: Dict[jdxi_editor.midi.data.parameter.drum.partial.DrumPartialParam | jdxi_editor.midi.data.parameter.drum.common.DrumCommonParam, PySide6.QtWidgets.QWidget]
- refresh_shortcut
- _handle_program_change(channel: int, program: int)[source]
Handle program change messages by requesting updated data
- Parameters:
channel – int
program – int
- update_partial_number(index: int)[source]
Update the current partial number based on tab index
- Parameters:
index – int partial number
- _update_partial_controls(partial_no: int, sysex_data: dict, successes: list, failures: list) None[source]
apply partial ui updates
- Parameters:
partial_no – int
sysex_data – dict
successes – list
failures – list
- Returns:
- _update_common_controls(partial: int, sysex_data: Dict, successes: list = None, failures: list = None)[source]
Update the UI components for tone common and modify parameters.
- Parameters:
partial – int
sysex_data – Dictionary containing SysEx data
successes – List of successful parameters
failures – List of failed parameters
- Returns:
None
- class jdxi_editor.ui.editors.EffectsCommonEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper, preset_helper: jdxi_editor.jdxi.preset.helper.JDXiPresetHelper = None, parent=None)[source]
Bases:
jdxi_editor.ui.editors.synth.simple.BasicEditorEffects Editor Window
- tab_widget = None
- midi_helper
- preset_helper = None
- EFX1_PARAMETERS
- EFX2_PARAMETERS
- efx1_param_labels
- efx2_param_labels
- midi_requests = []
- delay_params = None
- efx2_additional_params
- default_image = 'effects.png'
- instrument_icon_folder = 'effects'
- title_label
- image_label
- controls: Dict[jdxi_editor.midi.data.parameter.effects.effects.ReverbParam | jdxi_editor.midi.data.parameter.effects.common.AddressParameterEffectCommon | jdxi_editor.midi.data.parameter.effects.effects.Effect1Param | jdxi_editor.midi.data.parameter.effects.effects.Effect2Param, PySide6.QtWidgets.QWidget]
- tabs
- address
- sysex_composer
- showEvent(event: PySide6.QtGui.QShowEvent) None[source]
Override showEvent to request current settings from the instrument when the editor is shown. This ensures the sliders pick up the current settings from the instrument, similar to Digital 1, Digital 2, and Analog synth editors.
- Parameters:
event – QShowEvent
- update_flanger_rate_note_controls() None[source]
Update Flanger rate/note controls based on rate note switch.
- update_phaser_rate_note_controls() None[source]
Update Flanger rate/note controls based on rate note switch.
- _update_efx1_labels(effect_type: int)[source]
Update Effect 1 parameter labels based on selected effect type.
- Parameters:
effect_type – int
- Returns:
- _update_efx2_labels(effect_type: int)[source]
Update Effect 2 parameter labels based on selected effect type.
- Parameters:
effect_type – int
- _on_parameter_changed(param: picomidi.sysex.parameter.address.AddressParameter, value: int, address: jdxi_editor.midi.data.address.address.RolandSysExAddress = None)[source]
Handle parameter value changes from UI controls.
- class jdxi_editor.ui.editors.VocalFXEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper | None = None, preset_helper: jdxi_editor.jdxi.preset.helper.JDXiPresetHelper = None, parent: PySide6.QtWidgets.QWidget | None = None)[source]
Bases:
jdxi_editor.ui.editors.synth.simple.BasicEditorVocal Effects Window Class
- preset_helper = None
- address
- controls: Dict[picomidi.sysex.parameter.address.AddressParameter, PySide6.QtWidgets.QWidget]
- title_label
- image_label
- default_image = 'vocal_fx.png'
- instrument_icon_folder = 'vocal_fx'
- tab_widget
- class jdxi_editor.ui.editors.ProgramEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper | None = None, parent: PySide6.QtWidgets.QWidget | None = None, preset_helper: jdxi_editor.jdxi.preset.helper.JDXiPresetHelper = None)[source]
Bases:
jdxi_editor.ui.editors.synth.simple.BasicEditorProgram Editor Window
- program_changed
- title_right_vlayout = None
- program_list = None
- file_label = None
Initialize the ProgramEditor
- Parameters:
midi_helper – Optional[MidiIOHelper]
parent – Optional[QWidget]
preset_helper – JDXIPresetHelper
- midi_helper = None
- preset_helper = None
- channel
- midi_requests
- default_image = 'programs.png'
- instrument_icon_folder = 'programs'
- instrument_title_label
- layout = None
- midi_channel = 0
- genre_label = None
- program_number_combo_box = None
- program_name = ''
- bank_combo_box = None
- load_button = None
- save_button = None
- image_label = None
- title_label = None
- bank_label = None
- program_label = None
- genre_combo_box = None
- preset_type = None
- programs
- _current_playlist_row = None
- _playlist_midi_editor = None
- controls: Dict[picomidi.sysex.parameter.address.AddressParameter, PySide6.QtWidgets.QWidget]
- _create_preset_selection_widget() PySide6.QtWidgets.QWidget[source]
create_preset_selection_widget
- Returns:
QWidget
- load_preset_by_program_change(preset_index: int) None[source]
Load a preset by program change.
- Parameters:
preset_index – int
- _create_transport_group() PySide6.QtWidgets.QGroupBox[source]
_create_transport_group
- Returns:
QGroupBox
Transport controls area
- _create_program_selection_box() PySide6.QtWidgets.QGroupBox[source]
create_program_selection_box
- Returns:
QGroupBox
- on_preset_type_changed(index: int) None[source]
on_preset_type_changed
- Parameters:
index – int
Handle preset type selection change
- set_channel_and_preset_lists(preset_type: str) None[source]
set_channel_and_preset_lists
- Parameters:
preset_type
- Returns:
None
- update_category_combo_box_categories() None[source]
update_category_combo_box_categories
- Returns:
None
Update the category combo box.
- _populate_programs(search_text: str = '') None[source]
Populate the program list with available presets.
- Parameters:
search_text – str
- Returns:
None
- _populate_presets(search_text: str = '') None[source]
Populate the program list with available presets.
- Parameters:
search_text – str
- Returns:
None
- _init_synth_data(synth_type: jdxi_editor.jdxi.synth.type.JDXiSynth = JDXiSynth.DIGITAL_SYNTH_1, partial_number: int | None = 0) None[source]
- Parameters:
synth_type – JDXiSynth
partial_number – int
- Returns:
None
Initialize synth-specific data
- _create_mixer_section() PySide6.QtWidgets.QWidget[source]
_create_mixer_section
- Returns:
QWidget
Create general vocal effect controls section with scrolling
- update_tone_name_for_synth(tone_name: str, synth_type: str) None[source]
Update the tone name.
- Parameters:
tone_name – str
synth_type – str
- set_current_program_name(program_name: str, synth_type: str = None) None[source]
Set the current program name in the file label
- Parameters:
program_name – str
synth_type – str (optional), discarded for now
- Returns:
None
- populate_programs(search_text: str = '')[source]
Populate the program list with available presets. Uses SQLite database to ensure all user bank programs are loaded correctly.
- add_user_banks(filtered_list: list, bank: str, search_text: str = None) None[source]
Add user banks to the program list. Only adds generic entries for programs that don’t exist in the database. Uses SQLite database for reliable lookups. :param search_text: :param filtered_list: list of programs already loaded from database :param bank: str
- _create_user_programs_tab() PySide6.QtWidgets.QWidget[source]
Create the User Programs tab with a sortable, searchable table.
- Returns:
QWidget containing the user programs table
- _get_table_style() str[source]
Get custom styling for tables with rounded corners and charcoal embossed cells.
- Returns:
str CSS style string
- _populate_user_programs_table(search_text: str = '') None[source]
Populate the user programs table from SQLite database.
- Parameters:
search_text – Optional search text to filter programs
- _save_user_programs_changes() None[source]
Save changes made to the user programs table (e.g., genre edits) to the database.
- _create_playlist_tab() PySide6.QtWidgets.QWidget[source]
Create the Playlist tab with a table showing all playlists.
- Returns:
QWidget containing the playlist table
- _on_playlist_item_changed(item: PySide6.QtWidgets.QTableWidgetItem) None[source]
Handle changes to playlist name or description.
- Parameters:
item – The table item that was changed
- _on_playlist_selected(item: PySide6.QtWidgets.QTableWidgetItem) None[source]
Handle double-click on a playlist. Could open playlist editor or show playlist programs.
- Parameters:
item – The table item that was double-clicked
- _create_playlist_editor_tab() PySide6.QtWidgets.QWidget[source]
Create the Playlist Editor tab for editing playlist contents.
- Returns:
QWidget containing the playlist editor
- _on_playlist_programs_selection_changed() None[source]
Handle selection change in playlist programs table.
- _on_playlist_editor_playlist_changed(index: int) None[source]
Handle playlist selection change in the editor.
- _populate_playlist_programs_table(playlist_id: int) None[source]
Populate the playlist programs table with programs from the selected playlist.
- Parameters:
playlist_id – Playlist ID
- _on_cheat_preset_changed(row: int, cheat_preset_id: str | None) None[source]
Handle cheat preset selection change.
- Parameters:
row – Table row index
cheat_preset_id – Selected cheat preset ID or None
- _on_playlist_program_item_changed(item: PySide6.QtWidgets.QTableWidgetItem) None[source]
Handle changes to playlist program items (e.g., MIDI file path).
- Parameters:
item – The table item that was changed
- _play_playlist_program(index) None[source]
Play the MIDI file associated with a playlist program.
- Parameters:
index – QModelIndex of the play button
- _on_playlist_playback_finished()[source]
Called when MIDI playback finishes. Advances to the next playlist item.
- _on_playlist_program_double_clicked(item: PySide6.QtWidgets.QTableWidgetItem) None[source]
Handle double-click on a playlist program item. If the Program Name column (column 2) is clicked, show the Program Editor.
- Parameters:
item – The table item that was double-clicked
- _load_program_from_table_for_playlist(row: int) None[source]
Load a program from the playlist programs table and send MIDI Program Change.
- Parameters:
row – Row index in the table
- _load_cheat_preset(preset_id: str) None[source]
Load a cheat preset (Digital Synth preset) on the Analog Synth channel (Ch3).
- Parameters:
preset_id – Preset ID (e.g., “113”)
- _on_user_program_selected(item: PySide6.QtWidgets.QTableWidgetItem) None[source]
Handle double-click on a program in the user programs table. Loads the program via MIDI Program Change.
- Parameters:
item – The table item that was double-clicked
- _on_user_program_selection_changed() None[source]
Handle selection change in the user programs table. Loads the program via MIDI Program Change when a row is selected.
- _play_user_program(index) None[source]
Callback for Play button delegate - loads and plays the program.
- Parameters:
index – QModelIndex from the delegate
- _load_program_from_table(row: int) None[source]
Load a program from the table and send MIDI Program Change.
- Parameters:
row – Row index in the table
- on_program_number_changed(index: int) None[source]
Handle program number selection change. :param index: int
- update_current_synths(program_details: jdxi_editor.jdxi.program.program.JDXiProgram) None[source]
Update the current synth label. :param program_details: dict :return: None
- load_preset(program_number: int) None[source]
load_preset
- Parameters:
program_number – int
- Returns:
None
Load preset data and update UI
- _dispatch_sysex_to_area(json_sysex_data: str) None[source]
Dispatch SysEx data to the appropriate area for processing.
- Parameters:
json_sysex_data
- Returns:
None
- _update_common_controls(partial_number: int, sysex_data: Dict, successes: list = None, failures: list = None) None[source]
Update the UI components for tone common and modify parameters.
- Parameters:
partial_number – int partial number
sysex_data – Dictionary containing SysEx data
successes – List of successful parameters
failures – List of failed parameters
- Returns:
None
- _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
- class jdxi_editor.ui.editors.SynthEditor(midi_helper: object | None = None, parent: PySide6.QtWidgets.QWidget | None = None)[source]
Bases:
jdxi_editor.ui.editors.synth.base.SynthBaseBase class for all editor windows
- parameter_received
- partial_map
- sysex_current_data = None
- preset_list = None
- programs = None
- midi_helper
- cc_parameters
- nrpn_parameters
- nrpn_map
- controls
- bipolar_parameters = []
- midi_requests = []
- instrument_default_image = None
- instrument_title_label = None
- instrument_image_label = None
- instrument_icon_folder = None
- partial_number = None
- midi_channel = None
- preset_helper = None
- instrument_selection_combo = None
- preset_type = None
- refresh_shortcut
- close_shortcut
- json_parser
- _init_synth_data(synth_type: str = JDXiSynth.DIGITAL_SYNTH_1, partial_number: int | None = 0)[source]
Initialize synth-specific data.
- showEvent(event: PySide6.QtGui.QShowEvent) None[source]
Override showEvent to request current settings from the instrument when the editor is shown. This ensures the sliders pick up the current settings from the instrument, similar to Digital 1, Digital 2, and Analog synth editors.
- Parameters:
event – QShowEvent
- create_instrument_preset_group(synth_type: str = 'Analog') PySide6.QtWidgets.QGroupBox[source]
Create the instrument preset group box.
- Parameters:
synth_type – str
- Returns:
QGroupBox
- 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.
- _get_preset_helper_for_current_synth()[source]
Return the appropriate preset handler based on the current synth preset_type.
- _dispatch_sysex_to_area(json_sysex_data: str) None[source]
Dispatch SysEx data to the appropriate area for processing.
- Parameters:
json_sysex_data
- Returns:
None
- abstract _update_partial_controls(partial_no: int, sysex_data: dict, successes: list, failures: list) None[source]
Apply updates to the UI components based on the received SysEx data.
- Parameters:
partial_no – int
sysex_data – dict
successes – list
failures – list
- Returns:
None
By default has no partials, so subclass to implement partial updates
- _parse_sysex_json(json_sysex_data: str) dict | None[source]
_parse_sysex_json
- Parameters:
json_sysex_data – str
- Returns:
dict
- set_instrument_title_label(name: str, synth_type: str)[source]
set_instrument_title_label
- Parameters:
name – str
synth_type – str
- Returns:
None
- _handle_program_change(channel: int, program: int)[source]
Handle program change messages by requesting updated data
- _handle_control_change(channel: int, control: int, value: int)[source]
Handle program change messages by requesting updated data
- send_control_change(control_change: jdxi_editor.midi.data.control_change.base.ControlChange, value: int)[source]
Send MIDI CC message
- load_and_set_image(image_path, secondary_image_path=None)[source]
Helper function to load and set the image on the label.
- _get_instrument_selection_combo()[source]
Get the instrument selection combo box from either the widget or direct attribute. Returns None if not found.