Source code for jdxi_editor.ui.preset.tone.analog.helper

"""
Analog presets

Example:
>>> result = get_preset_by_program_number(1)
>>> print(result)
{'id': '001', 'name': 'Toxic Bass 1', 'msb': 94.0, 'lsb': 64.0, 'pc': 1.0, 'category': 'Bass'}
>>> result2 = get_preset_parameters(1)
>>> print(result2)
(94.0, 64.0, 1.0)
"""

from typing import Any

from jdxi_editor.core.jdxi import JDXi


[docs] def get_preset_by_program_number(program_number: int) -> dict[str, Any] | None: """ get_preset_by_program_number :param program_number: int Program number :return: Program details or None if not found """ return next( ( preset for preset in JDXi.UI.Preset.Analog.PROGRAM_CHANGE if preset["pc"] == program_number ), None, )
[docs] def get_preset_parameters(program_number: int) -> tuple[float, float, float]: """ get_preset_parameters :param program_number: int :return: tuple of (msb, lsb, pc) :raises: ValueError if preset not found """ preset = get_preset_by_program_number(program_number) if preset is None: raise ValueError(f"Preset with program number {program_number} not found") return preset["msb"], preset["lsb"], preset["pc"]