local settings = require "core:settings_common".new(document, {app=app}) -- templates call these functions by name, so they must be global create_trackbar_setting = settings.create_trackbar_setting update_trackbar_label = settings.update_trackbar_label function update_checkbox_setting(id, value) app.set_setting(id, value) local recording_enabled = app.get_setting("audio.recording-enabled") document.input_device_select.enabled = recording_enabled document.input_volume_inner.enabled = recording_enabled document.input_volume_outer.enabled = recording_enabled local selectbox = document.input_device_select local info = audio.input.get_input_info() if info then selectbox.value = info.device_specifier else selectbox.value = app.get_setting("audio.input-device") end end local function create_audio_checkbox(id, name, tooltip) settings.create_checkbox(id, name, tooltip, "update_checkbox_setting") update_checkbox_setting(id, app.get_setting(id)) end local initialized = false function on_open() if not initialized then initialized = true local token = core.get_core_token() document.root:add("") local prev_amplitude = 0.0 document.tm:setInterval(16, function() audio.input.fetch(token) local amplitude = audio.input.get_max_amplitude() if amplitude > 0.0 then amplitude = math.sqrt(amplitude) end amplitude = math.max(amplitude, prev_amplitude - time.delta()) document.input_volume_inner.size = { prev_amplitude * document.input_volume_outer.size[1], document.input_volume_outer.size[2] } prev_amplitude = amplitude end) end create_trackbar_setting("audio.volume-master", "Master Volume", 0.01) create_trackbar_setting("audio.volume-regular", "Regular Sounds", 0.01) create_trackbar_setting("audio.volume-ui", "UI Sounds", 0.01) create_trackbar_setting("audio.volume-ambient", "Ambient", 0.01) create_trackbar_setting("audio.volume-music", "Music", 0.01) create_trackbar_setting("audio.volume-contrast", "Volume Contrast", 0.01, "", "audio.volume-contrast.tooltip") document.root:add("") document.root:add("