Skip to content
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

Eax reverb #253

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Eax reverb #253

wants to merge 5 commits into from

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 😉

korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
korman/properties/modifiers/sound.py Outdated Show resolved Hide resolved
korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
@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]>
korman/ui/modifiers/sound.py Outdated Show resolved Hide resolved
korman/properties/modifiers/sound.py Outdated Show resolved Hide resolved
korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
korman/properties/modifiers/region.py Outdated Show resolved Hide resolved
- 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 😄).

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.

3 participants