|
I've been working with Perry Cook's C++ synthesis toolkit, so this is not
Csound exactly. So first question: is there a more general mailing list
for questions related to software sound synthesis and related theoretical
issues (such as the recent loudness perception discussions, for example)?
Second question: In the course of working with this toolkit attempting
real-time synthesis, I've noticed that on my Linux Pentium platform, I've
noticed that floating point multiplications suddenly become a lot slower
when hitting the bottom-rail (~ 1E-43). This came up in the context of a
waveguide string synthesis, when once the wave decays to a certain point,
the performance drops and can no longer keep up.
So, I assume that the general question here is dealing with floating-point
exceptions. I assume that that once the multiplications bottom out, they
start generating exceptions (SIGFPE?), and that overhead is what is
causing the sudden slowdown.
>From a quick test, it seems that overflows also cause a slowdown, and
1./0. doesn't abort the program but generates a floating-point "Inf".
But the overflow and divide-by-zero doesn't matter, I think the main
issue for us is the undeflow. (By which, I mean the exponent becoming too
negative, not the mantissa).
So I imagine that something by default hooks
the SIGFPE but ignores it. Am I on the right track?
Ideally, I think it would be nice if somehow the coprocessor could be
programmed to just return 0 in these cases, without generating an
exception, but I would geuss that this is impossible. So failing, that,
can someone point me to some information about trapping floating-point
exceptions?
Larry
-- Larry Troxler -- lt@westnet.com -- Patterson, NY USA --
|