tl;dr: mutateful
enables live coding in Ableton Live's session view. Set up transformations that trigger whenever a source clip is changed, including arpeggiation, shuffling, and ratcheting/retriggering.
With live coding being all the rage this looks like a groovy new idea to bring that excitement and its new possibilities to Ableton. I’m watching closely.
— Matt Black, co-founder of Ninja Tune & Coldcut.
mutateful
transforms Ableton Live's session view into a live coding environment similar to a spreadsheet. It allows you to create formulas for shuffling, arpeggiating, constraining, scaling, retriggering, and transforming clips in various ways. These formulas use other clips and/or textual inputs to generate new clips. By utilizing Live's built-in sequencing functionality, mutateful allows you to use any existing MIDI clip as a starting point for new creative ideas.
Visit the latest release for installation instructions and download links for Windows and macOS.
The easiest way to understand what mutateful
does is by comparing it to a traditional spreadsheet. Let's say you have two numbers that you'd like to multiply. You put one number in cell A1
, another in A2
, and in A3
you enter the following (very simple) formula: =A1 * A2
. Cell A3
will then contain the result of this operation, and will update automatically whenever A1
or A2
changes.
Since the session view in Ableton Live presents clips in a spreadsheet-like grid, mutateful
works the same way, only with more musically interesting commands. For instance, you could shuffle the contents of clip A1
using the contents of clip A2
. The pitch values of the various notes in clip A2
would then be used to shuffle the order of notes in A1
. Similar to the example above, we would like the result to be inserted into clip A3
, but instead of using a spreadsheet command we will use a mutateful
command, as follows: =A1 shuffle -by A2
. In this example, A1
is a source clip (i.e. the clip that will be transformed), and A2
is the control clip (i.e. the clip that controls the transformation). The latter could be omitted, in which case clip A1
would be shuffled using itself as the control clip. The formula for this would simply be =A1 shuffle
.
=B1 slice 1/2 transpose 0 7 slice 1/16 1/8 transpose -by C1
This formula does the following: Start with the single sustained note contained in the clip at position B1
. Slice it in half, keeping the first note unchanged and transposing the second note 7 semitones up (a perfect fifth). Now, slice the resulting two half-notes into a pattern alternating between 1/16 and 1/8th notes. Finally, transpose this pattern with the chord contained in the clip located at position C1
.
=B1 C1 interleave -mode event
This formula combines the notes contained in the clips located at positions B1
and C1
, so that the notes from each clip are played one after the other in an alternating fashion.
=A4 ratchet 1 2 3 6 1 2 5
This formula adds retriggering (also called ratchets) to the beat contained in clip A4
. The numbers specify the retrigger amount for each note encountered in the clip. In this case, the first note in the clip will be divided into one (i.e. it will be kept as is), the second one will be divided into two, and so on. When the last number is reached it will loop back to the beginning if there are still unprocessed note events left in the clip.
Ratchet accepts a number of other parameters to scale the resulting retriggers in various ways, including starting fast and going gradually slower towards the end of the note. This can be achieved by adding the -shape
parameter and specifying EaseIn (the default is Linear). In addition, the resulting output can be tamed slightly by adding the -strength
parameter and setting it to 0.5 (i.e. 50% strength):
=a4 ratchet 1 2 3 6 1 2 5 -shape easein -strength 0.5
If you're having trouble getting Mutateful to work, you can start a new discussion in the Q&A section here on Github. If you think you have encountered a bug or something that needs additional work to resolve, feel free to file a new issue.
If you're looking for ways to support this project, you can support me by checking out/supporting my music on Bandcamp.
Command Parameters (default values in bold) Description arpeggiateI've started adding more in-depth documentation in our wiki. There's still a long way to go, though.
Be sure to star this repo and/or follow me at twitter.com/KnUpland for updates.
Using the command line/terminal, navigate to the src folder inside the mutateful repository and run:
Windows: dotnet publish -c Release /p:RuntimeIdentifier=win-x64 /p:PublishSingleFile=true /p:UseAppHost=true
MacOS / OS X: dotnet publish -c Release /p:RuntimeIdentifier=osx-x64 /p:PublishTrimmed=false
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4