Files Menu


The File sequencer accepts data files of any practical size as sequencer values, and it also allows you to create an empty sequence of any size. This module can be used in combination with the User Function modules to create, modify, and write large custom sequences of data. It is also compatible with the DataBin program, separately available from Algorithmic Arts, which allows you to turn virtually any type of data into source material for your algorithmic music compositions.

The three small gray buttons on the top left of the module labeled "O," "S," and "N," are to Open, Save and create a New file sequence.

Open - Click on the O button to bring up a file load dialog box. There is no restriction on what kind of file you read or what size it is. As a practical matter, since files loaded into the File module are saved along with the rest of your composition, it is not a good idea to load megabyte size files - but you can if you want.

Regardless of the files contents, The File sequencer treats the file as binary byte data. Since the number range of SoftStep is restricted to 0-127, this module's output is restricted to the 7 least significant bits of the data byte. This happens to be the number range of text characters, so when using the File module to read text files, the characters fit into the data range exactly.

Bit 8 of the file data is not lost, it is simply separated away from the other 7 bits. You can read the bit 8 status of the file data with the Test module, which also has the ability to test for the start of the file, the end of the file and the next to last step of the file. See that module's documentation for details.

You can also load the file from the Windows clipboard, by holding the Shift key down when you click on the O button. Whatever text that is in the Windows clipboard is converted to the ASCII/ANSI intergers 0-255.

Save - Click on the S button to bring up a file Save dialog box. You can give the file any name and extension you wish, but it is customary to use the extension ".bin" for binary data, and that is one of the filters available in the drop down filter list. You do not have to use Save to keep File sequencer data. Once the data is in the sequencer, it is automatically saved as part of the patch.

The file sequencer data can also be copied to the Windows clipboard by holding the Shift key down when you click on the S button. The sequencer data is converted to an ASCII/ANSI string, so that the number values become character values (i.e. 65 becomes "A," 32 beecomes space, etc.).

New - Click on the N button to create a new sequence. A small window of data creation options will pop up:

The default, if you just immediately click on "OK," is to create a sequencer of 128 bytes, filled with 0. But you can specify the sequencer size and the fill value, and you can optionally fill with random numbers or 1/f random walk values.

Enter the size of the sequencer in bytes (steps) in the box labeled "Sequencer Size." This can be virtually any size you want but remember the file data is saved as part of the patch, so very large data sizes will result in very large .ssp files when you save them. Also, if you give a file size larger than your computer's memory the sequencer will be created but accessing it will be unacceptably slow because it has to invoke the virtual memory from disk storage.

Select the "Fill With" option you want. Default is to fill with a single value. The default fill value is 0, but you can change that to any byte (0-255) value by typing it into the box labeled "Value/Range."

Select Random to produce random values between 0 and the Value/Range setting; select "1/f" to fill with 1/f random walk values. The default range changes to 255 for random and 127 for 1/f. You can set the 1/f range to 255 but since the Fill module only returns the lower 0-127 range, the Random Walk will become more of a Random Hop as values above 127 are truncated.

General Information about File:

Unlike the other sequencers, File is not randomly addressable. This is because the file size can be far greater than the 0-127 number range. Therefore, the File menu has its own built in counter, with functions similar to the Counter module. The exception to this is the User Function modules and programmer, which can read and write randomly or sequentially to the File module data area. See the UF Programmer Sequencer Cell Access for more information.

The green box to the right of the OSN buttons is the current address of the file from which the output is taken; the blue box above it is the standard output value box.

File sequencers do not change contents with each snapshot, as in most cases this would be quite unwieldy. So if you want to sequence multiple data files, use multiple file sequencers rather than multiple snapshots of the same File sequencer. The other inputs to the module do change parameters with each snapshot in the usual way.

The File sequencer does not have a Fill utility button. However, as Fill has the ability to both read and write its sequence data, you can easily move data between the File sequencer and the other sequencers. The only restriction is that the Fill utility has a view limit of 128 steps, and a value range of 0-127.

File module control inputs:

Clock - Stages are addressed by an internal counter which is advanced when it receives gates at the Clock input (top input colored yellow). Clock gates are typically but not necessarily from a Clock module. As always, a gate is any 0 to non-0 transition. When the end of the file is reached, the counter rolls over to 0 and continues.

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

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

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


Chain gives the ability to use automated module signals to either exit SoftStep, or to load another SoftStep composition (.ssp) file. The module is called "Chain" because you can set up a chain of one composition loading another, etc., as long as you like, or even set up an infinite loop.

Use the Get button to set up the file name you want to chain to. Get does not load the file, it only stores the name of the SoftStep .ssp file to be loaded when you trigger the Strobe input. The file data itself is not stored by SoftStep, only the file name. Thus, if you move the file or rename it, the module will no longer function until you update its filename. To set the module to exit, select "Cancel" from the Get button file dialog.

Safety must be non zero for the module to work. Also, the Options Trigger Off box must be unchecked (the default). This is to help prevent accidental exits or loads.

To initiate the exit or file load, send a non-zero strobe (non-zero after zero) to the topmost strobe input. If the Safety input is non zero, the file will load. Or, if it is set to "Exit SoftStep" (the default), SoftStep will exit.


MIDI File & MIDI File Slave

These two modules combine to give SoftStep module access to standard MIDI file data. They read and play back track data that is imported from a MIDI file with the MIDI File Reader available in the File menu (File/Import MIDI File). Data tracks are loaded one per module, and generally you would load the longest track into the MIDI File module as that module controls the looping, restarting, and tempo for itself and all MIDI File Slave modules slaved to it.

The MIDI File module has a Tempo input (left) that allows you to adjust the playback tempo of the MIDI file, and a Reset input (right) that allows you to reset the sequence to the start or to hold the sequence without resetting. An input value of 127 causes a Reset; any other non zero causes a Hold.

Of the two check boxes on the lower right, the top one sets whether the module will loop when it reaches the end (checked) or just stop at the end (unchecked); the bottom check box determines whether the module will set the system tempo to the original MIDI file sequence (checked) on reset, or play at the unchanged system tempo (unchecked).

The file load button says "Get" at first, and you click on it to load (get) the .mfx sequence file into the module. Once the module has data, the type of data is shown on the button: "Vel" for velocity, "Key" for note or key number, and so on. Also, the file name will be shown on the label toward the bottom of the module.

The Vel data can be plugged into both the Clock input of a MIDI Voice, and the Velocity input. It works as a Clock because the values alternate between the velocity value and 0; and it works as the Velocity input because this is read only when the Clock input triggers.

The MIDI Slave Module gets its control information from the MIDI File module it is slaved to. Set this with the drop down menu in the upper left of the slave module, setting it to the same number as the controlling MIDI File module. If you have created only one MIDI File module, then the only choice will be 1, and it will be set by default

To import a MIDI file into the modules, open the reader, shown above, from the File menu (File/Import MIDI File). The window on the left shows all the tracks that are in the MIDI file.

The column of 16 channel buttons in the middle will show which channels are available on the selected track. Often there is only one MIDI channel per track; sometimes there is only one track with multiple channels. Whatever the combination of tracks and channels within a track, the channel buttons will become enabled for however many tracks there are, and if more than one you can choose a particular channel.

The window on the right allows you to select the actual MIDI message data to be imported. Click on Save or double click on an item in the MIDI Data (right side) window, and a file save dialog box pops up with the file already named with the original filename plus the track number and message-type (Vel (velocity), Key, Pan, etc) appended.

The files are saved in a special SoftStep format that is optimized for efficient playback by the SoftStep MIDI File modules. The MIDI File modules, once loaded with the MIDI data, retain it when the .ssp file is saved, so it is not necessary to keep the MIDI File Translation (.mfx) files created by the reader after you have loaded it into the module.

To load a module, simply click on the Get button. A File Load dialog will pop up showing only .mfx files. You are free to load whatever .mfx file you want into any MIDI File or MIDI File Slave module, although generally it is best to load the longest velocity track into the MIDI File, and all the other tracks you intend to group together into the associated MF Slave modules.

MIDI Control & Poly In

These two modules are different from their counterparts in the MIDI menu, Ctrl Change Input and Poly Pressure Input, in two significant ways. They allow the program control of the input source, and they are processed in the same order and style as regular modules (hence their positions here). These inputs essentially treat the 128 possible Ctrl or Poly inputs as a read only sequencer, and they allow such features as treating an external MIDI input device (such as the 64 knob Doepfer Drehbank) as hardware sequencer controls.

Bio Sequencer

The Bio Sequencer module reads DNA or protein sequences prepared by the Bio Editor, which is available from Algorithmic Arts as a separate program. These are in a table of sequences, similar to the one used by the Table module, but instead of arbitrary values you set yourself, these are decidedly non arbitrary values set by Nature. This table is preloaded with some example sequences, so the Bio Editor is not necessary in order to use the BioSequence.

The display at the top shows the sequence address, the codon readout, and the amino acid 3-letter code name; the single letter code name is shown in the blue output box if the sequence is reading proteins, or the single base name (A, C, T, or G) if reading DNA codons.

The Clk (Clock) input steps to next Amino Acid or Codon in the sequence on each 0 to nz transition. When the sequence reaches its end, it rolls over to the start again. Or, if the blue button above the Clk label has been clicked in, it will stop at the end of the sequence.

The DNA input switches between DNA or Amino Acid translation. Non zero for DNA output, 0 for protein (amino acids) output. Technically, if the original data was encoded from a protein sequence, the backtranslated DNA sequence will not be entirely accurate, although the musical pattern will still hold, somewhat simplified. Read this for a detailed explanation.

The Anti (Antisense) steps backward and reverses the codon, giving its antisense. This is similar to reverse playback on other sequencers, except the DNA codon is spelled reciprocally (A and T are switched, as are G and C), which in turn results in a different amino acid being translated.

A non zero in Rst (Reset) stops the sequence and resets it to the start - which is 1, not 0 as in the other SoftStep sequencers, to conform to the numbering convention of the sequence source text. Non zero in Hold stops the sequence without resetting it.

Sort remaps the amino acid numbers so that the most frequently occurring value is given the first table position, the second most frequently occurring value the second position, and so on - so it works musically with a pitch table that is weighted for more harmonic intervals to be at the start of the table. Using the Sort mode gives each protein a different amino acid mapping, which is not very useful for scientific work but often is useful for musical composition.

Seq# (Sequence number) select one of the 24 sequences (0-23) in the BioSequence table that have been processed by the Bio Editor. This table is a system file that is automatically loaded when SoftStep starts up.

The label on the bottom of the module displays the slot number (0-23) of the sequence being addressed, the number of proteins or codons in the sequence [in brackets], and the file name of the sequence at the time it was encoded. If there is no sequence data in a particular slot, the label will display "<no data>" and the sequencer will not step.

The output of the Bio Sequencer is 0-20 when in Protein mode, and 0-3 when in DNA mode. These values should be remapped to pitch tables or sequencer stages to produce the actual pitch, etc. values. There is a default set of 4 pitch tables (4 each for major, minor, pentatonic, whole tone and chromatic scales) available to load into a Table or Page module, as the file: ProteinPitchTables.tbl - in the examples directory. There is nothing magical about these pitch tables, you can and probably should modify them to suit your own musical judgment, or create new ones from scratch.

In addition to pitch table mappings, the tables also include mappings for various classifications or orderings you may want to do with the amino acids. The default ordering, given in the table below, is probably the most common, and orders the amino acids by water solubility. By using the Bio Sequencer output values as indexes (i.e. the Step input to the Table module) to the other tables, you can get several different mappings:

Mol Weight Order - molecular weight order, lowest to highest.
Relative Mol Weight - normalized (0-127) molecular weights.
Mol Volume Order - molecular volume order, lowest to highest.
Relative Mol Volume - normalized (0-127) molecular volumes.

4 element ordering (maps to 0-3, ?=4):
    0 = IFVLWAGMP: nonpolar
    1 = HKR: basic
    2 = CYTSNQ: polar
    3 = DE: acidic

8 element ordering grouped by chemical and substitution similarities (maps 0-7, ?=8):
    0 = ILVMF: large nonpolar (ILV aliphatic)
    1 = C: nonpolar disulfide-forming
    2 = GP: small moderately nonpolar
    3 = AST: small moderately nonpolar
    4 = YW: large aromatic moderately polar
    5 = NQ: small polar
    6 = DE: negatively charged
    7 = HKR: positively charged

Historically, the tables included in ProteinPitchTables.tbl have migrated from the first DNA translations done by John Dunn and Kim Bridges at the University of Hawaii in 1989, and have progressively migrated through the algorithmic MIDI programs KMM, Melodia, KAM, BioSon, and now SoftStep. You can hear these tables in action in the MP3 music selections by John Dunn and Mary Anne Clark at url: - and to read additional background on the art and science of bio music, click here to read the Leonardo article, Life Music, by John Dunn and Mary Anne Clark.

The numerical values for the DNA mode bases are: G=0, C=1, T=2, and A=3.

The values for the protein mode amino acids (in water solubility order), are:

I  =   0  =  ILE  Isoleucine (nonpolar)
F  =   1  =  PHE  Phenylalanine (nonpolar)
V  =   2  =  VAL  Valine     (nonpolar)
L  =   3  =  LEU  Leucine    (nonpolar)
W  =   4  =  TRP  Tryptophan (nonpolar)
A  =   5  =  ALA  Alanine    (nonpolar)
G  =   6  =  GLY  Glycine    (nonpolar)
M  =   7  =  MET  Methionine (nonpolar)
C  =   8  =  CYS  Cysteine   (polar)
Y  =   9  =  TYR  Tyrosine   (polar)
P  =  10  =  PRO  Proline    (nonpolar)
T  =  11  =  THR  Threonine  (polar)
S  =  12  =  SER  Serine     (polar)
H  =  13  =  HIS  Histidine  (basic)
N  =  14  =  ASN  Asparagine (polar)
Q  =  15  =  GLN  Glutamine  (polar)
D  =  16  =  ASP  Aspartate (acidic)
E  =  17  =  GLU  Glutamate (acidic)
K  =  18  =  LYS  Lysine     (basic)
R  =  19  =  ARG  Arginine   (basic)
?  =  20  =  ZOT  End Marker or invalid

Bio Flags

The Bio Flags module reads the associated data flags, such as end of file and other flag markers you can insert into the original bio sequence source files with the Bio Editor, which is available from Algorithmic Arts as a separate program.

Bio Flags can be seen as a satellite to the Bio Sequencer module. Each Bio Flags module must be told which Bio Sequencer module it is to take its output from. Do this by setting the left drop down menu to the same number as the controlling Bio Sequencer module. If you have created only one Bio Sequencer module, then the only choice will be 1, and it will be set by default

The green connection input selects which flag to read. A value of 0 detects the end of the sequence, a value of 8 reads all flags. The values 1-7 reads the BioEditor inserted Marker Flags: 1= <>, 2= (), 3= [], 4= {}, 5= !|, 6= @#, 7=$%. Flags are output as logical True (127) for the duration of the marker in the sequence. That is, the flag for a marker goes to 127 when the left marker is detected, and it goes to 0 when the end marker is detected. For convenience, the end of sequence flag (input=0) is also sent as 1 instead of 127 by selecting an input value of 9.

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