diff --git a/src/libfilter/iir_filter.c b/src/libfilter/iir_filter.c index 2123feb..5872d61 100644 --- a/src/libfilter/iir_filter.c +++ b/src/libfilter/iir_filter.c @@ -104,7 +104,7 @@ void iir_notch_init(iir_filter_t *filter, double frequency, int samplerate, int filter->b1 = filter->a1; filter->b2 = (1 - K / Q + K * K) * norm; } - + void iir_process(iir_filter_t *filter, sample_t *samples, int length) { double a0, a1, a2, b1, b2; @@ -126,7 +126,8 @@ void iir_process(iir_filter_t *filter, sample_t *samples, int length) /* process filter */ for (i = 0; i < length; i++) { - in = *samples; + /* add a small value, otherwise this loop will perform really bad on my 'nuedel' machine!!! */ + in = *samples + 0.000000001; for (j = 0; j < iterations; j++) { out = in * a0 + z1[j]; z1[j] = in * a1 + z2[j] - b1 * out; @@ -163,7 +164,8 @@ void iir_process_baseband(iir_filter_t *filter, float *baseband, int length) /* process filter */ for (i = 0; i < length; i++) { - in = *baseband; + /* add a small value, otherwise this loop will perform really bad on my 'nuedel' machine!!! */ + in = *baseband + 0.000000001; for (j = 0; j < iterations; j++) { out = in * a0 + z1[j]; #ifdef DEBUG_NAN diff --git a/src/libfm/fm.c b/src/libfm/fm.c index 48b4f11..d8f7afa 100644 --- a/src/libfm/fm.c +++ b/src/libfm/fm.c @@ -92,7 +92,6 @@ int fm_mod_init(fm_mod_t *mod, double samplerate, double offset, double amplitud /* generate ramp up with ramp_length */ for (i = 0; i < mod->ramp_length; i++) mod->ramp_tab[i] = 0.5 - cos(M_PI * i / mod->ramp_length) / 2.0; - mod->ramp_tab[0] = mod->ramp_tab[1] / 2.0; /* never be 0 */ return 0; } @@ -199,10 +198,6 @@ again: dev = offset + *frequency++; power++; length--; - /* somehow we need to have some value, otherwise IIR filter will be very slow! - * we still continue with a carrier, but it has very low amplitude. - * the low amplitude is set in ramp_tab[0] - */ if (fast_math) { phase += 65536.0 * dev / rate; if (phase < 0.0)