jdxi_editor.ui.widgets.pitch.envelope ===================================== .. py:module:: jdxi_editor.ui.widgets.pitch.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. Classes ------- .. autoapisummary:: jdxi_editor.ui.widgets.pitch.envelope.EnvelopeControlSpec jdxi_editor.ui.widgets.pitch.envelope.PitchEnvWidget Module Contents --------------- .. py:class:: EnvelopeControlSpec .. py:attribute:: param :type: picomidi.sysex.parameter.address.AddressParameter .. py:attribute:: env_param :type: str .. py:attribute:: min_value :type: int .. py:attribute:: max_value :type: int .. py:attribute:: label :type: str .. py:attribute:: units :type: str :value: '' .. py:attribute:: enabled :type: bool :value: True .. py:class:: PitchEnvWidget(attack_param: picomidi.sysex.parameter.address.AddressParameter, decay_param: picomidi.sysex.parameter.address.AddressParameter, depth_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.JDXiSysExAddress] = None, parent: Optional[PySide6.QtWidgets.QWidget] = None, analog: bool = False) Bases: :py:obj:`jdxi_editor.ui.widgets.envelope.base.EnvelopeWidgetBase` Pitch Envelope Class .. py:attribute:: envelope_changed .. py:attribute:: controls .. py:attribute:: _create_parameter_slider :value: None .. py:attribute:: envelope .. py:attribute:: _control_widgets :value: [] .. py:attribute:: layout .. py:attribute:: plot .. py:method:: _create_control_layout(specs: list[EnvelopeControlSpec]) -> PySide6.QtWidgets.QGridLayout Create Control Layout .. py:method:: update_envelope_from_controls() Update envelope values from slider controls. :return: .. py:method:: update_controls_from_envelope() Update slider controls from envelope values. :return: None .. py:method:: refresh_plot_from_controls()