How to do a sequencer ?

Mar 26, 2011 at 7:06am

How to do a sequencer ?

Hello maxers,

I need a general strategy opinion ;-)

To implement an ITM sequencer do you think it is best :

- create/schedule t_timeobject for each note ;
- poll t_itm’s ticks with a clock ; and send notes accordingly to ;
- another way ?

Thanks.

#55827
Mar 26, 2011 at 2:42pm

Inspired by the M4L representation of clip notes I made a sequencer that plays a [coll] of notes where scheduling is simply done with the [pipe] object.

Notes are represented by .

– Pasted Max Patch, click to expand. –
#200703
Mar 26, 2011 at 3:23pm

Hello broc,

thanks for reply ; but we are in DEV forum ;-)

i have the project (vague) to adapt my “badaboum” abstraction (@broc : sequencer implemented with [jit.matrix]) in C or Objective-C or C++ with Cocoa or even Jamoma (?) -i don’t know- but in a lower level language than maxMSP ;

Now i did some test ; and i really don’t know how sequencers usually deal with schedulers/time …

any suggestion/help/info welcomed ;-)

#200704
Mar 26, 2011 at 4:00pm

I’ve created a sequener through using a transport object for time sending out ticks and bangs to a sel object and then through to a matrix ctrl to trigger them. Hope this helps.

– Pasted Max Patch, click to expand. –
#200705
Mar 26, 2011 at 4:55pm

Hello,

Gosh, am i in DEV forum ? is there a temporal spatio failure somewhere ?

;-)

#200706
Mar 26, 2011 at 5:54pm

haha, well, can’t blame ‘em for trying.

i am still a novice coder, i am not sure which way i use and i haven’t looked at my code in 6 months or so(i’ve only been using the object in a patch lately)… but it looks as though i’m scheduling timeobj for each note/step:

void moebius_tick(t_moebius *x)
{
if(x->oneshot)
{
switch(x->noff)
{
case 0:
moebius_clear(x);
time_stop(x->m_timeobj);
goto End;
}
}

if (x->rev)
{
if (x->count >= (x->seqminimum))
{
time_schedule(x->m_timeobj, x->m_quantobj);
moebius_outselect(x);
x->count = x->count – 1;
}
else if (x->count < (x->seqminimum))
{
moebius_clear(x);
if (x->noff)
{
x->count = x->seqmaximum;
time_schedule(x->m_timeobj, x->m_quantobj);
moebius_outselect(x);
x->count = x->count – 1;
}
else if (x->noff == 0)
{
time_stop(x->m_timeobj);
moebius_centerlit(x, 0);
}
}
}
else
{
if (x->count < (x->seqmaximum + 1))
{
time_schedule(x->m_timeobj, x->m_quantobj);
moebius_outselect(x);
x->count = x->count + 1;
} else if (x->count >= (x->seqmaximum + 1))
{

moebius_clear(x);

if (x->noff)
{
x->count = x->seqminimum;
time_schedule(x->m_timeobj, x->m_quantobj);
moebius_outselect(x);
x->count = x->count + 1;
}
else if (x->noff == 0)
{
time_stop(x->m_timeobj);
moebius_centerlit(x, 0);
}
}
}

End:
;
}

#200707
Mar 27, 2011 at 7:12am

Hello raja,

i’m happy to hear you again ;-)

thanks for reply ;

#200708
Mar 31, 2011 at 10:32pm

I’ve made some pretty simple step sequencers in Max using the iTable I believe it’s called. Basically it gives you a chart you can mouseclick on and you can have the different values of the chart effect frequency tones or whatever. The draw back is you have to leave on line empty to have an “off” if you want one, and also you can’t combine 2 notes at once with this way (as far as I know. I wish I could, it would make drumbeats easier to program…) Then just send the metro through a counter and send that to your itable, and from the itable do like a scale to convert your chart to notes or whatever.

#200709

You must be logged in to reply to this topic.