mirror of
https://github.com/onyx-and-iris/vban-cmd-python.git
synced 2026-01-24 17:27:48 +00:00
implement parametric eq
This commit is contained in:
parent
d439da725c
commit
0512fac710
@ -263,7 +263,7 @@ class CompressorSettings(NamedTuple):
|
|||||||
comprate: float
|
comprate: float
|
||||||
threshold: float
|
threshold: float
|
||||||
c_enabled: bool
|
c_enabled: bool
|
||||||
c_auto: bool
|
makeup: bool
|
||||||
gain_out: float
|
gain_out: float
|
||||||
|
|
||||||
|
|
||||||
@ -439,7 +439,7 @@ class VbanVMParamStrip:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def parametric_eq_settings(self) -> tuple[ParametricEQSettings, ...]:
|
def parametric_eq(self) -> tuple[ParametricEQSettings, ...]:
|
||||||
return tuple(
|
return tuple(
|
||||||
ParametricEQSettings(
|
ParametricEQSettings(
|
||||||
on=bool(int.from_bytes(self._PEQ_eqOn[i : i + 1], 'little')),
|
on=bool(int.from_bytes(self._PEQ_eqOn[i : i + 1], 'little')),
|
||||||
@ -464,6 +464,75 @@ class VbanVMParamStrip:
|
|||||||
def karaoke(self) -> int:
|
def karaoke(self) -> int:
|
||||||
return int.from_bytes(self._nKaraoke, 'little')
|
return int.from_bytes(self._nKaraoke, 'little')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def compressor(self) -> CompressorSettings:
|
||||||
|
return CompressorSettings(
|
||||||
|
gain_in=round(
|
||||||
|
int.from_bytes(self._COMP_gain_in, 'little', signed=True) * 0.01, 2
|
||||||
|
),
|
||||||
|
attack_ms=round(int.from_bytes(self._COMP_attack_ms, 'little') * 0.1, 2),
|
||||||
|
release_ms=round(int.from_bytes(self._COMP_release_ms, 'little') * 0.1, 2),
|
||||||
|
n_knee=round(int.from_bytes(self._COMP_n_knee, 'little') * 0.01, 2),
|
||||||
|
comprate=round(int.from_bytes(self._COMP_comprate, 'little') * 0.01, 2),
|
||||||
|
threshold=round(
|
||||||
|
int.from_bytes(self._COMP_threshold, 'little', signed=True) * 0.01, 2
|
||||||
|
),
|
||||||
|
c_enabled=bool(int.from_bytes(self._COMP_c_enabled, 'little')),
|
||||||
|
makeup=bool(int.from_bytes(self._COMP_c_auto, 'little')),
|
||||||
|
gain_out=round(
|
||||||
|
int.from_bytes(self._COMP_gain_out, 'little', signed=True) * 0.01, 2
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def gate(self) -> GateSettings:
|
||||||
|
return GateSettings(
|
||||||
|
dBThreshold_in=round(
|
||||||
|
int.from_bytes(self._GATE_dBThreshold_in, 'little', signed=True) * 0.01,
|
||||||
|
2,
|
||||||
|
),
|
||||||
|
dBDamping_max=round(
|
||||||
|
int.from_bytes(self._GATE_dBDamping_max, 'little', signed=True) * 0.01,
|
||||||
|
2,
|
||||||
|
),
|
||||||
|
BP_Sidechain=round(
|
||||||
|
int.from_bytes(self._GATE_BP_Sidechain, 'little') * 0.1, 2
|
||||||
|
),
|
||||||
|
attack_ms=round(int.from_bytes(self._GATE_attack_ms, 'little') * 0.1, 2),
|
||||||
|
hold_ms=round(int.from_bytes(self._GATE_hold_ms, 'little') * 0.1, 2),
|
||||||
|
release_ms=round(int.from_bytes(self._GATE_release_ms, 'little') * 0.1, 2),
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def denoiser(self) -> DenoiserSettings:
|
||||||
|
return DenoiserSettings(
|
||||||
|
threshold=round(
|
||||||
|
int.from_bytes(self._DenoiserThreshold, 'little', signed=True) * 0.01, 2
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pitch(self) -> PitchSettings:
|
||||||
|
return PitchSettings(
|
||||||
|
enabled=bool(int.from_bytes(self._PitchEnabled, 'little')),
|
||||||
|
dry_wet=round(
|
||||||
|
int.from_bytes(self._Pitch_DryWet, 'little', signed=True) * 0.01, 2
|
||||||
|
),
|
||||||
|
value=round(
|
||||||
|
int.from_bytes(self._Pitch_Value, 'little', signed=True) * 0.01, 2
|
||||||
|
),
|
||||||
|
formant_lo=round(
|
||||||
|
int.from_bytes(self._Pitch_formant_lo, 'little', signed=True) * 0.01, 2
|
||||||
|
),
|
||||||
|
formant_med=round(
|
||||||
|
int.from_bytes(self._Pitch_formant_med, 'little', signed=True) * 0.01, 2
|
||||||
|
),
|
||||||
|
formant_high=round(
|
||||||
|
int.from_bytes(self._Pitch_formant_high, 'little', signed=True) * 0.01,
|
||||||
|
2,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class VbanRtPacketNBS1(VbanRtPacket):
|
class VbanRtPacketNBS1(VbanRtPacket):
|
||||||
|
|||||||
@ -103,7 +103,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def gainin(self) -> float:
|
def gainin(self) -> float:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return 0.0
|
||||||
|
return self.public_packets[NBS.one].strips[self.index].compressor.gain_in
|
||||||
|
|
||||||
@gainin.setter
|
@gainin.setter
|
||||||
def gainin(self, val: float):
|
def gainin(self, val: float):
|
||||||
@ -111,7 +113,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def ratio(self) -> float:
|
def ratio(self) -> float:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return 0.0
|
||||||
|
return self.public_packets[NBS.one].strips[self.index].compressor.comprate
|
||||||
|
|
||||||
@ratio.setter
|
@ratio.setter
|
||||||
def ratio(self, val: float):
|
def ratio(self, val: float):
|
||||||
@ -119,7 +123,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def threshold(self) -> float:
|
def threshold(self) -> float:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return 0.0
|
||||||
|
return self.public_packets[NBS.one].strips[self.index].compressor.threshold
|
||||||
|
|
||||||
@threshold.setter
|
@threshold.setter
|
||||||
def threshold(self, val: float):
|
def threshold(self, val: float):
|
||||||
@ -127,7 +133,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def attack(self) -> float:
|
def attack(self) -> float:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return 0.0
|
||||||
|
return self.public_packets[NBS.one].strips[self.index].compressor.attack_ms
|
||||||
|
|
||||||
@attack.setter
|
@attack.setter
|
||||||
def attack(self, val: float):
|
def attack(self, val: float):
|
||||||
@ -135,7 +143,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def release(self) -> float:
|
def release(self) -> float:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return 0.0
|
||||||
|
return self.public_packets[NBS.one].strips[self.index].compressor.release_ms
|
||||||
|
|
||||||
@release.setter
|
@release.setter
|
||||||
def release(self, val: float):
|
def release(self, val: float):
|
||||||
@ -143,7 +153,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def knee(self) -> float:
|
def knee(self) -> float:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return 0.0
|
||||||
|
return self.public_packets[NBS.one].strips[self.index].compressor.n_knee
|
||||||
|
|
||||||
@knee.setter
|
@knee.setter
|
||||||
def knee(self, val: float):
|
def knee(self, val: float):
|
||||||
@ -151,7 +163,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def gainout(self) -> float:
|
def gainout(self) -> float:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return 0.0
|
||||||
|
return self.public_packets[NBS.one].strips[self.index].compressor.gain_out
|
||||||
|
|
||||||
@gainout.setter
|
@gainout.setter
|
||||||
def gainout(self, val: float):
|
def gainout(self, val: float):
|
||||||
@ -159,7 +173,9 @@ class StripComp(IRemote):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def makeup(self) -> bool:
|
def makeup(self) -> bool:
|
||||||
return
|
if self.public_packets[NBS.one] is None:
|
||||||
|
return False
|
||||||
|
return bool(self.public_packets[NBS.one].strips[self.index].compressor.makeup)
|
||||||
|
|
||||||
@makeup.setter
|
@makeup.setter
|
||||||
def makeup(self, val: bool):
|
def makeup(self, val: bool):
|
||||||
@ -336,7 +352,7 @@ class StripEQChCell(IRemote):
|
|||||||
return (
|
return (
|
||||||
self.public_packets[NBS.one]
|
self.public_packets[NBS.one]
|
||||||
.strips[self.index]
|
.strips[self.index]
|
||||||
.parametric_eq_settings[self.cell_index]
|
.parametric_eq[self.cell_index]
|
||||||
.on
|
.on
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -355,7 +371,7 @@ class StripEQChCell(IRemote):
|
|||||||
return (
|
return (
|
||||||
self.public_packets[NBS.one]
|
self.public_packets[NBS.one]
|
||||||
.strips[self.index]
|
.strips[self.index]
|
||||||
.parametric_eq_settings[self.cell_index]
|
.parametric_eq[self.cell_index]
|
||||||
.type
|
.type
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -374,7 +390,7 @@ class StripEQChCell(IRemote):
|
|||||||
return (
|
return (
|
||||||
self.public_packets[NBS.one]
|
self.public_packets[NBS.one]
|
||||||
.strips[self.index]
|
.strips[self.index]
|
||||||
.parametric_eq_settings[self.cell_index]
|
.parametric_eq[self.cell_index]
|
||||||
.freq
|
.freq
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -393,7 +409,7 @@ class StripEQChCell(IRemote):
|
|||||||
return (
|
return (
|
||||||
self.public_packets[NBS.one]
|
self.public_packets[NBS.one]
|
||||||
.strips[self.index]
|
.strips[self.index]
|
||||||
.parametric_eq_settings[self.cell_index]
|
.parametric_eq[self.cell_index]
|
||||||
.gain
|
.gain
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -412,7 +428,7 @@ class StripEQChCell(IRemote):
|
|||||||
return (
|
return (
|
||||||
self.public_packets[NBS.one]
|
self.public_packets[NBS.one]
|
||||||
.strips[self.index]
|
.strips[self.index]
|
||||||
.parametric_eq_settings[self.cell_index]
|
.parametric_eq[self.cell_index]
|
||||||
.q
|
.q
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user