diff --git a/include/dsd.h b/include/dsd.h index 9f8a489..043c4d4 100644 --- a/include/dsd.h +++ b/include/dsd.h @@ -663,9 +663,8 @@ typedef struct //new audio filter structs LPFilter RCFilter; HPFilter HRCFilter; - LPFilter RCFilter8; - HPFilter HRCFilter8; - // PBFilter PBF; + PBFilter PBF; + NOTCHFilter NF; LPFilter RCFilterL; HPFilter HRCFilterL; LPFilter RCFilterR; @@ -1331,8 +1330,8 @@ long int raw_rms(short *samples, int len, int step); void init_audio_filters(dsd_state * state); void lpf(dsd_state * state, short * input, int len); void hpf(dsd_state * state, short * input, int len); -void lpf8(dsd_state * state, short * input, int len); -void hpf8(dsd_state * state, short * input, int len); +void pbf(dsd_state * state, short * input, int len); +void nf(dsd_state * state, short * input, int len); //from: https://github.com/NedSimao/FilteringLibrary void LPFilter_Init(LPFilter *filter, float cutoffFreqHz, float sampleTimeS); float LPFilter_Update(LPFilter *filter, float v_in); diff --git a/src/3.c b/src/3.c index 1c4192b..4f3d907 100644 --- a/src/3.c +++ b/src/3.c @@ -464,10 +464,6 @@ void init_audio_filters (dsd_state * state) LPFilter_Init(&state->RCFilter, 960, (float)1/(float)48000); HPFilter_Init(&state->HRCFilter, 960, (float)1/(float)48000); - //still unsure if 8k sounds good or not (may be the walkie-talkie is too close to SDR, even outside) - LPFilter_Init(&state->RCFilter8, 160, (float)1/(float)8000); - HPFilter_Init(&state->HRCFilter8, 160, (float)1/(float)8000); - //left and right variants for stereo output testing on digital voice samples LPFilter_Init(&state->RCFilterL, 960, (float)1/(float)48000); HPFilter_Init(&state->HRCFilterL, 960, (float)1/(float)48000); @@ -477,6 +473,9 @@ void init_audio_filters (dsd_state * state) //PBFilter_Init(PBFilter *filter, float HPF_cutoffFreqHz, float LPF_cutoffFreqHz, float sampleTimeS); // void NOTCHFilter_Init(NOTCHFilter *filter, float centerFreqHz, float notchWidthHz, float sampleTimeS); + //unclear what we should set up for these, output is super quiet after using them + PBFilter_Init(&state->PBF, 48000, 12000, (float)1/(float)48000); + NOTCHFilter_Init(&state->NF, 48000, 12000, (float)1/(float)48000); } @@ -487,7 +486,11 @@ void lpf(dsd_state * state, short * input, int len) { int i; for (i = 0; i < len; i++) - input[i] = LPFilter_Update(&state->RCFilter, input[i]); + { + // fprintf (stderr, "\n in: %05d", input[i]); + input[i] = LPFilter_Update(&state->RCFilter, input[i]); + // fprintf (stderr, "\n out: %05d", input[i]); + } } //hpf @@ -495,23 +498,35 @@ void hpf(dsd_state * state, short * input, int len) { int i; for (i = 0; i < len; i++) - input[i] = HPFilter_Update(&state->HRCFilter, input[i]); + { + // fprintf (stderr, "\n in: %05d", input[i]); + input[i] = HPFilter_Update(&state->HRCFilter, input[i]); + // fprintf (stderr, "\n out: %05d", input[i]); + } } -//lpf -void lpf8(dsd_state * state, short * input, int len) +//nf +void nf(dsd_state * state, short * input, int len) { int i; for (i = 0; i < len; i++) - input[i] = LPFilter_Update(&state->RCFilter8, input[i]); + { + // fprintf (stderr, "\n in: %05d", input[i]); + input[i] = NOTCHFilter_Update(&state->NF, input[i]); + // fprintf (stderr, "\n out: %05d", input[i]); + } } -//hpf -void hpf8(dsd_state * state, short * input, int len) +//pbf +void pbf(dsd_state * state, short * input, int len) { int i; for (i = 0; i < len; i++) - input[i] = HPFilter_Update(&state->HRCFilter8, input[i]); + { + // fprintf (stderr, "\n in: %05d", input[i]); + input[i] = PBFilter_Update(&state->PBF, input[i]); + // fprintf (stderr, "\n out: %05d", input[i]); + } } //Generic RMS function derived from RTL_FM (RTL_SDR) RMS code (doesnt' really work correctly outside of RTL)