#N struct drawtut-animation float x float y;
#N canvas 0 19 537 571 10;
#X scalar drawtut-animation 47 309 \;;
#X obj 47 279 draw rect 0 0 40 40;
#X obj 47 131 struct drawtut-animation float x float y;
#X text 0 1 New Drawing Commands: animation;
#X text 1 1 _______________________________;
#X text 47 25 The svg specification has some handy attributes which
can be used to animate the transition between values for other attributes.
Unfortunately the new [draw] commands don't currently support those
attributes.;
#X text 47 82 However \, if you can do the same thing using some of
Pd's core objects. For example \, with [line] you can create a ramp
between values.;
#X obj 47 168 tgl 23 0 empty empty empty 17 7 0 10 -4034 -1 -1 0 1
;
#X msg 47 220 \$1 500;
#X text 171 279 <- use the 2nd argument to set the "grain" rate;
#X text 47 371 This is less efficient than svg's animation interface.
Here \, Pd must send a message for each change in value during the
ramp. However \, you can use the 2nd argument to [line] to tell it
how many milliseconds it should wait before outputting a ramp value.
Use the objects below to convert between "grain" rate and frames-per-second.
;
#X floatatom 50 459 5 0 0 0 - - -, f 5;
#X msg 50 480 1000 \$1;
#X obj 50 501 /;
#X floatatom 50 522 5 0 0 1 - - -, f 5;
#X obj 47 240 line 0 33.333;
#X text 112 458 <-- If you want to convert grain-rate to fps \, type
the grain-rate in the box and read out the answer in the bottom box.
On the other hand if you want to convert fps to grain-rate simply think
your desire at the patch and Pd will automatically do the conversion
in the other direction!;
#X text 112 524 How does it know?;
#X msg 47 260 fill \$1 \$1 \$1;
#X obj 47 198 * 255;
#X connect 7 0 19 0;
#X connect 8 0 15 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 15 0 18 0;
#X connect 18 0 1 0;
#X connect 19 0 8 0;
