Source code for jdxi_editor.log.slider_parameter

"""
Log Slider Parameters
"""

import logging
from typing import Union

from picomidi.sysex.parameter.address import AddressParameter

from jdxi_editor.globals import LOGGING, logger
from jdxi_editor.log.decorator import decorate_log_message
from jdxi_editor.midi.data.address.address import (
    AddressOffsetDrumKitLMB,
    AddressOffsetProgramLMB,
    AddressOffsetSuperNATURALLMB,
    AddressOffsetTemporaryToneUMB,
    RolandSysExAddress,
)
from jdxi_editor.midi.data.address.sysex import ZERO_BYTE
from jdxi_editor.ui.windows.midi.debugger import parse_sysex_byte


[docs] def log_slider_parameters( address: RolandSysExAddress, param: AddressParameter, midi_value: int, slider_value: Union[int, float], level: int = logging.INFO, ) -> None: """ Log slider parameters for debugging. :param address: int The address :param param: AddressParameter The parameter :param midi_value: int The value :param slider_value: int The slider value :param level: int The log level :return: None """ try: synth_umb = f"0x{int(address.umb):02X}" part_lmb = f"0x{int(address.lmb):02X}" synth_name_umb = parse_sysex_byte( int(synth_umb, 16), AddressOffsetTemporaryToneUMB ) if synth_name_umb == AddressOffsetTemporaryToneUMB.DRUM_KIT.name: address_offset_cls = AddressOffsetDrumKitLMB elif synth_name_umb in [ AddressOffsetTemporaryToneUMB.DIGITAL_SYNTH_1.name, AddressOffsetTemporaryToneUMB.DIGITAL_SYNTH_2.name, ]: address_offset_cls = AddressOffsetSuperNATURALLMB else: address_offset_cls = AddressOffsetProgramLMB if part_lmb != f"{ZERO_BYTE}": part_name_lmb = parse_sysex_byte(int(part_lmb, 16), address_offset_cls) else: part_name_lmb = "COMMON" message = ( f"Updating [umb {synth_umb:<3} {synth_name_umb:<20}] " f"[lmb {part_lmb:<3} {part_name_lmb:<20}] " f"[lsb: 0x{param.address:02X} {param.name:<35}] " f"midi data: {midi_value:<4} → Slider: {slider_value:.1f}" ) decorated_message = decorate_log_message(message, level) if LOGGING: logger.log(level, decorated_message, stacklevel=2) except Exception as ex: logger.recording_error(f"Error {ex} occurred logging parameter")