so, to further elaborate, i want to avoid mic->speaker->mic feedback loops.
this is for the RJDJ project that has been posted about a couple of times already (there's possibly still places in the Vienna sprint, if anyone wants to be flown to Vienna, put up in a swanky hotel, and make music with Pd for the iPhone this coming weekend; look back a week or two for the invite message).
anyway, i have a patch that implements a resonator that feeds back on itself, to turn incoming audio into some kind of big cheesy holy-angels-choir kind of chord. this works fine and dandy in theory, but i'm getting a problem sometimes when playing it on the iphone, namely that the microphone and earpieces are physically very close together on the bundled iphone headphones, so under certain conditions, nasty feedback will happen. i could apply a notch filter to that particular frequency (we already calculate the input spectral centre), but then the feedback might happen in a different place if people are using non-standard headphones/microphones. it would be nicer to have a more general feedback limiting mechanism. (this would be useful for live performance rigs, too.)
now, CPU on the device is very limited, but we are already performing an FFT on the input to use for analysis, so this data is available. i only vaguely understand how FFT works, but would it be possible to perform band-limited filtering on the input based on this data? my idea goes like this: since feedback tends to be about particular narrow-band signal peaks, could i for example square each FFT bin to exaggerate these peaks, then scale down to 10% or so, then subtract this from the incoming audio? would i do this by constructing an inverse FFT, and then subtracting the (scaled) IFFT output from the raw audio input? the aim is to reduce feedback without altering the rest of the incoming sound too much, so i don't want to base the audio on just an IFFT reconstruction of the signal (cos IFFT sounds ugly).
are FFT results guaranteed to be normalised? ie, will squaring an FFT bin always result in a lower signal level?