[linux-audio-dev] [newbie] mixing audio streams

Jan Weil Jan.Weil at web.de
Sat Mar 13 17:49:25 UTC 2004


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






More information about the Linux-audio-dev mailing list