My platform: macOS Catalina v10.15.5, Audacity v2.4.2
I’m new to Audacity (and sound engineering in general) but have been educating myself on best practices, specifically for the purposes of audiobook creation. As a programmer, I automatically gravitated towards the ability to apply a sequence of macros to a raw recording, to help streamline the standard steps I will be taking before diving into the detailed manual cleanup of a track. This wiki page was particularly helpful: https://wiki.audacityteam.org/wiki/Audiobook_Mastering.
Frustratingly, I cannot apply a macro to Noise Reduction, though with a few minor enhancements to Audacity or a new plug-in, I think this would be possible. I have read the forums and found people requesting “one-click” solutions. I understand that the complication is that Noise Reduction needs to get a noise profile from a specific section of the sample (room noise) before it can apply that saved profile to the rest of the sample. I believe this could be accomplished via a macro, if a minor change were made to the functionality of the Noise Reduction effect. I have two suggestions which would solve this problem:
Suggestion #1: Take the code behind the Noise Reduction “Get Noise Profile” button and copy it into new effect which just performs that step.
That would allow the user to automate noise reduction via a macro. The user would first manually select the room noise sample section, then run a Noise Reduction macro, consisting of the steps:
- Get Noise Profile: the new stand-alone effect I’m suggesting
- Select All
- Noise Reduction. As a side note, it’s frustrating that the only macro option for noise reduction is Use Preset “Factory Defaults”, which is a separate issue that warrants improvement. The user should be able to create and save presets, or select from predefined presets (i.e. Noise Reduction of the Beast), and use a preset in their macro.
I have found that I actually can use a macro to do the aforementioned steps, since running the Noise Reduction filter in a macro will first Get Noise Profile if one is not already in memory, and then running it again will apply the noise reduction using my most recent settings. That only works the first time it is performed within an Audacity instance, due to the noise profile being stuck in memory; every rerun of Noise Reduction only performs step 2, meaning I have to close and reopen Audacity between every run of my standard macro. That leads me to the second idea.
Suggestion #2: Create a new “Forget Noise Profile” effect plug-in.
If you don’t want to touch the code behind the built-in Noise Reduction effect then perhaps a new plug-in could be created which clears the previously stored noise profile from memory. That would allow the user to run a macro which uses the existing Noise Reduction effect twice; once to get the noise profile, the second time to apply it. As in the first use case, the user would first select a small section of room noise, then run a macro with these steps:
- Forget Noise Profile: the new plug-in I’m suggesting, which would clear the noise profile from memory (if there is one in memory, otherwise it would do nothing).
- Noise Reduction: running this when there is no stored noise profile automatically performs the Get Noise Profile action using the current selection.
- Select All
- Noise Reduction: running this when there is a stored stored noise profile automatically applies to profile to the selection using the most recent settings.
As a final thought, ACX standards require 0.5-1 seconds of silence at the beginning of a recording and 1-5 seconds at the end. Anyone who follows that standard practice could fully automate the Noise Reduction process by adding a Select Time step to the beginning of the Noise Reduction section of their macro chain with the options Start Time 1, End Time 2, Relative To Project End. I’d avoid starting at 0 (the absolute end) because you could pick up your bodily movement as you hit the stop button.