Source code for pylav.players.filters.channel_mix

from __future__ import annotations

from pylav.players.filters.misc import FilterMixin


[docs] class ChannelMix(FilterMixin): __slots__ = ("_left_to_left", "_left_to_right", "_right_to_left", "_right_to_right", "_default") def __init__( self, left_to_left: float | None = None, left_to_right: float | None = None, right_to_left: float | None = None, right_to_right: float | None = None, ) -> None: super().__init__() self.left_to_left = left_to_left self.left_to_right = left_to_right self.right_to_left = right_to_left self.right_to_right = right_to_right
[docs] def to_dict(self) -> dict[str, float | None | bool]: return { "leftToLeft": self.left_to_left, "leftToRight": self.left_to_right, "rightToLeft": self.right_to_left, "rightToRight": self.right_to_right, }
[docs] @classmethod def from_dict(cls, data: dict[str, float | bool | None]) -> ChannelMix: return cls( left_to_left=data["leftToLeft"], left_to_right=data["leftToRight"], right_to_left=data["rightToLeft"], right_to_right=data["rightToRight"], )
def __repr__(self) -> str: return ( f"<ChannelMix: left_to_left={self.left_to_left}, " f"left_to_right={self.left_to_right}, " f"right_to_left={self.right_to_left}, " f"right_to_right={self.right_to_right}>" ) @property def left_to_left(self) -> float | None: return self._left_to_left @left_to_left.setter def left_to_left(self, v: float | None) -> None: self._left_to_left = v @property def left_to_right(self) -> float | None: return self._left_to_right @left_to_right.setter def left_to_right(self, v: float | None) -> None: self._left_to_right = v @property def right_to_left(self) -> float | None: return self._right_to_left @right_to_left.setter def right_to_left(self, v: float | None) -> None: self._right_to_left = v @property def right_to_right(self) -> float | None: return self._right_to_right @right_to_right.setter def right_to_right(self, v: float | None) -> None: self._right_to_right = v
[docs] @classmethod def default(cls) -> ChannelMix: return cls()
[docs] def get(self) -> dict[str, float]: if self.off: return {} response = {} if self.left_to_left is not None: response["leftToLeft"] = self.left_to_left if self.left_to_right is not None: response["leftToRight"] = self.left_to_right if self.right_to_left is not None: response["rightToLeft"] = self.right_to_left if self.right_to_right is not None: response["rightToRight"] = self.right_to_right return response
[docs] def reset(self) -> None: self.right_to_right = self.right_to_left = self.left_to_right = self.left_to_left = None