#N canvas 470 59 558 659 10;
#X declare -stdpath ./;
#X obj 3 628 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X obj 5 358 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 5 502 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 5 534 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X obj 109 417 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 109 437 cnv 17 3 17 empty empty 2 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 109 477 cnv 17 3 17 empty empty 4 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 109 510 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 109 457 cnv 17 3 17 empty empty 3 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 109 457 cnv 17 3 17 empty empty 3 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 177 511 signal;
#X text 233 512 - output from comb filter;
#X text 165 541 1) float;
#X text 165 558 2) float;
#X text 165 575 3) float;
#X text 165 592 4) float;
#X text 165 607 5) float;
#X text 141 418 float/signal;
#X text 141 437 float/signal;
#X text 141 457 float/signal;
#X text 141 477 float/signal;
#X text 233 541 - maximum delay time in ms (default 10 ms);
#X text 233 418 - D: delay time in ms;
#X text 233 457 - b: feedforward gain coefficient;
#X text 233 477 - c: feedback gain coefficient;
#X text 233 556 - D: delay time in ms (default 0);
#X text 233 590 - b: feedforward gain coefficient (default 0);
#X text 233 605 - c: feedback gain coefficient (default 0);
#X text 233 437 - a: input gain coefficient;
#X text 233 573 - a: input gain coefficient (default 0);
#X obj 161 125 noise~;
#X obj 208 157 *~;
#X obj 223 125 cyclone/train~ 1000 0.1;
#X floatatom 247 168 5 0 100 0 - adfsa - 0;
#X floatatom 327 167 5 -1 1 0 - adfsa - 0;
#X floatatom 367 167 5 -1 1 0 - adfsa - 0;
#X floatatom 287 168 5 -1 1 0 - adfsa - 0;
#X obj 109 367 cnv 17 3 43 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 177 366 signal;
#X text 189 382 list;
#X text 233 397 - clears buffer;
#X text 183 397 clear;
#X text 233 366 - signal to pass through comb filter;
#X text 233 382 - updates all 5 arguments;
#N canvas 758 83 576 535 filter_equation 0;
#X obj 37 61 cnv 15 270 120 empty empty empty 20 12 0 14 #e0e0e0 #404040 0;
#X text 84 74 |;
#X text 84 86 |;
#X text 84 98 |;
#X text 65 109 |;
#X text 107 109 |;
#X text 107 129 |;
#X text 65 129 |;
#X text 68 100 _______;
#X text 68 129 _______;
#X text 84 101 v;
#X text 146 101 |;
#X text 146 112 |;
#X text 146 82 |;
#X text 146 91 |;
#X text 146 77 ^;
#X text 230 75 |;
#X text 230 87 |;
#X text 230 99 |;
#X text 211 110 |;
#X text 253 110 |;
#X text 253 130 |;
#X text 211 130 |;
#X text 214 101 _______;
#X text 214 130 _______;
#X text 230 102 v;
#X text 176 103 |;
#X text 176 113 |;
#X text 176 81 |;
#X text 176 91 |;
#X text 176 76 ^;
#X text 253 67 >;
#X text 113 118 -(*b)-;
#X text 177 119 -(*c)-;
#X text 44 68 x[n] -----(*a)--(+)--(+)----------- y[n];
#X text 65 119 | z^-D |;
#X text 46 153 y[n] = a * x[n] + b * x[n-D] + c * y[n-D];
#X text 211 120 | z^-D |;
#X text 334 87 D = delay time;
#X text 334 100 a = input gain coefficient;
#X text 334 114 b = feedforward gain coefficient;
#X text 334 127 c = feedback gain coefficient;
#X floatatom 239 372 5 0 100 0 - - - 0;
#X obj 186 333 noise~;
#X text 243 352 d1;
#X text 108 270 updates all arguments;
#X floatatom 292 371 5 0 100 0 - - - 0;
#X floatatom 345 371 5 0 0 0 - - - 0;
#X floatatom 399 372 5 0 0 0 - - - 0;
#X obj 295 294 hsl 128 15 -1 1 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 348 319 hsl 128 15 -1 1 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 402 345 hsl 128 15 -1 1 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X text 427 344 feedback (c);
#X text 371 319 feedforward (b);
#X text 327 293 input (a);
#X obj 186 400 cyclone/comb~ 100 50 0.25 0.33 0.925;
#X msg 106 292 20 13 0.55 0.43 0.95;
#X text 103 211 If the delay time lies between two samples \, a simple linear interpolation is performed.;
#X obj 186 441 output~;
#X text 47 25 Here's the equation for the comb filter:, f 46;
#X connect 42 0 55 1;
#X connect 43 0 55 0;
#X connect 46 0 55 2;
#X connect 47 0 55 3;
#X connect 48 0 55 4;
#X connect 49 0 46 0;
#X connect 50 0 47 0;
#X connect 51 0 48 0;
#X connect 55 0 58 0;
#X connect 56 0 55 0;
#X restore 414 243 pd filter_equation;
#X obj 208 189 cyclone/comb~ 500 500 0 1 0;
#X text 78 87 [comb~] is a comb filter \, use it for filtering and delay effects.;
#X obj 208 220 output~;
#X obj 3 7 ./header comb~;
#X text 23 62 Comb filter;
#X text 294 150 a;
#X text 334 150 b;
#X text 374 150 c;
#X obj 37 243 declare -stdpath ./;
#X text 59 317 see also:;
#X obj 408 332 open-else;
#X text 415 288 click:;
#X msg 408 309 comb.rev~;
#X text 128 313 Plugdata users or those with ELSE can also use [else/comb.rev~] as an alternative, f 43;
#X connect 30 0 31 0;
#X connect 31 0 45 0;
#X connect 32 0 31 1;
#X connect 33 0 45 1;
#X connect 34 0 45 3;
#X connect 35 0 45 4;
#X connect 36 0 45 2;
#X connect 45 0 47 0;
#X connect 57 0 55 0;
