window functions
Rene Schmitz
uzs159 at uni-bonn.de
Tue Oct 26 16:38:08 CEST 1999
Hi Martin!
I've cut a piece of C-source, that does generate windowing arrays.
(Its from an old DOS program called "Freq".) Don't know how close they are
to theoretical functions. But at least they're calculatable in finite time :-)
Bye
René
void compute_window_function(void)
{
int i;
double val;
/*
* Calculate FFT Windowing function
*/
for(i=0;i<fftlen;i++)
{
double val;
switch(windfunc)
{
case 1: // Hanning
val = 0.5 - 0.5*cos(2*M_PI*i/fftlen);
break;
case 2: // Blackman
val = 0.42-0.5*cos(2*M_PI*i/fftlen)+0.08*cos(4*M_PI*i/fftlen);
break;
case 3: // Gaussian
val = exp(-alpha / ((double)fftlen*(double)fftlen)
* ((double)2*i-fftlen)*((double)2*i-fftlen));
break;
case 4: // Welch
val = 1 - ((double)(2*i-fftlen)/(double)(fftlen+1))
*((double)(2*i-fftlen)/(double)(fftlen+1));
break;
case 5: // Parzen
val = 1 - fabs((double)(2*i-fftlen)/(double)(fftlen+1));
break;
case 6: // Rectangular
val = 1;
break;
default: // Hamming
val = 0.54-0.46*cos(2*M_PI*i/fftlen);
break;
}
wind[i]=floor(val*32767+0.5);
}
...
error:asciiartisnotfully \ uzs159 at uni-bonn.de
supportedwithyourcurrent \ http://www.uni-bonn.de/~uzs159
displaydriversettings... \ http://members.xoom.com/Rene_Schmitz
More information about the Synth-diy
mailing list