On Tue, Jun 18, 2002 at 07:47:59PM +0200, dunk fordyce wrote:

> now im wondering whats the best way to play multiple samples at once?

That would require mixing the different samples (i.e. adding the pcm
values and doing clipping).

// 16-bit samples,
int16_t buf1[1024], buf2[1024], out[1024];
int32_t mix; 

while (...) { // Do as long as there are samples available
        // Fill buf1 and buf2 with PCM data from different samples
        for (int c=0; c < 1024; c++) {
                mix = buf1[c] + buf2[c];
                if (mix > 32768)
                        out[c] = 32768;
                else if (mix < -32767)
                        out[c] = -32767;
                else out[c] = (int16_t)mix;
        }       
        snd_pcm_writei(sound_handle, out, sizeof(out));
}

The above is just psuedo code. You can also look at somethink like JACK 
(http://jackit.sf.net) if you prefer a callback driven interface.

Good luck,
Andy

----------------------------------------------------------------------------
                   Bringing you mounds of caffeinated joy
                   >>>     http://thinkgeek.com/sf    <<<

_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to