Jump to content
The Dark Mod Forums

Incorrect EFX environment size handling


KCat
 Share

Recommended Posts

Wasn't sure the best way to report or fix this is, but as I was recently trying to build TDM from the SVN source to get OpenAL sound output on Linux with reverb (the latest release doesn't seem to have it), and noticed a small issue in the source. In sound/snd_efxfile.cpp, there is this line which converts the "environment size" preset property to density:

efxf(AL_EAXREVERB_DENSITY, (size < 2.0f) ? (size - 1.0f) : 1.0f);
That's incorrect. The correct way to convert it, based on Creative's own EAX-to-EFX conversion tools and as adopted by the Dhewm3 port, is:

float size = src.ParseFloat();
efxf(AL_EAXREVERB_DENSITY, idMath::ClampFloat(
        AL_EAXREVERB_MIN_DENSITY, AL_EAXREVERB_MAX_DENSITY,
        idMath::Pow(size, 3.0f) * 0.0625f
));
This will help improve the quality of the reverb, making the presets sound closer to the intended response.

 

Hope that's helpful. :)

Edited by KCat
  • Like 3
Link to comment
Share on other sites

  • 2 months later...

Wasn't sure the best way to report or fix this is, but as I was recently trying to build TDM from the SVN source to get OpenAL sound output on Linux with reverb (the latest release doesn't seem to have it), and noticed a small issue in the source. In sound/snd_efxfile.cpp, there is this line which converts the "environment size" preset property to density:

efxf(AL_EAXREVERB_DENSITY, (size < 2.0f) ? (size - 1.0f) : 1.0f);
That's incorrect. The correct way to convert it, based on Creative's own EAX-to-EFX conversion tools and as adopted by the Dhewm3 port, is:

float size = src.ParseFloat();
efxf(AL_EAXREVERB_DENSITY, idMath::ClampFloat(
        AL_EAXREVERB_MIN_DENSITY, AL_EAXREVERB_MAX_DENSITY,
        idMath::Pow(size, 3.0f) * 0.0625f
));
This will help improve the quality of the reverb, making the presets sound closer to the intended response.

 

Hope that's helpful. :)

 

Thank you very much for your note!

 

I have looked into dhewm3 sources, and it still uses the same linear formula as TDM:

https://github.com/dhewm/dhewm3/blob/master/neo/sound/snd_efxfile.cpp#L203

 

To be honest, I do not understand the difference well.

Since AL_EAXREVERB_DENSITY value seems to be in range [0, 1], the two formulas are approximately the same up to a bias of 0.5: the current linear formula has most changes in range [1..2], while the cubic formula has the same change in range [0.5, 1.5]. Of course, the effects tuned for EAX will sound differently on EFX as the result. But we have no builtin presets for EFX, I believe.

And there are only a few missions with EFX settings. In Patently Dangerous, this parameter is set to 1 everywhere. In Volta, it is mostly 1.0, and sometimes 1.8 or 8.0. Clearly, 8.0 is wildly off range with both formulas.

  • Like 1
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.

 Share

  • Recent Status Updates

    • duzenko

      Please, can we finally group the missions by year in the game menu?
      · 3 replies
    • duzenko

      I vaguely recall someone recently complained about two-sided materials (curtains?) not getting lighting from both sides
      I just found a piece of code that's supposed to do just that
      Where was that discussed? (@nbohr1more?)
      · 8 replies
    • Xolvix

      I still play classic Doom (albeit with user-made mods and maps rather than the original campaign) on a regular basis. A game from the early 90's which has still got a healthy following in 2022. Pretty amazing.
      · 3 replies
    • Nort

      I'm beginning to understand why people who aren't into social clubbing "don't last long" on this project, and why it's so full of holes. When moderators are siding with bullies, by closing down threads that they derail, then I start to wonder if I should support the platform to begin with.
      I'm sure that the core development is solid, but when you're constantly tone policed and bullied, and moderators are playing into it too, then the project will just drive away talent, and replace it with socialites instead. ...and without talent, you only end up with a small skeleton crew trying to do everything themselves.
      ...so Dragofer and Airship Ballet, and all you other socialites, you win. From now on I'll just keep to myself. You'll never be able to do my work, but at least you'll be happy together, and that's what matters to you.
       
      Update
      Actually, I have to revise my statement:
      I actually messaged greebo - the top dog, I gather - about nbohr1more's outburst of insanity below, and since I haven't even heard back from him, I just have to assume that there's not a single core programmer here, who's not backing nbohr's threats. ...and that's bad.
      ...so if you're a newbie reading this, or an honest soul like ZergRush, then just slowly back out of these forums, run, and don't look back. This is nothing more than a cult posing as a game development project, using Thief and IDTech4 to sucker hopefuls in, to do work for them, while trying to cajole them into something going on behind the scenes, which apparently - according to nbohr - is something that should be hidden from the state. These people aren't programmers - they don't even understand things like how to fix the simplest bugs. All they have, is an engine, and an IP, and some sort of fascist social cult. There was some other project I saw being made in the Unreal Engine. Try joining that project. ...or start a project of your own. Anything but this asylum.
      Hopefully that was "divisive" enough for a final post, because at this point I really want people to leave this place. This project is, on a management level, just awful garbage, run by garbage people, apparently from the top down, and I'm just glad that they have a garbage place to stay, together, and hopefully forever.
      Nort
      · 9 replies
    • The Black Arrow  »  Araneidae

      A spidey! I love spideys 🕷️
      · 0 replies
×
×
  • Create New...