getting peak fft bins

jbm's icon

Hi Folks,

I'm trying to filter a sound down to its simplest components, over time. I'm using the guts of the phase vocoder tutorial to do a time stretch (over which I do the filtering) and have borrowed the filtering mechanism from the forbidden planet patch. The combination of these two is pretty good for what I'm doing, but I'd like to set the final (destination) values of my filter according to the spectral contents of the analyzed sound. So what I'd like to do is find the bins with the peak amplitudes, and set the filter accordingly. Is there a simple way to do that?

Thanks in advance.

J.

MIB's icon

have a look at the zsa. library by Emmanuel Jourdan. in particular zsa.freqpeak~ might be of interest?

jbm's icon

yes, I've played around with zsa.freqpeak~, but it seems to me that the forbidden planet filter is giving the amplitude for each bin, rather than frequency amplitude pairs. So I still need to know which bin to keep after the filtering. I'm sure this is painfully simple, but I so seldom do spectral processing...

I've tried using a threshold-based spectral filter, as well, but this doesn't quite get at the idea, because the input is always changing, so I don't get the sort of break down to a few, isolated sines, that I'm after. I know this isn't acoustically "realistic", but what I want is to take a sort of snapshot of the spectrum, at some point in the development of the sound, and use that as a template to filter the sound down to a few sines -- to kind of artificially decompose it down to a few sustaining pitches.

J.