Converting FFT freq ranges into list of floats

    Nov 30 2012 | 7:18 pm
    Hey folks,
    I am trying to take a snapshot of an audio signal and convert that into a list of normalized freq magnitudes. I want the output list to have 8 frequency bands.
    I first tried fftb~, but it outputs freq components as audio signals in the amplitude time domain. fft~ brings things in to the freq domain, but I can't figure out how to get to the fft bin data to create my list. Also fft~ is using a 512 sample window, so I need to be able to reduce that to 8 bands.
    This seems harder than it should be. Am I missing something? Any pointers would be appreciated.
    Thanks, Anthony

    • Nov 30 2012 | 9:24 pm
      I don't know if I understand you a hundred percent. But I think you should be able to this with just filtering. (fffb~ for instance). FFT is a bit overkill when you need 8 bands. Maybe this helps:
    • Nov 30 2012 | 9:46 pm
      Hey Dave, thanks for your response. I already tried using fffb~, it really does not do what I want. The values from fffb~ are constantly bouncing around because it is sampling the amplitude of the frequency band output, not the magnitude of the frequency band.
      Using the FFT approach would give me access to a constant value for a frequency range. Which is what fffb~ is already doing.
      The question is how do I access the frequency bins?
    • Dec 01 2012 | 4:52 pm
      Does anyone know how to access the magnitude of an FFT bin in Max?
    • Dec 02 2012 | 9:34 am
      heres the pfft~ abstraction, save as binMag
      and here's something to put it in:
      btw it's really an indirect method of getting the magnitude of a bin, as it's just getting the instantaneous signal of selected bin by zeroing all the others, so you need to maybe rms the output of the pfft~. There should be a simpler, more direct method.
    • Dec 02 2012 | 10:08 am
      ok this is more direct-- call me binMag2:
      and this is the parent patch:
      (don't know why I have to divide the mag by 512... maybe someone can explain...)