//============================================================
+PRIVATE void
+re_window(COMPLEX *vec, int len) {
+ int i;
+ REAL *win = newvec_REAL(len, "re_window win vec");
+ COMPLEX *ztmp = newvec_COMPLEX(len, "re_window z buf");
+
+ fftw_plan ptmp = fftw_create_plan(len, FFTW_BACKWARD, uni.wisdom.bits);
+ fftw_one(ptmp, (fftw_complex *) vec, (fftw_complex *) ztmp);
+ fftw_destroy_plan(ptmp);
+
+ (void) makewindow(BLACKMANHARRIS_WINDOW, len, win);
+
+ for (i = 0; i < len; i++)
+ ztmp[i] = Cscl(ztmp[i], win[i]);
+
+ ptmp = fftw_create_plan(len, FFTW_FORWARD, uni.wisdom.bits);
+ fftw_one(ptmp, (fftw_complex *) ztmp, (fftw_complex *) vec);
+ fftw_destroy_plan(ptmp);
+
+ delvec_COMPLEX(ztmp);
+ delvec_REAL(win);
+
+ normalize_vec_COMPLEX(vec, len);
+}
+
+//============================================================
+
PRIVATE int
f2x(REAL f) {
REAL fix = tx.filt.ovsv->fftlen * f / uni.samplerate;
apply_txeq_band(lof, dB, hif);
lof = hif;
}
+ re_window(rx[RL].filt.ovsv->zfvec, rx[RL].filt.ovsv->fftlen);
return 0;
}
}
apply_rxeq_band(lof, dB, hif);
lof = hif;
}
+ re_window(rx[RL].filt.ovsv->zfvec, rx[RL].filt.ovsv->fftlen);
return 0;
}
}