Source code for jdxi_editor.jdxi.synth.digital

"""
Digital Synth Data
"""

from dataclasses import dataclass
from typing import Dict

from jdxi_editor.jdxi.synth.data import JDXISynthData
from jdxi_editor.midi.data.address.address import (
    Address,
    AddressOffsetProgramLMB,
    AddressOffsetSuperNATURALLMB,
)
from jdxi_editor.midi.data.parameter.digital import DigitalPartialParam


@dataclass
[docs] class DigitalSynthData(JDXISynthData): """Digital Synth Data"""
[docs] synth_number: int = 1
[docs] partial_number: int = 0
[docs] partial_parameters: DigitalPartialParam = None
[docs] def __post_init__(self) -> None: """Post Init""" super().__post_init__() # Set _group_map (private) self._group_map = { 0: AddressOffsetProgramLMB.COMMON, 1: AddressOffsetSuperNATURALLMB.PARTIAL_1, 2: AddressOffsetSuperNATURALLMB.PARTIAL_2, 3: AddressOffsetSuperNATURALLMB.PARTIAL_3, }
@property
[docs] def group_map(self) -> Dict[int, Address]: """Group Map""" return self._group_map
@group_map.setter def group_map(self, value) -> None: """Group Map Setter""" self._group_map = value @property
[docs] def partial_lmb(self) -> int: """Partial LMB""" # Use group_map lookup return self.group_map.get(self.partial_number, AddressOffsetProgramLMB.COMMON)