Hi,

On Sat, 2004-03-13 at 17:13, Alex Marandon wrote:

[snip clipping problem]

> 
>           /* -- mixage, cf. http://www.vttoth.com/digimix.htm -- */
>           for ( i = 0; i <= BUFFER_SIZE; i++ ) {
>               mixed_buffer[i] 
>                   = buffer1[i] + buffer2[i] - buffer1[i] * buffer2[i] / 
> DYNAMIC_RANGE;
>           }
> 

buffer1 is declared as a short (i. e. usually 16 bits).
I'd guess this introduces your clipping problems.
Try this instead:

mixed_buffer[i] = buffer1[i] + buffer2[i] - 
                (long) buffer1[i] * buffer2[i] / DYNAMIC_RANGE;

HTH,

Jan



Reply via email to