I want to be careful about talking about the processing implementation as it was brought to my attention that it isn’t really a direct port of the original algorithm but a little bit of testing seems to show the principle works, at least to a point. (Stress on little bit… “very little bit” might be better.)
With that caveat out of the way… Let’s be specific about what using a scaling factor is actually doing. “Scaling” and “zooming” are a bit hand-wavy. It is really just modifying the argument to the noise function.
For this example, we’ll keep it to 1D to keep it simple. And for the same reason let’s pretend that the periodicity is simply 1 instead of a higher number. So, for example, noise(0.2) and noise(1.2) return the same value.
So let’s call noise in a loop…
for (int x=0; x<10; x++).{
noise(x * scl)
}
If scl is 1, it’s obvious we’ll get the same value each time. If scl is .5, we’ll bounce between only two different values… but if scl is .6 we’ll get 5 different values… .6, 1.2, 1.8, 2.4, 3.0 and the next value is 3.6, a repetition. (since our period is 1, only the fractional part matters.) If we choose .25, we get 4 different values… if we choose 0.26, we should get 50 values, I think.
So, choosing a scaling factor that doesn’t divide the period evenly does give you “more” noise.