Steps, Pages, Loop Length, Clock & Unstraight (odd) TACTs

hey!

i have to program a Sequencer Variante of the MB-SEQ, by using the SEQ_BPM…

but before i have to be clear what i want… so i think loud a bit…

 

DRUMSEQUENCERs & ODD TACT (UNGERADE SCHLÄGE)

since i work with a guitarist, (which play with a Guitar2MidiConverter)

he want that i can program 5er, 6er, 7er

 

since i come from electronic sequencer music, I worked so far with drum-step-sequencers which program that 4/4Tact on a 16x1 LED-Button Hardware,

OK lets take a look on something I/we know.:

 

if we talk about LOOP LENGTH , and the Change of it, we have to decide which VALUES are INTERESTING…

 

so 16 are the maximum amount of visible STEPS on the UI(@once), i call that a PAGE >1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <

3 PAGES:

| 4 |
| 1PageLoop | Length | Sel |
| Steps | Steps | Page |
| 0 | 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | 10 |
| 11 | 11 |
| 12 | 12 |
| 13 | 13 |
| 14 | 14 |
| 15 | 15 |
| 0 | 16 | 1 |
| 1 | 17 |
| 2 | 18 |
| 3 | 19 |
| 4 | 20 |
| 5 | 21 |
| 6 | 22 |
| 7 | 23 |
| 8 | 24 |
| 9 | 25 |
| 10 | 26 |
| 11 | 27 |
| 12 | 28 |
| 13 | 29 |
| 14 | 30 |
| 15 | 31 |
| 0 | 32 | 2 |
| 1 | 33 |
| 2 | 34 |
| 3 | 35 |
| 4 | 36 |
| 5 | 37 |
| 6 | 38 |
| 7 | 39 |
| 8 | 40 |
| 9 | 41 |
| 10 | 42 |
| 11 | 43 |
| 12 | 44 |
| 13 | 45 |
| 14 | 46 |
| 15 | 47 |

on a DRUMSEQUENCER with 4/4 Tact we always double the Steps, to keep in TACT with MelodySequencers (why? wait, later!):

2   x  2  =  4     (@ME: what is the multiplicator when using 5 6 or 7 TACT???)

4   x  2  =  8

8   x  2  =  16    >>> the maximal visible amount of STEPs on a single PAGE >>> so this is our minimal LENGTH

16 x 2   =  32

32 x 2   =  64  >>> the maximal Length of a Korg Electribe Rythm

64 x 2   =  128 >>> a very handy Length when using whole PAGE-Copy-Paste?, and AUTO-Completion (copy Page 1 to All the Rest…)

128x2  =   256 >>> very long for Drums if using all the Steps in one whole Loop >>> what brings us to another Point:

 

CHAINING PAGES      or      SETTING LOOP LENGTH

lets say a PAGE has 16Steps  (@ME 3x5=15, 2x6=12, 2x7=14)

Chain PAGE  1+2+3+4   = 4 PAGES * 16 STEPS = 64 STEPS

Chain PAGE   1+2+3       = 3 PAGES * 16 STEPS = 48 STEPS… maybe problem: when playing with other Sequencers, e.g.we play a Bass 64 STEPs long…

                                   DRUMS: 48*2=96       

                      while     BASS:     64*2=128,      so the Baseline will differ on its way off fitting with the drums…

                                    >>>if i think right? there is no point that they ever will meets on the same point???<<< or in a musical period of time (for me)

This is a problem when we separate DRUM and MELODY DEVICES… and change the Length while playing… such SETUP will maybe ONLY work with DOUBLEs OF PAGES

… I dont say its forbidden … specially in my case …

   CASE NORMAL:  DRUM SEQUENCE has a rythmic, the Melody has a rythmic   >>> if they drift by (not equal @ all)… the listener will not find the COMMON RYTHMIC (especially on long Melody’s)

   CASE TRIGGERMATRIX:  DRUM SEQUENCE is the only rythmic, the Melodys rythmic is ignored >>> the drift that you hear is pitch based, that the played notes ON THE RYTHM are NEVER The same, @ least U find the rhythm…

… since I work on my case, i will not forbidd anything, but i will INFORM me the possible/right next PAGE to CHAIN > …but before we get to that I have to to inform you how how to handle this CHAINING via a UI (UserInterface):

 

SETTING LOOP LENGTH via 16 Buttons in a ROW:

We have 16 BUTTONS that are Representing 16 PAGES (a’ 16 Steps)

>Loop a single Page > short double Click a button.

>Loop from Page eg. 4 too 8 > Click&Hold Button"4"  & Click Button"8" (which in First Place visualize Page4, and then Set a 4x16=64Loop to Page 8)

So to avoid that 48/64 dilemma, we have to get sure that we only select DOUBLED PAGES, and here i come to the point to INFORM me about possible FITTING PAGES:

 

INFORM:

I press the First PAGE (4), now following Pages get enlighten 6 8 12

| START | DOUBLE | END |
| 4 | 0 | 4 |
| 4 | 2 | 6 |
| 4 | 4 | 8 |
| 4 | 8 | 12 |
| 4 | 16 | 20 |

I decide to press “8”, and i now have a 64Step Loop, but I don’t want to set the Loop length immediately,  I want it to make it in Sync, I want it to switch by the next DOUBLE…

 

Lets make a shorter example:

64 Steps Maximum is set for this TRACK… this has to be set before pressing the Play button, in order to get a MAIN-Timeline, to that we can return if we want back to the whole loop.

| A maximum-length-counter will ever cycles from 0-63-0-63 …. it counts the midiclock-ticks, this is our MAIN-TIMELINE |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
| 0 BAR | 1 BAR | 2 BAR | 3 BAR |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| The Loop LENGTH |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| 0 BAR | 1 BAR | 2 BAR | 3 BAR |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| for me, it is enough, to switch @then end of the current selected Loop |   | New Loop Length: if (step is > 31) {step = 48;} ….. |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| In this case it is STEP 31, where the Next Step should be 48 in a loop to 63. |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | step+1; if(step>maxLoop){step=minLoop)…. |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | NEW Loop LENGTH |
| 0 BAR | 1 BAR | 2 BAR | 3 BAR |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |

if i want a more stable play in interaction with melodylines, we just watch out for the Main Time Line, the switching between loop points then will take longer until it is set:

in example above, we have a loop from 0-31, while this loop is playing, i decidet to make a new Loop from 48-63… the machine now loops its rounds until the MAIN-TIMELINE comes to Step 48,

form now the New Loop take effect…   This is no problem with a 4 Bar Track, where the maximum what you have to wait is 3 Bars… but what when you set the Track to a maximum off 16 Bars?

…of course it will take time until it switches… so i would say we make a hardware button, that switch between 1BAR SYNC and MAIN-TIMELINE, where MAIN-TIMELINE would kick you back in sync with extern Melody Sequencers…

 

MIDICLOCK and TACT

while  4/4Tact is  clear,  like shown in the Tutorial 17 (sequencer), its a bit more Brain Acitivity to  find out how to work with 5 6 7 9 Tacts

Tutorial on 4/4

static s32 SEQ\_Tick(u32 bpm\_tick){// performs a single bpm tick // whenever we reach a new 16th note (96 ticks @384 ppqn): if( (bpm\_tick % (SEQ\_BPM\_PPQN\_Get()/4)) == 0 ) { // ensure that step number will be reseted on first bpm\_tick if( bpm\_tick == 0 ) seq\_step\_pos = 0; else { // increment step number until it reaches 16 if( ++seq\_step\_pos \>= 16 ) seq\_step\_pos = 0; } SEQ\_Handler(); if(seqMATRIX[0][seq\_step\_pos] \> 0){ APP\_NOTEPROCESS(0, 36, seqMATRIX[0][seq\_step\_pos]);}//(u8 port, u8 note, u16 velocity) Notes Back to APP.c }

 

The next thing is to translate that all to 5 6 7 & 9 TACTs on 16*16+X Matrices…**   but that is something to sleep over it… good night**

 

What about SWING?… a good describtion here: attackmagazin

Every 2nd Note is delayed a percentage of Time, 50%= no swing…55% is more swing and so on… we can achieve this with a number off MidiClockTicks… but later more:

| Fixed SWING 8th/16th |   |
| Matrix[17][16] | STEP 1 | STEP 2 | STEP 3 | STEP 4 | STEP 5 | STEP 6 | STEP 7 | STEP 8 | STEP 9 | STEP 10 | STEP 11 | STEP 12 | STEP 13 | STEP 14 | STEP 15 | STEP 16 |   |
| Track 1 | 127 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 127 | 0 | Velocity |
| Track 2 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | Velocity |
| Track 3 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   | Velocity |
| Track 4 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | Velocity |
| Track 5 | 127 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 127 | 0 | Velocity |
| Track 6 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | Velocity |
| Track 7 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   | Velocity |
| Track 8 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | Velocity |
| Track 9 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | Velocity |
| Track 10 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   | Velocity |
| Track 11 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | Velocity |
| Track 12 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | Velocity |
| Track 13 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   | Velocity |
| Track 14 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | Velocity |
| Track 15 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   | Velocity |
| Track 16 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | Velocity |
| 16th Swing | 0 | swing | 0 | swing | 0 | swing | 0 | swing | 0 | swing | 0 | swing | 0 | swing | 0 | swing | tics |
| 8th Swing | 0 | 0 | swing | 0 | 0 | 0 | swing | 0 | 0 | 0 | swing | 0 | 0 | 0 | swing | 0 | tics |

Here we have to have a counter that counts straight with the Midiclock, to get 16th notes.

This counter will trigger the Step Swing Track…

if the Value of SWING = 0, then also the Velocity Tracks 1-16 will be triggered out.

If the Value of the Swing-Step is e.g.+20, then the other Tracks will be triggered in +20 tics

the variable “swing” is a knob on the user-interface that set the delay in ticks for this step, when the delay is done, all Track-Velocitys on this Step are dumped out.

you can see a fixed grid for 16th or 8th mode… classical known from drum computers…

—now expand this fixed grid to something editable, never heard thing…it is self explaining:

| editable SWING 8th/16th |
| Matrix[17][16] | STEP 1 | STEP 2 | STEP 3 | STEP 4 | STEP 5 | STEP 6 | STEP 7 | STEP 8 | STEP 9 | STEP 10 | STEP 11 | STEP 12 | STEP 13 | STEP 14 | STEP 15 | STEP 16 |
| Track 1 | 127 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 127 | 0 |
| Track 2 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 |
| Track 3 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   |
| Track 4 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 |
| Track 5 | 127 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 0 | 127 | 0 | 0 | 127 | 0 |
| Track 6 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 |
| Track 7 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   |
| Track 8 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 |
| Track 9 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 |
| Track 10 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   |
| Track 11 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 |
| Track 12 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 |
| Track 13 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   |
| Track 14 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 | 64 | 0 |
| Track 15 | 94 |   |   |   | 94 |   |   |   | 94 |   |   |   | 94 |   | 63 |   |
| Track 16 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 | 24 | 50 |
| 17 swing % | 0 | swing | 0 | swing | 0 | 0 | swing | 0 | 0 | swing | 0 | swing | 0 | 0 | swing | 0 |
| 18 8th/16th? | 0 | 16th | 0 | 16th | 0 | 0 | 8th | 0 | 0 | 16th | 0 | 16th | 0 | 0 | 8th | 0 |

For this UI we need a new Matrix-Page, since we come over the 16 rows Limit… and its a bit “TOO MUCH VALUES”…

Maybe its better to make a global swing for each Step, and not for each cell!

|   | Its easier to program if we turn the whole ting 180° |
|   | One Step Counter, one Swing for all Tracks, the swing is the Nr. off Tics to delay bevore the next STEP is sent out. |
|   | editable SWING 8th/16th + ADD-TIC-Bar-Ccs |   |
|   | Normal tics | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | 96 | normal length |
|   | 16th: 96/2=48 8th: 192/2=96 | +0 | +(0-48) | +0 | +(0-96) | +0 | +0 | +(0-96) | +0 | +0 | +(0-48) | +0 | +(0-96) | +0 | +0 | +(0-96) | +0 | Tics384 ppqm |
| CELL | Matrix[17][16] | STEP 1 | STEP 2 | STEP 3 | STEP 4 | STEP 5 | STEP 6 | STEP 7 | STEP 8 | STEP 9 | STEP 10 | STEP 11 | STEP 12 | STEP 13 | STEP 14 | STEP 15 | STEP 16 |   |
| 1 | set swing | 0 | swing16 | 0 | swing8 | 0 | 0 | swing8 | 0 | 0 | swing16 | 0 | swing8 | 0 | 0 | swing16 | 0 | toggle |
| 2 | +0 tics @ 16th |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | +0 tics @ 8th |
| 3 | 2 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 4 |
| 4 | 4 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 8 |
| 5 | 6 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 12 |
| 6 | 8 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 16 |
| 7 | 10 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 20 |
| 8 | 12 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 24 |
| 9 | 14 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 28 |
| 10 | 16 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 32 |
| 11 | 18 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 36 |
| 12 | 20 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 40 |
| 13 | 22 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 44 |
| 14 | 24 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 48 |
| 15 | 26 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 52 |
| 16 | +28 tics |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 56 |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | The Ammount of TICs can be additional offset via global „Swing8“ & „Swing16“-Rotary. |

So what we need for this Swing UI:

1: Toggle Button:   switch from step-sequencer-edit - mode to   Swing Mode      (what does the 16x16BLM Matrix show/do?)

2: a new Matrix16x16 Matrix-Page…which is shown in the graphic above, which has following functions:

   1st ROW: activate/deactivate swing, and toggle between 8th and 16th SWING-TIC-RANGE. (OFF, BLUE, GREEN)

   2nd to 16th ROW: change the amount of additional SWING-Ticks per Step.

  1. 4x Swing Offset Rotary, this should be encoders, and should be saved with the patch.

   1. 8th Offset Rotary , Range ± 96 ticks

  2. 1 6th Offset Rotary , Range ± 48 ticks,

       while negative values overturns the Values from the “additional Swing-Ticks”, by end up with no SWING @ all, & Positives values add ticks where no ticks where before…

  3. Offset Rotary for NON-Swinged -Steps… so why not… a swing is try out a thing…

  4. Delay all @ 8th Range  (which include the possibility by maximum ammount to get from onbeat 2 offbeat…when slaved to other sequencers…)

so whats that with that pulses per quarter note > ppqn? & those Midiclock TICKS?

**384 PPQN** Whole 1536 Dotted Whole 2304 Whole Triplet 1024
Half 768 Dotted Half 1152 Half Triplet 512
Quarter 384 Dotted Quarter 576 Quarter Triplet 256
Eighth 192 Dotted Eighth 288 Eighth Triplet 128
16th 96 Dotted 16th 144 16th Triplet 64
32nd 48 Dotted 32nd 72 32nd Triplet 32
64th 24 Dotted 64th 36 64th Triplet 16
128th 12 Dotted 128th 18 128th Triplet 8

Note      TICKS       NOTE                     TICKS   NOTE                      TICKS

 

oh ya have fun.

1 Like

I think i have all that i need, the rest will be made with the Triggermatrix…

I cant make all Functions with the 16x16 Matrix…i cant label 3times… so a special seperate UI has to be build..

Since the Sequencer will be integrated in the TriggerMatrix - Firmware, i will use a part of it…

TriggerMatrix - UI: (1st Display will have a seperate Sequencer-System-Page to handle Tact-System, max.LoopLength…)

 

 

but now to the SEQ-ONLY - UI, 2x 2x40LCDs 8 Encoders 20BTNs, 20 LEDs 4 BTN States

| Drum-Step-Sequencer USER-Interface (except BLM) |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | TRANSPORT |   | MATRIX MODES |   | STEP VELOCITY |   |   |
| BTN |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| Nr | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 2x40LCD |
| BTNLabel | S | T | P |   | P | L | Y |   | R | E | C |   | S | T | P |   | S | W | N |   | T | M | R |   | T | M | F |   | V | E | 1 |   | V | E | 2 |   | V | E | 3 |   | BTN DISPLAY |
| BTN Label | C | P | Y |   | P | S | T |   | C | L | R |   | F | C | P |   | F | P | S |   | F | C | L |   | L | 2 | x |   | F | 2 | x |   | E | S | W |   | E | V | E |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| BTN |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | LOOP Copy/Paste/Clear |   | FOCUS TRACK Cpy/Past/Clr |   | Loop2x/Focus2x |   | ENCODER PAGE |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | MidiClock-Tick-Delay |   |   | Swing 16th offset |   |   | Swing 8th offset |   |   | Non Swinged offset |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| ENC |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| Nr | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 2x40LCD |
| ENC Label | D | L | Y | ||| | ||| | ||| | ||| | ||| | _ | _ | 1 | 6 | T | ||| |   |   |   |   | _ | _ | ||| | ||| | | |   |   | 8 | T | H | _ | _ | || |   |   |   |   | N | O | N | _ | _ | ENCODER DISPLAY |
| ENC Label | V | E | 1 | ||| | ||| |   |   |   | _ | _ | V | E | 2 | ||| | ||| | ||| | ||| |   | _ | _ | V | E | 3 | ||| | ||| | ||| | ||| | ||| | _ | _ |   |   |   |   | 2 | B | A | R | _ | _ |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| ENC |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | Step-Velocity1 – SET |   |   | Step-Velocity2 – SET |   |   | Step-Velocity3 – SET |   |   | LoopSet-Sync-Rate |   |   |   |

1 Like

because i have to mount the Button-PCB anykind, the best solution is to solder the Encoders on this board, and screw the encoder on the frontpanel…

so i will use one Display, when i then move a encoder, the labeling and value will go to ENCODER MODE, when i press a button the the labeling goes to BUTTON-VIEW:

| Drum-Step-Sequencer USER-Interface (except BLM) |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| ENC |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | ENC are mount with screw-nuts |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | Step-Velocity1 – SET |   |   | Step-Velocity2 – SET |   |   | Step-Velocity3 – SET |   |   | LoopSet-Sync-Rate |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| BTN |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | BTN are on same PCB as ENC |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | TRANSPORT |   | MATRIX MODES |   | STEP VELOCITY |   |   |
| BTNLabel | S | T | P |   | P | L | Y |   | R | E | C |   | S | T | P |   | S | W | N |   | T | M | R |   | T | M | F |   | V | E | 1 |   | V | E | 2 |   | V | E | 3 |   | BTN DISPLAY |
| BTN Label | C | P | Y |   | P | S | T |   | C | L | R |   | F | C | P |   | F | P | S |   | F | C | L |   | L | 2 | x |   | F | 2 | x |   | E | S | W |   | E | V | E |   |
|   | LOOP Copy/Paste/Clear |   | FOCUS TRACK Cpy/Past/Clr |   | Loop2x/Focus2x |   | ENCODER PAGE |   |   |
| BTN |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   | MidiClock-Tick-Delay |   |   | Swing 16th offset |   |   | Swing 8th offset |   |   | Non Swinged offset |   |   |   |
| ENC |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | ENC will hold the Buttons on the Frontpanel |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |

1 Like

update

| Drum-Step-Sequencer UI |
|   | ENCODER-PAGE 0 |   |
| ENC Value | ||| | ||| | ||| | ||| | ||| | ||| | ||| | ||| |   |   | ||| | ||| | ||| | ||| |   |   |   |   |   |   | ||| | ||| | ||| | ||| | ||| | ||| | ||| | ||| |   |   |   |   |   |   |   | 2 | B | A | R |   | 2x40LCD |
| ENC Label | V | E | L | O | - | L | O | W |   |   | V | E | L | O | - | M | I | D |   |   |   |   | V | E | L | O | - | H | I |   |   |   | B | A | R | - | S | Y | N | C |
|   | ENCODER-PAGE 1 |   |
| ENC Value |   |   | 0 |   |   |   |   |   |   |   |   |   |   | 2 | 0 |   |   |   |   |   |   |   |   |   | 9 | 6 |   |   |   |   |   |   |   |   |   |   | 9 | 6 |   |   | 2x40LCD |
| ENC Label | M | a | i | n | D | e | l | a | y |   | S | w | i | n | g | 1 | 6 | T | H |   |   | S | w | i | n | g | 8 | T | H |   |   | S | w | i | n | g | N | o | r | m |
| CharPosi | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |   |
| ENC |   |   |   |   |   | P | A | G | E | 0 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 2 | 0 |   |   |   |   |   | ENC are mount with screw-nuts |
|   |   |   |   |   | C | C | 1 | 7 |   |   |   |   |   |   |   | 1 | 8 |   |   |   |   |   |   |   |   |   | 1 | 9 |   |   |   |   | 2 | 0 |   |   |   |   |   |
|   |   |   |   |   | P | A | G | E | 1 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   | 2 | 1 |   |   |   |   |   |   |   |   |   | 2 | 2 |   |   |   |   |   |   |   |   |   | 2 | 3 |   |   |   |   | 2 | 4 |   |   |   |   |   |
|   |   |   | Stop | Play | REC | STEP | SWING | TM-rout | TM-CC |   | 1 |   |   | 2 |   |   | 3 |   | Bar/Main | Shrt/Lon |   |   |   |
|   |   |   | TRANSPORT | MATRIX MODES | STEP VELOCITY | Sync | Loop |   |   |   |
| BTN + LED |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | BTN are on same PCB as ENC |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   | 0 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | 1 |   |   |   |   |   |   |   |   |   |
| BTN + LED |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | Page |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   | Direction | Enc | —SPARE— |   |   |   |   |   |   |   |   |   |   |   |   |   |   | Focus |
|   |   |   | < | > | <> | Page |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   | Cpy |   | Past |   | Clr |   |   |   |   |   |   |
|   | Copy, Paste, Clear and other Execution Buttons have no LEDs and are placed seperately |

1 Like

wow this looks awesome !

AutoQuantize, some Excel again:

| Base = 12tics * 8 = 96tics between 2 16th Steps |
| TIC | Quantize 64 | Quantize 32 | Quantize 16 |
| if | * | && | if | * | Tic | Step | if | * | && | if | * | Tic | Step | if | * | Tic | STEP |
| 0 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 1 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 2 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 3 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 4 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 5 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 6 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 7 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 8 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 9 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 10 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 11 | <= Base | 1 |   |   |   | 0 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 12 | > Base | 1 |   | <= Base | 2 | Base2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 13 | > Base | 1 |   | <= Base | 2 | Base
2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 14 | > Base | 1 |   | <= Base | 2 | Base2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 15 | > Base | 1 |   | <= Base | 2 | Base
2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 16 | > Base | 1 |   | <= Base | 2 | Base2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 17 | > Base | 1 |   | <= Base | 2 | Base
2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 18 | > Base | 1 |   | <= Base | 2 | Base2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 19 | > Base | 1 |   | <= Base | 2 | Base
2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 20 | > Base | 1 |   | <= Base | 2 | Base2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 21 | > Base | 1 |   | <= Base | 2 | Base
2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 22 | > Base | 1 |   | <= Base | 2 | Base2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 23 | > Base | 1 |   | <= Base | 2 | Base
2 | Current | <= Base | 2 |   |   |   | 0 | Current | <= Base | 4 | 0 | Current |
| 24 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 25 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 26 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 27 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 28 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 29 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 30 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 31 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 32 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 33 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 34 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 35 | > Base | 2 |   | <= Base | 3 | Base2 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 36 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 37 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 38 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 39 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 40 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 41 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 42 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 43 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 44 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 45 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 46 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 47 | > Base | 3 |   | <= Base | 4 | Base4 | Current | > Base | 2 |   | <= Base | 4 | Base4 | Current | <= Base | 4 | 0 | Current |
| 48 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 49 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 50 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 51 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 52 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 53 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 54 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 55 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 56 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 57 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 58 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 59 | > Base | 4 |   | <= Base | 5 | Base4 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 60 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 61 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 62 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 63 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 64 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 65 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 66 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 67 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 68 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 69 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 70 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 71 | > Base | 5 |   | <= Base | 6 | Base6 | Current | > Base | 4 |   | <= Base | 6 | Base4 | Current | > Base | 4 | 0 | Next |
| 72 | > Base | 6 |   | <= Base | 7 | Base6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 73 | > Base | 6 |   | <= Base | 7 | Base
6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 74 | > Base | 6 |   | <= Base | 7 | Base6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 75 | > Base | 6 |   | <= Base | 7 | Base
6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 76 | > Base | 6 |   | <= Base | 7 | Base6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 77 | > Base | 6 |   | <= Base | 7 | Base
6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 78 | > Base | 6 |   | <= Base | 7 | Base6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 79 | > Base | 6 |   | <= Base | 7 | Base
6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 80 | > Base | 6 |   | <= Base | 7 | Base6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 81 | > Base | 6 |   | <= Base | 7 | Base
6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 82 | > Base | 6 |   | <= Base | 7 | Base6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 83 | > Base | 6 |   | <= Base | 7 | Base
6 | Current | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 84 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 85 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 86 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 87 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 88 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 89 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 90 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 91 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 92 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 93 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 94 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 95 | > Base | 7 |   |   |   | 0 | Next | >Base | 6 |   |   |   | 0 | Next | > Base | 4 | 0 | Next |
| 96 | Next 16th Note | Next 16th Note | Next 16th Note |

 

 

 

t his code in a Function which delivers midi-input, writes on a specific STEP, a Sequencer-TIC-Offset, and a Velocity in specific Track, which means with that you have a stepsequencer with 96tic Resulution between 2 Step entrys…StepSend is the currently played step, TicSend the currently played 96th Tic which loops from 0-96 between 2 Notes

//RECORD if(port == 1) { //MidiTrigger-Input (Real Drummer) if(Rec == 1) {//Record Switch Active //AutoQuantize OFF? if(AutQuntActive == 0) { Seq[note][StepSend] = velocity; // Write Velocity into current Step on Triggered Note SeqTic[note][StepSend] = TicSend;} // Write a "Time-Stemp" to realize Human Timing. (you can quantize later) //AutoQuantize ON? if(AutQuntActive == 1) {//Quantize while Recording is ON //32nd Quantize Mode if(QuantRate == 1) { //QuantRate0:16th,1:32nd, 2:64 //Write Velocity in currently played Step if(TicSend \<= (BaseTic\*6) ) { //12x6=72 (Tic 0-72) Seq[note][StepSend] = velocity; // Write Velocity into current sequenced Step with Triggered Note if(TicSend \<= BaseTic\*2) {SeqTic[note][StepSend] = 0;}//Straight 16th without delay if(TicSend \> BaseTic\*2 && TicSend \<= BaseTic\*4) {SeqTic[note][StepSend] = BaseTic\*4;}//Delay 2 next 32nd Note if(TicSend \> BaseTic\*4 && TicSend \<= BaseTic\*6) {SeqTic[note][StepSend] = BaseTic\*4;}}//Delay 2 previus 32nd Note else { //Write Velocity into Next note SeqTic[note][StepSend] = 0; // kick back to zero \> straight machine time \> no delay //Are we on Last Step of Loop? if(direction == 1) { //when in Forward Direction Sequencing Mode if(note == Last) { //when Last step is arrived Seq[First][StepSend] = velocity;} //then write Velocity in First Note of Loop if(note \< Last) { //If not Last Step, then simply write in next Step: Seq[note][StepSend+1] = velocity;} //next step } if(direction == 0) { //when in Rewind Direction Sequencing Mode if(note == First) { //when First step is arrived (typical 0) Seq[Last][StepSend-1] = velocity;} //then write Velocity in Last Note of Loop (typical 16) if(note \> First) { //If not First Step, then simply write in next Step: Seq[note][StepSend-1] = velocity;} //next step }} }