#N canvas 190 248 862 534 10; #X obj 3 29 line; #X text 38 29 -- ramp generator; #X text 5 59 [line]'s left inlet defines the "target" value. The right inlet defines the "time" value. The "target \, time" pair of numbers inform [line] to produce a numeric "ramp" from its current value (whatever that might be at any given moment) to the new value within the alloted time which is defined at the right inlet.; #X text 5 147 It is important to realize that [line] stores only the current value...it does not remember the defined "time" (duration of the ramp). Hence \, the following works:; #X obj 10 262 line; #X msg 44 238 1000; #X msg 10 238 1000; #X obj 10 195 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 10 215 t b b; #X floatatom 10 284 5 0 0 0 - - -; #X obj 151 270 line; #X msg 151 246 1000; #X obj 151 226 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 151 292 5 0 0 0 - - -; #X text 5 309 If [line] receives a new target value without an accompanying "time" \, it simply jumps to the new value...as in the example above on the right. In the example above on the left \, you'll see that [line] will create a numeric ramp from 0 to 1000 over 1000 milliseconds. You should also note that if you click that [bng] again a second time \, nothing happens. This is because [line] is already at 1000 \, so sending it new instructions to ramp to 1000 is meaningless and has no effect. ; #X text 5 435 Having said all of that \, let's just reiterate that it's important to send a "time" value to [line] before sending it a new "target" value...unless of course you WANT it to jump immediately to the new target.; #X text 430 41 [line] will accept a list of two numbers. The first in the list will be assigned as the new target \, the second in the list will be the new time (duration of the ramp) as below:; #X obj 416 7 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 416 501 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 449 215 line; #X msg 449 127 1000 1000; #X floatatom 449 236 5 0 0 0 - - -; #X text 515 126 ramp up.; #X msg 458 150 0 1000; #X text 505 150 ramp down.; #X msg 470 194 stop; #X text 430 86 [line] will also accept the "stop" message which effectively halt the current ramp.; #N canvas 51 105 536 509 continuous_ramps 0; #X text 29 44 [line] does not schedule its incoming messages. What this means is that if you send [line] a new target value mid-way through a ramp \, a new ramp is immediatly created to the new target value starting from the "current" value.; #X text 27 105 In other words \, if [line] receives a message specifying some new target and time before reaching the previous target \, it takes off from its current value.; #X obj 34 254 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 -1 -1 0 1; #X msg 64 212 stop; #X msg 57 192 42; #X obj 31 233 line; #X msg 31 151 127 5000; #X msg 49 172 0 5000; #X text 18 23 CONTINUOUS RAMPS; #X text 24 278 Due to this unique behavior \, a common construct found in Pd patches includes the [pack] object as follows:; #X obj 38 399 line; #X floatatom 38 420 10 0 0 0 - - -; #X floatatom 38 313 5 0 0 0 - - -; #X obj 38 379 pack f 500; #X msg 49 332 50; #X msg 57 353 2000; #X connect 3 0 5 0; #X connect 4 0 5 0; #X connect 5 0 2 0; #X connect 6 0 5 0; #X connect 7 0 5 0; #X connect 10 0 11 0; #X connect 12 0 13 0; #X connect 13 0 10 0; #X connect 14 0 13 0; #X connect 15 0 13 0; #X restore 443 290 pd continuous_ramps; #X text 152 196 While this does NOT work unless; #X text 150 206 you click "500" first.; #X msg 185 246 500; #X msg 466 173 42; #X text 492 174 jumps to this value immediately.; #X text 507 194 stops the current ramp.; #X text 428 316 More information about [line] can be found in the Pure Documentation folder doc/3.audio.examples.; #X text 431 478 This document was updated for Pd version 0.35 test 28 by Dave Sabine as part of a project called pddp proposed by Krzysztof Czaja to build comprehensive documentation for Pd.; #X text 423 354 RELATED OBJECTS; #X obj 443 373 line~; #N canvas 0 22 456 306 related_objects_from_other_libraries 0; #X obj 23 21 tripleline; #X obj 105 20 t3_line~; #X obj 171 20 fade~; #X obj 219 21 step; #X text 17 54 These objects are offered in Pd only if you have downloaded and properly installed the appropriate library. These objects may or may not exist in a single library.; #X text 16 103 The best places to find information about Pd's libraries is:; #X text 13 125 www.puredata.org and click on "Downloads" then "Software" ; #X text 14 141 or; #X text 15 155 iem.kug.ac.at/pdb/; #X restore 444 397 pd related_objects_from_other_libraries; #N canvas 0 22 462 536 grain_rate_and_creation_arguments 0; #X text 20 18 GRAIN RATE; #X text 32 38 The "grain rate" of [line] is the rate at which it will output its values. The faster the grain is \, the smoother the ramp will appear. While slower grain rates will produce a more disjunct ramp. Of course this setting will alter the amount of CPU that the [line] object will require. Higher rates require more computation. ; #X text 33 144 This means simply that [line] will output a new value between its current value and your new value once every 20 milliseconds. ; #X text 33 125 The default grain rate is 20 milliseconds.; #X text 30 192 [line]'s optional creation arguments can be used to reset the grain rate. However \, the grain rate cannot be reset dynamically. ; #X text 32 247 First creation argument is the initial value: the starting point of the first ramp.; #X text 31 286 The second creation argument sets the grain rate. Observe the following two examples to see how the grain rate effects the output. ; #X obj 44 417 line 0 5; #X obj 47 450 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 -1 -1 0 1; #X msg 147 346 127; #X msg 179 354 0; #X obj 146 382 pack f 5000; #X obj 214 450 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144 -1 -1 0 1; #X obj 211 417 line 0 500; #X connect 7 0 8 0; #X connect 9 0 11 0; #X connect 10 0 11 0; #X connect 11 0 7 0; #X connect 11 0 13 0; #X connect 13 0 12 0; #X restore 443 263 pd grain_rate_and_creation_arguments; #X obj 3 3 cnv 5 850 20 empty empty [line] 20 10 1 18 -233017 -66577 0; #X obj 819 4 pddp; #X connect 4 0 9 0; #X connect 5 0 4 1; #X connect 6 0 4 0; #X connect 7 0 8 0; #X connect 8 0 6 0; #X connect 8 1 5 0; #X connect 10 0 13 0; #X connect 11 0 10 0; #X connect 12 0 11 0; #X connect 17 0 18 0; #X connect 19 0 21 0; #X connect 20 0 19 0; #X connect 23 0 19 0; #X connect 25 0 19 0; #X connect 30 0 10 1; #X connect 31 0 19 0;