Source code for jdxi_editor.log.adsr

"""
Log ADSR Parameter
"""

import logging

from picomidi.sysex.parameter.address import AddressParameter

from jdxi_editor.globals import logger
from jdxi_editor.log.emoji import LEVEL_EMOJIS
from jdxi_editor.midi.data.address.address import (
    AddressOffsetSuperNATURALLMB,
    AddressOffsetTemporaryToneUMB,
)
from jdxi_editor.ui.windows.midi.debugger import parse_sysex_byte


[docs] def log_adsr_parameter( umb: int, lmb: int, param: AddressParameter, value: int, level: int = logging.INFO ) -> None: """ Log slider parameters for debugging. :param umb: int The UMB :param lmb: int The LMB :param param: AddressParameter The parameter :param value: int The value :param level: int The log level :return: None """ synth = f"0x{int(umb):02X}" part = f"0x{int(lmb):02X}" synth_name = parse_sysex_byte(int(synth, 16), AddressOffsetTemporaryToneUMB) if part != "0x00": part_name_lmb = parse_sysex_byte(int(part, 16), AddressOffsetSuperNATURALLMB) else: part_name_lmb = "COMMON" message = ( f"Updating synth {synth:<2} \t {synth_name:<20} " f"part {part:<2} \t {part_name_lmb:<20} " f"{param.name:<30} " f"MIDI {value:<4} " ) emoji = LEVEL_EMOJIS.get(level, "🔔") # Add MIDI flair if message seems MIDI-related midi_tag = "🎵" if "midi" in message.lower() or "sysex" in message.lower() else "" qc_passed_tag = "✅" if "updat" in message.lower() else "" message = f"{emoji} {qc_passed_tag} {midi_tag} {message}" # Use correct logging function depending on level if level == logging.DEBUG: logger.debug(message, stacklevel=2) elif level == logging.INFO: logger.info(message, stacklevel=2) elif level == logging.WARNING: logger.warning(message, stacklevel=2) elif level == logging.ERROR: logger.recording_error(message, stacklevel=2) elif level == logging.CRITICAL: logger.critical(message, stacklevel=2) else: # fallback for non-standard levels logger.log(message, stacklevel=2)