#N canvas 100 17 724 631 12;
#X floatatom 448 290 0 0 0;
#X obj 70 432 +~;
#X obj 91 401 vd~ delay1;
#X floatatom 108 559 0 0 0;
#N canvas 159 26 495 266 output 0;
#X obj 338 160 t b;
#X obj 338 110 f;
#X obj 338 60 inlet;
#X text 344 29 mute;
#X obj 338 185 f;
#X msg 425 178 0;
#X msg 338 85 bang;
#X obj 338 135 moses 1;
#X obj 397 110 moses 1;
#X obj 83 148 dbtorms;
#X obj 397 85 r master-lvl;
#X obj 83 42 r master-lvl;
#X obj 338 210 s master-lvl;
#X obj 18 152 inlet~;
#X obj 199 41 inlet;
#X text 199 18 level;
#X obj 197 104 s master-lvl;
#X msg 96 65 set \$1;
#X obj 96 89 outlet;
#X msg 214 64 \; pd dsp 1;
#X obj 83 194 line~;
#X obj 22 212 *~;
#X obj 22 241 dac~;
#X obj 83 171 pack 0 50;
#X text 16 129 audio;
#X text 93 110 show level;
#X obj 18 179 hip~ 5;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 12 0;
#X connect 5 0 12 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 5 0;
#X connect 8 1 4 1;
#X connect 9 0 23 0;
#X connect 10 0 1 1;
#X connect 10 0 8 0;
#X connect 11 0 9 0;
#X connect 11 0 17 0;
#X connect 13 0 26 0;
#X connect 14 0 16 0;
#X connect 14 0 19 0;
#X connect 17 0 18 0;
#X connect 20 0 21 1;
#X connect 21 0 22 0;
#X connect 21 0 22 1;
#X connect 23 0 20 0;
#X connect 26 0 21 0;
#X restore 70 585 pd output;
#X msg 145 559 MUTE;
#X text 184 558 <-- output amplitude;
#X text 86 9 ORDER OF EXECUTION OF DELWRITE~ AND DELREAD~/VD~;
#X text 43 35 If you're writing to and reading from a delay line \,
you have to get the write sorted before the read or else you'll never
get less than a block's delay. This patch compares a "wrong" flanger
with a "right" one:;
#X obj 69 299 noise~;
#X obj 91 375 line~;
#X obj 448 344 pack 0 100;
#X text 518 292 <-- delay in samples;
#X obj 92 505 *~;
#X obj 92 481 -~;
#X floatatom 175 505 1 0 0;
#X obj 293 297 noise~;
#X obj 423 398 line~;
#N canvas 0 0 600 400 delay-writer 0;
#X obj 96 107 inlet~;
#X obj 96 180 outlet~;
#X obj 116 144 delwrite~ delay2 1000;
#X connect 0 0 1 0;
#X connect 0 0 2 0;
#X restore 293 325 pd delay-writer;
#N canvas 0 0 280 330 delay-reader 0;
#X obj 96 107 inlet~;
#X obj 89 267 outlet~;
#X obj 112 163 inlet~;
#X obj 112 198 vd~ delay2;
#X obj 89 237 +~;
#X connect 0 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 4 1;
#X connect 4 0 1 0;
#X restore 293 427 pd delay-reader;
#X obj 70 533 +~;
#X text 194 505 <-- 0 to hear left-hand side \, 1 to hear right hand
side.;
#X text 46 105 All it took was to put the delread~ and vd~ objects
in subpatches. The audio connections between the subpatches force the
"reader" to be sorted after the "writer". DSP sorting in Pd follows
the hierarchy of windows.;
#X obj 447 318 / 44.1;
#X obj 82 329 delwrite~ delay1 1000;
#X text 450 596 updated for Pd version 0.34;
#X text 43 173 To hear the difference scroll the delay time between
0 and 100 samples. The patch at left doesn't let you get below 64 samples.
;
#X text 43 228 You can use the same strategy to avoid picking up 64-sample
delays in send~/receive~ and throw~/catch~ pairs.;
#X connect 0 0 23 0;
#X connect 1 0 14 1;
#X connect 1 0 20 0;
#X connect 2 0 1 1;
#X connect 3 0 4 1;
#X connect 4 0 3 0;
#X connect 5 0 4 2;
#X connect 9 0 1 0;
#X connect 9 0 24 0;
#X connect 10 0 2 0;
#X connect 11 0 10 0;
#X connect 11 0 17 0;
#X connect 13 0 20 1;
#X connect 14 0 13 0;
#X connect 15 0 13 1;
#X connect 16 0 18 0;
#X connect 17 0 19 1;
#X connect 18 0 19 0;
#X connect 19 0 14 0;
#X connect 20 0 4 0;
#X connect 23 0 11 0;
