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
streams.
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
synced.
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 ...
--p