Die Inhalte auf dieser Seite stehen unter diesem Creative Commens License Dingsbums. Also fröhlich kopieren und weiterverteilen. Bitte abweichende Copyright-Hinweise in anderen Blogs respektiveren.

Donnerstag, 1. Oktober 2020

Oddy Sequencer MaxForLive device

Abstract

 I had a idea for a new kind of step sequencer named "Oddy Sequencer". In this article i wanna focus on the timing of the note ons in this sequencer concept because i face a problem and request your help.

Sequencer definitions

The Step Sequencer provides 8 different sequences.

Each sequence has it's indivudal tempo. 

The sequences are switched automatically by a pattern.

A pattern has 8 sequences arranged to patternfragments.

Each patternfragments has assigned a sequence 

Each patternfragment has assigned a length "l".

The patternfragment plays "l" steps of it's sequence. This is defined as "tick".

When the all ticks of a patternfragment length l are played,

the sequencer switches to the next pattern fragment immediately.

TestCase 1

Here is a sample how it could look like:


Bf  1     2     3     4     1

    x  x  x  x  x  x  x  x  x      <= sa 

    x     x     x     x     x      <= sb  


Row Bf marks 1/4 bars.

Each x marks a note on.

Sequence sa has set tempo 1/8.

Sequence sb has set tempo 1/4.

That looks familar like a normal step sequencer.

TestCase 2

Now Patternfragment fa is set to sequence sa with length of 8.

And Patternfragment fb is set to sequence sb with length of 4.

Then the sequencer plays like:


Bf 1     2     3     4     1     2     3     4     1

   x  x  x  x  x  x  x  x                                 <= fa 

                           x     x     x     x            <= fb  


It plays sa in the defined length of 8 ticks for fa. 

Each tick produces a note on. 

Each tick is 1/8 bar long.

When the 8 ticks are over it switches to fb and plays 4 ticks, which are now 1/4 bar long.

After that the sequencer starts with the first patternfragment.

That still looks familar like a normal step sequencer.

TestCase 3

Now Patternfragment fa is set to tempo 8 and sequence sa with length of 7.

And Patternfragment fb is set to tempo 4 sequence sb with length of 4.

Then the sequencer plays like:


Bf 1     2     3     4     1     2     3     4     1

   x  x  x  x  x  x  x                                    <= fa 

                        x     x     x     x     x         <= fb  

You see that the sb sequence starts not on the first bar, as usual for step sequencers but immediately after the first patternfragment is finished.

PatternSync 

In the prototype i implemented several different ways to force an additional pattern-sync which switches to the first patternfragment immediately,

- PatternSync on x bars.

- PatternSync on note on detected on device in.

- PatternSync on positive controller edge

etc.

But this Pattern sync is just a detail, not relevant for my actual problem:

The Problem: Syncing the clock

It's a bit tricky to sync the clock with tempos 1/2/4/8/16/32/64/128. 

But it should work.

But now imagine we wanna add triplets and dotted notes for the tempo.

The problem i now really face is how to sync the clock.

Can you define a strategy to sync the clock when supporting triplets and dotted notes in this sequencer concept?

I think when i just set a timer on the defined X (Note on) points this will work some time but the longer it plays it might get out of sync slightly. My problem is to find the points to sync to master clock when pattern sync is disabled and the sequencer plays a long time.

The solution:

A fallback solution to add a sync which occurs all x bars and restarts the sequencer from the very beginning.

Here is a s sample sequence created with the device.

Here is a screenshot of the current gui: