[linux-audio-dev] alsa mixing

Paul Davis paul at linuxaudiosystems.com
Wed Jan 10 13:22:23 UTC 2007

On Mon, 2007-01-08 at 23:23 +0100, Milan Mimica wrote:
> Hello!
> We're designing a new sound subsystem for allegro game programming 
> library, and we would like to take advantages of multiple hardware voice 
> capabilities.

very few audio interfaces have this feature anymore. most h/w makers
seem to assume s/w mixing and no longer provide multiple PCM h/w

> On linux, ALSA is the only software that possibly could expose API for 
> such a capability, is that right? 

its right and wrong. but mostly irrelevant.

> It is possible to open multiple PCM 
> outputs and play sound at the same time on all of them.

if there *are* multiple h/w PCM voices, then ALSA provides "subdevices"
which get opened automatically each time you call snd_pcm_open() on a
given PCM device. however, as i mentioned, not much h/w provides this
any more. opening multiple PCM devices is entirely different and has its
own set of problems because the devices are generally not sample clock

>  The problem is 
> that we miss some basic mixing features, like panning a mono sound on 
> multichannel output for example. A similar feature is implemented as 
> 'route' ALSA plug-in that can be specified in .asoundrc file, but it is 
> not flexible enough.

ALSA is not intended to provide any kind of live, real time signal
distribution API. this is a completely app-specific domain and it would
absurd for a generic HAL like ALSA to try to offer it. what you mean by
"panning" and the control you want is totally different than, say,
Ardour (http://ardour.org/) requires.

> So the question is, does ALSA provide such functionality? If not, which 
> library could? Is it possible that linux OS doesn't provide any API to 
> take advantage of such hardware capabilities?

in general, you should forget about the h/w capabilities of an audio
interface. for every user that has a device with some interesting
qualities, there will be 10 who do not.

welcome to winmodem for audio ...


More information about the Linux-audio-dev mailing list