From f8434f3c94b286d4e9900fb44110eec602e13eb6 Mon Sep 17 00:00:00 2001 From: Kamal Mostafa Date: Sun, 26 Aug 2012 12:34:38 -0700 Subject: [PATCH] simple-tone: fix sin() rounding for S16 shorts - fix sine wave rounding for shorts - short epsilon == 1 - clamp shorts to mag <= 1.0 --- src/simple-tone-generator.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/simple-tone-generator.c b/src/simple-tone-generator.c index bc459f3..fe72872 100644 --- a/src/simple-tone-generator.c +++ b/src/simple-tone-generator.c @@ -49,10 +49,12 @@ simpleaudio_tone_init( unsigned int new_sin_table_len, float mag ) unsigned int i; unsigned short mag_s = 32767.0 * tone_mag + 0.5f; - if ( mag_s < 2 ) // "short epsilon" - mag_s = 2; + if ( tone_mag > 1.0f ) // clamp to 1.0 to avoid overflow + mag_s = 32767; + if ( mag_s < 1 ) // "short epsilon" + mag_s = 1; for ( i=0; i 1.0f ) // clamp to 1.0 to avoid overflow + mag_s = 32767; + if ( mag_s < 1 ) // "short epsilon" + mag_s = 1; for ( i=0; i