[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-
http://vm-nice.stackingdwarves.net:8888/ardour-en/8-ARDOUR/289-ARDOUR/298-ARDOUR/327-ARDOUR.html
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?]
thanks,
jörn
--
Jörn Nettingsmeier
Meister für Veranstaltungstechnik
Audio and event engineer
Ambisonic surround recordings
http://stackingdwarves.net
+49 177 7937487
More information about the Ardour-Users
mailing list