Events Menu


This is a multi purpose module that calculates each new output value based on the accumulated sum of previous values. You can make a random walk module simply by connecting a Rand module to the Value and Reverse inputs, as shown in the example image. Set the upper limit of the Rand module to some low value as 2 or 3; connect a Clock module, and you have the classic random or "drunken" walk that wanders up and down the scale. And by using Probability modules instead of Rand, you will have considerably more control over the steps.

Accumulate can also be used for indexes, and updown counters of various types. Put a value of 1 in the Value input, clock it; and it will count from the lower limit to the upper limit, reverse directions and count back down to the lower limit, etc.

Accumulate works by adding or subtracting the Value input to/from the previous output. Whether the operation is an add or subtract depends on the state of an internal flag. This flag is set to "down" or subtract, when the output reaches the Upper limit, and it is set to "up" or add when the output reaches the Lower limit. A strobe (0 to NZ transition) in the Rv (reverse) input also flips the flag, so you can reverse directions at any time, not just when the count reaches the upper or lower limits. If the blue Rev button is clicked in, the automatic up/down flip is disabled, and the count will simply go to the limit and stop. The reverse input is a strobe rather than the usual on/off gate to allow easy reverse of directions when used with the Test module.


The Difference module is triggered by any change in input, and it returns the absolute difference between the current input and the previous input.


Hi/Low returns the highest or lowest value seen by the topmost Value input, since the lower Reset input has been triggered (with a 0 to NZ gate). When clicked in the blue Hi/Lo button changes to "Lo" and the module returns the lowest value; when clicked out the button label changes back to "Hi" and the module return the highest value.


Tally counts the number of different values seen since the last reset. Useful to check the value spread of processes.

A gate input in the topmost, Clock input causes the Tally module to look at its Input value. If the value has not been seen since the last Reset input gate (i.e. it is a new value), then the output is incremented. Reset clears the counters and sets the output to 0.


The Kicker tests to see if a sequence is stuck in a rut of just a few repeating values, and if so, it generates a strobe to kick the sequence out of its rut. Plug the value to be tested into the topmost Value input, labeled "In." With the Period input, set the time period for the test in quarter notes. Set the bottom tally threshold input to the minimum number different values you want to allow before generating a kick.

In the example image, the Period is set to 16 quarter notes, and the threshold is set to 12. This sets the module to generate a strobe (non zero for 1 cycle then back to zero) if fewer than 12 different notes are seen during the 16 quarter notes time period. The number readout at the top of the module shows the tally of different values - you will see this number increase for the duration set by Period, then go back to 1 and start again. If the tally does not exceed the threshold value, then a strobe is generated and the red LED will flash. Typically, the strobe would trigger some module such as a Counter that would be plugged into a module that would change the sequence causing the low-value run, such as the Seed input to the Chaos module.


The Test module has two different uses. Its main function is to test various relationships between the two parameter inputs. A secondary function is to return status information on a File Sequencer. The drop down menu on the lower right of the module sets the particular test to be performed. Test results are output as 127=True, and 0=False.

When used to test input values, the tests are performed on the top input against the bottom. When used to test File sequencer status, only the top input is used and it is set to the output of the File module being tested. When used to test changes in the input, the top input is tested against the previous top input. In the chart below "T" is the top input and "B" is the bottom input.

Tests performed on T (Top) and B (Bottom) inputs:
  EQ - True if T is EQual to B
  NE - True if T does Not Equal B
  GE - True if T is Greater than or Equal to B
  GT - True if T is Greater Than B
  LE - True if T is Less than or Equal to B
  LT - True if T is Less Than B
  NE - True if T is Not Equal to B

Status Flags for File Sequencers connected to T (Top) input:
  FB - True if at File Beginning
  FE - True if at File End
  FT - True if at file end-1 (File Tail)
  FF - True if the 8th bit of the file data was set (File Flag)

Tests performed on changes in the T (Top) input:
  AD - True if change in T is equal to or greater than the Absolute Difference (delta) in B.
  CH - True if T has changed. Returns amount of change.
  CG - True if T has changed, and is greater than before. Returns amount.
  CL - True if T has changed, and is less than before. Returns amount.

Special Tests:
  MF - Matrix module Freeze flag. True if the Matrix sequencer module selected by the top input and the freeze flag for the given matrix module type set by the bottom input, has frozen (stopped producing new CA generations). Matrix module numbers (top input) are zero based, so module-1 is 0, module-2, is 1, etc. The module freeze flags (bottom input) are: 2=4x4, 4=8x4, 16=8x8, 32=16x4, 64=16x8.


When the Sample module receives a gate at the top, clock (yellow) input, it samples whatever value is in the bottom input and sends it to the output. This value is held until another clock gate is received. This emulates the Sample and Hold function of analog synthesizers.


Delay does just that. Any value at the Input arrives at the output after a delay set by the Delayinput. Delay increments are 32nd notes normally; and ticks (64th note triplets) when the blue 32n/Trb (Turbo) button is clicked in.

Delay Tap

Delay Tap accesses the delay line of the associated Delay module, at the location set by the Delay input.

Delay Tap modules can be seen as satellites to the Delay module. Each Delay Tap module must be told which Delay module it is to take its output from. Do this by setting the red drop down menu to the same number as the controlling Delay module. If you have created only one Delay module, then the only choice will be 1, and it will be set by default


Slew causes the output to change slowly from one step to the next, with intermediate steps along the way. It is useful for making gradual changes in MIDI parameters such as Volume.

The top input takes the value to be slewed, the bottom input is the slew time. Higher slew time numbers slew more slowly, and 0 is an instant change with the input going directly to the output. Slew works equally well with a value change at the input, or a value change from a Snapshot change.

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