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
