[alsa-devel] Play multiple sounds concurrently

Markus Luttenberger m.luttenberger at avibit.com
Fri Dec 18 14:44:30 CET 2009


I want to play multiple sounds concurrently with ALSA. The audio data is 
mono and G.711 a-law encoded. I can successfully play a single source of 
audio data but the sound is distorted when I try to play two sources.

Basically, this is what I'm doing:

char buf1[1024];    // filled with audio data from source 1
char buf2[1024];    // filled with audio data from source 2
char wr_buf[1024];

for (int count = 0; count < 1024; count++)
   wr_buf[count] = (char) (0.5 * buf1[count]) +
                   (char) (0.5 * buf2[count]);

snd_pcm_writei(dev_handle, wr_buf, 1024);

I think I have to use a scale value to correct the values or else 
clipping occures. However, this is the problem. How do I have to modify 
the audio bytes in order to add them together and write them into one 


More information about the Alsa-devel mailing list