[Openal] Multiple physical audio devices

Andrew McDonald myrmecophagavir at hotmail.com
Mon Aug 30 06:38:32 PDT 2004


> Run the installer available at developer.creative.com after running the Audigy driver installer, 
> and everything will work out.  The AL installer will see the native DLL and rename it "ct_oal.dll" 
> before doing its own installation.  You'll end up with a setup where four devices can be 
> enumerated -- the Audigy, DS3D, DS, and MMSYSTEM.  If you set the motherboard audio as the 
> preferred audio device in the audio control panel, then if you select DS3D, DS, or MMSYSTEM, then 
> the motherboard audio output will be used.  If the Audigy is selected, then the Audigy will be 
> used regardless.

Looks like I already have a ct_oal.dll, must be from a previous driver installation. I also have an 
nvopenal.dll. Will the SDK's openal32.dll enumerate both the Audigy and nForce devices? nForce has 
its own native device as well as the wrapper ones. The SDK's openal32.dll is actually provided by 
Nvidia though, according to its file properties...?

> Note -- I don't know of any games which use the enumeration extension -- in general they will use 
> a wrapper device, which will follow the preferred audio device.  ALTest is a simple test program 
> which will enumerate devices if you want to try that feature out with a pre-compiled binary.

The ALTest crash looks like it was alcGetString(NULL, ALC_DEVICE_SPECIFIER) returning NULL, which 
shouldn't happen should it? If for some reason no devices were found, shouldn't the return value be 
a string containing just two NULLs? My current version of openal32.dll is Creative's 5.12.1.442. If 
I do this in my own code then call alcGetError(NULL), it returns 0 for no error. However calling 
alcGetString(NULL, ALC_NO_ERROR) causes a crash! What version of the codebase was that release of 
the DLL compiled against? There's no label in CVS for it.

> We're in the process of changing our installation setup so that the initial install will make sure 
> that the native device is called "ct_oal.dll" (or something other than "openal32.dll") to avoid 
> this issue, but for now if you do the installation of the driver followed by the AL installer, 
> then it should work out.  The intention is for all native drivers to have *oal.dll names which can 
> be found and enumerated by the "router" library (openal32.dll).

As long as we can enumerate all devices all the time I'm happy... going through Control Panel 
shoudn't be necessary for users, although it would be nice if the default AL device was selected 
based on that choice. I'd still like to be able to choose between different cards for MMSYSTEM and 
the DirectSound devices though - should it be structured as: first query for physical devices, then 
query that for all logical devices supported; or just query for all logical devices and have them 
named appropriately (eg "MMSYSTEM (Creative Sound Blaster Audigy)", "MMSYSTEM (NVIDIA nForce Audio)" 
etc)?

Andrew 



More information about the Openal mailing list