[linux-audio-dev] Fixing Freeverb and Denormals

Neil Klepeis nklepeis at sbcglobal.net
Fri Jan 21 17:17:43 UTC 2005


Hi all,

The denormal problem with freeverb/ardour on P-4's is killing me.

Since CMT plugin development seems to be a little stagnant,  I decided 
to take it into my own hands a bit, but I might need a little help from 
a kind someone out there.  Is there anyone who can give me a tip on 
proper syntax for changing the denormals.h file in freeverb (assuming 
this is where the problem lies)?

Details:

On this list and/or posts elsewhere I found that the denormals.h file 
for freeverb doesn't work too well with some newer gcc compilers; one 
recommendation was to exchange the first statement below with the second 
definition:

#define undenormalise(sample) if(((*(unsigned 
int*)&sample)&0x7f800000)==0) sample=0.0f

static inline float
undenormalise(volatile float s)
{
    s += 9.8607615E-32f;
    return s - 9.8607615E-32f;
}


I tried changing it out one-for-one, but.. no good.  Ardour still 
zombifies after reverb tails die out.   Maybe there is somewhere else 
that needs changing wrt denormals, or maybe I am just clueless :).

Anyway, I then tried using something like the following....but still no 
good, [ardour now doesn't zombify, it's just that freeverb sounds like 
@$!&].

#define static inline float undenormalise(volatile float s) { s += 
9.8607615E-32f; return s - 9.8607615E-32f; }

You can probably see that I have no idea what I'm doing, but this seems 
like it should be so _simple_.   Maybe now is the time to go read up on C++.

Thanks,

Neil





More information about the Linux-audio-dev mailing list