[PD] pd-based procedural chord progression database.. / rhythm machine

Frank Barknecht fbar at footils.org
Mon Aug 14 08:52:22 CEST 2006


Hallo,
Damian Stewart hat gesagt: // Damian Stewart wrote:

> hmm. i have a centralised rhythm machine at the moment that runs constantly 
> and bangs about 50 different sends at different periods and different 
> phases (n, 2n, 3n, 4n, 2n-then-3n-then-3n, 3-2-3n, 3-3-2n, etc). it's 
> attached. it's based on a book called 'Hearing in Time' by Justin London, 
> which is wonderful and has informed my ideas about techno no end.

Sounds like an interesting read. (Though rather expensive, but that's
how it goes...).

I played around with a related idea once. Attached patch "list-rhythm"
is like a metro-counter, that can be fed with duration lists.
Durations are specified as multiples of a smallest time step. Then for
each duration in a list, the "list-rhythm" counts from 0 to
duration-1. After that it takes the next duration and starts counting
again. At the end of the duration list it wraps around and starts at
the list's beginning again. 

This lets you specify polyrhythms by just feeding pattern lists, e.g.
"2 2 1 2 2 2 1" to play a 12-step long pattern (this is a popular
african rhythm, I don't have its name atm.).

Also attached is a simple example using blips ripped from Andy's
recent karaoke patch. ;)

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__
-------------- next part --------------
#N canvas 322 131 786 661 10;
#X obj 406 43 inlet;
#X obj 99 54 inlet;
#X obj 390 494 list;
#X obj 604 67 inlet;
#X obj 99 424 outlet;
#X obj 478 146 outlet;
#X obj 664 566 outlet;
#X obj 477 397 list-len;
#X obj 99 207 f 0;
#X obj 130 207 + 1;
#X obj 159 207 mod 9;
#X obj 390 425 f 0;
#X obj 418 425 + 1;
#X obj 447 425 mod 9;
#X obj 129 302 select 0;
#X msg 604 90 0;
#X obj 99 244 t a a;
#X obj 406 70 t b b a a a;
#X obj 664 536 select 0;
#X obj 390 462 t b f f;
#X text 205 209 Count up to current interval;
#X obj 422 587 s \$0-next-interval;
#X obj 189 169 r \$0-next-interval;
#X text 190 308 the next stored interval;
#X text 191 294 when interval was played \, select;
#X text 491 425 wrap around at end of list;
#X obj 422 553 list split 1;
#X obj 390 516 list split;
#X obj 314 513 outlet;
#N canvas 127 288 450 300 accum 0;
#X obj 212 193 f 0;
#X obj 182 192 + 1;
#X obj 212 168 0;
#X obj 182 53 inlet;
#X obj 182 81 t a b;
#X obj 182 140 route float;
#X obj 166 245 outlet;
#X obj 166 220 f;
#X text 116 23 list-accum: add all floats in a list;
#N canvas 0 0 533 407 drip 0;
#X obj 64 206 list split 1;
#X obj 64 123 until;
#X obj 64 181 list append;
#X obj 194 206 bang;
#X text 146 90 First store list \, then start the loop;
#X text 163 118 "until" bangs its output until told to stop by a "bang"
to its right inlet.;
#X text 182 160 Store the remaining list.;
#X text 239 205 third outlet of "split" tells us to stop.;
#X obj 64 243 outlet;
#X obj 64 57 inlet;
#X text 237 44 From list-help.pd;
#X obj 143 243 outlet;
#X obj 64 86 t b a;
#X connect 0 0 8 0;
#X connect 0 1 2 1;
#X connect 0 2 3 0;
#X connect 0 2 11 0;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 3 0 1 1;
#X connect 9 0 12 0;
#X connect 12 0 1 0;
#X connect 12 1 2 1;
#X restore 182 109 pd drip;
#X connect 0 0 1 1;
#X connect 1 0 0 0;
#X connect 1 0 7 1;
#X connect 2 0 0 0;
#X connect 3 0 4 0;
#X connect 4 0 9 0;
#X connect 4 1 2 0;
#X connect 5 0 1 0;
#X connect 7 0 6 0;
#X connect 9 0 5 0;
#X connect 9 1 7 0;
#X restore 478 122 pd accum;
#X connect 0 0 17 0;
#X connect 1 0 8 0;
#X connect 2 0 27 0;
#X connect 3 0 15 0;
#X connect 7 0 13 1;
#X connect 8 0 16 0;
#X connect 9 0 10 0;
#X connect 10 0 8 1;
#X connect 11 0 12 0;
#X connect 11 0 19 0;
#X connect 12 0 13 0;
#X connect 13 0 11 1;
#X connect 14 0 11 0;
#X connect 15 0 8 1;
#X connect 15 0 11 1;
#X connect 16 0 9 0;
#X connect 16 0 4 0;
#X connect 16 1 14 0;
#X connect 17 2 2 1;
#X connect 17 3 7 0;
#X connect 17 4 29 0;
#X connect 18 0 6 0;
#X connect 19 0 2 0;
#X connect 19 1 27 1;
#X connect 19 1 28 0;
#X connect 19 2 18 0;
#X connect 22 0 10 1;
#X connect 26 0 21 0;
#X connect 27 1 26 0;
#X connect 29 0 5 0;
-------------- next part --------------
#N canvas 286 65 768 590 10;
#X msg 81 101 2 2 1 2 2 2 1;
#X msg 201 107 2 1 2 2 1 2 1 1;
#X obj 543 253 *~ 0.2;
#X obj 592 253 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 2900 1;
#X obj 53 421 select 0;
#X msg 407 108 6 6;
#X obj 542 162 metro 200;
#X obj 542 134 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X msg 194 81 3 3 4 1;
#X msg 56 67 1 3 2 4 1 5;
#X msg 329 132 4 4 4;
#X msg 320 106 3 3 3 3;
#X floatatom 69 391 5 0 0 0 - - -;
#X obj 125 384 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 53 362 list-rhythm;
#X msg 357 171 2 1 2 2 1 2 1 1;
#N canvas 0 0 305 244 fxout 0;
#X msg 122 97 /feedback \$1;
#X obj 47 184 dac~;
#X obj 23 121 hip~ 20;
#X obj 60 99 hip~ 20;
#X msg 121 124 /delay \$1;
#N canvas 0 0 450 300 cmreverb 0;
#X obj 25 22 inlet~;
#X obj 85 22 inlet~;
#X obj 397 5 inlet;
#X obj 239 88 delread~ \$0-A 100;
#X obj 269 108 delread~ \$0-B 161.8;
#X obj 299 128 delread~ \$0-C 261.8;
#X obj 329 148 delread~ \$0-D 61.8;
#X obj 185 142 +~;
#X obj 227 142 +~;
#X obj 22 213 outlet~;
#X obj 92 213 outlet~;
#X obj 170 192 +~;
#X obj 274 193 +~;
#X obj 212 192 -~;
#X obj 314 192 -~;
#X obj 169 248 +~;
#X obj 213 249 +~;
#X obj 257 250 -~;
#X obj 296 250 -~;
#X obj 256 332 *~ 0;
#X obj 214 331 *~ 0;
#X obj 169 330 *~ 0;
#X obj 297 333 *~ 0;
#X obj 296 353 delwrite~ \$0-D 1000;
#X obj 257 376 delwrite~ \$0-C 1000;
#X obj 215 399 delwrite~ \$0-B 1000;
#X obj 170 421 delwrite~ \$0-A 1000;
#X obj 396 190 min 100;
#X obj 396 214 max 0;
#X obj 396 238 / 200;
#X obj 239 67 * 1;
#X obj 269 67 * 1.618;
#X obj 329 67 * 2.618;
#X obj 389 67 / 1.618;
#X obj 397 31 route /feedback /delay;
#X connect 0 0 7 0;
#X connect 1 0 8 0;
#X connect 2 0 34 0;
#X connect 3 0 7 1;
#X connect 4 0 8 1;
#X connect 5 0 14 0;
#X connect 5 0 12 0;
#X connect 6 0 14 1;
#X connect 6 0 12 1;
#X connect 7 0 9 0;
#X connect 7 0 11 0;
#X connect 7 0 13 0;
#X connect 8 0 10 0;
#X connect 8 0 11 1;
#X connect 8 0 13 1;
#X connect 11 0 15 0;
#X connect 11 0 17 0;
#X connect 12 0 17 1;
#X connect 12 0 15 1;
#X connect 13 0 16 0;
#X connect 13 0 18 0;
#X connect 14 0 16 1;
#X connect 14 0 18 1;
#X connect 15 0 21 0;
#X connect 16 0 20 0;
#X connect 17 0 19 0;
#X connect 18 0 22 0;
#X connect 19 0 24 0;
#X connect 20 0 25 0;
#X connect 21 0 26 0;
#X connect 22 0 23 0;
#X connect 27 0 28 0;
#X connect 28 0 29 0;
#X connect 29 0 22 1;
#X connect 29 0 19 1;
#X connect 29 0 20 1;
#X connect 29 0 21 1;
#X connect 30 0 3 0;
#X connect 31 0 4 0;
#X connect 32 0 5 0;
#X connect 33 0 6 0;
#X connect 34 0 27 0;
#X connect 34 1 33 0;
#X connect 34 1 32 0;
#X connect 34 1 31 0;
#X connect 34 1 30 0;
#X restore 23 153 pd cmreverb;
#X obj 42 58 inlet~;
#X msg 122 63 50;
#X msg 153 63 70;
#X obj 122 29 loadbang;
#X obj 196 64 clip 5 100;
#X obj 196 28 inlet verbness;
#X text 114 154 Simple verb by Claude H;
#X connect 0 0 5 2;
#X connect 2 0 5 0;
#X connect 3 0 5 1;
#X connect 4 0 5 2;
#X connect 5 0 1 0;
#X connect 5 1 1 1;
#X connect 6 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 0 0;
#X connect 8 0 4 0;
#X connect 9 0 7 0;
#X connect 9 0 8 0;
#X connect 10 0 4 0;
#X connect 10 0 0 0;
#X connect 11 0 10 0;
#X restore 543 277 pd fxout;
#N canvas 0 0 528 439 blip 0;
#X obj 153 236 osc~;
#X obj 190 236 vline~;
#X obj 189 262 *~;
#X obj 172 285 *~;
#X obj 153 26 inlet;
#X obj 172 331 outlet~;
#X msg 190 202 1 2 0 \, 0 \$1 3;
#X obj 190 108 log;
#X obj 190 85 pow 4;
#X obj 190 151 * 1e+06;
#X obj 190 130 pow -3;
#X obj 190 174 * 2;
#X obj 259 25 inlet;
#X obj 265 87 pow -1;
#X obj 265 112 * 1000;
#X obj 153 56 t f f f;
#X obj 265 136 log;
#X obj 265 159 min 3;
#X obj 173 307 *~;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 3 1;
#X connect 3 0 18 0;
#X connect 4 0 15 0;
#X connect 6 0 1 0;
#X connect 7 0 10 0;
#X connect 8 0 7 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 11 0 6 0;
#X connect 12 0 11 1;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 15 0 0 0;
#X connect 15 1 8 0;
#X connect 15 2 13 0;
#X connect 16 0 17 0;
#X connect 17 0 18 1;
#X connect 18 0 5 0;
#X restore 53 465 pd blip;
#X msg 126 152 3 3 3;
#X obj 53 341 r \$0-met;
#X obj 542 187 s \$0-met;
#X obj 543 217 catch~ \$0-out;
#X obj 53 491 throw~ \$0-out;
#X obj 183 421 select 0;
#X floatatom 199 391 5 0 0 0 - - -;
#X obj 255 384 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 183 362 list-rhythm;
#N canvas 0 0 528 439 blip 0;
#X obj 153 236 osc~;
#X obj 190 236 vline~;
#X obj 189 262 *~;
#X obj 172 285 *~;
#X obj 153 26 inlet;
#X obj 172 331 outlet~;
#X msg 190 202 1 2 0 \, 0 \$1 3;
#X obj 190 108 log;
#X obj 190 85 pow 4;
#X obj 190 151 * 1e+06;
#X obj 190 130 pow -3;
#X obj 190 174 * 2;
#X obj 259 25 inlet;
#X obj 265 87 pow -1;
#X obj 265 112 * 1000;
#X obj 153 56 t f f f;
#X obj 265 136 log;
#X obj 265 159 min 3;
#X obj 173 307 *~;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 3 1;
#X connect 3 0 18 0;
#X connect 4 0 15 0;
#X connect 6 0 1 0;
#X connect 7 0 10 0;
#X connect 8 0 7 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 11 0 6 0;
#X connect 12 0 11 1;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 15 0 0 0;
#X connect 15 1 8 0;
#X connect 15 2 13 0;
#X connect 16 0 17 0;
#X connect 17 0 18 1;
#X connect 18 0 5 0;
#X restore 183 465 pd blip;
#X obj 183 341 r \$0-met;
#X obj 183 491 throw~ \$0-out;
#X obj 303 422 select 0;
#X floatatom 319 392 5 0 0 0 - - -;
#X obj 375 385 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 303 363 list-rhythm;
#N canvas 0 0 528 439 blip 0;
#X obj 153 236 osc~;
#X obj 190 236 vline~;
#X obj 189 262 *~;
#X obj 172 285 *~;
#X obj 153 26 inlet;
#X obj 172 331 outlet~;
#X msg 190 202 1 2 0 \, 0 \$1 3;
#X obj 190 108 log;
#X obj 190 85 pow 4;
#X obj 190 151 * 1e+06;
#X obj 190 130 pow -3;
#X obj 190 174 * 2;
#X obj 259 25 inlet;
#X obj 265 87 pow -1;
#X obj 265 112 * 1000;
#X obj 153 56 t f f f;
#X obj 265 136 log;
#X obj 265 159 min 3;
#X obj 173 307 *~;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 3 1;
#X connect 3 0 18 0;
#X connect 4 0 15 0;
#X connect 6 0 1 0;
#X connect 7 0 10 0;
#X connect 8 0 7 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 11 0 6 0;
#X connect 12 0 11 1;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 15 0 0 0;
#X connect 15 1 8 0;
#X connect 15 2 13 0;
#X connect 16 0 17 0;
#X connect 17 0 18 1;
#X connect 18 0 5 0;
#X restore 303 466 pd blip;
#X obj 303 342 r \$0-met;
#X obj 303 492 throw~ \$0-out;
#X obj 440 423 select 0;
#X floatatom 456 393 5 0 0 0 - - -;
#X obj 512 386 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 440 364 list-rhythm;
#N canvas 0 0 528 439 blip 0;
#X obj 153 236 osc~;
#X obj 190 236 vline~;
#X obj 189 262 *~;
#X obj 172 285 *~;
#X obj 153 26 inlet;
#X obj 172 331 outlet~;
#X msg 190 202 1 2 0 \, 0 \$1 3;
#X obj 190 108 log;
#X obj 190 85 pow 4;
#X obj 190 151 * 1e+06;
#X obj 190 130 pow -3;
#X obj 190 174 * 2;
#X obj 259 25 inlet;
#X obj 265 87 pow -1;
#X obj 265 112 * 1000;
#X obj 153 56 t f f f;
#X obj 265 136 log;
#X obj 265 159 min 3;
#X obj 173 307 *~;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 3 1;
#X connect 3 0 18 0;
#X connect 4 0 15 0;
#X connect 6 0 1 0;
#X connect 7 0 10 0;
#X connect 8 0 7 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 11 0 6 0;
#X connect 12 0 11 1;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 15 0 0 0;
#X connect 15 1 8 0;
#X connect 15 2 13 0;
#X connect 16 0 17 0;
#X connect 17 0 18 1;
#X connect 18 0 5 0;
#X restore 440 467 pd blip;
#X obj 440 343 r \$0-met;
#X obj 440 493 throw~ \$0-out;
#X obj 183 444 f 1100;
#X obj 303 445 f 880;
#X obj 440 446 f 440;
#X obj 158 314 route 0 1 2 3;
#X obj 158 291 list prepend 0;
#X obj 251 267 hradio 15 1 0 4 empty empty select_blip 0 -6 0 8 -262144
-1 -1 0;
#X obj 400 256 b;
#X obj 512 343 r \$0-s;
#X obj 375 341 r \$0-s;
#X obj 255 341 r \$0-s;
#X obj 125 340 r \$0-s;
#X obj 400 279 s \$0-s;
#X msg 400 234 Synchronize;
#X obj 53 444 f 1320;
#X connect 0 0 48 0;
#X connect 1 0 48 0;
#X connect 2 0 16 0;
#X connect 3 0 2 1;
#X connect 4 0 57 0;
#X connect 5 0 48 0;
#X connect 6 0 20 0;
#X connect 7 0 6 0;
#X connect 8 0 48 0;
#X connect 9 0 48 0;
#X connect 10 0 48 0;
#X connect 11 0 48 0;
#X connect 14 0 4 0;
#X connect 14 0 12 0;
#X connect 14 3 13 0;
#X connect 15 0 48 0;
#X connect 17 0 22 0;
#X connect 18 0 48 0;
#X connect 19 0 14 0;
#X connect 21 0 2 0;
#X connect 23 0 44 0;
#X connect 26 0 23 0;
#X connect 26 0 24 0;
#X connect 26 3 25 0;
#X connect 27 0 29 0;
#X connect 28 0 26 0;
#X connect 30 0 45 0;
#X connect 33 0 30 0;
#X connect 33 0 31 0;
#X connect 33 3 32 0;
#X connect 34 0 36 0;
#X connect 35 0 33 0;
#X connect 37 0 46 0;
#X connect 40 0 37 0;
#X connect 40 0 38 0;
#X connect 40 3 39 0;
#X connect 41 0 43 0;
#X connect 42 0 40 0;
#X connect 44 0 27 0;
#X connect 45 0 34 0;
#X connect 46 0 41 0;
#X connect 47 0 14 1;
#X connect 47 1 26 1;
#X connect 47 2 33 1;
#X connect 47 3 40 1;
#X connect 48 0 47 0;
#X connect 49 0 48 1;
#X connect 50 0 55 0;
#X connect 51 0 40 2;
#X connect 52 0 33 2;
#X connect 53 0 26 2;
#X connect 54 0 14 2;
#X connect 56 0 50 0;
#X connect 57 0 17 0;


More information about the Pd-list mailing list