SoftStep Tutorial #5: Rhythmic Tonal Patterns

This tutorial builds on the previous one, to help you get started generating interesting rhythms and rhythmic tonal patterns with SoftStep. If you have not yet done the earlier part, you should go to Tutorial #4 now.

In Tutorial #4, you added extra voices to your basic rhythm sequencer patch, and you should now have a 3-4 voice rhythm ensemble. In this tutorial we will add a couple pitched instruments. Load the .ssp file you created from the last tutorial now. Or you can load the prebuilt file from Tutorial #4, which is "tutorial-04.ssp" in the examples directory. It should look something like this:

First thing, you are going to want to be able to shut off the percussive voices while you are working on the pitched voices. Best way to do this is to use the Stop Flag; and this will also prepare the patch for MIDI recording. There are two modules that will need it, the Stepper and the Counter. Click on the Reset input of the Stepper, and select the Stop flag ("~Stop"). Do the same for the Counter module. Sound should stop, but will start again when you click on the Run/Stop button in the Toolbar.

The screen is becoming a little crowded, so it is time to start a new page for the pitched voices. To the right of the Toolbar on the top of the screen are the Page Control buttons labeled N, E, S, and W (North, East, South, and West):

These are the first four pages available to place modules. The button to the right of the NESW buttons allows you to select up to 4 different groups of 4 pages each, for a total of 16 pages. Since we only need two pages, ignore the page group button, leaving it set to "1." When you click one of the NESW buttons, any modules on that page are displayed. Click "E" now and the page should go blank; click "N" and the modules appear again. Now click "E" again to start with a new page.

There are an incalculable if not infinite number of ways to use SoftStep to generate pitch patterns. What follows has been chosen because it fits with this tutorial, but it is not by any means the "recommended" or "best" way to set up pitch sequences. The recommended way is to experiment and try different things.

For this tutorial, we will build a pitch sequence based on the previous rhythm sequences. To start, create a Step-16 module and two Pattern-16 modules on the new "E" page.

Create another Stepper module, and a Number module to control its speed. Connect the Stepper Duration input to the Number. If you have not done so already, turn on a few of the Pattern module stages, so you can see them move when you make the next connection, which is: connect the Stage inputs of the two Pattern-16 modules to the Stepper. The Pattern module should now be sequencing, and you should be able to control the speed by changing the value in the Number module. If this is not the case, review the steps you have taken so far. Here is how it should look:

Next, create two MIDI Voice modules. These are the full Voice modules, not just the KeyOut modules. Notice when you create them, the MIDI channel button is set to 2 and 3. Each time you create a Voice module the MIDI channel increments. You can change this, of course, but there is no need to. What is important is that every MIDI Voice be set to a unique channel - and this is the case now.

Connect the Voice modules' Clock inputs to the two Pattern module outputs, and set the Voice module Pan inputs to mid left (48) and mid right (96). You should hear the piano thumping in stereo.

Create a Knob08 module and a Knob04 module. The Knob08 will be used for the basic pitch pattern and the Knob04 will be used to step through transpose values on one voice. Connect both Voice module Note inputs to the Knob08. Set the Transp input of one Voice module to Middle-C (60), and connect the other Voice module Transp input to the Knob04 output. Adjust the 4 stages of the Knob04 to the values: 48, 55, 60, 67.

Use the Fill of the Knob08 to set it to a one-octave C-Major random pattern. Do this by clicking on the Knob08 Fill button (the little blue button labeled "F"), then click on the Make button in the Quantize box (C-Major should already be selected - if not, select it), then click on Scat to randomize the positions, and OK to exit and keep the pattern.

Now connect the Step16-2 to the Pattern, inputs of both Pattern modules. Take some time to put in a few different patterns in the Pattern modules, and set the steps of Step sequencer. Here is how it should look:

The next step is to get the Knob08 sequencer to step. Create a Counter module - it should be "Counter-2." For a clock input to the Counter-2, we will use one of the two Pattern-16 modules. Connect the Counter-2 clock input to the Pattern16-5 module. The Counter-2 output should be incrementing in time with the Pattern16-5 output.

Now connect the Knob08-1 Step input to the newly created Counter-2 module, and you should hear the sequence begin playing. And, of course, repeating and repeating and....

Create a Random module. Connect its clock input to the other Pattern16 module, which should be Pattern16-6. Connect the Knob04 step input to the Random output. You should hear a syncopated tone shift, depending on how you have set the rhythm gate buttons on the Pattern16 modules.

We can add more variation to the tone pattern by making the Counter go backward and forward instead of incessantly forward. Since we already have a Random module, we can use that for the switch. Set the Random High input to 3. This will still work fine for changing the 0-3 stages of the Knob04 sequencer, and we can use the 0 / non-zero status to control the Counter up/down. So connect the Counter-2 Rev input to the Random output.

Now the Knob08 sequencer should be stepping (on average) 3 steps backward and one step forward. You can reverse that to 3 forward for every 1 backward by using a NOT module as you did in tutorial #4. Instead we will make it 50:50 by using the Flip module. Create a Flip from the Logic menu. Set the checkbox to on, checked. This causes the Flip output to alternate between True (127) and False (0) on every other gate it receives in the top, S input.

Connect the Flip S input to the Random output, and connect the Counter Rev input (that currently has the Rand connected), to the Flip output.

Next we will automate the Step16, that controls which pattern the Pattern16 modules are playing. The rate that the Flip is switching the Knob08 sequence up and down is probably a good one, so we will use that to step a Counter module, that will in turn step through the Step16 settings.

Create the new Counter module. It should be "Counter-3." Connect its clock input to the Flip output. Now connect the Step16-2 step input to the Counter-3 output. Now you should be getting a new rhythm pattern whenever the Knob08 changes direction.

Create and connect Number modules to the two Voice module ProgChg inputs. Create and connect TNames modules also to the Number module and load them with the General MIDI Program Change instrument names file, "GMInstNames.txt." Try setting different instruments. Often you will find the best effect in this kind of patch, where one voice line plays intervals around the other, is to set both to the same instrument.

For a finishing touch, connect the Reset inputs of Counter-2, Counter-3, and Stepper-2 to the Stop flag, as you did on the North page at the start of this tutorial. Now, when you click on Run/Stop your entire ensemble should play.

If you have taken the time to run this tutorial, you should by now have a good feel for how to put the modules together. So now take a little more time to do what is both the fun part and the most important part: Change the sequencer settings until you get a riff you like, then click on Snapshot to save it, make some more changes, click on Snapshot, and so on. After you have a few Snapshots, save your work. Then after you have run the next tutorial, Tutorial #6, which will teach you how to save your SoftStep patches in a MIDI file, come back to this patch and use your Snapshots to make a complete MIDI composition.

Here is how it looks:

SoftStep is Copyright © 1999-2002 by John Dunn and Algorithmic Arts. All Rights Reserved.