These last few days using my program Photosounder ( http://photosounder.com ) I've been experimenting with a new sort of weird reverb-like effect on sounds (detailed with examples here http://photosounder.com/blog/2009/05/motion-blur-sound-reverberation.html ) and people who heard the result expressed their interest in me making a real-time VST effect out of it. The problem is that since it's based on spectrogram analysis, not only is it prohibitively CPU intensive, but it also necessarily introduces a lot of delay, which is a big problem for a real time use. To be more precise, it works by analysing the spectrogram of a sound, blurring the spectrogram horizontally, and turning the blurred spectrogram back into sound by noise synthesis. I was wondering if there could be a simpler more efficient way to do this, and I wonder, could it be done using convolution by a noise? Here's my idea, if you processed a Dirac delta using this technique, what you would get would be a white noise lasting a few seconds. So what if you simply convolved a sound with such a short noise? Would you obtain the same kind of "blurred" sound? Would you obtain any desirable artifacts? Would you obtain something more natural if you changed the noise (but using the same envelope) in the convolution kernel as the convolution goes in time? Is there any other approach to consider? Thanks in advance.
Noise convolution?
Started by ●May 15, 2009
Reply by ●May 15, 20092009-05-15
On 15 Mai, 12:56, Michel Rouzic <Michel0...@yahoo.fr> wrote:> > Here's my idea, if you processed a Dirac delta using this technique, > what you would get would be a white noise lasting a few seconds. So > what if you simply convolved a sound with such a short noise? Would > you obtain the same kind of "blurred" sound?Probably. It's fairly easy to get a reverb. Your impulse response would start with a couple of "early reflections" that blend into noise that decays later in amplitude (and probably changes "color" -- i.e. higher frequencies might die out earlier). The trick is, however, to make it both fast and responsive (low delay).> Would you obtain any > desirable artifacts? Would you obtain something more natural if you > changed the noise (but using the same envelope) in the convolution > kernel as the convolution goes in time? Is there any other approach to > consider?I think something like this is done by some reverberation algorithms to "prevent coloration". hth, SG
Reply by ●May 15, 20092009-05-15
On 2009-05-15, Michel Rouzic <Michel0528@yahoo.fr> wrote:> > To be more precise, it works by analysing the spectrogram of a sound, > blurring the spectrogram horizontally, and turning the blurred > spectrogram back into sound by noise synthesis.So very roughly speaking it does an FFT, does a convolution (the blurring) in the frequency domain and then an IFFT. Convolution in the frequency domain is point-wise multiplication in the time domain (and vice versa). From your description it should be extremely cheap to do in real time. If you knew the blurring algorithm you could just IFFT its (padded) kernel and multiply the signal by the result. (note that if it blurred vertically you'd have a secondary inter-frame effect to deal with) -- Ben Jackson AD7GD <ben@ben.com> http://www.ben.com/
Reply by ●May 15, 20092009-05-15
Ben Jackson wrote:> On 2009-05-15, Michel Rouzic <Michel0528@yahoo.fr> wrote: > > > > To be more precise, it works by analysing the spectrogram of a sound, > > blurring the spectrogram horizontally, and turning the blurred > > spectrogram back into sound by noise synthesis. > > So very roughly speaking it does an FFT, does a convolution (the blurring) > in the frequency domain and then an IFFT. Convolution in the frequency > domain is point-wise multiplication in the time domain (and vice versa). > From your description it should be extremely cheap to do in real time.Oh wow, that's one epic hell of a load of confusions and wrong assumptions here! I'd like to know how you get a spectrogram using only one FFT. I'm not sure what you think a spectrogram is but basically it's a 2D image of the time-frequency plan of a 1D signal.