Source code for jdxi_editor.midi.message.areas.system_controller

"""
SystemControllerMessage
=======================
# Example usage:
# Enable program change transmission
>>> msg = SystemControllerMessage()
>>> msg.to_bytes().hex()
'f041100000000e1202000300007bf7'
>>> msg.to_list()
[240, 65, <RolandID.DEVICE_ID: 16>, 0, 0, 0, 14, <CommandID.DT1: 18>, <JDXiSysExAddressStartMSB.SETUP: 2>, <JDXiSysExOffsetTemporaryToneUMB.COMMON: 0>, <JDXiSysExOffsetSystemLMB.CONTROLLER: 3>, 0, 0, 123, 247]
"""

from dataclasses import dataclass

from jdxi_editor.midi.data.address.address import (
    CommandID,
    JDXiSysExAddressStartMSB,
    JDXiSysExOffsetSystemLMB,
    JDXiSysExOffsetTemporaryToneUMB,
)
from jdxi_editor.midi.data.address.sysex import ZERO_BYTE
from jdxi_editor.midi.message.roland import JDXiSysEx


@dataclass
[docs] class SystemControllerMessage(JDXiSysEx): """System Controller parameter message"""
[docs] command: int = CommandID.DT1
[docs] msb: int = JDXiSysExAddressStartMSB.SETUP # 0x02: Setup area
[docs] umb: int = JDXiSysExOffsetTemporaryToneUMB.COMMON # 0x03: Controller section
[docs] lmb: int = JDXiSysExOffsetSystemLMB.CONTROLLER # Always 0x00
[docs] lsb: int = ZERO_BYTE # Parameter number
[docs] value: int = ZERO_BYTE # Parameter value
[docs] def __post_init__(self): super().__post_init__() # Set address and data from RolandSysEx