Eurorack users often find that their patches can take on a life of their own, and this is actually one of the goals in the creation of generative patches. Generative patches, or generative music, is the concept of connecting your modules in such a way that they basically play themselves with little or no interaction from the user, yet the music evolves and changes without repeating itself. This is sometimes also referred to as Procedurally Generated Music, and it is something that modular synthesizers and computer programs are uniquely qualified to do. In fact, the term was originally coined (not surprisingly) by Brian Eno while working with software. He used this term to describe “any music that is ever-different and changing, created by a system”. The approaches to generative music can be almost as varied as the results, but there are a few ingredients and techniques that are essential.
Here’s a little generative patch I cooked up using Make Noise Wogglebug and Maths, MFB Kraftzwerg, Mutable Clouds, and Intellijel Rainmaker:
When you make a generative patch, you are basically setting up a system that will interact with itself with little to no outside manipulation. To do this you need to define the actions and reactions that will propel things, and determine the range and flow of values that will make it evolve. Probably the most commonly used and critical component to facilitate both tasks is the function, or envelope generator.
However, it really helps if it is a function generator that sends gates as well as receiving them. For example, probably the most famous function generator is Make Noise Maths, which has a gate output for End of Rise on one side, and End of Cycle on the other. Intellijel’s Quadra Expander provides end of cycle trigger outputs for each of the four functions, so you can set up complex cascading modulations from one place. The Pingable Envelope Generator from 4MS has both end of rise and end of fall trigger outputs.
The reason why these end of stage trigger outputs are so important is because they can effectively set up a feedback loop in your system. By making these functions trigger themselves in loops they will endlessly cycle, which is a good place to start when making a generative patch. Now the challenge becomes making that loop interesting, and not a static loop. Modulating the attack and decay times of these function generators in turn changes the timing of their end of stage outputs.
Cross Modulation can be a fun way to inject life into your patches. By this I mean setting up modulation sources within your patch that interact with each other. For example, my MFB Kraftzerg has a CV attenuator for each LFO that sends modulation from the other LFO. Even bringing in just a little modulation on both LFOs can make things more interesting and far less repetitive. Which brings up the importance of mults, mixers and attenuators. Or even better: Attenuverters, which can both scale and invert an incoming signal. Often with generative patches (and patches in general) you will want to send one modulation source to a few destinations. However, you will not always want to send the full range to each destination. Or you may want to invert one form of modulation to have a parameter move in the opposite direction. Utilities definitely show off their usefulness in such patches, or you might realize that something is lacking in your system.
Random Generators and Sample & Hold modules are definitely a useful tool in generative patches. Nothing has more variety than randomness! Some examples worth checking out are the Make Noise Wogglebug, SSF Ultra Random Analog, Qu-Bit Chance, and Intellijel Noise Tools. The tricky part with such modules is often taming the randomness into a useable range, which brings us back to the importance of mixers, attenuators, and attenuverters. Offset can be another important tool when you need to scale a range of values up or down to make it work. Often these random modules are also able to provide a clock signal, so they can effectively function as the engine to your patch. Applying a quantizer to the random cv can instantly make it more musical, and changing scales will drastically affect the feel of your generative piece.
Another variation of the Sample & Hold is the Shift Register. In this case the sampled values are sent to different outputs, one after another. This can be useful to spread a melody out to a few oscillators, or it could be used to transpose sequences, or send other fixed values. Intellijel’s Shifty can shift sampled CV to up to four outputs, but it will also allocate gates. Conversely, it can be used as a voice allocator or a rudimentary clock divider. Clock dividers and switches can provide a useful means of distributing events and modulation within your patch. Also, blending sequences of different lengths with a precision adder can be an effective way to create long varied melodies from shorter source material.
Now that we’ve taken a look at some of the most common and important building blocks used in generative patches, let’s explore the most common and famous generative patch: Krell Muzak. Todd Barton created this patch as an homage to the music of Forbidden Planet. The most important premise of this patch is that a random value generator determines both the notes played by the oscillator, and the decay times of the notes. The result is that higher notes are played more quickly than lower notes, resulting in short trills of high notes and slow swelling bass notes. Depending on the type of function generator used, it might be necessary to invert the random cv signal to achieve this result.
Make Noise has a great walkthrough video on how to set up a Krell patch on their 0-Coast semi modular synthesizer:
Plus, Intellijel has a video of a Krell variation using their µScale quantizer:
It’s also definitely worth watching Mylar Melodies video on generative techniques:
As long as you have a sample & hold, a function generator with a decay cv control, some means of generating a trigger (whether from the sample & hold or the function generator), and some kind of sound source, you should be able to create a version of Krell muzak, or at least use it as a template to achieve some kind of generative patch. Then the fun part begins of tailoring it to your own taste. Setting up your own Krell patch will help to get you thinking about generative techniques and gain an understanding of how your system can interact with itself.
What are some of your favourite modules and techniques for making generative music? I’d love to hear about them, so please let me know in the comments below, or feel free to post links to your own generative creations.