[linux-audio-dev] Re: Fixing Freeverb and Denormals

Christian Schoenebeck schoenebeck at software-engineering.org
Sat Jan 22 14:17:28 UTC 2005


Es geschah am Freitag 21 Januar 2005 18:17 als Neil Klepeis schrieb:
> 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 have to admit that I have not yet looked on the freeverb code, but seeing 
that, I assume it's a pure C implementation.

I think for such an important piece like freeverb it might be worth to add 
architecture dependant assembly optimizations. E.g. with SSE(1) you simply 
have to change the SSE control register to get rid of the denormal problem. 
With that no denormal fixes for individual sample points are necessary 
anymore which definitely pays off in performance.

Es geschah am Samstag 22 Januar 2005 02:36 als Erik de Castro Lopo schrieb:
> There's never a good time to read up on C++
>
> Erik

lol

CU
Christian



More information about the Linux-audio-dev mailing list