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