Giter Club home page Giter Club logo

eaxefx's Introduction

EAX OpenAL Extension

!!! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
!!! Since the wrapper is now integrated into OpenAL Soft it won't be maintaned. !!!  
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Contents

  1. Overview
  2. Minimum requirements
  3. Patches
  4. Supported drivers
  5. Driver file name convention
  6. Missing features
    6.1 Bypassed
  7. Known issues
  8. Usage
  9. Log file
  10. Compiling requirements
  11. FAQ
  12. Third party use
  13. Disclaimer

1 - Overview

The project enables EAX OpenAL Extension for systems without appropriate hardware.

OpenAL wrapper implements EAX calls with Effects Extension by using underlying OpenAL driver.

2 - Minimum requirements

Operating system:

  • Windows XP with Service Pack 3

3 - Patches

Several runtime patches are embeded into the wrapper to fix EAX issues.

Separate application eaxefx_app_patcher.exe is available for offline patching.

Resolved issues:

  • Doom 3 (2004) v1.3.1 visual twitch bug.
  • Doom 3 (2004) v1.3.1 channel contribution issue.
  • Doom 3 (2004) v1.3.1 uninitialized reverb properties.
  • Doom 3 (2004) v1.3.1 error "idSoundCache: error unloading data from OpenAL hardware buffer".
  • Quake 4 (2005) v1.4.2 / v1.4.3 (Steam) source occlusion out of range.
  • Prey (2006) v1.4 source occlusion out of range.
    Only runtime patching is supported for Steam version.
    Use retail version of executable from official patch v1.4 for offline patching.

4 - Supported drivers

Notes:

  • Driver is not included into release package.

5 - Driver file name convention

The driver should be named with one of the following names:

  • eaxefx_driver.dll
  • dsoal-aldrv.dll
  • soft_oal.dll

The wrapper tries to load a driver in the order specified above.

6 - Missing features

6.1 - Bypassed features

Context:

  • HF Reference (EAX 4.0/5.0)
  • Macro FX Factor (EAX 5.0)
  • Speaker configuration (EAX 5.0)
  • X-RAM

Source:

  • Speaker levels (EAX 5.0)

7 - Known issues

  • OpenAL Soft official binaries v1.20.x may cause a crash upon exiting the application.

8 - Usage

Terminology:

  • DIR - the directory with application's main executable.

Steps:

  1. Backup (if necessary) OpenAL32.dll in the DIR.
  2. Extract the release package into some directory.
  3. Copy extracted OpenAL32.dll into the DIR.
  4. Put properly named driver into the DIR.
  5. Enable appropriate EAX options in the application and restart it if necessary.

9 - Log file

The wrapper creates a log file (eaxefx_log.txt) in the working directory, set by the application. Usually it's identical to the directory where the wrapper is placed.

If the working directory or the log file itself is write-protected the logger tries to create the log in the default application data directory.

On Windows it's %APPDATA%\bibendovsky\eaxefx (e.g., C:\users\john\AppData\Roaming\bibendovsky\eaxefx).

10 - Compiling requirements

Common:

  • Windows 32/64-bit build target.

Minimum:

  • CMake v3.8.2
  • C++17 compatible compiler.

11 - FAQ

Q: There is a subtle difference in audio when using the wrapper.

A: Search driver's documentation about amplifying EAX properties.
In case of OpenAL Soft it's boost option in reverb section.
Example of alsoft.ini:

[reverb]
boost = 8

12 - Third party use

  • OpenAL Soft
    See file eaxefx_openal_soft_license.txt for license information.

13 - Disclaimer

Copyright (c) 2020-2021 Boris I. Bendovsky ([email protected]) and Contributors.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

eaxefx's People

Contributors

bibendovsky avatar totalcaesar659 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

eaxefx's Issues

[Discussion] Implementation of EAX extensions in OpenAL Soft

First of all, thank you for the amazing work you are doing. I opened this "issue", or rather, discussion to understand and allow other people to understand what this change will entail in practice.
What I would like to ask is: implementing EAX extensions in OpenAL Soft means that, in games that use EAX via OpenAL, EAXEFX is no longer needed, right? For DirectSound games, will any changes be needed in DSOAL?

idSoundCache: error unloading data from OpenAL hardware buffer в RoE с патчером

Здравствуйте! Наткнулся однажды на видео стримера, который проходит Doom 3 и разные модификации к нему. В этом видео он показывает, что у него была ошибка "idSoundCache: error unloading data from OpenAL hardware buffer" в модификации "In Hell". Единственное решение, которое он нашёл, это было быстрое сохранение перед выходом с уровня, быстрая загрузка и последующий выход из уровня. Видео: https://youtu.be/z_u3vxmvi-U. Я посоветовал ему Ваш патчер, и он ему помог. Так же раньше у него вылетал один из уровней основной кампании, патчер так же решил его проблему. К сожалению, при проверке Resurrection of Evil у него всё равно происходит вылет с этой ошибкой: https://youtu.be/F818C9i9b30?t=2895. Он пробовал так же использовать все 4 исправления, но безрезультатно. Что можете сказать по этому поводу? Почему именно в RoE вылеты имеют место быть?

Quake 4 doesn't update sound position fast enough?

Hello,

I Drink Lava mentions this issue in the description of the video demonstrating 3D sound in Quake 4: "The one problem with Quake 4 with OpenAL Soft seems to be that it doesn't update sound position fast enough. This is a problem I've had with a couple games, but none that sounded as great as Quake 4. Reducing the period size helps somewhat, but you can still hear it if you do a 180 turn fast enough."

You worked on the occlusion fix, so maybe this is something that could be potentially fixed as well?

Regards

Install both eaxefx_bin_win32 AND eaxefx_bin_win64?

Do I need to install both eaxefx_bin_win32_v1_0_6.zip AND eaxefx_bin_win64_v1_0_6.zip binary files? The original Host OpenAL installs OpenAL32 files in both %systemroot%\system32 and %systemroot%\SysWOW64 folders so I am assuming both eaxefx 32 and 64 bit files need copying, right?
Please correct me if I am wrong. System32 is for 64 bit files and SysWOW64 is for 32 bit files, right? So the OpenAL32.dll from eaxefx_bin_win64_v1_0_6.zip goes in %systemroot%\system32 \ folder
and OpenAL32.dll from eaxefx_bin_win32_v1_0_6.zip goes in %systemroot%\SysWOW64\ folder, right?

Thanks!

[DOOM3] Fix scaling down volume of sounds

As previously discussed, Doom 3 suffers from a rather strange issue when turning down the master volume in the game menu.
Some effects or weapons will be louder than others, the volume level of the sounds will be different/wrong than when the master volume is set to 0db (here I think it's explained in a more technical way: dhewm/dhewm3#326 (comment)).
This seems to fix the problem: dhewm/dhewm3@4567f26

EAX OpenAL Extension в игре S.T.A.L.K.E.R.

Здравствуйте. Запускал вашу библиотеку в игре S.T.A.L.K.E.R. Зов Припяти. Работает хорошо, искажений по звуку нет, и нет багов, присущему нативному сталкерскому EAX (которые, возможно, случаются из-за встроенной звуковой карты) - треск при смене EAX зон. Но есть одна проблема. Игра намертво зависат при завершении, и закрывается только через диспетчер задач. Смог костыльно исправить это, заинжектив в вашу библиотеку свою с таким вот хуком.
PMSG pmsg;
pmsg = (PMSG)lParam;
if (code < 0) return CallNextHookEx(hHookQuit, code, wParam, lParam);
else if (pmsg->message == WM_QUIT) TerminateProcess(GetCurrentProcess(), 0x0);
Собственно это помогло, но факт остался. Будут ли попытки пофиксить это?

unclear instructions

Hi,
I'm currently trying your solution on some old games in hopes of comparing it to other solutions but I seem to have some trouble understanding your instructions in comparison to the binary release files.

You write that expected files are

  • eaxefx_driver.dll
  • dsoal-aldrv.dll
  • soft_oal.dll
  1. The first file, "eaxefx_driver.dll", is not in any binary release, where to get this file?
  2. No issues with the second file
  3. soft_oal.dll is also not in any binary release, for now I've gotten them from openal-soft.org but not sure if you meant to package a specific version with your releases since the instructions don't point to that site.

The way its now I get this log:
[2021-04-17 20:22:22.339] [EAXEFX] [I]
[2021-04-17 20:22:22.339] [EAXEFX] [I] <<<<<<<<<<<<<<<<<<<<<<<<
[2021-04-17 20:22:22.339] [EAXEFX] [I] EAXEFX v1.0.3
[2021-04-17 20:22:22.339] [EAXEFX] [I] ------------------------
[2021-04-17 20:22:22.339] [EAXEFX] [I]
[2021-04-17 20:22:22.339] [EAXEFX] [I] Load AL driver.
[2021-04-17 20:22:22.339] [EAXEFX] [I] Try to load a driver "eaxefx_driver.dll".
[2021-04-17 20:22:22.339] [EAXEFX] [E] [WIN32_SHARED_LIBRARY] LoadLibraryW failed.
[2021-04-17 20:22:22.339] [EAXEFX] [I] Try to load a driver "dsoal-aldrv.dll".
[2021-04-17 20:22:22.341] [EAXEFX] [I] Load AL symbols (AL 1.1; ALC 1.1; EFX 1.0).
[2021-04-17 20:22:22.342] [EAXEFX] [I] Create EAXX.
[2021-04-17 20:22:22.364] [EAXEFX] [I] Open device "OpenAL Soft".
[2021-04-17 20:31:39.427] [EAXEFX] [I] Close device.
[2021-04-17 20:31:39.673] [EAXEFX] [I]
[2021-04-17 20:31:39.673] [EAXEFX] [I] >>>>>>>>>>>>>>>>>>>>>>>>
[2021-04-17 20:31:39.673] [EAXEFX] [I]

But It's not doing any effects as far as I can tell (game does detect eax as available).

Bypassed and unsupported features

Are the features mentioned in section 6 planned to be supported in the future?

I'm currently playing BioShock and the log is full of warnings regarding speaker levels.

By the way, I really appreciate your work and was very happy when I found your project as a EAX and hifi enthusiast.

Cheers

Unreal 2 !

Man, the wrapper IS WORKING! It's awesome!
Unreal 2 can use EAX only through OpenAL "native" interface and NOT DirectSound like UT 2004, so you've solved a 18 years old problem :D (DSOAL has no use here!)

Still there are some little issues! Can you test personally Unreal 2 and hear them by yourself (->footsteps and water sounds in the Severnaya level when you load a savegame on the dam)? The Unreal Anthology package release is already patched (and Steam release too, maybe) to the lastest version!
No issue with an old and glorious Audigy 2 ZS!

But man, you did finally free us from Creative! (X-Fi cards, Titanium apart, do not work correctly with old OpenAL games and the Audigy 2 can't be installed on modern systems).

UT2004 EAX 5.0 Issues

HI, I've come across a strange issue. This DLL appears to work to an extent with UT2004.

With the EAXEFX OpenAL32.dll placed into UT2004's System folder and 32bit OpenAL Soft 1.21.1.0 renamed to eaxefx_driver.dll also placed in the UT 2004 System folder along with alsoft.ini the game will recognise EAX 5.0 and use the music and weapon sounds from the SBXF_UTPATCH_US_3369 patch for the game.
HRTF audio appears to be fine but reverb and occlusion are missing, the eaxefx_log.txt will spit out a huge list of the same error until game close.

Here's a shortened version of the log:

[EAXEFX] [I]
[EAXEFX] [I] <<<<<<<<<<<<<<<<<<<<<<<<
[EAXEFX] [I] EAXEFX v1.0.5
[EAXEFX] [I] ------------------------
[EAXEFX] [I]
[EAXEFX] [I] Load AL driver.
[EAXEFX] [I] Try to load a driver "eaxefx_driver.dll".
[EAXEFX] [I] Load AL symbols (AL 1.1; ALC 1.1; EFX 1.0)
[EAXEFX] [I] Create EAXX.
[EAXEFX] [I] Open device "DirectSound3D".
[EAXEFX] [E] EAXGet failed.
[EAXEFX] [E] [EAXX_SOURCE] Property buffer too small.
[EAXEFX] [E] EAXGet failed.
[EAXEFX] [E] [EAXX_SOURCE] Property buffer too small.
[EAXEFX] [E] EAXGet failed.
[EAXEFX] [E] [EAXX_SOURCE] Property buffer too small.
[EAXEFX] [E] EAXGet failed.
[EAXEFX] [E] [EAXX_SOURCE] Property buffer too small.
[EAXEFX] [E] EAXGet failed.
[EAXEFX] [E] [EAXX_SOURCE] Property buffer too small.
[EAXEFX] [I] Close device.
[EAXEFX] [I]
[EAXEFX] [I] >>>>>>>>>>>>>>>>>>>>>>>>
[EAXEFX] [I]

Strange thing is the log will come up as successful while using DSOAL but all the EAX 5.0 related parts of the game (patched music and weapon sounds) won't work, reverb and occlusion doesn't work using this method either.

-Same eaxefx_driver.dll
-Renamed EAXEFX OpenAL32.dll in UT2004 System folder to dsoal-aldrv.dll
-Pasted DSOAL r391 dsound.dll in UT2004 System folder

Here is the log while running with DSOAL:

[EAXEFX] [I]
[EAXEFX] [I] <<<<<<<<<<<<<<<<<<<<<<<<
[EAXEFX] [I] EAXEFX v1.0.5
[EAXEFX] [I] ------------------------
[EAXEFX] [I]
[EAXEFX] [I] Load AL driver.
[EAXEFX] [I] Try to load a driver "eaxefx_driver.dll".
[EAXEFX] [I] Load AL symbols (AL 1.1; ALC 1.1; EFX 1.0).
[EAXEFX] [I] Create EAXX.
[EAXEFX] [I]
[EAXEFX] [I] >>>>>>>>>>>>>>>>>>>>>>>>
[EAXEFX] [I]

I have video footage of both methods in use to show some of what I'm talking about.
https://youtu.be/DBQl4n7uFLg

No Reverb in Doom 3?

Good Evening. I'm having this weird issue with Doom 3 where I have properly installed EAXEFX and I can turn EAX on...but there doesn't seem to be any reverb in-game.

eaxefx_log.txt

here is the log from the last time I played if you needed it.

Fix search order of the driver

A driver library outside of the current directory could not be found.

Examples:

  • S.T.A.L.K.E.R.: Shadow of Chernobyl
  • S.T.A.L.K.E.R.: Clear Sky
  • S.T.A.L.K.E.R.: Call of Pripyat

Linux support possible

Hi,
first let me thank you for your work :)! As you load openalsoft which also works fantastically on linux: Would it be possible to provide precompiled linux library? I'm asking because I want to test if the native UT2004 port, which uses OpenAL, could actually use OpenAL + EAX on linux once your library were provided.
Thanks!

Issues in Serious Sam HD

EAX effects in Serious Sam HD (both The First Encounter and The Second Encounter) stopped working since version 1.0.4.
I get this in the log file:

[2021-06-14 15:47:56.640] [EAXEFX] [I]
[2021-06-14 15:47:56.640] [EAXEFX] [I] <<<<<<<<<<<<<<<<<<<<<<<<
[2021-06-14 15:47:56.640] [EAXEFX] [I] EAXEFX v1.0.6
[2021-06-14 15:47:56.640] [EAXEFX] [I] ------------------------
[2021-06-14 15:47:56.640] [EAXEFX] [I]
[2021-06-14 15:47:56.640] [EAXEFX] [I] Load AL driver.
[2021-06-14 15:47:56.640] [EAXEFX] [I] Try to load a driver "eaxefx_driver.dll".
[2021-06-14 15:47:56.640] [EAXEFX] [E] [WIN32_SHARED_LIBRARY] ::LoadLibraryW failed.
[2021-06-14 15:47:56.640] [EAXEFX] [I] Try to load a driver "dsoal-aldrv.dll".
[2021-06-14 15:47:56.641] [EAXEFX] [E] [WIN32_SHARED_LIBRARY] ::LoadLibraryW failed.
[2021-06-14 15:47:56.641] [EAXEFX] [I] Try to load a driver "soft_oal.dll".
[2021-06-14 15:47:56.641] [EAXEFX] [I] Load AL symbols (AL 1.1; ALC 1.1; EFX 1.0).
[2021-06-14 15:47:56.641] [EAXEFX] [I] Create EAXX.
[2021-06-14 15:47:56.664] [EAXEFX] [I] Open device "OpenAL Soft".
[2021-06-14 15:48:00.426] [EAXEFX] [E] EAXSet failed.
[2021-06-14 15:48:00.426] [EAXEFX] [E] [EAXX_CONTEXT] EFX extension not found.
[2021-06-14 15:48:20.624] [EAXEFX] [E] EAXSet failed.
[2021-06-14 15:48:20.624] [EAXEFX] [E] [EAXX] Context not initialized.
[2021-06-14 15:48:20.878] [EAXEFX] [E] EAXSet failed.
[2021-06-14 15:48:20.878] [EAXEFX] [E] [EAXX] Context not initialized.
[2021-06-14 15:48:21.680] [EAXEFX] [E] EAXSet failed.
[2021-06-14 15:48:21.680] [EAXEFX] [E] [EAXX] Context not initialized.

Can't enumerate on winxp

The minimum os requirements state winxp sp3, however in my retro build using winxp sp3 the router provides no enumeration through Alcaps viewer nor does it route to soft_oal or any creative openal dll after a rename. Openal soft works on it's own.

Does this actually work on xp?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.