drum ==== .. py:module:: drum .. autoapi-nested-parse:: Drum Plot Widgets ================= This module defines plot widgets for drum envelope visualization: - DrumPitchEnvPlot: Visualizes drum pitch envelope - DrumTVFEnvPlot: Visualizes drum TVF (Time Variant Filter) envelope - DrumTVAEnvPlot: Visualizes drum TVA (Time Variant Amplifier) envelope All plots digital 5-level, 4-time-segment envelope curves with interactive visualization. Classes ------- .. autoapisummary:: drum.DrumPitchEnvPlot drum.DrumTVFEnvPlot drum.DrumTVAEnvPlot Functions --------- .. autoapisummary:: drum.midi_to_pitch_level drum.midi_to_cutoff_level drum.midi_to_time_normalized Module Contents --------------- .. py:function:: midi_to_pitch_level(midi_value: int) -> float Convert MIDI value (1-127, representing -63 to +63) to pitch level (-63.0 to +63.0). .. py:function:: midi_to_cutoff_level(midi_value: int) -> float Convert MIDI value (0-127) to cutoff frequency level (0.0 to 127.0). .. py:function:: midi_to_time_normalized(midi_value: int, max_time: float = 10.0) -> float Convert MIDI value (0-127) to normalized time (0.0 to max_time seconds). .. py:class:: DrumPitchEnvPlot(width: int = JDXi.UI.Style.ADSR_PLOT_WIDTH, height: int = JDXi.UI.Style.ADSR_PLOT_HEIGHT, envelope: dict = None, parent: PySide6.QtWidgets.QWidget = None) Bases: :py:obj:`jdxi_editor.ui.widgets.plot.base.BasePlotWidget` Plot widget for drum pitch envelope visualization. .. py:attribute:: enabled :value: True .. py:attribute:: envelope .. py:attribute:: sample_rate :value: 256 .. py:method:: setEnabled(enabled) .. py:method:: set_values(envelope: dict) -> None Update envelope values and refresh plot. .. py:method:: paintEvent(event) Paint the pitch envelope plot .. py:class:: DrumTVFEnvPlot(width: int = JDXi.UI.Style.ADSR_PLOT_WIDTH, height: int = JDXi.UI.Style.ADSR_PLOT_HEIGHT, envelope: dict = None, parent: PySide6.QtWidgets.QWidget = None) Bases: :py:obj:`jdxi_editor.ui.widgets.plot.base.BasePlotWidget` Plot widget for drum TVF envelope visualization. .. py:attribute:: enabled :value: True .. py:attribute:: envelope .. py:attribute:: sample_rate :value: 256 .. py:method:: setEnabled(enabled) .. py:method:: set_values(envelope: dict) -> None Update envelope values and refresh plot. .. py:method:: paintEvent(event) Paint the TVF envelope plot .. py:class:: DrumTVAEnvPlot(width: int = JDXi.UI.Style.ADSR_PLOT_WIDTH, height: int = JDXi.UI.Style.ADSR_PLOT_HEIGHT, envelope: dict = None, parent: PySide6.QtWidgets.QWidget = None) Bases: :py:obj:`jdxi_editor.ui.widgets.plot.base.BasePlotWidget` Plot widget for drum TVA envelope visualization. .. py:attribute:: enabled :value: True .. py:attribute:: envelope .. py:attribute:: sample_rate :value: 256 .. py:method:: setEnabled(enabled) .. py:method:: set_values(envelope: dict) -> None Update envelope values and refresh plot. .. py:method:: paintEvent(event) Paint the TVA envelope plot