@@ -484,32 +484,32 @@ void PowerSpectrum(int NumSamples, float *In, float *Out)
484
484
485
485
int NumWindowFuncs ()
486
486
{
487
- return 10 ;
487
+ return eWinFuncCount ;
488
488
}
489
489
490
490
const wxChar *WindowFuncName (int whichFunction)
491
491
{
492
492
switch (whichFunction) {
493
493
default :
494
- case 0 :
494
+ case eWinFuncRectangular :
495
495
return _ (" Rectangular" );
496
- case 1 :
496
+ case eWinFuncBartlett :
497
497
return wxT (" Bartlett" );
498
- case 2 :
498
+ case eWinFuncHamming :
499
499
return wxT (" Hamming" );
500
- case 3 :
500
+ case eWinFuncHanning :
501
501
return wxT (" Hanning" );
502
- case 4 :
502
+ case eWinFuncBlackman :
503
503
return wxT (" Blackman" );
504
- case 5 :
504
+ case eWinFuncBlackmanHarris :
505
505
return wxT (" Blackman-Harris" );
506
- case 6 :
506
+ case eWinFuncWelch :
507
507
return wxT (" Welch" );
508
- case 7 :
508
+ case eWinFuncGaussian25 :
509
509
return wxT (" Gaussian(a=2.5)" );
510
- case 8 :
510
+ case eWinFuncGaussian35 :
511
511
return wxT (" Gaussian(a=3.5)" );
512
- case 9 :
512
+ case eWinFuncGaussian45 :
513
513
return wxT (" Gaussian(a=4.5)" );
514
514
}
515
515
}
@@ -521,43 +521,48 @@ void WindowFunc(int whichFunction, int NumSamples, float *in)
521
521
522
522
switch ( whichFunction )
523
523
{
524
- case 1 :
524
+ default :
525
+ fprintf (stderr," FFT::WindowFunc - Invalid window function: %d\n " ,whichFunction);
526
+ break ;
527
+ case eWinFuncRectangular:
528
+ break ;
529
+ case eWinFuncBartlett:
525
530
// Bartlett (triangular) window
526
531
for (i = 0 ; i < NumSamples / 2 ; i++) {
527
532
in[i] *= (i / (float ) (NumSamples / 2 ));
528
533
in[i + (NumSamples / 2 )] *=
529
534
(1.0 - (i / (float ) (NumSamples / 2 )));
530
535
}
531
536
break ;
532
- case 2 :
537
+ case eWinFuncHamming :
533
538
// Hamming
534
539
for (i = 0 ; i < NumSamples; i++)
535
540
in[i] *= 0.54 - 0.46 * cos (2 * M_PI * i / (NumSamples - 1 ));
536
541
break ;
537
- case 3 :
542
+ case eWinFuncHanning :
538
543
// Hanning
539
544
for (i = 0 ; i < NumSamples; i++)
540
545
in[i] *= 0.50 - 0.50 * cos (2 * M_PI * i / (NumSamples - 1 ));
541
546
break ;
542
- case 4 :
547
+ case eWinFuncBlackman :
543
548
// Blackman
544
549
for (i = 0 ; i < NumSamples; i++) {
545
550
in[i] *= 0.42 - 0.5 * cos (2 * M_PI * i / (NumSamples - 1 )) + 0.08 * cos (4 * M_PI * i / (NumSamples - 1 ));
546
551
}
547
552
break ;
548
- case 5 :
553
+ case eWinFuncBlackmanHarris :
549
554
// Blackman-Harris
550
555
for (i = 0 ; i < NumSamples; i++) {
551
556
in[i] *= 0.35875 - 0.48829 * cos (2 * M_PI * i /(NumSamples-1 )) + 0.14128 * cos (4 * M_PI * i/(NumSamples-1 )) - 0.01168 * cos (6 * M_PI * i/(NumSamples-1 ));
552
557
}
553
558
break ;
554
- case 6 :
559
+ case eWinFuncWelch :
555
560
// Welch
556
561
for (i = 0 ; i < NumSamples; i++) {
557
562
in[i] *= 4 *i/(float )NumSamples*(1 -(i/(float )NumSamples));
558
563
}
559
564
break ;
560
- case 7 :
565
+ case eWinFuncGaussian25 :
561
566
// Gaussian (a=2.5)
562
567
// Precalculate some values, and simplify the fmla to try and reduce overhead
563
568
A=-2 *2.5 *2.5 ;
@@ -569,15 +574,15 @@ void WindowFunc(int whichFunction, int NumSamples, float *in)
569
574
in[i] *= exp (A*(0.25 + ((i/(float )NumSamples)*(i/(float )NumSamples)) - (i/(float )NumSamples)));
570
575
}
571
576
break ;
572
- case 8 :
577
+ case eWinFuncGaussian35 :
573
578
// Gaussian (a=3.5)
574
579
A=-2 *3.5 *3.5 ;
575
580
for (i = 0 ; i < NumSamples; i++) {
576
581
// reduced
577
582
in[i] *= exp (A*(0.25 + ((i/(float )NumSamples)*(i/(float )NumSamples)) - (i/(float )NumSamples)));
578
583
}
579
584
break ;
580
- case 9 :
585
+ case eWinFuncGaussian45 :
581
586
// Gaussian (a=4.5)
582
587
A=-2 *4.5 *4.5 ;
583
588
@@ -586,7 +591,5 @@ void WindowFunc(int whichFunction, int NumSamples, float *in)
586
591
in[i] *= exp (A*(0.25 + ((i/(float )NumSamples)*(i/(float )NumSamples)) - (i/(float )NumSamples)));
587
592
}
588
593
break ;
589
- default :
590
- fprintf (stderr," FFT::WindowFunc - Invalid window function: %d\n " ,whichFunction);
591
594
}
592
595
}
0 commit comments