Burster is a Max abstraction implementing the clustering algorithm described by Albert-Lásló Barabási in his book Bursts. It is composed of a stack of numbers which are output and reinserted into the queue one at a time, with their relative position in the queue determined via a power law distribution. With a distribution power of 1.0, the output displays nearly equal probability randomness. As this value is increased, the tendency for clustering becomes greater, where a given number may be output several times in a row or in close proximity before it happens to be inserted low in the queue. The video below offers two simple audio examples demonstrating the behavior of this algorithm with different distribution power values.

Download burster abstraction and example patch


Sinter is a program based on a standard step sequencer, with 15 tracks spread evenly across the stereo field. A folder of sounds is loaded by the user and up to six audio files from the folder are loaded into buffers, which the tracks of the sequencer call from. Timing slop is one of the variables on each track (meaning amount of time each sample is able to vary off it's grid). With multiples of the same sample on different tracks and timing slop, interference between the different tracks becomes foreground; creating comb filtering which jumps around the stereo field.

Download Sinter


Swarms is a program which simulates insect swarms in which there is sonic competition. 200 nodes are initialized in their location in cartesian space, which corresponds to panning on the X-axis and amplitude on the Y-axis, thus positioning each node in space. As a node in the network "decides" to begin calling out, its neighbors will begin to compete by also making sound. The sound eventually spreads to the entire network, and runs until each node becomes "tired" and needs to rest.

Download Swarms


Fragments is a buffer-based looping program. The user selects either streaming input or running an audio file as an input source. The six modules each have a buffer which can record 10 seconds of audio from the input source. A small portion of this buffer is looped (according to the size set for the assigned clock). To allow for less timing rigidity, tempo offset and clock drift can be adjusted. Other variables include a pitch offset, adjustable playback rate, loop start position within the buffer, a stutter function (which repeatedly varies the start position), and auto record (records over what is in the buffer at random intervals). There is a gesture capture function for the pan and volume, which is controlled by an xy fader. This allows the user to record movements made with the slider and play back/loop them. Output can be stereo or multi-channel.

Download Fragments


midiSplitter is an application used to split one midi note into several. It was originally developed to run alongside Ableton Live, allowing the user to define steps in a sequencer where a triggering midi note causes the sequencer to take a step and the midi notes illuminated in the matrix will be triggered. This allows for the triggering of many Ableton Live events simultaneously.

Download midiSplitter


percentOffset is an abstraction which takes an int or a float (pos. or neg.) as input and outputs an int or float which has been offset in the direction chosen (positive, negative, or positive/negative (where positive or negative is randomly chosen)) and by the specified amount (set as percentage of absolute value of input). percentOffsetList is another abstraction which functions the same but takes a list as input (int or float, positive or negative) Each element in the list is offset and output. (% offset for each element in the list is relative to its absolute value)

Download percentOffset, percentOffsetList, and example patch


TextRandomizer is a program in which the user inputs a chunk of text and the program will cut up and randomly arrange and output it. The total length in words of the input text is calculated and at every step the program will choose a random location and copy text from that spot. There is an option to change the grain size (meaning how many words per cut). The shorter the grain size, the more random and incoherent the output text will be. The grain size can also be set to random, so each time a cut is made the length is randomly chosen.

Download textRandomizer