Aureal A3D Support?
kcajjones opened this issue · 3 comments
It seems EAX emulation via OpenAL Soft is pretty good at this point and DSOAL works well for games that use DirectSound, so I wondered if it's possibly to add A3D (v1.0/2.0/3.0) support to OpenAL Soft. I think OpenAL soft has the functionality to perform the same as A3D if it was given a translation layer to tell the game it supports the features and read the game data to produce the correct effects.
There is an A3D to DirectSound wrapper called A3D-live but I've had mixed results with it largely allowing games to enable the technology but not actually emulating the output correctly.
According to Wikipedia:
A3D uses a subset of the actual in-game 3D world data to accurately model the location of both direct (A3Dspace) and reflected (A3Dverb) sound streams (A3D 2.0 can perform up to 60 first-order reflections)
As far as I know, A3D is a completely distinct API. Supporting it would essentially be another wrapper, mapping the A3D calls to OpenAL, with the tricky part being to map the specified geometry into something EFX's reverb effect can use (which should be possible and could produce decent results if done well, with good directivity and appropriate delay and decay rates being dynamically calculated, I'm just not familiar with how to do it). Otherwise, a new effect type would be needed that could take dynamic geometry data and generate the reflection points like A3D, which could be more involved.
If the A3D to DirectSound wrapper is open source, that could be used as a starting point for a better A3D to OpenAL wrapper, otherwise one would need to be made from scratch.
Ahh it seems I dont fully understand EAX. I thought both EAX and A3D were extensions to DirectSound.
Indeed there is an implementation but it only translates A3D v1.0 to DirectSound. It seems A3D v2.0 and v3.0 have much more accurate environmental sound and aren't supported.
A project such as DSOAL would be appropriate.
One thing I'm still unsure of is weather EAX and A3D can (and should) be used at the same time.
The github for A3D Live can be found here