I am trying to build an FFT analyser so I can use it as visual feedback for an equaliser.
In order for this FFT graph to continuously average the amplitude values of each frequency, I wanted to be able to average this values as more data gets drawn in the graph.
The idea is to use a tabwrite of a certain block size, and then have several tabreads, with the block size of the initial one, divided by the number of tabreads, and then avergae the values outputted by the tabreads.
My biggest problem at the moment is to make the various tabreads read data from one value n to N/x; N being the block size, x the number of tabreads and n the value at which the previous tabread stops reading.
I have tried using [count] but it is very slow, since it depends on the metro, and I don't seem to make it work with [until] either...
Any suggestions?
Thanks for your time!
Filipe
I am trying to build an FFT analyser so I can use it as visual feedback for an equaliser.
In order for this FFT graph to continuously average the amplitude values of each frequency, I wanted to be able to average this values as more data gets drawn in the graph.
The idea is to use a tabwrite of a certain block size, and then have several tabreads, with the block size of the initial one, divided by the number of tabreads, and then avergae the values outputted by the tabreads.
My biggest problem at the moment is to make the various tabreads read data from one value n to N/x; N being the block size, x the number of tabreads and n the value at which the previous tabread stops reading.
I have tried using [count] but it is very slow, since it depends on the metro, and I don't seem to make it work with [until] either...
Any suggestions?
Thanks for your time!
Filipe
Maybe this can be done at block rate without the tabread~ , but I got a "DSP loop" error when I tried that.
]]>I can't totally picture what you are trying to do (average x previous versions of the FFT?) but how about making a "leaky" FFT table integrator as in the attached patch. Every time you compute an FFT, compute a weighted sum of the new FFT and the old weighted sum. Basically it is a 1pole lowpass filter on the the FFT value in each bin running at whatever metro rate you like.
Maybe this can be done at block rate without the tabread~ , but I got a "DSP loop" error when I tried that.
All I was trying to do was to give an "averaged look" to my graphical representation of the FFT. So basically, instead of having an everchanging graph, the frequency amplitudes will accumulate, and by the end of the track (for example), you can tell which frequencies/frequency bands are more present.
I think you solved this problem for me emacphe, so thank you ever so much. All I need to do now is adapt it to my application in order for it to work better with music and so on. Any suggestion on how to make a graphical representation logarithmic, instead of linear?
Thanks!
]]>Thank you very much for your help once again.
]]>[r tick]

[tabplay~ spectrum]
Otherwise the accumulated spectrum "signal" is not in sync with the new one.
]]>Thank you.
]]>