Generative Algorithm – Input to Parameter Randomisation

Input to Parameter Randomisation

This post is documentation of practical research done with one of the Max patches I have built to generate parameter modulation within Ableton. My aim is to show what results this specific system allows for, and as I go through and explain the different possibilities, I will also combine the ones already explained to generate more “finalised” sonic content. I chose to showcase this algorithm with very simple rhythmic and harmonic content, without any modulation, so that the sonic modulation is as clear as possible.


The ambition for this algorithm is to generate modulation data, that can be mapped to any parameter within the Ableton workflow. Every time it receives a MIDI note, it generates randomised numbers between 0-127 and, in its current state, each instance of the device can generate up to 4 separate modulation numbers, that can be mapped to any parameter available for external control within Ableton. In the most recent development of the code, I added constricted randomisation, which can be used to only allow a certain percentage of randomisation from its previous value. This addition allows for a much gentler approach to parameter randomisation, as sometimes one would not prefer to allow a certain control (for example volume) to be switched from its maximum value to its minimum value. 


One of the main reasons for me to initiate the building of this device was an urge to leave a large part of the sonic decision making up to indeterminate processes. To a large extent the fundamental drive producing this project was, and is, to build a physical device that play generative music that even I (as the creator of the device, and systems running it) get surprised by. There is still a lot of work to be done before I have reached this goal. But alas, in it’s current state, this device (especially in combination with one or two other modulating sources) is able to produce an extremely rich variety of sound, mainly because of its ability to control anything, with a good amount of (possible) control.

To help the following text make any sense, a description of the interface (from left to right, and top to bottom) is as follows:

  1. Slide Button & Time: This button allows for sliding between the generated numbers, and the Time slider below it specifies the time it will take to slide from the current number, to the next one generated.
  2. Settings Button: Opens up a popup window with a few extra settings. For this walkthrough these settings are not of importance, and will in a future update be worked into the main interface.
  3. Number boxes 1-4: The number relates to which of the four randomised numbers the mapped parameter should follow. In other words, all mapped parameters can follow the same randomisation, or have individual modulation. 
  4. Mapping area: By clicking on “Map” and then on the parameter you want to modulate, the device takes control over this parameter, and the modulation range can be set with the numbers underneath. 
  5. Float number box “1.00”: This decimal number sets how constrained the randomisation will be. A setting of 1.00 can randomise the full range of 0-127, a setting of 0.50 can randomise up or down by 63 (50% of the full range), from its previous number, and a setting of 0.10 can only randomise 10% up or down from its previous setting.
  6. Dial: Moving this dial will set the corresponding randomised number to this value directly.
  7. Number box “0”: A setting above 0 will reset the mapped parameter to whichever setting is set on the dial to its left, after this number of input MIDI notes. This is very useful if one wants to return the randomisation to a reasonable number every once in a while, and then let the randomisation lead the parameter astray for a while.
Text Shortcode

Meet the most advanced live website builder on WordPress.
Featuring latest web technologies,enjoyable UX and the
most beautiful design trends. Simply drag&drop elements

  • Text Hover