[RELz] Restoring Surround Sound and EAX
Posted: Wed Mar 30, 2011 2:45 pm
Hi guys.
This is something I've been working on, on and off, for quite a while. Finally, it's at the point where I have something to show for Windows users.
About
This is a project that attempts to implement dsound.dll using OpenAL. It does so in a way that makes the application think it has accelerated audio even when no audio acceleration is present, which causes games like Oblivion and Morrowind to use the DirectSound3D interfaces instead of doing its own stereo mixing. Some implementations of OpenAL are able to do surround sound mixing in software, which in turn causes the DS3D interfaces to play in surround sound. Additionally, software OpenAL implementations tend to support the EFX extension, which can be used to implement the EAX interfaces.
What this ends up doing is, it allows Oblivion to use surround sound output, and allows the use of EAX for mods like http://www.tesnexus.com/downloads/file.php?id=17050 http://www.tesnexus.com/downloads/file.php?id=32128, without the need for audio acceleration. Since audio acceleration is not used, that means it also works on Windows Vista and 7 regardless of your audio capabilities.
Sme things to keep in mind:
It's entirely possible this build won't work when put into real Windows. It could fail to start, crash, lock-up the app, lock-up your system, crash your system, kick your puppy, or shave your cat. Such is the consequence for being a work-in-progress. If you do have any trouble, feel free to report it and I'll do what I can (please make sure to provide your system specs, Windows version, audio configuration as set in Windows, and the output of the openal-info.exe program when run next to the provided OpenAL32.dll). I also can't guarantee this will work with the Steam version.
Download
Since this isn't strictly a TES mod (though TES is primarily why I developed it), the usual mod sites don't seem appropriate. I'll put it up on TESNexus if you think it is appropriate, but I won't presume such. It also seems ompldr.org is down, so for now, I've put it up on my webspace:
http://kcat.strangesoft.net/dsoal.zip
Installation
Extract the DLL files from the package and place them in the same folder as Oblivion.exe. As with OBSE, you may need to disable whatever protections Windows has on your Oblivion folder. You may also need to modify Oblivion.ini so that it will attempt acceleration again:
Then run Oblivion as normal.
Final Notes
The sources for dsound.dll are provided in the package. The readme in the package explains where to get the sources for OpenAL32.dll/openal-info.exe and libwine.dll.
Being that this is software-driven, there may be a slight impact on performance. I don't notice any FPS impact on my AMD Athlon X2 4200+, but it's something to keep in mind if you have something lesser.
The OpenAL DLL requires an i686 CPU with MMX and SSE. I believe this is similar to Oblivion itself.
Thanks for looking! :foodndrink:
This is something I've been working on, on and off, for quite a while. Finally, it's at the point where I have something to show for Windows users.
About
This is a project that attempts to implement dsound.dll using OpenAL. It does so in a way that makes the application think it has accelerated audio even when no audio acceleration is present, which causes games like Oblivion and Morrowind to use the DirectSound3D interfaces instead of doing its own stereo mixing. Some implementations of OpenAL are able to do surround sound mixing in software, which in turn causes the DS3D interfaces to play in surround sound. Additionally, software OpenAL implementations tend to support the EFX extension, which can be used to implement the EAX interfaces.
What this ends up doing is, it allows Oblivion to use surround sound output, and allows the use of EAX for mods like http://www.tesnexus.com/downloads/file.php?id=17050 http://www.tesnexus.com/downloads/file.php?id=32128, without the need for audio acceleration. Since audio acceleration is not used, that means it also works on Windows Vista and 7 regardless of your audio capabilities.
Sme things to keep in mind:
- Because this implements dsound.dll using OpenAL, the OpenAL implementation must not use DirectSound itself. I provide an implementation which uses WASAPI/MMDevApi and WaveOut/WinMM.
- The provided OpenAL implementation only supports mono and stereo when using WaveOut (sorry XP users). Mono, stereo, quad, 5.1, 6.1, and 7.1 are possible with WASAPI. EFX works regardless.
- This was primarily developed for use with, and tested under, Wine. Besides the fact that I use Linux, this made it easier to avoid the DirectSound restriction since dsound.dll could call directly to the host OpenAL lib which would not use DirectSound. The OpenAL implementation has since added support for playback using non-DirectSound APIs on Windows, which is what makes this possible.
- This has not been tested under real Windows, but the real Win32 DLLs have been tested using Wine's MMDevApi implementation.
- The DirectSound DLL is not complete, particularly where EAX is concerned. However, enough is done that Morrowind and Oblivion (along with the EAX plugin) work.
- It can be picky about the OpenAL implementation it uses. Beyond the DirectSound restriction, I try not to make it dependent on any particular one, but I can't guarantee any other will work.
It's entirely possible this build won't work when put into real Windows. It could fail to start, crash, lock-up the app, lock-up your system, crash your system, kick your puppy, or shave your cat. Such is the consequence for being a work-in-progress. If you do have any trouble, feel free to report it and I'll do what I can (please make sure to provide your system specs, Windows version, audio configuration as set in Windows, and the output of the openal-info.exe program when run next to the provided OpenAL32.dll). I also can't guarantee this will work with the Steam version.
Download
Since this isn't strictly a TES mod (though TES is primarily why I developed it), the usual mod sites don't seem appropriate. I'll put it up on TESNexus if you think it is appropriate, but I won't presume such. It also seems ompldr.org is down, so for now, I've put it up on my webspace:
http://kcat.strangesoft.net/dsoal.zip
Installation
Extract the DLL files from the package and place them in the same folder as Oblivion.exe. As with OBSE, you may need to disable whatever protections Windows has on your Oblivion folder. You may also need to modify Oblivion.ini so that it will attempt acceleration again:
[Audio]bDSoundHWAcceleration=1bUseSoftwareAudio3D=0
Then run Oblivion as normal.
Final Notes
The sources for dsound.dll are provided in the package. The readme in the package explains where to get the sources for OpenAL32.dll/openal-info.exe and libwine.dll.
Being that this is software-driven, there may be a slight impact on performance. I don't notice any FPS impact on my AMD Athlon X2 4200+, but it's something to keep in mind if you have something lesser.
The OpenAL DLL requires an i686 CPU with MMX and SSE. I believe this is similar to Oblivion itself.
Thanks for looking! :foodndrink: