#N canvas 224 47 949 559 12;
#X declare -stdpath ./;
#X text 750 224 creation argument: name of delay line, f 18;
#X obj 44 65 delread4~;
#X obj 754 274 vd~;
#X obj 612 231 delread4~ \$0-delay;
#X obj 39 314 delwrite~ \$0-delay 1000;
#X obj 612 199 line~;
#X obj 39 243 osc~ 440;
#X obj 612 268 output~;
#X obj 612 171 pack f 1000;
#X obj 761 151 declare -stdpath ./;
#X msg 63 279 clear;
#X text 214 307 1st argument: name of delay line, f 42;
#X obj 43 15 delwrite~;
#X text 115 15 - writes a signal in a delay line;
#X obj 50 40 delread~;
#X text 115 40 - read a signal from a delay line;
#X text 250 397 1st argument: name of delay line, f 33;
#X text 250 417 2nd argument: (initial) delay time in ms;
#X obj 85 443 output~;
#X text 597 77 The delay time is always at least one sample and at most the length of the delay line (specified by a corresponding delwrite~)., f 46;
#X obj 627 435 ../3.audio.examples/G05.execution.order;
#X text 123 376 input (delay time in ms);
#X msg 49 376 500;
#X text 732 527 updated for Pd version 0.52;
#X text 213 329 2nd argument: length of delay line in msec (the maximum delay time in read objects), f 42;
#X text 119 64 - read from a delay line with 4-point interpolation (for variable delay times), f 40;
#X text 656 198 signal input (variable delay time in ms);
#X obj 491 70 vd~;
#X obj 96 528 fexpr~;
#X text 22 528 see also:;
#X obj 9 514 cnv 1 935 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X obj 7 102 cnv 1 570 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X text 488 21 <= click;
#N canvas 733 91 574 497 reference 0;
#X obj 8 52 cnv 5 550 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X obj 8 111 cnv 2 550 2 empty empty OUTLETS: 8 12 0 13 #202020 #000000 0;
#X obj 8 145 cnv 2 550 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X obj 7 211 cnv 5 550 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X text 161 120 NONE, f 45;
#X text 117 153 symbol -;
#X obj 43 22 delwrite~;
#X text 106 66 signal -;
#X text 173 66 signal input into the delay time., f 44;
#X text 113 84 clear -;
#X text 173 84 clear the delay time., f 44;
#X text 185 153 delay line name., f 47;
#X text 124 171 float -;
#X text 185 171 length of delay line in msec (the maximum delay time in read objects)., f 47;
#X obj 8 307 cnv 5 550 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X obj 8 375 cnv 2 550 2 empty empty OUTLET: 8 12 0 13 #202020 #000000 0;
#X obj 8 414 cnv 2 550 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X obj 7 471 cnv 5 550 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X text 107 424 symbol -;
#X text 175 424 delay line name., f 29;
#X text 114 443 float -;
#X obj 43 275 delread~;
#X text 113 322 float -;
#X obj 113 275 delread4~;
#X text 117 22 - write in a delay line.;
#X text 192 275 - read from a delay line.;
#X text 107 384 signal -;
#X text 173 322 delay time in ms (for [delread~])., f 44;
#X text 106 342 signal -;
#X text 173 342 delay time in ms (for [delread4~])., f 44;
#X text 173 384 delayed signal., f 44;
#X text 175 443 initial delay time in ms for [delread~] (default 0).;
#X restore 394 21 pd reference;
#X floatatom 39 209 5 0 0 0 - - - 0;
#X obj 85 407 delread~ \$0-delay 500;
#X msg 85 376 1000;
#X msg 612 144 500;
#X msg 648 144 1000;
#X obj 576 3 cnv 1 1 100 empty empty empty 8 12 0 13 #000000 #000000 0;
#X text 406 70 --> a.k.a.:;
#X text 597 12 [delread4~] implements a 4-point interpolating delay tap. The delay in milliseconds of the tap is specified by an incoming signal for variable delay times., f 46;
#X text 568 349 In case [delwrite~] runs later in the DSP loop than the [delread~] or [delread4~] objects \, the delay is constrained below by one vector length (usually 64 samples.) Open the file below as an example on how to control this to obtain very short delays., f 51;
#X text 750 295 delread4~ ('vd' for 'variable delay'), f 19;
#X text 784 275 -- old name of;
#X text 588 468 See also other examples in the "G" section for more fun with delays \, such as feedback delays., f 46;
#X obj 155 529 send~;
#X text 12 112 The [delread~] and [delread4~] objects read from a delay line allocated in a [delwrite~] object with the same name. You can use more than one [delread~] and/or [delread4~] objects for the same [delwrite~] object. If the specified delay time in [delread~]/[delread4~] is longer than the size of the delay line or less than zero it is clipped to the length of the delay line., f 81;
#X text 246 450 Note that in this help file we're using delay names with "\$0" (the patch ID number used to force locality in Pd)., f 40;
#X text 138 188 Usually \, [delread~]/[delread4~] must have the same block size \, overlap and upsampling factors as the corresponding [delwrite~] object \, otherwise you might get unexpected results \, unless you really know what you're doing. This example patch uses the default block size of 64 samples but you can change it with:, f 63;
#X obj 510 270 block~;
#X text 113 280 <-- set all samples of delay line to zero.;
#X connect 3 0 7 0;
#X connect 5 0 3 0;
#X connect 6 0 4 0;
#X connect 8 0 5 0;
#X connect 10 0 4 0;
#X connect 22 0 35 0;
#X connect 34 0 6 0;
#X connect 35 0 18 0;
#X connect 36 0 35 0;
#X connect 37 0 8 0;
#X connect 38 0 8 0;
