#N canvas 464 23 562 680 10;
#X declare -stdpath ./;
#X obj 4 651 cnv 15 552 21 empty empty empty 20 12 0 14 #e0e0e0 #202020 0;
#X obj 4 400 cnv 3 550 3 empty empty inlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 4 566 cnv 3 550 3 empty empty outlets 8 12 0 13 #dcdcdc #000000 0;
#X obj 4 620 cnv 3 550 3 empty empty arguments 8 12 0 13 #dcdcdc #000000 0;
#X obj 92 410 cnv 17 3 130 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X obj 91 544 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 126 411 float;
#X obj 92 575 cnv 17 3 17 empty empty 0 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 127 545 float;
#X text 122 575 signal;
#X text 110 629 1) float;
#X text 175 545 - sets the time for the next float send to the left inlet, f 60;
#X text 132 441 list;
#X text 176 629 - sets an initial value for the signal output (default 0);
#X obj 93 596 cnv 17 3 17 empty empty 1 5 9 0 16 #dcdcdc #9c9c9c 0;
#X text 134 597 bang;
#X text 177 596 - a bang is sent when final target is reached, f 60;
#X text 176 575 - current value or a ramp towards the target, f 60;
#X text 175 410 - jumps immediately to that value unless duration is set to other than 0 via the second inlet, f 60;
#X text 126 485 pause;
#X text 120 501 resume;
#X text 132 517 stop;
#X text 175 485 - pauses the output, f 60;
#X text 175 501 - restores the output after being paused, f 60;
#X text 175 517 - stops and clears pending target-time parameter triples (but continues outputting its last value), f 60;
#X obj 499 68 cyclone/dsponoff~;
#X text 175 437 - pairs that specify target value and duration (in ms) to reach it (maximum is 128 target-time pairs). For an odd number of elements \, the last element is treated as another pair with 0 ms duration., f 60;
#N canvas 723 166 410 218 name 0;
#X text 197 171 <= from Pd Vanilla;
#X text 29 134 And still create the vanilla object from vanilla without namespaces as:;
#X obj 147 96 cyclone/line~;
#X obj 151 171 line~;
#X text 30 15 Pd also has a vanilla object named [line~]. Cyclone avoids name clashing and overwriting an internal in Pd Vanilla \, but for that you need to use the cyclone namespace ("cyclone/" before the object name) \, as it's the common practice for cyclone's documentation. So you create it as:;
#X restore 435 243 pd name clash;
#X text 68 84 [cyclone/line~] generates signal ramps or envelopes. It takes a target and a duration (in ms) values and generates a ramp from its current value to the target value in that period. Target and duration can be set as a list or in different inlets., f 64;
#X text 68 134 If you send it a list with an odd number of elements \, the last element is treated as a target and the duration to get there is considered to be 0 ms. A single float value will similarly jump immediately to that value in 0 ms - unless a duration is set to other than "0" via the second inlet., f 64;
#N canvas 476 164 466 415 example 0;
#X msg 263 130 5000;
#X msg 94 82 pause;
#X msg 138 83 resume;
#X msg 153 105 stop;
#X obj 200 111 tgl 15 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X floatatom 200 131 5 0 0 0 - - - 0;
#X obj 200 69 bng 15 250 50 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000;
#X obj 263 183 bng 35 250 50 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000;
#X text 306 191 <= Bangs when finished;
#X text 299 131 duration;
#X text 153 129 target;
#X text 277 154 argument: initial value;
#X obj 110 154 cyclone/line~ 0.5, f 26;
#X msg 27 35 0 \, 1 1000 0 1000 0.5 2500;
#X msg 66 58 0.25 1000 1 500 0.5;
#X obj 200 89 trigger b b;
#X text 299 51 Test all messages;
#X obj 110 204 cyclone/snapshot~ 1;
#X floatatom 110 244 9 0 0 0 - - - 16;
#X obj 110 285 vsl 22 100 0 1 0 0 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X connect 0 0 12 1;
#X connect 1 0 12 0;
#X connect 2 0 12 0;
#X connect 3 0 12 0;
#X connect 4 0 5 0;
#X connect 5 0 12 0;
#X connect 6 0 15 0;
#X connect 12 0 17 0;
#X connect 12 1 7 0;
#X connect 13 0 12 0;
#X connect 14 0 12 0;
#X connect 15 0 4 0;
#X connect 15 1 0 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X restore 453 265 pd example;
#X msg 199 236 \$1 1000;
#X obj 199 206 tgl 22 0 empty empty empty 17 7 0 10 #dcdcdc #000000 #000000 0 1;
#X obj 199 259 cyclone/line~;
#N canvas 715 160 388 391 linear_envelope 0;
#X obj 34 132 osc~ 440;
#X obj 34 185 *~;
#X obj 188 135 cyclone/line~;
#X msg 188 104 1 100 0.6 100 0.6 500 0 700;
#X text 55 49 [cyclone/line~] generating a linear ADSR envelope;
#X obj 34 230 output~;
#X obj 29 315 declare -stdpath ./;
#X obj 188 167 cyclone/snapshot~ 1;
#X floatatom 188 197 9 0 0 0 - - - 16;
#X obj 188 238 vsl 22 100 0 1 0 0 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 2 0 1 1;
#X connect 2 0 7 0;
#X connect 3 0 2 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X restore 406 288 pd linear_envelope;
#X obj 4 4 ./header line~;
#X text 22 60 Linear ramp generator;
#X obj 199 311 nbx 6 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 #dcdcdc #000000 #000000 0 256;
#X obj 199 287 cyclone/snapshot~ 1;
#X text 15 355 see also:;
#X obj 443 369 open-else;
#X msg 443 347 envgen~;
#X text 494 348 click;
#X text 178 350 Plugdata users or those with ELSE can also use [else/envgen~] as an alternative, f 41;
#X obj 80 356 cyclone/curve~;
#X connect 31 0 33 0;
#X connect 32 0 31 0;
#X connect 33 0 38 0;
#X connect 38 0 37 0;
#X connect 41 0 40 0;
