Fixes with the dectalk driver with rate, etc.

This commit is contained in:
Storm Dragon
2026-07-26 21:10:39 -04:00
parent 11a4244cc3
commit e93aba109a
2 changed files with 21 additions and 2 deletions
@@ -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")