"""Drum"""
from dataclasses import dataclass
from enum import Enum
from typing import Dict, Optional
[docs]
class MuteGroup(Enum):
"""Drum pad mute groups"""
[docs]
GROUPS = range(1, 32) # Groups 1-31
[docs]
class Note(Enum):
"""MIDI note numbers for drum pads"""
[docs]
class DrumPad:
"""Represents address single drum pad's settings"""
# Parameter offsets within each pad
[docs]
PARAM_OFFSET = 0x10 # Each pad takes 16 bytes of parameter space
# Parameter addresses within pad
[docs]
def __init__(self) -> None:
@dataclass
[docs]
class DrumPadSettings:
"""Settings for address single drum pad"""
[docs]
mute_group: int = 0 # OFF
@dataclass
[docs]
class DrumKitPatch:
"""Complete drum kit patch data"""
# Common parameters
# Individual pad settings
[docs]
pads: Optional[Dict[int, DrumPadSettings]] = None
[docs]
def __post_init__(self) -> None:
"""Initialize pad settings"""
if self.pads is None:
self.pads = {i: DrumPadSettings() for i in range(16)}
# SuperNATURAL drum kit presets