Source code for jdxi_editor.jdxi.synth.drum

"""
Drum Synth Data
"""

from dataclasses import dataclass, field
from typing import Dict, Optional

from jdxi_editor.jdxi.synth.data import JDXISynthData
from jdxi_editor.midi.data.address.address import Address, AddressOffsetDrumKitLMB
from jdxi_editor.midi.data.parameter.drum.partial import DrumPartialParam


@dataclass
[docs] class DrumSynthData(JDXISynthData): """Drum Synth Data"""
[docs] partial_number: int = 0
[docs] partial_parameters: DrumPartialParam = None
[docs] _group_map: Dict[int, AddressOffsetDrumKitLMB] = field( default_factory=dict, init=False, repr=False )
[docs] def __post_init__(self) -> None: """Post Init""" super().__post_init__() self._build_group_map()
[docs] def _build_group_map(self) -> None: """Build the map once after initialization.""" self._group_map = { 0: AddressOffsetDrumKitLMB.COMMON, 1: AddressOffsetDrumKitLMB.DRUM_KIT_PART_1, 2: AddressOffsetDrumKitLMB.DRUM_KIT_PART_2, 3: AddressOffsetDrumKitLMB.DRUM_KIT_PART_3, 4: AddressOffsetDrumKitLMB.DRUM_KIT_PART_4, 5: AddressOffsetDrumKitLMB.DRUM_KIT_PART_5, 6: AddressOffsetDrumKitLMB.DRUM_KIT_PART_6, 7: AddressOffsetDrumKitLMB.DRUM_KIT_PART_7, 8: AddressOffsetDrumKitLMB.DRUM_KIT_PART_8, 9: AddressOffsetDrumKitLMB.DRUM_KIT_PART_9, 10: AddressOffsetDrumKitLMB.DRUM_KIT_PART_10, 11: AddressOffsetDrumKitLMB.DRUM_KIT_PART_11, 12: AddressOffsetDrumKitLMB.DRUM_KIT_PART_12, 13: AddressOffsetDrumKitLMB.DRUM_KIT_PART_13, 14: AddressOffsetDrumKitLMB.DRUM_KIT_PART_14, 15: AddressOffsetDrumKitLMB.DRUM_KIT_PART_15, 16: AddressOffsetDrumKitLMB.DRUM_KIT_PART_16, 17: AddressOffsetDrumKitLMB.DRUM_KIT_PART_17, 18: AddressOffsetDrumKitLMB.DRUM_KIT_PART_18, 19: AddressOffsetDrumKitLMB.DRUM_KIT_PART_19, 20: AddressOffsetDrumKitLMB.DRUM_KIT_PART_20, 21: AddressOffsetDrumKitLMB.DRUM_KIT_PART_21, 22: AddressOffsetDrumKitLMB.DRUM_KIT_PART_22, 23: AddressOffsetDrumKitLMB.DRUM_KIT_PART_23, 24: AddressOffsetDrumKitLMB.DRUM_KIT_PART_24, 25: AddressOffsetDrumKitLMB.DRUM_KIT_PART_25, 26: AddressOffsetDrumKitLMB.DRUM_KIT_PART_26, 27: AddressOffsetDrumKitLMB.DRUM_KIT_PART_27, 28: AddressOffsetDrumKitLMB.DRUM_KIT_PART_28, 29: AddressOffsetDrumKitLMB.DRUM_KIT_PART_29, 30: AddressOffsetDrumKitLMB.DRUM_KIT_PART_30, 31: AddressOffsetDrumKitLMB.DRUM_KIT_PART_31, 32: AddressOffsetDrumKitLMB.DRUM_KIT_PART_32, 33: AddressOffsetDrumKitLMB.DRUM_KIT_PART_33, 34: AddressOffsetDrumKitLMB.DRUM_KIT_PART_34, 35: AddressOffsetDrumKitLMB.DRUM_KIT_PART_35, 36: AddressOffsetDrumKitLMB.DRUM_KIT_PART_36, 37: AddressOffsetDrumKitLMB.DRUM_KIT_PART_37, }
@property
[docs] def group_map(self) -> Dict[int, Address]: """Return the drum group map.""" return self._group_map
@property
[docs] def partial_lmb(self) -> Address: """Return the LMB for the current partial number.""" return self.get_partial_lmb(self.partial_number)
[docs] def get_partial_lmb(self, partial_number: int) -> Address: """Return the LMB for a given partial number.""" return self._group_map.get(partial_number, AddressOffsetDrumKitLMB.COMMON)