[chuck-users] Non-random random number
signal.automatique at gmail.com
Sat Oct 19 13:30:36 EDT 2013
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
More information about the chuck-users