#N canvas 440 23 640 640 12;
#X obj 196 111 inlet;
#X obj 137 403 line~;
#X obj 114 307 sqrt;
#X obj 137 567 *~;
#X obj 137 431 *~;
#X obj 137 458 *~;
#X obj 137 607 outlet~;
#X obj 375 401 line~;
#X obj 375 429 *~;
#X obj 375 457 *~;
#X obj 252 290 mtof;
#X obj 252 205 +;
#X obj 252 314 sqrt;
#X obj 252 338 sqrt;
#X obj 375 374 pack;
#X obj 57 344 r reset;
#X msg 57 368 0 20;
#X obj 226 424 noise~;
#X obj 317 266 +;
#X obj 317 289 mtof;
#X obj 317 313 sqrt;
#X obj 317 337 sqrt;
#X obj 420 401 line~;
#X obj 420 429 *~;
#X obj 420 457 *~;
#X obj 420 374 pack;
#X obj 332 401 line~;
#X obj 332 429 *~;
#X obj 332 457 *~;
#X obj 332 374 pack;
#X obj 196 291 mtof;
#X obj 196 315 sqrt;
#X obj 196 339 sqrt;
#X obj 196 269 -;
#X obj 155 507 vcf~ 10;
#X obj 226 507 vcf~ 10;
#X obj 297 507 vcf~ 10;
#X text 459 436 calculate time-varying center frequencies, f 22;
#X text 359 506 ... for three VCFs acting on a noise source., f 25
;
#X text 55 421 Amplitude;
#X text 56 437 envelope;
#X obj 114 280 / 2;
#X obj 67 247 data-array amp;
#X obj 281 176 data-array pitch;
#X obj 137 348 pack;
#N canvas 457 62 639 622 sequence 0;
#X obj 167 140 inlet;
#X obj 268 376 *;
#X obj 61 204 r reset-stop;
#X obj 153 487 outlet;
#X obj 443 487 outlet;
#X obj 153 430 pointer;
#X obj 167 205 t b p;
#X obj 121 406 t b b;
#X obj 286 290 r time-of-last-evt;
#X obj 268 319 -;
#X obj 236 223 t f f;
#X obj 64 445 s next-evt;
#X obj 257 258 s time-of-last-evt;
#X obj 286 350 r delay-multiplier;
#X obj 121 380 delay;
#X obj 236 191 get template-event x y, f 30;
#X text 28 16 Here we carry out the actual sequencing. We get a pointer
to the scalar and get its x/y coordinates. The y-value is sent to the
right outlet and the x-value is taken as a time stamp \, so we get
the time difference from it and the last event \, multiply it by a
"delay-multiplier" value that depends on the "tempo" parameter and
send this to a [delay] object. When [delay] sends a bang \, the pointer
to the scalar is sent to the left outlet and we ask for the next event
("next-evt") \, which calls the next pointer in the [pd synthesis]
window., f 80;
#X text 207 488 pointer (delayed);
#X text 497 489 y-value *;
#X text 273 533 * The y-value is used for pitch and is summed to the
y-values of the pitch array. Because the units on the data window is
"0.25" \, the pitch jumps in eighth-tones., f 45;
#X connect 0 0 6 0;
#X connect 1 0 14 1;
#X connect 2 0 14 0;
#X connect 5 0 3 0;
#X connect 6 0 14 0;
#X connect 6 1 5 1;
#X connect 6 1 15 0;
#X connect 7 0 11 0;
#X connect 7 1 5 0;
#X connect 8 0 9 1;
#X connect 9 0 1 0;
#X connect 10 0 12 0;
#X connect 10 1 9 0;
#X connect 13 0 1 1;
#X connect 14 0 7 0;
#X connect 15 0 10 0;
#X connect 15 1 4 0;
#X restore 196 146 pd sequence;
#X text 39 17 This is an abstraction used in the sequencer example.
Here we take care of the audio synthesis \, according to timed controls
from [pd sequence] and [data-array] subpatches., f 73;
#X text 39 66 Pitch resolution is in eighth-tones (because 4 pixels
per half tone looks reasonable on the screen.), f 73;
#X connect 0 0 45 0;
#X connect 1 0 4 0;
#X connect 1 0 4 1;
#X connect 2 0 44 0;
#X connect 3 0 6 0;
#X connect 4 0 5 0;
#X connect 4 0 5 1;
#X connect 5 0 3 0;
#X connect 7 0 8 0;
#X connect 7 0 8 1;
#X connect 8 0 9 0;
#X connect 8 0 9 1;
#X connect 9 0 35 1;
#X connect 10 0 12 0;
#X connect 11 0 33 0;
#X connect 11 0 10 0;
#X connect 11 0 18 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 7 0;
#X connect 15 0 16 0;
#X connect 16 0 1 0;
#X connect 17 0 34 0;
#X connect 17 0 35 0;
#X connect 17 0 36 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 21 0;
#X connect 21 0 25 0;
#X connect 22 0 23 0;
#X connect 22 0 23 1;
#X connect 23 0 24 0;
#X connect 23 0 24 1;
#X connect 24 0 36 1;
#X connect 25 0 22 0;
#X connect 26 0 27 0;
#X connect 26 0 27 1;
#X connect 27 0 28 0;
#X connect 27 0 28 1;
#X connect 28 0 34 1;
#X connect 29 0 26 0;
#X connect 30 0 31 0;
#X connect 31 0 32 0;
#X connect 32 0 29 0;
#X connect 33 0 30 0;
#X connect 34 0 3 1;
#X connect 35 0 3 1;
#X connect 36 0 3 1;
#X connect 41 0 2 0;
#X connect 42 1 41 0;
#X connect 42 2 44 1;
#X connect 43 0 11 0;
#X connect 43 1 33 1;
#X connect 43 1 18 1;
#X connect 43 2 14 1;
#X connect 43 2 29 1;
#X connect 43 2 25 1;
#X connect 44 0 1 0;
#X connect 45 0 42 0;
#X connect 45 0 43 0;
#X connect 45 1 11 1;
