diff --git a/src/trx-server/trx-backend/trx-backend-soapysdr/src/demod.rs b/src/trx-server/trx-backend/trx-backend-soapysdr/src/demod.rs index c52b349..117e45e 100644 --- a/src/trx-server/trx-backend/trx-backend-soapysdr/src/demod.rs +++ b/src/trx-server/trx-backend/trx-backend-soapysdr/src/demod.rs @@ -33,7 +33,7 @@ const STEREO_SEPARATION_PHASE_TRIM: f32 = 0.0; const STEREO_SEPARATION_GAIN: f32 = 1.000; /// Extra headroom in the stereo matrix to reduce stereo-only clipping/IMD on /// strong program material. This keeps bass excursions from flattening treble. -const STEREO_MATRIX_GAIN: f32 = 1.00; +const STEREO_MATRIX_GAIN: f32 = 1.20; /// Stereo detection runs every N composite samples to reduce CPU. const STEREO_DETECT_DECIMATION: u32 = 16; /// Gentle high-pass memory for the stereo L-R path. diff --git a/src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp.rs b/src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp.rs index f3c8269..c00a2cd 100644 --- a/src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp.rs +++ b/src/trx-server/trx-backend/trx-backend-soapysdr/src/dsp.rs @@ -869,7 +869,7 @@ impl ChannelDsp { // WFM: full composite decoder (handles its own DC blocks + deemphasis). // No AGC — WFM uses IQ hard limiting + fixed output gain to preserve // stereo separation and avoid AGC pumping on broadcast audio. - const WFM_OUTPUT_GAIN: f32 = 0.35; + const WFM_OUTPUT_GAIN: f32 = 0.32; let audio = if let Some(decoder) = self.wfm_decoder.as_mut() { let mut out = decoder.process_iq(decimated); for sample in &mut out {