Jump to content
The Dark Mod Forums

Getting started with the EFX room reverb system (wip)


peter_spy

Recommended Posts

I have tried to update the wiki page and realized that the whole system is quite messy.

This awful system of translating one values to other values, with total confusion of EAX / EFX values...

And no presets, that's why Judith had to translate them by hand (sorry for that).

I simply don't know how to update the section on properties now.

 

I think for 2.07 it would make sense to do the following:

  1. Implement a new set of properties, which will have exactly the same names as the EFX constants (without the leading "AL_EAXREVERB_"). These properties would be passed to EFX as is, no need to convert bells to dolls.
  2. Implement a "preset" property, similar to what "environment" property meant before EFX update killed it. Enumerate all presets listed in efx-presets.h and make them all available by number.
  3. All of these changes will be available when "Version 2" is specified in the first line of the file. The "Version 1" definitions continue to work as they do now (forever).

If we do this, then we can simply reference the OpenAL EFX manual in wiki, which already has detailed explanation of all properties.

Also, we can list preset names with their numbers in the wiki --- mappers will most likely simply use this number. The number of available presets will increase of course.

 

The possible downside is breaking compatibility with Doom 3 and EAX (although kcat recently noted that at least one property is converted incorrectly from EAX to EFX, so EAX compatibility is not perfect now).

But I have a feeling that both are rather dead now, so maintaining this compatiblity does not provide us with any additional knowledge of EFX.

 

P.S. If we recall another TODO for 2.07, then it is a global revision of all stock sound shaders and putting no_efx in some.

  • Like 2
Link to comment
Share on other sites

Hello Judith,

 

Thanks a lot for the presets and thanks a lot @stgatilov for the wiki text.

 

Just created the set-up as per the instructions and copied in the cave reverb of yours. Works perfectly and adds significantly to the mood of the settings!

 

Can't wait to hear the other presets in action, expecially the sewer script as I think I have a fitting environment for it.

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...
  • 3 weeks later...

How about settings for "rooms" with rain or snow or fog in them?

Probably AL_EAXREVERB_AIR_ABSORPTION_GAINHF:

The Air Absorption Gain HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium. It applies to reflected sound only. You can use Air Absorption Gain HF to simulate sound transmission through foggy air, dry air, smoky atmosphere, and so on. The default value is 0.994 (-0.05 dB) per meter, which roughly corresponds to typical condition of atmospheric humidity, temperature, and so on. Lowering the value simulates a more absorbent medium (more humidity in the air, for example); raising the value simulates a less absorbent medium (dry desert air, for example).

 

 

It is called air absorption hf in the current effects system, and it must currently be set in millibels instead of gain.

However, this does not apply to direct sound --- those should be affected by sound source settings (outside of EFX).

 

To be honest, the more I look into EFX effects guide, the more I see that D3 integration with it is rudimentary.

It does not take into account at least the following things:

1. Listener close to walls in a big room hears things differently than in the middle of the room.

2. When listener-source direct path is blocked, the sound should be very different (i.e. occlusion).

3. The sounds coming from neighboring rooms should be handled differently, including different reverb properties and setting some overall direction for them.

  • Like 1
Link to comment
Share on other sites

To be honest, the more I look into EFX effects guide, the more I see that D3 integration with it is rudimentary.

It does not take into account at least the following things:

1. Listener close to walls in a big room hears things differently than in the middle of the room.

2. When listener-source direct path is blocked, the sound should be very different (i.e. occlusion).

3. The sounds coming from neighboring rooms should be handled differently, including different reverb properties and setting some overall direction for them.

 

I noticed that myself, it's basically using the reverb settings of a room the player currently stands in. Sounds coming from other rooms don't have properties of those rooms, even if you just stand at the open doorway. You can check that by standing next to visportal with location separator and going through it repeatedly.

Edited by Judith
  • Like 1
Link to comment
Share on other sites

I have got to doing a small revamp of EFX definitions (4815)

There is an important question.

 

OpenAL supports having several different effects on single effect slot.

Aside from EAXREVERB, there are also: REVERB (reduced version of eaxreverb), CHORUS, DISTORTION, ECHO, FLANGER, FREQUENCY_SHIFTER, VOCAL_MORPHER, PITCH_SHIFTER, RING_MODULATOR, AUTOWAH, COMPRESSOR, EQUALIZER.

Speaking solely about room settings, does it make sense to support any other effects than EAXREVERB?

After reading a bit on these effects, it seems that most of they make sense only for vocal/music studios. REVERB and ECHO are the only things interesting, but it seems that EAXREVERB covers them both. Pitch modulation is unlikely interesting (recall that it is configured room-wise), and EQUALIZER is probably not that important.

  • Like 1
Link to comment
Share on other sites

Doubtful about the need for any other effects.

 

If we had some sort of Midi engine for dynamic (situational) music, they might be nice but we don't have that feature...

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Link to comment
Share on other sites

Aside from EAXREVERB, there are also: REVERB (reduced version of eaxreverb), CHORUS, DISTORTION, ECHO, FLANGER, FREQUENCY_SHIFTER, VOCAL_MORPHER, PITCH_SHIFTER, RING_MODULATOR, AUTOWAH, COMPRESSOR, EQUALIZER.

Speaking solely about room settings, does it make sense to support any other effects than EAXREVERB?

Some of the effects could maybe be used to alter the sound of dream or other surreal / mystic scenes.

The equalizer might additionally allow simulation of environments with special absorption characteristics (underwater or thick fog?).

Link to comment
Share on other sites

Equalizer would be good for sound dampening over distance and around obstructions as well.

It would get applied to all sound the avatar hears while standing in the area with the assigned effect. So i would expect that it could not be applied to specific sources only (wich would be great for dampening a thunderstorm while inside).

Link to comment
Share on other sites

So...

 

The current system requires setting up locations and working visportals

associated with each location.

 

How about allowing mappers to define EFX zones with area brushes like the SEED system

or the water system?

 

This would reduce the amount of entities needed for this.

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Link to comment
Share on other sites

So will 2.07 give us soft shadows - for sound? ;)

Perhaps you have too much hope for these changes.

It has no new capabilities compared to TDM 2.06.

Just it makes it somewhat easier to use.

 

How about allowing mappers to define EFX zones with area brushes like the SEED system

or the water system?

If you point me to some particular example, I'll try to see if it is possible.

But if location entity is needed for ambient sounds, then probably it makes no sense to do anything,

Link to comment
Share on other sites

  • 3 weeks later...

If you point me to some particular example, I'll try to see if it is possible.

But if location entity is needed for ambient sounds, then probably it makes no sense to do anything,

 

I know you're on vacation but I guess it's no harm updating the thread here anyway...

 

At the simplest level, it would be great to be able to define a location with a trigger_once brush

 

GetPhysics()->SetContents( CONTENTS_TRIGGER ); ?

 

or like the seedEntityBounds attribute. Ideally, however, this "Location Brush" would act like a parent visportal

and enforce portal bounding behavior within the location.

 

The current system of looking for every hole in a location and making a location separator seems to be very fragile

and cumbersome.

 

Just dragging a brush around the area you want to be a Location would not only benefit EFX but location management in general.

 

 

On a related note...

 

Grayman's upcoming mission is perfectly configured for EFX (as I can tell), yet produces no reverb.

 

Is there anything short of compiling a Debug build that would help to identify what is keeping this from working?

  • Like 1

Please visit TDM's IndieDB site and help promote the mod:

 

http://www.indiedb.com/mods/the-dark-mod

 

(Yeah, shameless promotion... but traffic is traffic folks...)

Link to comment
Share on other sites

  • 4 weeks later...

The current system of looking for every hole in a location and making a location separator seems to be very fragile

and cumbersome.

Just dragging a brush around the area you want to be a Location would not only benefit EFX but location management in general.

I'm afraid I don't know well how these things are working.

Anyway, two questions:

1) Are you talking about another way of specifying locations in general? I mean, it also affects ambient sounds...

2) While setting up a box volume would work for box-shaped rooms, there are many cases when it is impossible to cover two rooms with boxes so that they don't intersect.

 

Grayman's upcoming mission is perfectly configured for EFX (as I can tell), yet produces no reverb.

 

I think it was some case-sensitivity issue, probably already fixed.
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Since from time to time I'm getting questions (and complaints ;)) about EFX system, I should probably address some of the most common misconceptions about its functionality.

 

First of all, it's not a magical system that will automatically propagate your sound just like in real life. It just applies a reverb filter with settings that change when you move from location to location, and not much else. It basically means that e.g.:

 

1. You will hear sounds coming from other EFX location with the reverb settings of the location you're currently in.

2. Changing EFX locations often will sound jarring, especially if they're small, there are big differences in settings, and player is running through them.

3. You will want to exclude fair amount of sounds from EFX reverb. Basically all non-diegetic (not coming from the game world) sounds and music.

 

Last but not least, if you expect some sort of automated approach, or want to do this quick-and-dirty way – don't. It will undermine your whole mapping effort, as people are much more sensitive to bad sound, than poor visuals. It is a careful handiwork, and it's better to abandon the whole idea, rather than trying to whip up something overnight. Have additional week or two for setting up and testing this, if you want your mission to sound really well.

  • Like 3
Link to comment
Share on other sites

One and two was something that EAX had the ability to solve, I remember Creative demos showcasing those and plenty of other effects like sound reflecting on surfaces and changing sound depending on what material they were made, wood, rock, etc, so EFX should have those has well but EAX 4 was implemented (by Creative) in Doom 3 in a hurry and so they only implemented the basic stuff.

 

Also is good to mention for those that don't know, this stuff runs on the CPU, is not accelerated by sound cards like in the old days, so the more advanced the sound system is, the more heavy it will be, unless the team makes this stuff run on a separate CPU core, then is better to be conservative on EFX, TDM is still very CPU dependent and i don't know how good is its multicore support.

Edited by HMart
  • Like 2
Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...

I was getting this error:

 

WARNING:alEffectf(AL_EAXREVERB_ECHO_TIME, 0.060) failed: 0xa003
I tracked it to this setting in my reverb definition:
"echo time" "0.060"
When I look at the accepted range for AL_EAXREVERB_ECHO_TIME, I find that it's 0.075->0.250.
So 0.060 is out of range, thus the error (I guess).
Resetting echo time in the reverb definition to 0.075 caused the warning to go away.
I'm using the room settings defined in the OP, so anywhere it says echo time should be 0.060, that should be changed to 0.075.
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recent Status Updates

    • Petike the Taffer

      I've finally managed to log in to The Dark Mod Wiki. I'm back in the saddle and before the holidays start in full, I'll be adding a few new FM articles and doing other updates. Written in Stone is already done.
      · 4 replies
    • nbohr1more

      TDM 15th Anniversary Contest is now active! Please declare your participation: https://forums.thedarkmod.com/index.php?/topic/22413-the-dark-mod-15th-anniversary-contest-entry-thread/
       
      · 0 replies
    • JackFarmer

      @TheUnbeholden
      You cannot receive PMs. Could you please be so kind and check your mailbox if it is full (or maybe you switched off the function)?
      · 1 reply
    • OrbWeaver

      I like the new frob highlight but it would nice if it was less "flickery" while moving over objects (especially barred metal doors).
      · 4 replies
    • nbohr1more

      Please vote in the 15th Anniversary Contest Theme Poll
       
      · 0 replies
×
×
  • Create New...