jdxi_editor.midi.data.parameter.digital.partial

This class defines digital synthesizer parameters for the Roland JD-Xi, mapping various synthesis parameters to their corresponding memory addresses and valid value ranges.

The parameters include: - Oscillator settings (waveform, pitch, detune, envelope, etc.) - Filter settings (cutoff, resonance, envelope, key follow, etc.) - Amplitude settings (level, velocity, envelope, pan, etc.) - LFO (Low-Frequency Oscillator) settings (waveform, rate, depth, sync, etc.) - Modulation LFO settings (waveform, rate, depth, sync, etc.) - Additional synthesis controls (aftertouch, wave gain, super saw detune, etc.) - PCM wave settings (wave number, gain, high-pass filter cutoff, etc.)

Each parameter is stored as address tuple containing:

(memory_address, min_value, max_value)

- OSC_WAVE

Defines the oscillator waveform preset_type.

- FILTER_CUTOFF

Controls the filter cutoff frequency.

- AMP_LEVEL

Sets the overall amplitude level.

- LFO_RATE

Adjusts the rate of the low-frequency oscillator.

- MOD_LFO_PITCH_DEPTH

Modulates pitch using the secondary LFO.

-
Type:

Other parameters follow address similar structure.

__init__(self, address

int, min_val: int, max_val: int): Initializes address DigitalParameter instance with an address and value range.

Usage Example:

filter_cutoff = DigitalParameter(0x0C, 0, 127) # Filter Cutoff Frequency print(filter_cutoff.address) # Output: 0x0C

This class helps structure and manage parameter mappings for JD-Xi SysEx processing.

Classes

DigitalPartialParam

Digital synth parameters with their addresses and value ranges

Module Contents

class jdxi_editor.midi.data.parameter.digital.partial.DigitalPartialParam(address: int, min_val: int, max_val: int, display_min: int | None = None, display_max: int | None = None, tooltip: str | None = None, display_name: str | None = None, options: list | None = None, values: list | None = None)[source]

Bases: picomidi.sysex.parameter.address.AddressParameter

Digital synth parameters with their addresses and value ranges

display_min[source]
display_max[source]
tooltip[source]
_display_name = None[source]
options = None[source]
values = None[source]
bipolar_parameters = ['OSC_PITCH', 'OSC_DETUNE', 'OSC_PITCH_ENV_DEPTH', 'FILTER_CUTOFF_KEYFOLLOW',...[source]
CONVERSION_OFFSETS[source]
get_display_value() Tuple[int, int][source]

Get the digital range for the parameter

OSC_WAVEFORM[source]
OSC_WAVE_VARIATION[source]
OSC_PITCH_COARSE[source]
OSC_PITCH_FINE[source]
OSC_PULSE_WIDTH_MOD_DEPTH[source]
OSC_PULSE_WIDTH[source]
OSC_PITCH_ENV_ATTACK_TIME[source]
OSC_PITCH_ENV_DECAY_TIME[source]
OSC_PITCH_ENV_DEPTH[source]
FILTER_MODE_SWITCH[source]
FILTER_SLOPE[source]
FILTER_CUTOFF[source]
FILTER_CUTOFF_KEYFOLLOW[source]
FILTER_ENV_VELOCITY_SENSITIVITY[source]
FILTER_RESONANCE[source]
FILTER_ENV_ATTACK_TIME[source]
FILTER_ENV_DECAY_TIME[source]
FILTER_ENV_SUSTAIN_LEVEL[source]
FILTER_ENV_RELEASE_TIME[source]
FILTER_ENV_DEPTH[source]
AMP_LEVEL[source]
AMP_VELOCITY[source]
AMP_ENV_ATTACK_TIME[source]
AMP_ENV_DECAY_TIME[source]
AMP_ENV_SUSTAIN_LEVEL[source]
AMP_ENV_RELEASE_TIME[source]
AMP_PAN[source]
AMP_LEVEL_KEYFOLLOW[source]
LFO_SHAPE[source]
LFO_RATE[source]
LFO_TEMPO_SYNC_SWITCH[source]
LFO_TEMPO_SYNC_NOTE[source]
LFO_FADE_TIME[source]
LFO_KEY_TRIGGER[source]
LFO_PITCH_DEPTH[source]
LFO_FILTER_DEPTH[source]
LFO_AMP_DEPTH[source]
LFO_PAN_DEPTH[source]
MOD_LFO_SHAPE[source]
MOD_LFO_RATE[source]
MOD_LFO_TEMPO_SYNC_SWITCH[source]
MOD_LFO_TEMPO_SYNC_NOTE[source]
OSC_PULSE_WIDTH_SHIFT[source]
MOD_LFO_PITCH_DEPTH[source]
MOD_LFO_FILTER_DEPTH[source]
MOD_LFO_AMP_DEPTH[source]
MOD_LFO_PAN[source]
MOD_LFO_RATE_CTRL[source]
CUTOFF_AFTERTOUCH[source]
LEVEL_AFTERTOUCH[source]
HPF_CUTOFF[source]
SUPER_SAW_DETUNE[source]
PCM_WAVE_GAIN[source]
PCM_WAVE_NUMBER[source]
property display_name: str[source]

Get digital name for the parameter (from ParameterSpec or fallback).

get_switch_text(value: int) str[source]

Get digital text for switch values

validate_value(value: int) int[source]

Validate and convert parameter value to MIDI range (0-127).

get_address_for_partial(partial_number: int) Tuple[int, int][source]

Get parameter area and address adjusted for partial number.

Parameters:

partial_number – int The partial number

Returns:

Tuple[int, int] The (group, address) tuple

static get_by_name(param_name: str) object | None[source]

Get the DigitalParameter by name.

Parameters:

param_name – str The parameter name

Returns:

Optional[AddressParameterDigitalPartial] The parameter

Return the parameter member by name, or None if not found

convert_value(value: int, reverse: bool = False) int[source]

Converts value in both directions based on CONVERSION_OFFSETS

Parameters:
  • value – int The value

  • reverse – bool The reverse flag

Returns:

int The converted value

convert_to_midi(slider_value: int) int[source]

Convert from digital value to MIDI value

Parameters:

slider_value – int The digital value

Returns:

int The MIDI value

convert_from_midi(midi_value: int) int[source]

Convert from MIDI value to digital value

Parameters:

midi_value – int The MIDI value

Returns:

int The digital value

get_envelope_param_type()[source]

Returns a envelope_param_type, if the parameter is part of an envelope, otherwise returns None.

Returns:

Optional[str] The envelope parameter type