jdxi_editor.midi.data.parameter.analog

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 log.message(filter_cutoff.address) # Output: 0x0C

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

Classes

AnalogParam

Analog synth parameters with area, address, and value range.

Module Contents

class jdxi_editor.midi.data.parameter.analog.AnalogParam(address: int, min_val: int, max_val: int, display_min: int | None = None, display_max: int | None = None, tooltip: str | None = None)[source]

Bases: picomidi.sysex.parameter.address.AddressParameter

Analog synth parameters with area, address, and value range.

TONE_NAME_1 = (0, 32, 127)[source]
TONE_NAME_2 = (1, 32, 127)[source]
TONE_NAME_3 = (2, 32, 127)[source]
TONE_NAME_4 = (3, 32, 127)[source]
TONE_NAME_5 = (4, 32, 127)[source]
TONE_NAME_6 = (5, 32, 127)[source]
TONE_NAME_7 = (6, 32, 127)[source]
TONE_NAME_8 = (7, 32, 127)[source]
TONE_NAME_9 = (8, 32, 127)[source]
TONE_NAME_10 = (9, 32, 127)[source]
TONE_NAME_11 = (10, 32, 127)[source]
TONE_NAME_12 = (11, 32, 127)[source]
LFO_SHAPE[source]
LFO_RATE[source]
LFO_FADE_TIME[source]
LFO_TEMPO_SYNC_SWITCH[source]
LFO_TEMPO_SYNC_NOTE[source]
LFO_PITCH_DEPTH[source]
LFO_FILTER_DEPTH[source]
LFO_AMP_DEPTH[source]
LFO_KEY_TRIGGER[source]
OSC_WAVEFORM = (22, 0, 2, 0, 2, 'Selects the waveform; SAW, TRI, PW-SQR')[source]
OSC_PITCH_COARSE[source]
OSC_PITCH_FINE[source]
OSC_PULSE_WIDTH[source]
OSC_PULSE_WIDTH_MOD_DEPTH[source]
OSC_PITCH_ENV_VELOCITY_SENSITIVITY[source]
OSC_PITCH_ENV_ATTACK_TIME = (28, 0, 127, 0, 127, 'Attack time for pitch envelope')[source]
OSC_PITCH_ENV_DECAY_TIME = (29, 0, 127, 0, 127, 'Decay time for pitch envelope')[source]
OSC_PITCH_ENV_DEPTH[source]
SUB_OSCILLATOR_TYPE[source]
FILTER_MODE_SWITCH = (32, 0, 1, 0, 1, 'Specifies whether to use the analog LPF or not use it (BYPASS).')[source]
FILTER_CUTOFF = (33, 0, 127, 0, 127, 'Specifies the cutoff frequency')[source]
FILTER_CUTOFF_KEYFOLLOW[source]
FILTER_RESONANCE[source]
FILTER_ENV_VELOCITY_SENSITIVITY[source]
FILTER_ENV_ATTACK_TIME = (37, 0, 127, 0, 127, 'Attack time for filter envelope')[source]
FILTER_ENV_DECAY_TIME = (38, 0, 127, 0, 127, 'Decay time for filter envelope')[source]
FILTER_ENV_SUSTAIN_LEVEL = (39, 0, 127, 0, 127, 'Sustain level for filter envelope')[source]
FILTER_ENV_RELEASE_TIME = (40, 0, 127, 0, 127, 'Release time for filter envelope')[source]
FILTER_ENV_DEPTH[source]
AMP_LEVEL[source]
AMP_LEVEL_KEYFOLLOW[source]
AMP_LEVEL_VELOCITY_SENSITIVITY[source]
AMP_ENV_ATTACK_TIME = (45, 0, 127, 0, 127, 'Attack time for amplitude envelope')[source]
AMP_ENV_DECAY_TIME = (46, 0, 127, 0, 127, 'Decay time for amplitude envelope')[source]
AMP_ENV_SUSTAIN_LEVEL = (47, 0, 127, 0, 127, 'Sustain level for amplitude envelope')[source]
AMP_ENV_RELEASE_TIME = (48, 0, 127, 0, 127, 'Release time for amplitude envelope')[source]
PORTAMENTO_SWITCH[source]
PORTAMENTO_TIME[source]
LEGATO_SWITCH[source]
OCTAVE_SHIFT[source]
PITCH_BEND_UP[source]
PITCH_BEND_DOWN[source]
LFO_PITCH_MODULATION_CONTROL[source]
LFO_FILTER_MODULATION_CONTROL[source]
LFO_AMP_MODULATION_CONTROL[source]
LFO_RATE_MODULATION_CONTROL[source]
display_min = None[source]
display_max = None[source]
tooltip = None[source]
switches = ['FILTER_SWITCH', 'PORTAMENTO_SWITCH', 'LEGATO_SWITCH', 'LFO_TEMPO_SYNC_SWITCH'][source]
bipolar_parameters = ['LFO_PITCH_DEPTH', 'LFO_FILTER_DEPTH', 'LFO_AMP_DEPTH', 'FILTER_ENV_VELOCITY_SENSITIVITY',...[source]
get_bipolar_parameters()[source]
validate_value(value: int) int[source]

Validate that the parameter value is within the allowed range.

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

Get the AnalogParameter by name.

Parameters:

param_name – str The parameter name

Returns:

Optional[object] The parameter

static get_name_by_address(address: int) str | None[source]

Return the parameter name for address given address.

Parameters:

address – int The address

Returns:

Optional[str] The parameter name

property display_name: str[source]

Get display name for the parameter

static get_address(param_name: str) int | None[source]

Get the address of address parameter by name.

Parameters:

param_name – str The parameter name

Returns:

Optional[int] The address

static get_range(param_name: str) Tuple[int, int][source]

Get the value range (min, max) of address parameter by name.

Parameters:

param_name – str The parameter name

Returns:

Tuple[int, int] The value range

static get_display_range(param_name: str) Tuple[int, int][source]

Get the display value range (min, max) of address parameter by name.

Parameters:

param_name – str The parameter name

Returns:

Tuple[int, int] The display value range

get_display_value() Tuple[int, int][source]

Get the display value range (min, max) for the parameter

Returns:

Tuple[int, int] The display value range

convert_to_midi(display_value: int) int[source]

Convert from display value to MIDI value

Parameters:

display_value – int The display value

Returns:

int The MIDI value

convert_from_midi(midi_value: int) int[source]

Convert from MIDI value to display value

Parameters:

midi_value – int The MIDI value

Returns:

int The display value

static get_display_value_by_name(param_name: str, value: int) int[source]

Get the display value for address parameter by name and value.

Parameters:
  • param_name – str The parameter name

  • value – int The value

Returns:

int The display value

static get_midi_range(param_name: str) Tuple[int, int][source]

Get the MIDI value range (min, max) of address parameter by name.

Parameters:

param_name – str The parameter name

Returns:

Tuple[int, int] The MIDI value range

static get_midi_value(param_name: str, value: int) int | None[source]

Get the MIDI value for address parameter by name and value.

Parameters:
  • param_name – str The parameter name

  • value – int The value

Returns:

Optional[int] The MIDI value

get_address_for_partial(partial_number: int = 0) 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 parameter area and address

get_envelope_param_type()[source]

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