Clusters is a polyphonic MIDI particle generator meant to provide rhythmic or atmospheric accompaniment. Clusters receives MIDI input from a MIDI keyboard controller, or other MIDI input device, and outputs a generated sequence of MIDI notes in response. The generated sequence are random notes that play using a Euclidean Rhythm.


To set up Clusters, connect your MIDI input device (keyboard or anything that outputs MIDI) to Clusters on the MIDI Channel set by the MIDI IN knob (default is channel 1). Then create two instrument tracks in your host and insert a MIDI sound source (synth or other) on each track. Set one track to receive MIDI only from the MIDI Channel set by the MIDI IN knob (default is channel 1) and the other track to receive MIDI only from the MIDI Channel set by the MIDI GEN knob (default is channel 2). The first track will be your “direct” sound, and the second track will play the MIDI generated by Clusters. The host transport must be playing for Clusters to generate MIDI. Each time a note is played by the user, Clusters creates a sequence and plays it back.


SHIFT: Press the SHIFT KEY to access the “Expert Mode” page. Press again to go back to the main page. Press-and-hold the SHIFT KEY to see knob values.

PADS: The pads labled “Voice” are indicators that show which voices are currently playing and how many notes remain in the current sequence.

USER PADS: USER 1 and USER 2 are for storing user presets. To store a preset, press-and-hold SHIFT and while holding, press either of the USER pads. This will store the current settings in that pad. To recall a user preset, simply press the user pad.

PRESET + and PRESET -: These pads cycle through the factory presets.

AS PLAYED / QUANTIZED: This pad selects between Quantize mode and As Played mode. In Quantize mode, all notes generated by Clusters will be played back quantized to the host clock. In As Played mode, the generated notes are offset from the beat by the same amount the original note was.

RANDOM / STATIC: This pad selects between RANDOM and STATIC modes. RANDOM mode selects a different length Euclidean sequence and different clock division for each input note played. STATIC mode uses the same length Euclidean sequence and clock division for every generated sequence.

KEY: Sets the root note of the generated sequence.

SCALE: Sets the scale for the generated sequence.

RANGE: Sets the range of the random notes in the generated sequence, from 0 semitones to 24 semitones (2 octaes).

OFFSET: Applies an pitch offset to the generated sequence from -12 semitones (-1 octave) to +12 semitones (+1 octave).


Press SHIFT to access EXPERT MODE.

KEY, SCALE, RANGE, and OFFSET have the same fuction as on the main page.

HUMANIZE: Adds timing jitter and velocity variation to the notes of the generated sequence.

VEL OFFSET: Adds or subtracts from the velocity of the generated sequence. The base velocity of the generated sequence is the same as the input note that triggers it.

NOTE LEN: The length of the generated notes, in note subdivisions.

POLYPHONY: Sets the number of active voices, from 1 to 10. Fewer voices should use less CPU.

MIDI IN: The MIDI channel that Clusters listens to to receive MIDI input. This should be set to the same channel as your MIDI keyboard controller.

QUANTIZE / AS PLAYED: Same as the pad on the main page.

The knobs on the bottom row will vary depending on whether you are in RANDOM mode or STATIC mode.


MIN STEPS: Sets the minimum length of the generated sequence in steps.

MAX STEPS: Sets the maximum length of the generated sequence in steps.

MIN BEATS: Sets the minimum number of notes per generated sequence.

MIN SUBDIV: Sets the shortest note division for the generated sequence.

MAX SUBDIV: Sets the longest note division for the generated sequence.


STEPS: Sets the length of the generated sequence in steps.

BEATS: Sets the number of notes to be played in the generated sequence.

ROTATE: Rotates the generated Euclidean sequence in steps.

SUBDIVISION: Sets the note division of the generated sequence.

DECAY: The generated sequence can either fade in (below 12:00), fade out (above 12:00), or play at a constant volume (12:00) depending on how this knob is set.

MIDI THRU: This selects whether the MIDI input arriving on the channel set by MIDI IN will be passed along to the output or blocked.

MIDI GEN: This sets the MIDI channel that the generated sequence will be output on.

STATIC / RANDOM: same as on the main page.

This script was inspired by software used by Olafur Arnalds. See:

To learn more about Euclidean Rhythms, visit:

1111 PM
  • Platform:
  • Category: Effect Sequencer
  • Revision: 1.0.7
  • License: MIT LICENSE
  • Views: 2469
  • Modified: 3 years ago
Chat about this patch on Discord! Download (160)
Appreciate 20
9 comments on “Clusters
  • peblin on said:

    This looks so cool. Thanks Bryan!

  • Bryan on said:

    Version 1.0.1

    * Possible fix for SHIFT key bug where the SHIFT key would not switch between pages. Please report if bug persists.

    * NOTE LENGTH now adjustable in note subdivisions rather than ms.

  • Bryan on said:

    Version 1.0.2

    * In an attempt to get the SHIFT key working as intended, I’ve added a bit of a kludgey, hopefully temporary solution; namely, I have added a log call in the OnShiftDown, OnShiftUp, and OnTimer events. Thanks to Audiobus Forum user espiegel123 for the idea.

    * Added two Custom Scales: a custom Pentatonic scale spelled 1, b3, 4, 5, b6, and a Minor 7th Chord, spelled 1, b3, 5, b7.

    * Fixed a problem with the Factory Presets caused by the last update. I also tweaked the presets slightly for more fun factor.

    * Fixed a couple other minor bugs.

  • ROKOKO on said:

    Highly appreciate all the great stuff you keep making for IOS music lovers, esp the generative stuff, Would love to try Clusters fully but the shift key still doesn’t work for me in 1.0.2. A fix would be much appreciated.

  • Bryan on said:

    ROKOKO, I just received an email from Bram Bos who says that a bug fix for the Shift issue is on its way!

  • Bryan on said:

    Version 1.0.5

    * Extra Log calls Added in previous update have been removed.

  • Bryan on said:

    Version 1.0.6

    * Hopefully the Shift button now works as intended using Mozaic v1.2.

  • Bryan on said:

    Please note that in order to access ‘Expert Mode’ you must press-and-release the SHIFT button in less than 220ms. If you do not release the SHIFT button within this time, the script will interpret this as a long-press and will show the values of the knobs instead. The length of this window may be adjusted by changing the ‘variable called “length.”

  • Bryan on said:

    Version 1.0.7

    * Added LOCK control. When engaged, LOCK prevents the Scale and Key from changing when changing presets.

  • Leave a Reply