Update of /cvsroot/audacity/audacity-src/src
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv8754

Modified Files:
        WaveClip.cpp 
Log Message:
Change the frequency gain setting to allow entry of a dB/decade value instead 
of just a checkbox
(it should be switched to a slider in the future)

Index: WaveClip.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/WaveClip.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- WaveClip.cpp        7 Jul 2009 02:31:52 -0000       1.53
+++ WaveClip.cpp        9 Jul 2009 02:44:01 -0000       1.54
@@ -248,7 +248,7 @@
    int          rangeOld;
    int          windowTypeOld;
    int          windowSizeOld;
-   bool         frequencyGainOld;
+   int          frequencyGainOld;
 #ifdef EXPERIMENTAL_FFT_SKIP_POINTS
    int          fftSkipPointsOld;
 #endif //EXPERIMENTAL_FFT_SKIP_POINTS
@@ -706,7 +706,7 @@
    int maxFreq = gPrefs->Read(wxT("/Spectrum/MaxFreq"), 8000L);
    int range = gPrefs->Read(wxT("/Spectrum/Range"), 80L);
    int gain = gPrefs->Read(wxT("/Spectrum/Gain"), 20L);
-   bool bIsFrequencyGain = (gPrefs->Read(wxT("/Spectrum/FrequencyGain"), 0L) 
!= 0L);
+   int frequencygain = gPrefs->Read(wxT("/Spectrum/FrequencyGain"), 0L);
    int windowType;
    int windowSize = gPrefs->Read(wxT("/Spectrum/FFTSize"), 256);
 #ifdef EXPERIMENTAL_FFT_SKIP_POINTS
@@ -751,7 +751,7 @@
        mSpecCache->gainOld == gain &&
        mSpecCache->windowTypeOld == windowType &&
        mSpecCache->windowSizeOld == windowSize &&
-       mSpecCache->frequencyGainOld == bIsFrequencyGain &&
+       mSpecCache->frequencyGainOld == frequencygain &&
 #ifdef EXPERIMENTAL_FFT_SKIP_POINTS
        mSpecCache->fftSkipPointsOld == fftSkipPoints &&
 #endif //EXPERIMENTAL_FFT_SKIP_POINTS
@@ -793,7 +793,7 @@
        oldCache->gainOld == gain &&
        oldCache->windowTypeOld == windowType &&
        oldCache->windowSizeOld == windowSize &&
-       oldCache->frequencyGainOld == bIsFrequencyGain &&
+       oldCache->frequencyGainOld == frequencygain &&
 #ifdef EXPERIMENTAL_FFT_SKIP_POINTS
        oldCache->fftSkipPointsOld == fftSkipPoints &&
 #endif //EXPERIMENTAL_FFT_SKIP_POINTS
@@ -834,7 +834,18 @@
    mSpecCache->rangeOld = range;
    mSpecCache->windowTypeOld = windowType;
    mSpecCache->windowSizeOld = windowSize;
-   mSpecCache->frequencyGainOld = bIsFrequencyGain;
+   mSpecCache->frequencyGainOld = frequencygain;
+
+   float *gainfactor = NULL;
+   if(frequencygain > 0) {
+      // Compute a frequency-dependant gain factor
+      // scaled such that 1000 Hz gets a gain of 0dB
+      double factor = 0.001*(double)mRate/(double)windowSize;
+      gainfactor = new float[half];
+      for(x = 0; x < half; x++) {
+         gainfactor[x] = frequencygain*log10(factor * x);
+      }
+   }
 
    for (x = 0; x < mSpecCache->len; x++)
       if (recalc[x]) {
@@ -901,18 +912,16 @@
                            mRate, &mSpecCache->freq[half * x],
                            autocorrelation, windowType);
 #endif // EXPERIMENTAL_USE_REALFFTF
-           if(bIsFrequencyGain) {
+           if(gainfactor) {
               // Apply a frequency-dependant gain factor
-              // scaled such that 1000 Hz gets a gain of 0dB
-              // a factor of 1.5*frequency gives the most appealing display 
for typical music
-              double freqgain = 0.001*(double)mRate/(double)windowSize;
-              mSpecCache->freq[half * x] += 15.0*log10(freqgain);
-              for(i=1; i<half; i++)
-                 mSpecCache->freq[half * x + i] += 15.0*log10(freqgain * i);
+              for(i=0; i<half; i++)
+                 mSpecCache->freq[half * x + i] += gainfactor[i];
            }
          }
       }
 
+   if(gainfactor)
+      delete[] gainfactor;
    delete[]buffer;
    delete[]recalc;
    delete oldCache;


------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Audacity-cvs mailing list
Audacity-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to