From 8a1fb2bf403b62a3cf9123fc7df33270399174cf Mon Sep 17 00:00:00 2001 From: Tiberius Sicae Date: Thu, 4 Jun 2026 22:40:26 +0100 Subject: [PATCH] Feature: Audio Device Selection --- BuildInstaller/BuildInstaller.csproj | 4 +- .../SpeechServiceConfiguration.cs | 20 +++- EddiUI/Properties/Resources.Designer.cs | 11 +- EddiUI/Properties/Resources.resx | 5 +- EddiUI/TextToSpeechTab.xaml | 45 +++---- EddiUI/TextToSpeechTab.xaml.cs | 111 +++++++++++++++++- SpeechService/AudioDevice.cs | 39 ++++++ SpeechService/SoundManager.cs | 26 +++- 8 files changed, 232 insertions(+), 29 deletions(-) create mode 100644 SpeechService/AudioDevice.cs diff --git a/BuildInstaller/BuildInstaller.csproj b/BuildInstaller/BuildInstaller.csproj index c9692a6380..66a65290ad 100644 --- a/BuildInstaller/BuildInstaller.csproj +++ b/BuildInstaller/BuildInstaller.csproj @@ -18,9 +18,9 @@ :: This is a local build rather than a continuous integration... we will proceed. cd "$(SolutionDir)" - if exist $(SolutionDir)postBuildTests.bat ( + if exist "$(SolutionDir)postBuildTests.bat" ( @echo Post-build script exists at: $(SolutionDir)postBuildTests.bat - executing... - call $(SolutionDir)postBuildTests.bat "$(Configuration)" "$(SolutionDir)" "bin\$(Configuration)\" + call "$(SolutionDir)postBuildTests.bat" "$(Configuration)" "$(SolutionDir)" "bin\$(Configuration)\" ) if "$(Configuration)" == "Release" ( diff --git a/ConfigService/Configurations/SpeechServiceConfiguration.cs b/ConfigService/Configurations/SpeechServiceConfiguration.cs index 7fad97a660..1d79d296a6 100644 --- a/ConfigService/Configurations/SpeechServiceConfiguration.cs +++ b/ConfigService/Configurations/SpeechServiceConfiguration.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; namespace EddiConfigService.Configurations { @@ -15,6 +15,7 @@ public class SpeechServiceConfiguration : Config private int _effectsLevel = 50; private int _volume = 80; private string _standardVoice; + private string _audioDevice; [ JsonProperty( "standardVoice" ) ] public string StandardVoice @@ -32,6 +33,22 @@ public string StandardVoice } } + [ JsonProperty( "audioDevice" ) ] + public string AudioDevice + { + get => _audioDevice; + set + { + if ( value == _audioDevice ) + { + return; + } + + _audioDevice = value; + OnPropertyChanged(); + } + } + [ JsonProperty( "volume" ) ] public int Volume { @@ -134,6 +151,7 @@ public bool EnableIcao public void Clear() { StandardVoice = null; + AudioDevice = null; Volume = 100; EffectsLevel = 50; DistortOnDamage = true; diff --git a/EddiUI/Properties/Resources.Designer.cs b/EddiUI/Properties/Resources.Designer.cs index e078e272b1..7c9bc4ebc9 100644 --- a/EddiUI/Properties/Resources.Designer.cs +++ b/EddiUI/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -682,6 +682,15 @@ public static string tab_tts_voice_label { return ResourceManager.GetString("tab_tts_voice_label", resourceCulture); } } + + /// + /// Looks up a localized string similar to Audio device:. + /// + public static string tab_tts_audio_device_label { + get { + return ResourceManager.GetString("tab_tts_audio_device_label", resourceCulture); + } + } /// /// Looks up a localized string similar to Volume of speech:. diff --git a/EddiUI/Properties/Resources.resx b/EddiUI/Properties/Resources.resx index f83861a8ae..d85ebf62f7 100644 --- a/EddiUI/Properties/Resources.resx +++ b/EddiUI/Properties/Resources.resx @@ -1,4 +1,4 @@ - +