fractional-octave frequency smoothing


    Mar 27 2006 | 8:30 pm
    Hi list;
    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.
    Best,
    Eamonn

    • Mar 29 2006 | 11:50 pm
      Hi Eamonn,
      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.
      Ben
    • Mar 30 2006 | 6:34 pm
      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
      mutation algorithms.
      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
      linear bins).
      -- Peter
      -------------- http://www.bek.no/~pcastine/Litter/ -------------
      Peter Castine +--> Litter Power & Litter Bundle for Jitter
      iCE: Sequencing, Recording & |home | chez nous|
      Interface Building for |bei uns | i nostri|
      Max/MSP Extremely cool http://www.castine.de