[PD] Chorus or Flange...

Frank Barknecht barknech at ph-cip.uni-koeln.de
Wed May 8 10:02:19 CEST 2002


David Sabine hat gesagt: // David Sabine wrote:

> Has anybody designed a really nice chorus that they'd be willing to
> share with me?  I'd like to see an example of either a single-voice
> or a multi-voice chorus.
> 
> I've been trying to build one but I'm not having a lot of luck.  I'd
> like to use adc~ (instead of reading from a sample) and (as I'm
> still very new to PD) I can't decide if I need to use delwrite~ or
> tabwrite~ to build an array that I can read from.  

You write with a delwrite~ into a delay line that doesn't need a
representation in an array. From that delayline you can read with
delread~ or with vd~, the "variable delayread". For a chorus or
flanger effect you normally take the vd~ because you can change the
delay time better with the vd~. There are some things to think about
when using delay lines with feedback in PD, because of a possible
unwanted blocksize delay, but for a chorus effect without feedback
that's no problem.

> As well, for both
> a chorus and flange, I'd 'think' like to have either a randomized
> delay time or a controllable LFO.

So take the vd~ to read from the delay line. 

> Or perhaps I need to look into vst~?  (But that doesn't help me
> understand a 'chorus' or 'flange', which is my goal, that would
> teach me how to manipulate vst, which isn't my goal yet).

Of course, vst or LADSPA effects probably will sound better than
effects for learning, but then you don't learn how chorus or flanger 
works, and that's half of the fun ;) I attached a simple chorus, that
doesn't sound great but is a proof of concept. Maybe someone else has
a flanger lying around...

The chorus reads from adc~ or you can switch on the included pluck synth.

ciao,
-- 
 Frank Barknecht                                  _ _______footils__

-------------- next part --------------
#N canvas 111 151 955 611 10;
#X obj 719 63 adc~;
#X obj 167 508 dac~;
#X obj 719 95 *~ 0.8;
#X obj 719 132 delwrite~ \$0-dline 1000;
#X obj 50 265 vd~ \$0-dline;
#X obj 50 291 throw~ \$0-chorus;
#X obj 228 388 catch~ \$0-chorus;
#X obj 228 427 *~ 0.1;
#X obj 288 418 r \$0-volume;
#X obj 50 146 r~ \$0-rand;
#X obj 877 283 vsl 15 128 0 1.5 0 0 empty empty chorus_volume 0 -8
0 8 -262144 -1 -1 12700 1;
#X obj 877 454 s \$0-volume;
#X obj 706 544 s~ \$0-rand;
#X obj 706 283 vsl 15 128 0 1.5 0 0 empty empty LFO-Freq 0 -8 0 8 -262144
-1 -1 9800 1;
#X floatatom 715 432 5 0 0;
#X obj 745 504 sig~ 1;
#X obj 706 466 osc~ 1;
#X obj 50 219 +~ 10;
#X obj 80 195 random 50;
#X obj 80 173 r \$0-randinit;
#X obj 179 267 vd~ \$0-dline;
#X obj 179 293 throw~ \$0-chorus;
#X obj 179 148 r~ \$0-rand;
#X obj 179 221 +~ 10;
#X obj 209 197 random 50;
#X obj 209 175 r \$0-randinit;
#X obj 302 266 vd~ \$0-dline;
#X obj 302 292 throw~ \$0-chorus;
#X obj 302 147 r~ \$0-rand;
#X obj 302 220 +~ 10;
#X obj 332 196 random 50;
#X obj 332 174 r \$0-randinit;
#X obj 426 264 vd~ \$0-dline;
#X obj 426 290 throw~ \$0-chorus;
#X obj 426 145 r~ \$0-rand;
#X obj 426 218 +~ 10;
#X obj 456 194 random 50;
#X obj 456 172 r \$0-randinit;
#X obj 554 264 vd~ \$0-dline;
#X obj 554 290 throw~ \$0-chorus;
#X obj 554 145 r~ \$0-rand;
#X obj 554 218 +~ 10;
#X obj 584 194 random 50;
#X obj 584 172 r \$0-randinit;
#X obj 754 359 s \$0-randinit;
#X msg 754 330 bang;
#X text 743 311 RANDOMIZE;
#X obj 706 504 *~ 1;
#X floatatom 786 451 5 0 0;
#X text 795 504 keep positive!;
#X obj 877 425 / 5;
#X obj 94 397 expr 1-$f1;
#X obj 97 352 hsl 128 15 0 1 0 1 empty empty dry__________________wet
-2 -6 0 8 -262144 -1 -1 9300 1;
#X floatatom 94 425 5 0 0;
#X floatatom 145 427 5 0 0;
#X obj 162 478 *~ 0;
#X obj 194 478 *~ 1;
#X obj 691 156 throw~ \$0-dry;
#X obj 20 450 catch~ \$0-dry;
#X obj 769 64 hsl 128 15 0 1 0 0 empty empty soft______________loud
-2 -6 0 8 -262144 -1 -1 12700 1;
#X floatatom 598 217 5 0 0;
#X floatatom 470 219 5 0 0;
#X floatatom 346 220 5 0 0;
#X floatatom 222 221 5 0 0;
#X floatatom 92 219 5 0 0;
#N canvas 409 245 584 467 synth 0;
#X obj 100 28 inlet;
#X obj 99 153 outlet~;
#N canvas 0 0 683 652 pluck 0;
#X obj 297 496 outlet~;
#X obj 204 24 inlet;
#X obj 378 229 sig~;
#X floatatom 234 154 5 0 0;
#X obj 204 76 t b f;
#X obj 271 260 * 0.001;
#X obj 271 286 + 0.95;
#X obj 271 234 inlet;
#X obj 378 177 mtof;
#X obj 204 177 del 2;
#X obj 204 50 unpack 0 0;
#X obj 376 112 * 0.0078;
#X obj 376 138 s \$0-vel;
#X obj 320 328 r \$0-vel;
#X msg 171 203 1;
#X msg 204 203 0;
#X obj 148 282 *~ 0;
#X text 262 211 feedback;
#X text 83 23 midi note pairs;
#X obj 378 203 expr 1000/$f1;
#X text 24 168 short burst of noise;
#X obj 297 470 *~;
#X obj 337 442 line~;
#X msg 388 415 1;
#X obj 388 389 t b;
#X obj 337 362 select 0;
#X text 385 341 unclick on note-off;
#X msg 337 388 0 500;
#N canvas 126 55 600 400 delays 0;
#X obj 77 73 inlet~;
#X obj 278 79 inlet;
#X obj 227 180 *~ 0.995;
#X obj 227 206 lop~ 5000;
#X obj 412 128 vd~ \$0-buff;
#X obj 77 256 delwrite~ \$0-buff 256;
#X floatatom 290 180 5 0 0;
#X obj 412 79 inlet~;
#X obj 412 154 clip~ -0.5 0.5;
#X obj 412 311 outlet~;
#X obj 164 74 block~ 1;
#X connect 0 0 5 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 3 0 5 0;
#X connect 4 0 8 0;
#X connect 4 0 2 0;
#X connect 6 0 3 1;
#X connect 7 0 4 0;
#X connect 8 0 9 0;
#X restore 242 328 pd delays;
#X obj 97 185 noise~;
#X obj 96 207 lop~ 500;
#X obj 110 255 *~ 1;
#X obj 131 235 r \$0-vel;
#X obj 242 388 *~ 1.5;
#X text 262 364 BOOST!;
#X connect 1 0 10 0;
#X connect 2 0 28 2;
#X connect 3 0 9 1;
#X connect 4 0 9 0;
#X connect 4 0 14 0;
#X connect 4 1 8 0;
#X connect 5 0 6 0;
#X connect 6 0 28 1;
#X connect 7 0 5 0;
#X connect 8 0 19 0;
#X connect 9 0 15 0;
#X connect 10 0 4 0;
#X connect 10 1 11 0;
#X connect 11 0 12 0;
#X connect 13 0 25 0;
#X connect 14 0 16 1;
#X connect 15 0 16 1;
#X connect 16 0 28 0;
#X connect 19 0 2 0;
#X connect 21 0 0 0;
#X connect 22 0 21 1;
#X connect 23 0 22 0;
#X connect 24 0 23 0;
#X connect 25 0 27 0;
#X connect 25 1 24 0;
#X connect 27 0 22 0;
#X connect 28 0 33 0;
#X connect 29 0 30 0;
#X connect 30 0 31 0;
#X connect 31 0 16 0;
#X connect 32 0 31 1;
#X connect 33 0 21 0;
#X restore 99 122 pd pluck;
#X obj 100 99 pack 0 100;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X restore 488 107 pd synth;
#X floatatom 488 85 5 0 0;
#X obj 405 59 metro 1000;
#X obj 405 38 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 488 36 random 10;
#X obj 488 60 + 20;
#X text 783 427 LFO Amount;
#X floatatom 544 64 5 0 0;
#X connect 0 0 2 0;
#X connect 0 1 2 0;
#X connect 2 0 3 0;
#X connect 2 0 57 0;
#X connect 4 0 5 0;
#X connect 6 0 7 0;
#X connect 7 0 56 0;
#X connect 8 0 7 1;
#X connect 9 0 17 0;
#X connect 10 0 50 0;
#X connect 13 0 16 0;
#X connect 13 0 14 0;
#X connect 15 0 12 0;
#X connect 16 0 47 0;
#X connect 17 0 4 0;
#X connect 18 0 17 1;
#X connect 18 0 64 0;
#X connect 19 0 18 0;
#X connect 20 0 21 0;
#X connect 22 0 23 0;
#X connect 23 0 20 0;
#X connect 24 0 23 1;
#X connect 24 0 63 0;
#X connect 25 0 24 0;
#X connect 26 0 27 0;
#X connect 28 0 29 0;
#X connect 29 0 26 0;
#X connect 30 0 29 1;
#X connect 30 0 62 0;
#X connect 31 0 30 0;
#X connect 32 0 33 0;
#X connect 34 0 35 0;
#X connect 35 0 32 0;
#X connect 36 0 35 1;
#X connect 36 0 61 0;
#X connect 37 0 36 0;
#X connect 38 0 39 0;
#X connect 40 0 41 0;
#X connect 41 0 38 0;
#X connect 42 0 41 1;
#X connect 42 0 60 0;
#X connect 43 0 42 0;
#X connect 45 0 44 0;
#X connect 47 0 12 0;
#X connect 48 0 47 1;
#X connect 48 0 15 0;
#X connect 50 0 11 0;
#X connect 51 0 53 0;
#X connect 52 0 51 0;
#X connect 52 0 54 0;
#X connect 53 0 55 1;
#X connect 54 0 56 1;
#X connect 55 0 1 0;
#X connect 55 0 1 1;
#X connect 56 0 1 1;
#X connect 56 0 1 0;
#X connect 58 0 55 0;
#X connect 59 0 2 1;
#X connect 65 0 2 0;
#X connect 66 0 65 0;
#X connect 67 0 69 0;
#X connect 68 0 67 0;
#X connect 69 0 70 0;
#X connect 70 0 66 0;
#X connect 72 0 70 1;


More information about the Pd-list mailing list