Source code for pylav.players.filters.karaoke
from __future__ import annotations
from pylav.players.filters.misc import FilterMixin
[docs]
class Karaoke(FilterMixin):
__slots__ = ("_level", "_mono_level", "_filter_band", "_filter_width", "_default")
def __init__(
self,
level: float | None = None,
mono_level: float | None = None,
filter_band: float | None = None,
filter_width: float | None = None,
) -> None:
super().__init__()
self.level = level
self.mono_level = mono_level
self.filter_band = filter_band
self.filter_width = filter_width
[docs]
def to_dict(self) -> dict[str, float | bool | None]:
return {
"level": self.level,
"mono_level": self.mono_level,
"filter_band": self.filter_band,
"filter_width": self.filter_width,
}
[docs]
@classmethod
def from_dict(cls, data: dict[str, float | bool | None]) -> Karaoke:
return cls(
level=data["level"],
mono_level=data["mono_level"],
filter_band=data["filter_band"],
filter_width=data["filter_width"],
)
def __repr__(self) -> str:
return (
f"<Karaoke: level={self.level}, mono_level={self.mono_level}, "
f"filter_band={self.filter_band}, filter_width={self.filter_width}>"
)
@property
def level(self) -> float | None:
return self._level
@level.setter
def level(self, v: float | None) -> None:
self._level = v
@property
def mono_level(self) -> float | None:
return self._mono_level
@mono_level.setter
def mono_level(self, v: float | None) -> None:
self._mono_level = v
@property
def filter_band(self) -> float | None:
return self._filter_band
@filter_band.setter
def filter_band(self, v: float | None) -> None:
self._filter_band = v
@property
def filter_width(self) -> float | None:
return self._filter_width
@filter_width.setter
def filter_width(self, v: float | None) -> None:
self._filter_width = v
[docs]
@classmethod
def default(cls) -> Karaoke:
return cls()
[docs]
def get(self) -> dict[str, float]:
if self.off:
return {}
response = {}
if self.level is not None:
response["level"] = self.level
if self.mono_level is not None:
response["monoLevel"] = self.mono_level
if self.filter_band is not None:
response["filterBand"] = self.filter_band
if self.filter_width is not None:
response["filterWidth"] = self.filter_width
return response
[docs]
def reset(self) -> None:
self.level = self.mono_level = self.filter_band = self.filter_width = None