Archive of the former Yahoo!Groups mailing list: Korg Poly800/EX800 Users

previous by date index next by date
previous in topic topic list next in topic

Subject: Re: [korgpolyex] random LFO

From: ASSI <Stromeko@...>
Date: 2008-09-20

On Samstag 20 September 2008, Atom Smasher wrote:
> assembler?!?! i should have known.... and i've always considered C
> a low level language...

In C:

((m ? m : -m) << 1) + 43;

Better? :-)

> despite the verbose comments (is all of the code commented that
> well?) i can't follow it. can you give a brief explanation?

It is somwthing that looks like a LFSR, but isn't (the feedback is
actually missing). When I find some time I'll simulate to see what
the cycle length is for different seed values.

> On Thu, 18 Sep 2008, korgpolyex800 wrote:
> > Here's my pseudo random number generator.
> >
> > It is by no means very random.
> >
> > ; my pseudo random number generator - used for the LFO randomiser
> > ; returns a random number in A
> >
> > RANDOMIZE:pushh ; save HL
> > lxih, M_RANDOM ; point at the previous value (seed)
> > mova, m ; put the seed value into A
> > cpi0 ; check for seed equals zero
> > jnzRANDOMIZEA ; if seed is zero jump to randomizea
> > cma ; compliment A
> > movm, a ; put A back into seed

This line is redundant because you save the seed again later on.

> > RANDOMIZEA:rlc ; rotate left through carry
> > adi43 ; add 43 offset
> > movm, a ; save in seed
> > poph ; load HL
> > ret ; return with pseudo random in A
> >
> > I would be more than happy for you to suggest something better as
> > long as it doesn't add any CPU cycles. :-)


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

Factory and User Sound Singles for Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds