Fixes with the dectalk driver with rate, etc.
This commit is contained in:
@@ -17,13 +17,21 @@ class driver(hardware_serial_driver):
|
||||
return self._clean_text(text).encode("ascii", errors="replace") + b"\x0b"
|
||||
|
||||
def _rate_command(self, rate):
|
||||
return self._setting_command("ra", self._scale(rate, 75, 650))
|
||||
value = self._scale_around_default(rate, 75, 180, 650)
|
||||
return self._setting_command("ra", value)
|
||||
|
||||
def _pitch_command(self, pitch):
|
||||
return self._setting_command("dv ap", self._scale(pitch, 50, 350))
|
||||
value = self._scale_around_default(pitch, 50, 122, 350)
|
||||
return self._setting_command("dv ap", value)
|
||||
|
||||
def _volume_command(self, volume):
|
||||
return self._setting_command("dv g5", self._scale(volume, 60, 86))
|
||||
|
||||
def _scale_around_default(self, value, minimum, default, maximum):
|
||||
value = max(0.0, min(1.0, value))
|
||||
if value <= 0.5:
|
||||
return self._scale(value * 2, minimum, default)
|
||||
return self._scale((value - 0.5) * 2, default, maximum)
|
||||
|
||||
def _setting_command(self, command, value):
|
||||
return f"[:{command} {value}]".encode("ascii")
|
||||
|
||||
Reference in New Issue
Block a user