Clocks Menu

Modules in the Clocks menu create time events. These modules are first in the priority chain because everything else depends on them.

There are two types of time events available: gates and steps. Gates are zero to non-zero transitions, and steps are transitions from one number to another. Steps are usually, but not always consecutive. Most modules use steps for their timing controls, but the few that need gates need only gates - steps won't work as the gate inputs need the zero to non-zero transition to function. Inputs that need gates are labeled yellow instead of green.


The Clock module is the basic time event generator. It produces On (127) and Off (0) gates at the rate set by the Duration (Dur) parameter input. The percentage of time the gate is on is set by the %On control which has a range of 0 to 100%. The Clock Hold input stops the clock from ticking, when it is released the Clock resumes at the start of the next note.

Duration: Note time durations are the same throughout all the modules in SoftStep that have duration inputs. The minimum time interval is the tick, which is defined by the MIDI standard as 24 ticks to the quarter note. Thus, a quarter note has 24 ticks, an eighth note 12 ticks, a half note 48 ticks, and so on.

In SoftStep, Duration input values of 2 through 96 are the same as the tick count. Thus an input of 2 gives 2 ticks, 3 gives 3 ticks, etc., up to the Whole note value of 96 which gives 96 ticks.

Since a clock needs a minimum of 2 ticks - one for the on cycle and one for the off cycle - durations of 0 and 1 are not meaningful, so SoftStep translates these inputs as: 0= Eighth note (12 ticks), and 1=Quarter note (24 ticks). Duration input values greater then 96 are assigned to doublings of the note values for the notes, dotted notes, and triplet notes, starting with the whole note. Here is a table of all available note values.

Ticks Note Value
Input = Ticks

(See Note Module
to translate Note Values
to Input Values)
Whole Note
triplet Double
dotted Whole
Double Whole
triplet Quad
dotted Double
Quad Whole
triplet Bar
dotted Quad
Bar (8 x Whole)
triplet Dbl Bar
dotted Bar
Double Bar

% On durations are ignored by most modules, but the MIDI Voice and MIDI Key modules use them to determine the on duration of played notes, with small values playing staccato and higher values going toward legato. An on-time of 0% gives an on duration of exactly 1 tick, and 100% gives full on except for the last tick at the end. Because all timings in SoftStep are in ticks, the accuracy of the gate duration time is limited to the number of ticks in a note. A quarter note, with 24 ticks, gives good enough accuracy; but a 32nd note, with only 3 ticks doesn't have much to work with. Keep this in mind if you need to work a lot with on durations, perhaps compensating by using slower notes with a higher tempo setting.

SoftStep notes are hard synchronized. This means all quarter notes in all modules start at exactly the same time, all whole notes at the same time, and so on. This is necessary in order to switch rapidly between note settings or between different clocks, without loosing sync. This does not mean you are stuck with robotic timing - you can introduce odd note timings in many different ways. The most direct way to change Clock timing is to pass the output through a GHold or Delay module. Or you can use the Free Run Clock, below.

Free Run Clock

The Free Run clock, as the name implies, is not synchronized to the SoftStep note timings. It simply counts ticks, starting from release of a Hold input, or on a Run/Start trigger.

In most cases, the Clock module is preferable because you can change clock speed without ever loosing synchronization with other running clocks. But when you control the clock duration on a note by note basis, such as by using sequencer values to control the Clock module's step rate, its hard sync sometimes will not "let go" fast enough, and the timing steps can become different from what you set them to. In this case, the Free Run Clock is better. It will deliver accurate timing steps in a feedback loop where the Free Run Clock module steps the sequencer module which in turn supplies timing information for the Free Run Clock module.

Inputs are the same as for the Clock module, except the tick counts continue beyond 96 in a smooth transition. The tick count is the combination of the Dur times the Mult (multiply) inputs. Dur of 0 and 1 are converted to 12 and 24 same as the Clock. Mult of 0 is converted to 1.


The Ball module produces a gate whenever the moving ball bounces off the side of the module. You can set the ball speed and you can adjust the width and height of the module to change timing. It is a great module to play with, although probably most useful musically when running very slowly, to produce scattered decorative notes.

Change speed by clicking on the tiny button in the upper left. This will increment the speeds from 1 (very slow) to 12 (crazy). To delete the module, hold the Shift key and click on the button. To freeze the module, hold the Control key and click on the button.

Unlike the Clock module, the Ball module is not synchronized. It moves in tick increments with little or no control over where in a note cycle the gate will fall. In fact, Ball doesn't recognize note values at all. Also, the gate duration is only 1 tick. An easy way to extend and control the gate duration is to pass the Ball output through a GHold module. And if you really do want synchronization with the Clock and other note generators, you can always pass it through the Sync module for perfect lock-time sync.

Another quirk of this quirky module is that it doesn't produce standard gate signals of 0=off and 127=On. Instead it generates a unique number for each side it hits: 1 for an East wall hit, 2 for West, 4 for South, and 8 for North. These numbers add in unique binary combinations (logical-OR) that can easily be separated if you want to create separate sound tracks for each side the ball bounces off of. The logical operation is to AND the output with number of the wall you want to use. SoftStep has a logical AND module, but it also has a nifty Mask module just for this kind of thing. The Mask module has buttons you click that will filter out whatever sides you want to use.

Ball Control

Ball Control can dynamically change the horizontal and vertical speed of the Ball module. The top input button controls horizontal speed, the bottom input controls vertical speed. Select which Ball module to control with the drop down menu in the lower right corner. The output of the Ball module being controlled is displayed in the output box, the LED flashes whenever the ball hits a wall.


Arpeggiates a clock gate at the Clock input. The Note input sets arpeggio speed, with the same note settings as the Clock module; on/off time of the arpeggiated steps is set by the %On input. Set the number of steps with the Steps control. Setting this to 0 effectively holds the module to 0 output, setting it to 1 causes it to follow the clock input (except that the note on/off ratio is that of the arpeggio module, not the clocking module). Setting the Steps input to any value from 2 on gives that number of arpeggiated steps per input clock.

The output of the Arpeggio module is the step number for "On" and 0 for "Off." This allows you to plug the output into a sequencer module to make pitched arpeggio steps. The sequencer will bounce from the step number (for example 3...2...1) to 0 for the "Off" part of the step. If you are driving a MIDI Voice module with the Arpeggio module as the Voice clock input, this bounce to 0 will not be heard, as that is the note-off time. If you want to produce a stable step for each arpeggio step, without the bounce back to 0, just plug the Arpeggio output into both inputs of a Sample module. The on/off transition part will trigger the sampler, and the on part is what will be sampled.


The Counter, as its name implies, counts. It takes gates and converts them to numbers. Gates at the Clock input (top input colored yellow) are typically but not necessarily from a Clock module. As always, a gate is any 0 to non-0 transition. It doesn't have to be On(127)/Off (0) as produced by the Clock module.

Counters are used most often to address SoftStep's various types of sequencers - which are somewhat misnamed because none of them know how to sequence. That is what the Counter does for them.

Limit sets the upper limit of the count, the point at which it rolls over back to 0. Since the count starts with 0, the count will roll over at the number you specify, which is 1 less than the actual count. For example to address the first 8 stages in a sequencer and roll over again, set the limit to 7, which gives 8 steps numbered 0-7. This may seem odd, but it becomes natural because the sequencer stages are numbered starting with 0, so the Counter count follows the sequencer stages it addresses.

Rev (Reverse) causes the clock input to count backwards from Limit down to 0, and roll over to Limit again. Any non-zero in this input causes the Counter to reverse, 0 makes it go forward.

Reset stops the count and sets it back to 0. Any non-zero causes a Reset, 0 releases it.

Hold stops the count but does not set it to 0. Any non-zero causes a Hold, 0 releases it.


The Stepper module is a combination of the Clock module and the Counter module. It takes a duration value input same as the Clock module, but it produces a running count, like the Counter module.

The topmost duration input takes the usual tick values described in the Clock module - but with one important exception. Setting the duration input parameter to 126 puts the counter in Turbo mode, which means it generates a count on every tick, equivalent to a triplet 64th note. This becomes most useful when using the Stepper to address the Pattern modules, where you set up rhythms by clicking on the gate step buttons, and you want the Pattern module to run at system maximum. When in Turbo mode, the "Dur" label changes to "Turbo," and changes color to yellow.

The other parameter inputs operate the same as the Counter module: Limit sets the count upper limit; Rev counts backward; Reset resets to 0 and holds; Hold stop the count without resetting.


The Rhythm module produces step-time gates, like the Japanese beat boxes. It has 7 simultaneous rhythm lines that you can select individually or in combination. You can run the rhythm lines as a single cycle or with loop points on each line set individually to generate cyclic rhythms that phase shift, like African drummers.

The Note input, which is the topmost of the two connection inputs, takes the usual tick values described in the Clock module. And like the Stepper module, setting Note to 126 puts the module in Turbo single tick mode. Additionally, setting the Note to 127 will cause the module to Reset to 0 and hold until the Note input is returned to a "legal" value, or the Turbo value of 126. The "Turbo" label toward the bottom left of the module changes from "Turbo" to "Note" to "Hold" indicating the current mode.

There are two Row Select inputs: the connection parameter input just under the Note input, and the green column of click-switches just to the right of the parameter inputs. Whichever of these inputs is used last is the one that does the job - which is to select which of the 7 rhythm rows is active. Active rows are indicated by the green row select switch being highlighted; when a row is inactive the switch is dark green.. Also, when a row is active you will see the yellow column indicator moving left to right.

Set the rhythm gates from the dark red field of squares. Click on a square to switch that position on or off. When on, the square is bright red, off is dark red. To set the cycle length for a row, double click on the last square you want to be active. All the squares from the next to the end will turn gray, indicating they are no longer active.

As you move your cursor in the rhythm gate area, the little gray text box just below the blue output indicator box will change to indicate which column the cursor is over. The checkbox to the left is to turn this feature off, and to turn off the column indicators. You might do this if you are using a large number of modules in Turbo mode, to economize on CPU processing time.

The three buttons to the right of the connection buttons, labeled C, P, and U, are for Copy, Paste, and Undo. This allows you to easily copy a rhythm pattern from one module to the next. Undo is a one-level swap. That is, it only will undo the last Paste, but if you click it again it will undo the undo, etc.

The blue row of indicators at the far right are output indicators, same as the blue output box, but in binary format, reflecting the output from each individual row.

Output from the Rhythm module, is a number that represents the gate switches at the current active position for each active row. Visually, this is where the moving yellow box is at any given time, bright yellow for On gates and dark yellow for Off. These numbers add in unique binary combinations (logical-OR) that can easily be separated if you want to create separate sound tracks for each rhythm row. The logical operation is to AND the output with row position numbers you want to use. These numbers, from top to bottom are: 1, 2, 4, 8, 16, 32, 64. SoftStep has a logical AND module, but it also has a nifty Mask module just for this kind of thing.

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