[PD] up-down saw-wave

Frank Barknecht fbar at footils.org
Mon Nov 20 12:07:18 CET 2006


Hallo,
martin brinkmann hat gesagt: // martin brinkmann wrote:

> hard off wrote:
> >does anybody know how to make an up-down saw-wave ?
> 
> i'm quite new to pd, so maybe there is a more elegant method...
> 
> to make a triangle wave i have used a phasor, and clipped both,
> the phasor and 1-phasor with a range of 0..0.5. then added both
> signals (and subtracted 0.5 or 0.75 and scaled, if necessary).

The approach of 3.audio.examples/J05.triangle.pd in Miller's docs is a
bit more elegant, as it does the same with less objects and allows for
easier scaling. (The "crossover-point" of the minimum of the sum of a
phasor and 1-phasor is at 0.5 so the clipping is kind of built-in in
[min~]).

Attached patch illustrates his approach with a "message based" phasor
and compares it to your clipping method.

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__
-------------- next part --------------
#N canvas 254 96 747 724 10;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-min 882 float 0;
#X coords 0 1 881 -1 200 130 1;
#X restore 463 276 graph;
#X text 462 414 ---- 0.02 seconds ----;
#X obj 295 55 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 295 77 metro 193;
#X floatatom 94 61 5 0 0 0 - - -;
#X text 86 38 frequency;
#X obj 118 135 *~ -1;
#X obj 118 160 +~ 1;
#X obj 94 221 min~;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-phas 882 float 0;
#X coords 0 1 881 -1 200 130 1;
#X restore 463 16 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-1-phas 882 float 0;
#X coords 0 1 881 -1 200 130 1;
#X restore 463 146 graph;
#X obj 295 131 tabwrite~ \$0-phas;
#X obj 295 239 tabwrite~ \$0-1-phas;
#X text 419 394 -1;
#X text 422 275 1;
#X text 137 244 rescale;
#X text 160 163 1-phasor;
#X obj 94 82 phasor~ 192;
#X obj 68 472 / 100;
#X floatatom 68 449 5 0 0 0 - - -;
#X obj 98 526 * -1;
#X obj 68 572 min;
#X obj 68 497 t a a;
#X obj 168 489 hsl 128 15 0 1 0 0 empty empty phasor -2 -8 1 10 -262144
-1 -1 0 1;
#X obj 168 566 hsl 128 15 0 1 0 0 empty empty 1-phasor -2 -8 1 10 -262144
-1 -1 12700 1;
#X obj 168 616 hsl 128 15 0 1 0 0 empty empty triangle -2 -8 1 10 -262144
-1 -1 0 1;
#X obj 98 549 + 1;
#X msg 68 405 bang;
#N canvas 0 0 395 371 auto 0;
#X obj 118 85 inlet;
#X obj 118 254 outlet;
#X msg 118 174 0 \, 100 1000;
#X obj 211 153 del 1000;
#X msg 211 174 0 1000;
#X obj 118 111 b;
#X obj 118 227 line 0 20;
#X connect 0 0 5 0;
#X connect 2 0 6 0;
#X connect 3 0 4 0;
#X connect 4 0 6 0;
#X connect 5 0 3 0;
#X connect 5 0 2 0;
#X connect 6 0 1 0;
#X restore 68 428 pd auto;
#X obj 295 343 tabwrite~ \$0-min;
#X text 59 380 triangle ramp for messages:;
#X msg 134 221 1;
#X msg 164 221 2;
#X obj 94 244 *~ 1;
#X msg 101 577 1;
#X msg 131 577 2;
#X obj 68 599 * 1;
#X text 312 614 the triangle "wave" is built by always using he smaller
value ("min") of the two "phasors";
#N canvas 0 0 471 591 clipped-version 0;
#X obj 98 147 / 100;
#X floatatom 98 124 5 0 0 0 - - -;
#X obj 128 201 * -1;
#X obj 98 172 t a a;
#X obj 198 283 hsl 128 15 0 1 0 0 empty empty phasor -2 -8 1 10 -262144
-1 -1 0 1;
#X obj 198 351 hsl 128 15 0 1 0 0 empty empty 1-phasor -2 -8 1 10 -262144
-1 -1 6350 1;
#X obj 198 501 hsl 128 15 0 1 0 0 empty empty triangle -2 -8 1 10 -262144
-1 -1 0 1;
#X obj 128 224 + 1;
#X msg 98 80 bang;
#N canvas 0 0 395 371 auto 0;
#X obj 118 85 inlet;
#X obj 118 254 outlet;
#X msg 118 174 0 \, 100 1000;
#X obj 211 153 del 1000;
#X msg 211 174 0 1000;
#X obj 118 111 b;
#X obj 118 227 line 0 20;
#X connect 0 0 5 0;
#X connect 2 0 6 0;
#X connect 3 0 4 0;
#X connect 4 0 6 0;
#X connect 5 0 3 0;
#X connect 5 0 2 0;
#X connect 6 0 1 0;
#X restore 98 103 pd auto;
#X obj 128 308 clip 0 0.5;
#X obj 98 256 clip 0 0.5;
#X obj 98 357 +;
#X text 89 55 triangle ramp for messages using clipped "phasors";
#X obj 98 384 - 0.5;
#X msg 114 422 1;
#X msg 144 422 2;
#X obj 98 454 * 1;
#X connect 0 0 3 0;
#X connect 1 0 0 0;
#X connect 2 0 7 0;
#X connect 3 0 11 0;
#X connect 3 1 2 0;
#X connect 7 0 10 0;
#X connect 8 0 9 0;
#X connect 9 0 1 0;
#X connect 10 0 12 1;
#X connect 10 0 5 0;
#X connect 11 0 4 0;
#X connect 11 0 12 0;
#X connect 12 0 14 0;
#X connect 14 0 17 0;
#X connect 15 0 17 1;
#X connect 16 0 17 1;
#X connect 17 0 6 0;
#X restore 461 526 pd clipped-version;
#X connect 2 0 3 0;
#X connect 3 0 12 0;
#X connect 3 0 11 0;
#X connect 3 0 29 0;
#X connect 4 0 17 0;
#X connect 6 0 7 0;
#X connect 7 0 12 0;
#X connect 7 0 8 1;
#X connect 8 0 33 0;
#X connect 17 0 6 0;
#X connect 17 0 11 0;
#X connect 17 0 8 0;
#X connect 18 0 22 0;
#X connect 18 0 23 0;
#X connect 19 0 18 0;
#X connect 20 0 26 0;
#X connect 21 0 36 0;
#X connect 22 0 21 0;
#X connect 22 1 20 0;
#X connect 26 0 21 1;
#X connect 26 0 24 0;
#X connect 27 0 28 0;
#X connect 28 0 19 0;
#X connect 31 0 33 1;
#X connect 32 0 33 1;
#X connect 33 0 29 0;
#X connect 34 0 36 1;
#X connect 35 0 36 1;
#X connect 36 0 25 0;


More information about the Pd-list mailing list