Panning with expr [was: Re: [PD] delay effects in PD: suggestions?]

Frank Barknecht fbar at footils.org
Sun Nov 12 13:27:07 CET 2006


Hallo,
derek holzer hat gesagt: // derek holzer wrote:

> derek holzer wrote:
> 
> >Help me out here, cause I've been using that particular dirty-but-quick 
> >panner construction for years now. What is the difference between your 
> >version and mine? Seems like they both give a range from 0-1 to the left 
> >channel and the inverse of that to the right channel.
> 
> Never mind!!!!! I figured it out. There's one patch cable in the wrong 
> place in my version. If that were fixed, our maths would be the same.

Yes, it's the same. My version might be slightly faster because it
avoids a multiplication, but then it has a variable replacement in a
message box, which also is a bit costly. Normally I use something like

  [expr 1-$f1; $f1]

to do the splitting in one object but I once heard that you don't like
[expr]. (Just joking ;)

Using [expr] for panning has the advantage to allow for writing
alternative pannings in a very compact way like:

  [expr sqrt(1-$f1); sqrt($f1)]
  
  [expr cos(1.57 * $f1); sin(1.57 * $f1)]

Attached patch shows them all.

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__
-------------- next part --------------
#N canvas 58 29 967 485 10;
#X floatatom 261 160 5 0 0 0 - - -;
#X obj 261 222 expr sqrt(1-$f1) \; sqrt($f1);
#X floatatom 261 263 5 0 0 0 - - -;
#X floatatom 375 260 5 0 0 0 - - -;
#X obj 264 134 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 5750 1;
#X msg 261 113 0.5;
#X floatatom 75 161 5 0 0 0 - - -;
#X floatatom 75 264 5 0 0 0 - - -;
#X floatatom 147 262 5 0 0 0 - - -;
#X obj 78 135 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 6350 1;
#X msg 75 114 0.5;
#X obj 75 223 expr 1-$f1 \; $f1;
#X floatatom 486 159 5 0 0 0 - - -;
#X floatatom 486 262 5 0 0 0 - - -;
#X floatatom 579 259 5 0 0 0 - - -;
#X obj 489 133 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 6350 1;
#X msg 486 112 0.5;
#X msg 644 110 bang;
#X floatatom 644 157 10 0 0 0 - - -;
#X obj 644 133 expr 2*atan(1);
#X text 691 111 M_PI/2;
#N canvas 0 0 450 300 apply_pan 0;
#X obj 67 157 *~;
#X obj 104 158 *~;
#X obj 68 55 inlet~;
#X obj 162 88 inlet;
#X obj 207 88 inlet;
#X obj 68 203 dac~;
#X obj 67 111 *~;
#X obj 133 120 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X connect 0 0 5 0;
#X connect 1 0 5 1;
#X connect 2 0 6 0;
#X connect 3 0 0 1;
#X connect 4 0 1 1;
#X connect 6 0 0 0;
#X connect 6 0 1 0;
#X connect 7 0 6 1;
#X coords 0 -1 1 1 85 50 1 100 100;
#X restore 36 336 pd apply_pan;
#N canvas 0 0 450 300 apply_pan 0;
#X obj 67 157 *~;
#X obj 104 158 *~;
#X obj 68 55 inlet~;
#X obj 162 88 inlet;
#X obj 207 88 inlet;
#X obj 68 203 dac~;
#X obj 67 111 *~;
#X obj 133 120 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X connect 0 0 5 0;
#X connect 1 0 5 1;
#X connect 2 0 6 0;
#X connect 3 0 0 1;
#X connect 4 0 1 1;
#X connect 6 0 0 0;
#X connect 6 0 1 0;
#X connect 7 0 6 1;
#X coords 0 -1 1 1 85 50 1 100 100;
#X restore 222 341 pd apply_pan;
#N canvas 0 0 450 300 apply_pan 0;
#X obj 67 157 *~;
#X obj 104 158 *~;
#X obj 68 55 inlet~;
#X obj 162 88 inlet;
#X obj 207 88 inlet;
#X obj 68 203 dac~;
#X obj 67 111 *~;
#X obj 133 120 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X connect 0 0 5 0;
#X connect 1 0 5 1;
#X connect 2 0 6 0;
#X connect 3 0 0 1;
#X connect 4 0 1 1;
#X connect 6 0 0 0;
#X connect 6 0 1 0;
#X connect 7 0 6 1;
#X coords 0 -1 1 1 85 50 1 100 100;
#X restore 447 337 pd apply_pan;
#X obj 692 413 *~ 0;
#X obj 718 371 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 11700 1;
#X obj 715 389 dbtorms;
#X obj 691 217 noise~;
#X obj 691 243 bp~ 1000 12;
#X obj 692 438 s~ \$0-noise;
#X obj 448 311 r~ \$0-noise;
#X obj 223 314 r~ \$0-noise;
#X obj 37 310 r~ \$0-noise;
#X obj 486 221 expr cos($f1) \; sin($f1);
#X text 258 73 Square-root based panning;
#X text 471 87 Equal power panning;
#X text 24 92 Linear with hole in middle;
#X text 95 21 Three simple panning methods;
#X text 688 192 Test signal;
#X obj 729 302 metro 250;
#X obj 692 347 *~;
#N canvas 0 0 540 524 vead 0;
#X obj 281 314 vline~;
#X obj 158 65 max 0.1;
#X obj 258 65 max 0.1;
#X text 156 22 attack (ms);
#X text 256 22 decay (ms);
#X text 86 22 trigger;
#X obj 87 45 inlet;
#X obj 158 45 inlet;
#X obj 258 45 inlet;
#X obj 144 467 outlet~;
#X obj 87 65 b;
#X obj 87 308 vline~;
#X text 129 283 attack;
#X text 317 285 decay;
#X msg 87 261 1 \, 0 \$1 0 \, 1 0 \$1;
#X msg 281 261 0 \, 1 0 \$1 \, 0 \$2 \$1;
#X obj 87 195 f 3;
#X msg 21 261 1;
#X obj 21 239 loadbang;
#X obj 281 361 expr~ pow($v1 \, 6);
#X obj 88 359 expr~ 1 - pow($v1 \, 6);
#X obj 87 215 pack 3 150;
#X connect 0 0 19 0;
#X connect 1 0 16 1;
#X connect 2 0 21 1;
#X connect 6 0 10 0;
#X connect 7 0 1 0;
#X connect 8 0 2 0;
#X connect 10 0 16 0;
#X connect 11 0 20 0;
#X connect 14 0 11 0;
#X connect 15 0 0 0;
#X connect 16 0 21 0;
#X connect 17 0 11 0;
#X connect 18 0 17 0;
#X connect 19 0 9 0;
#X connect 20 0 9 0;
#X connect 21 0 15 0;
#X connect 21 0 14 0;
#X restore 729 326 pd vead;
#X obj 729 280 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 754 277 loadbang;
#X obj 486 196 * 1.57;
#X text 536 196 * ~M_PI/2;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 2 0 22 1;
#X connect 3 0 22 2;
#X connect 4 0 0 0;
#X connect 5 0 4 0;
#X connect 6 0 11 0;
#X connect 7 0 21 1;
#X connect 8 0 21 2;
#X connect 9 0 6 0;
#X connect 10 0 9 0;
#X connect 11 0 7 0;
#X connect 11 1 8 0;
#X connect 12 0 44 0;
#X connect 13 0 23 1;
#X connect 14 0 23 2;
#X connect 15 0 12 0;
#X connect 16 0 15 0;
#X connect 17 0 19 0;
#X connect 19 0 18 0;
#X connect 19 0 44 1;
#X connect 24 0 29 0;
#X connect 25 0 26 0;
#X connect 26 0 24 1;
#X connect 27 0 28 0;
#X connect 28 0 40 0;
#X connect 30 0 23 0;
#X connect 31 0 22 0;
#X connect 32 0 21 0;
#X connect 33 0 13 0;
#X connect 33 1 14 0;
#X connect 39 0 41 0;
#X connect 40 0 24 0;
#X connect 41 0 40 1;
#X connect 42 0 39 0;
#X connect 43 0 39 0;
#X connect 44 0 33 0;


More information about the Pd-list mailing list