303 sequencer (still testing!)


#1

Hello everyone:

i'm still after the best possible sequencing solution for axoloti, and i might have done a big leap forward since my first subpatch (16 step sequencer).

This sequencer allows for rests, 303ish glides, shuffle, triplets (and more generally different time signatures) etc.

Things are quite different from the other sequencer subpatch: i had to program 2 new objects for this task, since i wanted to avoid all sorts of problems with execution order.

sel i 32 seq.axo (6.2 KB) (this goes in objects/sel folder)
counter seq.axo (3.0 KB) (this goes in objects/logic folder)

They are still quite raw (and they will give some red warning when opening axoloti patcher, but afaik everything works)

You can find an example patch here prova oggetto custom.axp (10.4 KB)

How does it work:

You can sequence up to 32 steps with this object. The number of steps is specified in the steps box in the main object (counter seq). You can change every single parameter live without disconnecting the patch.
The length of a step is specified by a number of clock ticks (pps, pulses per step), and there are two boxes where you can set this length. You can select which setting to use for each step in the sequencer (ppssel line, 0=pps1; 1=pps2).

For example, if you set pps1 to 12, the sequencer will advance of one step for every 12 clock ticks. This allows you to introduce some shuffle: just connect some object like "i radio 8" to the shuffle inlet and you're ready to go.
You can add positive or negative shuffle, beware to use a number smaller than pps1 or pps2 (maybe 1 or 2 units smaller), otherwise this feature won't work properly.

With the mul2 line of the sequencer you're basically doubling the length of the current step.
De facto you'll be able to use 4 different time subdivisions per sequence if you do the math correctly.

Gate outlet provides a decent gate signal you can feed to an envelope. The nice thing about this gate signal is that there is a gap between every step, unless you press the legato button. It's slightly more advanced than a simple boolean selector.

Legato, accent and ghost outlets simply provide 3 boolean outputs, they are named this way because of the purpose of the object, but you can really use them for anything you like (maybe for sequencing other stuff)

I think i'll write something more later, however the example patch is pretty self explanatory! Have fun!


#2

wow......very cool .. :grin:
perhaps pps1 annd 2 could have mod inputs
must be easy for u..


#3

Awesome, mate :smile:

Was trying to put the ibar inside a sequencer yesterday. Willl take a look inside yours and see how you did it :smile:

One question:
How woulsd you set it up for use with midi clock? Can you edit steps length when using midi clock? I use divremc to get amount of steps when using midi clock, but problem is that you cannot set the steps when the patch is live or alter amount of steps in anyway when the patch is live.

Maybe we could make a version of the denominator with and inlet to set denominator value? A direction woud also be nice so we could play fwd and rev. Going to try and make this when I know more about making custom objects.


#4

I managed to get the display inside the sequencer but it is not moving like the one i placed above. So it seems like the display is there, but the inlets of the sequencer is not connected to th display.

How did you do that? I looked at the code of your object, but cannot really figure out if I have to write more code to connect the display to the inlet so the display moves with the sequncer. I see in your patch in line 136:

"disp_stepbar=stepcnt;"

But adding that to mine doesnt do much. Except now the object is not recognised by Axoloti...

The code looks like this after I inserted the display:

;

I added line 16 and changed a little bit in the display line in 15 and 17


#5

@philoop
Why mod inputs? With this system you can already have 4 different time subdivisions (for example 16th, 8th, triplet 16th and triplet 8th)
Plus you can already edit those parameters live, you don't have to disconnect the patch.

@jaffasplaffa
If you want to use it with midi clock you can do a setup like this:

I chose pos24pps outlet in the midi object: that means that for every quarter note there are 24 clock ticks.
i chose pps1=24/4=6 to get the 16th notes and pps2=24/3=8 to get the 16th triplet notes.
If i want to make a triplet note in the sequencer i just have to click in the ppssel sequencer.
If i want to make it double length i'll just click in the mul2 sequencer

You can do everything live with this setup.

Also, for the display: stepcnt is a variable i used in my object to define the step position, in your case i think you could just write disp_stepbar=inlet_in;


#6

Aahhh who knew it was so simple.... :9 Great... That opens up for all the cool functions. Thanks.

I tried that but now the object doesnt work. I get this error:

/axoloti-master/build/xpatch.cpp:179:1: error: 'disp_stepbar' was not declared in this scope

disp_stepbar=inlet_in;
^

Code looks like this:


#7

Sorry! disp_in should do the trick


#8

YES that worked :smile: Going to insert then in all sequencers now :=) Much nicer with the display insinde the object :smile: Saves alot of screenspace.


#9

it would be nice to mess around with step length/pps1/pps2 maybe feed some random :stuck_out_tongue:


#10

Maybe it could be useful to have some kind of humanizer, however that can be achieved putting some delayedpulsem before the trig input. What do you think?