[chuck-users] feedback loop
signal.automatique at gmail.com
Sat Oct 1 04:17:22 EDT 2011
A limiter is a good idea in cases like this, but more as a emergency device.
If your feedback loop keeps building a limiter won't prevent the cause,
unless we set the limit so low that it'll also prevent the repeated echos
that we do want. It will still cause a unpleasant result as long as the
total amplification of the look is over 1.
What's odd here (at least to me) is that it still builds, despite the .8
factor in the loop. I have one theory about the cause; with a length of
200::ms the feedback of the delay will have a period of (1 / 200::ms = ) 5Hz
(plus one sample for the feedback). The signal used (being 250 Hz) is a
exact multiple of that. I think that would mean that the output at peaks
would build up to 1 (for the original signal) plus .8 of a peak for the
first iteration, plus .8 * .8 for the second, plus .8 ^ 3 for the third,
etc. That would be a finite number, but might be above ChucK's headroom.
This, BTW, is also exactly what I experienced with some of the build-in
reverbs; as those are based on networks of delay with feedback they'll
heavily amplify the signal at some frequencies. That's not much of a issue
with natural sounds like voice that fluctuate all the time, but often is
with synthetic sounds that stay at the same frequency for a longer time.
Look into whether that's not what you are seeing.
BTW, unrelated to this issue, but rather exciting to me is that you wrote
class MyDelay extends Delay
1::second => max;
...and that worked! It's correct, the language specs imply that it should
work, but for ages it didn't and the resultant class couldn't be chucked to
a input. Apparently now this works for you, which makes me wonder what
version of ChucK is being used here and how long it's been out. Did I miss a
memo? That's rather exciting.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the chuck-users