Source code for jdxi_editor.midi.data.parameter.digital.helpers.digital_common

"""Digital Common"""

from jdxi_editor.midi.data.parameter.digital.common import DigitalCommonParam


[docs] def parse_digital_common_parameters(data: list) -> dict: """ Parses JD-Xi tone parameters from SysEx data, including Oscillator, Filter, and Amplitude parameters. Args: data (bytes): SysEx message containing tone parameters. Returns: dict: Parsed parameters. """ # Function to safely retrieve values from `data` def safe_get(index, default=0): tone_name_length = 12 index = ( index + tone_name_length ) # shift the index by 12 to account for the tone name return data[index] if index < len(data) else default parameters = {} # Mapping DigitalParameter Enum members to their respective positions in SysEx data for param in DigitalCommonParam: # Use the parameter's address from the enum and fetch the value from the data parameters[param.name] = safe_get(param.address) return parameters