From fab44bcc42a4c9259ee542cbca7b657b8864e8cc Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Tue, 25 Mar 2025 17:10:15 +0100 Subject: [PATCH] im a genius --- lib/filters.c | 16 ---------------- lib/filters.h | 1 - src/fm95.c | 10 +++++----- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/lib/filters.c b/lib/filters.c index ae139b0..ed1017c 100644 --- a/lib/filters.c +++ b/lib/filters.c @@ -18,22 +18,6 @@ float sincf(float x) { return (x == 0.0f) ? 1.0f : sinf(M_PI * x) / (M_PI * x); } -void init_bpf(FIRFilter *bpf, float start, float end) { - int m = FILTER_LEN - 1; - float sum = 0.0f; - - for(int n = 0; n < FILTER_LEN; n++) { - float x = n-m/2.0f; - float h1 = sincf(2.0f*start*x) * (0.54 - 0.46 * cosf(M_2PI * n / m)); - float h2 = sincf(2.0f*end*x) * (0.54 - 0.46 * cosf(M_2PI * n / m)); - bpf->filter[n] = h1-h2; - sum += bpf->filter[n]; - } - - for(int n = 0; n < FILTER_LEN; n++) { - bpf->filter[n] /= sum; - } -} void init_lpf(FIRFilter *lpf, float freq) { int m = FILTER_LEN - 1; float sum = 0.0f; diff --git a/lib/filters.h b/lib/filters.h index 185db30..e42d014 100644 --- a/lib/filters.h +++ b/lib/filters.h @@ -23,6 +23,5 @@ typedef struct filters float filter[FILTER_LEN]; int filter_idx; } FIRFilter; -void init_bpf(FIRFilter *bpf, float start, float end); void init_lpf(FIRFilter *lpf, float freq); float fir_filter(FIRFilter *fir, float sample); \ No newline at end of file diff --git a/src/fm95.c b/src/fm95.c index 1e3e121..2e55936 100644 --- a/src/fm95.c +++ b/src/fm95.c @@ -406,7 +406,7 @@ int main(int argc, char **argv) { // #region Setup Filters/Modulaltors/Oscillators Oscillator osc; - init_oscillator(&osc, polar_stereo ? 31250.0 : 19000, sample_rate); + init_oscillator(&osc, polar_stereo ? 31250.0 : 9500, sample_rate); FMModulator sca_mod; init_fm_modulator(&sca_mod, sca_frequency, sca_deviation, sample_rate); @@ -485,21 +485,21 @@ int main(int argc, char **argv) { output[i] = mono*MONO_VOLUME; if(stereo) { float stereo = (ready_l - ready_r) / 2.0f; - float stereo_carrier = get_oscillator_sin_multiplier_ni(&osc, polar_stereo ? 1 : 2); + float stereo_carrier = get_oscillator_sin_multiplier_ni(&osc, polar_stereo ? 1 : 4); if(polar_stereo) { output[i] += ((stereo+0.2)*stereo_carrier)*STEREO_VOLUME; } else { - float pilot = get_oscillator_sin_multiplier_ni(&osc, 1); + float pilot = get_oscillator_sin_multiplier_ni(&osc, 2); output[i] += pilot*PILOT_VOLUME + (stereo*stereo_carrier)*STEREO_VOLUME; } } if(rds_on && polar_stereo == 0) { - float rds_carrier = get_oscillator_sin_multiplier_ni(&osc, 3); + float rds_carrier = get_oscillator_sin_multiplier_ni(&osc, 6); output[i] += (current_rds_in*rds_carrier)*RDS_VOLUME; if(!sca_on) { - float rds2_carrier_66 = fir_filter(&rds2_bpf, rds_carrier*get_oscillator_sin_multiplier_ni(&osc, 0.5f)); + float rds2_carrier_66 = get_oscillator_sin_multiplier_ni(&osc, 7); output[i] += (current_rds2_in*rds2_carrier_66)*RDS2_VOLUME; } }