1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-04-25 23:44:13 +02:00

Restructure to a switch statement (John Clark)

This commit is contained in:
james.k.crook
2011-02-03 12:35:31 +00:00
parent df6e56a57e
commit fa8d42e664

View File

@@ -519,49 +519,45 @@ void WindowFunc(int whichFunction, int NumSamples, float *in)
int i; int i;
double A; double A;
if (whichFunction == 1) { switch( whichFunction )
{
case 1:
// Bartlett (triangular) window // Bartlett (triangular) window
for (i = 0; i < NumSamples / 2; i++) { for (i = 0; i < NumSamples / 2; i++) {
in[i] *= (i / (float) (NumSamples / 2)); in[i] *= (i / (float) (NumSamples / 2));
in[i + (NumSamples / 2)] *= in[i + (NumSamples / 2)] *=
(1.0 - (i / (float) (NumSamples / 2))); (1.0 - (i / (float) (NumSamples / 2)));
} }
} break;
case 2:
if (whichFunction == 2) {
// Hamming // Hamming
for (i = 0; i < NumSamples; i++) for (i = 0; i < NumSamples; i++)
in[i] *= 0.54 - 0.46 * cos(2 * M_PI * i / (NumSamples - 1)); in[i] *= 0.54 - 0.46 * cos(2 * M_PI * i / (NumSamples - 1));
} break;
case 3:
if (whichFunction == 3) {
// Hanning // Hanning
for (i = 0; i < NumSamples; i++) for (i = 0; i < NumSamples; i++)
in[i] *= 0.50 - 0.50 * cos(2 * M_PI * i / (NumSamples - 1)); in[i] *= 0.50 - 0.50 * cos(2 * M_PI * i / (NumSamples - 1));
} break;
case 4:
if (whichFunction == 4) {
// Blackman // Blackman
for (i = 0; i < NumSamples; i++) { for (i = 0; i < NumSamples; i++) {
in[i] *= 0.42 - 0.5 * cos (2 * M_PI * i / (NumSamples - 1)) + 0.08 * cos (4 * M_PI * i / (NumSamples - 1)); in[i] *= 0.42 - 0.5 * cos (2 * M_PI * i / (NumSamples - 1)) + 0.08 * cos (4 * M_PI * i / (NumSamples - 1));
} }
} break;
case 5:
if (whichFunction == 5) {
// Blackman-Harris // Blackman-Harris
for (i = 0; i < NumSamples; i++) { for (i = 0; i < NumSamples; i++) {
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)); 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));
} }
} break;
case 6:
if (whichFunction == 6) {
// Welch // Welch
for (i = 0; i < NumSamples; i++) { for (i = 0; i < NumSamples; i++) {
in[i] *= 4*i/(float)NumSamples*(1-(i/(float)NumSamples)); in[i] *= 4*i/(float)NumSamples*(1-(i/(float)NumSamples));
} }
} break;
case 7:
if (whichFunction == 7) {
// Gaussian (a=2.5) // Gaussian (a=2.5)
// Precalculate some values, and simplify the fmla to try and reduce overhead // Precalculate some values, and simplify the fmla to try and reduce overhead
A=-2*2.5*2.5; A=-2*2.5*2.5;
@@ -572,19 +568,16 @@ void WindowFunc(int whichFunction, int NumSamples, float *in)
// reduced // reduced
in[i] *= exp(A*(0.25 + ((i/(float)NumSamples)*(i/(float)NumSamples)) - (i/(float)NumSamples))); in[i] *= exp(A*(0.25 + ((i/(float)NumSamples)*(i/(float)NumSamples)) - (i/(float)NumSamples)));
} }
} break;
case 8:
if (whichFunction == 8) {
// Gaussian (a=3.5) // Gaussian (a=3.5)
A=-2*3.5*3.5; A=-2*3.5*3.5;
for (i = 0; i < NumSamples; i++) { for (i = 0; i < NumSamples; i++) {
// reduced // reduced
in[i] *= exp(A*(0.25 + ((i/(float)NumSamples)*(i/(float)NumSamples)) - (i/(float)NumSamples))); in[i] *= exp(A*(0.25 + ((i/(float)NumSamples)*(i/(float)NumSamples)) - (i/(float)NumSamples)));
} }
} break;
case 9:
if (whichFunction == 9) {
// Gaussian (a=4.5) // Gaussian (a=4.5)
A=-2*4.5*4.5; A=-2*4.5*4.5;
@@ -592,9 +585,10 @@ void WindowFunc(int whichFunction, int NumSamples, float *in)
// reduced // reduced
in[i] *= exp(A*(0.25 + ((i/(float)NumSamples)*(i/(float)NumSamples)) - (i/(float)NumSamples))); in[i] *= exp(A*(0.25 + ((i/(float)NumSamples)*(i/(float)NumSamples)) - (i/(float)NumSamples)));
} }
break;
default:
fprintf(stderr,"FFT::WindowFunc - Invalid window function: %d\n",whichFunction);
} }
} }
// Indentation settings for Vim and Emacs and unique identifier for Arch, a // Indentation settings for Vim and Emacs and unique identifier for Arch, a