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")