What's A Good Way To Handle Multiple /dev/dsp's? 17
kronoman asks: "I've got a multiple-soundcard setup (three cards, four DSP devices) under Mandrake 7.0. Currently, I have an Ensoniq ES1371 on /dev/dsp0 and /dev/dsp1, an SB AWE64 on /dev/dsp2 and an AU8830 on /dev/dsp3. I'm already using ESD to send all ESD sound (especially xmms/mpg123) to /dev/dsp3, and timidity and kmidi use /dev/dsp1. I want to use /dev/dsp2 for emulator output and /dev/dsp for system sound and programs not smart enough to be able to put sound anywhere else. Unfortunately, most of my emus only want to output to /dev/dsp (in particular, UAE, Bochs, Snes9x). Is there a way to either A) get those emus to send output to /dev/dsp2 or B) get kaudioserver/kwmsound to output on a different DSP device (can't seem to find it in the docs, don't know enough C/C++ to find it in the source without some clue what to look for)"
chroot? (Score:1)
Similar problem with CD-ROMs (Score:3)
Use the source Luke! (Score:2)
EsounD can manage it like this: (Score:2)
So, you can set up multiple EsounD instances by doing something like:
esd -d
esd -d
esd -d
Any programs that have built-in support for EsounD (ie: anything GNOME) can be told to use a specific host:port for audio output.
What's more: a lot of programs that just try to open
esddsp --server=localhost:12347 netscape
Given a build of Netscape that's dynamically linked against the same C library you build your local copy of EsounD (unless you're running an a.out build, it probably is;) with, netscape's audio will acutally come out on
Of course, with free software, the proper thing to do would be to patch the source so that it doesn't just assume that
Re:chroot? (Score:1)
Re:Use the source Luke! (Score:1)
Re:chroot? (Score:1)
Re:Use the source Luke! (Score:1)
I'm not entirely sure why you would want to do this, but I'm guessing that he wants to record the sound from some of his programs without the risk of having random system sounds interspersed in there.
A different sort of answer (Score:1)
This isn't really an answer to the question, but please bear with me... there are good reasons to run multiple soundcards simultaneously (for instance, recording each player in your band through a separate channel), but this doesn't sound like one of them. Instead, the standard approach is to mix the output of the three programs together in software, and send it to the speakers through a single card. This is exactly what ESD and the like were created to do.
But my grandest creation, as history will tell,
Re:chroot? (Score:1)
chroot enviro's are pretty tough to setup. You need to copy all of the libraries needed from /lib and /usr/lib, any needed shared files from /usr/share and anything else you find you need such as programs. It can be done, but it would be easier to just change the source for the programs in question.
Patch for UAE 0.7.6 (Score:3)
I just made a patch for UAE 0.7.6 that adds a -e option that allows you to specify the device used for sound output. Download it here. [sourceforge.net] To apply it simply go into your UAE source directory and type patch -p0 < patchfile where patchfile is the patch you want to apply.
I hope this helps.
Only want to output to /dev/dsp 'eh? (Score:1)
That'll be a few minutes work to fix... I'm off to write some patches for UAE, Bochs and Snes9x!
Bochs (Score:2)
The most recent version of Bochs supports different sound output devices. Look at the default .bochsrc configuration file and search for /dev/dsp and you'll find the line you need to change.
Re:Use the source Luke! (Score:1)
Now make
Make a backup of the binary first of course...
Baz
OSS and wrapper (Score:1)
If you're using the commercial Open Sound System, there is a program that comes with your distrobution that allows you to run another program on a different dsp. I don't know the name (don't use OSS myself), but check your documentation.
Solaris solution? (Score:3)
Perhaps we should recommend this for all app writers under linux?
--
Re:chroot? (Score:1)
And even with hard links, a chrooted environment would be hard to set up if you had / and /usr on seperate partitions, since it would be impossible to link to both /bin and /usr/bin and /lib and /usr/lib (and /usr/local/bin and /usr/local/lib as well)