#N canvas 215 77 561 455 12;
#X text 14 7 CONVERTING CONTROL TO SIGNALS;
#X obj 29 350 output~;
#X obj 107 352 output~;
#N canvas 0 0 450 300 metro 0;
#X obj 88 39 loadbang;
#X msg 87 65 1;
#X obj 87 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 87 153 sel 0 1;
#X obj 87 190 outlet;
#X obj 151 192 outlet;
#X obj 87 96 metro 2;
#X connect 0 0 1 0;
#X connect 1 0 6 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 1 5 0;
#X connect 6 0 2 0;
#X restore 30 242 pd metro;
#X msg 30 268 1 2;
#X msg 97 270 0 2;
#X obj 30 305 line~;
#X obj 108 306 vline~;
#X text 13 107 Here we try out line~ and vline~ as triangle wave generators.
The subpatch is still sending alternating bangs as in the last patch
\, but now at an audible frequency \, every 2 msec.;
#X text 17 172 The effect of line~ rounding breakpoints to the nearest
block (on the order of a millisecond) is that each 4-millisecond-long
cycle has a different shape. Using vline~ resolves the problem.;
#X text 385 437 Updated for Pd 0.37;
#X text 16 411 Sometimes you will want to use vline~ in place of sig~
for the same reason.;
#X text 15 27 For controlling amplitudes \, line~ \, with its block-aligned
breakpoints \, is accurate enough for most purposes. But certain usages
\, such as this patch \, demand more accuracy. The vline~ object \,
somewhat more expensive than line~ \, can handle breakpoints to sub-sample
accuracy.;
#X connect 3 0 4 0;
#X connect 3 1 5 0;
#X connect 4 0 6 0;
#X connect 4 0 7 0;
#X connect 5 0 6 0;
#X connect 5 0 7 0;
#X connect 6 0 1 0;
#X connect 6 0 1 1;
#X connect 7 0 2 0;
#X connect 7 0 2 1;
