[chuck-users] Filter instability (Kassen)

Kassen signal.automatique at gmail.com
Thu Nov 12 16:07:36 EST 2009


Before I go off into the Z Plane (I often don't
> return from there with all my marbles, but usually
> with new insights, sort of like a peyote vision-
> quest),

Ah, I'll make a point of relating this next time somebody asks "what on
earth are these guys on?" about ChucK. It certainly explains a lot :-p.

> are you changing the filter parameters
> fairly rapidly in time?

I had that once, yes, but that was back before we had LPF. In those days we
had a piece of code somebody kindly posted that would turn a BiQuad into a
LPF. Sweeping that could certainly blow it up but to me that sounded
differently. That sounded more like one of those stove-lighters, except one
that's about 5 meters tall. This sounds more like somebody told your laptop
it's puppy died while somebody else is filling out some of it's cavities and
the laptop sees a need to express both feelings at once. The first was
probably a case of the signal getting stuck on one extreme while the second
is definitely bi-polar, clipped and with a fairly complex period (to my

I think this particular issue is independent of sweeping though. The example
code in the link ( http://electro-music.com/forum/viewtopic.php?t=37921 )
doesn't sweep. Last time I had it I wasn't doing any very extreme sweeping
either, more like random octave jumps every 16th note or so, stuff like;

//sounds nice with BlitSaw for acidic stuff when it behaves
//this does not look unreasonable to me
  my_osc.freq() * (1 + maybe + maybe + maybe + maybe) => my_LPF.freq;
  .25::beat => now;

> Even stable filters can behave unstable when you
> change the coefficients, especially repeated changes,
> like sweeps.
> I figured that, yes, but right now LPF and it's siblings do seem a bit out
of control here. For some combinations of Q and cutoff the things just
misbehave. The posted example should not lead to the kind of output value
Kijjaz measured; I count 14 digits before the decimal point... I'm not sure
exactly how loud that is but my guess is that there are trade embargoes on
the kind of technology that could play this back :-)

Thanks for your notes so far; I was hoping you'd help look into this as this
looks like it might get quite tricky. My big book on DSP here (in one of the
passages that I do understand) tells me that once we calculated filter
coefficients we should make sure that within the bit-depth that we are using
those will still lead to a stable filter despite the unavoidable rounding.
Now this book is a few years old and doesn't assume we'll have casual access
to double-floats at 64 bits. I'm not at all sure how realistic it is to
suspect this, though I would imagine that if that's what we are suffering
from especially non-modulated filters would suffer from it as those would
have the time for such a very small rounding error to lead to accumulation
of errors to get out of control?

(Who is way out of his depth)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20091112/79e28dde/attachment.htm>

More information about the chuck-users mailing list