1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-13 15:17:42 +02:00

Add triangle waveform to Tone Generator.

This commit is contained in:
Paul LaMendola 2021-06-23 00:30:54 -04:00 committed by Paul Licameli
parent 5126ea4105
commit 7d3d8fcf86

View File

@ -56,6 +56,7 @@ enum kWaveforms
kSquare,
kSawtooth,
kSquareNoAlias,
kTriangle,
nWaveforms
};
@ -64,7 +65,8 @@ static const EnumValueSymbol kWaveStrings[nWaveforms] =
{ XO("Sine") },
{ XO("Square") },
{ XO("Sawtooth") },
{ XO("Square, no alias") }
{ XO("Square, no alias") },
{ XO("Triangle") }
};
// Define keys, defaults, minimums, and maximums for the effect parameters
@ -225,6 +227,16 @@ size_t EffectToneGen::ProcessBlock(float **WXUNUSED(inBlock), float **outBlock,
case kSawtooth:
f = (2.0 * modf(mPositionInCycles / mSampleRate + 0.5, &throwaway)) - 1.0;
break;
case kTriangle:
f = modf(mPositionInCycles / mSampleRate, &throwaway);
if(f < 0.25) {
f *= 4.0;
} else if(f > 0.75) {
f = (f - 1.0) * 4.0;
} else { /* f >= 0.25 || f <= 0.75 */
f = (0.5 - f) * 4.0;
}
break;
case kSquareNoAlias: // Good down to 110Hz @ 44100Hz sampling.
//do fundamental (k=1) outside loop
b = (1.0 + cos((pre2PI * BlendedFrequency) / mSampleRate)) / pre4divPI; //scaling