jdxi_editor.ui.widgets.envelope.base ==================================== .. py:module:: jdxi_editor.ui.widgets.envelope.base .. autoapi-nested-parse:: Base Envelope Widget Attributes ---------- .. autoapisummary:: jdxi_editor.ui.widgets.envelope.base.TOOLTIPS Classes ------- .. autoapisummary:: jdxi_editor.ui.widgets.envelope.base.EnvelopeWidgetBase Module Contents --------------- .. py:data:: TOOLTIPS .. py:class:: EnvelopeWidgetBase(parameters: list[picomidi.sysex.parameter.address.AddressParameter], envelope_keys: list[str], create_parameter_slider: Callable, midi_helper: Optional[jdxi_editor.midi.io.helper.MidiIOHelper] = None, address: Optional[jdxi_editor.midi.data.address.address.JDXiSysExAddress] = None, controls: Optional[dict[picomidi.sysex.parameter.address.AddressParameter, jdxi_editor.ui.widgets.slider.Slider]] = None, parent: Optional[PySide6.QtWidgets.QWidget] = None) Bases: :py:obj:`PySide6.QtWidgets.QWidget` Base class for envelope widgets in the JD-Xi editor .. py:attribute:: envelope_changed .. py:attribute:: plot :value: None .. py:attribute:: address :value: None .. py:attribute:: midi_helper :value: None .. py:attribute:: controls :value: None .. py:attribute:: envelope .. py:attribute:: _create_parameter_slider .. py:attribute:: _params .. py:attribute:: _keys .. py:attribute:: _control_widgets :value: [] .. py:method:: setEnabled(enabled: bool) .. py:method:: update() Update the envelope values and plot .. py:method:: _create_control_layout(slider_specs: list[jdxi_editor.ui.widgets.envelope.slider_spec.EnvControlSpec]) -> PySide6.QtWidgets.QGridLayout Create Control Layout .. py:method:: set_values(envelope: dict) -> None Update envelope values and trigger address redraw :param envelope: dict :return: None .. py:method:: emit_envelope_changed() -> None Emit the envelope changed signal :return: None .. py:method:: on_control_changed(change: dict) -> None Control Change callback :param change: dict envelope :return: None :emits: dict pitch envelope parameters .. py:method:: on_plot_envelope_changed(envelope: dict) .. py:method:: update_envelope_from_controls() -> None Update envelope values from slider controls. :return: .. py:method:: update_controls_from_envelope() -> None Update slider controls from envelope values. :return: None .. py:method:: showEvent(event: PySide6.QtGui.QShowEvent) -> None When widget is shown, sync plot from current control values (e.g. after startup load). .. py:method:: apply_envelope(envelope: dict, source: str) Central state synchronizer. source: "controls" | "plot" | "sysex" .. py:method:: block_control_signals(state: bool) .. py:method:: refresh_plot_from_controls() :abstractmethod: