Hello everyone,
I have an RME AES-32 PCI board which provides 4 stereo input channels
and 4 stereo output channels.
(I'm using the hsdpm driver at this time.)
I want to use one process per channel, i.e. process A handles stereo
input #1 (on the XLR connector #1), process B handles stereo input #2,
etc.
The processes are independent, in that process A might be started, and
only several hours later, process B is started, then a few hours later
process A is killed and restarted.
Is it possible to do that with the ALSA library?
The device driver does not seem too happy when more than one process
tries to open /dev/snd/pcmC0D0c
$ cat open_device.c
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main(void)
{
int fd = open("/dev/snd/pcmC0D0c", O_RDONLY|O_NONBLOCK);
if (fd < 0) perror("/dev/snd/pcmC0D0c");
char buf[40];
read(0, buf, sizeof buf);
return 0;
}
# ./testrme
-> First process opens the device
# ./testrme
/dev/snd/pcmC0D0c: Device or resource busy
-> Second process cannot open the device
Do I need a sound server to "mediate" access to the hardware?
(I thought that was the driver's job?)
Perhaps I just need to write the appropriate .asoundrc file?
(References to self)
http://alsa.opensrc.org/.asoundrc
http://alsa.opensrc.org/Asoundrc.txt
Regards.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Alsa-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-user