From 88e61125d198d0c66482b3b8afa8295910d6f9f5 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 4 Nov 2025 19:47:35 +0300 Subject: [PATCH] add device select to audio settings --- res/layouts/pages/settings_audio.xml.lua | 34 +++++++++++++++++++++++ res/layouts/templates/problem.xml | 2 +- res/layouts/templates/script_file.xml | 2 +- res/modules/internal/audio_input.lua | 33 ++++++++++++++++++---- res/scripts/hud.lua | 8 ++++-- src/audio/AL/ALAudio.cpp | 11 ++++++++ src/audio/AL/ALAudio.hpp | 2 ++ src/audio/audio.hpp | 5 ++++ src/logic/scripting/lua/libs/libaudio.cpp | 4 ++- 9 files changed, 91 insertions(+), 10 deletions(-) diff --git a/res/layouts/pages/settings_audio.xml.lua b/res/layouts/pages/settings_audio.xml.lua index 9b29bd52..1b14cf04 100644 --- a/res/layouts/pages/settings_audio.xml.lua +++ b/res/layouts/pages/settings_audio.xml.lua @@ -24,10 +24,44 @@ function update_setting(x, id, name, postfix) ) end +local initialized = false + function on_open() + if not initialized then + initialized = true + local token = audio.input.__get_core_token() + document.root:add("") + local prev_amplitude = 0.0 + document.tm:setInterval(16, function() + audio.input.fetch_input(token) + local amplitude = audio.input.get_max_amplitude() + if amplitude > 0.0 then + amplitude = math.sqrt(amplitude) + end + document.input_volume_inner.size = { + prev_amplitude * + document.input_volume_outer.size[1], + document.input_volume_outer.size[2] + } + prev_amplitude = amplitude * 0.25 + prev_amplitude * 0.75 + end) + end create_setting("audio.volume-master", "Master Volume", 0.01) create_setting("audio.volume-regular", "Regular Sounds", 0.01) create_setting("audio.volume-ui", "UI Sounds", 0.01) create_setting("audio.volume-ambient", "Ambient", 0.01) create_setting("audio.volume-music", "Music", 0.01) + document.root:add("