I'm trying to build a patch to sample and loop live input. Basically I
want to be able to punch into the loop and out and record continuously.
For this you might really want to investigate Jesse Chappel's
SooperLooper application. It's an emulation of the Oberheim digital
Echoplex, and does great work for looping, overdubbing, loop
quantization and all kinds of other tricks.
Can anyone suggest a workable approach? Or even better, point to an
example patch?
You are welcome to test drive my Looper abstraction, which is attached.
It's an upcoming release, and allows you to capture a loop and play it
back or granulate it. It doesn't do overdubs, which is what I gather you
are after. But maybe some of the mechanics would be interesting for you.
I usually use it with [hid] and a footswitch, but it takes simply 0/127
to trigger recording. Have fun!
d.
--
derek holzer :::
http://www.umatic.nl
---Oblique Strategy # 180:
"What to increase? What to reduce? What to maintain?"
#N canvas 470 57 299 149 10;
#X text 216 254 INLETS:;
#X obj 3 381 outlet~;
#X obj 74 381 outlet~;
#X obj 75 160 inlet footswitch;
#N canvas 435 77 447 555 loop_control 0;
#X obj 15 15 inlet~;
#X obj 65 15 inlet footswitch;
#X obj 136 266 outlet samples;
#X obj 187 290 outlet seconds;
#X obj 65 51 select 127;
#X msg 109 106 0;
#X msg 152 105 1;
#X msg 174 105 0;
#X obj 152 135 metro 1;
#X obj 152 156 f;
#X obj 191 156 + 1;
#X obj 203 185 / 1000;
#X obj 65 82 t b b b;
#X msg 87 209 stop;
#X obj 152 185 * 44.1;
#X obj 187 209 f;
#X obj 136 209 f;
#X obj 212 209 s $1-seconds_display;
#X obj 16 290 tabwrite~ $1-looper;
#X obj 193 15 table $1-looper 2.646e+06;
#X text 189 41 60 seconds max @ 44100;
#X obj 136 239 + 1;
#X obj 130 82 t b b b;
#X connect 0 0 18 0;
#X connect 1 0 4 0;
#X connect 4 0 12 0;
#X connect 4 1 22 0;
#X connect 5 0 8 0;
#X connect 6 0 8 0;
#X connect 7 0 9 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 9 0 11 0;
#X connect 9 0 14 0;
#X connect 10 0 9 1;
#X connect 11 0 15 1;
#X connect 11 0 17 0;
#X connect 12 0 15 0;
#X connect 12 0 16 0;
#X connect 12 1 13 0;
#X connect 12 2 5 0;
#X connect 13 0 18 0;
#X connect 14 0 16 1;
#X connect 15 0 3 0;
#X connect 16 0 21 0;
#X connect 21 0 2 0;
#X connect 22 0 18 0;
#X connect 22 1 6 0;
#X connect 22 2 7 0;
#X restore 3 182 pd loop_control;
#X obj 3 160 inlet~;
#N canvas 77 357 411 273 transpose 0;
#X obj 52 10 inlet transposition_control;
#X obj 52 203 outlet transposition_halftones;
#X obj 52 178 exp;
#X obj 52 156 * 0.05776;
#X obj 52 134 int;
#X obj 246 10 loadbang;
#X msg 246 32 0;
#X obj 80 178 s $1-transpose_display;
#X obj 52 90 - 60;
#X obj 80 134 r $1-transpose;
#X connect 0 0 8 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 4 0 7 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 8 0 4 0;
#X connect 9 0 3 0;
#X restore 215 182 pd transpose;
#X text 215 278 1 audio signal;
#X text 215 295 2 footswitch ctrl [0 , 127];
#X text 215 311 3 pitch transposition ctrl [0-127];
#N canvas 177 62 671 535 loop_player 0;
#X obj 199 490 outlet~;
#X obj 329 8 inlet transpose_halftones;
#X obj 178 8 inlet loop_seconds;
#X obj 48 8 inlet loop_samples;
#X obj 200 121 /;
#X msg 200 99 1;
#X obj 200 193 phasor~;
#X obj 199 216
*~;
#X obj 243 44 t b f;
#X obj 273 144 line~;
#X obj 273 76 pack 0 50;
#X obj 200 144 sig~;
#X obj 200 171 *~;
#X text 121 77 seconds;
#X text 136 218 samples;
#X obj 348 119 switch~;
#X obj 199 240 tabread4~ $1-looper;
#X obj 200 378
*~;
#X obj 216 312 cos~;
#X obj 215 288 *~ 0.5;
#X obj 215 263 -~ 0.5;
#X obj 216 354 clip~ 0 1;
#X text 293 310 loop envelope generator;
#X text 292 332 steepness of envelope [1-1000];
#X text 294 353 normalize gain;
#X obj 178 76 t b b f;
#X msg 178 99 0;
#X obj 348 76 r $1-player_toggle;
#X obj 348 98 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 199 469
*~;
#X obj 216 404 r $1-zample_gain_min;
#X obj 216 425 pack 0 50;
#X obj 216 446 line~;
#X obj 216 332 *~;
#X obj 293 284 r $1-zample_envelope_min;
#X connect 1 0 8 0;
#X connect 2 0 25 0;
#X connect 3 0 7 1;
#X connect 4 0 11 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 6 0 20 0;
#X connect 7 0 16 0;
#X connect 8 0 5 0;
#X connect 8 1 10 0;
#X connect 9 0 12 1;
#X connect 10 0 9 0;
#X connect 11 0 12 0;
#X connect 12 0 6 0;
#X connect 16 0 17 0;
#X connect 17 0 29 0;
#X connect 18 0 33 0;
#X connect 19 0 18 0;
#X connect 20 0 19 0;
#X connect 21 0 17 1;
#X connect 25 0 26 0;
#X connect 25 1 5 0;
#X connect 25 2 4 1;
#X connect 26 0 6 1;
#X connect 27 0 28 0;
#X connect 28 0 15 0;
#X connect 29 0 0 0;
#X connect 30 0 31 0;
#X connect 31 0 32 0;
#X connect 32 0 29 1;
#X connect 33 0 21 0;
#X connect 34 0 33 1;
#X restore 3 273 pd loop_player;
#N canvas 32 32 606 414 loop_grainer 0;
#X obj 172 340 outlet~;
#X obj 279 340 outlet~;
#X obj 124 30 inlet length_samples;
#X obj 270 30 r $1-grainer_toggle;
#X obj 270 75 switch~;
#X obj 270 54 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 31 101 loopreader 1 $1;
#X obj 281 161 loopreader 7 $1;
#X obj 141 101 loopreader 2 $1;
#X obj 191 121 loopreader 4 $1;
#X obj 81 121 loopreader 3 $1;
#X obj 121 141 loopreader 5 $1;
#X obj 231 141 loopreader 6 $1;
#X obj 171 161 loopreader 8 $1;
#X obj 31 181 loopreader 9 $1;
#X obj 141 181 loopreader 10 $1;
#X obj 81 201 loopreader 11 $1;
#X obj 201 201 loopreader 12 $1;
#X obj 121 221 loopreader 13 $1;
#X obj 241 221 loopreader 14 $1;
#X obj 291 241 loopreader 16 $1;
#X obj 170 241 loopreader 15 $1;
#X connect 2 0 6 0;
#X connect 2 0 7 0;
#X connect 2 0 8 0;
#X connect 2 0 9 0;
#X connect 2 0 10 0;
#X connect 2 0 11 0;
#X connect 2 0 12 0;
#X connect 2 0 13 0;
#X connect 2 0 14 0;
#X connect 2 0 15 0;
#X connect 2 0 16 0;
#X connect 2 0 17 0;
#X connect 2 0 18 0;
#X connect 2 0 19 0;
#X connect 2 0 20 0;
#X connect 2 0 21 0;
#X connect 3 0 5 0;
#X connect 5 0 4 0;
#X connect 6 0 0 0;
#X connect 6 1 1 0;
#X connect 7 0 0 0;
#X connect 7 1 1 0;
#X connect 8 0 0 0;
#X connect 8 1 1 0;
#X connect 9 0 0 0;
#X connect 9 1 1 0;
#X connect 10 0 0 0;
#X connect 11 0 0 0;
#X connect 12 0 0 0;
#X connect 12 1 1 0;
#X connect 13 0 0 0;
#X connect 13 1 1 0;
#X connect 14 0 0 0;
#X connect 14 1 1 0;
#X connect 15 0 0 0;
#X connect 15 1 1 0;
#X connect 16 0 0 0;
#X connect 16 1 1 0;
#X connect 17 0 0 0;
#X connect 17 1 1 0;
#X connect 18 0 0 0;
#X connect 18 1 1 0;
#X connect 19 0 0 0;
#X connect 19 1 1 0;
#X connect 20 0 0 0;
#X connect 20 1 1 0;
#X connect 21 0 0 0;
#X connect 21 1 1 0;
#X restore 25 300 pd loop_grainer;
#X text 215 354 ABSTRACTIONS:;
#X text 217 375 1) loopreader.pd;
#X text 217 388 1) random_range.pd;
#X text 218 415 USAGE;
#X obj 215 204 s $1-pitch;
#X obj 215 160 inlet transpose_ctrl;
#X text 402 482 derek@umatic.nl;
#X obj 1 1 cnv 15 296 147 empty empty empty 200 190 0 10 -1 -24198
0;
#N canvas 222 366 664 424 limiters 0;
#X obj 72 32 inlet~;
#X obj 71 338
*~;
#X obj 72 371 outlet~;
#X obj 86 276 limiter~ 50 1;
#X obj 142 32 inlet~;
#X obj 141 338 *~;
#X obj 142 371 outlet~;
#X obj 86 62 loadbang;
#X msg 86 90 limit 95;
#X obj 211 32 inlet~;
#X obj 265 31 inlet footswitch;
#X obj 265 58 select 127;
#X obj 265 83 t b;
#X obj 330 99 t b;
#X text 363 100 record: suppress loop output;
#X text 364 79 play: supress line output;
#X obj 87 208 line~;
#X obj 71 231
*~;
#X obj 157 208 line~;
#X obj 141 231 *~;
#X obj 227 208 line~;
#X obj 211 231
*~;
#X msg 235 131 1;
#X msg 265 131 0;
#X msg 300 131 1;
#X msg 330 131 0;
#X obj 87 188 pack 0 50;
#X obj 157 188 pack 0 50;
#X obj 227 188 pack 0 50;
#X obj 71 309 z~ 64;
#X obj 141 309 z~ 64;
#X connect 0 0 17 0;
#X connect 1 0 2 0;
#X connect 3 0 1 1;
#X connect 3 0 5 1;
#X connect 4 0 19 0;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 8 0 3 0;
#X connect 9 0 21 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 11 1 13 0;
#X connect 12 0 22 0;
#X connect 12 0 23 0;
#X connect 13 0 24 0;
#X connect 13 0 25 0;
#X connect 16 0 17 1;
#X connect 17 0 3 0;
#X connect 17 0 29 0;
#X connect 18 0 19 1;
#X connect 19 0 3 1;
#X connect 19 0 30 0;
#X connect 20 0 21 1;
#X connect 21 0 3 0;
#X connect 21 0 3 1;
#X connect 21 0 29 0;
#X connect 21 0 30 0;
#X connect 22 0 26 0;
#X connect 22 0 27 0;
#X connect 23 0 28 0;
#X connect 24 0 28 0;
#X connect 25 0 26 0;
#X connect 25 0 27 0;
#X connect 26 0 16 0;
#X connect 27 0 18 0;
#X connect 28 0 20 0;
#X connect 29 0 1 0;
#X connect 30 0 5 0;
#X restore 3 356 pd limiters;
#N canvas 253 419 416 287 keytoggles 0;
#X obj 68 184 s $1-player_toggle;
#X obj 208 185 s $1-grainer_toggle;
#X symbolatom 68 28 10 0 0 0 - - -;
#X obj 68 50 select $2;
#X symbolatom 208 28 10 0 0 0 - - -;
#X obj 208 50 select $3;
#X obj 143 8 keyname $3;
#X obj 3 8 keyname $2;
#X obj 67 78 int;
#X obj 114 123 + 1;
#X obj 68 146 mod 2;
#X obj 67 99 select 1;
#X obj 208 78 int;
#X obj 255 123 + 1;
#X obj 209 146 mod 2;
#X obj 208 99 select 1;
#X obj 68 123 int 1;
#X obj 209 123 int 1;
#X connect 2 0 3 0;
#X connect 3 0 8 0;
#X connect 4 0 5 0;
#X connect 5 0 12 0;
#X connect 6 0 12 1;
#X connect 6 1 4 0;
#X connect 7 0 8 1;
#X connect 7 1 2 0;
#X connect 8 0 11 0;
#X connect 9 0 16 1;
#X connect 10 0 0 0;
#X connect 11 0 16 0;
#X connect 12 0 15 0;
#X connect 13 0 17 1;
#X connect 14 0 1 0;
#X connect 15 0 17 0;
#X connect 16 0 9 0;
#X connect 16 0 10 0;
#X connect 17 0 13 0;
#X connect 17 0 14 0;
#X restore 362 225 pd keytoggles;
#X obj 3 3 cnv 15 292 96 empty empty empty 200 90 0 8 -24198 -24198
0;
#X obj 5 7 grid grid1 94 1 100 94 1 100 0 1 1 10 10 80 142;
#X obj 103 6 grid grid1 94 0 99 94 1 16 0 1 1 10 10 271 119;
#X obj 201 5 grid grid1 94 1 100 94 1 100 0 1 1 10 10 276 51;
#X obj 103 6 cnv 15 92 92 empty empty asynch 33 88 0 8 -1 -24198 0
;
#X obj 179 41 cnv 5 15 6 empty empty v 10 3 0 8 -1 -24198 0;
#X obj 179 55 cnv 5 15 6 empty empty x 10 3 0 8 -1 -24198 0;
#X obj 179 48 cnv 5 15 6 empty empty o 10 3 0 8 -1 -24198 0;
#N canvas 473 75 596 294 controls 0;
#X obj 24 12 inlet;
#X obj 24 236 s $1-zample_sustain_min;
#X obj 64 12 inlet;
#X obj 64 59 s $1-zample_sustain_sprd;
#X obj 204 12 inlet;
#X obj 244 12 inlet;
#X obj 203 236 s $1-zample_asynch;
#X obj 244 59 s $1-zample_voices;
#X obj 344 12 inlet;
#X obj 384 12 inlet;
#X obj 384 59 s $1-zample_pan_sprd;
#X obj 344 36 s $1-zample_gain_sprd;
#X obj 65 84 r $1-zample_length_range;
#X obj 65 105 select 0;
#X msg 65 125 1;
#X obj 125 105 select 1;
#X msg 125 125 5;
#X obj 185 105 select 2;
#X msg 185 125 10;
#X msg 245 125 30;
#X obj 245 105 select 3;
#X obj 305 105 select 4;
#X msg 305 125 60;
#X obj 24 207 *;
#X obj 65 160 t b f;
#X obj 203 186 * -1;
#X obj 203 207 + 100;
#X connect 0 0 23 0;
#X connect 2 0 3 0;
#X connect 4 0 25 0;
#X connect 5 0 7 0;
#X connect 8 0 11 0;
#X connect 9 0 10 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 13 1 15 0;
#X connect 14 0 24 0;
#X connect 15 0 16 0;
#X connect 15 1 17 0;
#X connect 16 0 24 0;
#X connect 17 0 18 0;
#X connect 17 1 20 0;
#X connect 18 0 24 0;
#X connect 19 0 24 0;
#X connect 20 0 19 0;
#X connect 20 1 21 0;
#X connect 21 0 22 0;
#X connect 22 0 24 0;
#X connect 23 0 1 0;
#X connect 24 0 23 0;
#X connect 24 1 23 1;
#X connect 25 0 26 0;
#X connect 26 0 6 0;
#X restore 215 225 pd controls;
#X obj 6 7 cnv 15 92 92 empty empty length 33 88 0 8 -1 -24198 0;
#X obj 80 13 cnv 5 15 6 empty empty l 10 3 0 8 -1 -24198 0;
#X obj 81 27 cnv 5 15 6 empty empty n 10 3 0 8 -1 -24198 0;
#X obj 80 33 cnv 5 15 6 empty empty g 10 3 0 8 -1 -24198 0;
#X obj 80 20 cnv 5 15 6 empty empty e 10 3 0 8 -1 -24198 0;
#X obj 80 43 cnv 5 15 6 empty empty t 10 3 0 8 -1 -24198 0;
#X obj 80 63 cnv 5 15 6 empty empty r 10 3 0 8 -1 -24198 0;
#X obj 81 77 cnv 5 15 6 empty empty n 10 3 0 8 -1 -24198 0;
#X obj 80 85 cnv 5 15 6 empty empty d 10 3 0 8 -1 -24198 0;
#X obj 80 70 cnv 5 15 6 empty empty a 10 3 0 8 -1 -24198 0;
#X obj 81 51 cnv 5 15 6 empty empty h 10 3 0 8 -1 -24198 0;
#X obj 201 5 cnv 15 92 92 empty empty gain_rand 24 88 0 8 -1 -24198
0;
#X obj 276 25 cnv 5 15 6 empty empty p 10 3 0 8 -1 -24198 0;
#X obj 276 40 cnv 5 15 6 empty empty n 10 3 0 8 -1 -24198 0;
#X obj 276 33 cnv 5 15 6 empty empty a 10 3 0 8 -1 -24198 0;
#X obj 276 50 cnv 5 15 6 empty empty r 10 3 0 8 -1 -24198 0;
#X obj 277 64 cnv 5 15 6 empty empty n 10 3 0 8 -1 -24198 0;
#X obj 276 72 cnv 5 15 6 empty empty d 10 3 0 8 -1 -24198 0;
#X obj 276 57 cnv 5 15 6 empty empty a 10 3 0 8 -1 -24198 0;
#X obj 3 99 cnv 1 292 1 empty empty empty 200 90 0 8 -24198 -24198
0;
#X text 215 328 4 master gain ctrl [0-127];
#X obj 362 246 inlet master_gain_ctrl;
#X obj 362 268 / 127;
#X obj 362 204 s $1-zample_gain_min;
#X obj 102 103 cnv 15 94 20 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 200 103 cnv 15 95 20 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 202 104 nbx 4 8 -1e+37 1e+37 0 0 empty $1-seconds_display seconds
50 5 0 8 -1 -24198 -1 0 256;
#X obj 202 114 nbx 4 8 -1e+37 1e+37 0 0 $1-transpose $1-transpose_display
halftones 40 5 0 8 -1 -24198 -1 0 256;
#X obj 106 104 hsl 87 18 1 1000 1 1 $1-zample_envelope_min empty envelope
6 8 0 8 -1 -258699 -24198 4800 1;
#X obj 3 103 cnv 15 95 20 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 4 104 hradio 18 1 1 5 $1-zample_length_range empty 01|05|10|30|60
5 9 0 8 -1 -258699 -24198 2;
#X obj 102 126 cnv 15 94 20 empty empty empty 20 12 0 14 -24198 -66577
0;
#X obj 3 126 cnv 18 95 20 empty empty empty 20 17 0 14 -24198 -66577
0;
#X obj 200 126 cnv 15 95 20 empty empty empty 2 10 0 10 -24198 -1 0
;
#X obj 221 127 cnv 15 73 18 empty empty empty 2 9 0 10 -1 -24198 0
;
#X obj 201 127 tgl 18 0 $1-null $1-grainer_toggle $3-granulator
21 9 0 8 -1 -258699 -24198 0 1;
#X obj 24 127 cnv 15 73 18 empty empty empty 2 9 0 10 -1 -24198 0;
#X obj 4 127 tgl 18 0 $1-null $1-player_toggle $2-player 21 9 0
8 -1 -258699 -24198 0 1;
#X obj 106 127 hsl 87 18 0 1 0 1 $1-xfaders $1-xfade $1-looper 6
9 0 8 -1 -258699 -24198 4063 1;
#X obj 362 160 loadbang;
#X msg 362 182 1;
#N canvas 0 22 363 307 x-fader 0;
#X obj 19 16 inlet~;
#X obj 129 16 inlet~;
#X obj 19 244 outlet~;
#X obj 199 244 outlet~;
#X obj 199 16 inlet~;
#X obj 37 134 pack 0 50;
#X obj 37 155 line~;
#X obj 20 181
*~;
#X obj 147 134 pack 0 50;
#X obj 147 155 line~;
#X obj 130 181 *~;
#X obj 217 134 pack 0 50;
#X obj 217 155 line~;
#X obj 200 181
*~;
#X obj 249 16 inlet;
#X obj 249 42 * -1;
#X obj 249 68 + 1;
#X connect 0 0 7 0;
#X connect 1 0 10 0;
#X connect 4 0 13 0;
#X connect 5 0 6 0;
#X connect 6 0 7 1;
#X connect 7 0 2 0;
#X connect 7 0 3 0;
#X connect 8 0 9 0;
#X connect 9 0 10 1;
#X connect 10 0 2 0;
#X connect 11 0 12 0;
#X connect 12 0 13 1;
#X connect 13 0 3 0;
#X connect 14 0 15 0;
#X connect 14 0 8 0;
#X connect 14 0 11 0;
#X connect 15 0 16 0;
#X connect 16 0 5 0;
#X restore 3 330 pd x-fader;
#X obj 415 268 s $1-xfade;
#X obj 415 288 r $1-xfaders;
#X text 216 434 [looper /name keyname1 keyname2];
#X text 61 76 comment;
#X text 219 454 keyname1=toggle for looper on/off;
#X text 219 469 keyname2=toggle for grainer on/off;
#X connect 3 0 4 1;
#X connect 3 0 20 3;
#X connect 4 0 10 0;
#X connect 4 0 11 0;
#X connect 4 1 10 1;
#X connect 5 0 4 0;
#X connect 5 0 20 2;
#X connect 6 0 10 2;
#X connect 6 0 16 0;
#X connect 10 0 72 0;
#X connect 11 0 72 1;
#X connect 11 1 72 2;
#X connect 17 0 6 0;
#X connect 20 0 1 0;
#X connect 20 1 2 0;
#X connect 23 0 30 0;
#X connect 23 1 30 1;
#X connect 24 0 30 2;
#X connect 24 1 30 3;
#X connect 25 0 30 4;
#X connect 25 1 30 5;
#X connect 52 0 53 0;
#X connect 53 0 72 3;
#X connect 53 0 73 0;
#X connect 70 0 71 0;
#X connect 71 0 54 0;
#X connect 72 0 20 0;
#X connect 72 1 20 1;
#X connect 74 0 72 3;
#X coords 0 0 1 1 300 150 1;
#N canvas 483 61 213 243 10;
#X obj 11 177 outlet~;
#X obj 70 178 outlet~;
#N canvas 442 23 961 632 panner 0;
#X obj 8 68 inlet~;
#X obj 7 417 outlet~;
#X obj 71 418 outlet~;
#X obj 30 330 - 1;
#X obj 30 359 * -1;
#X obj 71 389
*~ 1;
#X obj 7 389 *~ 1;
#X obj 30 238 / 100;
#X obj 30 216 random_range 0 100;
#X obj 151 184 + 50;
#X obj 47 188 - 50;
#X obj 90 189 * -1;
#X obj 47 163 * 0.5;
#X obj 30 297 line;
#X obj 47 124 r $2-zample_pan_sprd;
#X obj 30 273 pack 0 0;
#X obj 57 68 inlet;
#X connect 0 0 6 0;
#X connect 0 0 5 0;
#X connect 3 0 4 0;
#X connect 4 0 6 1;
#X connect 5 0 2 0;
#X connect 6 0 1 0;
#X connect 7 0 15 0;
#X connect 8 0 7 0;
#X connect 9 0 8 2;
#X connect 10 0 11 0;
#X connect 11 0 8 1;
#X connect 12 0 10 0;
#X connect 12 0 9 0;
#X connect 13 0 5 1;
#X connect 13 0 3 0;
#X connect 14 0 12 0;
#X connect 15 0 13 0;
#X connect 16 0 8 0;
#X restore 12 148 pd panner;
#N canvas 306 351 492 289 envelope_generator 0;
#X obj 166 2 inlet~;
#X obj 167 240 outlet~;
#X obj 167 210
*~;
#X obj 215 2 inlet~;
#X obj 215 83 cos~;
#X obj 214 59 *~ 0.5;
#X obj 214 34 -~ 0.5;
#X obj 216 130 clip~ 0 1;
#X obj 216 154
*~;
#X obj 215 107 *~;
#X obj 276 1 inlet;
#X obj 319 1 r $2-zample_envelope_min;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 4 0 9 0;
#X connect 5 0 4 0;
#X connect 6 0 5 0;
#X connect 7 0 8 0;
#X connect 8 0 2 1;
#X connect 9 0 7 0;
#X connect 10 0 8 1;
#X connect 11 0 9 1;
#X restore 12 124 pd envelope_generator;
#N canvas 0 0 450 300 asynchfilter 0;
#X obj 66 17 inlet~;
#X obj 66 136 outlet~;
#X obj 117 17 inlet;
#X obj 84 83 line~;
#X obj 67 111
*~;
#X obj 85 61 pack 0 5;
#X connect 0 0 4 0;
#X connect 2 0 5 0;
#X connect 3 0 4 1;
#X connect 4 0 1 0;
#X connect 5 0 3 0;
#X restore 12 97 pd asynchfilter;
#N canvas 253 130 576 557 ramp_generator 0;
#X obj 35 12 inlet;
#X obj 35 199 pack 0 0;
#X obj 35 166 +;
#X obj 35 295 outlet~;
#X obj 135 12 inlet;
#X obj 79 86 f;
#X obj 35 61 t f f b;
#X obj 51 127 * 44.1;
#X text 36 348 1 start sample #;
#X obj 181 12 inlet;
#X text 35 324 INLETS:;
#X obj 181 86 * 44.1;
#X obj 123 295 outlet~;
#X msg 169 218 1 $1;
#X msg 122 218 0 0;
#X obj 122 247 line~;
#X obj 138 172 t f b;
#X text 36 387 3 pitch transposition;
#X obj 92 12 inlet;
#X text 36 374 2 total grain length [ms];
#X text 36 361 2 total grain length [samples];
#X obj 35 227 line~;
#X obj 35 262 clip~ 0 0;
#X connect 0 0 6 0;
#X connect 1 0 21 0;
#X connect 2 0 1 0;
#X connect 4 0 5 0;
#X connect 4 0 16 0;
#X connect 5 0 1 1;
#X connect 5 0 7 0;
#X connect 6 0 2 0;
#X connect 6 1 21 0;
#X connect 6 2 5 0;
#X connect 7 0 2 1;
#X connect 9 0 11 0;
#X connect 11 0 7 1;
#X connect 13 0 15 0;
#X connect 14 0 15 0;
#X connect 15 0 12 0;
#X connect 16 0 13 0;
#X connect 16 1 14 0;
#X connect 18 0 22 2;
#X connect 21 0 22 0;
#X connect 22 0 3 0;
#X restore 11 34 pd ramp_generator;
#N canvas 186 14 808 583 randomization 0;
#X obj 35 364 outlet;
#X obj 176 364 outlet;
#X obj 611 364 outlet;
#X text 176 410 1 start sample #;
#X text 174 394 OUTLETS:;
#X obj 380 364 outlet;
#X obj 51 16 inlet;
#X text 101 30 1 sample length [samples];
#X obj 35 217 / 1000;
#X obj 35 239
*;
#N canvas 0 0 450 300 zample_gain 0;
#X obj 98 168 outlet;
#X obj 183 168 outlet;
#X obj 98 18 r $2-zample_gain_min;
#X obj 112 46 r $2-zample_gain_sprd;
#X obj 184 94 +;
#X obj 188 68 / 100;
#X obj 222 95 *;
#X obj 98 94 +;
#X obj 131 93 * -1;
#X obj 184 118 pack 0 20;
#X obj 98 119 pack 0 20;
#X obj 98 143 line;
#X obj 183 140 line;
#X connect 2 0 7 0;
#X connect 2 0 4 1;
#X connect 2 0 6 0;
#X connect 3 0 5 0;
#X connect 4 0 9 0;
#X connect 5 0 6 1;
#X connect 6 0 4 0;
#X connect 6 0 8 0;
#X connect 7 0 10 0;
#X connect 8 0 7 1;
#X connect 9 0 12 0;
#X connect 10 0 11 0;
#X connect 11 0 0 0;
#X connect 12 0 1 0;
#X restore 499 173 pd zample_gain;
#N canvas 0 0 450 300 sustain 0;
#X obj 34 137 outlet;
#X obj 120 137 outlet;
#X obj 34 -10 r $2-zample_sustain_min;
#X obj 51 13 r $2-zample_sustain_sprd;
#X obj 120 60 +;
#X obj 124 34 / 100;
#X obj 158 61
*;
#X obj 34 60 +;
#X obj 67 59 * -1;
#X obj 120 85 pack 0 20;
#X obj 34 85 pack 0 20;
#X obj 34 110 line;
#X obj 120 109 line;
#X connect 2 0 7 0;
#X connect 2 0 4 1;
#X connect 2 0 6 0;
#X connect 3 0 5 0;
#X connect 4 0 9 0;
#X connect 5 0 6 1;
#X connect 6 0 4 0;
#X connect 6 0 8 0;
#X connect 7 0 10 0;
#X connect 8 0 7 1;
#X connect 9 0 12 0;
#X connect 10 0 11 0;
#X connect 11 0 0 0;
#X connect 12 0 1 0;
#X restore 215 168 pd sustain;
#N canvas 32 278 450 300 zample_start 0;
#X obj 57 157 outlet;
#X obj 143 158 outlet;
#X obj 57 10 r $2-zample_start_min;
#X obj 76 30 r $2-zample_start_sprd;
#X obj 143 81 +;
#X obj 147 55 / 100;
#X obj 181 82
*;
#X obj 57 81 +;
#X obj 90 80 * -1;
#X obj 143 105 pack 0 20;
#X obj 57 106 pack 0 20;
#X obj 143 130 line;
#X obj 57 130 line;
#X connect 2 0 7 0;
#X connect 2 0 4 1;
#X connect 2 0 6 0;
#X connect 3 0 5 0;
#X connect 4 0 9 0;
#X connect 5 0 6 1;
#X connect 6 0 4 0;
#X connect 6 0 8 0;
#X connect 7 0 10 0;
#X connect 8 0 7 1;
#X connect 9 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 1 0;
#X connect 12 0 0 0;
#X restore 85 97 pd zample_start;
#N canvas 429 12 450 300 triggerz 0;
#X obj 67 203 outlet;
#X obj 121 204 outlet;
#X obj 67 109 metro 800;
#X obj 121 132 random 100;
#X obj 67 58 >= $1;
#X obj 137 40 r $2-zample_asynch;
#X obj 121 153 >=;
#X obj 67 19 r $2-zample_voices;
#X obj 67 79 change -1;
#X obj 280 41 inlet;
#X connect 2 0 3 0;
#X connect 2 0 0 0;
#X connect 3 0 6 0;
#X connect 4 0 8 0;
#X connect 5 0 6 1;
#X connect 6 0 1 0;
#X connect 7 0 4 0;
#X connect 8 0 2 0;
#X connect 9 0 2 1;
#X restore 308 91 pd triggerz;
#X obj 176 194 random_range;
#X obj 460 194 random_range;
#X obj 611 198 random_range;
#X text 176 428 2 total grain length [ms];
#N canvas 0 0 450 300 zample_pitch 0;
#X obj 98 168 outlet;
#X obj 183 168 outlet;
#X obj 184 94 +;
#X obj 188 68 / 100;
#X obj 222 95
*;
#X obj 98 94 +;
#X obj 131 93 * -1;
#X obj 184 118 pack 0 20;
#X obj 98 119 pack 0 20;
#X obj 98 143 line;
#X obj 183 140 line;
#X obj 98 18 r $2-pitch;
#X obj 112 46 r $2-pitch_sprd;
#X connect 2 0 7 0;
#X connect 3 0 4 1;
#X connect 4 0 2 0;
#X connect 4 0 6 0;
#X connect 5 0 8 0;
#X connect 6 0 5 1;
#X connect 7 0 10 0;
#X connect 8 0 9 0;
#X connect 9 0 0 0;
#X connect 10 0 1 0;
#X connect 11 0 5 0;
#X connect 11 0 2 1;
#X connect 11 0 4 0;
#X connect 12 0 3 0;
#X restore 650 173 pd zample_pitch;
#X text 100 13 INLET;
#X text 177 477 5 grain pitch;
#X obj 308 114 t b b b b;
#X text 176 444 3 bang at grain start!;
#X text 176 460 4 gain scaler;
#X obj 460 364 outlet;
#X obj 35 190 random_range 0 1000;
#X connect 6 0 9 1;
#X connect 8 0 9 0;
#X connect 9 0 0 0;
#X connect 10 0 15 1;
#X connect 10 1 15 2;
#X connect 11 0 14 1;
#X connect 11 1 14 2;
#X connect 13 0 21 0;
#X connect 13 1 5 0;
#X connect 14 0 13 0;
#X connect 14 0 1 0;
#X connect 15 0 24 0;
#X connect 16 0 2 0;
#X connect 18 0 16 1;
#X connect 18 1 16 2;
#X connect 21 0 25 0;
#X connect 21 1 14 0;
#X connect 21 2 15 0;
#X connect 21 3 16 0;
#X connect 25 0 8 0;
#X restore 11 -9 pd randomization;
#X obj 11 -29 inlet length_samples;
#X obj 12 69 tabread4~ $2-looper;
#X connect 2 0 0 0;
#X connect 2 1 1 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 8 0;
#X connect 5 1 3 1;
#X connect 6 0 5 0;
#X connect 6 1 5 2;
#X connect 6 2 2 1;
#X connect 6 2 4 1;
#X connect 6 3 3 2;
#X connect 6 4 5 3;
#X connect 7 0 6 0;
#X connect 7 0 5 1;
#X connect 8 0 4 0;
#N canvas 76 223 560 390 12;
#X obj 54 52 inlet;
#X obj 151 53 inlet;
#X obj 226 51 inlet;
#X obj 54 314 outlet;
#X text 54 30 bang;
#X text 150 33 min;
#X text 223 34 max;
#X text 58 336 value;
#X obj 54 169 random 1e+06;
#X obj 54 195 * 1e-06;
#X obj 190 176 -;
#X obj 190 202 abs;
#X obj 55 243 *;
#X obj 54 280 +;
#X obj 153 118 f $1;
#X obj 223 108 f $2;
#X obj 54 78 t b b b;
#X text 298 87 1.arg: min. range;
#X text 296 108 2.arg: max. range;
#X connect 0 0 16 0;
#X connect 1 0 14 0;
#X connect 2 0 15 0;
#X connect 8 0 9 0;
#X connect 9 0 12 0;
#X connect 10 0 11 0;
#X connect 11 0 12 1;
#X connect 12 0 13 0;
#X connect 13 0 3 0;
#X connect 14 0 10 0;
#X connect 14 0 13 1;
#X connect 15 0 10 1;
#X connect 16 0 8 0;
#X connect 16 1 14 0;
#X connect 16 2 15 0;