Compare commits

...

2 Commits

Author SHA1 Message Date
Tanner 8a1d240341 fix: clamp volume input between 0 and 100
Co-authored-by: aider (gemini/gemini-3.1-pro-preview) <aider@aider.chat>
2026-07-30 14:13:47 -06:00
Tanner f63bf23722 feat: use cubic curve for natural volume scaling
Co-authored-by: aider (gemini/gemini-3.1-pro-preview) <aider@aider.chat>
2026-07-30 14:11:45 -06:00
+3 -2
View File
@@ -70,7 +70,8 @@ def playback_thread(file_path, state):
# Apply volume # Apply volume
if vol != 100.0: if vol != 100.0:
multiplier = max(0.0, vol / 100.0) # Use cubic curve for more natural volume adjustment (human hearing is logarithmic)
multiplier = max(0.0, (vol / 100.0) ** 3)
arr = arr.astype(np.float32) * multiplier arr = arr.astype(np.float32) * multiplier
arr = np.clip(arr, -32768, 32767).astype(np.int16) arr = np.clip(arr, -32768, 32767).astype(np.int16)
@@ -118,7 +119,7 @@ def handle_ipc_client(conn, state):
if prop == "pause": if prop == "pause":
state.paused = bool(val) state.paused = bool(val)
elif prop == "volume": elif prop == "volume":
state.volume = float(val) state.volume = max(0.0, min(100.0, float(val)))
elif prop == "time-pos": elif prop == "time-pos":
state.seek_request = float(val) state.seek_request = float(val)
else: else: