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 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.
Create a side chain on your group bus before the fader.
Open the Preset Browser window and create a new global parameter, range 0-1, initial value 0 (edit, used to say 1).
Try setting the sidechain’s values as in the image below, but you can experiment.
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.
@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?
@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.
@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.
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.
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!
@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.
Jumping in here 3 years later to say thanks! This is a brilliant solution. I wanted to fade in environment-specific sounds when players talk via voice-chat in a game, with the volume of those sounds matching the contours of their speech. Modulating a parameter with a sidechain is perfect - and something I didn’t realize FMOD could do.
I experimented a lot, and - it seems like you can only modulate a parameter with a sidechain as a global parameter on a mixer group? I know it has to be a global parameter, but I couldn’t get the sidechain to show up as modulation source on an event - just at the mixer level.
The value of a global parameter can only be modulated in the mixer, and the value of a local parameter can only be modulated in an event instance. Thus, it is possible to use a sidechain modulator to control the value of a parameter in an event instance, but you have to use a local parameter rather than a global parameter; and, because a local parameter can have a different value in every event instance that features that local parameter, both the sidehain and the sidechain modulator have to be within the event as well.