drum machine

Nov 20, 2007 at 10:54pm

drum machine

hello all, im currently in the process of building up a drum machine for a uni project. little suck at the moment, im trying to make it 16 beat sequence based with random outcomes if that makes sense.

i was just wondering if anyone could lend me a hand or can point me in a direction of a drum machine made in max i can have a look at.

thanks a lot guys and gals.

#34687
Nov 21, 2007 at 12:33am

Probably are tons and tons out there of all flavors. I’d say roll your own. Look into matrixctrl for the sequencer control grid, maybe use a bpfunction for envelopes (volume, FX, etc), or you can use tables and / or multisliders.

This is just the start, though — when you hook up pattr to (say) your matrixctrl you’ll see you have a ton more options for generating and storing your sequences. Then it’s all about adding shortcuts like fill each 4th beat, paint cells using specific value level, randomize, playback any or all rows in either direction, playback only ranges of rows, playback each or all rows at specific tempi, etc… all readily possible with metro, counter, random, modulus (%), etc.

For example, send a # from 1-16 –> %4 –> sel 0 –> this would only bang on 4, 8, 12, 16 (when remainder = 0). Then this fills in (or flips on / off) a repeating series of sequencer cells (every 4th cell).

Pattr hooked up to bpfunction will behave erratically when there are more points in one preset than another (interpolation is not exact, as makes sense when considering the data). Integer presets work fine in these cases (jumps to new data set size). The other objects all will work OK with interpolation provided the data sets are the same size.

Have fun!

–CJ

#117467
Nov 21, 2007 at 11:34pm

from what you’re saying I’m working on the exact same thing. I just have a set of multisliders with values from 0-127 (or 0-99 if you want to work by probability)and a metro that bangs out random #s. It cycles through eash slider value and if the random # is less than that value then it plays. It’s like having a likelihood that a drum will play on a given beat. Basically this creates an average or approximate beat and the drum machine fills in the gaps.
Is that about what you’re doing?

#117468
Nov 24, 2007 at 1:52am

Sounds cool. I’m away from my Max machine so I can’t see the patches. I’m getting a feeling for what you’re doing and it seems like a good direction. Now the question is: What else can I add? There’s a lot…

The multislider is great, can work well for the probability-based usage as well as setting volume levels for each beat, or effects levels, etc. Look into pattr for that and many other objects. It’s a *lot* more powerful than preset and only takes a bit longer to set up… you’ll be glad you did. And if you access the stored slots by integer, it behaves just like preset.

Other ideas include the range bar to restrict the range of playback (low / high values set the counter for accessing the indices, and can then do either or both directions), variable-rate playback via metro, different rates for each track, etc.

It’s good to have a multiplier for the metro if you have multiple tracks — so one plays 2X as fast, or 1/3 as fast, based upon a master tempo (master metro setting that goes through multipliers to set individual track metro speeds). Look into the tempo object to work with bpm instead of milliseconds. And finally, remember that metro is *not* totally stable in its timing — it’s not designed for this. You need to use an audiorate clock for that (look up on the forum, or the phasor~ helpfile). This will keep tempo accurate over long periods, as it uses the audio thread rather than the scheduler thread.

Try running a sequence, then drag your window around. You’ll probably notice some slowing. It may feel like a feature, but “ritardando” is much better controlled via metro than by this technique! To avoid this turn Overdrive on which puts redraw at low priority and timing at high.

Lots of possibilities. Keep it up!

–CJ

#117469
Nov 29, 2007 at 3:57pm

yeah thats pretty similar, im having issues with it cycling though the slider value tho. how do you make it go though each one?

#117470
Nov 30, 2007 at 12:13pm

oh wait got it with a gate.

#117471
Dec 1, 2007 at 6:37am

Quote: Jimmeh wrote on Fri, 30 November 2007 04:13
—————————————————-
> oh wait got it with a gate.
—————————————————-

Accessing multislider with a gate sounds like a lot of work. Do you know about the fetch message? It’s a good idea to consult the reference manual regularly. Nobody can remember all those messages…

I also like using multisliders for a progress bar (current beat indicator). Here’s a small example.

-Adam

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P newex 408 328 60 196617 prepend 33;
#P newex 386 305 32 196617 sel 0;
#P newex 438 272 60 196617 prepend 32;
#P newex 416 249 32 196617 sel 0;
#P user multiSlider 117 233 265 35 0. 127. 16 2665 15 0 1 2 0 35 0;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P user multiSlider 117 198 265 35 0. 127. 16 2665 15 0 1 2 0 35 0;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P newex 508 230 60 196617 prepend 31;
#P newex 508 389 58 196617 noteout 10;
#P newex 508 360 85 196617 makenote 80 100;
#P newex 486 207 32 196617 sel 0;
#P message 36 192 53 196617 set $1 -1;
#P newex 36 141 29 196617 t i 0;
#P button 103 62 15 0;
#P message 103 41 43 196617 restart;
#P toggle 36 35 15 0;
#P newex 36 59 58 196617 metro 200;
#P message 103 130 48 196617 fetch $1;
#N counter 1 16;
#X flags 0 0;
#P newobj 36 91 68 196617 counter 1 16;
#P user multiSlider 117 268 265 19 -1. 0. 16 2921 15 1 0 2 0 0 0;
#M frgb 25 29 255;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P objectname tick;
#P user multiSlider 117 164 265 35 0. 127. 16 2665 15 0 1 2 0 35 0;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P window linecount 2;
#P comment 184 131 100 196617 Use the multislider to set velocities;
#P window linecount 4;
#P comment 516 271 109 196617 Change the midi note numbers over here (there is lots of room for improvement here);
#P window linecount 1;
#P comment 27 21 46 196617 On/Off;
#P connect 8 0 7 0;
#P connect 7 0 5 0;
#P connect 5 0 11 0;
#P connect 11 0 12 0;
#P fasten 10 0 5 2 108 84 69 84;
#P connect 9 0 10 0;
#P fasten 5 0 6 0 41 120 108 120;
#P fasten 6 0 3 0 108 159 122 159;
#P fasten 6 0 17 0 108 197 122 197;
#P fasten 6 0 18 0 108 231 122 231;
#P fasten 11 1 4 0 60 170 95 170 95 266 122 266;
#P fasten 12 0 4 0 41 266 122 266;
#P fasten 18 1 21 0 377 268 391 268;
#P connect 21 1 22 0;
#P fasten 17 1 19 0 377 233 421 233;
#P connect 19 1 20 0;
#P fasten 3 1 13 0 377 198 491 198;
#P connect 13 1 16 0;
#P fasten 22 0 14 0 413 352 513 352;
#P fasten 20 0 14 0 443 296 513 296;
#P connect 16 0 14 0;
#P connect 14 0 15 0;
#P fasten 14 1 15 1 588 383 537 383;
#P window clipboard copycount 23;

#117472
Dec 2, 2007 at 12:18pm

How about accurate (the triggering engine is based on signals), polyrhytms:

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P hidden newex 505 257 48 9109513 zl group 4;
#P hidden newex 506 191 40 9109513 uzi 4;
#P hidden newex 505 235 32 9109513 / 512.;
#P hidden newex 505 213 57 9109513 random 513;
#P comment 368 58 100 9109513 bars multipliers;
#P hidden newex 76 84 19 9109513 t 1;
#P hidden newex 146 51 79 9109513 unpack i f f f f i;
#P hidden newex 148 28 115 9109513 loadmess 0 120 1. 1. 1. 8;
#P user ezdac~ 25 121 69 154 0;
#P user multiSlider 135 277 100 355 0. 1. 8 2936 15 0 0 2 2 0 0;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 109 118 48;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P hidden newex 506 165 27 9109513 t b i;
#P number 540 74 35 9 1 256 3 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P user multiSlider 369 80 169 64 0. 4. 8 2681 47 0 0 2 0 0 0;
#M frgb 0 0 0;
#M brgb 255 255 255;
#M rgb2 127 127 127;
#M rgb3 0 0 0;
#M rgb4 37 52 91;
#M rgb5 74 105 182;
#M rgb6 112 158 18;
#M rgb7 149 211 110;
#M rgb8 187 9 201;
#M rgb9 224 62 37;
#M rgb10 7 114 128;
#P window linecount 2;
#P comment 306 89 58 9109513 master time signature;
#P flonum 330 118 35 9 1. 512. 3 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 296 118 35 9 1. 512. 3 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P window linecount 1;
#P hidden newex 296 143 45 9109513 pak 1. 1.;
#P window linecount 2;
#P comment 225 125 58 9109513 master bpm multiplier;
#P window linecount 1;
#P comment 161 134 58 9109513 master bpm;
#P flonum 242 151 35 9 0. 100. 3 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 188 151 35 9 0. 10000. 3 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P toggle 135 119 15 0;
#N vpatcher 25 70 625 470;
#N comlet amount of bars;
#P inlet 221 48 14 0;
#P toggle 17 31 15 0;
#P window setfont “Sans Serif” 9.;
#P newex 13 62 34 9109513 mute~;
#N vpatcher 141 92 935 757;
#N comlet mute;
#P inlet 258 49 15 0;
#P window setfont “Sans Serif” 9.;
#P newex 486 417 58 9109513 + 1.;
#P newex 437 396 59 9109513 Leftgate 2 1;
#P newex 485 375 27 9109513 < 0.;
#P newex 437 353 27 9109513 – 0.;
#P newex 437 334 27 9109513 t f f;
#P newex 437 280 44 9109513 pong~ 1.;
#P newex 513 283 33 9109513 edge~;
#P newex 509 160 70 9109513 adstatus sigvs;
#B color 9;
#P newex 577 220 27 9109513 + 1;
#P newex 513 262 102 9109513 ==~ 32;
#P newex 513 241 73 9109513 count~ 1 33 1 1;
#P newex 437 312 67 9109513 snapshot~ 0 0;
#P newex 509 180 40 9109513 change;
#B color 9;
#P comment 439 466 72 9109513 progress delta;
#B color 1;
#N comlet progress delta;
#P outlet 437 449 15 0;
#P newex 17 31 45 9109513 loadbang;
#P message 17 158 18 9109513 60;
#P newex 500 85 46 9109513 change 0;
#P button 17 56 91 0;
#P newex 301 367 31 9109513 *~ -1.;
#P newex 301 253 27 9109513 -~;
#P newex 301 411 65 9109513 receive~ $0.d;
#B color 6;
#P newex 301 391 54 9109513 send~ $0.d;
#B color 6;
#P newex 301 347 28 9109513 *~ 0.;
#P newex 375 320 34 9109513 ==~ 1.;
#P newex 375 280 34 9109513 >=~ 1.;
#P newex 375 300 33 9109513 delta~;
#P newex 301 186 36 9109513 sig~ 1.;
#P newex 301 226 23 9109513 +=~;
#P newex 500 66 55 9109513 adstatus sr;
#P newex 385 66 52 9109513 unpack f f;
#P newex 427 87 57 9109513 prepend set;
#P flonum 284 103 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 417 109 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 379 109 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 340 109 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 301 140 103 9109513 pak 60. 1. 1. 1. 44100.;
#N comlet bpm multiplier;
#P inlet 343 47 15 0;
#P newex 301 162 167 9109513 expr (1/($f5-1))*($f1*$f2/60*($f3/$f4));
#N comlet time signature x y;
#P inlet 385 47 15 0;
#N comlet master bpm;
#P inlet 301 47 15 0;
#P user ezdac~ 19 189 63 222 0;
#P connect 26 0 23 0;
#P connect 23 0 25 0;
#P connect 25 0 9 0;
#P connect 9 0 5 0;
#P connect 1 0 5 0;
#P connect 5 0 3 0;
#P connect 3 0 14 0;
#P connect 42 0 14 0;
#P connect 14 0 13 0;
#P connect 23 0 13 0;
#P fasten 20 0 13 0 306 436 283 436 283 220 306 220;
#P lcolor 6;
#P connect 13 0 21 0;
#P connect 21 0 18 0;
#P connect 18 0 22 0;
#P connect 22 0 19 0;
#P connect 14 0 21 1;
#P fasten 17 0 18 1 380 342 324 342;
#P connect 6 0 5 1;
#P connect 4 0 5 1;
#P connect 7 0 5 2;
#P connect 11 0 5 2;
#P connect 8 0 5 3;
#P connect 10 0 5 3;
#P fasten 21 0 16 0 306 275 380 275;
#P connect 16 0 15 0;
#P connect 15 0 17 0;
#P connect 2 0 11 0;
#P connect 24 0 5 4;
#P connect 11 1 10 0;
#P fasten 21 0 36 0 306 275 442 275;
#P connect 35 0 30 0;
#P connect 36 0 30 0;
#P connect 30 0 37 0;
#P connect 37 1 38 0;
#P connect 38 0 40 0;
#P connect 40 0 27 0;
#P fasten 41 0 27 0 491 442 442 442;
#P connect 37 0 38 1;
#P fasten 38 0 39 0 442 373 490 373;
#P connect 39 0 40 1;
#P connect 40 1 41 0;
#P connect 12 1 24 0;
#P connect 34 1 29 0;
#P lcolor 10;
#P connect 31 0 32 0;
#P connect 32 0 35 0;
#P connect 33 0 31 1;
#P fasten 29 0 33 0 514 217 582 217;
#P lcolor 10;
#P fasten 29 0 32 1 514 216 610 216;
#P lcolor 10;
#P pop;
#P newobj 81 73 77 9109513 p delta.calc.HP~;
#P newex 90 146 31 9109513 Lmult;
#P newex 90 278 28 9109513 Ladd;
#P newex 108 250 48 9109513 Ltest < 0.;
#P newex 90 228 28 9109513 Lsub;
#P newex 108 200 48 9109513 Ltest > 1.;
#P newex 90 176 28 9109513 Ladd;
#N vpatcher 273 508 867 775;
#P window setfont “Sans Serif” 9.;
#P window linecount 0;
#P newex 30 53 27 9109513 t b i;
#P inlet 30 27 15 0;
#P newex 439 88 52 9109513 Lrepeat 32;
#N comlet lmult;
#P outlet 440 117 15 0;
#P window linecount 1;
#P newex 290 106 52 9109513 Lrepeat 32;
#P message 290 87 16 9109513 0.;
#P newex 278 29 45 9109513 loadbang;
#N comlet ladd;
#P outlet 288 138 15 0;
#P connect 6 0 7 0;
#P connect 7 0 1 0;
#P connect 3 0 0 0;
#P connect 1 0 2 0;
#P connect 2 0 3 0;
#P connect 7 1 3 1;
#P connect 1 0 5 0;
#P connect 5 0 4 0;
#P connect 7 1 5 1;
#P pop;
#P newobj 223 72 53 9109513 p loadbang;
#B color 9;
#N comlet slave engine bpm multipliers;
#P inlet 199 33 15 0;
#N comlet master time signature x/y;
#P inlet 140 31 15 0;
#N comlet master bpm multiplier;
#P inlet 113 31 15 0;
#N comlet master bpm;
#P inlet 86 31 15 0;
#N comlet bar positions;
#P outlet 90 354 15 0;
#N comlet mute 0/1;
#P inlet 59 31 15 0;
#P message 57 80 21 9109513 0.5;
#P connect 16 0 15 0;
#P connect 1 0 16 0;
#P connect 15 0 14 0;
#P connect 14 0 13 0;
#P connect 13 0 8 0;
#P connect 8 0 10 0;
#P connect 10 0 12 0;
#P connect 12 0 2 0;
#P connect 3 0 14 1;
#P fasten 12 0 8 1 95 300 68 300 68 171 113 171;
#P lcolor 6;
#P fasten 7 0 8 1 228 172 113 172;
#P lcolor 10;
#P fasten 8 0 9 0 95 196 113 196;
#P connect 9 0 10 1;
#P fasten 10 0 11 0 95 248 113 248;
#P connect 11 0 12 1;
#P connect 6 0 13 1;
#P fasten 7 1 13 1 271 141 116 141;
#P lcolor 10;
#P connect 4 0 14 2;
#P connect 5 0 14 3;
#P connect 17 0 7 0;
#P pop;
#P newobj 134 168 303 9109513 p clocker;
#P comment 127 102 100 9109513 on/off;
#P window linecount 4;
#P comment 240 305 100 9109513 bars progress //this multislider is the onlz cpu intesnive thing in this patch////;
#P window linecount 1;
#P comment 545 58 100 9109513 number of bars;
#P comment 465 469 100 9109513 ACTION;
#P button 434 362 239 0;
#P hidden fasten 0 0 20 0 153 27;
#P connect 6 0 5 0;
#P connect 7 0 5 1;
#P connect 8 0 5 2;
#P hidden connect 13 0 11 1;
#P hidden connect 12 0 11 0;
#P hidden connect 11 0 5 3;
#P connect 15 0 5 4;
#P connect 5 0 18 0;
#P hidden connect 21 5 16 0;
#P hidden connect 21 4 13 0;
#P hidden connect 21 3 12 0;
#P hidden connect 21 2 8 0;
#P hidden connect 21 1 7 0;
#P hidden connect 21 0 6 0;
#P connect 22 0 19 0;
#P hidden connect 24 0 25 0;
#P hidden connect 26 0 24 0;
#P hidden connect 25 0 27 0;
#P hidden connect 16 0 17 0;
#P hidden connect 16 0 5 5;
#P hidden connect 17 0 26 0;
#P hidden connect 27 0 15 0;
#P hidden connect 17 1 27 1;
#P hidden connect 17 1 26 1;
#P hidden connect 20 0 21 0;
#P hidden connect 20 0 22 0;
#P window clipboard copycount 28;

#117473
Dec 2, 2007 at 12:24pm

more cpu friendly is to store multislider data in value objects/one for each step/… then use sprintf to call the appropriate step and send data to the sound generator

#117474
Dec 3, 2007 at 7:31am

….Moreover multislider doesnt display low values properly. For clear interface I strongly reccomend diy multislider using LCD. It will also lower CPU overhead

#117475
Dec 3, 2007 at 11:22am

#117476
Dec 3, 2007 at 8:22pm

Have you created a DIY LCD-based multislider that you can share?

On Dec 3, 2007 2:31 AM, itchy wrote:
>
> ….Moreover multislider doesnt display low values properly. For clear interface I strongly reccomend diy multislider using LCD. It will also lower CPU overhead
>

#117477
Dec 4, 2007 at 7:13pm

Couldnt help you now, but I have it somewhere. Something to start with: http://maxobjects.com/?v=objects&id_objet=2332&requested=multislider&operateur=AND&id_plateforme=0

#117478
Dec 20, 2007 at 7:10pm

those sliders were really helpful using them to control effects and pitch. cheers!

has anyone got a good drum roll tool. tried using stutter but im not sure im using it right.

#117479
Dec 28, 2007 at 4:37am

Question about preset:
I am building a drum machine using preset.
The metro bangs fast 16th to the counter and runs through different tables (that chose notes of the drum) chosen by a gate.
The preset sets the gate, and it will help for more later. My problem is that when i change a preset, my counter is not finished to read the table it actually runs.
I would like to hit a new preset for the next count, and the next setting will be turning on when my counter will be back to 0.
How can I program it?

#117480
Dec 28, 2007 at 8:22am

i don’t know [preset], but to ‘sync’ a bang you could experiment with [gate] and [sel]: use your preset change activity (i suppose you click a button or sth like that?) to open the gate, so the bang from [sel 0] (change the arg for any other beat you’d like things to change on) can come through and change your presets.

[bang [counter 15]
| |
[1 [sel 0]
| /
| /
[gate]
|
[t b 0]
|
| lead back to the left inlet of [gate] to close it again
|
|
to [preset] or wherever you want it to go to

(sorry, the spaces in above example are not reproduced in the forumformatting it seems.)

hope this helps,
cheers, robbert

#117481
Jan 5, 2008 at 8:14pm

my advice:

one word: seq~

keep your sequencing in the signal domain – infinitely better! seq~ has the advantage of being able to send out any message as well, not just bangs. Also, you can lock sync to any rewire host using hostphasor~.

i’ve made drum machine things in the past and cant recommend enough doing things in the signal domain (MSP) as opposed to the event world of max.

Also, wherever you’re thinking of using the preset object, use pattr also infinitely better!

#117482
Jan 5, 2008 at 9:29pm

Seconded. I recently changed an old drum machine patch of mine to be driven
by seq~, (and pattrified it at the same time, strangely enough), and it was
well worth the effort.
Cheers
Roger

On 5/1/08 20:14, “kevin” wrote:

>
> my advice:
>
> one word: seq~
>
> keep your sequencing in the signal domain – infinitely better! seq~ has the
> advantage of being able to send out any message as well, not just bangs. Also,
> you can lock sync to any rewire host using hostphasor~.
>
> i’ve made drum machine things in the past and cant recommend enough doing
> things in the signal domain (MSP) as opposed to the event world of max.
>
> Also, wherever you’re thinking of using the preset object, use pattr also
> infinitely better!

#117483
Feb 15, 2008 at 9:37pm

im creating a similar thing and have a problem with the gate function after the pattern has been entered into a matrixctrl. A metro is creating the timing and a gate 16 is splitting the bang into 16 steps except it misses the first bang so it is effectivey 15 steps. That is to say the first beat on the matrixctrl is the second bang out of the gate.

#117484
Feb 17, 2008 at 1:29am

don’t you have to turn on the gate to get it to advance – from 0 to 1, for example?

Toiletmuck wrote:
im creating a similar thing and have a problem with the gate function after the pattern has been entered into a matrixctrl. A metro is creating the timing and a gate 16 is splitting the bang into 16 steps except it misses the first bang so it is effectivey 15 steps. That is to say the first beat on the matrixctrl is the second bang out of the gate.

#117485
Feb 17, 2008 at 2:32am

I’ll speak english
I resolved the prole, and I did use max to play some songs last week.
It was really stable !
The thing is you have to use many of the foncions to run the counter thru the gates to make t run properly, But it works!
I’ll show you later my patch that is sill un perfect because:
if I try it once it is oen, it wont be workin a secont time on begining,
In Fact, I have to set it up better because max is not a drum machine, but can make it eventually and it can be the most open drum machine ever used
Have many children ,
Iv

#117486
Feb 17, 2008 at 3:03pm

the problem now appears to be that the first column of sequence comes out as the last, through the gate…

have a look see

max v2;
#N vpatcher 0 0 1280 730;
#P origin 5 -41;
#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#P message 86 196 26 9109513 stop;
#P message 28 196 56 9109513 startwindow;
#P flonum 431 180 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P window setfont “Sans Serif” 12.;
#P comment 290 30 15 9109516 1;
#P button 32 249 34 0;
#P button 67 249 34 0;
#P button 102 249 34 0;
#P button 137 249 34 0;
#P button 172 249 34 0;
#P button 207 249 34 0;
#P button 242 249 34 0;
#P button 277 249 34 0;
#P comment 294 230 15 9109516 8;
#P comment 259 230 15 9109516 7;
#P comment 225 230 15 9109516 6;
#P comment 190 230 15 9109516 5;
#P comment 153 230 15 9109516 4;
#P comment 119 230 15 9109516 3;
#P comment 84 229 15 9109516 2;
#P comment 49 229 15 9109516 1;
#P comment 9 30 15 9109516 1;
#P window setfont “Sans Serif” 9.;
#P comment 15 163 13 9109513 8;
#P comment 15 147 13 9109513 7;
#P comment 15 131 13 9109513 6;
#P comment 15 115 13 9109513 5;
#P comment 15 98 13 9109513 4;
#P comment 15 81 13 9109513 3;
#P comment 15 66 13 9109513 2;
#P comment 15 49 13 9109513 1;
#P user led 278 230 17 17 2 150;
#P user led 242 230 17 17 0 150;
#P user led 208 230 17 17 2 150;
#P user led 172 230 17 17 0 150;
#P user led 33 230 17 17 0 150;
#P user led 67 230 17 17 2 150;
#P user led 102 230 17 17 0 150;
#P comment 396 135 47 9109513 metro ON;
#P number 387 180 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P hidden newex 686 238 209 9109513 gate 16;
#P user led 137 230 17 17 2 150;
#P hidden button 15 231 15 0;
#P number 443 135 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P message 357 178 28 9109513 clear;
#P button 274 31 15 0;
#P button 258 31 15 0;
#P button 242 31 15 0;
#P button 226 31 15 6;
#P button 207 31 15 0;
#P button 191 31 15 0;
#P button 175 31 15 0;
#P button 159 31 15 6;
#P button 141 31 15 0;
#P button 125 31 15 0;
#P button 109 31 15 0;
#P button 93 31 15 6;
#P button 75 31 15 0;
#P button 59 31 15 0;
#P button 43 31 15 0;
#P button 27 31 15 6;
#P hidden newex 885 157 105 9109513 unpack i i i i i i i i;
#P user matrixctrl 28 50 270 138 MatrixDefaultCell.pct MatrixDefaultBkgnd.pct 270 138 16 16 16 8 16 16 1 1 48 2 5120 0;
#P message 381 135 14 9109513 1;
#P button 539 135 15 0;
#P toggle 365 135 15 0;
#P comment 479 135 59 9109513 metro timing;
#P comment 557 135 30 9109513 pulse;
#P hidden newex 885 202 28 9109513 sel 1;
#P hidden newex 331 217 50 9109513 metro 700;
#P hidden newex 690 68 87 9109513 prepend getcolumn;
#P hidden newex 643 46 27 9109513 – 1;
#P hidden newex 643 24 105 9109513 t i i i i i i i i;
#N counter 1 16;
#X flags 0 0;
#P hidden newobj 749 24 66 9109513 counter 1 16;
#P comment 468 180 40 9109513 speed;
#P hidden connect 34 0 14 0;
#P hidden connect 30 0 12 0;
#P hidden fasten 4 0 12 0 695 157 33 157;
#P hidden connect 68 0 12 0;
#P hidden connect 67 0 12 0;
#P hidden connect 66 0 12 0;
#P hidden connect 65 0 12 0;
#P hidden connect 64 0 12 0;
#P hidden connect 63 0 12 0;
#P hidden connect 62 0 12 0;
#P hidden connect 61 0 12 0;
#P connect 39 0 68 0;
#P hidden connect 14 0 39 0;
#P hidden connect 15 0 39 0;
#P hidden connect 16 0 39 0;
#P hidden connect 17 0 39 0;
#P hidden connect 18 0 39 0;
#P hidden connect 19 0 39 0;
#P hidden connect 20 0 39 0;
#P hidden connect 21 0 39 0;
#P hidden connect 22 0 39 0;
#P hidden connect 23 0 39 0;
#P hidden connect 24 0 39 0;
#P hidden connect 25 0 39 0;
#P hidden connect 26 0 39 0;
#P hidden connect 27 0 39 0;
#P hidden connect 28 0 39 0;
#P hidden connect 29 0 39 0;
#P hidden connect 34 1 15 0;
#P hidden connect 34 2 16 0;
#P connect 38 0 67 0;
#P hidden connect 34 3 17 0;
#P hidden connect 34 4 18 0;
#P connect 37 0 66 0;
#P hidden connect 34 5 19 0;
#P hidden connect 34 6 20 0;
#P hidden connect 32 0 33 0;
#P connect 33 0 65 0;
#P hidden connect 34 7 21 0;
#P hidden connect 34 8 22 0;
#P connect 40 0 64 0;
#P hidden connect 34 9 23 0;
#P hidden connect 34 10 24 0;
#P hidden connect 34 11 25 0;
#P connect 41 0 63 0;
#P hidden connect 34 12 26 0;
#P hidden connect 34 13 27 0;
#P connect 42 0 62 0;
#P hidden connect 34 14 28 0;
#P hidden connect 34 15 29 0;
#P connect 43 0 61 0;
#P hidden connect 9 0 5 0;
#P hidden connect 70 0 5 1;
#P hidden connect 2 1 35 0;
#P hidden connect 2 0 31 0;
#P hidden connect 5 0 10 0;
#P hidden connect 1 0 2 0;
#P hidden fasten 2 0 3 0 648 34 648 34;
#P hidden connect 31 0 34 0;
#P hidden fasten 3 0 4 0 648 66 695 66;
#P hidden connect 10 0 1 0;
#P hidden connect 11 0 1 2;
#P hidden fasten 12 1 13 0 293 526 998 526 998 82 890 82;
#P hidden connect 13 0 6 0;
#P hidden connect 6 0 34 1;
#P pop;

#117487
Feb 18, 2008 at 2:27pm

#117488
Feb 20, 2008 at 4:17pm

ive just noticed how metro is at keeping time and was looking at using seq~ as suggested but not entirely sure how to use it. any advice?

cheers james

#117489
Feb 20, 2008 at 9:15pm

I recently converted an old drum machine patch to be seq~ driven, for just
this reason. I don’t have it with me atm, but I’ll try and whittle out the
appropriate bits and post it tomorrow,
Cheers
Roger

On 20/02/2008 16:18, “James” wrote:

>
> ive just noticed how metro is at keeping time and was looking at using seq~ as
> suggested but not entirely sure how to use it. any advice?
>
> cheers james

#117490
Feb 26, 2008 at 1:00am

sweet should be useful!

#117491
Feb 26, 2008 at 10:21am

OK, here it is.
It’s not sample accurate as it dips into the schedular domain – for sample accurate triggering you want Eric Lyon’s el.samm~ etc. – but if you drive a number of these modules from a single master phasor, the timing stays a lot tighter than a metro driven clock.
It’s probably more complicated than it needs to be, as it drives other functionality elsewhere in the patch, but it should get you started,
cheers
Roger

#P window setfont “Sans Serif” 9.;
#P window linecount 1;
#N vpatcher 20 74 620 474;
#P outlet 113 203 15 0;
#P pop;
#P newobj 29 363 72 196617 p bonk module;
#N vpatcher 20 74 620 474;
#P outlet 113 203 15 0;
#P pop;
#P newobj 15 345 70 196617 p ping module;
#P user ezdac~ 88 521 132 554 0;
#P newex 90 486 37 196617 click~;
#P button 90 462 15 0;
#P newex 90 440 102 196617 route click ping bonk;
#P user matrixctrl 191 76 264 23 MatrixDefaultCell.pct MatrixDefaultBkgnd.pct 264 23 16 16 16 1 16 16 1 1 48 2 5120 0;
#P newex 234 234 72 196617 prepend add 1;
#P button 141 59 15 0;
#P message 152 80 33 196617 clear;
#N vpatcher 427 672 1027 1072;
#P window setfont “Sans Serif” 9.;
#P newex 190 112 27 196617 > 0;
#P button 172 153 15 0;
#P newex 150 82 40 196617 t i i i;
#P newex 190 135 27 196617 + 1;
#P newex 50 174 38 196617 gate 2;
#P message 177 242 61 196617 delete 1 $1;
#P newex 193 197 62 196617 prepend set;
#P flonum 177 220 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 150 132 32 196617 sel 0;
#P message 172 171 31 196617 click;
#P newex 78 226 59 196617 pack 1. s 1;
#P newex 78 107 61 196617 * 0.0625;
#P newex 78 82 27 196617 + 1;
#P newex 78 50 67 196617 unpack 1 2 3;
#N comlet from mctl;
#P inlet 78 30 15 0;
#N comlet set event;
#P outlet 78 248 15 0;
#N comlet delete event;
#P outlet 177 262 15 0;
#P comment 206 173 83 196617 < -- voice name;
#P fasten 14 0 13 0 195 161 55 161;
#P connect 3 0 4 0;
#P connect 4 0 5 0;
#P connect 5 0 6 0;
#P connect 6 0 13 1;
#P connect 13 1 7 0;
#P connect 7 0 2 0;
#P connect 8 0 7 1;
#P fasten 15 1 7 2 170 217 131 217;
#P fasten 4 2 15 0 139 75 155 75;
#P connect 15 0 9 0;
#P connect 9 1 16 0;
#P connect 16 0 8 0;
#P connect 11 0 10 0;
#P fasten 9 0 10 0 155 198 182 198;
#P connect 10 0 12 0;
#P connect 12 0 1 0;
#P connect 15 2 17 0;
#P connect 17 0 14 0;
#P fasten 13 0 11 0 55 207 168 207 168 191 198 191;
#P pop;
#P hidden newobj 234 157 59 196617 p mctl2seq;
#P user umenu 450 291 54 196645 1 64 307 1;
#X add up;
#X add down;
#X add updown;
#P user scope~ 344 358 444 412 256 3 128 -1. 1. 0 0. 0 0. 102 255 51 135 135 135 0;
#P newex 164 136 30 196617 t b b;
#P message 164 235 34 196617 seq 1;
#P newex 78 235 82 196617 loadmess play 1;
#P newex 184 201 40 196617 t clear;
#P newex 198 350 40 196617 seq~;
#P outlet 198 397 15 0;
#P flonum 518 45 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P toggle 517 21 15 0;
#P newex 517 184 64 196617 phasor~ 0.5;
#P newex 547 157 24 196617 t 0.;
#P newex 547 131 32 196617 sel 1;
#P newex 517 106 40 196617 t b i i;
#P newex 517 158 29 196617 * 0.;
#P newex 544 74 40 196617 / 240.;
#N counter 1 16;
#X flags 0 0;
#P newobj 520 323 68 196617 counter 1 16;
#P newex 520 259 31 196617 abs~;
#P newex 519 238 38 196617 delta~;
#P newex 520 278 57 196617 >=~ 0.001;
#P newex 520 298 36 196617 edge~;
#P newex 519 218 71 196617 rate~ 0.0625;
#P newex 520 482 53 196617 zigzag~;
#P newex 520 431 54 196617 pack 1. 2.;
#P message 520 457 56 196617 $1 , $2 10;
#P newex 580 404 52 196617 + 0.0001;
#P newex 520 404 51 196617 – 0.0001;
#P newex 520 371 27 196617 t f f;
#P newex 520 350 53 196617 * 0.0625;
#P comment 484 47 30 196617 BPM;
#P comment 133 490 100 196617 < - your player here;
#P comment 598 183 167 196617 < --master phasor to drive all seq~s;
#P window linecount 4;
#P comment 640 381 100 196617 There’s probably a better way to do this bit – I’m open to suggestions;
#P connect 40 0 41 0;
#P fasten 43 0 38 0 34 400 95 400;
#P fasten 42 0 38 0 20 408 95 408;
#P fasten 26 0 38 0 203 383 95 383;
#P connect 38 0 39 0;
#P connect 39 0 40 0;
#P connect 40 0 41 1;
#P connect 35 0 34 0;
#P fasten 35 0 30 0 146 115 169 115;
#P connect 30 0 29 0;
#P connect 30 1 27 0;
#P connect 34 0 37 0;
#P fasten 10 0 26 0 525 504 292 504 292 338 203 338;
#P fasten 33 1 26 0 288 270 239 270 239 300 203 300;
#P fasten 36 0 26 0 239 301 203 301;
#P connect 27 0 26 0;
#P connect 29 0 26 0;
#P connect 28 0 26 0;
#P connect 26 0 25 0;
#P fasten 37 0 33 0 196 118 239 118;
#P connect 33 0 36 0;
#P fasten 10 0 31 0 525 505 498 505 498 344 349 344;
#P connect 23 0 19 0;
#P connect 17 0 18 0;
#P connect 19 0 18 0;
#P connect 18 0 22 0;
#P connect 22 0 11 0;
#P connect 11 0 14 0;
#P connect 14 0 15 0;
#P connect 15 0 13 0;
#P connect 13 0 12 0;
#P connect 12 0 16 0;
#P connect 16 0 4 0;
#P connect 4 0 5 0;
#P connect 5 0 6 0;
#P connect 6 0 9 0;
#P connect 9 0 8 0;
#P connect 8 0 10 0;
#P fasten 32 0 16 1 455 318 539 318;
#P connect 19 1 18 1;
#P connect 24 0 17 0;
#P connect 19 2 20 0;
#P connect 20 0 21 0;
#P connect 7 0 9 1;
#P connect 21 0 22 1;
#P connect 5 1 7 0;
#P window clipboard copycount 44;

#117492

You must be logged in to reply to this topic.