#N canvas 499 23 685 718 12;
#X declare -stdpath ./;
#X floatatom 35 48 5 0 100 0 - - - 0;
#X obj 35 93 * 441;
#X obj 30 400 +~ 1;
#X obj 60 491 *~;
#X obj 36 231 line~;
#X obj 36 181 * 441;
#X floatatom 36 156 5 0 100 0 - - - 0;
#X obj 36 206 pack 0 100;
#X obj 30 429 +~;
#X obj 77 427 samphold~;
#X obj 30 328 samphold~;
#X obj 30 375 *~;
#X obj 193 389 r~ phase;
#X obj 380 232 s~ phase;
#X obj 118 328 r~ phase;
#X obj 48 352 r~ phase;
#X obj 112 402 r~ phase;
#X obj 87 102 s chunk-size;
#X floatatom 380 52 5 0 0 0 - - - 0;
#X obj 87 77 * 0.01;
#X text 199 78 chunk size;
#X text 199 100 in seconds;
#X obj 391 107 r chunk-size;
#X obj 391 132 t b f;
#X obj 380 156 /;
#X obj 380 26 loadbang;
#X obj 193 413 -~ 0.5;
#X obj 193 437 *~ 0.5;
#X obj 193 460 cos~;
#X obj 60 600 output~;
#X text 19 679 updated for Pd version 0.37;
#X obj 380 77 expr pow(2 \, $f1/120);
#X text 549 77 speed change;
#X obj 380 181 phasor~;
#X text 33 12 TWO OVERLAPPING SAMPLE READ ELEMENTS;
#N canvas 457 259 614 280 table 0;
#N canvas 0 0 450 300 (subpatch) 0;
#X array table22 44103 float 2;
#X coords 0 1.02 44103 -1.02 200 130 1;
#X restore 363 64 graph;
#X text 384 198 --- 44103 samples ---;
#X obj 48 148 loadbang;
#X obj 52 37 adc~ 1;
#X obj 52 62 hip~ 5;
#X obj 48 202 soundfiler;
#X text 141 155 v-- re-read original table;
#X obj 52 118 tabwrite~ table22;
#X msg 48 175 read ../sound/voice.wav table22;
#X text 92 90 <= record;
#X obj 67 91 bng 17 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#X connect 2 0 8 0;
#X connect 3 0 4 0;
#X connect 4 0 7 0;
#X connect 8 0 5 0;
#X connect 10 0 7 0;
#X restore 575 404 pd table;
#X obj 35 130 s chunk-size-samples;
#X text 196 129 ... and in samples;
#X obj 36 254 s~ read-pt;
#X obj 77 379 r~ read-pt;
#X obj 456 218 +~ 0.5;
#X obj 456 244 wrap~;
#X obj 456 269 s~ phase2;
#X obj 30 303 r chunk-size-samples;
#X obj 267 399 +~ 1;
#X obj 267 499 *~;
#X obj 267 428 +~;
#X obj 322 427 samphold~;
#X obj 267 327 samphold~;
#X obj 267 374 *~;
#X obj 432 415 -~ 0.5;
#X obj 432 439 *~ 0.5;
#X obj 432 462 cos~;
#X obj 322 377 r~ read-pt;
#X obj 267 302 r chunk-size-samples;
#X obj 356 328 r~ phase2;
#X obj 285 351 r~ phase2;
#X obj 432 391 r~ phase2;
#X obj 344 402 r~ phase2;
#X obj 60 537 +~;
#X text 418 155 loop frequency;
#X text 517 205 second phase signal;
#X text 517 225 out of phase from;
#X text 516 246 first one;
#X text 80 285 copy 1;
#X text 322 282 copy 2;
#X text 233 538 Here is the previous patch modified to use two copies of the sample reader \, 180 degrees out of phase. The second sawtooth signal is derived from the first one by adding a constant (0.5) and wrapping the result to fit again between zero and one. The result is the "phase2" signal.;
#X text 233 614 The computation of "chunk-size-samples" (as a message) and "read-pt" (an audio signal) is the same for both copies and is separated out at top left. At top right is the same loop frequency calculation as before., f 60;
#X text 233 676 Finally \, the two copies' outputs are added and the result sent to the audio output., f 60;
#X obj 30 454 tabread4~ table22;
#X obj 267 453 tabread4~ table22;
#X obj 523 16 declare -stdpath ./;
#X text 77 48 <-- chunk size (100ths of a second);
#X text 425 52 <-- transposition \, halftones/10;
#X text 78 156 <-- read point in 100ths of a second;
#X obj 60 569 hip~ 5;
#X connect 0 0 1 0;
#X connect 0 0 19 0;
#X connect 1 0 36 0;
#X connect 2 0 8 0;
#X connect 3 0 59 0;
#X connect 4 0 38 0;
#X connect 5 0 7 0;
#X connect 6 0 5 0;
#X connect 7 0 4 0;
#X connect 8 0 69 0;
#X connect 9 0 8 1;
#X connect 10 0 11 0;
#X connect 11 0 2 0;
#X connect 12 0 26 0;
#X connect 14 0 10 1;
#X connect 15 0 11 1;
#X connect 16 0 9 1;
#X connect 18 0 31 0;
#X connect 19 0 17 0;
#X connect 22 0 23 0;
#X connect 23 0 24 0;
#X connect 23 1 24 1;
#X connect 24 0 33 0;
#X connect 25 0 18 0;
#X connect 26 0 27 0;
#X connect 27 0 28 0;
#X connect 28 0 3 1;
#X connect 31 0 24 0;
#X connect 33 0 13 0;
#X connect 33 0 40 0;
#X connect 39 0 9 0;
#X connect 40 0 41 0;
#X connect 41 0 42 0;
#X connect 43 0 10 0;
#X connect 44 0 46 0;
#X connect 45 0 59 1;
#X connect 46 0 70 0;
#X connect 47 0 46 1;
#X connect 48 0 49 0;
#X connect 49 0 44 0;
#X connect 50 0 51 0;
#X connect 51 0 52 0;
#X connect 52 0 45 1;
#X connect 53 0 47 0;
#X connect 54 0 48 0;
#X connect 55 0 48 1;
#X connect 56 0 49 1;
#X connect 57 0 50 0;
#X connect 58 0 47 1;
#X connect 59 0 75 0;
#X connect 69 0 3 0;
#X connect 70 0 45 0;
#X connect 75 0 29 0;
