Source code for jdxi_editor.midi.conversion.pwm

from jdxi_editor.midi.conversion.adsr import ParamBinding
from jdxi_editor.midi.conversion.value import ValueTransform
from jdxi_editor.midi.data.digital.oscillator import DigitalOscillatorWidgetTypes
from jdxi_editor.midi.data.parameter.digital.spec import JDXiMidiDigital as Digital

[docs] PWM_BINDINGS = { Digital.Param.OSC_PULSE_WIDTH: ParamBinding( ValueTransform.FRACTION, lambda s, p: s.partial_editors[p] .oscillator_tab.widget_for(DigitalOscillatorWidgetTypes.PWM) .pulse_width_control, ), Digital.Param.OSC_PULSE_WIDTH_MOD_DEPTH: ParamBinding( ValueTransform.FRACTION, lambda s, p: s.partial_editors[p] .oscillator_tab.widget_for(DigitalOscillatorWidgetTypes.PWM) .mod_depth_control, ), }
[docs] def resolve_pwm(s, p, param): osc = s.partial_editors[p].oscillator_tab if hasattr(osc, "controls") and param in osc.tuning: return osc.tuning[param] pwm_widget = osc.widget_for(DigitalOscillatorWidgetTypes.PWM) if pwm_widget: if param == Digital.Param.OSC_PULSE_WIDTH: return pwm_widget.pulse_width_control if param == Digital.Param.OSC_PULSE_WIDTH_MOD_DEPTH: return pwm_widget.mod_depth_control