[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