[Openal] Effects Objects
Garin Hiebert
garinh at cheesetoast.net
Mon May 22 16:33:12 PDT 2006
> I was under the idea that
> specifying NULL would make openAL choose the "best" implementation
> available. In this case however the best implementation is not being
> chosen and I cannot get effects unless I specify the device.
>
The OpenAL router isn't even close to being that smart -- it doesn't try
to figure out what the "best" EFX implementation is for you. When
opening a device, NULL can be useful in that the router will try to find
an OpenAL implementation which matches the Windows preferred audio
output device, but that's the limit on how smart the router tries to be.
You do want to use enumeration, combined with some filtering, to get an
appropriate device list for your app. Take a look at "PlayEFX" in the
current SDK. The ALDeviceList class shows how to do this kind of thing.
> The next problem is that when I specify "Generic Software" I can only
> get one effect - AL_EFFECT_REVERB, whereas with Generic Hardware I can
> get all effect types, but then I cannot create any Auxiliary Effect
> Slots using alGenAuxiliaryEffectSlots( 1, &ID ); (I just get an
> AL_OUT_OF_MEMORY error).
>
On this Generic Hardware problem, you're probably running across an
issue that we're planning to fix with a behavior change in the next SDK
update. Right now, if you start up your app and then kill it
prematurely (through the debugger or through a crash), then all the
Auxiliary Effect Slots on your card (an Audigy 2 ZS in this case) will
remain locked and unavailable. You can try to fix it by disabling the
Audigy device in Device Manager and then re-enabling it, or you can
restart Windows. In the next SDK update, we're going to stop locking
this resource, which will potentially create problems if someone tries
to run multiple EFX applications at the same time, but will eliminate
this silly issue.
Garin
More information about the Openal
mailing list