Forums

Noise convolution?

Started by Michel Rouzic May 15, 2009
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.
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
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/

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.