vban-cmd-python/vbancmd/channel.py
onyx-and-iris 863debdbe7 add bus modes, update Modes dataclass
add bus mode property objects

update references in Modes dataclass
2022-03-17 14:08:49 +00:00

83 lines
2.0 KiB
Python

import abc
from .errors import VMCMDErrors
from dataclasses import dataclass
@dataclass
class Modes:
""" Channel Modes """
_mute: hex=0x00000001
_solo: hex=0x00000002
_mono: hex=0x00000004
_mutec: hex=0x00000008
_amix: hex=0x00000010
_repeat: hex=0x00000020
_bmix: hex=0x00000030
_composite: hex=0x00000040
_tvmix: hex=0x00000050
_upmix21: hex=0x00000060
_upmix41: hex=0x00000070
_upmix61: hex=0x00000080
_centeronly: hex=0x00000090
_lfeonly: hex=0x000000A0
_rearonly: hex=0x000000B0
_mask: hex=0x000000F0
_eq: hex=0x00000100
_cross: hex=0x00000200
_eqb: hex=0x00000800
_busa: hex=0x00001000
_busa1: hex=0x00001000
_busa2: hex=0x00002000
_busa3: hex=0x00004000
_busa4: hex=0x00008000
_busa5: hex=0x00080000
_busb: hex=0x00010000
_busb1: hex=0x00010000
_busb2: hex=0x00020000
_busb3: hex=0x00040000
_pan0: hex=0x00000000
_pancolor: hex=0x00100000
_panmod: hex=0x00200000
_panmask: hex=0x00F00000
_postfx_r: hex=0x01000000
_postfx_d: hex=0x02000000
_postfx1: hex=0x04000000
_postfx2: hex=0x08000000
_sel: hex=0x10000000
_monitor: hex=0x20000000
class Channel(abc.ABC):
""" Base class for InputStrip and OutputBus. """
def __init__(self, remote, index):
self._remote = remote
self.index = index
self._modes = Modes()
def setter(self, param, val):
""" Sends a string request RT packet. """
self._remote.set_rt(f'{self.identifier}', param, val)
@abc.abstractmethod
def identifier(self):
pass
@property
def public_packet(self):
""" Returns an RT data packet. """
return self._remote.public_packet
def apply(self, mapping):
""" Sets all parameters of a dict for the strip. """
for key, val in mapping.items():
if not hasattr(self, key):
raise VMCMDErrors(f'Invalid {self.identifier} attribute: {key}')
setattr(self, key, val)