Skip to content
Snippets Groups Projects
Commit e7ed156f authored by ave's avatar ave
Browse files

add audio settings into settings.json

parent f95edfc6
Branches
No related tags found
No related merge requests found
from ctx import Context from ctx import Context
from st3m import Responder from st3m import Responder, settings
from st3m.input import InputState, InputController from st3m.input import InputState, InputController
from st3m.goose import ABCBase, abstractmethod, List from st3m.goose import ABCBase, abstractmethod, List
...@@ -30,14 +30,13 @@ class AudioProcessor(Processor): ...@@ -30,14 +30,13 @@ class AudioProcessor(Processor):
def __init__(self) -> None: def __init__(self) -> None:
super().__init__() super().__init__()
self.input = InputController() self.input = InputController()
self.volume_step = 1.5
def think(self, ins: InputState, delta_ms: int) -> None: def think(self, ins: InputState, delta_ms: int) -> None:
self.input.think(ins, delta_ms) self.input.think(ins, delta_ms)
if self.input.buttons.os.left.pressed: if self.input.buttons.os.left.pressed:
audio.adjust_volume_dB(-self.volume_step) audio.adjust_volume_dB(-settings.num_volume_step_db.value)
if self.input.buttons.os.right.pressed: if self.input.buttons.os.right.pressed:
audio.adjust_volume_dB(self.volume_step) audio.adjust_volume_dB(settings.num_volume_step_db.value)
class ProcessorMidldeware(Responder): class ProcessorMidldeware(Responder):
......
...@@ -145,10 +145,12 @@ def run_main() -> None: ...@@ -145,10 +145,12 @@ def run_main() -> None:
log.info(f"free memory: {gc.mem_free()}") log.info(f"free memory: {gc.mem_free()}")
captouch.calibration_request() captouch.calibration_request()
# defaults, maybe expose in a config file someday
audio.set_volume_dB(-10) audio.set_volume_dB(settings.num_startup_volume_db.value)
audio.headphones_set_minimum_volume_dB(-30) audio.headphones_set_minimum_volume_dB(settings.num_headphones_min_db.value)
audio.speaker_set_minimum_volume_dB(-30) audio.speaker_set_minimum_volume_dB(settings.num_speakers_min_db.value)
audio.headphones_set_maximum_volume_dB(settings.num_headphones_max_db.value)
audio.speaker_set_maximum_volume_dB(settings.num_speakers_max_db.value)
leds.set_rgb(0, 255, 0, 0) leds.set_rgb(0, 255, 0, 0)
leds.update() leds.update()
......
...@@ -161,6 +161,19 @@ class StringTunable(UnaryTunable): ...@@ -161,6 +161,19 @@ class StringTunable(UnaryTunable):
pass pass
class NumberTunable(UnaryTunable):
"""
NumberTunable is a UnaryTunable that has a numeric value
"""
def __init__(self, name: str, key: int | float, default: Optional[str]) -> None:
super().__init__(name, key, default)
def press(self, vm: Optional["ViewManager"]) -> None:
# Number adjustment not supported at the moment
pass
# TODO: invert Tunable <-> Widget dependency to be able to define multiple different widget renderings for the same underlying tunable type # TODO: invert Tunable <-> Widget dependency to be able to define multiple different widget renderings for the same underlying tunable type
class ObfuscatedStringTunable(UnaryTunable): class ObfuscatedStringTunable(UnaryTunable):
""" """
...@@ -189,6 +202,24 @@ onoff_wifi_preference = OnOffTunable( ...@@ -189,6 +202,24 @@ onoff_wifi_preference = OnOffTunable(
str_wifi_ssid = StringTunable("WiFi SSID", "system.wifi.ssid", "Camp2023-open") str_wifi_ssid = StringTunable("WiFi SSID", "system.wifi.ssid", "Camp2023-open")
str_wifi_psk = ObfuscatedStringTunable("WiFi Password", "system.wifi.psk", None) str_wifi_psk = ObfuscatedStringTunable("WiFi Password", "system.wifi.psk", None)
str_hostname = StringTunable("Hostname", "system.hostname", "flow3r") str_hostname = StringTunable("Hostname", "system.hostname", "flow3r")
num_volume_step_db = StringTunable(
"Volume Change dB", "system.audio.volume_step_db", 2.5
)
num_startup_volume_db = StringTunable(
"Startup Volume dB", "system.audio.startup_volume_db", -10
)
num_headphones_min_db = StringTunable(
"Min Headphone Volume dB", "system.audio.headphones_min_db", -30
)
num_speakers_min_db = StringTunable(
"Min Speakers Volume dB", "system.audio.speakers_min_db", -30
)
num_headphones_max_db = StringTunable(
"Max Headphone Volume dB", "system.audio.headphones_max_db", 3
)
num_speakers_max_db = StringTunable(
"Max Speakers Volume dB", "system.audio.speakers_max_db", 14
)
# List of all settings to be loaded/saved # List of all settings to be loaded/saved
load_save_settings: List[UnaryTunable] = [ load_save_settings: List[UnaryTunable] = [
...@@ -203,6 +234,12 @@ load_save_settings: List[UnaryTunable] = [ ...@@ -203,6 +234,12 @@ load_save_settings: List[UnaryTunable] = [
str_wifi_ssid, str_wifi_ssid,
str_wifi_psk, str_wifi_psk,
str_hostname, str_hostname,
num_volume_step_db,
num_startup_volume_db,
num_headphones_min_db,
num_speakers_min_db,
num_headphones_max_db,
num_speakers_max_db,
] ]
......
...@@ -154,6 +154,7 @@ tunable_widget_map = { ...@@ -154,6 +154,7 @@ tunable_widget_map = {
Tunable: TunableWidget, Tunable: TunableWidget,
OnOffTunable: OnOffWidget, OnOffTunable: OnOffWidget,
StringTunable: StringWidget, StringTunable: StringWidget,
NumberTunable: StringWidget, # temporary until an editable one is added
ObfuscatedStringTunable: ObfuscatedValueWidget, ObfuscatedStringTunable: ObfuscatedValueWidget,
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment