<<A guide to Step>>=

Step is a step sequencer powered by the monome Grid.

Work in progress. Rough notes for now.

Create a new step page:

(monolith:page-step "step")

It can then be selected with:

(monolith:page-select "step")

A handful of scheme helper functions function have been defined in "step.scm". This can be loaded with:

(monolith:load "step.scm")

Before the step sequencer can be used in a patch, it must be synced to a clock signal. Something like clock, dmetro, or metro will generate such a clock signal. This synchronization is done via stepclk.

(stepclk "step" (clock 0 120 4))

With any luck, this should cause the playhead to start going.

The bottom row on the grid is the control panel.

The leftmost button toggles playback of the sequence.

The next button toggles playhead sync mode. When enabled, the playhead will synchronize with the currently playing pattern position. When disabled, these two items are decoupled. The playhead can then be used to select specific notes without disturbing the pattern playback.

The third button turns on latch mode. Latch mode will remember the last programmed-in note by the user. When a pattern position is turned on, it will automatically set it to be the last programmed note. This created in the hopes of making it faster to key in notes.

The fifth row is note sequencing row. The first 12 buttons outline a chromatic scale, the last 4 buttons indicate octave.

The currently playing step note can be retrieved using stepnt. This will return integer values in the range of -12 to 24. This are usually meant to be biased with a constant to create audible pitches.

(sine
 (mtof
  (add
   (stepnt "step")
   (param 60))
  (param 0.5)))

To access the gate signal, use the stepgt function.

Building on the previous example.

(sine
 (mtof
  (add
   (stepnt "step")
   (param 60))
  (param 0.5)))
(stepgt "step")
(mul '() '())

Using stepnt will not take into account gate, which may cause incorrect notes to fire. This can be rectified with the clock signal and a sample and hold generator.

(samphold
 (mul (clock-get) (stepgt "step")
 (stepnt "step")))

monolith:step-wait-and-reset can be used to set the playhead point back to zero. Used to sync things up between re-compilations.

(monolith:step-wait-and-reset "step")