On Fri, Oct 14, 2005 at 09:00:37PM +0200, [EMAIL PROTECTED] wrote:

> I just don't fully understand the floating-point precission part. If numbers
> from binary 0.1 to 1.0 are represented using 24 bits (sign bit + mantissa, I
> think the implicit 1 does not count),

It does.

> and the numbers from binary 0.01 to
> 0.1 also have 24 bits of precision, and so on for 0.001..0.01, etc. wouldn't
> that mean we have a higher resolution?

Only for small signal values, so not really. Don't assume that small signals
are centered around zero - they usually are not. Using floating point only
means you have to worry less about absolute levels during the processing. 

> Then I also fail to see why it's bad for overflows to ocurr in fixed point.
> Those signals (above 0dB FS) would clip on the hardware anyway, and are
> expected to do so, since they were either badly recorded or amplified.

They may be clipped on the hardware IFF you give the hardware more bits than
it actually uses, otherwise the hardware just can't know if they have to be
clipped or not. But normally you just can't do that, so don't count on automatic
clipping. Worse, unless you are using some specialised DSP chips that can do
clipping in the ALU, implementing clipping in fixed point software usually leads
to an immense waste of processing power. And if you use fixed point and do not 
have
any provision for clipping, then any overflows will result in very high 
amplitude
spikes that are really excellent for destroying your speakers, in particar the 
HF
parts.

The bottom line is really quite simple: if your app is to run on a PC, use 
floats.
There are some very good reasons why floats were chosen as JACK's default audio
type.

On the other hand, don't count on FP or even double precision to make for 
example
marginally stable IIR filters stable. Sometimes it works. Sometimes it appears 
to
work but your filter (or rather your speakers) may still explode for some 
inputs.

-- 
FA

Reply via email to