Update of /cvsroot/audacity/audacity-src/src/effects
In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv21251/src/effects
Modified Files:
ToneGen.cpp
Log Message:
Avoid round-off errors which can distort square waves.
Index: ToneGen.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/effects/ToneGen.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- ToneGen.cpp 25 Aug 2006 05:12:23 -0000 1.33
+++ ToneGen.cpp 11 Jan 2007 23:27:05 -0000 1.34
@@ -121,6 +121,7 @@
double BlendedAmplitude;
double BlendedFrequency;
double BlendedLogFrequency;
+ double positionInCycles;
// Do our divisions here, outside the loop, for greater efficiency.
@@ -141,8 +142,8 @@
t = iSample * BlendMultiplier;
BlendedAmplitude = amplitude[0] + (amplitude[1]-amplitude[0]) * t;
- if( i == (len/2) )
- i=i;
+ if( i == (len/2) ) // what's this for? MJS
+ i=i; // what's this for? MJS
// Log interpolation is not currently used.
// A linear shift in frequency is what most people expect, and
@@ -158,17 +159,18 @@
}
// Add cycles/second * second/samples * 1-sample
- mPositionInCycles += BlendedFrequency * PositionMultiplier;
+ mPositionInCycles += BlendedFrequency;
+ positionInCycles = mPositionInCycles * PositionMultiplier;
switch (waveform) {
case 0: //sine
- f = (float) sin(2 * M_PI * mPositionInCycles);
+ f = (float) sin(2 * M_PI * positionInCycles);
break;
case 1: //square
- f = (modf(mPositionInCycles, &throwaway) < 0.5) ? 1.0f :-1.0f;
+ f = (modf(positionInCycles, &throwaway) < 0.5) ? 1.0f :-1.0f;
break;
case 2: //sawtooth
- f = (2 * modf(mPositionInCycles+0.5f, &throwaway)) -1.0f;
+ f = (2 * modf(positionInCycles+0.5f, &throwaway)) -1.0f;
break;
default:
break;
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs