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
Classes
Generic enumeration. |
Functions
|
Safely retrieve values from SysEx data with an optional offset. |
|
Extract address hex value from data safely. |
|
Extract and clean the tone name from SysEx data. |
|
|
|
determine tone mapping |
|
Parses JD-Xi tone parameters from SysEx data for Digital, Analog, and Digital Common types. |
|
Parses JD-Xi tone parameters from SysEx data for Digital, Analog, and Digital Common types. |
|
Safely extract hex data from a byte sequence, or return "Unknown" if out of bounds. |
|
Convert a 2-byte address (MSB, LSB) to a flat integer index. |
|
Initialize parameters with essential fields extracted from SysEx data. |
|
Return minimal metadata for a JD-Xi SysEx message. |
|
Determines synth tone type and offset from SysEx data. |
|
is short data |
|
Parses JD-Xi tone data from SysEx messages. |
|
Parses JD-Xi tone data from SysEx messages. |
|
Update parsed_data with parsed parameters |
|
Update parsed_data with parsed parameters |
Module Contents
- class jdxi_editor.midi.sysex.parser.utils.ParameterLength[source]
Bases:
enum.EnumGeneric enumeration.
Derive from this class to define new enumerations.
- 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.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