jdxi_editor.ui.editors.drum.partial.tvf

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

Key Features:

  • Provides a graphical editor for modifying drum TVF parameters, including filter type, cutoff frequency, cutoff velocity curve, env depth, env velocity curve type, env velocity sens, env time1 velocity sens, env time4 velocity sens, env time1, env time2, env time3, env time4, env level0, env level1, env level2, env level3, and env level4.

  • Includes a visual envelope plot showing the 5-level, 4-time-segment TVF envelope curve.

Dependencies:

  • PySide6 (for UI components and event handling)

  • MIDIHelper (for handling MIDI communication)

  • PresetHandler (for managing synth presets)

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

Usage:

The DrumTVFSection 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 = MidiIOHelper() editor = DrumTVFSection(midi_helper) editor.show()

Classes

DrumTVFEnvPlot

Plot widget for drum TVF envelope visualization.

DrumTVFSection

Drum TVF Section for the JDXI Editor

Functions

midi_to_cutoff_level(→ float)

Convert MIDI value (0-127) to cutoff frequency level (0.0 to 127.0).

midi_to_time_normalized(→ float)

Convert MIDI value (0-127) to normalized time (0.0 to max_time seconds).

Module Contents

jdxi_editor.ui.editors.drum.partial.tvf.midi_to_cutoff_level(midi_value: int) float[source]

Convert MIDI value (0-127) to cutoff frequency level (0.0 to 127.0).

jdxi_editor.ui.editors.drum.partial.tvf.midi_to_time_normalized(midi_value: int, max_time: float = 10.0) float[source]

Convert MIDI value (0-127) to normalized time (0.0 to max_time seconds).

class jdxi_editor.ui.editors.drum.partial.tvf.DrumTVFEnvPlot(width: int = JDXiStyle.ADSR_PLOT_WIDTH, height: int = JDXiStyle.ADSR_PLOT_HEIGHT, envelope: dict = None, parent: PySide6.QtWidgets.QWidget = None)[source]

Bases: PySide6.QtWidgets.QWidget

Plot widget for drum TVF envelope visualization.

enabled = True[source]
envelope[source]
sample_rate = 256[source]
setEnabled(enabled)[source]
set_values(envelope: dict) None[source]

Update envelope values and refresh plot.

paintEvent(event)[source]

Paint the TVF envelope plot

class jdxi_editor.ui.editors.drum.partial.tvf.DrumTVFSection(controls: dict[jdxi_editor.midi.data.parameter.drum.partial.DrumPartialParam, PySide6.QtWidgets.QWidget], create_parameter_combo_box: Callable, create_parameter_slider: Callable, midi_helper: jdxi_editor.midi.io.helper.MidiIOHelper)[source]

Bases: PySide6.QtWidgets.QWidget

Drum TVF Section for the JDXI Editor

envelope_changed[source]
controls[source]
midi_helper[source]
_create_parameter_slider[source]
_create_parameter_combo_box[source]
envelope[source]
setup_ui()[source]

setup UI

_create_tvf_env_group() PySide6.QtWidgets.QGroupBox[source]

Envelope controls group

_create_tvf_basic_group() PySide6.QtWidgets.QGroupBox[source]

Basic TVF controls group

_create_tvf_plot()[source]
_update_envelope(key: str, value: int, param: jdxi_editor.midi.data.parameter.drum.partial.DrumPartialParam = None) None[source]

Update envelope value and refresh plot

Parameters:
  • key – str Envelope parameter key

  • value – int Display value from slider

  • param – AddressParameterDrumPartial Parameter object for conversion