cleanup: refactor and remove duplication from SetSpeed() implementations.

This commit is contained in:
Juho Hiltunen
2022-10-25 19:24:55 +03:00
parent 84f58824af
commit 0c82988b44
+23 -23
View File
@@ -40,6 +40,7 @@
static void SetSpeedFactors(voice_t *voice, int x, int *speed1, int *speed2, int *speed3);
static void SetSpeedMods(SPEED_FACTORS *speed, int voiceSpeedF1, int wpm, int x);
static void SetSpeedMultiplier(int *x, int *wpm);
extern int saved_parameters[];
@@ -193,18 +194,7 @@ void SetSpeed(int control)
return;
}
if (wpm > espeakRATE_MAXIMUM)
wpm = espeakRATE_MAXIMUM;
wpm2 = wpm;
if (wpm > 359) wpm2 = 359;
if (wpm < espeakRATE_MINIMUM) wpm2 = espeakRATE_MINIMUM;
x = speed_lookup[wpm2-espeakRATE_MINIMUM];
if (wpm >= 380)
x = 7;
if (wpm >= 400)
x = 6;
SetSpeedMultiplier(&x, &wpm);
if (control & 1) {
SetSpeedFactors(voice, x, &speed1, &speed2, &speed3);
@@ -234,18 +224,8 @@ void SetSpeed(int control)
if (voice->speed_percent > 0)
wpm = (wpm * voice->speed_percent)/100;
if (wpm > espeakRATE_MAXIMUM)
wpm = espeakRATE_MAXIMUM;
wpm2 = wpm;
if (wpm > 359) wpm2 = 359;
if (wpm < espeakRATE_MINIMUM) wpm2 = espeakRATE_MINIMUM;
x = speed_lookup[wpm2-espeakRATE_MINIMUM];
if (wpm >= 380)
x = 7;
if (wpm >= 400)
x = 6;
SetSpeedMultiplier(&x, &wpm);
if (control & 1) {
SetSpeedFactors(voice, x, &speed1, &speed2, &speed3);
@@ -259,6 +239,26 @@ void SetSpeed(int control)
#endif
static void SetSpeedMultiplier(int *x, int *wpm) {
int wpm2;
if (*wpm > espeakRATE_MAXIMUM)
*wpm = espeakRATE_MAXIMUM;
wpm2 = *wpm;
if (*wpm > 359) wpm2 = 359;
if (*wpm < espeakRATE_MINIMUM) {
wpm2 = espeakRATE_MINIMUM;
}
*x = speed_lookup[wpm2-espeakRATE_MINIMUM];
if (*wpm >= 380)
*x = 7;
if (*wpm >= 400)
*x = 6;
}
static void SetSpeedFactors(voice_t *voice, int x, int *speed1, int *speed2, int *speed3) {
// set speed factors for different syllable positions within a word
// these are used in CalcLengths()