Some thoughts about sequencing;

Classical Step sequencing is one dimensional, a row of steps (this single line makes for 1 dimension) on which you can move forward, backward, some Sequencers allow repititions, skips, jumps etc… but its always back and forth mostly on a multiple of 8 Steps.

Now free your Mind and take a breath, we are breaking with habits.

What if you had another dimension to it, not only one single row, instead a Grid of Cells. Each Cell could hold various musical interesting Data such as CV or MIDI Data.

Then how big should this Grid be and how can you navigate thru it.

For the Size of the grid the answer is simple: infinite. This is achieved by allowing to cycle thru the rows (x-direction) and lines (y-direction), when you leave the grid to the right you come in on the opposite side at the same line. Thus you have an finite number of Cells but you can move in any direction infinite as far as you want.

Now comes the tricky part, the amount if Cells. We chose a 5×5 Grid for several reasons:

- 5 is a Prime, so every row and every line is an algebraic ring (more on the implications in a later posting), one of the advantages is that you touch every element in a ring with any constant number of steps you move, so you hit every cell sometime. This is only achieved when the number of cells in a row/line and the step size have no common dividers, therefore you will have to choose a prime number for the lines size.
- 5×5 is physical feasible, 7×7 makes up to 49 cells so you would have to tune 49 values before you can start making music
- 5 is quite nice to split any chord into or for small fractions of a melody
- 5 is my sons favorite number

Now that we have justified the size of the Grid how to navigate? Assuming that the grid is overflowing on each side every cell is like the other, any determination on starting point is only convention. We chose (x,y) = (1,1) as the upper left corner only counting positive, so the lower right corner is (5,5). Oh, this looks like something familiar from school some time ago? Yes, indeed, its called a *Vector*! Now we can point to the start of our sequence with this Vector, its called the Reset Vector (Xr,Xy), every time a Reset Event is triggered the Sequencer will move to this Cell on the next Clock Tick (or instantly when stopped).

So where to move on the next Clock Tick? Follow the Move Vectors! Lets define a set of 4 Values (Xt, X, Yt, Y) Xt, and Yt define the clock tick on which the Sequencer moves X or Y Steps in Positive (to the right/down) direction. Thats about (nearly) all. With these 4 Values you determine how the Sequencer crawls over the Gris, lets look at an Example:

Set Xt=1 X=1 Yt=1 and Y=0, this means move every clock tick (Xt=1) one step to the right (X=1) and every clock tick (Yt=1) do nothing (Y=0) on the y-Axis.

If you hit start the Sequencer will jump to the Reset Position (1,1) and on the next clock tick it will move one step to the right, overflowing at (5,1) to (1,1) just like an old school Sequencer would do.

Now set Yt=5 and Y=1. Hit Start. The Sequencer now will move one step to the right and after the rightmost Cell on the first line (5,1) it will jump to the first cell in the 2nd line (1,2) determined by the Yt=5 (do every 5 Ticks) Y=1 (one move downwards). See this Video.

Just with these 4 Values you can do a myriad of possible movements across the grid. BTW, there is no reverse movement or negative steps as moving one step to the left means exactly the same as moving 4 steps to the right…

To complicate things a bit – or make more interesting sequences – the Sequencer has for both Axis *Events*, defined by (Xet, Xev) and (Yet, Yev), with Xet, Yet the number of clock tick when the Event occurs and Xev and Yev defining the event type.

These Events can be anything from this collection

- Reset to a certain position on the Axis
- Reset to Reset Position
- Reset to a Jump Position
- Jump additional n Steps
- Repeat N Times the Actual Step
- Change the Step Width
- Reverse (only if StepWidth= 1 or 4) for KnightRider Blinkenlight Effects
- Swap X and Y Rules
- Stop Sequencer

So the complete behavior of the Sequencer can be tweaked by 4 Parameters for the Vector, 4 Parameters for the Events and 4 Parameters for 2 Jump Positions making up for Patterns you never could achieve with classical Step Sequencers and are – albeit iterative – strictly deterministic (if you don’t use random events).

We call this principle of sequencing *Vector Sequencer* and its name is

*The Exfilinator*