Noise Gate and other noise-reduction capabilities for realtime signal cleanup?

It’s been years since I last asked this… so I’m curious to revisit since I didn’t find any forum matches for “noise gate” — is there any practical way to achieve a Noise Gate in the FMOD Studio Effects?

I don’t see one built in but wonder if there’s some trick. Also keeping in mind that across the broader landscape and audio plugins, some zero-latency noise reduction plugins like Waves NS1 have become quite affordable (both computationally and $-wise).

Here’s the general use case in-game:

  • User microphone voice recording is played via a Programmer Instrument
  • It passes through an FMOD effects chain that enhances its quality, the overall intent being to sweeten even a “cheap laptop mic”

Thus, someone who’s not an audio editor but wants to easily boost the quality of their voice (in the different ways that may entail) via FMOD.

If there was a noise gate or other related “dynamics processing” features that can reduce noise, I’d :sparkling_heart: to know.

Hey! A noise gate would be handy, but in the meantime you can definitely make a noise gate on a mixer group and it’s actually pretty simple! It involves creating a global parameter that will be driven by a sidechain on the mixer group. I just experimented and here’s the settings I came up with but you might want to play around with the threshold or even make the threshold user-tunable in your game’s settings.

  1. Create a side chain on your group bus before the fader.
  2. Open the Preset Browser window and create a new global parameter, range 0-1, initial value 0 (edit, used to say 1).
  3. Try setting the sidechain’s values as in the image below, but you can experiment.
  4. Right-click the volume on the group’s fader and click Add Automation. Click Add Curve at the bottom left and add a volume ramp. The Threshold works like this: anything above the right edge (-22.5dB in the example) will not cause the fader to dip. Once it crosses that threshold, it will ramp down till the incoming audio hits -35dB (for example) at which point the fader will be at -infinity dB.

EDIT: Step 5. Right-click on the parameter value (in red in the example image), Add Modulation, then add the side chain you created to the Input. Adjust the settings similar to what’s depicted in the image. A quick attack will keep the voice getting chopped at the beginning of incoming audio, and the longer release will tame down the jittery artifacts while it’s fading out through the threshold range.

1 Like

@magomusica This sounds really clever, I appreciate your insight! I was in the midst of seeing if I could turn the Compressor into an Expander somehow, but came back and saw your approach to this.

Do you have an example project (that your screenshots came from) that I can download to try out this effects setup? Just to make sure i’m doing it as illustrated.

EDIT: I tried to set it up like you show, but I can’t expand the area next to “Seek Speed” and I must be missing a step. Can you let me know what I’m missing or share the test project? :slight_smile:

Screen Shot 2022-08-12 at 2.14.05 PM
Screen Shot 2022-08-12 at 2.14.11 PM

Ah, forgot. Right click on the parameter’s value (in red) and add a modulator. Choose the sidechain you created.

1 Like

@magomusica AHA! That was the missing step indeed. I went back to an event with the parameter and did just that, and I think I’ve got it working as you describe. I’m finding it to be choppy/erratic on noisier recordings so it won’t substitute for actual noise reduction, but it might help in some cases where there the voice signal is a lot higher than the noise.

Again, thank you for sharing this recipe.

(Related to steps here: Is there any way for a sidechain to effect a parameter? - #2 by Bradgentle )

@magomusica One more peculiarity I wanted to check with you about: initially I got it working with close to your settings the other day, but when I restarted the project today, I found I had to change the “initial value” = “0” instead to get it to work and watch the “orange dot” react to the signal. I am not sure what else changed in the meantime, and my automation curve isn’t inversed, but I wonder if you have any idea offhand? I’m trying to wrap my head around the logic of it.
Screen Shot 2022-08-15 at 9.48.49 AM
Screen Shot 2022-08-15 at 9.50.18 AM

You’re right on the money. Not sure why I had it set to 1. I think it was because I was first trying to do it with the fader’s automation curve set the opposite direction. The reason it was still working for us both in the previous session with its default value set to 1 is because we both manually set the parameter’s active value to 0 instead of its default. When you reopen the session it sets parameters to their defaults.

Glad it’s working for you!

1 Like

AHA — yes that’s been confusing at times. Thanks for the sanity check and your help again. Do you wish FMOD persisted more states when reopening projects? I had a separate thread where I wondered about the collapse/expand state of certain elements. Bug? Collapsed effects and other modules don't remember their collapse state and always expand - #3 by torley-gallium

Actually it’s better that FMOD restores parameters to defaults each time you open. Otherwise you would not have discovered my default value mistake until you had your build running in the game engine!

1 Like

@magomusica Great point! In this case I should add that FMOD Studio crashed rather than an intentional quit ➜ reload, so it was a bit disorienting figuring out where I left off.