[PD] random oscillation between two values

Matteo Sisti Sette matteosistisette at gmail.com
Sun Aug 22 21:17:38 CEST 2010


Hi,

In my patches (especially in visual ones) I often need some value to 
randomly "oscillate", or change smoothly, between two extremes, at 
regular intervals (e.g. change every frame).

For this purpose I often use filtered noise: [random] followed by a 
filter of the kind
y[n]=a*y[n-1]+(1-a)*x[n]
with 0<a<1

This is fine when I don't need to have a very precise control over the 
range and especially when it doesn't have to be controlled dinamically, 
so I just adjust the "smoothness" and compensate the gain by trial and 
error.
But when I need to easily control the minimum and maximum and have a 
parameter that controls "smoothness" in a natural way, I am not very 
satisfied with this approach.

Another technique I use is to have a random increment (which can be 
positive or negative) added to the current value; then I can force it to 
"bounce" when it reaches either extreme. Same as above: it works but is 
often unsatisfying.


What do you usually use in these situations? I'd prefer a roughly 
uniform distribution of the final result over a gaussian one, or at 
least one that would have a minimum and a maximum without clipping (the 
problem with a gaussian is that you either get a peak in probability of 
the extreme values, or in order to avoid them, you get very low density 
for any value near them)....

I know this is not a well-defined problem, that there are hundreds of 
answers with advantages and disadvantages depending on the application; 
but I guess many of you have often needed something similar and I'd like 
to hear what are your favourite solutions.


thanks
m.



More information about the Pd-list mailing list