"""
Analog presets
"""
from typing import Any
[docs]
ANALOG_PRESET_LIST = [
{
"id": "001",
"name": "Toxic Bass 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 1.0,
"category": "Bass",
},
{
"id": "002",
"name": "Sub Bass 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 6.0,
"category": "Bass",
},
{
"id": "007",
"name": "Pulse Bass 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 7.0,
"category": "Bass",
},
{
"id": "008",
"name": "ResoSaw Bs 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 8.0,
"category": "Bass",
},
{
"id": "009",
"name": "ResoSaw Bs 2",
"msb": 94.0,
"lsb": 64.0,
"pc": 9.0,
"category": "Bass",
},
{
"id": "011",
"name": "Psy Bass 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 11.0,
"category": "Bass",
},
{
"id": "012",
"name": "Dist TB Bs 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 17.0,
"category": "Bass",
},
{
"id": "018",
"name": "Slo worn 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 18.0,
"category": "Bass",
},
{
"id": "022",
"name": "DnB Wobbler1",
"msb": 94.0,
"lsb": 64.0,
"pc": 22.0,
"category": "Bass",
},
{
"id": "023",
"name": "O Beat Wob1",
"msb": 94.0,
"lsb": 64.0,
"pc": 23.0,
"category": "Bass",
},
{
"id": "024",
"name": "Chilled Wob",
"msb": 94.0,
"lsb": 64.0,
"pc": 24.0,
"category": "Bass",
},
{
"id": "028",
"name": "Pumper Bass1",
"msb": 94.0,
"lsb": 64.0,
"pc": 28.0,
"category": "Bass",
},
{
"id": "029",
"name": "ClickerBass1",
"msb": 94.0,
"lsb": 64.0,
"pc": 29.0,
"category": "Bass",
},
{
"id": "030",
"name": "Psy Bass 2",
"msb": 94.0,
"lsb": 64.0,
"pc": 30.0,
"category": "Bass",
},
{
"id": "031",
"name": "HooverSuprt1",
"msb": 94.0,
"lsb": 64.0,
"pc": 31.0,
"category": "Bass",
},
{
"id": "032",
"name": "Celoclip 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 32.0,
"category": "Lead",
},
{
"id": "033",
"name": "Tri Fall Bs1",
"msb": 94.0,
"lsb": 64.0,
"pc": 33.0,
"category": "Lead",
},
{
"id": "034",
"name": "808 Bass 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 34.0,
"category": "Bass",
},
{
"id": "035",
"name": "House Bass 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 35.0,
"category": "Bass",
},
{
"id": "036",
"name": "Psy Bass 3",
"msb": 94.0,
"lsb": 64.0,
"pc": 36.0,
"category": "Bass",
},
{
"id": "037",
"name": "Reel 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 37.0,
"category": "Lead",
},
{
"id": "038",
"name": "PortaSaw Ld1",
"msb": 94.0,
"lsb": 64.0,
"pc": 38.0,
"category": "Lead",
},
{
"id": "039",
"name": "Porta Lead 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 39.0,
"category": "Lead",
},
{
"id": "040",
"name": "Analog Tp 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 40.0,
"category": "Lead",
},
{
"id": "041",
"name": "Tri Lead 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 41.0,
"category": "Lead",
},
{
"id": "042",
"name": "Sine Lead 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 42.0,
"category": "Lead",
},
{
"id": "043",
"name": "Saw Buzz 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 43.0,
"category": "Lead",
},
{
"id": "044",
"name": "Buzz Saw Ld1",
"msb": 94.0,
"lsb": 64.0,
"pc": 44.0,
"category": "Lead",
},
{
"id": "045",
"name": "Laser Lead 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 45.0,
"category": "Lead",
},
{
"id": "046",
"name": "Saw & Per 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 46.0,
"category": "Lead",
},
{
"id": "047",
"name": "Insect 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 47.0,
"category": "FX",
},
{
"id": "048",
"name": "Sqr SEQ 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 48.0,
"category": "FX",
},
{
"id": "049",
"name": "ZipPhase 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 49.0,
"category": "FX",
},
{
"id": "050",
"name": "Stinger 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 50.0,
"category": "FX",
},
{
"id": "051",
"name": "3 Oh 3",
"msb": 94.0,
"lsb": 64.0,
"pc": 51.0,
"category": "FX",
},
{
"id": "052",
"name": "Sus Zap 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 52.0,
"category": "FX",
},
{
"id": "053",
"name": "Bowouch 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 53.0,
"category": "FX",
},
{
"id": "054",
"name": "Resocut 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 54.0,
"category": "FX",
},
{
"id": "055",
"name": "LFO FX",
"msb": 94.0,
"lsb": 64.0,
"pc": 55.0,
"category": "FX",
},
{
"id": "056",
"name": "Fall Synth 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 56.0,
"category": "Synth",
},
{
"id": "057",
"name": "Twister 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 57.0,
"category": "FX",
},
{
"id": "058",
"name": "Analog Kick1",
"msb": 94.0,
"lsb": 64.0,
"pc": 58.0,
"category": "Percussion/Drums",
},
{
"id": "059",
"name": "Zippers 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 59.0,
"category": "Percussion/Drums",
},
{
"id": "060",
"name": "Zipper FX",
"msb": 94.0,
"lsb": 64.0,
"pc": 60.0,
"category": "FX",
},
{
"id": "061",
"name": "Zippers 3",
"msb": 94.0,
"lsb": 64.0,
"pc": 61.0,
"category": "Percussion/Drums",
},
{
"id": "062",
"name": "Siren Hell 1",
"msb": 94.0,
"lsb": 64.0,
"pc": 62.0,
"category": "FX",
},
{
"id": "063",
"name": "SirenFX/Mod1",
"msb": 94.0,
"lsb": 64.0,
"pc": 63.0,
"category": "FX",
},
{
"id": "064",
"name": "Init Tone",
"msb": 94.0,
"lsb": 64.0,
"pc": 64.0,
"category": "Init",
},
]
[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 ANALOG_PRESET_LIST 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"]