iiwusynth-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[iiwusynth-devel] Unstable filter/reverb


From: Josh Green
Subject: [iiwusynth-devel] Unstable filter/reverb
Date: 13 Feb 2003 15:18:20 -0800

I'm currently trying to track down a couple synthesis bugs that I have
experienced from time to time. These 2 bugs may actually be related,
since they are reproduced in a similar manner.

Bug 1: The effect of this bug is loud unpredictable bursts of maximum
volume noise (sometimes lasting a half dozen seconds or more), making
this a rather critical bug - my ears have been murdered several times,
especially with headphones :(

I think this bug has to do with Reverb, but the filter is what triggers
it (causes out of range data to be put in reverb or something?). It is
somewhat easy to reproduce (using Swami), although sometimes the problem
eludes me:

Set reverb settings to (harsh reverb):
Room Size: 0.3
Damp: 0.6
Width: 40.0
Level 6.4

For a test instrument (perhaps a sample that maxes out the amplitude
range):
Set Filter Q to a pretty high level (> 70db)
Set Filter FC to very low value (< 150hz)
Turn up reverb effect
Set a moderate release time on the volume envelope

Set modulation envelope attack to 0.1 seconds or so and set "To Filter
FC" value to a real low value (-8000).

While playing notes, change Filter FC and Filter Q to different values.
Eventually you should get loud explosive sounds at different settings.
Make sure volume is turned down!

Once you find a sweet spot, you can confirm that it is Reverb by
disabling it (in the iiwusynth control dialog) loud burst immediately
stops, re-enabling it continues the onslaught.



Bug 2: Reverb process will suddenly get stuck consuming 100% CPU on my
machine (even after all notes off), this is terminal when running
SCHED_FIFO. I've tracked this down to the iiwu_comb_process macro in
src/iiwu_rev.c (changed it to a function to debug it). It appears that
the comb.buffer contains some nan values which I'm assuming cause FPU
exceptions and therefore consumes more CPU. My debugging was somewhat
inconclusive though, because reverb actually stopped working when I
changed these from macros to functions (strange). I enabled the FPU
exception checking, and it reported this repeatedly (after the CPU
consumption started):

iiwusynth: warning: FPE exception (before or in ??? Just starting up
???): Invalid operation

Which wasn't really what I expected. I thought it would occur after the
iiwu_revmodel_processmix() function. At least it seems to confirm that
it is FPU exception related.

To get this bug to occur, I modulate the Filter Q really fast (with
something like the above test case). This often causes similar loud
noises, and eventually gets stuck.


Hope you all can make sense of this, the Reverb stuff is a bit over my
head. Cheers.
        Josh Green





reply via email to

[Prev in Thread] Current Thread [Next in Thread]