[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.
Regards,
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+
Samples for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldSamplesExtra
More information about the Synth-diy
mailing list