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