jdxi_editor.ui.editors.analog.editor

This module defines the AnalogSynthEditor class, which provides a PySide6-based user interface for editing analog synthesizer parameters in the Roland JD-Xi synthesizer. It extends the SynthEditor base class and integrates MIDI communication for real-time parameter adjustments and preset management.

Key Features:

  • Provides a graphical editor for modifying analog synth parameters, including oscillator, filter, amp, LFO, and envelope settings.

  • Supports MIDI communication to send and receive real-time parameter changes.

  • Allows selection of different analog synth presets from a dropdown menu.

  • Displays an instrument image that updates based on the selected preset.

  • Includes a scrollable layout for managing a variety of parameter controls.

  • Implements bipolar parameter handling for proper UI representation.

  • Supports waveform selection with custom buttons and icons.

  • Provides a “Send Read Request to Synth” button to retrieve current synth settings.

  • Enables MIDI-triggered updates via incoming program changes and parameter adjustments.

Dependencies:

  • PySide6 (for UI components and event handling)

  • MIDIHelper (for handling MIDI communication)

  • PresetHandler (for managing synth presets)

  • Various custom enums and helper classes (Analog.Parameter, AnalogCommonParameter, etc.)

Usage:

The AnalogSynthEditor class can be instantiated as part of a larger PySide6 application. It requires a MIDIHelper instance for proper communication with the synthesizer.

Example:

midi_helper = MIDIHelper() preset_helper = PresetHandler() editor = AnalogSynthEditor(midi_helper, preset_helper) editor.show()

Attributes

_root

app

Classes

AnalogSynthEditor

Analog Synth Editor UI.

Module Contents

jdxi_editor.ui.editors.analog.editor._root[source]
class jdxi_editor.ui.editors.analog.editor.AnalogSynthEditor(midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper | None = None, preset_helper: jdxi_editor.ui.preset.helper.JDXiPresetHelper | None = None, parent: PySide6.QtWidgets.QWidget | None = None)[source]

Bases: jdxi_editor.ui.editors.base.editor.BaseSynthEditor

Analog Synth Editor UI.

SUB_OSC_TYPE_MAP[source]
SYNTH_SPEC[source]
preset_helper = None[source]
main_window = None[source]
analog = True[source]
adsr_mapping[source]
pitch_env_mapping[source]
pwm_mapping[source]
refresh_shortcut[source]
filter_switch_map[source]
osc_waveform_map[source]
setup_ui()[source]

Set up the Analog Synth Editor UI.

_create_sections()[source]

Create the sections for the Analog Synth Editor. Each section in its own try/except so one failure does not prevent others from showing.

_build_parameter_mappings()[source]

Populate adsr_mapping, pitch_env_mapping, pwm_mapping only when the corresponding sections exist.

_init_parameter_mappings()[source]

Initialize MIDI parameter mappings.

update_filter_controls_state(mode: int)[source]

Update filter controls enabled state (delegate to section, same mechanism as Digital).

_on_filter_mode_changed(mode: int)[source]

Handle filter mode changes (callback from filter section when mode button clicked).

jdxi_editor.ui.editors.analog.editor.app[source]