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: random LFO

From: "korgpolyex800" <korgpolyex800@...>
Date: 2008-09-20

Wow, now that I look at it in C, it definitely needs improvement. LOL

Mike.

--- In korgpolyex@yahoogroups.com, ASSI <Stromeko@...> wrote:
>
> 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
>