#N canvas 524 46 560 502 10;
#X declare -stdpath ./;
#X obj 5 475 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X obj 7 273 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 7 395 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 6 426 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X obj 95 403 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 163 281 signal;
#X text 163 403 signal;
#X text 151 433 1) float;
#X obj 95 281 cnv 17 3 70 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 95 356 cnv 17 3 33 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 151 452 2) float;
#X text 169 356 float;
#X text 169 298 clear;
#X text 221 298 - clears delay buffer, f 54;
#X obj 66 144 cyclone/train~ 1000 0;
#X obj 169 178 cyclone/delay~ 22050 22050;
#X text 84 88 [delay~] delays a signal by a number of samples (thus the delay time depends on the sample rate).;
#X text 163 374 signal;
#X obj 325 136 hsl 128 15 0 22050 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X floatatom 322 156 0 0 0 0 - - - 0;
#X text 109 315 maxsize <float>;
#X text 127 333 ramp <float>;
#X text 213 229 maximum delay is 0.5 second;
#X text 221 315 - sets a new maximum delay size in samples, f 54;
#X text 221 281 - the signal to be delayed, f 54;
#X text 221 356 - delay in samples (no interpolation), f 54;
#X text 221 374 - delay in samples (with interpolation), f 54;
#X text 221 403 - the delayed signal, f 54;
#X text 209 215 * at a 44.1 kHz sample rate the;
#X text 332 136 Delay in samples *;
#N canvas 936 291 430 165 inconsistencies 0;
#X text 34 50 [delay~] in max can set its delay time with max's time format syntax \, that depends on a global transport or [transport] objects \, which is not implemented in cyclone as of yet.;
#X restore 438 241 pd inconsistencies;
#N canvas 580 187 783 375 examples_1 0;
#X text 12 295 With a float input \, values are truncated to integer values. Thus \, [delay~] doesn't interpolate.;
#X obj 439 268 -~;
#X obj 571 210 sig~;
#X obj 571 190 nbx 9 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 574 169 hsl 128 15 0 512 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 454 234 cyclone/delay~ 512 0;
#X obj 439 130 cyclone/count~ 0 441000 1;
#X obj 215 142 cyclone/mstosamps~;
#X obj 218 98 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X floatatom 215 118 8 0 0 0 - - - 0;
#X floatatom 320 168 8 0 0 0 - - - 0;
#X text 188 165 up to 1 second delay;
#X text 275 117 ms;
#X text 375 167 samples;
#X obj 30 62 noise~;
#X obj 64 95 *~;
#X obj 79 62 cyclone/train~ 1000 0.1;
#X obj 167 194 cyclone/delay~ 22050 22050;
#X text 14 26 You can use [mstosamps~] to convert time in ms to samples:;
#X text 402 18 You can use a signal to specify the delay time with interpolation \, but that also adds an extra sample delay., f 53;
#X text 402 70 Thus \, when the delay time is controlled by a signal \, the input is always delayed at least 1 sample., f 53;
#X obj 64 222 output~;
#X obj 439 303 cyclone/snapshot~ 1;
#X text 499 330 <-- the delayed number of samples;
#X floatatom 439 330 9 0 0 0 - - - 0;
#X obj 235 246 declare -stdpath ./;
#X connect 1 0 22 0;
#X connect 2 0 5 1;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 1 1;
#X connect 6 0 1 0;
#X connect 6 0 5 0;
#X connect 7 1 10 0;
#X connect 8 0 9 0;
#X connect 9 0 7 0;
#X connect 10 0 17 1;
#X connect 14 0 15 0;
#X connect 15 0 17 0;
#X connect 15 0 21 0;
#X connect 16 0 15 1;
#X connect 17 0 21 1;
#X connect 22 0 24 0;
#X restore 468 173 pd examples_1;
#N canvas 449 187 799 399 examples_2 0;
#X msg 581 185 maxsize \$1;
#X msg 707 151 4410;
#X msg 692 125 22050;
#X obj 460 125 cyclone/train~ 1000 0;
#X obj 563 218 cyclone/delay~ 512 512;
#X obj 692 192 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X text 428 73 You can change the maximum delay size with the "maxsize" message.;
#X text 21 16 The ramp message sets a ramp time to a new target value \, so when you send it a float message it takes that long to reach the new target. In this case \, it does interpolate during the ramp time.;
#X obj 130 203 -~;
#X floatatom 300 152 5 0 0 0 - - - 0;
#X msg 335 119 0;
#X obj 177 177 cyclone/delay~ 1000 0;
#X msg 300 119 1000;
#X obj 190 118 loadbang;
#X msg 190 147 ramp 2000;
#X obj 130 83 cyclone/count~ 0 441000 1;
#X text 38 308 If you set a new target while a ramp is still happening \, it'll wait until the target is reached before going to the next target. A new ramp time is also only set after a ramp is finished.;
#X obj 460 250 output~;
#X obj 130 246 cyclone/snapshot~ 1;
#X floatatom 130 273 9 0 0 0 - - - 0;
#X connect 0 0 4 0;
#X connect 1 0 0 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 2 0 5 0;
#X connect 3 0 4 0;
#X connect 3 0 17 0;
#X connect 4 0 17 1;
#X connect 5 0 4 1;
#X connect 8 0 18 0;
#X connect 9 0 11 1;
#X connect 10 0 9 0;
#X connect 11 0 8 1;
#X connect 12 0 9 0;
#X connect 13 0 14 0;
#X connect 14 0 11 0;
#X connect 15 0 8 0;
#X connect 15 0 11 0;
#X connect 18 0 19 0;
#X restore 468 196 pd examples_2;
#X text 221 433 - sets the maximum delay in samples (default 512), f 54;
#X text 221 452 - sets the initial delay in samples (default 0), f 54;
#X text 221 333 - sets a ramp time to a new target delay value in ms, f 54;
#N canvas 332 119 829 252 examples_3 0;
#X obj 436 92 cyclone/delay~ 512;
#X obj 541 41 osc~ 0.1;
#X obj 541 66 cyclone/scale~ -1 1 0 512;
#X text 572 149 feedforward flanger;
#X obj 102 89 cyclone/delay~ 512;
#X obj 207 63 cyclone/scale~ -1 1 0 512;
#X obj 207 36 osc~ 1.75;
#X text 222 146 vibrato;
#X obj 413 55 noise~;
#X obj 102 51 osc~ 400;
#X obj 102 123 output~;
#X obj 413 125 output~;
#X connect 0 0 11 0;
#X connect 1 0 2 0;
#X connect 2 0 0 1;
#X connect 4 0 10 0;
#X connect 5 0 4 1;
#X connect 6 0 5 0;
#X connect 8 0 0 0;
#X connect 8 0 11 0;
#X connect 9 0 4 0;
#X restore 468 219 pd examples_3;
#X obj 66 208 output~;
#X obj 3 3 ./header delay~;
#X text 22 61 Delay a signal;
#X connect 14 0 15 0;
#X connect 14 0 37 0;
#X connect 15 0 37 1;
#X connect 18 0 19 0;
#X connect 19 0 15 1;
