Dynamic Audio Normalizer

Submit portable freeware that you find here. It helps if you include information like description, extraction instruction, Unicode support, whether it writes to the registry, and so on.
Message
Author
User avatar
webfork
Posts: 9869
Joined: Wed Apr 11, 2007 8:06 pm
Location: US, Texas
Contact:

Re: Dynamic Audio Normalizer

#16 Post by webfork » Sun Sep 21, 2014 10:33 am

Do you have a batch method for conversion yet? Or do I need to get the VST into something like Wavosaur and go that route?

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#17 Post by deathcubek » Sun Sep 21, 2014 2:28 pm

webfork wrote:Do you have a batch method for conversion yet?
You can do, for example, something like this:

Code: Select all

@echo off
for %%f in (*.wav) do (
   DynamicAudioNormalizerCLI.exe -i "%%~f" -o "%%~nf.normalized.wav"
)
webfork wrote:Or do I need to get the VST into something like Wavosaur and go that route?
That's also possible, of course.

Though I think that Wavosaur currently is a bad choice for VST processing (see here for details!).

Instead, I'd recommend Audacity (version 2.0.6+) for this task:
http://gaclrecords.org.uk/win-nightly/

Another very good freeware audio editor with VST support is Acoustica Basic Edition:
http://acondigital.com/downloads/
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

User avatar
Midas
Posts: 5904
Joined: Mon Dec 07, 2009 7:09 am
Location: Sol3

Re: Dynamic Audio Normalizer

#18 Post by Midas » Mon Sep 22, 2014 2:34 am

deathcubek wrote:
webfork wrote:Or do I need to get the VST into something like Wavosaur and go that route?
That's also possible, of course.

Though I think that Wavosaur currently is a bad choice for VST processing (see here for details!).
  • :?: As he's somewhat of a regular here at TPFC, has the Wavosaur developer been informed of this issue?

    EDIT: I did it, just now... :|

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#19 Post by deathcubek » Mon Sep 22, 2014 5:39 am

Midas wrote:
deathcubek wrote:
webfork wrote:Or do I need to get the VST into something like Wavosaur and go that route?
That's also possible, of course.

Though I think that Wavosaur currently is a bad choice for VST processing (see here for details!).
:?: As he's somewhat of a regular here at TPFC, has the Wavosaur developer been informed of this issue?
Yes. I posted the problem in the Wavosaur forum several weeks ago. But no reaction thus far... :|
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#20 Post by deathcubek » Sun Nov 02, 2014 2:20 pm

Dynamic Audio Normalizer v2.07:
https://github.com/lordmulder/DynamicAu ... s/tag/2.07
Changelog:
  • Implemented .NET API → Dynamic Audio Normalizer can be used in, e .g., C#-based applications
  • Implemented JNI API → Dynamic Audio Normalizer can be used in Java-based applications
  • Implemented Pascal API → Dynamic Audio Normalizer can be used in Pascal-based applications
  • Core library: Added new getConfiguration() API to retrieve the active configuration params
  • Core library: Fixed a bug that caused the gain factors to not progress as "smoothly" as intended
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

User avatar
webfork
Posts: 9869
Joined: Wed Apr 11, 2007 8:06 pm
Location: US, Texas
Contact:

Re: Dynamic Audio Normalizer

#21 Post by webfork » Thu Nov 13, 2014 11:52 am

deathcubek wrote:Which behavior is "better" (or "worse") highly depends on what you are trying to achieve, of course :)
Just in terms of voice conversion, I actually preferred the output from your program over Levelator. Any chance you've got something in the way of a basic front-end on the way?

Edit: just ran a test on the latest version of Dynamic Audio Normalizer and it didn't seem to have any impact on a voice recording (sounds the same). Did something change?

Edit 2: from more testing, it looks like there were several volume changes throughout the file. Starts out quiet, then loud, then quiet again. The last time I tested this I recall it sounding really sharp throughout so maybe my files are different? Will keep testing.

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#22 Post by deathcubek » Sun Nov 16, 2014 12:11 pm

webfork wrote:
deathcubek wrote:Which behavior is "better" (or "worse") highly depends on what you are trying to achieve, of course :)
Just in terms of voice conversion, I actually preferred the output from your program over Levelator. Any chance you've got something in the way of a basic front-end on the way?
We have CLI (Command-Line) front-end, a SoX (Sound eXchange) front-end, a VST (Virtual Studio Technology) front-end, as well as a Winamp front-end.

In addition to that, the "core" library provides bindings for C++, C99, Java, Microsoft.NET and Pascal/Delphi. What more do you need at this point :?:
webfork wrote:Edit: just ran a test on the latest version of Dynamic Audio Normalizer and it didn't seem to have any impact on a voice recording (sounds the same). Did something change?
I don't know how your original recording looks. But the whole purpose of this tool is increasing the volume in "quiet" parts, in order to harmonize these parts with the "loud" parts. In the "loud" parts we cannot increase the volume any further. At least not without applying a "real" compression (i.e. cut off the signal peaks) - which is what we want to avoid. Furthermore, the gain factors are smoothed by a Gaussian kernel in order to avoid fast fluctuations of the gain - which could result in unwanted "pumping" effect. Instead, we ensure that the gain adapts smoothly/continuously and early/slowly. And this means that a "quiet" section needs to have a certain minimum length before it will be effected.

So, if your original audio is already "loud" all the way, or if you only have very short "quiet" sections that are surrounded by "loud" sections, then there simply is nothing to be changed! Of course you could make the Normalizer adapt more quickly by adjusting the "--gauss-size" parameter. If you think the default of 31 adapts to slowly, try 21 or 11. Of course, the lower you set this, the higher the chance the there will be noticeable "pumping". That's why the default was chosen with a certain "safety margin".
webfork wrote:Edit 2: from more testing, it looks like there were several volume changes throughout the file. Starts out quiet, then loud, then quiet again. The last time I tested this I recall it sounding really sharp throughout so maybe my files are different? Will keep testing.
Well, the gain factor starts at ×1.0 and then adapts to the content. So it all depends on your input :wink:

Please consider this artificial example file:
http://i.imgur.com/U0yD05l.png
(upper view is original input, lower view is processed waveform)

The Gain factors look like this for the above example:
http://i.imgur.com/oymAHpT.png
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#23 Post by deathcubek » Wed Jan 21, 2015 11:51 am

Dynamic Audio Normalizer v2.08:
https://github.com/lordmulder/DynamicAu ... s/tag/2.08
Changelog:
  • CLI front-end: Very short files (shorter than Gaussian window size) are now handled properly
  • Core library: Fixed case when flushBuffer() is called before internal buffer is filled entirely
  • Core library: Workaround for the FMA3 bug in the Microsoft Visual C++ 2013 runtime libraries
  • Makefile: Various improvements
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#24 Post by deathcubek » Wed Aug 03, 2016 11:37 am

After all, here is a new TEST version:
https://sourceforge.net/projects/mulder ... r/Testing/

This update fixes a problem with the "pre-filling" code, i.e. generation of the samples before the first "real" input sample. The old code could result in clipping at the beginning of the file under certain circumstances.

Example:
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

shnbwmn
Posts: 265
Joined: Sat Jul 11, 2015 12:59 am

Re: Dynamic Audio Normalizer

#25 Post by shnbwmn » Wed Aug 03, 2016 2:05 pm

Would this work as a plugin in Foobar2000? I'm not familiar with Foobar's compatibility with Winamp plugins.
Last edited by shnbwmn on Wed Aug 03, 2016 2:49 pm, edited 1 time in total.

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#26 Post by deathcubek » Wed Aug 03, 2016 2:14 pm

shnbwmn wrote:Would this work as a plugin in Foobar2000? I'm not familiar with Foobar's compability with Winamp plugins.
In theroy, yes. There exists a component for Foobar2000 to load Winamp DSP plug-in's:
http://wiki.hydrogenaud.io/index.php?ti ... sp_winamp)

In practice, I have no idea, because I haven't tried.

Also, because Foobar2000 processes audio samples as flaoting-point, just like the DynAudNorm library does internally, but Winamp uses integer samples, you would end up with four conversions!

(You actually want a "native" Foobar2000 component)
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

Specular
Posts: 434
Joined: Sun Feb 16, 2014 10:54 pm

Re: Dynamic Audio Normalizer

#27 Post by Specular » Wed Aug 03, 2016 8:36 pm

I use this in ffmpeg as a filter, works great. Only option I didn't hear a difference with was the n option ('Enable channels coupling'). Though perhaps normalizing each channel independently makes less of a difference than expected.

User avatar
Andrew Lee
Posts: 2633
Joined: Sat Feb 04, 2006 9:19 am
Contact:

Re: Dynamic Audio Normalizer

#28 Post by Andrew Lee » Sat Sep 10, 2016 1:43 pm

webfork wrote:Do you have a batch method for conversion yet?
I have updated Media Cookbook to include this method of audio volume normalization (recipe: Normalize volume of audio files dynamically).

I am interested because I download talks from YouTube in audio form and normalize the volume before moving them to my smartphone for offline listening.

Some of them have short ads in-between that are louder than the rest of the show, causing mp3gain/aacgain to be less effective at making the normalized audio as loud as they can be. This algorithm appears to solve the problem on the audio files that I have tried so far.

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#29 Post by deathcubek » Mon Sep 12, 2016 10:57 am

Specular wrote:I use this in ffmpeg as a filter, works great. Only option I didn't hear a difference with was the n option ('Enable channels coupling'). Though perhaps normalizing each channel independently makes less of a difference than expected.
It makes the more difference, the more the original volumes of those channels differ. And, because the filter uses a pretty large window (by default), if the channels only differ for a short moment, it won't have any effect. Those very short volume variations simply get smoothed away by the Gaussian kernel. You will see a difference, hopefully, if one channel is louder/quieter than the other one in average, e.g. badly balanced recording. Or when there is a longer quiet passage in one channel, but not the other.

Andrew Lee wrote:
webfork wrote:Do you have a batch method for conversion yet?
I have updated Media Cookbook to include this method of audio volume normalization (recipe: Normalize volume of audio files dynamically).
Cool 8)
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

User avatar
deathcubek
Posts: 208
Joined: Thu Jul 14, 2011 9:42 am
Location: Island of Lost Minds

Re: Dynamic Audio Normalizer

#30 Post by deathcubek » Fri Feb 10, 2017 2:19 pm

After all, here is a new TEST version:
https://sourceforge.net/projects/mulder ... r/Testing/
Last edited by deathcubek on Fri Apr 14, 2017 5:53 pm, edited 1 time in total.
„One of my most productive days was throwing away 1,000 lines of code“ – Ken Thompson

Dreamatorium | In Search Of The Disembodied Sounds | Best Regards!

Post Reply