kcat / openal-soft

OpenAL Soft is a software implementation of the OpenAL 3D audio API.
Other
2.23k stars 536 forks source link

[Question] Anything for the next major update? #1022

Closed Maxkatsur closed 3 months ago

Maxkatsur commented 3 months ago

I'm a regular gamer who enjoyed this wrapper to restore EAX in select few games from my Steam library, so I have no time to contribute at all. I use headphones through Ugreen-brand USB-based audio card , because my laptop's integrated one is broken. Note: (almost) none of my suggestions may happen that sooner or later; they might sound difficult at best or unlikely at worst. They came from my imagination.

After successful, if not perfect, use of OpenAL Soft on System Shock 2 (thanks to this community post) and Unreal Tournament 2004 and, through DSOAL v1.4, Serious Sam Classics (three of mentioned games are on my Steam) I was wondering if the next update for OpenAL Soft would be THAT BIG. My question is: how's the next update will be like?

My personal suggestions (don't get me started with bug fixes):

  1. EAX 5.0 and potential improvements for all versions of Environmental Audio Extensions. I'm not sure if this is even a thing for OpenAL Soft, but FMOD-powered BioShock supported it through EAX version 5.0. Too bad wrap_oal32.dll renamed to OpenAL32.dll couldn't properly restore EAX effects even with EAX option on. Also, DSOAL doesn't support EAX 5, and it wasn't updated after 2022, and Creative ALchemy isn't updated anymore since 2020. DirectSound3D-powered F.E.A.R. supports up to EAX 4.0, and Fallout New Vegas supports the fifth version of EAX, but the former was more problematic. This is why I've mentioned 'potential improvements' before.
  2. Improved configuration app. More options, such as OpenAL/EAX-compatible game config list (checks and, if necessary, puts important files to restore EAX), audio driver (speakers/headphones) identification and settings, game-specific options, etc. Oh, and the current UI shows its age, and Qt would be a nice upgrade with new good looks.
  3. What will happen to DSOAL (alsoft.ini + dsound.dll + dsoal-aldrv.dll)? Will it be merged into OpenAL Soft? Oh wait, C++ rewrite is W.I.P as for now.
  4. EXE-based software installation method rather than cumbersome drag-and-drop-certain-files-into-appropriate-location (eg. soft-oal.dll from bin/Win32 must be in C:/Windows/System32/) method, which aged poorly and feels invasive and tiresome.
  5. AES, AVX and AVX2 support for extra performance, plus improvements for modern CPUs from AMD, Intel and Snapdragon. My CPU is x86-64 Intel Core i5-3230M, which supports AES and AVX as well, but not AVX2.
  6. Automatic updater. Unpacking content into designated folders that work for each update is a pain in the butt, and always has been.
  7. Community patches for specific games. Sounds unnecessary, but dedicated talented community members can make patches to enhance audio extensions for a specific game like never before. For example, Serious Sam TFE/TSE support EAX up to 2.0, but a group of fans make a patch for it to support EAX up to 5.0 and enhance 3D spatial sound and HRTF, and also EFX. Oh my god... but connection to the Internet is required for this to download said patches.
  8. Simpler and more streamlined EAX restoration wrapper installation. Copying and pasting soft-oal.dll from bin/Win32 folder into a folder where game's executable is here and renaming it to OpenAL32.dll was effective, but is apparently quick-and-dirty, plus it's obviously showing its age. wrap-oal.dll, according to this comment, couldn't accurately restore proper atmospheric, ambient effects by EAX 5.0 in BioShock. It can also scream "goodbye Creative ALchemy"/
  9. Mixing with FMOD (BioShock, Far Cry, FlatOut), Miles Sound System (American McGee's Alice, Grand Theft Auto 1_-Vice City, Midnight Club II), OpenAL (DOOM 3, Soldier of Fortune II, Unreal Tournament 2004) and DirectSound(+3D) (Fallout New Vegas, F.E.A.R., Halo Combat Evolved, Need for Speed Hot Pursuit 2), also compatibility improvements. I have no words to describe it, but I'm sure if not rushed horribly it will work with other audio middleware I've mentioned. And, I'm not even sure if the wrapper from this patch and such audio middleware will mix well, maybe they can be separated.

I'm very curious about this useful thing's future, even hoping for a better tomorrow. Alternatives and clarifications appreciated. Redundancies edited out and typos fixed, plus I figured out how the link function should work. I know that my suggestions are experimental as hell, and PCSX2 2.0 update inspired me to think about the next update while adapting.

Error: F.E.A.R. didn't support the fifth version of EAX, only EAX 2.0 and 4.0. My bad! Update: I've brainstormed about more big changes, so I added four more of these. Second name edit note: I wanted the name of this question to be more fitting to the topic.

ThreeDeeJay commented 3 months ago

Relevant info that may or may not answer your questions:

  1. Bioshock uses FMOD which is mostly a lost cause and uses proprietary soundbanks incompatible with OpenAL Soft so the best we can hope for is 7.1 surround or a built-in spatializer, though I think EAX should work since it's applied to the mix after the fact. See 2
  2. https://kutt.it/BinauralDatabase (click + Space for guide) / https://kutt.it/BinauralInterface (needs free account but easier, faster search) include game-specific fixes/recommended configurations. You can add missing configs with https://kutt.it/BinauralDatabaseAdd
  3. I started working on Binaural Audio Manager, a tool to install audio plugins by just dropping the game executable on it, but it was too much effort for little demand so I just focused on the guides above. Maybe I'll eventually finish it with a nicer GUI
  4. Does it really need more optimization tho? "UNIGINE proves that OpenAL Soft HRTF has zero performance impact on games" - https://youtu.be/exwoJ2NzuXM
  5. Would be nice though regressions may happen so personally I just install DLLs into the game folder and rarely update it so I know it'll keep working the same.
  6. Same as 2
  7. Perhaps something like https://github.com/kcat/openal-soft/pull/1008?
  8. See 1 and 2. Older Miles games support DirectSound3D/EAX which can be wrapped by DSOAL, but newer versions like in Source engine just use DirectSound or virtual surround within DirectSound3D (neither with EAX).

btw PCSX2 got a proper surround decoder which works fairly well with HeSuVi though I'm not sure if it supports OpenAL to virtualize DPLII like Dolphin

Maxkatsur commented 3 months ago
  1. I started working on Binaural Audio Manager, a tool to install audio plugins by just dropping the game executable on it, but it was too much effort for little demand so I just focused on the guides above. Maybe I'll eventually finish it with a nicer GUI This software still has so much potential. I can imagine if it could install OpenAL Soft into the computer by itself and DirectSound3D/EAX/OpenAL to restore and accurately emulate A3D and EAX into a specific compatible game while being very easy to use and never messing up registers! I still have F.E.A.R. EAX options greyed out, but two out of three (first and second) options are on for some odd reason (see image below). image

  2. Perhaps something like https://github.com/kcat/openal-soft/pull/1008? Also a good idea that we shouldn't forget.

Man, that was fun. Hope the A3D/EAX restoration efforts will be more user-friendly, flexible, streamlined. comfortable, fast but steady and bug-fixing than ever, just like what happened to PCSX2 since its 2.0 update. Nowadays it's a mess in my opinion. Speaking of 2, most of these instructions seem to be badly outdated to the point of ineffectiveness, maybe Windows 10/11 updates ruin it or not enough detailed instructions to prevent any personal hiccups, mishaps, etc, such as that aforementioned issue with F.E.A.R.

ThreeDeeJay commented 3 months ago

I still have F.E.A.R. EAX options greyed out, but two out of three (first and second) options are on for some odd reason (see image below).

The F.E.A.R guide should mention everything you need to know. I just updated and cleaned it up a bit. Though if you find you did have to do something else to get it working, lemme know. Particularly, make sure you're using the Win32 DSOAL DLLs next to the game executable and apply the registry patch for dsound.dll if you haven't already.

Also a good idea that we shouldn't forget.

There's also a DSOAL portable build updated daily with the latest OpenAL Soft.

Maxkatsur commented 3 months ago

The F.E.A.R guide should mention everything you need to know. I just updated and cleaned it up a bit. Though if you find you did have to do something else to get it working, lemme know. Particularly, make sure you're using the Win32 DSOAL DLLs next to the game executable and apply the registry patch for dsound.dll if you haven't already.

But registry patch didn't help; I'm on Windows 10 64-bit. Wait, where I should place content from the archive file to function properly-- Wait, "Run as administrator" compatiblity option was a culprit; it should be turned off at all times to function. 20240806100150_1

Neither registry patch or DSOAL will work on anything protected by Admin privileges requirements. Too bad Serious Sam TFE and TSE (Classics patch v1.8 on) both crash upon start with DSOAL Win32 files on after that registry patch; this method is never without side effects like that. Need for Speed: Underground and Soldier of Fortune, for example, will crash upon startup when DSOAL's dsound.dll is together with game's exe file. All those games are downloaded inD:\virtual path of my SSD (it hasC:\ and D:\ paths at the same time). Talk about inflexibility and oversights... UPDATE: It got mysteriously fixed. BUT, number of source sends will remain 6, and if it gets changed, it will revert back to 6 regardless. No more, no less.

Maxkatsur commented 3 months ago

That was fun. That yellow-blue chess shield prevented DSOAL from functioning properly. Also, Midnight Club II crashes when DSOAL files are inserted together with game's exe.

ThreeDeeJay commented 3 months ago

Huh, that's odd. Usually we do need to run as admin so I wonder what's going on here. Maybe running as admin forces the game to load the DLL from the system folder? That'd be the first time I see that happen. On my end, admin usually just helps write log files in protected folders.

You could try checking the location of the DLL being loaded with/without admin rights by using API Monitor (run as admin) like this image

Neither registry patch or DSOAL will work on anything protected by Admin privileges requirements

My registry patch script includes keys for when running as admin (make sure you ran it as admin as well) And DSOAL also should work on games run as admin (IIRC games that require Windows XP compatibility run as "admin" by extension)

Serious Sam TFE and TSE (Classics patch v1.8 on) both crash upon start with DSOAL Win32 files on after that registry patch

The registry patch only enables loading dsound.dll from the game folder, so if it's crashing after running it, it might just be the game having issues with DSOAL. So you could try checking which DLL those games are loading before and after the registry patch script (you can restore the registry changes by running and merging Backup.reg) If after unpatching, the game just loads the default system dsound.dll and patching makes it load the dll from the game folder and crashes, you might wanna open a new issue, though apparently someone did manage to get it working and just needed to boost the reverb https://github.com/kcat/dsoal/issues/33#issuecomment-1001251683

Need for Speed: Underground and Soldier of Fortune, for example, will crash upon startup

SoF worked here, and apparently NFSU1 just checks for EAX 1.0 support but it doesn't seem to be used, at least during the playtime of this log dsoal_error_NFSU1.txt so I don't know if it's even worth it with ALchemy.

19f0:trace:dsound:DSBufferProp_QuerySupport (0D27729C)->(DSPROPSETID_EAX10_ListenerProperties, 0x0, 0019FBF8)

As for sends, maybe this is relevant https://github.com/kcat/dsoal/issues/34#issuecomment-1140012440 https://github.com/kcat/dsoal/issues/34#issuecomment-1140092508

That yellow-blue chess shield prevented DSOAL from functioning properly

Are you saying the file was actually just blocked by windows for being downloaded from the internet? If windows blocks such files from running as admin (which kinda makes sense) then it could explain why it had to run without elevation.

Midnight Club II crashes when DSOAL files are inserted together with game's exe.

This is known, sadly no known fix https://github.com/kcat/dsoal/issues/88

mirh commented 3 months ago

EAX 5.0 and potential improvements for all versions of Environmental Audio Extensions. I'm not sure if this is even a thing for OpenAL Soft, but FMOD-powered BioShock supported it through EAX version 5.0. Too bad wrap_oal32.dll renamed to OpenAL32.dll couldn't properly restore EAX effects even with EAX option on.

EAX5 has already been a thing since #632 And no shit that renaming the openal-to-directsound wrapper didn't do anything for you?

https://github.com/kcat/openal-soft/issues/1001#issuecomment-2238795858 which is mostly a lost cause and uses proprietary soundbanks incompatible with OpenAL Soft

I mean, they literally found a bug with the most cursory look. I'd wait before throwing out all hope with the bathwater.

Also, DSOAL doesn't support EAX 5, and it wasn't updated after 2022

IIRC (but my memory is fuzzy) there is no eax 5 for directsound. And when openal-soft is seeing all the improvements that it is getting, you should sleep comfortably even knowing that dsoal is kinda in the backburner.

and Fallout New Vegas supports the fifth version of EAX

I REALLY don't think so chief.

More options, such as OpenAL/EAX-compatible game config list

3DJ has such config list, which just like in pcsx2 could help fix whatever game quirk like axes behind swapped or the "in-game ears" being placed on the camera rather than the character (assuming most of them wouldn't be too subjective). I guess this is in fact the one very good idea.

EXE-based software installation method rather than cumbersome drag-and-drop-certain-files-into-appropriate-location (eg. soft-oal.dll from bin/Win32 must be in C:/Windows/System32/) method, which aged poorly and feels invasive and tiresome.

The only invasive and tiresome thing, is that #757 still hasn't been implemented, meaning that games will hardly ever pick up automatically OAL-soft.

..for the reminder, maybe a very simple 7-zip self-extracting archive could be enough to cater both developers and even the noobest people (after all, it should be possible to treat it as a normal xz file) but it's really a speck of dust in the grand scheme of things.

What will happen to DSOAL (alsoft.ini + dsound.dll + dsoal-aldrv.dll)? Will it be merged into OpenAL Soft?

Of course not? Directsound isn't openal - period. It might one day be possible to drop the need for a third dll though.

AES, AVX and AVX2 support for extra performance,

Are you just throwing in random SIMD words, or do you actually know there are bad hotspots in the code?

For example, Serious Sam TFE/TSE support EAX up to 2.0, but a group of fans make a patch for it to support EAX up to 5.0 and enhance 3D spatial sound and HRTF, and also EFX

Really? Are you sure that isn't just using dsoal? Because what you are describing sounds like a whole new audio renderer (like ALAudio for old UT games), and certainly messing up with a game internals has nothing to do with openal-soft. Like, even for the craziest eaxefx_app_patcher stuff it's still a separate project (with different competences required).

It can also scream "goodbye Creative ALchemy"/

That's literally what dsoal is and has always been

I have no words to describe it, but I'm sure if not rushed horribly it will work with other audio middleware I've mentioned.

I have instead, and it is that this is just a word salad. Putting aside that you pretty much just mentioned everything under the sun, and then some.. The only particular thing some middleware may have (as I incidentally mention in https://github.com/kcat/dsoal/issues/34#issuecomment-1420199964) is that they tended to rely more on COM loading - aka the registry fix situation.

Hope the A3D/EAX restoration efforts will be more user-friendly, flexible, streamlined

There is no A3D restoration effort whatsoever.

Wait, "Run as administrator" compatiblity option was a culprit; it should be turned off at all times to function.

Not really, you'd just need to edit the HKLM keys of the registry too, and then you are good there too.

Maybe running as admin forces the game to load the DLL from the system folder?

Yes of course if COM loading is involved without doing the psexec/setacl/batch permissions magic that would happen. Worth to remember though, that XP SP3 compatibility mode is made of 75 shims other than just the "run as administrator" one.