diff --git a/.vscode/.server-controller-port.log b/.vscode/.server-controller-port.log index cae0d5f..353bf6d 100644 --- a/.vscode/.server-controller-port.log +++ b/.vscode/.server-controller-port.log @@ -1,5 +1,5 @@ { "port": 13452, - "time": 1754149596407, + "time": 1754151185891, "version": "0.0.3" } \ No newline at end of file diff --git a/filter/bs412.h b/filter/bs412.h index 07bf132..ec606b6 100644 --- a/filter/bs412.h +++ b/filter/bs412.h @@ -6,6 +6,7 @@ #include #include +#include #ifdef BS412_DEBUG #include "../lib/debug.h" #endif @@ -14,7 +15,7 @@ typedef struct { int mpx_deviation; int average_counter; - int sample_rate; + uint32_t sample_rate; float target; float attack; float release; diff --git a/filter/gain_control.h b/filter/gain_control.h index 63f017c..5d3b5cc 100644 --- a/filter/gain_control.h +++ b/filter/gain_control.h @@ -1,5 +1,6 @@ #pragma once #include +#include typedef struct { float targetLevel; @@ -11,7 +12,7 @@ typedef struct { float currentGain; float currentLevel; - int sampleRate; + uint32_t sampleRate; float attackCoef; float releaseCoef; diff --git a/src/fm95.c b/src/fm95.c index b8339f5..a8e830f 100644 --- a/src/fm95.c +++ b/src/fm95.c @@ -445,7 +445,7 @@ void init_runtime(FM95_Runtime* runtime, FM95_Config config, bool rds_on) { } float last_gain = 0.0f; - if((uint32_t)runtime->bs412.sample_rate == config.sample_rate) last_gain = runtime->bs412.gain; + if(runtime->bs412.sample_rate == config.sample_rate) last_gain = runtime->bs412.gain; init_bs412(&runtime->bs412, config.mpx_deviation, config.mpx_power, config.bs412_attack, config.bs412_release, config.bs412_max, config.sample_rate); runtime->bs412.gain = last_gain; @@ -454,7 +454,8 @@ void init_runtime(FM95_Runtime* runtime, FM95_Config config, bool rds_on) { init_stereo_encoder(&runtime->stencode, 4.0f, &runtime->osc, (config.stereo == 2), config.volumes.mono, config.volumes.pilot, config.volumes.stereo); if(config.agc_max != 0.0) { - if((uint32_t)runtime->agc.sampleRate == config.sample_rate) last_gain = runtime->agc.currentGain; + last_gain = 0.0f; + if(runtime->agc.sampleRate == config.sample_rate) last_gain = runtime->agc.currentGain; initAGC(&runtime->agc, config.sample_rate, config.agc_target, config.agc_min, config.agc_max, config.agc_attack, config.agc_release); runtime->agc.currentGain = last_gain; }