On Wed, Oct 09, 2013 at 05:45:33PM -0700, Spencer Salazar wrote:
Thanks for letting us know about this. After some investigation, it looks like a bug in the underlying C functions rand()/srand(), which are widely regarded to be pretty bad like this. Each of those STK ugens re-seeds rand() with the current time in seconds, via srand(), when the ugen is created. Evidently the first value out of rand() after this reseeding is not very random at all, and would explain what is happening here.* ChucK could probably do a better job working around those limitations, but new code should definitely use Math.random() and related functions.*
Sorry I have been a bit absent. I'd like to remind the list that we have some interesting properties to our noise instruments. As they all share the same random function you can reset the random seed periodically and thus turn noise into noisy and pitched wave-tables. I still find that a interesting option (I wrote some one-liners based on this back then). There are two more or less conflicting concerns here; to what degree pieces can be reproduced has traditionally (in CSound and so on) been a concern for systems like ours. "fixing" "issues" like this may break pieces, in theory that might make compositions become unplayable. This is no concern for me, but more serious composers might care. The current system has one huge issue in that using that technique on the sound level makes real random melodies impossible on the score level, unless we write our own RNG. That last option is not particularly hard as examples are available, even accessible ones aimed at our kind of usage (see John Ffitch's article in the CSound Handbook), but it does look a bit strange and -frankly- limited. I'd propose a "seed" function for every instrument instance that uses noise as well as keeping the one for global Math functions. That would keep all options open at the cost of a very small memory increase per such UGen and breaking some compositions. I don't care about preserving those one-liners as those were deliberately perverse anyway. I also rate the chances of serious composers writing to this kind of "bug" specifically in ChucK as rather low, but I might be mistaken. Yours, Kas.