[Ardour-Users] clarification needed: denormal handling

Jörn Nettingsmeier nettings at stackingdwarves.net
Wed Oct 7 04:07:56 PDT 2009

Thomas Vecchione wrote:
> Howdy Folks-


here's the excerpt. i'd appreciate some verification of the
introduction, and clarification about FTZ/DAZ mode (see below).

> What is a denormal?
> A denormal is a floating-point value that is too close to zero to
> allow its representation in the "normal" floating-point binary
> format. The processor attempts to maintain precision, at the expense
> of CPU time. Lots of CPU time, in fact. Processing denormals takes
> hundreds of times longer than processing normal floating-point
> values. When the CPU goes into denormal mode, things slow to a crawl.
> Since audio machines are typically used at close to maximum CPU load,
> denormals will lead to overloading, causing dropouts or even crashes.
> If you're sending a rocket to Mars, it's very important to maintain
> precision. This is the assumption made by some CPU designers. For
> audio, when values are very close to zero, processing speed is more
> important than precision. There are several techniques that may be
> used to keep the CPU out of denormal mode, trading off precision for
> speed.
> In audio processing, denormals are frequently produced by reverb
> tails and similar operations involving highly attenuated feedback
> loops. Problems usually arise when a sound is decaying to silence.
> There are a number of ways to avoid denormals and thus
> non-deterministic CPU overloading: Use DC bias
> Adds a constant, very small value to each sample to keep it out of
> the denormal range (known to electrical engineers as a "DC" or
> "direct curent" offset, as opposed to the alternating current that
> makes up the actual sound in the signal). A DC component as such is
> inaudible. However, some DSP operations are sensitive to DC offsets
> and might behave slightly odd [FIXME: good example?]. But since the
> amount of DC used here is very small, any artifacts will usually be
> negligible in practice. No processor handling
> Don't do anything about denormals (at the risk of overloading theCPU
> and causing dropouts if/when they occur). Use FlushToZero Use
> DenormalsAreZero Use FlushToZero/DenormalsAreZero
> [FIXME: the difference between FTZ and DAZ seems to be very subtle
> indeed (scroll down a bit). Maybe a developer can explain? And what
> is the reason that such intricacies are exposed to the user? IIUC,
> any processor that does FTZ is also capable of DAZ. Are there any
> reasons not to enable either or both of these by default?]



Jörn Nettingsmeier

Meister für Veranstaltungstechnik

Audio and event engineer
Ambisonic surround recordings

+49 177 7937487

More information about the Ardour-Users mailing list