Saturday 13 January 2018

Asynchronous timing generator for Max For Live in Ableton Live

Previously, I introduced ProbablyGEN, a Max For Live device that produces MIDI note events on three channels - with quite a lot of control over the timing of each channel. Essentially, instead of being tied to a single timing source, the three channels provide independent timing, and I provided default mappings to drum sounds because that seemed like a good way for people to start to explore the polyrhythms that are produced.

The feedback that I got suggested that quite a few people were using ProbablyGEN as a generative polyrhythmic drum machine pattern creator utility, and so I have now taken the comments and added extra functionality to make it easier to use ProbablyGEN in this way.

Additional asynchronicity

ProbablyGEN version 0.04 adds a fourth source of timing, but this time it works across the channels, and allows any channel grid to be filled randomly, or filled using a generative algorithm. As with the channel timing, this 'Rnd/Gen' functionality can be clocked using a free-running asynchronous clock (the 'Free' mode), or synchronised to the Bar count from Ableton Live's transport (the 'Sync' mode). Synchronising to Bars is slightly different to the 'Divide' control used in the channel timing - it quantises to discrete bars, and so a new grid pattern is only produced when the bar ends. In contrast, the Free mode is just a free-running clock, and so the new grid patterns can happen at any time - and the display shows the time between grid changes and shows a vertical 'count' indicator that shows when a new grid will be created (when the bar reaches the top).

 Looking at each part of the new Rnd/Gen control section in detail:

Common controls

The mode switch at the top of the common control section allows one of the two modes to be chosen:

Free - the Rnd/Gen clock is completely asynchronous (not tied to Live's transport at all). The 'Speed' control sets the time between a new grid being generated (shown in seconds). The bar on the left hand side shows the progress towards the next new grid - when it reaches the top then  new grid is generated (and the bar then drops down to the bottom).

Sync - the Rnd/Gen clock generates a new grid after the set number of bars, and so is tied to Live's transport. The 'Bars' control sets the number of bars between new grids being generated - in this case, the control is set to 9 bars. The number on the left hand side is the bar count, currently showing 3, so in 6 bars' time, the grid will be reset. 

The 'Fix/Auto' button controls if the automatic Rnd/Gen controls are active. When in 'Fix' mode, the grids are not affected. Selecting 'Auto' will activate the automatic Rnd/Gen effect on the grids (using the Per-channel selections described next...)

Per-channel controls

The 'Clear' button works as in previous versions - it clears the grid on that channel.

Each channel now has channel-specific 'Gen' and 'Rnd' buttons. These are always active - regardless of the 'Fix/Auto' button setting.

If you click on the 'Gen' control then a generative algorithm will produce a drum pattern for that channel. Each channel has a different algorithm: the top channel is designed for hi-hats, the middle for snares, and the bottom channel for kicks. Each time you click on the 'Gen' button, a new different pattern will be randomly generated.

If you click on the 'Rnd' button, then two things happen: first, some random cells in the grid will be cleared, and then, some random cells will be set to white. The 'Rnd' button thus modifies any pattern in the grid - it does not replace it (unless you press the 'Rnd' button a lot of times!). So you can use the 'Rnd' button to modify any grid - even a grid produced by the 'Gen' button.

'Auto' mode

When the 'Fix/Auto' button is set to 'Auto' then the timing controls can affect the grids. There are six selection boxes, three for each channel. When an 'X' is lit up, then the button on the right hand side of the sector will be activated when the timing clock generates a 'Rnd/Gen' event. 

In the case shown on the left, the top channel will have a new grid generated, the middle channel grid will be modified with random cells, and the bottom channel will generate a new kick drum pattern, and then randomly modify that pattern. ('Gen' always happens before 'Rnd'...)

If none of the selectors has an 'X' in it, then the grids will not be affected, and the state of the 'Fix/Auto' button does not matter.

Downloading ProbablyGEN 0.04

You can download ProbablyGEN 0.04 for free from

Here are the instructions for what to do with the .amxd file that you download from


Original blog: version 0.02: Complex timing generator for Max For Live in Ableton Live

Update: version 0.05: Constraint-driven modification grids in asynchronous drum timing generator

Buy me a coffeeBuy me a coffee

No comments:

Post a Comment