While SoftStep has several different types of step sequencers available, the basic operation is the same for all of them: you give them an input value and the stage that corresponds to the input goes to the output.

The SoftStep sequencers are more accurately sequencer components. They don't actually sequence until they are connected to a module that can supply a sequence of indexes, or stage addresses. Typically, but by no means always, this would be modules that count such as the Counter or Stepper. Connect one of these counting modules to the input of the sequencer, and it will sequence from one stage to the next up to the end, and then roll over to the beginning and cycle again.

The advantage of separating the stage part of the sequencer from the indexing part is that the stage part - the sequencer modules - can be addressed randomly. This gives you the ability to use sequencers for more than just stepping up and down through a note pattern. As translators, for example, that convert a chromatic scale into any other scale you like.

Sequencer modules come in a variety of types and may be available in several stage sizes, however they operate virtually identically, and the sequences they contain can be freely moved from one sequencer to another with the Fill Utility.

The common controls for sequencers are:

Connection input, the green button. This accepts the any value - if the input value is greater than the number of stages, the sequencer wraps the number around. For example, an 8-stage sequencer will go to stage 3 when given an address of 11.

Stage controls, the knobs, sliders, or whatever that define the stages. There will be one for each stage, with a LED indicator above it to indicate which of the stages is active. Page and Run sequencers do not have stage controls, instead you use the Fill utility to set stage values.

Output display box. This really doesn't do anything. It's just a visual indicator of the output.

Fill utility button. This is cut and paste on steroids. It automates most if not all of the tedium of adjusting the stage controls, of transforming them, and moving them among the different sequencers.

In the sequencer module descriptions that follow, only one example image will be shown, as all sequencers of a given type are similar except for the number of stages.


Knob2, Knob4, Knob8, Knob12, Knob16, Knob24

Knobs and blinking lights are what define the classical analog step sequencers, so we would be remiss if we didn't have some in SoftStep.

If you just click over a knob without moving the mouse, the stage will go to that knob until you release the mouse button. If you move the mouse, the value will change to the mouse position angle. The best way to control SoftStep knobs is to move the mouse outward from the control after you have pressed the button, then move in a circle around the knob. Moving outward first gives you a larger radius of control and makes for smooth, precise adjustment of parameters.

The small blue button labeled "F" is for calling up the Fill utility. The button labeled with a number, selects the knob graphics. 1=normal knobs with values printed in the center of the knob; 2=color coded knobs, with lower value knobs in blue, center values green, mid high values yellow, and high values red. The button labeled "L" locks the knobs so they cannot be changed with the mouse.


Step2, Step4, Step8, Step12, Step16, Step24, Step32

The stage controls for Step sequencers are text boxes that will accept only the numbers 0-127. You can right click for normal copy and paste operations. The spin button increments or decrements the current stage. The Fill utility is accessed with the small blue button labeled "F."


Slide4, Slide8, Slide12, Slide16, Slide24, Slide32, Slide48, Slide64, Slide128

The stage controls for Slide sequencers are - sliders. Left click on a slider to adjust its value up or down; or you can right click and drag the mouse across the sliders to "draw" on them. You can also use the spinner control to adjust the value of the currently active stage incrementally. The Range knob sets the range of the sliders to give more accurate feedback. Sliders are the only sequencers with variable range. Reducing the Range value is a visual effect only, it does not change the values. You can adjust the values to the visual range with the Norm button. When you do this, the Undo button becomes active and allows you to restore the original values..

There is a subtlety when using 12, 24, and 48 step sequencer sizes: normally if you use a Stepper or Counter module as the index source, and you leave the default Limit set to 127, everything works fine because as the index is counting 128 steps, 0 to 127, the sequencer is rounding off the count to its step size of 4, 8, etc. - all even divisors of 128. Since 12 and 24 are not even divisors of 128 there will be a roll over glitch when the index module rolls from 127 back to 0. So when using sequencers of the 12, 24, and 48 size, you should be sure your index module is set to an even divisor of the sequencer size.


Pro: Run8, Run12, Run16, Run24, Run32, Run48, Run64, Run128

Run sequencers are the Zen of sequencers. They are highly efficient users of system resources, and are a good choice when you need a lot of sequencers. The rightmost blue text box is the output value, the green box below it is the current stage. Stage values must be set with the Fill utility, accessible by clicking on the blue button labeled "F."


Pro: Page08, Page12, Page16, Page24, Page32, Page48, Page64, Page128

Each Page sequencer is effectively 128 simultaneous Run sequencers that you can rapidly switch among using the Page input parameter button.

Stage values have to be transferred from another sequencer or created with the Fill utility. When you are setting up a sequence, you must first specify which page the sequence should be stored in, by setting the bottom Page input parameter to any page number 0-127.

The 128 pages stored in each Page module are not affected by Snapshots. That is, when you save a Snapshot, or you change patches by selecting a Snapshot, the current page number is saved or changed as you would expect, but the sequences in the pages themselves remain constant.

Page sequencers share the same data structure as Table modules, but while all Table modules use the same data table, the Page sequencers each have their own. Like the Table module, the Page sequencers use a table of 128 named pages, that you can view all at once with the "T" (Table) button in the lower right. Click on it to access the Table/Page editor popup window. This is the same one as the Table sequencers use, and you can exchange data among them, storing Tables in Page sequencers and vice versa. See the Page Table Editor for details.

The blue output indicator box at the top right of the module is the output value, as usual. The green box below it is the stage number. The white box at the bottom, to the right of the Page parameter button is the current page number.. The "F" button accesses the Fill utility.


Matrix4x4, Matrix8x4, Matrix8x8, Matrix12x8, Matrix16x4, Matrix16x8

Matrix Out

MOut4x4, MOut8x4, MOut8x8, MOut12x8, MOut16x4, MOut16x8

Matrix Sequencers are an array of knobs that may be addressed by row and/or column. The topmost connection input controls the column, the second input controls the row. Indicator LEDs along the top and left edge of the knob matrix show the row, column being addressed and the intersection is the knob that goes to the output. The MatrixOut module echoes these inputs, and gives you the option of having multiple outputs to the Matrix sequencers. As in all satellite modules, the drop down menu selects the module number it is slaved to.

On the Matrix Sequencers, the third input from the top controls the Table Page. Matrix sequencers have both table pages, like the Page Sequencer; and the knob settings are also remembered by the SnapShot system. The page tables are private to each matrix sequencer. You can access them and give them a name with the Tbl button, the 3rd of the light blue buttons along the top of the module.

Table page 0 is treated differently than the other pages - it is not loaded by the Table Page connection input. This allows you to treat a 0 value in that input as an "Off" separator, so you can switch from any other page, to page 0, and then back to the previous page, to reload the page without having to reload some other page (pages reload when the input changes). This is useful when using the pages as a restart value for the Life and CA modes.

The bottom, clock input runs Cellular Automata generation. Matrix sequencers can be used as passive knob sequencers, that simply send the preset knob values to the output, and they can also be used as generative modules that run Cellular Automata algorithms, which change the knob settings at each generation. The clock input is not needed for normal sequencer output; it is only used to generate new CA generations.

Along the top of the module, the first two of the light blue buttons invokes the Fill utility. The first of these, labeled "Fill," is the normal Fill of all knobs; the second button, "Row," only accesses the currently addressed row of knobs. The button labeled "Tbl," described above, opens the module's private table page window. The next to the last button, labeled with a number, selects the knob graphics. 1=normal knobs with values printed in the center of the knob; 2=color coded knobs, with lower value knobs in blue, center values green, mid high values yellow, and high values red. The last blue button, "L," locks the knobs so they cannot be changed.

The bottom group of light blue buttons control the Cellular Automata modes. Buttons on the x4 modules are slightly different than buttons on the x8 modules, but their functionality is similar. The first of these, "K" and "Kick" tell the module to kick start when the CA generation become static, or freezes. Both Life and 1D-CA are susceptible to becoming static and not able to continue to produce new generations. They may just stop new generations, or they may produce the same two generations over and over. With the kickstart option, when the CA algorithm freezes, it is reseeded with random values. You have the option to reseed with something other than random, such as a previously set up table page, by using the Test module, and testing for the Freeze flag.

The type of Cellular Automata can be selected with the button labeled "Hi" in the x4 modules, and the bottom blue button on the x8 module, that changes from "Life" to "HiLife" to "1D-CA." The x4 modules only run Life and HiLife; the x8 modules also run 1D-CA. 12x8 modules do not run any of the CA algorithms and have no clock input or CA buttons.

Life is John Conway's Life algorithm that states:

  1. An empty cell will come to life if it has exactly three live neighbors.
  2. If a live cell has four or more live neighbors it will die from overpopulation.
  3. A living cell with only one or no neighbors will die from underpopulation.

HiLife is the same as Life, but it also generates a living cell if there are 6 neighbors. This tends to produce a more populated Life matrix.

1D-CA is one dimensional cellular automata, as distinguished from Life which is a 2D-CA. 1D-CA only operates on a single, linear, set of cells represented here as a row of knobs. After each 1D-CA generation, the previous generations are shifted down one row, and the new generation is inserted into the top row. This gives a top-down progression. The 1D-CA algorithm examines each cell's neighbors to its immediate left and right, and applies a set of rules to determine whether the cell will live or die.

The 1D-CA cell and its two neighbors can be viewed as a 3 digit binary number 000, 001, 010, etc., with the center digit representing the cell and the outer digits representing the adjacent neighbors. This gives a total of 8 combinations. These can be represented as 8 bits of a binary number, for a total of 256 possible combinations, ("Rule Set" or just "Rules"). When the CA mode is set to 1D-CA, there is a column of on/off buttons with each of the possible rules. Click the buttons on to apply a particular rule. The default setting is a good general Rule Set, but you are free to set any combination you like.

Since SoftStep values are limited to the 0-127 range, and the CA Rules are from 0-255, some special method is needed to be able to save CA rule values in the Page Tables. This is done by saving the CA Rule Set as a binary number in the Page Table text label. Whenever you click on the Tbl button, the current binary value (i.e. "01011010") is inserted into the Page 0 label - you can then copy it to whatever other page you want to save it to. If a page label does not contain a valid binary number as the first part of the label, no change is made to the Rule setting, so you can ignore this feature if you wish. Also, the binary digits are read until something other than 1 or 0 is encountered, and that is taken as the number - so you can follow the number with other label text if you like.

The button labeled R in the x4 modules, and "Rand" in the x8 modules determines whether the knob settings are set to specific values for each of the generated cell types, or whether they will be a randomized value near the value range. For Life, the knob settings are: Dead = 0, Newly Dead (underpopulation) = 32, Newly Dead (overpopulation) = 64, Alive and stable = 96, Newborn = 127. For 1D-CA the knob settings are: Dead = 0, Newly Dead = 32, Alive = 64, Newborn = 96.


Pattern08, Pattern16, Pattern32

Pattern sequencers are halfway between regular step sequencers and clocks. They have stages, like the other step sequencers, but they produce only gates, like clocks. These modules generally are used as rhythm generators, but as in all SoftStep modules, they can be used however you like.

The stage controls for Pattern sequencers are buttons. Click to switch between Off=0 (turns blue) and On=127 (turns yellow). On and Off gate status for the current stage is shown just above its button, and by a rectangular LED at the right end of the module name label.

In addition to theStage input, these modules also have a Pattern input. You can select from 128 different patterns, 0-127, each a different set of On/Off buttons.

The 128 patterns stored in each Pattern module are not affected by Snapshots. That is, when you save a Snapshot, or you change patches by selecting a Snapshot, the current pattern number is saved or changed as you would expect, but the patterns themselves remain constant.

Pattern sequencers are processed just after the Logic group, and so they appear in the Modules menu ahead of and separate from the other sequencer modules.

As Pattern sequencers produce only the gate values of 0 and 127, not number values, there is no Fill button. However since there are up to 128 different patterns per Pattern module, there is a quick method of copying and pasting patterns from one Pattern module to another: Click on the little gray button just left of the stage LEDs to copy all 128 patterns to a clipboard; Shift-click to paste patterns that were previously stored in the clipboard to the module.

Additionally, because you will often want to copy an existing pattern to a new pattern, make a slight modification, then copy that to the next pattern, etc., you can do this one-pattern copy with a Control-click - which fetches the previous pattern into the current pattern.

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