[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