1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE

Quantised Randomisation

Discussion in 'Building With Reaktor' started by spoombung, Dec 6, 2003.

Thread Status:
Not open for further replies.
  1. spoombung

    spoombung Forum Member

    Messages:
    747
    I'm looking for a way to initiate global randomisation at the start of every 4 bars(in time with the clock) in an instrument with a sequencer.

    Can anyone point me towards an ensemble that does this already or suggest how it could be acheived?

    Ta
     
  2. John Nowak

    John Nowak Account Suspended

    Messages:
    3,493
    A way that seems obvious to me would be to assign each knob its own midi cc (you can double up here and there to save ccs, you won't be able to tell while its running really). You then trigger a macro every 4 bars (I'm assuming you can handle this part) which does the following in order:

    1. Trigger an iterator with x number of iterations
    2. The iterator sends to an order module
    3. The order sends to a 1->M router to select the output location. Each output sends to a different midi cc.
    4. The order module sends to a value which changes the input to zero.
    5. The value module sends to a randomize module with a range of 128.
    6. Use a rectify module to make all numbers positive.
    7. Use a modulo module to drop the decimal. you now have an integer from 0 to 127.
    8. The modulo sends to the input of the 1->M Router.
    9. The router distributes the integer to the proper midi cc.
    10. The iteration module starts this process over again from step 2 until all iterations have been completed.

    This can be extended to give you ultimate flexibility over the controls. You could for example use an event table to get separate, custom ranges for each of the controls. Admittedly this is a system you have in mind when you build an ensemble... not one you tack on later. It's certainly spiffy though, or at least I think so. You could even have the ranges for each control in the table morph slowly over time, and controls that once seemed to change little will now be swaying a lot more! Stick a slew limiter before every midi cc send and things will transform nice and smoothly.

    This is of course my usual procedural way of doing things. You may prefer grouping things into macros and making a sort of, in OOP terms, randomizing method to trigger for each one. Then instead of having to tinker with the central midi cc stuff when you add controls, you just implement a new randomization method for the new macro. Ah, the joys of polymorphism...

    ...

    Of course you could just trigger the Rnd port on the snapshot module every four bars, but where the heck is the fun in that. If you need help with the triggering, post again. Perhaps that's what you meant in the first place. ;-)

    It's odd that those 10 steps and method design occurred to me as the natural thing to do before I thought of sending to Snapshot:Rnd. *scratches head*

    I really need to stop reading these apple developer docs.
     
  3. spoombung

    spoombung Forum Member

    Messages:
    747
    oh no!

    Ah, I was rather afraid I might get an answer like that...well I did ask for it and thank you Mr Nowak. I may have to cobble it together and post up a picture first... as long as you promise not to lampoon me or laugh at my feeble fumblings with the numbers.
     
  4. spoombung

    spoombung Forum Member

    Messages:
    747
    It is ...sort of. Ok, I'm posting again

    ..*deep breath* briefly , how would you trigger the random action from the snapshot module at regular bar intervals of your choice? Can you do it with the song position module and a sequencer?

    Ta again
     
  5. lxl:::;xl::

    lxl:::;xl:: Forum Member

    Messages:
    222
    the most simple way is to use a syncPls (or a 1/96 clock) and a frequency divider.
    Another possibility is to use a syncPls with a counter and a modulo.


    lx.
     
  6. kim (keem)

    kim (keem) Forum Member

    Messages:
    323
    yes, if you really just want random every 4 bars the sync clock will go that low, but no lower.
    just set its rate to 4/1 and duration to anything higher, plug it in to the rnd port of a snapshot module and away you go.
     
  7. smart_hex

    smart_hex New Member

    Messages:
    176
    To produce favorable results, you will have to pass the randomised events through a scale macro, with a system for choosing a base phrase, making permutations a phrase, with a weighting index that tends to randomise in a patterned way. For example more at the beginning than the end, or randomisation within a quota of amplitude.

    A randomisation would just be a changing signal going faster than the table scroll fed to a randomise module and sampled for example with a sample and hold with a clock slaved to the table. Sounds like it's time to get a good cup of tea and figure out the in-depth logic around tables, which can only be done by modifying some of the gurus creations.

    Percussion would also be a question of phrases, with a mathematical system of weighted variation, bars chopped into basic fractions and recycled, and a decent amount of repetition happening every 2/4/8 bars.
     
  8. smart_hex

    smart_hex New Member

    Messages:
    176
    If you want to initiate global randomisation to all faders, use the randomised macro of lazy fish heishere ensemble. Truly randomise it, and link the controller transmitter modules to all the global controllers on the synthesiser.
     
Thread Status:
Not open for further replies.