#N canvas 461 23 562 723 10;
#X declare -stdpath ./;
#X obj 6 778 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X obj 9 542 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 6 640 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 6 681 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X obj 102 554 cnv 17 3 53 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 102 653 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 148 556 signal;
#X obj 102 613 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 148 611 signal;
#X text 148 651 signal;
#X text 202 652 - the triangle wavetable output based on args;
#X text 137 694 1) float;
#X floatatom 214 263 6 0 0 0 - - - 0;
#X floatatom 264 286 6 0 0 0 - - - 0;
#X obj 380 347 line~;
#X obj 383 270 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X floatatom 380 298 5 0 0 0 - - - 0;
#X obj 217 222 hsl 128 15 -1 1 0 0 empty empty empty -2 -8 0 10 #f0f0f0 #000000 #000000 0 1;
#X obj 267 245 hsl 128 15 -1 1 0 0 empty empty empty -2 -8 0 10 #f0f0f0 #000000 #000000 0 1;
#X text 403 511 -1;
#X text 406 465 0;
#X text 406 413 1;
#X text 202 611 - variable duty (peak position) from 0-1;
#X obj 179 417 cyclone/scope~ 220 106 3 3 128 -1 1 0 0 0 0 205 229 232 74 79 77 96 98 102 0 empty;
#X text 203 693 - peak position from 0 to 1 (default 0.5);
#X msg 380 321 \$1 50;
#X obj 135 286 phasor~ 229;
#X obj 8 726 cnv 3 550 3 empty empty attributes 8 12 0 13 #dcdcdc #000000 0;
#X text 174 748 @hi <f> (default 1) - same as "hi" message;
#X msg 214 285 lo \$1;
#X msg 264 308 hi \$1;
#X obj 179 374 cyclone/triangle~ @lo -0.5 @hi 0.5;
#X text 69 87 [triangle~] is a triangular wavetable that is read with phase values from 0 to 1 into the first inlet- a [phasor~] input turns it into a wavetable oscillator.;
#X text 70 131 A second inlet changes the position of the peak value (variable duty \, from 0 to 1) \, going from sawtooth like waveforms to triangular ones.;
#X text 69 175 The default lo/hi points are -1 and 1 \, but may be changed using the lo/hi messages to any given range.;
#X text 124 573 lo <float>;
#X text 124 590 hi <float>;
#X text 202 589 - changes highest point (default 1);
#X text 202 556 - phase input signal;
#X text 202 574 - changes lowest point (default -1);
#X text 174 733 @lo <f> (default -1) - same as "lo" message;
#X obj 499 69 cyclone/dsponoff~;
#X obj 41 427 output~;
#X obj 1 4 ./header triangle~;
#X text 22 61 Variable duty triangular wavetable;
#X obj 40 502 declare -stdpath ./;
#X connect 12 0 29 0;
#X connect 13 0 30 0;
#X connect 14 0 31 1;
#X connect 15 0 16 0;
#X connect 16 0 25 0;
#X connect 17 0 12 0;
#X connect 18 0 13 0;
#X connect 25 0 14 0;
#X connect 26 0 31 0;
#X connect 29 0 31 0;
#X connect 30 0 31 0;
#X connect 31 0 23 0;
#X connect 31 0 42 0;
