JW Grid Seq: How to repeat a random step direction

Was hoping to do this with JW Grid Seq (love this module btw):

  1. Choose a random step direction.
  2. Then, for several triggers, keep going in that direction.
  3. Then choose a new random direction.

I guess the random step direction would have to be encoded as a CV input to, say, Bogaudio 1:8 and then sample-and-hold that for N triggers. gridseq-random-direction.vcv (3.5 KB)

I was just wondering if there is a simpler way. (I have a kind of bad habit in Rack of trying to implement programming-style logic using lots of little modules – which often “works” but sometimes I feel like this is missing the point of modular. In particular, having two different chains of noise → s&h → scale/offset, one for direction, one for number of repeats, seems like a long way to go around.)


Gridseq has up, down, left, right & random clock inputs. What direction it “walks” is a function of which input sees clocks.

For even more fun use Patterns’ XOR clock dividers to send stumbly clocks to Gridseq.

Advanced clock craziness comes from using @synthi Rael to make utterly drunk clocks.

Of course, this is already in my patch.

The question is, what is the simplest way to stay on one direction for a few ticks, then choose a new random direction to stay on for a few more ticks.

In SuperCollider, I could encode, say, 0 = L, 1 = R, 2 = U, 3 = D and then Pdup(Pwhite(4, 10, inf), Pxrand((0..3), inf)), and later in the event pattern, apply that to an x/y coordinate pair. In Rack, I got it in 7 modules but I was curious if there’s a tighter way.


Whereas not the cleanest process, I use sequencers to send “eigenvalues” to modules to change their behavior based on the clocks. I typically use an AS Triggers MKI to send CV’s to a module such as SuperCollider (for example) and figure out that the direction eigenstates are triggered by the 0, 1, 2 and 3v. I then put these values in a NYSTHI FIXED VOLTAGE SOURCE module, starting on the 3rd value slot (for reasons of how the 1st two slots behave). I then send these values to a sequential switch that is used as a sequencer to send those eigenvalues to the SuperCollider CV input for the target direction parameter. My favorite sequential switch is CountModula SWITCH 8-1 as it has several CV inputs that I have mapped so that I can use other sequencers of the same basic setup as above to control direction and length. One direction mode is “Random”, I usually clock the SWITCH 8-1 with a slow clock such as /8, /16 or /32. I sometimes get 3 layers deep of sequencers sequencing sequencers and sequencer parameters.

Whereas my method is heavy on setup, for each module that I am going to sequence CV’s to via eigenvalues, I create a single sheet of paper handwritten documentation of the eigenvalues and then I can just refer to this sheet the next time I want to CV control that module. I have used various preset and “selection file” to save my work by module, but I usually end up just recreating the setup from my notes.

I’m old (school), so I still use a lot of paper in my development workflow as well as while creating patches. I have a manila folder with all of my module eigenvalue sheets in it.

I have an CV eigenvalue sheet for JW 8Seq “length”, but not for JW GridSeq.

Here is one way. Random gates into different burst generators. You can mess with number of steps and clock divisions.

gridseq rnd dir.vcv (2.6 KB)


If you want to do similar to what you did in SuperCollider, try this patch.

Grid Seq CV Sequencing.vcv (3.5 KB)

1 Like