Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save MateusRodCosta/a10225eb132cdcb97d7c458526f93085 to your computer and use it in GitHub Desktop.
Save MateusRodCosta/a10225eb132cdcb97d7c458526f93085 to your computer and use it in GitHub Desktop.
An EasyEffects preset created for input devices (intended for Microphones). Please read the README.md.

Improved Microphone (Male voices, with Noise Reduction) EasyEffects preset

IMPORTANT: This preset has been DEPRECATED. A EasyEffects update changed syntax and broke this preset. This will not be fixed, users of this preset are recommended to migrate to @jtrv's preset based on this preset, which can be found here.

An EasyEffects preset created for input devices (intended for Microphones). Created with version 6.1.5.

Based on this article from Fedora Magazine, written by Paul W. Frields for PulseEffects. This preset follows most of the recommendations on the "Tips from a mix engineer" section plus adding Noise Reduction.

Please read the "Notes and troubleshoot" section below about non-male voices, and some details about Noise Reduction.

DISCLAIMER

I know basically NOTHING about audio, so this was mostly created following the recommendations of the Fedora Magazine article. Even after following the tips, I still had a bit of a small background noise, which is why I added Noise Reduction as an extra.

All of this improved my microphone (the microphone from one of those cheap smartphone headphones, which came with a Moto G), so I decided to create a preset which might be useful for others.

If you do know a lot more, please consider creating a better preset and sharing. If you don't, please read the Notes and troubleshooting section below for problems you might hit (mostly because I don't know much, so I probably won't be able to create defaults that work for everyone).

Notes and troubleshooting

Noise Reduction

On some of my recording testing I had a bit of problem with my voice, which I believe was related to the Noise Reduction plugin (either the plugin or its ordering among the other plugins), so I reordered the plugin to try and get it fixed. It seems to have solved the problem. if you do have some problems with your voice, consider first disabling this plugin (the Bypass button) or removing it altogether.

Non-male voices

The article recommends, in case you are fine with not using an Equalizer, to use a Filter instead. It recommends a high pass filter and says that you should use something between 80-100 Hz for male voices and something higher for female voices. Since I am male, and wanted to play it safe, I just set it to 80 Hz. If you don't have a male voice or just don't want to bother with figuring out how to make this plugin work, consider just disabling it (Bypass button) or removing it.

Deesser plugin

The Deesser plugin was the one I tested the least since I only added it just before deciding to share the preset, it apparently deals with the sound of the "s, z, t, and f" letters, according to the article. Since the article is in English, I assume it considers only the English sounds, so please check for the equivalent sounds or class of sounds in your language, if you are not using your microphone for English. So, consider disabling (Bypass button) and removing the plugin if it causes you trouble.

{
"input": {
"blocklist": [],
"compressor": {
"attack": 20.0,
"boost-amount": 6.0,
"boost-threshold": -72.0,
"hpf-frequency": 10.0,
"hpf-mode": "off",
"input-gain": 0.0,
"knee": -6.0,
"lpf-frequency": 20000.0,
"lpf-mode": "off",
"makeup": 0.0,
"mode": "Downward",
"output-gain": 0.0,
"ratio": 4.0,
"release": 100.0,
"release-threshold": -120.0,
"sidechain": {
"lookahead": 0.0,
"mode": "RMS",
"preamp": 0.0,
"reactivity": 10.0,
"source": "Middle",
"type": "Feed-forward"
},
"threshold": -12.0
},
"deesser": {
"detection": "RMS",
"f1-freq": 6000.0,
"f1-level": 0.0,
"f2-freq": 4500.0,
"f2-level": 12.0,
"f2-q": 1.0,
"input-gain": 0.0,
"laxity": 15,
"makeup": 0.0,
"mode": "Wide",
"output-gain": 0.0,
"ratio": 3.0,
"sc-listen": false,
"threshold": -18.0
},
"filter": {
"frequency": 80.0,
"inertia": 20.0,
"input-gain": 0.0,
"mode": "12dB/oct Highpass",
"output-gain": 0.0,
"resonance": -3.0
},
"gate": {
"attack": 5.0,
"detection": "RMS",
"input-gain": 0.0,
"knee": 9.0,
"makeup": 0.0,
"output-gain": 0.0,
"range": -12.0,
"ratio": 2.0,
"release": 100.0,
"stereo-link": "Average",
"threshold": -18.0
},
"limiter": {
"alr": false,
"alr-attack": 5.0,
"alr-knee": 0.0,
"alr-release": 50.0,
"attack": 5.0,
"dithering": "None",
"external-sidechain": false,
"gain-boost": true,
"input-gain": 0.0,
"lookahead": 5.0,
"mode": "Herm Thin",
"output-gain": 0.0,
"oversampling": "None",
"release": 5.0,
"sidechain-preamp": 0.0,
"stereo-link": 100.0,
"threshold": -1.0
},
"plugins_order": [
"gate",
"compressor",
"filter",
"deesser",
"rnnoise",
"limiter"
],
"rnnoise": {
"input-gain": 0.0,
"model-path": "",
"output-gain": 0.0
}
}
}
@bbigras
Copy link

bbigras commented Aug 23, 2022

image

with EasyEffects 6.2.8

@jtrv
Copy link

jtrv commented Sep 1, 2022

@bbigras It looks like the newest update contained breaking changes to the config format for the gate filter.

I edited the gate filter in the GUI according to the mentioned article and saved it to get a corrected config. I've added the diff below, hopefully this should work as intended:

--- a/.config/easyeffects/input/male-voice-noise-reduction.json
+++ b/.config/easyeffects/input/male-voice-noise-reduction.json
@@ -5,6 +5,7 @@
             "attack": 20.0,
             "boost-amount": 6.0,
             "boost-threshold": -72.0,
+            "bypass": false,
             "hpf-frequency": 10.0,
             "hpf-mode": "off",
             "input-gain": 0.0,
@@ -28,6 +29,7 @@
             "threshold": -12.0
         },
         "deesser": {
+            "bypass": false,
             "detection": "RMS",
             "f1-freq": 6000.0,
             "f1-level": 0.0,
@@ -44,6 +46,7 @@
             "threshold": -18.0
         },
         "filter": {
+            "bypass": false,
             "frequency": 80.0,
             "inertia": 20.0,
             "input-gain": 0.0,
@@ -53,16 +56,29 @@
         },
         "gate": {
             "attack": 5.0,
-            "detection": "RMS",
+            "bypass": false,
+            "curve-threshold": -24.0,
+            "curve-zone": -6.0,
+            "hpf-frequency": 10.0,
+            "hpf-mode": "off",
+            "hysteresis": false,
+            "hysteresis-threshold": -12.0,
+            "hysteresis-zone": -6.0,
             "input-gain": 0.0,
-            "knee": 9.0,
+            "lpf-frequency": 20000.0,
+            "lpf-mode": "off",
             "makeup": 0.0,
             "output-gain": 0.0,
-            "range": -12.0,
-            "ratio": 2.0,
+            "reduction": -12.0,
             "release": 100.0,
-            "stereo-link": "Average",
-            "threshold": -18.0
+            "sidechain": {
+                "input": "Internal",
+                "lookahead": 0.0,
+                "mode": "RMS",
+                "preamp": 0.0,
+                "reactivity": 10.0,
+                "source": "Middle"
+            }
         },
         "limiter": {
             "alr": false,
@@ -70,6 +86,7 @@
             "alr-knee": 0.0,
             "alr-release": 50.0,
             "attack": 5.0,
+            "bypass": false,
             "dithering": "None",
             "external-sidechain": false,
             "gain-boost": true,
@@ -92,6 +109,7 @@
             "limiter"
         ],
         "rnnoise": {
+            "bypass": false,
             "input-gain": 0.0,
             "model-path": "",
             "output-gain": 0.0

Disclaimer: I am by no means an expert, I tried my best based on what I've read and this is likely flawed. However it works well enough according to my ears.

@sysoev-dev
Copy link

@JacobTravers
Hello! I'm new, can you share the full file?

@jtrv
Copy link

jtrv commented Sep 29, 2022

Sure! I would diff it against the gist above to see what additional changes I made. You probably have a different mic/placement/etc, so you might want to make some additional adjustments for your specific setup.

{
    "input": {
        "blocklist": [],
        "compressor": {
            "attack": 20.0,
            "boost-amount": 6.0,
            "boost-threshold": -72.0,
            "bypass": false,
            "hpf-frequency": 10.0,
            "hpf-mode": "off",
            "input-gain": 0.0,
            "knee": -6.0,
            "lpf-frequency": 20000.0,
            "lpf-mode": "off",
            "makeup": 0.0,
            "mode": "Downward",
            "output-gain": 0.0,
            "ratio": 4.0,
            "release": 100.0,
            "release-threshold": -120.0,
            "sidechain": {
                "lookahead": 0.0,
                "mode": "RMS",
                "preamp": 0.0,
                "reactivity": 10.0,
                "source": "Middle",
                "type": "Feed-forward"
            },
            "threshold": -12.0
        },
        "deesser": {
            "bypass": false,
            "detection": "RMS",
            "f1-freq": 6000.0,
            "f1-level": 0.0,
            "f2-freq": 4500.0,
            "f2-level": 12.0,
            "f2-q": 1.0,
            "input-gain": 0.0,
            "laxity": 15,
            "makeup": 0.0,
            "mode": "Wide",
            "output-gain": 0.0,
            "ratio": 3.0,
            "sc-listen": false,
            "threshold": -18.0
        },
        "filter": {
            "bypass": false,
            "frequency": 80.0,
            "inertia": 20.0,
            "input-gain": 0.0,
            "mode": "12dB/oct Highpass",
            "output-gain": 0.0,
            "resonance": -3.0
        },
        "gate": {
            "attack": 5.0,
            "bypass": false,
            "curve-threshold": -24.0,
            "curve-zone": -6.0,
            "hpf-frequency": 10.0,
            "hpf-mode": "off",
            "hysteresis": false,
            "hysteresis-threshold": -12.0,
            "hysteresis-zone": -6.0,
            "input-gain": 0.0,
            "lpf-frequency": 20000.0,
            "lpf-mode": "off",
            "makeup": 0.0,
            "output-gain": 0.0,
            "reduction": 0.0,
            "release": 100.0,
            "sidechain": {
                "input": "Internal",
                "lookahead": 0.0,
                "mode": "RMS",
                "preamp": 0.0,
                "reactivity": 10.0,
                "source": "Middle"
            }
        },
        "limiter": {
            "alr": false,
            "alr-attack": 5.0,
            "alr-knee": 0.0,
            "alr-release": 50.0,
            "attack": 5.0,
            "bypass": false,
            "dithering": "None",
            "external-sidechain": false,
            "gain-boost": true,
            "input-gain": 0.0,
            "lookahead": 5.0,
            "mode": "Herm Thin",
            "output-gain": 0.0,
            "oversampling": "None",
            "release": 5.0,
            "sidechain-preamp": 0.0,
            "stereo-link": 100.0,
            "threshold": -1.0
        },
        "plugins_order": [
            "gate",
            "compressor",
            "filter",
            "deesser",
            "rnnoise",
            "limiter"
        ],
        "rnnoise": {
            "bypass": false,
            "input-gain": 0.0,
            "model-path": "",
            "output-gain": 0.0
        }
    }
}

@sysoev-dev
Copy link

@JacobTravers
Thank you very much!

@jkemp814
Copy link

Great work on this input. However, I'm getting an identical error message as the OP using the latest EasyEffects on Fedora Silverblue 37. Is there anything that can be done to stop the error?

@jtrv
Copy link

jtrv commented Feb 21, 2023

@jkemp814 the steps above should work, if not and you are getting the same error, I would manually create a preset with the effect mentioned in the error (in this case gate) and then compare your json with the newly created one to see what's missing.

@MateusRodCosta
Copy link
Author

I'm looking into adapting this to newer versions of EasyEffect, can't promise an ETA yet though.

@nalakawula
Copy link

Nice example, realy help me a lot. Kudos!

@golgor
Copy link

golgor commented Apr 26, 2023

Nice example, thanks a lot. I would never have the energy or competence to do something like this as a complete sound noob. Way better than my try. :)

@victorsv91
Copy link

victorsv91 commented Jul 4, 2023

Ainda utiliza o EasyEffects?
E funcionária com a versão mais recente?

@jtrv
Copy link

jtrv commented Jul 4, 2023

This is my current config:
https://github.com/jtrv/.cfg/blob/morpheus/.config/easyeffects/input/fifine_male_voice_noise_reduction.json
I'm also using speex with voice detection at the end of the chain, it seems to work well in conjunction with rnnoise.

@Goosegit11
Copy link

Goosegit11 commented Sep 27, 2023

When trying to load your latest preset:

(easyeffects:8704): GLib-GIO-WARNING **: 22:27:54.596: g_settings_set_value: value for key 'mode' in schema 'com.github.wwmm.easyeffects.filter' is outside of valid range

The GUI did not show the error, so I had to run it from the terminal.

easyeffects 7.1.0-1
Arch Linux

@Goosegit11
Copy link

Goosegit11 commented Sep 27, 2023

I deleted filter#0 section, after that the error about Wrong format started to appear in GUI.

I removed the filter from plugins_order and the preset loaded.

@starcraft66
Copy link

@jtrv just tried your config and my friends told me they can hear me amazingly. Thanks

@MateusRodCosta
Copy link
Author

MateusRodCosta commented Feb 11, 2024

Hey everybody, thanks for the interest in this preset but I haven't used it nor EasyEffects in a long time. That's why it broke at some point and I didn't fix it.
I will probably update this gist with a deprecation notice later, so going forwards consider using the preset by @jtrv linked a few comments above.

@jtrv If I may suggest, could you also make your preset available in a gist instead of only inside your config backup repo? This would make it a bit easier for others to find it and I could link it as a replacement in an easier way.
This also would allow for a README.md with some info about the preset.

Anyway, this preset wouldn't be possible without the Fedora Magazine article saying what and how to tweak the audio with EasyEffects, so many thanks to the article author and his background with audio!

@jtrv
Copy link

jtrv commented Feb 12, 2024

No problem, thank you for sharing this original configuration @MateusRodCosta.
Here is my gist, feel free to deprecate yours.

@Goosegit11
Copy link

@jtrv I tried your config and it's really great, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment