From 4fdb2dff0d84f4f033c6fd8bc4f540b0b6276139 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Sat, 31 May 2025 11:51:26 +0200 Subject: [PATCH] bug is 100% related to bs412 --- dsp/bs412.c | 4 ++-- src/fm95.c | 7 ------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/dsp/bs412.c b/dsp/bs412.c index b74ec9d..1dd103e 100644 --- a/dsp/bs412.c +++ b/dsp/bs412.c @@ -3,12 +3,12 @@ #define LOG2_19000 log2f(19000.0f) inline float dbr_to_deviation(float dbr) { - return 19000.0f * powf(10.0f, dbr / 20.0f); + return 19000.0f * powf(2.0f, dbr * 0.332193f); } inline float deviation_to_dbr(float deviation) { if(deviation == 0.0f) return -100.0f; - return 20.0f * (log2f(deviation) - LOG2_19000) * 0.30103f; + return 10.0f * (log2f(deviation) - LOG2_19000) * 0.30103f; } void init_modulation_power_measure(MPXPowerMeasurement* mpx, int sample_rate) { diff --git a/src/fm95.c b/src/fm95.c index 7a679b8..ccd5fce 100644 --- a/src/fm95.c +++ b/src/fm95.c @@ -578,13 +578,6 @@ int main(int argc, char **argv) { float target_gain = dbr_to_deviation(-excess_power)/mpx_deviation; bs412_audio_gain = 0.9f * bs412_audio_gain + 0.1f * target_gain; audio *= bs412_audio_gain; - } else if (peak_mpower > (mpx_power + 0.1f)) { - float excess_power = peak_mpower - mpx_power - 0.1f; - excess_power = deviation_to_dbr(dbr_to_deviation(excess_power) - dbr_to_deviation(peak_mpx_only)); - - float target_gain = dbr_to_deviation(-excess_power)/mpx_deviation; - bs412_audio_gain = 0.8f * bs412_audio_gain + 0.2f * target_gain; - audio *= bs412_audio_gain; } iirfilt_rrrf_execute(mpx_lpf, audio, &audio); // Should have no effect, as audio should be 0-15, and 23-53, this is a filter for 53, assuming the filter is good, this is precaution and recomendation