[music-dsp] Sythesizing sines + noise in one IFFT
xue.wen at elec.qmul.ac.uk
Mon Oct 11 10:26:19 EDT 2010
Actually the spectral convolution you proposed doesn't seem that bad. Spectrum of a BH92 window is 7 point long, real and symmetric - that comes down to 4 real-complex multiplications and 6 complex additions per point if you do convolution, and reduced to 4 real-real multiplications and 6 real additions per point considering spectral symmetry. For comparison, if you do a separate IFFT it'll be 2log2(FFT length) real-real multiplications per point, which goes up to 20 per point for FFT length 1024, plus the usual extra going-ons of any FFT.
From: music-dsp-bounces at music.columbia.edu [music-dsp-bounces at music.columbia.edu] On Behalf Of Stefan Westerfeld [stefan at space.twc.de]
Sent: 11 October 2010 14:19
To: Jean-Marc Valin
Cc: music-dsp at music.columbia.edu
Subject: Re: [music-dsp] Sythesizing sines + noise in one IFFT
On Sun, Oct 10, 2010 at 06:50:44PM -0400, Jean-Marc Valin wrote:
> I think what you want to use is simply a "power complementary" window.
> The simplest is the sine window (aka sqrt(hanning)), but you could also
> use the Vorbis window which is sin(pi/2 * sin^2(M_PI*x/N))
> If you apply the same window in the analysis of the sinusoids, then you
> end up with no gain compensation required after the IFFT. Similarly,
> when you use it for noise synthesis, it works because noise adds up in
> the energy domain, so again no need to do any sort of gain adjustment.
> I've actually use that technique in the past for a different
> application: http://jmvalin.ca/papers/valin_hscma2008.pdf
I've read your paper now, but I don't see how I could make it work in my case.
If you just analyze a signal composed of a few sines with a window, then of
course the spectrum will be convoluted with the window's frequency response, so
you can IFFT this, and get the original signal back.
But in my case, the analysis process will produce a list of sine signals (with
frequency, magnitude and phase), so to resynthesize this, I need to produce the
spectrum myself. With windows that have a lengthy frequency response, this will
be more expensive than with windows like blackman harris 92, which have a
narrow frequency response; I need to reproduce the spectrum, so effectively for
each sine component, I add a shifted/rotated version of the window's frequency
response to the spectrum. An IFFT yields a windowed version of the sine part of
the signal. I rescale this windowed signal (because for overlap-add, I use a
cosine window, not blackman harris 92) to get my sine signal.
For noise, on the other hand, I just put the right amount of energy in each
band, IFFT this, and get a noise time signal. BUT, I need to apply scaling to
this noise signal before overlap-add is possible (and the scaling is different
from the scaling I need to apply to the sine signal), so I need two IFFTs to do
the job, which is the part of the algorithm that I would like to improve. If
thats possible at all, that is.
Stefan Westerfeld, Hamburg/Germany, http://space.twc.de/~stefan
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp links
More information about the music-dsp