home
home
 
audio plugins
audio plugins
 
introduction 
THD 
endorphin 
dominion 
the fish fillets 
normalizer 
resources
resources
 
visitors
visitors
 
free audio plugins
normalizer
denormals eleminator


Ever heard of the denormalisation problem?

  • Using a Pentium (IV) processor and got problems with sudden load spikes?

  • Does a certain plugin consume all available CPU power whenever there's NO signal coming in (or out)?

I've co-written an article for the German KEYBOARDS magazine (issue 08/02) about 'denormal' numbers and their meaning for floating-point based audio processing on the PC.
Additionally, I've written a small plugin for the mag that should cancel out those numbers and ensure a trouble-free sequencing of your songs.
Some companies have already provided with updates of their plugins for the P4.
But denormalisation still seems to be an issue with some plugins, that's why I've put the normalizer up here as well.
Some people even seem to have problems on the Mac with plugins causing load spikes due to denormal numbers, so this is not a platform-specific problem.
For people writing own plugins, the normalizer might be helpful for troubleshooting... ;)


A brief overview on the topic

Denormalisation is an issue with some audio hosts that don't switch off the plugin's audio task when the song is stopped or a track contains silence (or with instruments: no key is pressed while a sound decays).

The problem happens when the CPU (precisely: the floating point unit (FPU) inside of it) detects extremely small numbers and wishes to process them with the same precision as usual. Then it switches into 'denormal' mode which is another way of representing small floating point numbers with the available bit range.
Converting between the two states takes a lot of time for the FPU and thus might cause heavy load jumps.

Some algorithm such as delay lines and filters are prone to denormalisation as they work with feedback structures.
Here, if an impulse is followed by absolute silence, the resulting signal gets smaller and smaller but in theory, it can never reach zero.
In practice, there is an internal threshold of the FPU that switches to denormal mode to carry on processing those small numbers (which might not be of any use for proper operation).
Currently, the Pentium 4 processor seems highly addicted to denormalisation. It turned out that its threshold is actually very much higher than of former Pentium types.
Plugins that used to work fine with older CPUs might slow down the entire system when used with a P4.
But other FPUs might as well suffer from denormalisation issues.

Most developers are aware of denormalisation although the methods to avoid it are many. Some algorithms ask for the current FPU status from time to time, reacting to it by changing small values to zero.
Other developers prefer adding an an extra signal to the audio which is carried along the entire process of the plugin, thereby forcing it to remain above the internal threshold.
Should the input become silent, the additional noise will still keep the whole thing from denormalizing.
All the digitalfishphones plugins actually work this way, and so does the normalizer.



normalizer PC (Win) version (size 89kB):





normalizer MacOS9 version (size 167kB):




Installation:
Unzip the archive, copy the plugin file into your '\vstplugins' folder and (re)start the host program. It should find the normalizer as a new insert plugin.

Normalizer usage:
Fill the first insert slot with this plugin. Put the plugin that's supposed to cause denormalisation into the second slot.

The normalizer plugin lets you choose between two methods: adding AC or DC signal.
Here, AC is a square wave ringing at the nyquist frequency (half the sampling rate, e.g. 22.05kHz).
Choose this method whenever the following plugin does not apply intensive low-pass filtering, thereby eleminating our injection noise.
In that case, the DC method could be used. It just adds a static offset to the signal. This DC level (when set pretty low) should be no issue with further processing of the resulting output.

No matter which method you choose from, the noise floor should be lower than the lowest value that your D/A converter can handle.
And in fact, a level of about -300 to -200dB is usually enough. Sometimes you can even go much lower.

You will have to experiment with the proper level because the internal working of the faulty plugin is most certainly unknown to us.
The more stages it involves, the more complex the whole thing is.

Happy normalizing :)

If the download link does not work properly, you should try using 'save as...' in you browser context menu.
In case of problems, please send an email to sascha@digitalfishphones.com



The MacOS version has been compiled by Urs Heckmann (www.u-he.com).






w w w . d i g i t a l f i s h p h o n e s . c o m
copyright © 2016 Sascha Eversmeier
VST is a registered trademark of Steinberg Media Technologies AG.
All other copyrighted trademarks belong to their respective owners.