Source code for jdxi_editor.midi.parameter.handler

"""
Module: parameter_handler

This module defines the `ParameterHandler` class, which manages MIDI parameter values
and emits signals when parameters are updated.

Classes:
    - ParameterHandler: Handles storing, updating, retrieving, and clearing MIDI parameters.

Signals:
    - parameters_updated: Emitted when parameter values change.

Methods:
    - update_parameter(address, value): Updates the value of a parameter at the given address.
    - get_parameter(address): Retrieves the value of a parameter at the given address.
    - clear_parameters(): Clears all stored parameters.

"""

from typing import List

from PySide6.QtCore import QObject, Signal


[docs] class ParameterHandler(QObject):
[docs] parameters_updated = Signal(dict) # Emits when parameters change
def __init__(self) -> None: super().__init__()
[docs] self._parameters = {}
[docs] def update_parameter(self, address: List[int], value: int) -> None: """Update address parameter value :param address: List[int] :param value: int :return: None """ addr_key = ".".join(str(x) for x in address) self._parameters[addr_key] = value self.parameters_updated.emit(self._parameters.copy())
[docs] def get_parameter(self, address: List[int]) -> int: """Get address parameter value :param address: List[int] :return: int """ addr_key = ".".join(str(x) for x in address) return self._parameters.get(addr_key, 0)
[docs] def clear_parameters(self) -> None: """Clear all parameters :return: None """ self._parameters.clear()