add force stereo option to avoid audio getting lost in misconfigured surround setup

This commit is contained in:
betalars 2025-05-09 17:34:45 +02:00
parent f0a8bc9437
commit b7258e858b
5 changed files with 33 additions and 1 deletions

View File

@ -0,0 +1,11 @@
class_name StereoSwitch extends AudioStreamPlayer
func _ready() -> void:
State.settings_changed.connect(update_mix_target)
update_mix_target()
func update_mix_target():
if State.force_stereo:
mix_target = AudioStreamPlayer.MIX_TARGET_STEREO
else:
mix_target = AudioStreamPlayer.MIX_TARGET_CENTER

View File

@ -0,0 +1 @@
uid://c1oub0cs7cph6

View File

@ -22,6 +22,7 @@ var current_music_decay:float = 0
@onready var sum_slider: Range = %SumSlider @onready var sum_slider: Range = %SumSlider
@onready var text_lang_selector: OptionButton = %InterfaceSelector @onready var text_lang_selector: OptionButton = %InterfaceSelector
@onready var speech_lang_selector: OptionButton = %SpeechSelector @onready var speech_lang_selector: OptionButton = %SpeechSelector
@onready var force_stereo_switch: CheckBox = %ForceStereoCheck
func _process(delta: float) -> void: func _process(delta: float) -> void:
if current_music_decay > 0: if current_music_decay > 0:
@ -55,6 +56,8 @@ func _ready() -> void:
%ResetButton.pressed.connect(_on_reset_button_pressed) %ResetButton.pressed.connect(_on_reset_button_pressed)
%SaveButton.pressed.connect(_on_exit_button_pressed) %SaveButton.pressed.connect(_on_exit_button_pressed)
force_stereo_switch.pressed.connect(func(value): State.force_stereo = value)
func _on_reset_button_pressed(): func _on_reset_button_pressed():
music_mute_switch.button_pressed = false music_mute_switch.button_pressed = false
@ -73,6 +76,7 @@ func update_ui_from_state():
sum_slider.value = State.main_volume sum_slider.value = State.main_volume
text_lang_selector.select(State.text_language) text_lang_selector.select(State.text_language)
speech_lang_selector.select(State.speech_language) speech_lang_selector.select(State.speech_language)
force_stereo_switch.button_pressed = State.force_stereo
func _on_exit_button_pressed() -> void: func _on_exit_button_pressed() -> void:
leave_stage.emit() leave_stage.emit()

View File

@ -161,6 +161,12 @@ max_value = 1.0
step = 0.05 step = 0.05
value = 0.5 value = 0.5
[node name="ForceStereoCheck" type="CheckBox" parent="."]
unique_name_in_owner = true
layout_mode = 2
tooltip_text = "This setting disables the surround center channel. May resolve you not hearing speech when your Operating Sustem has a misconfigured surround setup."
text = "Headphone-Mode (may fix missing speech)"
[node name="I18nLabel" type="Label" parent="."] [node name="I18nLabel" type="Label" parent="."]
layout_mode = 2 layout_mode = 2
theme_type_variation = &"HeaderMedium" theme_type_variation = &"HeaderMedium"

View File

@ -99,6 +99,15 @@ var current_main_theme:Theme = preload("res://logic-scenes/themes/handwriting.th
set(volume): set(volume):
speech_volume = volume speech_volume = volume
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("text"), linear_to_db(volume)) AudioServer.set_bus_volume_db(AudioServer.get_bus_index("text"), linear_to_db(volume))
@export var force_stereo: bool = false:
set(stereo):
if stereo != force_stereo:
force_stereo = stereo
settings_changed.emit()
@export var disconnect_steam:bool = false
@export var obscure_logs:bool = true
@export_enum("system_locale", "english", "german") var text_language: int = -1: @export_enum("system_locale", "english", "german") var text_language: int = -1:
set(value): set(value):
text_language = value text_language = value
@ -172,7 +181,8 @@ func save_settings():
"sfx_volume": sfx_volume, "sfx_volume": sfx_volume,
"music_muted": music_muted, "music_muted": music_muted,
"music_volume": music_volume, "music_volume": music_volume,
"speech_volume": speech_volume "speech_volume": speech_volume,
"force_stereo": force_stereo
}, },
"gameplay": { "gameplay": {
"input_sensitivity": input_sensitivity, "input_sensitivity": input_sensitivity,