Sequencer Stepping

We have seen how to access sequencer stage memory by directly addressing it, either with a slider or a random number. But most often sequencers are stepped with a clock of some kind. This can be a built in clock, or it can be an external clock, or it can be another sequencer, or any other process that generates values within the sequencer's address range.

Simple Sequencer

The easiest way to step a sequencer is to use one with built in stepping, such as the RoStep (Read Only Step) module. You can make a sequencer with nothing more than this and a Clock.

1. Create a Clock module from the Clock group and a RoStep sequencer from the Sequencer group.

2. Click the Properties button on the RoStep to get the Fill pop up. Set Max Addr to 15 (for a 16 step sequence), and Range to 48 (for 4 octaves of pitch control). Click the Update the Fill button to initialize. Since the Fill with option buttons was left at the default No Change, the graph will not show a change (all values remain 0).

3. "Draw" your values into the graph window, by left clicking on the mouse while the cursor is over the window. You can use a horizontal motion to draw a graph, or several vertical gestures to change the value points as if they were sliders. You can also click on the Sliders button on the bottom of the pop up, to pre cicely set the values.

4. Use the rightmost two columns of buttons to alter your sequence however you like. Notice you can use the Undo and Redo buttons (between the Sliders and the OK button) to go back and forth among previous settings. Finally, exit the pop up with OK.

5. Set the RoStep Limit input to 15, same as the Range in the Properties pop up. Limit in the module is similar to but not the same as Range in the Properties. Range is the number of memory cells allocated to the sequencer memory array; Limit is the maximum address the sequencer will use. You may set Limit lower than Range, but if you set Limit higher than Range, you will get errors due to attempting to access unallocated memory. So the rule of thumb is to set Range to the maximum you will ever need for a particular sequencer module, and then set Limit to that value or less.

6. Connect the Clock Out to the RoStep Strb (strobe) in. You will see the Addr output of the RoStep counting up to 15, then back to 0 and repeating; and you will see the sequencer Out sending the step values.

7. Create an aVoice voice macro by selecting Load Macro at the top of the module pop up menu, and then selecting aVoice from the Examples macro sub directory. Use the hand icon in the Panel window to move the widget group to a convient spot. Connect the RoStep Out to the aVoice Note input. You should hear sound right away, and the red beat LED in the aVoice widget group should be flashing.

(If you are not getting sound, you should Quick Save your patch at this point and track down the sound issue. It may be helpful to review the "Connecting to MIDI" and "Tiny tutorial to get first sound" sections from the Introduction page of the manual.)

8. Connect the Clock Out to the aVoice Clock input, and click once on the Leg button in the aVoice widget to switch it out of Legato mode so the Clock is controlling the beat instead of a new note when the pitch changes. This should result in a steady beat as the aVoice relentlessly plays each of the 16 sequence steps over and over.

Experiment with the widget sliders & knobs. Also, try different Clock Dur input values. You can easily set known beat values by double clicking on the input box, and selecting from the constants pop up window.

Of course a steady repetation of 16 notes can get old fast, no mater how you tart it up. Later, we will cover ways to group sequencers to create much richer, layered patterns. But for now, there is a very easy trick to get a more interesting (up to a point) sound by using the RoStep Rev (reverse) input.

9. From the Clock group, create a RanClock module. Place it directly under the already existing Clock module. Fix the priority by clicking in the Module Tree view on the last item in the list, which will be E.RanClock that you just created. It will highlight blue. Now right click on C.RoStep in the Tree. This should insert the RanClock into position C, between B.Clock and (now) D.RoStep.

10. If you are unsure what the RanClock does, take a moment to view the documentation on it. Easiest way is to right click on the top line of the RanClock module, and select Help from the pop up menu.

11. Connect the RanClock Out to the RoStep Rev input. Take a moment to experiment with the various settings.

Now that the pattern is going back and forth, it's not so easy to follow. So it might be useful to have a visual readout of what is going on with the sequencer. An easy way to do this is to use an HMeter widget module.

12. From the Widgets group, create an HMeter module. Move the widget in the Panel to a convient location by holding the keybard Shift key down then left-click and drag the widget to where you want it. Then right click on the widget ot pop up its properties (you can just as well click on the module's Properties button - both actions will get you the widget properties pop up). In the properties window, set the Range to 15, same as the sequencer, and check the Bar Indicator option for a simple position bar instead of the default volume indicator. Set any of the other properties to suit your taste, then click OK to exit.

13. Connect the RoStep Addr to the HMeter In, and you should now be able to track the back and forth progress of the sequencer by the meter bar. If you have not done so already, this might be a good time for a Quick Save.


Download this patch

The priority of the HMeter does not need to be changed because this module does not modify the chain of action that produces MIDI. In general you do not need to fix priorities of widget modules. Even widgets like knobs and sliders, which may affect the algorithmic flow do not need to be changed because they are asynchronous. That is, you make changes to them manually at any time, not in sync with the clock ticks that drive the modules.

[Introduction Sequencer Memory Array Sequencers]

[Return to Tutorial Page]