#N canvas 358 23 616 705 12;
#X obj 98 600 snapshot~;
#X floatatom 98 630 8 0 0 0 - - - 0;
#X msg 78 339 1 1000;
#X msg 127 472 stop;
#X msg 116 389 0;
#X text 20 674 see also:;
#X obj 96 675 line;
#X obj 142 675 line~;
#X obj 27 15 vline~;
#X text 84 15 - high-precision audio ramp generator;
#X obj 98 565 vline~;
#X text 133 336 ramp up;
#X msg 98 363 0 1000;
#X text 151 364 ramp down;
#X text 127 411 ramp up \, jump down \, ramp up again;
#X text 149 388 jump down;
#X msg 121 437 1 1000 \, 0 0 2000 \, 1 1000 3000;
#X text 339 430 note: times (2000 \, 3000) are cumulative \, not incremental., f 29;
#X text 403 673 updated for Pd version 0.47;
#X floatatom 137 538 5 0 0 0 - - - 0;
#X floatatom 133 504 5 0 0 0 - - - 0;
#X text 176 496 middle inlet sets next ramp time (cleared when ramp starts!), f 32;
#X text 179 534 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 665 cnv 1 600 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X text 170 471 "stop" message freezes [vline~] at its current value;
#X text 226 588 !!! BUG: [vline~] objects inside reblocked subpatches can have slightly incorrect timing !!!, f 42;
#X msg 440 371 \; pd dsp \$1;
#X obj 440 336 set-dsp-tgl;
#X text 471 340 DSP on/off;
#X obj 193 675 sig~;
#X obj 446 528 metro 100;
#X obj 446 502 loadbang;
#X obj 446 554 s bang;
#X obj 35 565 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 sophisticated manner than [sig~] \, and you can also convert more than one float to a signal within a block., f 81;
#X text 24 165 Note that the middle and right inlet (that sets the time and delay) get cleared after the ramp starts (unlike other inlets in Pd). Thus \, if you send [vline~] a float without priorly resetting a ramp time and delay \, it jumps immediately to the target value. A list up to three floats distributes the values over the inlets \, as usual in Pd. In the same way \, a list of two values will not have a delay time if no delay time was priorly set in the rightmost inlet., f 81;
#X text 24 258 Any number of future ramps may be scheduled and [vline~] will remember them and execute them in order. You can do that by sending different lists in single messagebox. 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 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 30 0 29 0;
#X connect 33 0 35 0;
#X connect 34 0 33 0;
#X connect 36 0 0 0;
