app: Implement volume curve

This commit is contained in:
2025-05-20 20:19:13 +02:00
parent 7712c25627
commit 7778147b66

View File

@@ -9,6 +9,9 @@ from utils import TimerManager
Dependencies = namedtuple('Dependencies', ('mp3player', 'nfcreader', 'buttons'))
# Should be ~ 6dB steps
VOLUME_CURVE = [1, 2, 4, 8, 16, 32, 63, 126, 251]
class PlayerApp:
def __init__(self, deps: Dependencies):
@@ -18,6 +21,8 @@ class PlayerApp:
self.player = deps.mp3player(self)
self.nfc = deps.nfcreader(self)
self.buttons = deps.buttons(self) if deps.buttons is not None else None
self.volume_pos = 3
self.player.set_volume(VOLUME_CURVE[self.volume_pos])
def onTagChange(self, new_tag):
if new_tag is not None:
@@ -50,8 +55,10 @@ class PlayerApp:
def onButtonPressed(self, what):
if what == self.buttons.VOLUP:
self.player.set_volume(min(255, self.player.get_volume()+1))
self.volume_pos = min(self.volume_pos + 1, len(VOLUME_CURVE) - 1)
self.player.set_volume(VOLUME_CURVE[self.volume_pos])
elif what == self.buttons.VOLDOWN:
self.player.set_volume(max(0, self.player.get_volume()-1))
self.volume_pos = max(self.volume_pos - 1, 0)
self.player.set_volume(VOLUME_CURVE[self.volume_pos])
elif what == self.buttons.NEXT:
self.player.play_next()