Hi Kassen,
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.
If I change the delay to 123::ms for example, I get pretty much the same result.
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.
Right ! If I remove the reverb, I get a simple echo effect, thus the 0.8 gain works as expected. So the reverb must act as a strong amplifier, even with low parameters. This problem you describe with reverbs + synthetic sound totally makes sense here.
BTW, unrelated to this issue, but rather exciting to me is that you wrote this;
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.
I'm using chuck 1.2.1.3 (dracula). As for this part of my code, I didn't think it would work either. Reading the doc, I was like "what? But I've never derived from a UGen before! And ChucK don't really have constructors right ?" But obviously everything went better than expected ... Tom