[music-dsp] automatic equalization
rainwarrior at gmail.com
Fri Jun 23 16:02:48 EDT 2006
> mmh the time resolution? Right now it's all fixed in time, no envelope, so
> time accuracy doesn't really matter.
What I mean is, if you take an FFT of a block of, say, 4096 samples,
you can apply your filter to it. Where do you get your next block
from? If you move over 4096 sample you end up getting discontinuities
at the block boundary. The usual way to prevent this is to have 50%
overlap between the blocks and (sorry if this is already obvious, I'm
just trying to explain what I mean) have some sort of crossfade over
the overlap (cosine and linear are easy to do).
What I'm suggesting is that you take a narrower overlap, maybe just
take the middle 200 samples from your output FFT block, and then for
the next block, shift over 100 samples and crossfade the beginning of
its middle samples with the end of your previous middle samples, and
Narrowing that overlap, as well as using an appropriate tapering
function on the whole block (ie. hamming/hanning/whatever) can
significantly degrease your band-bleeding, especially because it
enables you to use a larger FFT without losing time resolution.
It's a technique that I used a few years ago when I was making
harmonic modifications to sounds with FFT, and I found that it really
did improve the band localization a whole lot.
What I mean by "time resolution": if you take a large FFT, ie. 65536
in size, you might have good frequency resolution, but that thing's
more than a second long at 44100Hz, so whatever you do to this FFT
block is going to last for a whole second. Using a shorter FFT helps
narrow down the time interval of effect, but also decreases your
frequency accuracy. The technique I am suggesting permits you to
bypass that tradeoff.
-- Brad Smith
More information about the music-dsp