SoftStep v3.2 Overview

SoftStep is a Windows based modular MIDI step sequencer and algorithmic composing program patterned somewhat after the modular analog step sequencers. The big ones, with lots of knobs and blinky lights.

SoftStep modules connect together to produce a MIDI data stream that will in turn drive any MIDI synthesizer, or Windows MIDI sound card. Also, it will make a standard MIDI file you can put on your web page, insert into your music notation sequencer, or just play with any MIDI file player.

Here is the minimal SoftStep configuration that will produce sound:

In this case, the sound produced is pretty simple, just a single repeating note. Notice the topmost slot of the module on the right. It shows "Clock-1" in yellow. This indicates that the module on the left, labeled "Clock-1," is connected to the Voice-1 clock input.

The Clock module produces on/off values, and the Voice module uses on/off values in its yellow "Clock" input to initiate MIDI note on/off signals.

Getting Started

SoftStep is a bit like checkers or go: the moves are quite simple to learn but the variations are endless. To get started, first read the rest of this page for an overview of how SoftStep works. Then you might try the Tutorials, and /or some of the sample files. You will find both in the examples directory, which will be the default directory when you first run SoftStep. The directory path if you did a standard install is:

    C:\Program Files\Algorithmic Arts\SoftStep3\examples

...And if you prefer to just dive in, then go ahead - most everything in SoftStep has a tool tip that tells you what it does: just hold the mouse cursor over a button or control for a moment, and the tip will pop up.

First Sound

SoftStep produces no sound by itself. Instead, it generates MIDI data to control your choice of synthesizers, software synths, and sound cards. This is the same MIDI you hear when you play a MIDI file, but in SoftStep the MIDI data is being created in real time, and you hear the changes you make as you make them. But before you can hear any sound at all, you need to be sure your computer is set up for MIDI sound play, and to tell SoftStep which MIDI device to use.

The easiest way to tell if your computer is set up to play MIDI is to find a MIDI file (anything with the extension .mid), and double click on it. Do this when SoftStep is not running. Media Player, or whatever your default MIDI player is, should pop up and start playing the MIDI file. If it does not, you need to figure out what it will take to play a MIDI file with the default Windows MIDI player.

Once you have MIDI sound, exit all your other MIDI software, such as Media Player or any MIDI sequencer programs that may be running, and start up SoftStep. SoftStep can coexist with just about any other MIDI or audio or soft synth program, but keep it simple at first.

In the SoftStep Options pop up, make sure the MIDI Out Driver is set to the known working MIDI device on MIDI Port A, the first tab. All the examples use MIDI Port A only. It does not matter what you set as the MIDI In Driver, as this is not used by the example programs. If you are not sure which Midi Out Driver to select, simply select the first one listed, which will be the default Microsoft MIDI Mapper

Finally, load some of the example programs provided with SoftStep. Many of the examples require that you click the Run button on the Toolbar to start them, so don't overlook that.

The Basics

In the SoftStep universe there are only the numbers 0 to 127, the number set used by MIDI. SoftStep modules create and transform these numbers and send them out to one of your Windows MIDI devices.

You create SoftStep modules by selecting the module name from the Modules menu, and you make them function by linking the inputs to outputs. Modules have any number of inputs, but only one output.

Outputs are usually indicated by either a red LED graphic, or a box that contains the output value. Inputs are buttons that pop up a list of all the modules created. Select the module name from the list, and the output of the module name you selected connects to the input, and the button is automatically labeled with its connection. The connection list also has the numbers 0-127, which you can select instead of module outputs, as constant values.

In the example above, the Voice-1 module clock input has "Clock-1" connected, so the output of the Clock-1 module is connected to the clock input of the Voice-1 module. The Pan input to the Voice-1 module has been set to the constant number value of 64, the middle "(Mid)" number in the MIDI number range of 0-127.

Tool Tips

In addition to this on line Help, SoftStep has extensive tool tip help. Tool tips are little one-line notes that pop up when you hold the mouse cursor over a control. Nearly every active control in SoftStep has this feature.

SoftStep Numbers

As mentioned above, the number universe for SoftStep is 0-127. There are no other numbers available to it. This works because MIDI numbers are 0-127; it is an artificial limitation - an artistic constraint if you will - but it has many benefits when working in the MIDI context. The most obvious one is that you cannot make a mistake.

The exception to this 0-127 limit (and where you can make a mistake) is the User Programmable Function modules, which allow you to use any numbers, any way you like, to create your own custom functions.

There are two ways to treat numbers in SoftStep. As a number value (60 as the value for MIDI middle C), and as on/off values, called "gates". Modules that produce gates usually generate 127 for "On" and 0 for "Off." Modules that want gates for their input accept 0 as "Off" and anything else at all as "On." Gate inputs are colored yellow to distinguish them from value inputs, which are green. Thus, the MIDI Voice module shown above ("Voice-1"), which wants a gate in its yellow clock input, accepts the Clock-1 output which is 0=Off and 127=On, but it is just as happy with 1=On or anything else not zero. Off can only be 0.

SoftStep Modules

To create a MIDI composition with SoftStep you create the modules and connect them together. Modules are math and logic functions that you treat as physical boxes that you can create, destroy, move around, connect and reconnect. Modules have connection inputs, parameter inputs, and one (or no) output.

Of the modules above, the Level module has a connection input (green button), two parameter inputs (the knobs), and one output (visible as the blue number in the upper right box). The Meter module has 4 connection inputs, but no parameter inputs, and no output. It is simply a display of the values present at the connection inputs. The Value module ("Val-1") has no connection inputs. It has only a parameter knob which goes directly to its output, which connects to another module's input. As in the case of the Value module, not all modules with outputs show them in an output box. Since this module's output is exactly the same as its knob value, an output box would be a waste of screen space.

Creating Modules

Create a module by selecting it from the Modules menu. The module will appear on the work screen and you can move it anywhere you want. Or you can just right click on the workspace background: the Modules menu will pop up, and the module you create will be positioned where you clicked (you can also shift-click or ctrl-click to create another of the last one created). It does not matter where the module is on the screen, or even if it is away from the viewable screen. As long as the module is "Alive" (has not been deleted), it will function where ever you put it.

Connection Inputs

When a module is created, it is given a unique name - the module name plus a number - and it is placed in the list of all created modules that have outputs. This list appears in a pop up box when a connection input button (black box with green text) is clicked. To connect a module's output to a connection input, simply choose the module name - which is also its output name - from the pop up box.

In the example above, the Add-1 module is about to be selected for the input to the NOT-1 module. Notice that the output to the NOT-1 module is also in the list. It is quite legal to connect a module's own output to one if its inputs. In fact, there are no illegal connections in SoftStep. You can (and often will) make connections that do nothing, but you simply can not make a connection that will "break" the system. One of the great pleasures of working with modular systems, both the hardware and software kind, is making a completely illogical connection that does something unexpectedly wonderful. It happens all the time.

While the connection list can grow quite large as you build your composition, it is easy to find the connection you want as the list is always in alphabetical order. The exception to this is that the constant values "Off (0)," "Mid(64)," and "On (127)" are always at the head of the list, and the other constant values and the control flags (Run, Stop, etc.) are always at the end of the list.

Note Timings

SoftStep cycles through all the created modules at a constant rate that is tied to the MIDI data flow standard. This rate is 24 calculation cycles, called "ticks," per quarter note. The actual time between calculations is set by the Tempo slider at the top of the main screen. At 120 bpm, each module will be processed 48 times per second (120 x 24=2,880; 2880 / 60=48).

SoftStep follows the MIDI standard for note ranges - to a point. At the MIDI standard of 24 ticks per quarter note, the smallest full note unit available is the 32nd note, or three ticks. SoftStep follows this standard, giving you standard note ranges from 32nd to Whole, with the dotted/triplets in between. It then extends this to include double whole notes, quad whole notes and 8 whole notes (called "bars"). At the other end of the speed spectrum, SoftStep gives you direct access to the internal calculation stepper, which is the equivalent of a triplet 64th note. When faster note values are needed they are easily created by increasing the Tempo setting.


Priority is the order in which SoftStep processes Modules. Modules are actually math and logical functions that are processed by the computer one after another, once each tick. Since SoftStep is producing a time-based MIDI stream, the order in which the modules are processed often matters. Getting it wrong may result in a slight but audible timing glitch. In SoftStep, the order of processing is preset in a way that gives the correct results most of the time, so you can probably ignore the issue at first. But as your compositions grow in complexity you are likely to want to adjust the priority of a few modules in order to clear up (or create!) a timing glitch.

Modules are normally processed in the order they appear in the Modules menu. To change the default processing order, click on the priority icon on the upper left of the module, that shows "2." A small pop up window will appear that shows 5 priority levels, plus buttons to disable or delete the module. When modules are created they are set to priority 2. By selecting priority 1 you force the module to be processed ahead of the other modules, by setting priority to MIDI, 3 or 4 you set it to be processed after other modules.

The MIDI Input ("M") priority has a special function. Modules set to M are normally processed the same as other modules in the priority chain, with M modules executing after priority 2 but before priority 3. However when a MIDI input is received, and if the matching MIDI Trigger Options are checked, modules set to M priority will process instantly when the input is received. This gives SoftStep the ability to act as a super MIDI filter, probably the most advanced ever. With it, you can design your own set of Karma-like MIDI filters not as a factory-made rubber stamp, but as your unique signiture.

In addition to the 5 priority levels, modules may be set to one of the two absolute (not changed by the Tempo setting) processing loops. See Abs Clocks in the Options menu for details.

Some modules do not have these "priority icons." This is because either it doesn't matter when they are processed as with the static Value modules, or because the module must be processed last, as with the MIDI modules.

Deleting Modules

When you delete a module (by clicking on the "Delete" button described above), the module name is removed from the connection list, and all modules that were connected to the deleted module are connected to "Off (0)."

Modules that do not have the priority button can still be deleted. Some will have an "x" button in the upper left; other modules, such as parameter input controls that have no room for an "x" button, are deleted by shift-click or right-click combinations. If it is not obvious how to delete a module, simply move your mouse over its controls and read the tool tips.

Modules can be made inactive without deleting them by clicking on the "Disable" button just above the "Delete" button. The priority icon will change from a number to a red square indicating the module is inactive.


SoftStep has a powerful Snapshot system that gives you the ability to save all your settings with a click on a button on the Toolbar. You can store up to 128 Snapshots. Loading a snapshot is very fast, and can be done under software control or with MIDI Program Change messages.

Computer System Requirements

SoftStep runs on all Windows operating systems from Windows 95 on. This includes Windows 95, 98, ME, XP, 2000, and NT4. While there are no hard limitations on CPU speed, we recommend 300 MHz or faster for best results. You also need a MIDI compatible sound card or interface. See First Sound for details on how to be sure your computer has MIDI capability. A graphics display of at least 1024x768 High Color (16-bit) or True Color is recommended. For best results, system memory should be at least 32 MB.

Software Synthesizer Compatibility

SoftStep has been tested extensively for compatibility with popular software synthesizers such as Reaktor, VAZ2, ABox, GigaSampler/GigaStudio, and Pulsar. When using SoftStep to control a softsynth, we recommend a minimum CPU speed of 500 MHz, and at least 64 MB of system memory.

Most soft synths do not have their own MIDI drivers, and therefor require a program called a MIDI Loop Back in order to run them with SoftStep or any other MIDI generator. This gives you a set of virtual patch cords, where you can send the output of SoftStep to a Loop Back input, then connect your soft synth to the same Loop Back output. These programs are available as free downloads, they are easy to install, and once installed they are trouble free. SoftStep works very well with any of the several free MIDI Loop Back drivers, such as Hubi's MidiLoopBack (Win 95/98), MidiYoke (Win98/2K/XP), Maple MIDI Tools (Win98/2K/XP), or Sonic Foundry's Virtual Midi Router (Win98/2K/XP).

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