Hello, I hope this is the right place for this post.
I was wondering if anyone knows of a way to add a noise gate and/or audio filter to my microphone at the system level? I use Linux & Windows.
I am happy with Discord’s audio processing but I really wish I could achieve something similar when using different chat applications such as Jitsi, Zoom, Google Hangouts… It seems dumb that I have to rely on the specific application for my audio processing when it could be done in an application independent manner. Maybe I’m just missing some key words for my search?
For Linux yes, I do this with Jack and use KxStudio’s Carla as a patch bay. To make it persistent I use a small boot script that I run from a systemd service which launches jack and carla in headless mode.
I have two VMs running, both using pulse audio to route audio into jack (not the best, I know but Qemu’s audio support is fairly bad). Because windows is a guest VM, it also gets processed the same way, which is why you see a “windows” input in there.
I also have virtual devices for programs that use voice, like discord, zoom, teamspeak, etc… which go through the voice_apps pipeline, so I clean up incoming audio from those programs.
I do the same for my mic (system up top) which is then fed into those programs (voice_out).
The third line and mess at the bottom is either a straight passthrough or if I hit a button on my midi switch thingy I made, re-routes the system audio through the same voice filtering, great for watching stuff on youtube that’s been poorly mastered.
I thought it might be worth writing an explicit guide, since setting up for the first time gave me a headache. Installation guide for Linux only at this time. I used manjaro-gnome but this guide should work independent of distro.
Install Jack2. My first mistake was assuming that the Jack1 installed with manjaro-gnome was the jack that I was looking for. download link
Configure Jack2 utilizing the guide on the Arch wiki. The " A shell-based example setup" worked for me with a Blue Snowflake USB, my only microphone. arch wiki guide link
Confirm Jack2 is up and running by locating Jack sink (PulseAudio JACK Sink) as a audio output device. Note that when you first start Jack2 your previous audio out may stop. This means that Jack2 is taking control of your audio out, simply choose the Jack sink to resume playing audio.
Start Carla. Your patchbay should look something like
If not, something is wrong with your Jack2 configuration
Find an LV2 plugin for noise gating. I used abGate download link with a simple make & make install. Works well, but perhaps there are more options. This is the only component that would be trick in a windows install.
Restart Carla. Add the abGate plugin, so that your patchbay looks something like
so now the noise gate is applied to your microphone.
Personalize the noise gate settings for your setup. In the rack, turn the switch slider any amount to enable the gate. Turn the threshold to a value that works for you. Here’s my config,
Listen to your self. Connect your output to the playback temporarily and talk with headphones connected to see how the gate impacts your noise levels in real time, e.g.
then simply draw the same connection over an existing connection to remove it. You could also create audio files with something like audacity for detailed comparison.
If you are on windows, voicemeeter bannana or regular voicemeeter are pretty good. It is a virtual soundboard, which takes some time to get used because you can’t really see how the virtual cables connect as with a physical one
There’s a bunch of videos on youtube, but I really liked this guy’s stuff
If you are trying to separate your outputs, a audio mixer is definitely something to look into
I wasn’t really satisfied with the Carla configuration (much more complexity than I needed) and recently stumbled upon pulse effects. I find this much easier to play with and is at a similar complexity level as voicemeeter mentioned above.