R.Bultitude 2004

Generative music using Reason part 2

Building complexity

richard bultitude
Generative music using Reason
13 min readJan 26, 2014

--

2 Introduction

In part 1 we explored the use of CV to trigger and modulate sounds and by so doing created a modular structure, which is the foundation of this whole series. Up until now we have only dealt with percussive sounds, so we are going to introduce melodies and employ some more advanced techniques to really get our generative system working.

The first few sections in this piece pick up where we left off and tidy up some loose ends, such as how to create shuffle rhythms using CV, so users familiar with this (and in particular Pulsar) can skip on to 2.3.

Please be aware that the supplied Reason files in this blog piece are for Reason 7, not 6.5.1 as was the case in Part 1. Where appropriate I have supplied Combinator patches, which, may be compatible with older versions of Reason.

2.1 Wider Control

By building on what we have done so far we can create some nice effects using CV to further enrich our music. So I'm going to use a few different LFO sources to modulate various effects. So, in a similar way to the simple-cv-techno.reason example from Part 1 set up a system that generates a steady rhythm which has some basic variance. In my example below I have used a set of NN-19s wired up to two Kong devices — a basic drum kit (containing hats, snare and a kick drum) and another with a set of three synth snares that are all set to similar but not identical sounds.

Once you have done this try using one of the random signals to automate a master effect on one of the Kongs, as demonstrated in Fig 1.1 below.

Fig 1.1

LFO CV to Kong master FX parameter

I have used a ring modulator in my example but this could apply to any effect. Now I'm going to introduce a Maelstrom to the party as it can provide us with some interesting wave shapes. I set Mod A to Curve 26, which is a variation on the classic square wave, and hook it up to the volume of our snares Kong on the main mixer, see Fig 1.2 below.

Fig 1.2

Maelstrom LFO to channel 3 volume CV in on the mixer

Now it is starting to sound a bit more scruffy. If you play around with the rate of this LFO you should hear a nice distortion/tremolo effect. Download the example file below for my version of this configuration.

DL: distorting-effects.reason

The list of things within Reason that can be controlled by CV is very long and allows us to effectively sound design. Later on in the series I will cover how we can gain even more control and automate things that are not normally accessible via CV.

OK, so the rhythms we have been dealing with so far have all been a little staid, which leads me on to an important part of using CV gate as a rhythmic basis for your music: shuffle.

2.2 Shuffle

The use of shuffle in music is often what gives tracks groove, personality and a more human feel. So far the LFO on the devices we have used can only generate fairly regular shapes but there are ways we can introduce more interesting and subtle rhythms.

2.2.1 Pulsar

Although Reason itself is a program with great hidden depth, it has its limitations, which is one of the reasons Properllerhead opened their doors to the developer community with Extensions. Pulsar is one such rack extension and is free to Reason users. It outputs complex LFO signals and gives us more control over the shapes offering waveform controls: phase, lag and shuffle. Both phase and shuffle can be used to achieve a similar effect in this case, though for our purposes let’s stick to shuffle.

Create a new document with a Pulsar and a Kong, then add a drum sound to channel one, I have used a hi-hat for this example. Flip around to the back of the devices and connect CV1 out of Pulsar to the gate in on Channel one. Going back to the front of the devices set a sensible rate (1/8 perhaps) and start to move the shuffle dial. You should hear the rhythm change from a regular 8 beat to a shuffle or triplet-style rhythm.

DL: simple-shuffle.reason

Pulsar neatly uses two waves to achieve this - the shuffle amount is how much it squashes the second wave as illustrated in the Fig 1.3 below.

Fig 1.3

A possible shuffle waveshape in Pulsar. Diagram taken from the Pulsar manual.

Employing the second LFO we have on pulsar we can create less obtuse shuffle rhythm by mixing the two signals. To do this turn LFO on and make sure it is set to Tempo Synch, as with LFO1, and then turn the LFO2 to LFO1 level dial anti-clockwise so that LFO1 is more prominent than LFO2. Tweaking the levels of the two LFOs and using the Lag (a softener effect) we can create the kind of subtle and dynamic rhythm we might want to create in our sequenced music. In the example file below I have added a steady kick so it is easy to hear the accent of the rhythm.

DL: subtle-shuffle.reason

2.2.2 RPG-8

The lovely arpeggiator comes in handy for many unusual techniques in Reason and its no exception here as its sequencer offers us a shuffle mode. To harness the power of his feature we just need to use the CV gate out of the RPG8 and attach it to our target device, which so far has been the Gate In on a Kong channel. In order for the RPG8 to output a signal we have to draw a note on the Sequencer and play it. By doing this I am breaking one of my rules here and used the sequencer as a trigger. This is because there is seemingly no way to trigger the RPG8 purely using CV — solutions to this issue are welcome.

Regardless of the sequencer intrusion, I wanted to demonstrate how the RPG8 can be used to provide a shuffle rhythm. In the example file and in Fig 1.4 I have hooked up the LFO2 from my (regular beat) Pulsar to module the velocity of the RPG8, which adds an extra layer of variance and makes our rhythm a little more interesting.

DL: rpg8-shuffle.reason

Fig 1.4

RPG8 being used a gate trigger on Kong channel 3

2.3 Getting back to chaos

Now that we have a few ways of triggering and modulating sounds in our Kong we can move on to the pressing issue of using randomness to actually trigger a selection of sounds rather than just the intervals at which a sound is triggered.

What we want is one CV source that can trigger various different samples. So, load up some samples (percussive or otherwise) into all 16 channels on Kong. The great thing is Kong has an internal CV sequencer that allows us to trigger different sounds using CV note information. But where are we going to get CV note information that equates to each of our separate channels you might ask? Step in the Thor step sequencer.

All we have to do is match the notes in the Thor sequencer with the notes each Kong channel uses. It is well documented that these are the notes from C1 through to D#2, so set up the sequencer so that it uses those notes and wire up our devices. Take care to switch to the 4 Octave mode on Thor’s sequencer so that note C1 is available — C1 is the 1st note on each of the dials, so turn the 1st one all the way to the left as depicted in Fig 1.5.

Fig 1.5

Thor’s sequencer, with the Octave mode set to 4 and the 1st note step set to C1

Once you have all the sequencer dials on Thor set to each of the notes in the aforementioned scale take the Note and Gate CV outputs on the back of Thor’s sequencer and plug them in to the inputs of Kong’s as per Fig 1.6.

Fig 1.6

Thor’s sequencer connected to Kong’s

Our Kong drum channels are each being triggered but in a predictable order, so let’s change the Thor’s sequencer play mode to Random. Now we’re really starting to get somewhere!

In this example I have used the Combinator utility device to encase this module. This is something we will be doing most of the time from now on as it helps us organise our systems and gives us more control of our internal devices via the rotaries, buttons and programmer.

You can download the Combinator patch below. Double clicking it will load it into any Reason documents you already have open, else it will launch Reason and load it into your default template.

DL: random-drums.cmb

There are two modifiers I have set up in this Combinator patch: a Start/Stop trigger on Button 1 and a Sequencer Rate controller on Rotary 1.

By reducing the number of steps the sequencer covers we can narrow the breadth of drum pads we effect. We can automate this by selecting the Thor in the Combinator programmer and selecting Step Count under Rotary 2's target as per Fig 1.7.

Fig 1.7

Assigning Thor’s sequencer step count to Combinator’s Rotary 2

When assigning anything to Combinator’s modifiers (buttons or rotaries) be sure to name them to avoid confusion.

With this arrangement we can substitute our percussive sounds for note sounds by either tuning the drum sounds or using Kong’s NN-Nano sampler and loading your own samples. However, if we want to play notes from a keyboard based device like the Thor, Subtractor or Maelstrom we’re going to need a more complex set up.

Now you have this thing…where you can play the music, just like a record, but it won’t be the same thing each time

Brain Eno

2.4 Random notes

Having tried endlessly to use various CV signals to play instruments via their CV Note in connections, I have to concede that although you can stumble across some fascinating sonic effects it is difficult to control these arrangements. What we really need is something that outputs specific notes in a random order.

2.4.1 Thor Sequencer

The most clean and simple way I have found to achieve this is Reason is to set the Thor’s step sequencer to random and adjust the notes individually so that they are a chromatic scale. When activated the sequencer will play a seemingly random selection of notes from the device itself as I have demonstrated in the Combinator patch below.

DL: random-notes.cmb

As you may have anticipated, the note and gate information can be used to trigger other devices, so let’s create a Maelstrom, add or create a patch and flip the rack around to wire up the connections. Start by taking a cable from Thor’s Step Sequencer’s note output and plug it in to your target device’s Seq Control CV socket, then do the same for the gate. Now you should hear notes on the Maelstrom being played in a random order by Thor’s sequencer. Use the reason file below if in doubt.

DL: random-notes-ext-device.reason

Though the technique we have just explored is effective the number of notes in our sequence is limited. If we wanted to use all the notes in a 7 octave keyboard we would have to find a way of moving from one sequencer to another. As luck would have it a technique that successfully chains sequencers together is documented in great detail on Reason101 in the excellent piece Generative Ideas part 1. Credit to EditEd4TV, Sterioevo and Steve for developing this superb configuration. It uses the Thor sequencer, but crucially it uses Curve and Last Gate to scale the CV signals. Rather than duplicating their content I recommend you read the full piece here: http://www.reason101.net/101-creative-reason-projects/60-generative-ideas-pt-1/.

2.4.2 Advanced sampler notes

This technique takes advantage of a nice feature that the NN-XT offers: Alternate notes. When there is more than one zone (and sample) loaded and each zone has Alternate set to On it randomly alternates between each zone every time the sampler is triggered.

To get started, create some sample zones inside the sampler and load different samples into each one. For this technique to work the zones need to span the same number of keys, which they do by default. Then select each zone and set Alternate to On as per Fig 1.8 below.

Fig 1.8

Setting sampler zones to Alternate mode

Now each time you strike a key on the keyboard you will hear one of the samples play, it may be a different one from the last, it may be the same, but it will continue to vary in a seemingly random way. In the example Combinator patch provided below I have used a Maelstrom’s Mod A LFO set to random to trigger the sampler’s gate. The sounds I have used are guitar sounds from the Reason sound bank but they could, of course, be anything.

DL: random-sampler-notes.cmb

To make it really clear what is actually happening I have turned on Select Zone Via MIDI, so you will see the selected Zone highlighted when it is triggered. I have also adjusted the level and sample start amounts under the Velocity section, so that they vary slightly according to the gate signal. Using the parameters available through the Velocity panel can really help add subtle but important sonic variance.

2.5 Crossfader control

There will come a time where we want to move between different sounds we have without having to automate the control of volume faders one by one. A neat way to achieve this by creating a crossfader. We can build one in the Combinator using a line mixer and the rotaries.

Add a line mixer to the Combinator and in the programmer assign the two rotaries to the line mixer and choose channel 1 on rotary 1 and set the scale to -127, on channel 2 assign it to rotary 2 and other to set the scale to +127 as per Fig 1.9.

Fig 1.9

Combinator crossfader using two mixer levels on Rotary 1

This then means that the rotary dial allows you to fade between the two sounds. Nice eh? We can now automate the control of that fader position using a random LFO (or other shape) as illustrated in the Combinator patch below.

DL: crossfader.cmb

In this patch I have set Rotary 2 to control the rate that our crossfader fades, so have a little play around and see what interesting effects you can get from this or by tweaking other aspects of the patch.

2.6 Designing generative systems

Now that we have started to master some of the key ways in which we can control sound in an autonomous way in Reason we need to think about how we design our system. This is, perhaps, the hardest aspect of this proposition because our workflow is so different.

When dealing with a sequenced, linear arrangement there are lots of things which help us manage our workflow and give us opportunity to perfect our arrangement: we can loop at any position we like, stop at any position, shape a sound by drawing the automation or zoom into the tiniest detail of a particular section. Life without the main sequencer can be hard.

2.6.1 Planning permission

Sometimes the most effective pieces of generative music have the most humble beginnings, so keeping things as simple as possible is very important. Much of Brian Eno’s music is a testament to this paradigm.

It is easy to be distracted or loose sight of the bigger picture when making music of any kind, particularly generative music. However, there are three words I try to be mindful of when working this way:

1/ Source
2/ Structure
3/ Shape

Source is about what you feed into the system. Structure is about organising your variables and sound units. Shape is about deciding how you will let the sound evolve over time.

2.6.2 Clarity is crucial

In order to combat the challenges mentioned above we first need to ensure everything in our workflow is clear and organised. Giving devices and their related effects meaningful names, writing notes in the Song Information fields and using Combinators to organise and control device groups are easy wins. Using the full width of the rack area (which was introduced in Reason 6) is another good way of visually arranging our components so we can see what relates to what.

2.6.3 Managing the mess

The best advice I can give is to start by making simple modules using Combinators, which can be fine tuned to your liking. Be sure to configure them in a usable way and save discreet patches that you can reuse later. Once you have a set of modules that you understand well you can start to thinking about which ones work together.

As you may have found already it can be distracting and counter productive to hear all the sounds your system is generating playing non-stop, after all we cannot use the transport bar’s stop or play buttons. If you’re using an external MIDI controller I suggest you assign any faders to the volume on the relevant mixer channels and use some of the rotaries to control things like filter envelope, so that you can tame some of those harsher sounds.

In Part 3 of the series I will go into more detail about how we can actually sequence our various modules and give away some of my more complete arrangements. I hope this part took you closer to understanding more about the power of Reason as a modular synth and inspired you to experiment and discover systems of your own making. Remember comments and feedback are welcome.

--

--