Skip to content

Eax reverb #253

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Apr 21, 2025
Merged

Eax reverb #253

merged 5 commits into from
Apr 21, 2025

Conversation

Jrius
Copy link
Collaborator

@Jrius Jrius commented May 30, 2021

Found a way to reenable EAX on CC the other day, I thought why not add it to Korman too.

Adds the Reverb Region Modifier (aka plEAXListenerMod), and allows enabling reverberation for some sounds. Hear how it sounds in this video.

Relies on this HSPlasma pull request.

AFAIK EAX is buggy in MOULa currently ? so requires a modded CC install to test. More info here, and you'll also need to install DSOAL. If Windows prevents dsound.dll from overriding the base one, follow this link. I'll probably write a better tutorial at the GoW at some point.

The Reverb Region Modifier is attached to a softvolume. It provides reverberation for sound sources with EAX enabled - such as footstep sounds. For ease-of-use, the user simply has to pick a reverb profile within a list of existing presets. There are several dozens of those, which are split into two lists(*). The user can also setup the reverb profile himself, if he's stupid enough to try his hand with undocumented stuff.

(*) I kept both separate since historically the first (shorter) list of presets comes from the original EAX library. The second (longer) list comes from OpenAL, if I'm not mistaken. The first list is commonly found in other game engines and softwares, the second one less so.

Sound emitters themselves now have a toggle to enable reverberation. This only enables the plSound::plEAXSourceSettings. (There are more parameters available in the plEAXSourceSettings, but I couldn't figure out how they worked.)

Hope you like the modifier's icon, otherwise we can change it :P

Copy link
Member

@Hoikas Hoikas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great demo! I've missed having reverb effects in Uru, and this will definitely be great for fan Ages. We may defer merging this until proper support is available in H-uru/Plasma - just so we don't have to point to any DLL hacking when the feature is released 😉

@Deledrius
Copy link
Member

Great demo! I've missed having reverb effects in Uru, and this will definitely be great for fan Ages. We may defer merging this until proper support is available in H-uru/Plasma - just so we don't have to point to any DLL hacking when the feature is released 😉

I agree; this looks good, but I'd like to be able to test it against H'uru Plasma as well as Uru:CC if possible.

@Jrius
Copy link
Collaborator Author

Jrius commented May 31, 2021

Great demo! I've missed having reverb effects in Uru, and this will definitely be great for fan Ages. We may defer merging this until proper support is available in H-uru/Plasma - just so we don't have to point to any DLL hacking when the feature is released wink

Thanks ! Sure, no problem, EAX is a nice feature but it's not a priority.
The DLL wrapper will still be required on CC, but someday I'll see if Drizzle/UAM can install it automatically.

I agree; this looks good, but I'd like to be able to test it against H'uru Plasma as well as Uru:CC if possible.

Sure. Let me know if you want the Tsoidahl Prad source to test, I can probably upload it somewhere.
(I'm a bit curious to know if there are any difference between the original EAX library, DSOAL and the upcoming OAL implementation.)

- Prevent animating EAX region properties
- Automatically enable/disable EAX
- Better flag assignment

Co-authored-by: Adam Johnson <[email protected]>
- syntax improvements
- merge both EAX presets lists into one

Co-authored-by: Adam Johnson <[email protected]>
@Jrius
Copy link
Collaborator Author

Jrius commented Aug 1, 2021

Thanks for the review, I implemented all suggestions. Let me know if you see something else.

@Hoikas
Copy link
Member

Hoikas commented Aug 4, 2021

This LGTM, but I think I would like to wait for client support in H-uru/Plasma before merging (this is you cue, @Deledrius 😄).

@patmauro
Copy link

patmauro commented Apr 18, 2025

Hey folks - found this PR, and unless @Jrius has any other adjustments in mind, I'd like to advocate for re-assessing the hold that was placed on this in 2021, and considering merging this proactively.

  1. While Restore EAX effects through OpenAL's EFX. Plasma#1000 is not techincally complete, as of Feb 20 there is now, for the first time, a working client build that supports EFX, even if it is still just a draft. Recently, Jrius also included EAX effects in his RAD contest Age, using a Korman branch including this feature, and it was possible to successfully test and reproduce the effects in a client built from Deledrius' draft PR. Given the circumstances, I think this might be a very good time to give Age builders the ability to start laying the groundwork needed to support this feature once it officially goes live - this will help avoid there being an awkward period of time during which this seems to be only half-supported due to many Ages lacking the feature.
  2. Importantly, we noticed that lack of EAX support in Korman has already unfortunately resulted in several Cyan Ages having their EAX data/info destroyed as a result of Korman conversion, impacting at least Watcher's Pub, K'veer, and Kirel, if not more. As a preventative measure, making sure this feature is available would likely help avoid any future loss, even if clients do not fully/officially support this yet.

While I totally understand the hesitation to deploying this until the client officially supports it, I really think there's no downside to providing folks the tools needed to plan for this in advance and prevent a "mad scramble" to implement this down the line - especially since providing this option will also help prevent feature loss in any Cyan content. I really think it's time to consider merging this one.

@Deledrius
Copy link
Member

I agree with your assessment, especially regarding Age conversions. Now that it's possible to test this PR (even if preliminarily), it makes sense to be proactive in the tool support, to me.

@Hoikas Hoikas merged commit be1731f into H-uru:master Apr 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants