"""
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]
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)