#N canvas 403 23 616 705 12;
#X obj 98 605 snapshot~;
#X floatatom 98 635 8 0 0 0 - - - 0;
#X msg 78 344 1 1000;
#X msg 127 477 stop;
#X msg 116 394 0;
#X text 20 678 see also:;
#X obj 96 679 line;
#X obj 142 679 line~;
#X obj 27 15 vline~;
#X text 84 15 - high-precision audio ramp generator;
#X obj 98 570 vline~;
#X text 133 341 ramp up;
#X msg 98 368 0 1000;
#X text 151 369 ramp down;
#X text 127 416 ramp up \, jump down \, ramp up again;
#X text 149 393 jump down;
#X msg 121 442 1 1000 \, 0 0 2000 \, 1 1000 3000;
#X text 339 435 note: times (2000 \, 3000) are cumulative \, not incremental., f 29;
#X text 403 677 updated for Pd version 0.47;
#X floatatom 137 543 5 0 0 0 - - - 0;
#X floatatom 133 509 5 0 0 0 - - - 0;
#X text 176 501 middle inlet sets next ramp time (cleared when ramp starts!), f 32;
#X text 179 539 right inlet sets next delay time (cleared when ramp starts!), f 32;
#X obj 11 44 cnv 1 600 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X text 526 14 <= click;
#N canvas 708 145 583 306 reference 0;
#X obj 9 42 cnv 5 550 5 empty empty INLETS: 8 18 0 13 #202020 #000000 0;
#X obj 9 205 cnv 2 550 2 empty empty OUTLET: 8 12 0 13 #202020 #000000 0;
#X obj 9 239 cnv 2 550 2 empty empty ARGUMENTS: 8 12 0 13 #202020 #000000 0;
#X obj 8 276 cnv 5 550 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X obj 9 75 cnv 1 550 1 empty empty 1st: 8 12 0 13 #9f9f9f #000000 0;
#X text 133 80 float - set target value and start ramp.;
#X obj 9 127 cnv 1 550 1 empty empty 2nd: 8 12 0 13 #9f9f9f #000000 0;
#X text 133 136 float - set next ramp time (cleared when ramp starts).;
#X text 126 214 signal - ramp values.;
#X text 189 249 NONE;
#X obj 27 15 vline~;
#X text 91 15 - high-precision audio ramp generator;
#X obj 9 164 cnv 1 550 1 empty empty 3rd: 8 12 0 13 #9f9f9f #000000 0;
#X text 141 99 stop - stops the ramp.;
#X text 133 173 float - sets delay time.;
#X restore 432 14 pd reference;
#X obj 11 669 cnv 1 600 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X text 24 181 A list up to three floats distributes the values over the inlets \, as usual in Pd. Note that the middle and right inlet (that sets the time and delay) do not remember old values (unlike other inlets in Pd). Thus \, if you send [vline~] a float without priorly specifying a ramp time and delay and sent \, it jumps immediately to the target value. In the same way \, a list of two values will not have a delay time if no delay time was priorly set in the right inlet., f 81;
#X text 24 276 Any number of future ramps may be scheduled and [vline~] will remember them and execute them in order. They must be specified in increasing order of initial delay however \, since a segment cancels all planned segments at any future time., f 81;
#X text 170 476 "stop" message freezes [vline~] at its current value;
#X text 226 593 !!! BUG: [vline~] objects inside reblocked subpatches can have slightly incorrect timing !!!, f 42;
#X msg 424 376 \; pd dsp \$1;
#X obj 424 341 set-dsp-tgl;
#X text 455 345 DSP on/off;
#X obj 193 679 sig~;
#X obj 446 533 metro 100;
#X obj 446 507 loadbang;
#X obj 446 559 s bang;
#X obj 35 570 r bang;
#X text 24 53 The [vline~] object \, like [line~] \, generates linear ramps whose levels and timing are determined by messages you send it. It takes a target value \, a time interval in milliseconds and an initial delay (also in ms)., f 81;
#X text 24 102 Ramps may start and stop between blocks and even between audio samples (in which case the output is interpolated accordingly). This feature can also be used to convert floats to signals in between blocks in a more sohisticated manner than [sig~] \, where you can also convert more than one float to a signal within a block., f 81;
#X connect 0 0 1 0;
#X connect 2 0 10 0;
#X connect 3 0 10 0;
#X connect 4 0 10 0;
#X connect 10 0 0 0;
#X connect 12 0 10 0;
#X connect 16 0 10 0;
#X connect 19 0 10 2;
#X connect 20 0 10 1;
#X connect 32 0 31 0;
#X connect 35 0 37 0;
#X connect 36 0 35 0;
#X connect 38 0 0 0;
