fractional-octave frequency smoothing
I have some audio fft data stored as jitter matrices, and would like to be able to smooth it to some arbitrary bandwidth, e.g. 1/3rd octave or whatever.
So I suppose I need to either use a smoothing kernel that gets wider as I move from low to high frequency, or perhaps first convert to a log frequency representation, and then do the smoothing?
I’d be very interested to hear of anyone doing such things in jitter.
When you say "smooth it", I am assuming you mean transform the data
somehow into 1.3 octave representations rather than the FFTs linear
frequency distribution… correct? I think using a kernel with
variable width should give the same results as converting to a log
frequency representation and using a kernel of fixed width.
The linearity of freq bins is one of the big weaknesses of the FFT.
Wavelet transforms are promising in this regard. A while ago I
completed some preliminary work to make this technology available in
Max, but I haven’t finished the project. I’m hoping it will be
included in a future version of the jitter.
On 30-Mar-2006, at 1:50, Ben Nevile wrote:
> The linearity of freq bins is one of the big weaknesses of the FFT.
Coming a little late to this thread, but I recall now that I worked
around this "weakness" by grouping FFT bins into (approx.) 1/3rd
octave groups and handling the groups as a unit. It worked fairly
well in my Spectral Mutation object, lp.frim~.
Credit where credit is due: I got the idea from talking with Tom Erbe
and Larry Polansky, chatting about our various implementations of
The algorithm I used for grouping bins might be more procedural-
language friendly than Max-friendly, but I suppose it could be done
with patch cords. FTR, lp.frim~ supports octave division from one to
fifteen "virtual bins" per octave (as well as plain vanilla FFT
————– http://www.bek.no/~pcastine/Litter/ ————-
Peter Castine +–> Litter Power & Litter Bundle for Jitter
Forums > Jitter