[sdiy] different distributions from LFSR was: (oops) EN #76 question

ASSI Stromeko at nexgo.de
Thu Feb 7 00:19:06 CET 2013

On Wednesday 06 February 2013, 17:35:52, Scott Nordlund wrote:
> First, it should be obvious from the description of the uniform
> distributed case (sum different taps with binary weights) that this can

Taking out multiple taps from the same LFSR will never yield a truly pseudo-
random signal unless you clock the the LFSR so that the complete state gets 
cycled through the tap sequence between each "take-out" or sampling.  The 
numbers will be uniformly distributed, but there is high correlation at 
time-scales related to the tap sequence (just like the numbers out of a 
free-running binary counter will be uniformly distributed, just very 
predictably correlated to the counter period).  It is easy to see that 
successive binary-weighted taps (or taking the complete state as a binary 
word) result in (sums of) exponentials signal and that trait will also be 
present if the taps get distributed differently.  EN212 actually describes 
this on page 15.  That already is a form of filtering (think delta pulses 
convoluted with exponentials), so by changing the weigths for each tap you 
get to play with the filter function a bit more.

> be easily extended to an IIR filter with a feedback coefficient of either
> 0.5 or -0.5, with any delay length. So the noise source can have a
> uniform distribution with a lowpass, highpass or comb filtered response.
> I also tried it with an allpass filter. An allpass filter with a
> coefficient of +/- 0.5 (again with any delay length) results in a uniform
> distribution with smaller uniform "sidelobes" at half the probability.
> Different families of distributions can be created by varying the
> feedback coefficient.
> Note that this only applies to binary sequences with good statistical
> properties. Arbitrary binary sequences will result in different
> distributions.

There were some students at our university that played with non-maximum-
length LFSR to get noise with non-white spectrum (for use in acoustic room 
simulations on scaled models).  Aside from the fact that the lower frequency 
always seems to come in easily discernible bunches this gave them a 
relatively easy way to quickly switch to different noise spectra with 
predictable properties (to then lift the room impulse response from the 
measurements made on the model).  You need to take care that the LFSR 
doesn't get stuck in degenerate cycles or jumps to the wrong one, though.

> I know this is probably only of marginal interest, but I thought it was
> sort of cool. I've already used it as a random note generator. I like that
> the distribution and correlation over time can be varied somewhat
> independently. And maybe there are interesting implications for some sort
> of chaotic feedback system...
> I wrote an Octave script for it, if anyone wants to mess with it.

Cool, lets see.  I should have one somewhere for producing the number and 
length of cycles for a given generator polynomial.  It works by enumerating 
the sequences, so it doesn't help with very long LFSR.  There's a group 
theoretic solver that can give this information for much larger LFSR, but 
unfortunately you can only use a web version of it freely and that limits 
the size of the output.  Still very useful.

+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Samples for the Waldorf Blofeld:

More information about the Synth-diy mailing list