Re: Playing multiple sounds at the same time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Fri, Apr 30, 2010 at 12:38:49PM +0200, Andreas Falkenhahn wrote:
>
>> Now I want to play sounds 1 to 3 at the same time. My question is now:
>> Can
>> ALSA do automatic mixing for me here or do I have to do the mixing on my
>> own? In other words, can I simply feed all these three sound streams to
>> ALSA or do I have to mix them into a fourth audio stream first and
>> feeding
>> this new fourth stream to ALSA then?
>
> The easiest thing for your application is to just open and play multiple
> audio streams and allow a system mixing daemon such as PulseAudio to
> take care of the mixing.

Thanks, that sounds easy enough.

I have some more questions... I hope I don't annoy anyone but the API
documentation of ALSA is extremely brief and the tutorials I was able to
find via Google only deal with the most simple case, i.e. just playing a
stream and exiting.

So before I start implementing my sound backend in a totally wrong way,
I'd be thankful if one of the experts here could tell me if it could be
done like I'm planning it or not.

So here's my proposed implementation for playing multiple sounds at the
same time with ALSA:

1) Launch a new thread that will now act as my sound manager

2) For each new sound to be played, call snd_pcm_open() with mode set to
SND_PCM_NONBLOCK. Then set the parameters on this stream to match the
format of the sound to be played.

3) Now loop over all sounds currently playing and consecutively feed data
to their respective PCM streams using calls to snd_pcm_writei(). Check the
return value of snd_pcm_writei() to see how many frames could be written
to the stream, then feed the rest until there is no more data left or feed
again from the beginning in case the sound should be looped.

Well, this would be the outline of my planned implementation. Could it be
done this way or is there a better way?

Thanks,

Andreas
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux