1
$\begingroup$

I'm working on a 10-second sound, sampled at 44.1 khz.

I want to do filtering, and have a desired EQ (equalization) curve that varies over time, as suggested here (here $f0=250\ Hz$)

enter image description here

How to implement a time-varying filter?

  1. How to go from this bad idea of zeroing FFT bins

    [0, 0, ..., 0, 1, 0, ..., 0, 1, 0, ..., 0, 1, 0, ... 0]
       |           |             |             |
       |          freq bins for f0, 2*f0, 3*f0  are kept
       |
     most freq bins are zeroed
    

    to a good filtering?

  2. Then, how to make this vary over time? Should I use overlap-add, etc.? Then if so, can't I do it inside a STFT framework?

  3. Would you have a pseudo code or Python demo?

PS: I've read http://recherche.ircam.fr/anasyn/roebel/amt_audiosignale/VL3.pdf, but I can't go from here to a working algorithm.

$\endgroup$
5
  • $\begingroup$ I think any adaptive filter strategy, time varying filter is a very ambicious term, is the proper starting point. Some parameter estimation technique, according to your working skills and motivations, this can be solved in a lot of ways... $\endgroup$
    – Brethlosze
    Dec 21, 2016 at 22:34
  • $\begingroup$ Also, do you have a clear idea of what do you want or need to equalize? An equalizer is a frequency flattener, not a noise reducer. $\endgroup$
    – Brethlosze
    Dec 21, 2016 at 22:37
  • $\begingroup$ @hypfco I finally did it by STFT zeroing bins. I have to say the result is really pretty clean, STFT-zeroing-bins doesnt' have the drawbacks of FFT-zeroing-bins because windowing is already applied during the STFT process. $\endgroup$
    – Basj
    Dec 21, 2016 at 22:39
  • $\begingroup$ LOL congratulations then!!! $\endgroup$
    – Brethlosze
    Dec 21, 2016 at 23:00
  • $\begingroup$ More about this question here. $\endgroup$
    – Basj
    Dec 21, 2016 at 23:06

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.