[Openal] Capture output
Garin Hiebert
garinh at cheesetoast.net
Tue Mar 11 09:56:14 PDT 2008
On March 11, 2008, bojkar at go2.pl wrote:
> I still don't know how to capture output :/
> I searched a lot of forums and search engine's and nothing.
OpenAL didn't attack the complex subject of mixer controls -- it's
assumed that the user sets up the input(s) with the appropriate levels.
For Windows, if you want to programatically handle mixing then you need
to use the mixer API. There's a fair amount of info out there, and a
Google search turned up this article which looks pretty good at first
glance -- http://www.borg.com/~jglatt/tech/mixer.htm. There are lots
of "gotchas" with this stuff, so you'll want to work very flexibly and
test on as many different sound card solutions as possible.
Gotchas that come to mind:
1) The mixer "lines" have names which are individual to the driver --
so "Aux" on one card may be "Auxiliary" on another and "Line In 1" on
another... If the driver is in French -- it will come back as a
localized string.
2) You can get around #1 to some degree by retrieving generic caps on
the mixer controls, which can tell you things like "this is a line
input" in a language-independent way. That worked pretty well in the
Windows 3.1 era, but these days there may be multiple line inputs on a
card, so then you're back to trying to distinguish between them using
strings...
3) There isn't a define for "output" or (Creative parlance) "What You
Hear" -- so I don't think #2 will work for your specific application.
4) I don't know exactly what the deal is with Windows Vista, but I
expect this old API is probably still supported. You'll want to make
sure. If you have a vertical application that can be restricted to
Vista, then you may want to investigate Vista's native audio API (Core
Audio -- not to be confused with Apple's!) Whether or not it can be
cleanly used alongside OpenAL (especially native OpenAL libraries) is
not known to me, but Vista does have a new audio system which
presumably contains a new mixer API -- so maybe it would work better
than the old API if you can restrict yourself to Vista...
Once you dig into this stuff, I think you'll understand why OpenAL
didn't tackle it for even a single platform, much less multiple
platforms. Good luck!
Garin
More information about the Openal
mailing list