diff --git a/lib/filters.c b/lib/filters.c index a75d701..efac0d5 100644 --- a/lib/filters.c +++ b/lib/filters.c @@ -14,21 +14,19 @@ float hard_clip(float sample, float threshold) { return fmaxf(-threshold, fminf(threshold, sample)); } -void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, float damping, int quadrature_mode, int sample_rate) { +void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, float damping, int sample_rate) { pll->phase = 0.0f; pll->freq = freq; pll->loop_filter_state = 0.0f; pll->kp = M_2PI * loop_filter_bandwidth; pll->ki = (4.0f*damping*damping) * pll->kp * pll->kp; pll->sample_rate = sample_rate; - pll->quadrature_mode = quadrature_mode; } float apply_pll(PLL *pll, float ref_sample) { float phase_error; float vco_output = sinf(pll->phase); - if (pll->quadrature_mode) vco_output = sinf(pll->phase + (M_PI / 2.0f)); phase_error = atan2f(ref_sample, vco_output);; diff --git a/lib/filters.h b/lib/filters.h index 3d7a128..17f95d3 100644 --- a/lib/filters.h +++ b/lib/filters.h @@ -23,7 +23,6 @@ typedef struct { float kp; float ki; int sample_rate; - int quadrature_mode; } PLL; -void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, float damping, int quadrature_mode, int sample_rate); +void init_pll(PLL *pll, float freq, float loop_filter_bandwidth, float damping, int sample_rate); float apply_pll(PLL *pll, float ref_sample); \ No newline at end of file diff --git a/src/fm95.c b/src/fm95.c index 120648f..1b5582c 100644 --- a/src/fm95.c +++ b/src/fm95.c @@ -416,7 +416,7 @@ int main(int argc, char **argv) { init_preemphasis(&preemp_r, preemphasis_tau, sample_rate); PLL rds2_pll; - init_pll(&rds2_pll, 66500, 1, 2, 1, sample_rate); + init_pll(&rds2_pll, 66500, 1, 0.25f, sample_rate); // #endregion signal(SIGINT, stop); @@ -492,7 +492,7 @@ int main(int argc, char **argv) { } } if(rds_on && polar_stereo == 0) { - float rds_carrier = get_oscillator_cos_multiplier_ni(&osc, 3); + float rds_carrier = get_oscillator_sin_multiplier_ni(&osc, 3); output[i] += (current_rds_in*rds_carrier)*RDS_VOLUME; if(!sca_on) { float rds2_carrier_66 = apply_pll(&rds2_pll, get_oscillator_sin_multiplier_ni(&osc, 1));