envelope ======== .. py:module:: envelope .. autoapi-nested-parse:: ADSR Widget for Roland JD-Xi This widget provides address visual interface for editing ADSR (Attack, Decay, Sustain, Release) envelope parameters. It includes: - Interactive sliders for each ADSR parameter - Visual envelope plot - Real-time parameter updates - MIDI parameter integration via SynthParameter objects The widget supports both analog and digital synth parameters and provides visual feedback through an animated envelope curve. Submodules ---------- .. toctree:: :maxdepth: 1 /autoapi/envelope/base/index Attributes ---------- .. autoapisummary:: envelope.app Classes ------- .. autoapisummary:: envelope.WMTEnvelopeWidget Module Contents --------------- .. py:class:: WMTEnvelopeWidget(fade_lower_param: picomidi.sysex.parameter.address.AddressParameter, range_lower_param: picomidi.sysex.parameter.address.AddressParameter, depth_param: picomidi.sysex.parameter.address.AddressParameter, range_upper_param: picomidi.sysex.parameter.address.AddressParameter, fade_upper_param: picomidi.sysex.parameter.address.AddressParameter, midi_helper: Optional[jdxi_editor.midi.io.helper.MidiIOHelper] = None, create_parameter_slider: Callable = None, controls: dict[picomidi.sysex.parameter.address.AddressParameter, PySide6.QtWidgets.QWidget] = None, address: Optional[jdxi_editor.midi.data.address.address.RolandSysExAddress] = None, parent: Optional[PySide6.QtWidgets.QWidget] = None) Bases: :py:obj:`jdxi_editor.ui.widgets.envelope.base.EnvelopeWidgetBase` Pitch Envelope Class .. py:attribute:: envelope_changed .. py:attribute:: address :value: None .. py:attribute:: midi_helper :value: None .. py:attribute:: level_param .. py:attribute:: _create_parameter_slider :value: None .. py:attribute:: envelope .. py:attribute:: fade_lower_control .. py:attribute:: range_lower_control .. py:attribute:: depth_control .. py:attribute:: range_upper_control .. py:attribute:: fade_upper_control .. py:attribute:: _control_widgets .. py:attribute:: layout .. py:attribute:: envelope_spinbox_map .. py:attribute:: plot .. py:method:: set_values(envelope: dict) Update envelope values and trigger address redraw :param envelope: dict :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:: update_envelope_from_spinboxes() Update envelope values from spinboxes :emits: dict pitch envelope parameters .. py:method:: update_spinboxes_from_envelope() Update spinboxes from envelope values :emits: dict pitch envelope parameters .. py:method:: update_envelope_from_slider(slider: PySide6.QtWidgets.QSlider) -> None Update envelope with value from a single slider :param slider: QSlider :return: .. py:method:: update_envelope_from_controls() -> None Update envelope values from slider controls .. py:method:: update_controls_from_envelope_old() -> None Update slider controls from envelope values. .. py:method:: update_controls_from_envelope() -> None Update slider controls from envelope values. .. py:data:: app