From f9a23c660130e15c79fa410aa65bbc1ed1d3f51e Mon Sep 17 00:00:00 2001 From: firealarmss Date: Thu, 27 Feb 2025 02:50:55 -0600 Subject: [PATCH] Create a custom provider to allow for gain on received audio --- WhackerLinkConsoleV2/AudioManager.cs | 18 ++++--- WhackerLinkConsoleV2/ChannelBox.xaml | 4 +- WhackerLinkConsoleV2/GainSampleProvider.cs | 58 ++++++++++++++++++++++ 3 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 WhackerLinkConsoleV2/GainSampleProvider.cs diff --git a/WhackerLinkConsoleV2/AudioManager.cs b/WhackerLinkConsoleV2/AudioManager.cs index f190322..833d71c 100644 --- a/WhackerLinkConsoleV2/AudioManager.cs +++ b/WhackerLinkConsoleV2/AudioManager.cs @@ -29,7 +29,7 @@ namespace WhackerLinkConsoleV2 private WaveOutEvent _waveOut; private MixingSampleProvider _mixer; - private Dictionary _talkgroupProviders; + private Dictionary _talkgroupProviders; /// /// Creates an instance of @@ -37,7 +37,7 @@ namespace WhackerLinkConsoleV2 public AudioManager() { _waveOut = new WaveOutEvent(); - _talkgroupProviders = new Dictionary(); + _talkgroupProviders = new Dictionary(); _mixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(8000, 1)) { ReadFully = true @@ -71,13 +71,13 @@ namespace WhackerLinkConsoleV2 DiscardOnBufferOverflow = true }; - var volumeProvider = new VolumeSampleProvider(bufferProvider.ToSampleProvider()) + var gainProvider = new GainSampleProvider(bufferProvider.ToSampleProvider()) { - Volume = 1.0f + Gain = 1.0f }; - _talkgroupProviders[talkgroupId] = (bufferProvider, volumeProvider); - _mixer.AddMixerInput(volumeProvider); + _talkgroupProviders[talkgroupId] = (bufferProvider, gainProvider); + _mixer.AddMixerInput(gainProvider); } /// @@ -86,11 +86,13 @@ namespace WhackerLinkConsoleV2 public void SetTalkgroupVolume(string talkgroupId, float volume) { if (_talkgroupProviders.ContainsKey(talkgroupId)) - _talkgroupProviders[talkgroupId].volumeProvider.Volume = volume; + { + _talkgroupProviders[talkgroupId].gainProvider.Gain = volume; + } else { AddTalkgroupStream(talkgroupId); - _talkgroupProviders[talkgroupId].volumeProvider.Volume = volume; + _talkgroupProviders[talkgroupId].gainProvider.Gain = volume; } } diff --git a/WhackerLinkConsoleV2/ChannelBox.xaml b/WhackerLinkConsoleV2/ChannelBox.xaml index 62e302e..97244f0 100644 --- a/WhackerLinkConsoleV2/ChannelBox.xaml +++ b/WhackerLinkConsoleV2/ChannelBox.xaml @@ -22,8 +22,8 @@