#N canvas 596 23 518 683 12;
#X declare -stdpath ./;
#X floatatom 296 312 4 0 100 0 - - - 0;
#X obj 74 471 +~;
#X text 45 51 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:, f 64;
#X obj 109 557 *~;
#X obj 109 523 -~;
#N canvas 352 175 330 235 delay-writer 0;
#X obj 96 85 inlet~;
#X obj 96 158 outlet~;
#X obj 116 122 delwrite~ G05-d2 1000;
#X connect 0 0 1 0;
#X connect 0 0 2 0;
#X restore 109 389 pd delay-writer;
#N canvas 392 176 280 330 delay-reader 0;
#X obj 97 77 inlet~;
#X obj 97 227 outlet~;
#X obj 115 123 inlet~;
#X obj 97 197 +~;
#X obj 115 158 delread4~ G05-d2;
#X connect 0 0 3 0;
#X connect 2 0 4 0;
#X connect 3 0 1 0;
#X connect 4 0 3 1;
#X restore 109 422 pd delay-reader;
#X obj 74 557 +~;
#X obj 296 339 / 44.1;
#X obj 74 601 output~;
#X obj 147 522 tgl 19 0 empty empty empty 0 -6 0 8 #dfdfdf #000000 #000000 0 1;
#X obj 296 365 pack 0 30;
#N canvas 521 164 217 214 pulse 0;
#X obj 52 148 outlet~;
#X obj 51 44 phasor~ 50;
#X obj 51 70 *~ 100;
#X obj 51 95 clip~ 0.75 1.25;
#X obj 52 121 cos~;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 0 0;
#X restore 73 304 pd pulse;
#X obj 114 354 delwrite~ G05-d1 1000;
#X obj 296 391 line~;
#X text 45 187 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 \, but the patch at right can go all the way down to one sample., f 64;
#X text 336 312 <= delay in samples;
#X text 171 520 <= off to hear left-hand side \; on to hear right hand side.;
#X obj 295 584 declare -stdpath ./;
#X text 54 19 ORDER OF EXECUTION OF DELWRITE~ AND DELREAD~/DELREAD4~;
#X obj 296 428 delread4~ G05-d1;
#X text 45 118 To get them to go off in the correct order \, put the [delread~] and [delread4~] 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 subpatches., f 64;
#X text 263 629 updated for Pd version 0.52;
#X text 45 238 You can use the same strategy to avoid an unwanted delay of one block in pairs of [send~]/[receive~] \, [tabsend~]/[tabreceive~] or [throw~]/[catch~] objects., f 64;
#X connect 0 0 8 0;
#X connect 1 0 4 1;
#X connect 1 0 7 0;
#X connect 3 0 7 1;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 4 0;
#X connect 7 0 9 0;
#X connect 8 0 11 0;
#X connect 10 0 3 1;
#X connect 11 0 14 0;
#X connect 12 0 1 0;
#X connect 12 0 5 0;
#X connect 12 0 13 0;
#X connect 14 0 6 1;
#X connect 14 0 20 0;
#X connect 20 0 1 1;
