jdxi_editor.midi.sysex.parser.utils

JD-Xi SysEx Parser Module

This module provides functions to parse JD-Xi synthesizer SysEx data, extracting relevant tone parameters for Digital, Analog, and Drum Kit sounds. It includes utilities for safely retrieving values, mapping address bytes to synth areas, extracting tone names, and identifying tone types.

Functions:
  • safe_get: Safely retrieves values from SysEx data.

  • extract_hex: Extracts address hex value from SysEx data.

  • get_temporary_area: Maps SysEx address bytes to temporary areas.

  • get_synth_tone: Maps byte values to synth tone types.

  • extract_tone_name: Extracts and cleans the tone name from SysEx data.

  • parse_parameters: Parses JD-Xi tone parameters for different synth types.

  • parse_sysex: Parses JD-Xi tone data from SysEx messages.

Attributes

UNKNOWN

UNKNOWN_AREA

Classes

ParameterLength

Generic enumeration.

Functions

get_byte_offset_by_tone_name(→ int)

Safely retrieve values from SysEx data with an optional offset.

extract_hex(→ str)

Extract address hex value from data safely.

extract_tone_name(→ str)

Extract and clean the tone name from SysEx data.

log_metadata(metadata, temporary_area, synth_tone)

determine_tone_mapping(→ Tuple[str, Any])

determine tone mapping

parse_parameters(→ Dict[str, int])

Parses JD-Xi tone parameters from SysEx data for Digital, Analog, and Digital Common types.

parse_single_parameter(→ Dict[str, int])

Parses JD-Xi tone parameters from SysEx data for Digital, Analog, and Digital Common types.

safe_extract(→ str)

Safely extract hex data from a byte sequence, or return "Unknown" if out of bounds.

address_to_index(→ int)

Convert a 2-byte address (MSB, LSB) to a flat integer index.

initialize_parameters(→ Dict[str, str])

Initialize parameters with essential fields extracted from SysEx data.

_return_minimal_metadata(→ Dict[str, str])

Return minimal metadata for a JD-Xi SysEx message.

_get_tone_from_data(→ tuple[str, int])

Determines synth tone type and offset from SysEx data.

is_short_data(data)

is short data

parse_sysex_new(→ Dict[str, str])

Parses JD-Xi tone data from SysEx messages.

parse_sysex(→ Dict[str, str])

Parses JD-Xi tone data from SysEx messages.

update_data_with_parsed_parameters(data, ...)

Update parsed_data with parsed parameters

update_short_data_with_parsed_parameters(data, ...)

Update parsed_data with parsed parameters

Module Contents

jdxi_editor.midi.sysex.parser.utils.UNKNOWN = 'Unknown'[source]
jdxi_editor.midi.sysex.parser.utils.UNKNOWN_AREA = 'Unknown area'[source]
class jdxi_editor.midi.sysex.parser.utils.ParameterLength[source]

Bases: enum.Enum

Generic enumeration.

Derive from this class to define new enumerations.

ONE_BYTE = 1[source]
FOUR_BYTE = 4[source]
jdxi_editor.midi.sysex.parser.utils.get_byte_offset_by_tone_name(data: bytes, index: int, offset: int = 12, default: int = 0) int[source]

Safely retrieve values from SysEx data with an optional offset.

Parameters:
  • data – bytes SysEx message data

  • index – int index of the byte to parse

  • offset – int Offset because of TONE_NAME

  • default – int

Returns:

int byte offset

jdxi_editor.midi.sysex.parser.utils.extract_hex(data: bytes, start: int, end: int, default: str = 'N/A') str[source]

Extract address hex value from data safely.

Parameters:
  • data – bytes SysEx message data

  • start – int Starting byte

  • end – int End byte

  • default – str

Returns:

str hex form of byte string in range

jdxi_editor.midi.sysex.parser.utils.extract_tone_name(data: bytes) str[source]

Extract and clean the tone name from SysEx data.

Parameters:

data – bytes SysEx message data

Returns:

str tone name, cleaned up

jdxi_editor.midi.sysex.parser.utils.log_metadata(metadata: dict, temporary_area: str, synth_tone: str)[source]
jdxi_editor.midi.sysex.parser.utils.determine_tone_mapping(data: bytes) Tuple[str, Any][source]

determine tone mapping

jdxi_editor.midi.sysex.parser.utils.parse_parameters(data: bytes, parameter_type: Iterable) Dict[str, int][source]

Parses JD-Xi tone parameters from SysEx data for Digital, Analog, and Digital Common types.

Parameters:
  • data – bytes SysEx message data

  • parameter_type – Iterable Type

Returns:

Dict[str, int]

jdxi_editor.midi.sysex.parser.utils.parse_single_parameter(data: bytes, parameter_type: picomidi.sysex.parameter.address.AddressParameter) Dict[str, int][source]

Parses JD-Xi tone parameters from SysEx data for Digital, Analog, and Digital Common types.

Parameters:
  • data – bytes SysEx message data

  • parameter_type – Type

Returns:

Dict[str, int]

jdxi_editor.midi.sysex.parser.utils.safe_extract(data: bytes, start: int, end: int) str[source]

Safely extract hex data from a byte sequence, or return “Unknown” if out of bounds.

Parameters:
  • data – bytes

  • start – int start address position

  • end – int end address position

Returns:

str hex

jdxi_editor.midi.sysex.parser.utils.address_to_index(msb: int, lsb: int) int[source]

Convert a 2-byte address (MSB, LSB) to a flat integer index. For example, MSB=0x01, LSB=0x15 → 0x0115 → 277. :param msb: int Most Significant Byte (0–255) :param lsb: int Least Significant Byte (0–255) :return: int address index

jdxi_editor.midi.sysex.parser.utils.initialize_parameters(data: bytes) Dict[str, str][source]

Initialize parameters with essential fields extracted from SysEx data.

Parameters:

data – bytes SysEx message data

Returns:

Dict[str, str]

jdxi_editor.midi.sysex.parser.utils._return_minimal_metadata(data: bytes) Dict[str, str][source]

Return minimal metadata for a JD-Xi SysEx message.

Parameters:

data – bytes SysEx message data

Returns:

Dict[str, str]

jdxi_editor.midi.sysex.parser.utils._get_tone_from_data(data: bytes, temporary_area: str) tuple[str, int][source]

Determines synth tone type and offset from SysEx data.

Parameters:
  • data – bytes SysEx Data

  • temporary_area – str

Returns:

tuple[str, int] tone type and byte offset

jdxi_editor.midi.sysex.parser.utils.is_short_data(data)[source]

is short data

jdxi_editor.midi.sysex.parser.utils.parse_sysex_new(data: bytes) Dict[str, str][source]

Parses JD-Xi tone data from SysEx messages.

Parameters:

data – bytes SysEx message bytes

Returns:

Dict[str, str] Dictionary with parsed tone parameters

jdxi_editor.midi.sysex.parser.utils.parse_sysex(data: bytes) Dict[str, str][source]

Parses JD-Xi tone data from SysEx messages.

Parameters:

data – bytes SysEx message bytes

Returns:

Dict[str, str] Dictionary with parsed tone parameters

jdxi_editor.midi.sysex.parser.utils.update_data_with_parsed_parameters(data: bytes, parameter_cls: Iterable, parsed_data: dict)[source]

Update parsed_data with parsed parameters

Parameters:
  • data – bytes SysEx message data

  • parameter_cls – Iterable AddressParameter

  • parsed_data – dict

Returns:

None Parsed_data is updated in place

jdxi_editor.midi.sysex.parser.utils.update_short_data_with_parsed_parameters(data: bytes, parameter_cls: picomidi.sysex.parameter.address.AddressParameter, parsed_data: dict)[source]

Update parsed_data with parsed parameters

Parameters:
  • data – bytes SysEx message data

  • parameter_cls – AddressParameter

  • parsed_data – dict

Returns:

None Parsed_data is updated in place