aboutsummaryrefslogtreecommitdiff
path: root/externals/gridflow/doc/flow_classes
diff options
context:
space:
mode:
authorN.N. <matju@users.sourceforge.net>2008-07-08 05:56:10 +0000
committerN.N. <matju@users.sourceforge.net>2008-07-08 05:56:10 +0000
commit089475041fe26964d72cb2ebc3559a36ba89a2f2 (patch)
tree4ea7537e82b2ee34748ef7cbfc18c523425d4f7a /externals/gridflow/doc/flow_classes
parentd1ad56f1da41e7a88eb9a52d6b0daaf145b54ea7 (diff)
trying to import gridflow 0.9.4
svn path=/trunk/; revision=10148
Diffstat (limited to 'externals/gridflow/doc/flow_classes')
-rw-r--r--externals/gridflow/doc/flow_classes/#+-help.pd363
-rw-r--r--externals/gridflow/doc/flow_classes/#-help.pd26
-rw-r--r--externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-help.pd61
-rw-r--r--externals/gridflow/doc/flow_classes/#background_model-help.pd43
-rw-r--r--externals/gridflow/doc/flow_classes/#border-help.pd57
-rw-r--r--externals/gridflow/doc/flow_classes/#camera-help.pd53
-rw-r--r--externals/gridflow/doc/flow_classes/#cast-help.pd74
-rw-r--r--externals/gridflow/doc/flow_classes/#checkers-help.pd38
-rw-r--r--externals/gridflow/doc/flow_classes/#clip-help.pd78
-rw-r--r--externals/gridflow/doc/flow_classes/#color-help.pd84
-rw-r--r--externals/gridflow/doc/flow_classes/#contrast-help.pd76
-rw-r--r--externals/gridflow/doc/flow_classes/#convolve-help.pd73
-rw-r--r--externals/gridflow/doc/flow_classes/#dim-help.pd52
-rw-r--r--externals/gridflow/doc/flow_classes/#downscale_by-help.pd61
-rw-r--r--externals/gridflow/doc/flow_classes/#draw_image-help.pd55
-rw-r--r--externals/gridflow/doc/flow_classes/#draw_points-help.pd22
-rw-r--r--externals/gridflow/doc/flow_classes/#draw_polygon-help.pd83
-rw-r--r--externals/gridflow/doc/flow_classes/#draw_slider-help.pd53
-rw-r--r--externals/gridflow/doc/flow_classes/#fade-help.pd71
-rw-r--r--externals/gridflow/doc/flow_classes/#fastblur-help.pd69
-rw-r--r--externals/gridflow/doc/flow_classes/#fft-help.pd43
-rw-r--r--externals/gridflow/doc/flow_classes/#finished-help.pd15
-rw-r--r--externals/gridflow/doc/flow_classes/#fold-help.pd78
-rw-r--r--externals/gridflow/doc/flow_classes/#for-help.pd96
-rw-r--r--externals/gridflow/doc/flow_classes/#grade-help.pd20
-rw-r--r--externals/gridflow/doc/flow_classes/#greyscale_to_rgb-help.pd15
-rw-r--r--externals/gridflow/doc/flow_classes/#import-help.pd87
-rw-r--r--externals/gridflow/doc/flow_classes/#import_pix-help.pd116
-rw-r--r--externals/gridflow/doc/flow_classes/#in-help.pd226
-rw-r--r--externals/gridflow/doc/flow_classes/#layer-help.pd28
-rw-r--r--externals/gridflow/doc/flow_classes/#line_to_polygon-help.pd12
-rw-r--r--externals/gridflow/doc/flow_classes/#moment-help.pd131
-rw-r--r--externals/gridflow/doc/flow_classes/#moment_polar-help.pd11
-rw-r--r--externals/gridflow/doc/flow_classes/#motion_detection-help.pd44
-rw-r--r--externals/gridflow/doc/flow_classes/#mouse-help.pd55
-rw-r--r--externals/gridflow/doc/flow_classes/#numop-help.pd365
-rw-r--r--externals/gridflow/doc/flow_classes/#out-help.pd159
-rw-r--r--externals/gridflow/doc/flow_classes/#outer-help.pd70
-rw-r--r--externals/gridflow/doc/flow_classes/#pack-help.pd44
-rw-r--r--externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd85
-rw-r--r--externals/gridflow/doc/flow_classes/#perspective-help.pd26
-rw-r--r--externals/gridflow/doc/flow_classes/#polygon_comparator-help.pd69
-rw-r--r--externals/gridflow/doc/flow_classes/#polygon_each_edge-help.pd12
-rw-r--r--externals/gridflow/doc/flow_classes/#polygon_radial_map-help.pd42
-rw-r--r--externals/gridflow/doc/flow_classes/#posterize-help.pd36
-rw-r--r--externals/gridflow/doc/flow_classes/#print-help.pd81
-rw-r--r--externals/gridflow/doc/flow_classes/#ravel-help.pd31
-rw-r--r--externals/gridflow/doc/flow_classes/#record-help.pd68
-rw-r--r--externals/gridflow/doc/flow_classes/#redim-help.pd65
-rw-r--r--externals/gridflow/doc/flow_classes/#remap_image-help.pd70
-rw-r--r--externals/gridflow/doc/flow_classes/#reverse-help.pd46
-rw-r--r--externals/gridflow/doc/flow_classes/#rgb_to_greyscale-help.pd40
-rw-r--r--externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd42
-rw-r--r--externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd44
-rw-r--r--externals/gridflow/doc/flow_classes/#rotate-help.pd64
-rw-r--r--externals/gridflow/doc/flow_classes/#saturation-help.pd60
-rw-r--r--externals/gridflow/doc/flow_classes/#scale_by-help.pd59
-rw-r--r--externals/gridflow/doc/flow_classes/#scale_to-help.pd78
-rw-r--r--externals/gridflow/doc/flow_classes/#scan-help.pd24
-rw-r--r--externals/gridflow/doc/flow_classes/#slice-help.pd18
-rw-r--r--externals/gridflow/doc/flow_classes/#solarize-help.pd25
-rw-r--r--externals/gridflow/doc/flow_classes/#sort-help.pd25
-rw-r--r--externals/gridflow/doc/flow_classes/#spread-help.pd57
-rw-r--r--externals/gridflow/doc/flow_classes/#store-help.pd87
-rw-r--r--externals/gridflow/doc/flow_classes/#t-help.pd75
-rw-r--r--externals/gridflow/doc/flow_classes/#to_float-help.pd39
-rw-r--r--externals/gridflow/doc/flow_classes/#to_list-help.pd42
-rw-r--r--externals/gridflow/doc/flow_classes/#to_pix-help.pd126
-rw-r--r--externals/gridflow/doc/flow_classes/#to_symbol-help.pd46
-rw-r--r--externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd45
-rw-r--r--externals/gridflow/doc/flow_classes/#unpack-help.pd40
-rw-r--r--externals/gridflow/doc/flow_classes/0x40complex_sq-help.pd28
-rw-r--r--externals/gridflow/doc/flow_classes/0x40join-help.pd44
-rw-r--r--externals/gridflow/doc/flow_classes/ascii-help.pd30
-rw-r--r--externals/gridflow/doc/flow_classes/condition-help.pd16
-rw-r--r--externals/gridflow/doc/flow_classes/count-help.pd15
-rw-r--r--externals/gridflow/doc/flow_classes/cv.Kalman-help.pd25
-rw-r--r--externals/gridflow/doc/flow_classes/cv.numop-help.pd45
-rw-r--r--externals/gridflow/doc/flow_classes/display-help.pd30
-rw-r--r--externals/gridflow/doc/flow_classes/exec-help.pd40
-rw-r--r--externals/gridflow/doc/flow_classes/for-help.pd9
-rw-r--r--externals/gridflow/doc/flow_classes/gf.oneshot-help.pd51
-rw-r--r--externals/gridflow/doc/flow_classes/gridflow-help.pd11
-rw-r--r--externals/gridflow/doc/flow_classes/inv*-help.pd96
-rw-r--r--externals/gridflow/doc/flow_classes/inv+-help.pd96
-rw-r--r--externals/gridflow/doc/flow_classes/listappend-help.pd58
-rw-r--r--externals/gridflow/doc/flow_classes/listelement-help.pd52
-rw-r--r--externals/gridflow/doc/flow_classes/listflatten-help.pd46
-rw-r--r--externals/gridflow/doc/flow_classes/listlength-help.pd52
-rw-r--r--externals/gridflow/doc/flow_classes/listprepend-help.pd59
-rw-r--r--externals/gridflow/doc/flow_classes/listsublist-help.pd64
-rw-r--r--externals/gridflow/doc/flow_classes/ls-help.pd21
-rw-r--r--externals/gridflow/doc/flow_classes/mysql-help.pd22
-rw-r--r--externals/gridflow/doc/flow_classes/parallel_port-help.pd78
-rw-r--r--externals/gridflow/doc/flow_classes/plotter_control-help.pd64
-rw-r--r--externals/gridflow/doc/flow_classes/renamefile-help.pd9
-rw-r--r--externals/gridflow/doc/flow_classes/route2-help.pd21
-rw-r--r--externals/gridflow/doc/flow_classes/seq_fold-help.pd13
-rw-r--r--externals/gridflow/doc/flow_classes/shunt-help.pd58
-rw-r--r--externals/gridflow/doc/flow_classes/unix_time-help.pd29
100 files changed, 5956 insertions, 0 deletions
diff --git a/externals/gridflow/doc/flow_classes/#+-help.pd b/externals/gridflow/doc/flow_classes/#+-help.pd
new file mode 100644
index 00000000..97f33474
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#+-help.pd
@@ -0,0 +1,363 @@
+#N canvas 165 32 693 623 10;
+#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 36 326 INLETS:;
+#X text 36 344 - LEFT:;
+#X text 30 386 - RIGHT:;
+#X text 29 469 OUTLETS:;
+#X text 28 53 EXAMPLES:;
+#X text 16 553 SEE ALSO:;
+#N canvas 52 15 871 640 More_Info 1;
+#X text 76 366 A + B;
+#X text 77 510 A * B;
+#X text 73 571 rounded towards zero;
+#X text 14 73 angles are in hundredth of degrees \, so a full circle
+(two pi radians) is 36000 you can convert from radians to our angles
+by multiplying by 18000/pi.;
+#X text 13 44 for all of these \, A refers to the left inlet and B
+to the value on the right.;
+#X text 15 27 Consult doc/architecture.html to see all the 40 of them.
+;
+#X text 902 31 GridFlow 0.8.0;
+#X obj 479 70 #color;
+#X obj 684 72 #color;
+#X msg 15 366 op +;
+#X msg 15 507 op *;
+#X obj 15 385 s op;
+#X obj 423 155 r op;
+#X obj 15 526 s op;
+#X obj 15 436 s op;
+#X text 77 421 A - B;
+#X msg 15 417 op -;
+#X obj 15 761 s op;
+#X msg 15 742 op %;
+#X text 69 743 A % B;
+#X obj 15 575 s op;
+#X msg 15 556 op /;
+#X text 79 557 A / B;
+#X obj 14 809 s op;
+#X text 83 790 B % A;
+#X text 15 14 Numeric Operators: *whoa \, there's a lot of them;
+#X obj 16 482 s op;
+#X msg 16 463 op inv+;
+#X text 79 464 B -A;
+#X obj 15 623 s op;
+#X text 79 605 A / B;
+#X msg 15 604 op div;
+#X text 75 621 rounded downwards;
+#X obj 15 668 s op;
+#X msg 15 649 op inv*;
+#X text 80 650 B / A;
+#X text 77 665 rounded towards 0;
+#X obj 15 712 s op;
+#X text 76 714 rounded downwards;
+#X text 101 695 B / A;
+#X text 68 760 modulo (goes with div);
+#X text 65 809 modulo (goes with div);
+#X msg 14 790 op swap%;
+#X obj 15 286 s op;
+#X obj 15 334 s op;
+#X msg 15 267 op ignore;
+#X text 90 268 A;
+#X msg 15 315 op put;
+#X text 76 315 B;
+#X msg 15 693 op swapdiv;
+#X obj 237 286 s op;
+#X msg 237 267 op rem;
+#X text 315 263 A % B;
+#X obj 236 338 s op;
+#X text 330 319 B % A;
+#X text 314 278 remainder;
+#X text 314 293 (goes with /);
+#X msg 236 319 op swaprem;
+#X text 327 333 remainder;
+#X text 326 348 (goes with /);
+#X obj 236 388 s op;
+#X obj 236 435 s op;
+#X msg 236 369 op gcd;
+#X msg 236 416 op lcm;
+#X text 298 373 greatest common divisor;
+#X text 298 420 least common multiple;
+#X obj 235 481 s op;
+#X text 299 464 A or B \, bitwise;
+#X msg 235 462 op;
+#X obj 235 525 s op;
+#X text 299 508 A xor B \, bitwise;
+#X msg 235 506 op ^;
+#X obj 235 578 s op;
+#X msg 235 559 op &;
+#X text 300 561 A and B \, bitwise;
+#X obj 235 623 s op;
+#X msg 235 604 op <<;
+#X text 300 606 A * (2**(B % 32);
+#X text 299 621 left-shifthing;
+#X obj 235 669 s op;
+#X msg 235 649 op >>;
+#X text 299 666 right-shifthing;
+#X text 300 652 A / (2**(B % 32);
+#X obj 218 463 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X obj 235 714 s op;
+#X msg 235 695 op;
+#X obj 218 695 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X text 299 697 if A is zero then;
+#X text 300 711 B else A;
+#X obj 235 758 s op;
+#X text 299 741 if A is zero then;
+#X msg 235 739 op &&;
+#X text 300 755 zero else B;
+#X obj 236 807 s op;
+#X msg 236 788 op min;
+#X text 300 789 the lowest value;
+#X text 301 804 in A \, B;
+#X obj 500 287 s op;
+#X msg 500 267 op max;
+#X text 556 284 in A \, B;
+#X text 557 268 the highest value;
+#X obj 500 333 s op;
+#X msg 500 313 op cmp;
+#X text 551 310 -1 when A<B;
+#X text 558 338 1 when A>B;
+#X text 558 324 0 when A=B;
+#X obj 500 386 s op;
+#X msg 500 366 op ==;
+#X text 557 367 is A equal to B ?;
+#X text 556 385 1 = true \, 0 = false;
+#X obj 500 433 s op;
+#X msg 500 413 op !=;
+#X text 557 414 is A not equal to B ?;
+#X obj 500 477 s op;
+#X msg 500 456 op >;
+#X text 557 457 is A greater than B ?;
+#X obj 500 523 s op;
+#X msg 500 502 op <=;
+#X text 557 503 is A not greater than B ?;
+#X obj 500 572 s op;
+#X msg 500 551 op <;
+#X text 557 552 is A less than B ?;
+#X obj 500 618 s op;
+#X msg 500 597 op >=;
+#X text 557 598 is A not less than B ?;
+#X obj 500 666 s op;
+#X msg 500 645 op sin*;
+#X text 559 646 B * sin(A);
+#X obj 500 713 s op;
+#X msg 500 691 op cos*;
+#X text 560 693 B * cos(A);
+#X obj 500 758 s op;
+#X msg 500 736 op atan;
+#X text 560 737 arctan(A/B);
+#X obj 499 805 s op;
+#X msg 499 783 op tan*;
+#X text 559 784 tanh(A);
+#X obj 738 288 s op;
+#X msg 738 268 op log*;
+#X text 795 269 B*log(A);
+#X text 794 286 in base e;
+#X obj 738 334 s op;
+#X msg 738 314 op gamma;
+#X text 809 314 floor(pow(a/256.0 \, 256.0/b)*256.0);
+#X obj 737 385 s op;
+#X msg 737 366 op **;
+#X text 799 368 A**B;
+#X text 799 385 A raised to power B;
+#X obj 737 431 s op;
+#X msg 737 412 op abs-;
+#X text 799 412 absolute value of (A-B);
+#X obj 737 478 s op;
+#X msg 737 459 op rand;
+#X text 800 473 number below A;
+#X text 799 458 randomly produces a non-negative;
+#X obj 737 524 s op;
+#X msg 737 505 op sqrt;
+#X text 799 504 square root of A;
+#X text 800 519 rounded downwards;
+#X obj 737 566 s op;
+#X msg 737 547 op sq-;
+#X text 800 546 (A-B) times (A-B);
+#X obj 740 614 s op;
+#X obj 723 595 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 740 595 op clip+;
+#X text 808 595 A+B but output is clipped;
+#X obj 740 660 s op;
+#X obj 723 641 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 740 641 op clip-;
+#X text 808 641 A-B but output is clipped;
+#X obj 740 706 s op;
+#X obj 740 750 s op;
+#X text 808 687 (A+B)/2;
+#X msg 740 687 op avg;
+#X msg 740 731 op hypot;
+#X text 808 731 square root of (A*A+B*B);
+#X obj 740 792 s op;
+#X obj 723 773 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 740 773 op erf;
+#X text 807 773 integral of e^(-x*x)dx;
+#N canvas 8 30 615 351 all_operators 0;
+#X obj 174 99 # -;
+#X obj 522 97 # swap%;
+#X obj 186 177 # abs-;
+#X obj 238 177 # rand;
+#X obj 342 177 # sq-;
+#X obj 290 177 # sqrt;
+#X obj 144 99 # +;
+#X obj 492 97 # %;
+#X obj 260 99 # *;
+#X obj 289 99 # /;
+#X obj 206 99 # inv+;
+#X obj 321 99 # div;
+#X obj 367 98 # inv*;
+#X obj 420 98 # swapdiv;
+#X obj 35 99 # ignore;
+#X obj 100 100 # put;
+#X obj 35 125 # rem;
+#X obj 78 125 # swaprem;
+#X obj 149 125 # gcd;
+#X obj 191 125 # lcm;
+#X obj 234 125 # |;
+#X obj 234 125 # |;
+#X obj 263 125 # ^;
+#X obj 293 125 # &;
+#X obj 322 125 # <<;
+#X obj 358 125 # >>;
+#X obj 394 125 # ||;
+#X obj 431 125 # &&;
+#X obj 467 125 # min;
+#X obj 35 151 # max;
+#X obj 79 151 # cmp;
+#X obj 124 151 # ==;
+#X obj 162 151 # !=;
+#X obj 199 151 # >;
+#X obj 234 151 # <=;
+#X obj 274 151 # <;
+#X obj 304 152 # >=;
+#X obj 341 152 # sin*;
+#X obj 391 152 # cos*;
+#X obj 442 152 # atan;
+#X obj 493 152 # tanh*;
+#X obj 35 177 # log*;
+#X obj 87 177 # gamma;
+#X obj 148 177 # **;
+#X obj 388 177 # avg;
+#X obj 433 177 # hypot;
+#X restore 15 174 pd all_operators;
+#X text 585 31 select values below;
+#X text 14 233 select an operator below;
+#X text 478 51 A;
+#X text 683 53 B;
+#X obj 479 182 # +;
+#X obj 257 196 #color;
+#X obj 297 162 #reverse;
+#X obj 443 215 display;
+#X obj 656 197 #unpack 3;
+#X floatatom 605 244 5 0 0 0 - - -;
+#X obj 642 150 t a a;
+#X obj 597 191 display;
+#X connect 7 0 185 0;
+#X connect 7 0 187 0;
+#X connect 7 0 191 0;
+#X connect 8 0 185 1;
+#X connect 9 0 11 0;
+#X connect 10 0 13 0;
+#X connect 12 0 185 0;
+#X connect 16 0 14 0;
+#X connect 18 0 17 0;
+#X connect 21 0 20 0;
+#X connect 27 0 26 0;
+#X connect 31 0 29 0;
+#X connect 34 0 33 0;
+#X connect 42 0 23 0;
+#X connect 45 0 43 0;
+#X connect 47 0 44 0;
+#X connect 49 0 37 0;
+#X connect 51 0 50 0;
+#X connect 57 0 53 0;
+#X connect 62 0 60 0;
+#X connect 63 0 61 0;
+#X connect 68 0 66 0;
+#X connect 71 0 69 0;
+#X connect 73 0 72 0;
+#X connect 76 0 75 0;
+#X connect 80 0 79 0;
+#X connect 85 0 84 0;
+#X connect 91 0 89 0;
+#X connect 94 0 93 0;
+#X connect 98 0 97 0;
+#X connect 102 0 101 0;
+#X connect 107 0 106 0;
+#X connect 111 0 110 0;
+#X connect 114 0 113 0;
+#X connect 117 0 116 0;
+#X connect 120 0 119 0;
+#X connect 123 0 122 0;
+#X connect 126 0 125 0;
+#X connect 129 0 128 0;
+#X connect 132 0 131 0;
+#X connect 135 0 134 0;
+#X connect 138 0 137 0;
+#X connect 142 0 141 0;
+#X connect 145 0 144 0;
+#X connect 149 0 148 0;
+#X connect 152 0 151 0;
+#X connect 156 0 155 0;
+#X connect 160 0 159 0;
+#X connect 164 0 162 0;
+#X connect 168 0 166 0;
+#X connect 173 0 170 0;
+#X connect 174 0 171 0;
+#X connect 178 0 176 0;
+#X connect 187 0 186 0;
+#X connect 187 0 188 0;
+#X connect 189 0 190 0;
+#X connect 191 0 192 0;
+#X connect 191 1 189 0;
+#X restore 115 574 pd More_Info;
+#X text 36 492 - LEFT:;
+#X text 412 575 updated for GridFlow version 0.8.0;
+#X floatatom 151 163 5 0 0 0 - - -;
+#X text 113 554 list of other operators;
+#X obj 71 9 # +;
+#X text 108 12 - OPERATORS ([# +] in this case) APPLY OPERATIONS ONTO
+GRIDS;
+#X text 109 345 Grid - accepts a grid that will be modified by the
+operator according to the right inlet value. (list of operators in
+[pd more_info]) ([# +] in this example.);
+#X text 108 395 Grid - accepts grids that will modify the incoming
+grid \, from the left inlet \, (preferably of the same dimensions.)
+;
+#X text 105 439 Integer - accepts integers that will modify the incoming
+grid.;
+#X text 107 492 Grid - outputs the modified data as a grid.;
+#X obj 142 211 display;
+#X obj 114 93 #color;
+#X msg 114 60 255 0 0;
+#X obj 114 253 #color;
+#X obj 511 179 #in;
+#X obj 511 249 #out window;
+#X msg 541 156 open b001.jpg;
+#X obj 511 113 t b b;
+#X obj 511 58 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 511 79 metro 100;
+#X obj 511 202 # +;
+#X obj 511 226 #clip;
+#X text 204 164 <-- change this value.;
+#X obj 114 181 # + 42;
+#X text 293 109 <-- modify color;
+#X connect 10 0 31 1;
+#X connect 19 0 31 0;
+#X connect 20 0 19 0;
+#X connect 22 0 28 0;
+#X connect 24 0 22 0;
+#X connect 25 0 22 0;
+#X connect 25 1 24 0;
+#X connect 26 0 27 0;
+#X connect 27 0 25 0;
+#X connect 28 0 29 0;
+#X connect 29 0 23 0;
+#X connect 31 0 18 0;
+#X connect 31 0 21 0;
diff --git a/externals/gridflow/doc/flow_classes/#-help.pd b/externals/gridflow/doc/flow_classes/#-help.pd
new file mode 100644
index 00000000..bf6366cb
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#-help.pd
@@ -0,0 +1,26 @@
+#N canvas 0 26 645 571 10;
+#X obj 139 174 #color;
+#X obj 314 174 #color;
+#X text 245 135 select values below;
+#X text 138 155 A;
+#X text 313 155 B;
+#X obj 139 240 # +;
+#X obj 178 274 #color;
+#X obj 140 380 display;
+#X obj 139 274 t a a;
+#X text 152 342 warning: #color clips value to the 0..255 range;
+#X text 152 357 so use this [display] to view the true numbers;
+#X text 14 31 click on this object to select a numop to try out:;
+#X text 15 14 # applies a simple Numeric Operator (numop).;
+#X text 83 445 note: a centidegree is 0.01 degree. There are 36000
+degrees in a circle. Some angle operators use centidegrees \, while
+some others use radians. To convert degrees into centidegrees \, multiply
+by 100 To convert degrees into radians \, divide by 57.2957 .;
+#X text 531 23 GridFlow 0.9.4;
+#X obj 74 50 doc/numop;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 5 0 8 0;
+#X connect 8 0 7 0;
+#X connect 8 1 6 0;
+#X connect 15 0 5 0;
diff --git a/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-help.pd b/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-help.pd
new file mode 100644
index 00000000..20149dbf
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-help.pd
@@ -0,0 +1,61 @@
+#N canvas 92 0 503 594 10;
+#X obj 25 173 #in;
+#X obj 25 272 #out window;
+#X obj 24 251 cnv 15 190 16 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 0 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 11 1 #apply_colormap_channelwise;
+#X obj 0 467 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 301 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 324 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 5 325 Inlet_0;
+#X text 202 303 Inlets (2);
+#X text 211 469 Outlets (1);
+#X obj 0 547 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 394 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 488 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 489 Inlet_0;
+#X text 5 395 Inlet_1;
+#X text 3 350 GRID;
+#X text 2 422 GRID;
+#X text 5 512 GRID;
+#X text 68 513 Outputs the modified data as a grid.;
+#X text 12 27 This object is useful for color correction. for each
+pixel it takes it apart \, looks up each part separately in the colormap
+and constructs a new pixel from that.;
+#X text 7 574 None;
+#X text 65 422 Colormap is a grid dim (2) (intensity channels);
+#X text 66 351 Accepts a grid that will be modified by the colormap
+;
+#X text 205 548 Arguments (0);
+#X obj 213 115 #for 0 256 1;
+#X obj 213 185 #outer gamma;
+#X msg 25 147 load bluemarble.jpg;
+#X obj 25 128 t b b;
+#X obj 289 141 #color 0 1024 1;
+#X msg 354 89 1024 512 256;
+#X obj 354 70 loadbang;
+#X obj 25 250 #apply_colormap_channelwise;
+#X obj 25 99 metro 100;
+#X obj 25 82 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
+#X text 357 124 vary this:;
+#X text 390 1 GridFlow 0.9.0;
+#X connect 0 0 32 0;
+#X connect 25 0 26 0;
+#X connect 26 0 32 1;
+#X connect 27 0 0 0;
+#X connect 28 0 27 0;
+#X connect 28 1 25 0;
+#X connect 29 0 26 1;
+#X connect 30 0 29 0;
+#X connect 31 0 30 0;
+#X connect 32 0 1 0;
+#X connect 33 0 28 0;
+#X connect 34 0 33 0;
diff --git a/externals/gridflow/doc/flow_classes/#background_model-help.pd b/externals/gridflow/doc/flow_classes/#background_model-help.pd
new file mode 100644
index 00000000..4ad9296b
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#background_model-help.pd
@@ -0,0 +1,43 @@
+#N canvas 328 52 499 470 10;
+#X obj 58 54 #camera;
+#X obj 58 0 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1 ;
+#X obj 194 112 tgl 15 0 empty empty binaryFlag 0 -6 0 8 -24198 -1 -1
+1 1;
+#X obj 126 93 tgl 15 0 empty empty addBackground 0 -6 0 8 -24198 -1
+-1 0 1;
+#X obj 266 102 hsl 128 15 0 700 0 0 empty empty outputThreshold -2
+-6 0 8 -260818 -1 -1 7100 1;
+#X obj 31 28 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X obj 58 333 #greyscale_to_rgb;
+#X text 72 265 Arguments : size of buffer \, columns \, rows \, channel
+;
+#X text 70 283 <-- output is a greyscale image;
+#X obj 58 358 #out window \, title backgroundModel;
+#X obj 58 384 fps detailed;
+#X obj 58 405 print;
+#X obj 160 230 #out window \, title variance;
+#X obj 263 184 #out window \, title Mean;
+#X obj 160 186 # << 2;
+#X obj 160 208 #clip;
+#X floatatom 280 125 5 0 0 0 - - -;
+#X obj 58 308 #clip;
+#X obj 58 24 metro 33.33;
+#X obj 58 158 #background_model 20 120 160 3;
+#X connect 0 0 19 0;
+#X connect 1 0 18 0;
+#X connect 2 0 19 2;
+#X connect 3 0 19 1;
+#X connect 4 0 16 0;
+#X connect 4 0 19 3;
+#X connect 5 0 0 0;
+#X connect 6 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 12 0;
+#X connect 17 0 6 0;
+#X connect 18 0 0 0;
+#X connect 19 0 17 0;
+#X connect 19 1 14 0;
+#X connect 19 2 13 0;
diff --git a/externals/gridflow/doc/flow_classes/#border-help.pd b/externals/gridflow/doc/flow_classes/#border-help.pd
new file mode 100644
index 00000000..3733b67e
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#border-help.pd
@@ -0,0 +1,57 @@
+#N canvas 597 51 505 631 10;
+#X obj 20 104 #in;
+#X obj 20 167 #out window;
+#X obj 2 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 389 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 203 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 226 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 216 391 Outlets (1);
+#X obj 2 486 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 211 485 Arguments (1);
+#X obj 2 279 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 410 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 3 227 Inlet 0;
+#X text 3 280 Inlet 1;
+#X text 3 411 Outlet 0;
+#X obj 19 137 cnv 15 185 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 16 0 #border;
+#X text 18 251 GRID;
+#X text 222 204 Inlets (3);
+#X obj 2 331 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 3 332 Inlet 2;
+#X text 15 28 Creates a black border around an image.;
+#X text 19 307 LIST;
+#X text 21 363 LIST;
+#X text 65 306 A list of three values in parentheses overides the argument.
+;
+#X text 65 362 A list of three values in parentheses overides the argument.
+;
+#X text 65 254 Receives an image.;
+#X msg 20 62 load working.jpg;
+#X text 16 513 GRID(3);
+#X text 16 533 GRID(3);
+#X text 77 513 top padding and left padding. defaults to (1 1 0).;
+#X text 77 533 bottom and right padding. defaults to (1 1 0).;
+#X obj 20 137 #border (5 10 0) (15 20 0);
+#X text 209 118 5 at the top;
+#X text 208 132 10 at the left;
+#X text 208 146 15 at the bottom;
+#X text 208 159 20 at the right;
+#X text 75 554 both arguments must have 3 elements. The third element
+is reserved for future use.;
+#X text 16 438 GRID;
+#X text 67 438 The original image surrounded by zero padding \, which
+usually means black pixels.;
+#X text 399 1 GridFlow 0.9.4;
+#X connect 0 0 31 0;
+#X connect 26 0 0 0;
+#X connect 31 0 1 0;
diff --git a/externals/gridflow/doc/flow_classes/#camera-help.pd b/externals/gridflow/doc/flow_classes/#camera-help.pd
new file mode 100644
index 00000000..3981fea9
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#camera-help.pd
@@ -0,0 +1,53 @@
+#N canvas 824 67 506 613 10;
+#X obj 50 216 #out window;
+#X obj 24 79 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X obj 50 79 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+;
+#X obj 50 242 fps detailed;
+#X obj 50 272 print;
+#X obj 50 105 metro 20;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 14 27 Is an abstraction that provides a preset for bttv cards
+as well as discrete controls of other cameras.;
+#X obj 1 446 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 363 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 386 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 387 Inlet_0;
+#X text 203 447 Outlets (1);
+#X obj 1 532 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 467 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 203 365 Inlets (1);
+#X text 0 468 Outlet_0;
+#X text 13 414 BANG;
+#X text 205 531 Arguments (0);
+#X text 73 493 Returns a grid from the video capture device for every
+bang.;
+#X text 13 493 GRID;
+#X obj 50 189 #scale_by;
+#X text 395 1 GridFlow 0.9.0;
+#X text 20 300 * for webcams \, please note that you need to have the
+pwc module loaded. The driver from http://www.saillard.org worked for
+the quickcam pro 4000;
+#X text 115 145 <-- open the abstraction and configure for your camera
+before sending it a bang.;
+#X obj 51 147 cnv 15 50 15 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 50 146 #camera;
+#X obj 11 0 #camera;
+#X text 13 563 INT;
+#X text 73 562 Corresponds to the video for linux device on you system
+(0-8);
+#X connect 0 0 3 0;
+#X connect 1 0 26 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 5 0 26 0;
+#X connect 21 0 0 0;
+#X connect 26 0 21 0;
diff --git a/externals/gridflow/doc/flow_classes/#cast-help.pd b/externals/gridflow/doc/flow_classes/#cast-help.pd
new file mode 100644
index 00000000..069e0dd1
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#cast-help.pd
@@ -0,0 +1,74 @@
+#N canvas 30 36 505 533 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 339 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 241 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 264 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 265 Inlet_0;
+#X text 203 340 Outlets (1);
+#X obj 1 443 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 205 442 Arguments (1);
+#X obj 1 360 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 14 219 #print;
+#X obj 14 199 cnv 15 93 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 14 199 #cast float64;
+#X obj 269 218 #print;
+#X obj 126 218 #print;
+#X obj 269 198 cnv 15 79 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 269 198 #cast uint8;
+#X obj 126 198 cnv 15 79 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 126 198 #cast int32;
+#X text 203 243 Inlets (1);
+#X text 16 295 GRID;
+#X floatatom 14 181 5 0 0 0 - - -;
+#X msg 126 177 9.8764 9 -32 0.3;
+#X obj 269 158 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 306 79 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 2.1416 256;
+#X obj 356 96 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 45 256;
+#X obj 306 154 #redim ( 2 2 );
+#X obj 269 177 #store;
+#X obj 306 133 #pack 3 float32;
+#X obj 14 161 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X text 73 472 Number types are: uint8 \, int16 \, int32 \, int64 \,
+float32 \, float64. see doc/architecture.html for more info.;
+#X obj 126 157 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X text 12 26 Changes an entity of one data type into another. Returns
+a grid of the same dimensions containing all the same values after
+type conversion. While casting to a smaller type \, overflowing values
+will be truncated.;
+#X text 75 388 Returns a grid of the same dimensions containing all
+the same values after type conversion.;
+#X obj 406 113 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-262144 -1 -1 45 256;
+#X text 0 361 Outlet_0;
+#X obj 11 0 #cast i;
+#X text 395 1 GridFlow 0.9.0;
+#X text 74 295 Any grid;
+#X text 16 389 GRID;
+#X connect 11 0 9 0;
+#X connect 15 0 12 0;
+#X connect 17 0 13 0;
+#X connect 20 0 11 0;
+#X connect 21 0 17 0;
+#X connect 22 0 26 0;
+#X connect 23 0 27 0;
+#X connect 24 0 27 1;
+#X connect 25 0 26 1;
+#X connect 26 0 15 0;
+#X connect 27 0 25 0;
+#X connect 28 0 20 0;
+#X connect 30 0 21 0;
+#X connect 33 0 27 2;
diff --git a/externals/gridflow/doc/flow_classes/#checkers-help.pd b/externals/gridflow/doc/flow_classes/#checkers-help.pd
new file mode 100644
index 00000000..3a32fc50
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#checkers-help.pd
@@ -0,0 +1,38 @@
+#N canvas 40 127 504 404 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 259 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 168 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 191 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 261 Outlets (1);
+#X obj 1 349 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 280 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 192 Inlet 0;
+#X text 2 281 Outlet 0;
+#X obj 10 0 #checkers;
+#X obj 156 63 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 156 85 #for (0 0) (128 128) (1 1);
+#X obj 156 132 #out window \, title checkers;
+#X text 221 169 Inlets (1);
+#X text 11 222 GRID;
+#X text 69 224 Receives a grid: [#for (0 0) (height width) (1 1)];
+#X obj 155 108 cnv 15 66 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 156 108 #checkers;
+#X text 9 310 GRID;
+#X text 74 308 Results in a checkered pattern of 50% / 75% greys in
+8 X 8 squares.;
+#X text 225 351 Arguments;
+#X text 10 375 NONE;
+#X text 12 22 Displays a grid with a pattern of checkered squares.
+;
+#X connect 11 0 12 0;
+#X connect 12 0 18 0;
+#X connect 18 0 13 0;
diff --git a/externals/gridflow/doc/flow_classes/#clip-help.pd b/externals/gridflow/doc/flow_classes/#clip-help.pd
new file mode 100644
index 00000000..32c16d10
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#clip-help.pd
@@ -0,0 +1,78 @@
+#N canvas 673 158 506 685 10;
+#X obj 51 163 #in;
+#X obj 51 189 # + 42;
+#X floatatom 88 166 5 0 0 0 - - -;
+#X obj 51 270 #out window;
+#X obj 51 114 t b b;
+#X obj 51 90 metro 100;
+#X obj 51 68 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
+#X floatatom 127 211 5 0 0 0 - - -;
+#X floatatom 87 211 5 0 0 0 - - -;
+#X text 6 25 The [#clip] object is used with numops in order to set
+a lower and upper range to pixel values. This allows you to avoid over
+saturating the colours of your grid.;
+#X obj 3 1 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 133 165 <-- vary this number;
+#X msg 81 138 open working.jpg;
+#X obj 2 300 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 326 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 382 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 50 235 cnv 15 78 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 64 349 Grid values are clipped to the high and low values stored
+in the object;
+#X text 2 409 INTEGER;
+#X text 5 328 Inlet 0;
+#X text 5 384 Inlet 1;
+#X text 204 302 Inlets (3);
+#X obj 3 439 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 441 Inlet 2;
+#X text 3 469 INTEGER;
+#X obj 1 570 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 203 572 Arguments (2);
+#X text 1 599 [#clip] accepts two integers as creation arguments that
+initialize the first values to be stored in the object. The first integer
+corresponds to the inlet 1 \, the second to inlet 2;
+#X obj 1 497 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 203 499 Outlets (1);
+#X obj 2 520 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 522 Outlet 0;
+#X text 3 350 GRID;
+#X text 4 543 GRID;
+#X text 63 543 Outputs the modified grid;
+#X obj 0 657 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 1 658 SEE ALSO:;
+#X obj 85 657 # min;
+#X obj 132 657 # max;
+#X obj 180 657 clip;
+#X text 227 656 #numop-help.pd;
+#X text 344 656 gf_tutorial_image_6.pd;
+#X text 402 2 GridFlow 0.9.0;
+#X obj 51 236 #clip 0 255;
+#X obj 3 0 #clip;
+#X text 139 231 <--if no creation argument is given the default range
+is 0-255.;
+#X text 69 408 An integer can be used to vary the minimum value of
+the range.;
+#X text 67 466 An integer can be used to vary the maximum value of
+the range.;
+#X connect 0 0 1 0;
+#X connect 1 0 43 0;
+#X connect 2 0 1 1;
+#X connect 4 0 0 0;
+#X connect 4 1 12 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 43 2;
+#X connect 8 0 43 1;
+#X connect 12 0 0 0;
+#X connect 43 0 3 0;
diff --git a/externals/gridflow/doc/flow_classes/#color-help.pd b/externals/gridflow/doc/flow_classes/#color-help.pd
new file mode 100644
index 00000000..71fb0404
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#color-help.pd
@@ -0,0 +1,84 @@
+#N canvas 526 103 502 591 10;
+#X obj 4 1 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 126 114 #color;
+#X text 5 0 [#color];
+#X obj 3 187 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 5 215 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 216 Inlet 0;
+#X obj 3 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 426 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 427 Outlet 0;
+#X obj 3 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 426 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 427 Outlet 0;
+#X obj 3 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 426 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 427 Outlet 0;
+#X obj 3 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 214 400 Outlets (1);
+#X obj 3 426 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 427 Outlet 0;
+#X text 308 126 <-- vary these;
+#X text 223 188 Inlets (1);
+#X text 3 243 GRID;
+#X text 3 285 MESSAGE;
+#X text 3 457 GRID;
+#X text 63 457 [#color] produces a three dimensional grid of RBG values
+;
+#X text 10 27 The [#color] object contains a triple slider for RGB
+value selection on each channel.;
+#X text 67 283 a message containing a list of three values between
+0 and 255 will asign each value to the corresponding position on each
+channel.;
+#X obj 2 487 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 487 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 487 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 487 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 214 400 Outlets (1);
+#X text 198 68 <-- click here;
+#X msg 126 68 255 0 204;
+#X text 69 243 [#color] accepts three dimensional grids and allows
+for colour value (RGB) changes on each channel;
+#X text 401 2 GridFlow 0.9.0;
+#X text 216 489 Arguments (3);
+#X text 5 510 LIST;
+#X text 62 510 lower bound \, upper bound \, 0 = (default) color preview
+\, 1 = absence of preview.;
+#X msg 317 79 delegate steady 0;
+#X text 67 325 "delegate" sends to the sliders that are part of [#color].
+ie. followed by a value between 0 and 255 will cause all the colour
+values on each channel to go to the value corresponding to that position.
+;
+#X obj 2 567 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 567 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 567 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 567 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 8 568 see also :;
+#X text 91 568 [hsl];
+#X connect 36 0 1 0;
+#X connect 42 0 1 0;
diff --git a/externals/gridflow/doc/flow_classes/#contrast-help.pd b/externals/gridflow/doc/flow_classes/#contrast-help.pd
new file mode 100644
index 00000000..6787cf74
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#contrast-help.pd
@@ -0,0 +1,76 @@
+#N canvas 0 29 503 602 10;
+#X obj 2 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 11 0 #contrast;
+#X obj 58 90 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X obj 78 138 metro 100;
+#X obj 78 117 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 203 136 hsl 128 15 0 256 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 352 137 hsl 128 15 0 256 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X floatatom 200 156 5 0 0 0 - - -;
+#X floatatom 349 159 5 0 0 0 - - -;
+#X msg 40 67 open bluemarble.jpg;
+#X obj 171 216 #out window;
+#X obj 40 164 #in;
+#X text 14 24 Adjusts the intensity of an image.;
+#X obj 1 566 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 260 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 283 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 568 Outlets (1);
+#X obj 1 665 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 353 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 587 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 284 Inlet 0;
+#X text 2 354 Inlet 1;
+#X text 2 588 Outlet 0;
+#X text 221 261 Inlets (3);
+#X obj 171 191 cnv 15 65 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 171 191 #contrast;
+#X obj 0 464 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 1 465 Inlet 2;
+#X text 26 316 GRID;
+#X text 79 317 Receives a grid.;
+#X text 4 388 INTEGER;
+#X text 5 494 INTEGER;
+#X text 72 495 This value corresponds to the master contrast \, it
+varies the amount of incoming white. The default value is 256 and it
+has no effect.;
+#X text 75 389 This value corresponds to the secondary contrast (inverse
+whiteness) \, it varies the amount of incoming black into the image.
+The default value is 256 and it has no effect.;
+#X text 24 616 GRID;
+#X text 75 617 The resulting grid is output.;
+#X text 210 664 Arguments;
+#X obj 2 723 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 95 721 #convolve;
+#X obj 165 721 #posterize;
+#X obj 242 721 #solarize;
+#X obj 312 721 #layer;
+#X text 14 721 see also:;
+#X text 24 693 NONE;
+#X text 399 1 GridFlow 0.9.4;
+#X text 347 120 contrast about black;
+#X text 197 120 contrast about white;
+#X connect 2 0 11 0;
+#X connect 3 0 11 0;
+#X connect 4 0 3 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 25 1;
+#X connect 8 0 25 2;
+#X connect 9 0 11 0;
+#X connect 11 0 25 0;
+#X connect 25 0 10 0;
diff --git a/externals/gridflow/doc/flow_classes/#convolve-help.pd b/externals/gridflow/doc/flow_classes/#convolve-help.pd
new file mode 100644
index 00000000..31cec7f1
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#convolve-help.pd
@@ -0,0 +1,73 @@
+#N canvas 412 35 508 791 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 607 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 296 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 319 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 609 Outlets (1);
+#X obj 1 688 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 687 Arguments (1);
+#X obj 0 484 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 628 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 320 Inlet 0;
+#X text 1 485 Inlet 1;
+#X text 221 297 Inlets (2);
+#X text 2 629 Outlet 0;
+#X obj 10 0 #convolve;
+#X obj 16 87 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X msg 228 135 1 1 1 1 1 1 1 1 1;
+#X obj 228 113 loadbang;
+#X text 27 718 here ^ is the parallel operator \, fold is indicated
+by + and 0 is its base.;
+#X obj 16 112 fork;
+#X obj 228 157 #redim (3 3);
+#X obj 16 158 #in;
+#X obj 16 241 #out window;
+#X obj 0 757 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 55 756 see also:;
+#X obj 126 760 #contrast;
+#X obj 195 760 #posterize;
+#X obj 271 760 #solarize;
+#X obj 340 760 #layer;
+#X obj 16 183 cnv 15 219 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 16 183 #convolve \, op ^ \, fold + \, seed 0;
+#X text 14 27 [#convolve] is used to perform various transformations
+on images such as blurring \, sharpening \, finding edges \, embossing
+\, cellular automata and many others.;
+#X text 29 346 GRID;
+#X text 28 660 GRID;
+#X text 23 512 GRID;
+#X text 70 514 This is the convolution grid and it gets stored in the
+other object. If rows2 and/or columns 2 are odd numbers \, then the
+centre of convolution is the middle of the convolution grid. If they
+are even numbers \, then the chosen centre will be slightly more to
+the left and/or to the top \, because the actual middle is between
+celle of the grid.;
+#X text 73 347 splits the incoming grid into dim(rest...) parts \,
+for each of those parts at (xy \, x). a rectangle of such parts \,
+centered around (y \, x) is combined with the convolution grid like
+a [#] of operation op_para. then each such result is folded like [#fold]
+of operation op_fold and specified base. the results are assembled
+into a grid that is sent to the outlet. near the borders of the grid
+\, coordinates wrap around. this means the whole grid has to be received
+before production of the next grid starts.;
+#X msg 39 135 open scissors.jpg;
+#X text 398 1 GridFlow 0.9.0;
+#X connect 14 0 18 0;
+#X connect 15 0 19 0;
+#X connect 16 0 15 0;
+#X connect 18 0 20 0;
+#X connect 18 1 36 0;
+#X connect 19 0 29 1;
+#X connect 20 0 29 0;
+#X connect 29 0 21 0;
+#X connect 36 0 20 0;
diff --git a/externals/gridflow/doc/flow_classes/#dim-help.pd b/externals/gridflow/doc/flow_classes/#dim-help.pd
new file mode 100644
index 00000000..e79ef2b7
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#dim-help.pd
@@ -0,0 +1,52 @@
+#N canvas 224 30 508 484 10;
+#X obj 4 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 291 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 5 214 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 5 237 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 238 Inlet_0;
+#X text 215 293 Outlets (1);
+#X obj 4 412 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 312 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 313 Inlet_0;
+#X obj 16 0 #dim;
+#X obj 29 87 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X obj 22 178 print number_of_dimensions;
+#X obj 22 106 #in;
+#X obj 22 130 cnv 15 30 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 22 130 #dim;
+#X obj 22 154 #export;
+#X msg 22 66 open working.jpg;
+#X text 207 216 Inlets (1);
+#X text 8 270 GRID;
+#X text 397 3 GridFlow 0.8.4;
+#X text 8 349 INTEGER;
+#X text 208 411 Arguments (none);
+#X text 15 37 Outputs grid dimensions (columns \, row \, channels).
+;
+#X obj 3 458 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 166 459 rubyprint;
+#X obj 236 459 printargs;
+#X obj 117 459 #print;
+#X obj 306 459 #export;
+#X obj 362 459 #export_list;
+#X text 25 460 see also:;
+#X text 70 270 Receives a grid \, ignores its content.;
+#X text 70 347 The received grid is output as a one dimensional grid
+representing grid dimensions. For example \, a grid sized like dim(240
+\, 320 \, 4) [#dim] will return a grid like dim(3) whose values are
+240 \, 320 \, 4;
+#X connect 10 0 12 0;
+#X connect 12 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 11 0;
+#X connect 16 0 12 0;
+#X connect 16 0 10 0;
diff --git a/externals/gridflow/doc/flow_classes/#downscale_by-help.pd b/externals/gridflow/doc/flow_classes/#downscale_by-help.pd
new file mode 100644
index 00000000..13252374
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#downscale_by-help.pd
@@ -0,0 +1,61 @@
+#N canvas 0 0 501 613 10;
+#X obj 181 115 metro 10;
+#X obj 181 96 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X floatatom 251 130 5 0 0 0 - - -;
+#X obj 165 144 #in;
+#X msg 165 70 open bluemarble.jpg \, bang;
+#X floatatom 295 143 5 0 0 0 - - -;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 461 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 258 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 281 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 463 Outlets (1);
+#X obj 1 539 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 538 Arguments (1);
+#X obj 1 342 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 482 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 282 Inlet 0;
+#X text 2 343 Inlet 1;
+#X text 221 259 Inlets (2);
+#X text 2 483 Outlet 0;
+#X obj 10 0 #dowscale_by;
+#X obj 251 162 #pack 2;
+#X obj 165 186 cnv 15 93 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 165 186 #downscale_by;
+#X obj 165 212 #out window;
+#X text 29 309 GRID;
+#X text 9 372 INTEGER;
+#X text 9 24 Scales down a picture by a specified amount.;
+#X text 79 311 Receives a grid.;
+#X obj 1 614 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 104 616 see also:;
+#X obj 180 615 #scale_to;
+#X obj 251 615 #scale_by;
+#X text 81 371 The value defines the scale factor. A pack object allows
+you to vary the horizontal and vertical values idenpendently. Inlet
+0 of [#pack] varies the image on a vertical axis \, inlet 1 of [#pack]
+varies the image on a horizontal axis.;
+#X text 26 512 GRID;
+#X text 82 512 Outputs the resulting grid.;
+#X text 10 571 INTEGER;
+#X text 78 572 The value downscales the image according to the specified
+value.;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 21 0;
+#X connect 3 0 23 0;
+#X connect 4 0 3 0;
+#X connect 5 0 21 1;
+#X connect 21 0 23 1;
+#X connect 23 0 24 0;
diff --git a/externals/gridflow/doc/flow_classes/#draw_image-help.pd b/externals/gridflow/doc/flow_classes/#draw_image-help.pd
new file mode 100644
index 00000000..962e5e78
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#draw_image-help.pd
@@ -0,0 +1,55 @@
+#N canvas 397 178 451 368 10;
+#X text 362 6 gridflow;
+#X obj 60 127 #in;
+#X obj 23 161 #store;
+#X obj 23 26 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 1 1
+;
+#X obj 23 54 metro 40;
+#X obj 23 237 #draw_image *>>8;
+#X obj 23 263 #out window \, title #draw_image-help;
+#X obj 60 79 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X text 16 7 #draw_image;
+#X obj 76 189 #in;
+#X obj 76 149 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X text 82 81 2 <-- open background image;
+#X text 99 151 1 <-- open foreground image;
+#X obj 275 218 #dim;
+#X obj 275 237 #export_list;
+#X obj 275 256 unpack f f;
+#X obj 281 275 pack f f;
+#X obj 281 294 # / 2;
+#X obj 256 294 # -;
+#X obj 23 287 #mouse;
+#X text 47 28 3 <-- activate rendering;
+#X msg 76 170 load g001.jpg;
+#X msg 60 100 load r001.jpg;
+#X msg 163 237 0 0;
+#X obj 163 218 loadbang;
+#X text 23 331 Move mouse cursor to change layer position;
+#X connect 1 0 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 22 0;
+#X connect 9 0 5 1;
+#X connect 9 0 13 0;
+#X connect 10 0 21 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 15 1 16 1;
+#X connect 16 0 17 0;
+#X connect 17 0 18 1;
+#X connect 18 0 5 2;
+#X connect 19 0 18 0;
+#X connect 19 1 18 0;
+#X connect 19 2 18 0;
+#X connect 19 3 18 0;
+#X connect 21 0 9 0;
+#X connect 22 0 1 0;
+#X connect 23 0 5 2;
+#X connect 24 0 23 0;
diff --git a/externals/gridflow/doc/flow_classes/#draw_points-help.pd b/externals/gridflow/doc/flow_classes/#draw_points-help.pd
new file mode 100644
index 00000000..279fdf14
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#draw_points-help.pd
@@ -0,0 +1,22 @@
+#N canvas 678 62 450 574 10;
+#X msg 21 103 240 320 3 #;
+#X obj 236 95 #outer + (0 9000);
+#X obj 236 114 # cos* 100;
+#X obj 236 133 # + 120;
+#X obj 236 57 #for 0 12 1;
+#X obj 236 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 236 76 # * 3000;
+#X obj 237 223 display;
+#X obj 21 123 #draw_points put (255 255 0);
+#X obj 21 143 #out window;
+#X text 26 17 [#draw_points] is not yet ready for use.;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 3 0 8 2;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 0;
+#X connect 8 0 9 0;
diff --git a/externals/gridflow/doc/flow_classes/#draw_polygon-help.pd b/externals/gridflow/doc/flow_classes/#draw_polygon-help.pd
new file mode 100644
index 00000000..3cdf6a5f
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#draw_polygon-help.pd
@@ -0,0 +1,83 @@
+#N canvas 586 235 634 404 10;
+#X text 16 7 #draw_polygon;
+#X obj 20 349 #out window;
+#X obj 383 128 #color;
+#X obj 383 72 loadbang;
+#X obj 272 107 # rand;
+#X obj 20 256 #clip;
+#X obj 385 199 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -241291
+-1 -1 0;
+#X text 402 200 fill;
+#X msg 385 265 draw \$1;
+#X obj 385 291 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -241291
+-1 -1 0;
+#X text 403 291 none;
+#X msg 385 357 omit \$1;
+#X text 403 306 last;
+#X text 403 320 odd;
+#X obj 385 338 listread none last odd;
+#X obj 20 237 #draw_polygon + 1;
+#X obj 20 37 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 0 1
+;
+#X obj 43 169 #checkers;
+#X obj 43 150 #for (0 0) (240 320) (1 1);
+#X obj 272 50 f;
+#X obj 297 50 + 1;
+#X obj 272 69 sel 0;
+#X obj 235 126 #store;
+#X obj 20 75 t b b b;
+#X msg 383 109 40 80 100;
+#X text 483 13 gridflow 0.9.4;
+#X obj 50 104 loadbang;
+#X obj 322 50 % 30;
+#X obj 235 164 #fade_lin 4 4;
+#X obj 20 56 metro 33.3667;
+#X obj 385 246 listread fill line point;
+#X text 402 214 line;
+#X text 402 228 point;
+#X msg 272 88 8 2 # 240 320;
+#X msg 459 110 3 # 255;
+#X msg 115 169 240 320 3 #;
+#X obj 6 188 #store;
+#X obj 27 151 bng 15 250 50 0 empty empty empty 17 7 0 10 -241291 -1
+-1;
+#X obj 20 287 shunt;
+#X obj 57 288 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0
+1;
+#X obj 50 306 #fade (16 4 1);
+#X connect 2 0 15 1;
+#X connect 3 0 34 0;
+#X connect 4 0 22 1;
+#X connect 5 0 38 0;
+#X connect 6 0 30 0;
+#X connect 8 0 15 0;
+#X connect 9 0 14 0;
+#X connect 11 0 15 0;
+#X connect 14 0 11 0;
+#X connect 15 0 5 0;
+#X connect 16 0 29 0;
+#X connect 17 0 36 1;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 19 0 21 0;
+#X connect 20 0 27 0;
+#X connect 21 0 33 0;
+#X connect 22 0 28 0;
+#X connect 23 0 36 0;
+#X connect 23 1 22 0;
+#X connect 23 2 19 0;
+#X connect 24 0 2 0;
+#X connect 26 0 35 0;
+#X connect 27 0 19 1;
+#X connect 28 0 15 2;
+#X connect 29 0 23 0;
+#X connect 30 0 8 0;
+#X connect 33 0 4 0;
+#X connect 34 0 2 0;
+#X connect 35 0 36 1;
+#X connect 36 0 15 0;
+#X connect 37 0 18 0;
+#X connect 38 0 1 0;
+#X connect 38 1 40 0;
+#X connect 39 0 38 1;
+#X connect 40 0 1 0;
diff --git a/externals/gridflow/doc/flow_classes/#draw_slider-help.pd b/externals/gridflow/doc/flow_classes/#draw_slider-help.pd
new file mode 100644
index 00000000..998110c6
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#draw_slider-help.pd
@@ -0,0 +1,53 @@
+#N canvas 516 122 624 690 10;
+#X obj 108 87 metro 100;
+#X obj 108 55 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 1 1
+;
+#X obj 108 262 #out window;
+#X obj 3 1 cnv 15 620 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 402 2 GridFlow 0.9.0;
+#X obj 2 300 cnv 15 620 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 326 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 382 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 64 349 Grid values are clipped to the high and low values stored
+in the object;
+#X text 2 409 INTEGER;
+#X text 5 328 Inlet 0;
+#X text 5 384 Inlet 1;
+#X text 204 302 Inlets (3);
+#X obj 3 439 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 441 Inlet 2;
+#X text 3 469 INTEGER;
+#X obj 1 497 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 203 499 Outlets (1);
+#X obj 2 520 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 522 Outlet 0;
+#X text 3 350 GRID;
+#X text 4 543 GRID;
+#X text 63 543 Outputs the modified grid;
+#X text 69 408 An integer can be used to vary the minimum value of
+the range.;
+#X text 67 466 An integer can be used to vary the maximum value of
+the range.;
+#X obj 108 116 #in scissors.jpg;
+#X obj 298 149 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -241291
+-1 -1 12700 1;
+#X text 6 25 Draws a vu metre-like rectangle on an image.;
+#X text 438 148 <-- value to be displayed;
+#X msg 206 195 255 200 150;
+#X text 289 195 <-- colour;
+#X obj 3 0 #draw_vumetre;
+#X obj 108 224 #draw_slider put (0 255 0) (255 0 255) (40 40 80 200)
+0 127;
+#X connect 0 0 25 0;
+#X connect 1 0 0 0;
+#X connect 25 0 32 0;
+#X connect 26 0 32 2;
+#X connect 29 0 32 1;
+#X connect 32 0 2 0;
diff --git a/externals/gridflow/doc/flow_classes/#fade-help.pd b/externals/gridflow/doc/flow_classes/#fade-help.pd
new file mode 100644
index 00000000..8aefa013
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#fade-help.pd
@@ -0,0 +1,71 @@
+#N canvas 68 0 507 631 10;
+#X obj 4 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 526 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 327 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 350 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 9 351 Inlet_0;
+#X text 206 329 Inlets (2);
+#X text 215 528 Outlets (1);
+#X obj 3 425 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 5 549 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 9 550 Inlet_0;
+#X text 8 426 Inlet_1;
+#X obj 14 0 #fade;
+#X obj 253 276 #out window;
+#X msg 140 155 open b001.jpg;
+#X obj 131 111 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 131 183 #in;
+#X obj 131 130 t b b;
+#X obj 227 205 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X floatatom 296 231 5 0 0 0 - - -;
+#X obj 131 89 metro 500;
+#X obj 131 70 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 253 113 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 253 185 #in;
+#X obj 253 132 t b b;
+#X msg 262 157 open r001.jpg;
+#X obj 253 91 metro 500;
+#X obj 253 72 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 9 25 Crossfade between two images.;
+#X obj 253 250 cnv 15 37 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 253 250 #fade;
+#X text 11 385 GRID;
+#X text 69 383 Accepts two grids that are blended into each other over
+time.;
+#X text 8 457 INTEGER;
+#X text 73 456 An integer in the rightmost inlet will indicate the
+amount of one image being blended with the other. (ex: Integer 5 will
+take 20% (one fifth) of the first image and blend it with 80% of the
+next image.;
+#X text 76 587 Outputs the fading images.;
+#X text 13 584 GRID;
+#X text 399 1 GridFlow 0.8.4;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 29 0;
+#X connect 16 0 15 0;
+#X connect 16 1 13 0;
+#X connect 17 0 29 0;
+#X connect 18 0 29 1;
+#X connect 19 0 14 0;
+#X connect 20 0 19 0;
+#X connect 21 0 23 0;
+#X connect 22 0 29 0;
+#X connect 23 0 22 0;
+#X connect 23 1 24 0;
+#X connect 24 0 22 0;
+#X connect 25 0 21 0;
+#X connect 26 0 25 0;
+#X connect 29 0 12 0;
diff --git a/externals/gridflow/doc/flow_classes/#fastblur-help.pd b/externals/gridflow/doc/flow_classes/#fastblur-help.pd
new file mode 100644
index 00000000..458d82ed
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#fastblur-help.pd
@@ -0,0 +1,69 @@
+#N canvas 310 131 669 377 10;
+#N canvas 0 0 450 300 test 0;
+#X obj 264 137 # +;
+#X obj 23 58 #for (0 0) (5 5) (1 1);
+#X obj 23 96 #fold & \, seed 1;
+#X obj 23 41 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 23 115 #convolve (3 3 # 1 2 3 4 5 6 7 8 9) \, wrap 0 \, anti
+0;
+#X obj 22 77 # == 2;
+#X obj 23 134 #print;
+#X obj 264 156 #print;
+#X connect 0 0 7 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X restore 453 27 pd test convolve attr;
+#X obj 20 53 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
+#X obj 38 54 metro 33.3667;
+#X obj 100 92 loadbang;
+#X obj 84 93 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 38 109 #store;
+#X obj 38 289 #out window;
+#X obj 39 329 display;
+#X obj 38 308 fps detailed;
+#X obj 84 109 #in teapot.png;
+#X obj 298 55 f;
+#X obj 324 55 + 1;
+#X obj 149 300 #pack;
+#X obj 38 84 t b b;
+#X obj 38 130 #fastblur;
+#X obj 305 95 expr 1+100*pow(sin($f1/25) \, 4);
+#X obj 294 75 expr 1+100*pow(sin($f1/20) \, 4);
+#X obj 150 166 vsl 15 128 1 128 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 170 166 vsl 15 128 1 128 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 298 36 spigot;
+#X obj 344 37 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1
+;
+#X obj 38 269 #gamma 700;
+#X text 363 37 AUTO;
+#X connect 1 0 2 0;
+#X connect 2 0 13 0;
+#X connect 3 0 9 0;
+#X connect 4 0 9 0;
+#X connect 5 0 14 0;
+#X connect 6 0 8 0;
+#X connect 8 0 7 0;
+#X connect 9 0 5 1;
+#X connect 10 0 11 0;
+#X connect 10 0 15 0;
+#X connect 10 0 16 0;
+#X connect 11 0 10 1;
+#X connect 12 0 14 1;
+#X connect 13 0 5 0;
+#X connect 13 1 19 0;
+#X connect 14 0 21 0;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 12 0;
+#X connect 18 0 12 1;
+#X connect 19 0 10 0;
+#X connect 20 0 19 1;
+#X connect 21 0 6 0;
diff --git a/externals/gridflow/doc/flow_classes/#fft-help.pd b/externals/gridflow/doc/flow_classes/#fft-help.pd
new file mode 100644
index 00000000..10a7f1d5
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#fft-help.pd
@@ -0,0 +1,43 @@
+#N canvas 653 283 450 341 10;
+#X obj 13 94 #cast f;
+#X obj 13 186 #cast i;
+#X obj 13 36 #in teapot.png;
+#X obj 32 14 loadbang;
+#X obj 13 15 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X obj 13 56 t a a;
+#X obj 13 262 @join 1;
+#X obj 13 148 #fft;
+#X msg 23 126 help;
+#X msg 63 126 skip \$1;
+#X obj 64 113 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1
+;
+#X obj 52 56 s orig;
+#X obj 66 262 r orig;
+#X obj 13 281 #out window;
+#X obj 13 224 # + 128;
+#X obj 13 243 #clip;
+#X obj 13 75 #outer * (1 0);
+#X obj 13 205 #inner (1 0);
+#X text 89 205 convert complex to real (kicking dummy imaginary);
+#X text 100 75 convert real to complex (introducing dummy imaginary=0)
+;
+#X obj 13 167 # / (f # 16);
+#X connect 0 0 7 0;
+#X connect 1 0 17 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 16 0;
+#X connect 5 1 11 0;
+#X connect 6 0 13 0;
+#X connect 7 0 20 0;
+#X connect 8 0 7 0;
+#X connect 9 0 7 0;
+#X connect 10 0 9 0;
+#X connect 12 0 6 1;
+#X connect 14 0 15 0;
+#X connect 15 0 6 0;
+#X connect 16 0 0 0;
+#X connect 17 0 14 0;
+#X connect 20 0 1 0;
diff --git a/externals/gridflow/doc/flow_classes/#finished-help.pd b/externals/gridflow/doc/flow_classes/#finished-help.pd
new file mode 100644
index 00000000..f28771ac
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#finished-help.pd
@@ -0,0 +1,15 @@
+#N canvas 551 311 442 238 10;
+#X text 22 53 a bang is emitted every time a grid transmission ends
+;
+#X obj 24 175 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X floatatom 24 80 5 0 0 0 - - -;
+#X floatatom 47 98 5 0 0 0 - - -;
+#X text 371 15 gridflow;
+#X obj 24 146 #finished;
+#X obj 24 117 #pack;
+#X text 21 22 #finished;
+#X connect 2 0 6 0;
+#X connect 3 0 6 1;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
diff --git a/externals/gridflow/doc/flow_classes/#fold-help.pd b/externals/gridflow/doc/flow_classes/#fold-help.pd
new file mode 100644
index 00000000..f11f9d82
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#fold-help.pd
@@ -0,0 +1,78 @@
+#N canvas 310 0 507 682 10;
+#X obj 1 1 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 5 419 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 328 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 351 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 204 421 Outlets (1);
+#X obj 4 503 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 5 440 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 464 GRID;
+#X text 393 2 GridFlow 0.8.4;
+#X text 8 352 Inlet 0;
+#X obj 4 532 cnv 15 80 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 8 533 Argument 0;
+#X obj 27 219 cnv 15 52 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 9 441 Outlet 0;
+#X obj 11 2 #fold +;
+#X obj 98 184 display;
+#X obj 29 252 display;
+#X text 26 38 Treats the grid as a grid of one- dimensional grids such
+that the same operation (here addition) will be performed on all its
+elements together with the base value. the results are combined back.
+each #fold operation removes a dimension. syntax: #fold <two-input
+operation> <starting value>;
+#X text 205 330 Inlets (1);
+#X obj 143 249 #export;
+#X obj 143 274 print values;
+#X text 4 378 GRID;
+#X text 6 651 some other forms:;
+#X obj 140 652 #fold *;
+#X text 200 504 Arguments ();
+#X obj 17 625 #fold + \, seed 0;
+#X obj 4 583 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 200 584 Attribute ();
+#X obj 211 652 #fold ^;
+#X obj 284 652 #fold &;
+#X obj 355 652 #fold |;
+#N canvas 0 0 450 300 more 0;
+#X obj 29 137 cnv 15 148 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 98 82 display;
+#X obj 28 48 #import (2 2 2);
+#X obj 29 170 display;
+#X msg 28 27 1 3 1 3 1 3 1 5;
+#X text 154 24 <-- clicking here creates a grid through [#import];
+#X obj 122 170 #export;
+#X obj 122 195 print values;
+#X obj 28 137 #fold + \, seed ( 0 0 );
+#X connect 2 0 1 0;
+#X connect 2 0 8 0;
+#X connect 4 0 2 0;
+#X connect 6 0 7 0;
+#X connect 8 0 3 0;
+#X connect 8 0 6 0;
+#X restore 160 624 pd more info;
+#X text 71 464 Outputs a grid of one less dimension.;
+#X text 69 377 Accepts a grid of a minimum of one dimension.;
+#X msg 28 129 1 3 1 3 1 3 1 3 1 3 1 5;
+#X obj 28 153 #import (2 3 2);
+#X obj 28 219 #fold +;
+#X text 203 129 <-- clicking here creates a grid through [#import]
+;
+#X text 6 556 Numeric Operator;
+#X text 131 555 guiding the application of the fold.;
+#X connect 19 0 20 0;
+#X connect 34 0 35 0;
+#X connect 35 0 15 0;
+#X connect 35 0 36 0;
+#X connect 36 0 16 0;
+#X connect 36 0 19 0;
diff --git a/externals/gridflow/doc/flow_classes/#for-help.pd b/externals/gridflow/doc/flow_classes/#for-help.pd
new file mode 100644
index 00000000..72513fbb
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#for-help.pd
@@ -0,0 +1,96 @@
+#N canvas 694 0 506 928 10;
+#X floatatom 13 227 5 0 0 0 - - -;
+#X floatatom 45 249 5 0 0 0 - - -;
+#X floatatom 78 270 5 0 0 0 - - -;
+#X obj 13 365 #print;
+#X obj 0 2 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 10 659 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 8 415 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 8 438 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 219 661 Outlets (1);
+#X obj 9 757 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 8 512 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 10 680 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 15 704 GRID;
+#X obj 7 3 #for 0 320 1;
+#X obj 33 332 display;
+#X text 210 417 Inlets (3);
+#X text 213 758 Arguments (3);
+#X obj 9 586 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 14 587 Inlet 2;
+#X text 13 514 Inlet 1;
+#X text 13 439 Inlet 0;
+#X obj 9 786 cnv 15 80 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 13 787 Argument 0;
+#X obj 8 852 cnv 15 80 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 8 908 cnv 15 80 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 12 853 Argument 1;
+#X text 12 909 Argument 2;
+#X obj 15 297 cnv 15 70 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 119 270 <-- step value;
+#X text 90 247 <-- upper bound;
+#X text 60 224 <-- lower bound;
+#X obj 13 297 #for 0 8 1;
+#X obj 264 364 #print;
+#X obj 284 334 display;
+#X obj 266 303 cnv 15 70 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X msg 264 228 0 0;
+#X msg 329 276 1 1;
+#X obj 264 303 #for 0 8 1;
+#X msg 296 253 4 4;
+#X text 11 814 INTEGER;
+#X text 11 875 INTEGER;
+#X text 11 935 INTEGER;
+#X text 14 681 Outlet 0;
+#X text 105 875 Upper bound;
+#X text 106 935 Step value;
+#X text 106 815 Lower bound. As with the other arguments \, they are
+overwritten when another value is given.;
+#X text 11 488 LIST;
+#X text 374 276 <-- step value (1);
+#X text 343 252 <-- upper bound (2);
+#X text 309 227 <-- lower bound (3);
+#X text 26 38 When given scalar bounds \, works like a regular [for]
+object plugged to a [#import] tuned for a Dim(size) where size is the
+number of values produced by a bang to that [for].;
+#X text 26 84 When given vector bounds \, will work like any number
+of [for] objects producing all possible combinations of their values
+in the proper order.;
+#X text 35 193 scalar bounds;
+#X text 303 196 vector bounds;
+#X text 9 465 INTEGER;
+#X text 74 466 Sets the lower bound;
+#X text 11 558 LIST;
+#X text 9 535 INTEGER;
+#X text 74 536 Sets the upper bound;
+#X text 11 634 LIST;
+#X text 9 611 INTEGER;
+#X text 74 612 Sets the step value;
+#X text 76 707 The result of the operation is a single dimension grid
+in the case of scalar values and variable dimensions for vectors.;
+#X text 27 137 Syntax: #for <from> <to> <step> outlet: grid dim(size)
+where size = floor(to-from+1)/step.;
+#X text 391 3 GridFlow 0.9.0;
+#X connect 0 0 31 0;
+#X connect 1 0 31 1;
+#X connect 2 0 31 2;
+#X connect 31 0 14 0;
+#X connect 31 0 3 0;
+#X connect 35 0 37 0;
+#X connect 36 0 37 2;
+#X connect 37 0 33 0;
+#X connect 37 0 32 0;
+#X connect 38 0 37 1;
diff --git a/externals/gridflow/doc/flow_classes/#grade-help.pd b/externals/gridflow/doc/flow_classes/#grade-help.pd
new file mode 100644
index 00000000..b5972f3b
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#grade-help.pd
@@ -0,0 +1,20 @@
+#N canvas 375 101 649 221 10;
+#X text 143 15 splits a dim[a... \, b] grid into dim[b] vectors that
+each contain numbers from 0 to b-1 indicating the ordering of the values.
+the result is a dim[a... \, b] grid.;
+#X floatatom 19 74 5 0 0 0 - - -;
+#X floatatom 60 74 5 0 0 0 - - -;
+#X floatatom 101 74 5 0 0 0 - - -;
+#X floatatom 142 74 5 0 0 0 - - -;
+#X text 585 14 gridflow;
+#X text 146 175 (behaves unstable in 0.7.0);
+#X obj 19 106 #pack 4;
+#X obj 19 139 #grade;
+#X obj 19 168 #print;
+#X text 14 15 #grade;
+#X connect 1 0 7 0;
+#X connect 2 0 7 1;
+#X connect 3 0 7 2;
+#X connect 4 0 7 3;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
diff --git a/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-help.pd b/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-help.pd
new file mode 100644
index 00000000..7f60c43d
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-help.pd
@@ -0,0 +1,15 @@
+#N canvas 119 122 433 374 10;
+#X obj 19 161 s xx;
+#X obj 19 185 r xx;
+#X text 353 13 gridflow;
+#X obj 19 105 #in;
+#X obj 19 141 #rgb_to_greyscale;
+#X obj 19 205 #greyscale_to_rgb;
+#X obj 19 263 #out window;
+#X msg 19 74 load bluemarble.jpg;
+#X text 24 5 #greyscale_to_rgb;
+#X connect 1 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 7 0 3 0;
diff --git a/externals/gridflow/doc/flow_classes/#import-help.pd b/externals/gridflow/doc/flow_classes/#import-help.pd
new file mode 100644
index 00000000..9eaba934
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#import-help.pd
@@ -0,0 +1,87 @@
+#N canvas 997 26 505 766 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 602 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 222 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 245 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 604 Outlets (1);
+#X obj 1 700 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 699 Arguments (1);
+#X obj 1 623 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 246 Inlet 0;
+#X text 2 624 Outlet 0;
+#X msg 55 123 reset;
+#X obj 13 59 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X msg 13 123 200;
+#X obj 13 100 until;
+#X msg 13 79 230400;
+#X obj 13 177 #out window;
+#X obj 13 149 cnv 15 129 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 7 728 GRID;
+#X text 74 727 The argument establishes grid dimensions in parentheses
+in the order of columns \, rows and grid dimensions.;
+#X obj 13 149 #import ( 240 320 3 );
+#X text 4 274 INTEGER;
+#X text 5 338 SYMBOL;
+#X text 76 337 Symbols are considered as a list of ascii characters.
+;
+#X text 7 364 LIST;
+#X text 76 363 Like a sequence of ints sent one after another \, except
+in a single message.;
+#X text 7 399 MESSAGE;
+#X text 76 396 "reset" aborts the current grid if there is one.;
+#X text 6 451 GRID;
+#X obj 1 508 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 509 Inlet 1;
+#X text 8 651 GRID;
+#X text 80 651 The grid resulting from the incoming integers and/or
+grids is output from the outlet.;
+#X text 99 24 This object allows you to produce grids from non-grid
+data \, such as integers and lists of integers. This object also reframes/resyncs
+grids so that multiple grids may be joined together \, or single grids
+may be split. That kind of operation is already done implicitly in
+many cases (e.g. sending an integer or list to a grid-receiving inlet)
+but using this object you have greater flexibility on the conversion.
+;
+#X text 77 451 This equivalent to filtering the grid through an [#export]
+object. It is over ten times faster.;
+#X msg 157 125 per_message;
+#X msg 158 147 240 320 3;
+#X text 75 274 Begins a new grid if there is no current grid. puts
+that integer in the current grid. ends the grid if it is full. the
+constructed grid is not stored: it is streamed. the stream is buffered
+\, so the output is in packets of about a thousand numbers.;
+#X text 7 540 MESSAGE;
+#X text 81 539 "per message" : the grid will shape itself according
+to the incoming data. Almost obsolete as sending a list to any grid
+inlet will result in the same except the latter can not be cast to
+other than int32.;
+#X text 7 423 MESSAGE;
+#X text 74 422 "to_ascii \$1" converts ints as decimal in ascii codes
+;
+#X text 215 222 Inlets (2);
+#X obj 294 166 #import;
+#X msg 294 144 to_ascii \$1;
+#X floatatom 294 124 5 0 0 0 - - -;
+#X obj 294 188 #print;
+#X text 398 1 GridFlow 0.9.3;
+#X obj 12 0 #import;
+#X connect 10 0 19 0;
+#X connect 11 0 14 0;
+#X connect 12 0 19 0;
+#X connect 13 0 12 0;
+#X connect 14 0 13 0;
+#X connect 19 0 15 0;
+#X connect 34 0 19 1;
+#X connect 35 0 19 1;
+#X connect 42 0 45 0;
+#X connect 43 0 42 0;
+#X connect 44 0 43 0;
diff --git a/externals/gridflow/doc/flow_classes/#import_pix-help.pd b/externals/gridflow/doc/flow_classes/#import_pix-help.pd
new file mode 100644
index 00000000..1d817b7a
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#import_pix-help.pd
@@ -0,0 +1,116 @@
+#N canvas 751 44 507 754 10;
+#X obj -40 -45 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 357 -44 GridFlow 0.9.3;
+#X obj -41 683 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 683 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 683 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 683 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -35 682 see also :;
+#X obj -41 357 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 385 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -40 386 Inlet 0;
+#X obj -41 485 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 513 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -40 512 Outlet 0;
+#X obj -41 485 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 513 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -40 512 Outlet 0;
+#X obj -41 485 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 513 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -40 512 Outlet 0;
+#X obj -41 485 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 170 485 Outlets (1);
+#X obj -41 513 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -40 512 Outlet 0;
+#X obj -41 485 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 485 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 485 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 170 485 Outlets (1);
+#X obj -42 632 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -42 632 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -42 632 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -42 632 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -41 571 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 102 681 \, game_of_life_gem.pd in the examples folder;
+#X text -33 534 GRID;
+#X text -36 593 gemlist;
+#X text 47 534 Grid with 4 channels;
+#X text 172 631 Arguments (0);
+#X text -37 434 yflip;
+#X text 41 435 With one boolean argument that selects the order in
+which the y dimension of the Grid will be read \, defaults to '1';
+#X text -39 -46 [#import_pix];
+#X text 48 681 [#to_pix];
+#X obj -28 251 #import_pix;
+#X obj -13 176 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0
+1;
+#X msg -13 195 yflip \$1;
+#X msg -6 217 help;
+#X obj -28 -11 gemhead;
+#X obj -28 147 pix_image;
+#N canvas 0 0 450 300 openpanel 0;
+#X obj 114 62 inlet;
+#X obj 121 254 outlet;
+#X obj 114 125 openpanel;
+#X msg 114 162 set open \$1;
+#X obj 114 199 t b a;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 1 0;
+#X restore -10 64 pd openpanel;
+#X msg -10 85 open /home/alx/Documents/src/pd-0.40-2/extra/svn_GridFlow/trunk/images/babbage.jpg
+;
+#X obj -10 42 bng 15 250 50 0 empty empty empty 17 7 0 10 -4034 -1
+-1;
+#X msg 341 5 create \, 1;
+#X obj 341 -14 loadbang;
+#X msg 405 6 destroy;
+#X text 12 40 <-- load image;
+#X obj -28 293 #out window \, title imported_pix;
+#X text -13 328 Note : The fps is dependent on the gemwin framerate
+;
+#X obj 341 34 gemwin 30;
+#X text -38 404 gemlist;
+#X text 50 251 <-- imports gemlist into Grids;
+#X text 40 404 Has to be a 'pix' gemlist;
+#X text 175 357 Inlet (1);
+#X text 36 537;
+#X text -38 572 Outlet 1;
+#X text 43 593 Passthrough outlet for gem chain;
+#X connect 41 0 54 0;
+#X connect 42 0 43 0;
+#X connect 43 0 41 0;
+#X connect 44 0 41 0;
+#X connect 45 0 46 0;
+#X connect 46 0 41 0;
+#X connect 47 0 48 0;
+#X connect 48 0 46 0;
+#X connect 49 0 47 0;
+#X connect 50 0 56 0;
+#X connect 51 0 50 0;
+#X connect 52 0 56 0;
diff --git a/externals/gridflow/doc/flow_classes/#in-help.pd b/externals/gridflow/doc/flow_classes/#in-help.pd
new file mode 100644
index 00000000..f2f9a610
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#in-help.pd
@@ -0,0 +1,226 @@
+#N canvas 172 0 512 689 10;
+#X obj 354 172 #out window;
+#X obj 7 9 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 17 10 #in;
+#X text 13 34 This object imports a grid \, usually an image \, video
+or live stream.;
+#X msg 362 126 open working.jpg;
+#X obj 354 106 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X text 55 181 <--click here;
+#X obj 8 352 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 13 353 Inlet_0;
+#X text 79 379 A bang sends a grid to [#out]. Since frames from videos
+and live streams are read as a series of individual grids \, successive
+bangs advance through the frames.;
+#X text 77 466 "set" - followed by a number will select the corresponding
+video frame. A bang must be sent to [#in] in order to display the frame.
+;
+#X text 77 512 "close" - Closes the video input device. Only necessary
+when you are using a live capture device.;
+#X text 76 546 "rewind" - Will rewind video to the beginning.;
+#X text 76 600 "loop 0" - turns off the loop option. The video stops
+once it reaches the end.;
+#X text 81 862 Signals the end of a file and when a file is unreadable.
+;
+#X obj 8 789 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 9 790 Outlet_0;
+#X text 82 814 Displays the resulting grid when connected to [#out
+window];
+#X obj 10 839 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 840 Outlet_1;
+#X text 81 892 Displays the frame number of the frame currently being
+viewed. Applies to formats that have frame numbers \, i.e. video.;
+#X obj 7 328 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 201 329 Inlets (1);
+#N canvas 82 93 663 454 quicktime 0;
+#X text 9 9 The following messages can be used to set parameters for
+video (.mov) files.;
+#X text 128 283 different versions of LibQuickTime may include support
+for different codecs \, and some may also support entirely different
+wrapper formats such as AVI.;
+#X text 129 367 Codecs must be set before first frame is written.;
+#X text 128 330 QuickTime library for Macintosh: Apple QuickTime (some
+codecs/features may not be available).;
+#X obj 9 272 cnv 15 24 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X msg 38 230 codec jpg;
+#X msg 23 116 framerate 33;
+#X msg 33 203 colorspace rgb;
+#X msg 18 78 size 400 600;
+#X obj 10 272 #in;
+#X text 145 117 Number of frames per second.;
+#X msg 32 171 parameter jpeg_quality 85;
+#X text 187 147 Determines window size when reading a video file.;
+#X text 129 230 quicktime library for linux accepts LibQuickTime (libquicktime.so).
+codecs currently available are: Raw \, jpeg \, png \, mipa \, yuv2
+\, yuv4.;
+#X text 134 84 Sets height and width. Must be set before setting the
+codec parameters and after setting framerate and codec.;
+#X text 107 230 <--;
+#X text 108 80 <--;
+#X text 119 118 <--;
+#X text 108 80 <--;
+#X text 108 80 <--;
+#X text 162 147 <--;
+#X text 212 173 <--;
+#X text 139 206 <--;
+#X text 237 174 Sets compression quality (100 being the highest quality
+\, but a large file. 75-85 is the standard setting).;
+#X text 163 209 Other colorspaces include rgba \, bgr \, bgra \, yuv
+\, yuva.;
+#X msg 10 54 open example.mov;
+#X msg 28 145 force_size 480 640;
+#X obj 103 427 #record;
+#X text 15 427 see also :;
+#X connect 5 0 9 0;
+#X connect 6 0 9 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
+#X connect 11 0 9 0;
+#X connect 25 0 9 0;
+#X connect 26 0 9 0;
+#X restore 145 688 pd quicktime file messages;
+#X obj 353 151 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 354 151 #in;
+#X obj 15 228 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X floatatom 202 195 5 0 0 0 - - -;
+#X msg 202 151 set 2;
+#X msg 202 107 loop 0;
+#X msg 202 129 loop 1;
+#X floatatom 32 285 5 0 0 0 - - -;
+#X msg 202 173 rewind;
+#X obj 41 267 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 16 228 #in;
+#X text 39 98 <--click here;
+#X obj 17 96 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
+#X obj 17 120 metro 33.3;
+#X obj 355 255 cnv 15 101 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 356 234 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 356 280 #out window;
+#X obj 356 255 #in sewing.jpg;
+#X text 378 234 <--click here;
+#X text 77 671 For info about messages specifically for quickTime files
+\, click on:;
+#N canvas 150 0 874 560 more 0;
+#X msg 191 388 open videodev \$1 \, get;
+#X msg 52 147 brightness 1000;
+#X msg 41 124 hue 1000;
+#X msg 26 101 color 1000;
+#X msg 65 171 contrast 1000;
+#X msg 14 78 whiteness 1000;
+#X msg 80 264 channel 2;
+#X msg 80 294 tuner 2;
+#X msg 81 324 norm 2;
+#X msg 81 352 frequency 2;
+#X msg 190 456 transfer mmap 4;
+#X msg 191 356 transfer read;
+#X msg 190 434 colorspace RGB24;
+#X msg 191 411 size 400 600;
+#X obj 14 441 #in;
+#X obj 192 172 #contrast;
+#X text 166 172 or;
+#X text 306 411 Sets height and width of the input.;
+#X text 322 488 In the case of mmap \, the extra numeric argument sets
+the queue length in number of frames \, so you can select an appropriate
+tradeoff between efficiency and latency.;
+#X text 16 12 Grid Settings;
+#X text 322 457 This is the standard and fastest way to receive pictures
+from the camera.;
+#X text 121 99 Message "get brightness" or "get" followed by any of
+the other colour attributes will display its values in the console.
+;
+#X text 375 390 Opens video device.;
+#X text 331 435 Supported values are RGB24 or YUV420P.;
+#X text 14 48 Color Adjustments;
+#X text 144 75 Values from 0 to 65535;
+#X text 283 412 <--;
+#X text 309 435 <--;
+#X text 345 390 <--;
+#X text 300 456 <--;
+#X text 287 357 <--;
+#X text 310 357 Some cameras/drivers only support "transfer read" and
+not mmap.;
+#X text 6 520 see also :;
+#X obj 92 520 #camera;
+#X connect 0 0 14 0;
+#X connect 1 0 14 0;
+#X connect 2 0 14 0;
+#X connect 3 0 14 0;
+#X connect 4 0 14 0;
+#X connect 5 0 14 0;
+#X connect 6 0 14 0;
+#X connect 7 0 14 0;
+#X connect 8 0 14 0;
+#X connect 9 0 14 0;
+#X connect 10 0 14 0;
+#X connect 11 0 14 0;
+#X connect 12 0 14 0;
+#X connect 13 0 14 0;
+#X restore 145 649 pd more info about video devices;
+#X text 77 632 For info about messages specifically for video devices
+\, click on:;
+#X text 8 813 GRID;
+#X text 10 863 BANG;
+#X text 9 890 INTEGER;
+#X text 7 962 FILE NAME;
+#X text 9 381 GRID;
+#X text 9 433 MESSAGE;
+#X text 8 727 INTEGER;
+#X text 169 213 (and turn off the metro);
+#X text 244 195 <-- vary this;
+#X obj 7 765 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 197 766 Outlets (2);
+#X text 197 766 Outlets (2);
+#X obj 8 943 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 195 944 Arguments;
+#X text 352 74 IMAGE FILES:;
+#X text 12 72 VIDEO FILES:;
+#X obj 28 183 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X text 380 106 <-- click here;
+#X text 68 265 <-- sends a bang upon reaching;
+#X text 97 278 the end of the file;
+#X obj 16 305 #out window \, title video;
+#X text 90 962 Including the file name of a grid into the [#in] object
+eliminates the need for an "open" message but limits the action to
+one specified grid.;
+#X text 77 432 "open" - followed by the filename \, sends it as a resource
+to [#out]. For example: "open sewing.jpg".;
+#X text 77 727 Outputs the frame that corresponds to the value. Applies
+to formats that have frame numbers \, i.e. video.;
+#X text 76 566 "loop 1" - Restarts a video each time it reaches the
+end (default setting).;
+#X obj 41 248 route bang;
+#X msg 24 147 open violoncelle.mov;
+#X text 402 10 GridFlow 0.9.1;
+#X connect 4 0 25 0;
+#X connect 5 0 25 0;
+#X connect 25 0 0 0;
+#X connect 27 0 34 0;
+#X connect 28 0 34 0;
+#X connect 29 0 34 0;
+#X connect 30 0 34 0;
+#X connect 32 0 34 0;
+#X connect 34 0 66 0;
+#X connect 34 1 31 0;
+#X connect 34 1 71 0;
+#X connect 36 0 37 0;
+#X connect 37 0 34 0;
+#X connect 39 0 41 0;
+#X connect 41 0 40 0;
+#X connect 62 0 34 0;
+#X connect 71 0 33 0;
+#X connect 72 0 34 0;
diff --git a/externals/gridflow/doc/flow_classes/#layer-help.pd b/externals/gridflow/doc/flow_classes/#layer-help.pd
new file mode 100644
index 00000000..1ba4a977
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#layer-help.pd
@@ -0,0 +1,28 @@
+#N canvas 297 445 656 323 10;
+#X text 208 121 opacity channel file;
+#X text 51 95 foreground file;
+#X text 438 96 background file;
+#X text 579 14 gridflow;
+#X text 206 209 a picture that has an opacity level will be used as
+foreground vs a picture that has no opacity channel. the output is
+a picture that has no opacity channel;
+#X msg 234 69 load b001.jpg;
+#X obj 211 96 #in;
+#X obj 237 96 #rgb_to_greyscale;
+#X obj 406 96 #in;
+#X msg 429 71 load g001.jpg;
+#X msg 41 71 load r001.jpg;
+#X obj 18 96 #in;
+#X obj 18 208 #layer;
+#X obj 18 161 @join -1;
+#X obj 18 269 #out window;
+#X text 14 5 #layer;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 13 1;
+#X connect 8 0 12 1;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 0;
diff --git a/externals/gridflow/doc/flow_classes/#line_to_polygon-help.pd b/externals/gridflow/doc/flow_classes/#line_to_polygon-help.pd
new file mode 100644
index 00000000..8eb85df3
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#line_to_polygon-help.pd
@@ -0,0 +1,12 @@
+#N canvas 184 260 450 300 10;
+#X obj 51 156 #draw_polygon put (255 255 255);
+#X obj 51 175 #out window;
+#X msg 51 137 240 320 3 #;
+#X obj 279 165 display;
+#X msg 263 118 2 2 # 10 10 229 309;
+#X obj 263 137 #line_to_polygon 4;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 0 2;
+#X connect 5 0 3 0;
diff --git a/externals/gridflow/doc/flow_classes/#moment-help.pd b/externals/gridflow/doc/flow_classes/#moment-help.pd
new file mode 100644
index 00000000..0fbe0306
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#moment-help.pd
@@ -0,0 +1,131 @@
+#N canvas 576 46 644 643 10;
+#X obj 19 24 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
+#X msg 234 28 4 2 # 1 1 1 -1 -1 -1 -1 1;
+#X obj 111 208 display;
+#X obj 43 238 display;
+#X obj 234 66 #rotate;
+#X obj 288 56 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-241291 -1 -1 -1831 256;
+#X obj 288 72 * 100;
+#X obj 18 587 #out window;
+#X obj 67 161 #t;
+#X obj 110 187 #moment;
+#X msg 41 85 240 320 1 #;
+#X obj 41 104 #draw_polygon put (1 # 255);
+#X obj 426 103 #pack;
+#X obj 234 85 # +;
+#X obj 456 87 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-241291 -1 -1 -45 256;
+#X obj 426 71 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-241291 -1 -1 12 256;
+#X obj 426 52 #pack;
+#X obj 456 36 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-241291 -1 -1 32 256;
+#X obj 426 20 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-241291 -1 -1 49 256;
+#X obj 234 47 # *;
+#X obj 245 123 # inv+;
+#X obj 245 104 # +;
+#X obj 426 154 #pack;
+#X obj 456 138 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-241291 -1 -1 149 256;
+#X obj 426 122 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10
+-241291 -1 -1 128 256;
+#X obj 41 123 #draw_polygon put (1 # 255);
+#X text 162 550 red filter;
+#X text 121 85 draw rectangles;
+#X text 238 11 rectangle polygon;
+#X obj 42 186 #moment 2;
+#X obj 269 172 #moment_polar;
+#X obj 356 192 display;
+#X obj 270 212 display;
+#X obj 5 61 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X text 141 309 this is a fudge factor.;
+#X obj 18 606 fps;
+#X floatatom 18 625 5 0 0 0 - - -;
+#X text 143 321 depending on what you want to do \,;
+#X text 140 333 you set it to 2 \, 3 \, 4 \, whatever.;
+#X obj 402 364 #outer + (9000 0);
+#X obj 523 429 #transpose;
+#X obj 20 60 t b b b;
+#X obj 402 540 # + (120 160);
+#X obj 63 340 cv.SVD;
+#X obj 63 302 #cast f;
+#X obj 63 399 #inner \, seed (f #);
+#X obj 402 402 #cast f;
+#X obj 402 459 #inner \, seed (f #);
+#X obj 402 507 #cast i;
+#X obj 63 378 #swap;
+#X obj 402 326 #for 0 160 1;
+#X obj 63 359 # sqrt (f #);
+#X obj 63 321 # * (f # 3);
+#X obj 402 479 # / (f # 1000);
+#X obj 402 383 # cos* 1000;
+#X obj 402 345 # * 225;
+#X obj 18 549 #inner (1 3 # 1 0 0);
+#X obj 18 568 #draw_polygon + (0 255 255) (2 2 #);
+#X obj 19 41 metro 20;
+#X obj 18 144 #t;
+#X connect 0 0 58 0;
+#X connect 1 0 19 0;
+#X connect 4 0 13 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 1;
+#X connect 7 0 35 0;
+#X connect 8 0 29 0;
+#X connect 8 1 9 0;
+#X connect 9 0 2 0;
+#X connect 9 0 29 1;
+#X connect 9 0 42 1;
+#X connect 10 0 11 0;
+#X connect 11 0 25 0;
+#X connect 12 0 13 1;
+#X connect 13 0 21 0;
+#X connect 13 0 20 0;
+#X connect 14 0 12 1;
+#X connect 15 0 12 0;
+#X connect 16 0 19 1;
+#X connect 17 0 16 1;
+#X connect 18 0 16 0;
+#X connect 19 0 4 0;
+#X connect 20 0 25 2;
+#X connect 21 0 11 2;
+#X connect 22 0 21 1;
+#X connect 22 0 20 1;
+#X connect 23 0 22 1;
+#X connect 24 0 22 0;
+#X connect 25 0 59 0;
+#X connect 29 0 3 0;
+#X connect 29 0 30 0;
+#X connect 29 0 44 0;
+#X connect 30 0 32 0;
+#X connect 30 1 31 0;
+#X connect 33 0 41 0;
+#X connect 35 0 36 0;
+#X connect 39 0 54 0;
+#X connect 40 0 47 1;
+#X connect 41 0 50 0;
+#X connect 41 1 10 0;
+#X connect 41 2 1 0;
+#X connect 42 0 57 2;
+#X connect 43 0 51 0;
+#X connect 43 1 49 1;
+#X connect 44 0 52 0;
+#X connect 45 0 40 0;
+#X connect 46 0 47 0;
+#X connect 47 0 53 0;
+#X connect 48 0 42 0;
+#X connect 49 0 45 0;
+#X connect 49 1 45 1;
+#X connect 50 0 55 0;
+#X connect 51 0 49 0;
+#X connect 52 0 43 0;
+#X connect 53 0 48 0;
+#X connect 54 0 46 0;
+#X connect 55 0 39 0;
+#X connect 56 0 57 0;
+#X connect 57 0 7 0;
+#X connect 58 0 41 0;
+#X connect 59 0 56 0;
+#X connect 59 1 8 0;
diff --git a/externals/gridflow/doc/flow_classes/#moment_polar-help.pd b/externals/gridflow/doc/flow_classes/#moment_polar-help.pd
new file mode 100644
index 00000000..ea9ba995
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#moment_polar-help.pd
@@ -0,0 +1,11 @@
+#N canvas 387 219 527 300 10;
+#X obj 37 167 #moment-help;
+#X obj 40 30 #moment_polar;
+#X text 48 50 inlet 0: covariance matrix \, from [#moment 2] or compatible.
+;
+#X text 112 65 must be a 2x2 symmetric matrix.;
+#X text 48 92 outlet 0: angle (only makes sense with a 2x2 matrix)
+as int;
+#X text 48 112 outlet 1: radiuses (from biggest to smallest) as float
+grid;
+#X text 30 151 please open this other help patch for a demo:;
diff --git a/externals/gridflow/doc/flow_classes/#motion_detection-help.pd b/externals/gridflow/doc/flow_classes/#motion_detection-help.pd
new file mode 100644
index 00000000..15658a8b
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#motion_detection-help.pd
@@ -0,0 +1,44 @@
+#N canvas 1267 0 485 405 10;
+#X obj 47 40 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
+#X obj 47 342 print;
+#X obj 47 319 fps detailed;
+#X obj 47 68 metro 33.3667;
+#X obj 47 92 #camera;
+#X obj 96 159 vradio 15 1 0 2 empty empty empty 0 -6 0 8 -241291 -1
+-1 0;
+#X text 115 159 motion;
+#X text 116 173 presence;
+#X obj 0 1 cnv 15 620 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 13 14 Copyright 2002 Mathieu Bouchard;
+#X floatatom 223 264 7 0 0 0 - - -;
+#X obj 47 295 #out window;
+#X obj 209 195 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0
+1;
+#X obj 74 130 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -260818
+-1 -1 0 1;
+#X text 208 129 reduce the noise in the image;
+#X obj 156 264 nbx 5 14 -1e+37 1e+37 0 0 empty empty y -10 4 0 10 -24198
+-1 -1 138 256;
+#X obj 85 264 nbx 5 14 -1e+37 1e+37 0 0 empty empty x -10 4 0 10 -24198
+-1 -1 116 256;
+#X text 13 0 help_motion_detection.pd;
+#X obj 47 210 #motion_detection;
+#X text 279 263 total amount of change;
+#X text 227 195 scary militaristic crosshair;
+#X obj 177 169 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0
+1;
+#X text 195 169 fade;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 18 0;
+#X connect 5 0 18 2;
+#X connect 11 0 2 0;
+#X connect 12 0 18 4;
+#X connect 13 0 18 1;
+#X connect 18 0 11 0;
+#X connect 18 1 16 0;
+#X connect 18 2 15 0;
+#X connect 18 3 10 0;
+#X connect 21 0 18 3;
diff --git a/externals/gridflow/doc/flow_classes/#mouse-help.pd b/externals/gridflow/doc/flow_classes/#mouse-help.pd
new file mode 100644
index 00000000..a0a57bad
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#mouse-help.pd
@@ -0,0 +1,55 @@
+#N canvas 215 0 776 547 10;
+#X msg 147 123 setcursor 32;
+#X text 49 22 How to get the mouse coordinates and hide / change the
+cursor?;
+#X msg 128 100 hidecursor;
+#X text 273 98 <-- removes the cursor;
+#X text 307 120 <-- accepts 0 - 63;
+#X obj 206 168 print xy_clicked;
+#X obj 207 214 print xy_unclicked;
+#X obj 107 341 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 127 341 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 147 341 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X floatatom 178 359 5 0 0 0 - - -;
+#X obj 178 333 +;
+#X obj 210 333 t a;
+#X obj 207 238 print xy_moved;
+#X obj 206 190 print xy_dragged;
+#X obj 380 376 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 400 376 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 420 376 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 380 431 @export_list;
+#X obj 440 352 loadbang;
+#X text 281 332 select buttons to be considered in click/drag/unclick
+;
+#X obj 110 165 #out window;
+#X obj 110 267 #mouse \, ...;
+#X obj 380 402 #pack 3;
+#X connect 0 0 21 0;
+#X connect 2 0 21 0;
+#X connect 11 0 12 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 1;
+#X connect 15 0 23 0;
+#X connect 16 0 23 1;
+#X connect 17 0 23 2;
+#X connect 18 0 22 1;
+#X connect 19 0 15 0;
+#X connect 19 0 16 0;
+#X connect 19 0 17 0;
+#X connect 21 0 22 0;
+#X connect 22 0 5 0;
+#X connect 22 1 14 0;
+#X connect 22 2 6 0;
+#X connect 22 3 13 0;
+#X connect 22 4 7 0;
+#X connect 22 5 8 0;
+#X connect 22 6 9 0;
+#X connect 22 7 11 0;
+#X connect 23 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#numop-help.pd b/externals/gridflow/doc/flow_classes/#numop-help.pd
new file mode 100644
index 00000000..6c5caec0
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#numop-help.pd
@@ -0,0 +1,365 @@
+#N canvas 106 82 735 448 10;
+#X obj 278 136 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 410 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X obj 8 8 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 278 222 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 267 46 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 270 45 Arguments:;
+#X obj 268 292 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 271 292 Outlets:;
+#X obj 8 46 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 11 46 Usage:;
+#X obj 8 67 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 104 cnv 15 250 300 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 266 355 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 269 355 More Info:;
+#X text 281 136 0: (Leftmost);
+#X text 281 222 1: (Rightmost);
+#X text 12 8 SUMMARY:;
+#X text 73 8 Transforms a grid by applying mathematical operations
+in order to generate effects on a pixel by pixel basis.;
+#X obj 109 76 # +;
+#X floatatom 31 234 5 0 0 0 - - -;
+#X obj 42 288 display;
+#X obj 15 149 #color;
+#X msg 15 116 255 0 0;
+#X obj 15 331 #color;
+#X text 281 74 One - see: inlet 1: (Rightmost);
+#X obj 267 101 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 270 101 Inlets: (Read left to right \, inlet "0" being the
+leftmost);
+#X text 283 313 One - outputs the transformed grid.;
+#X text 16 417 GridFlow 0.8.0;
+#X obj 15 258 # +;
+#X text 292 242 Integer - Accepts integers that modify the incoming
+grid.;
+#N canvas 15 0 912 644 numop 1;
+#X text 76 366 A + B;
+#X text 77 510 A * B;
+#X text 73 571 rounded towards zero;
+#X text 14 73 angles are in hundredth of degrees \, so a full circle
+(two pi radians) is 36000 you can convert from radians to our angles
+by multiplying by 18000/pi.;
+#X text 13 44 for all of these \, A refers to the left inlet and B
+to the value on the right.;
+#X text 15 27 Consult doc/architecture.html to see all the 40 of them.
+;
+#X text 902 31 GridFlow 0.8.0;
+#X obj 479 70 #color;
+#X obj 684 72 #color;
+#X msg 15 366 op +;
+#X msg 15 507 op *;
+#X obj 15 385 s op;
+#X obj 423 155 r op;
+#X obj 15 526 s op;
+#X obj 15 436 s op;
+#X text 77 421 A - B;
+#X msg 15 417 op -;
+#X obj 15 761 s op;
+#X msg 15 742 op %;
+#X text 69 743 A % B;
+#X obj 15 575 s op;
+#X msg 15 556 op /;
+#X text 79 557 A / B;
+#X obj 14 809 s op;
+#X text 83 790 B % A;
+#X text 15 14 Numeric Operators: *whoa \, there's a lot of them;
+#X obj 16 482 s op;
+#X msg 16 463 op inv+;
+#X text 79 464 B -A;
+#X obj 15 623 s op;
+#X text 79 605 A / B;
+#X msg 15 604 op div;
+#X text 75 621 rounded downwards;
+#X obj 15 668 s op;
+#X msg 15 649 op inv*;
+#X text 80 650 B / A;
+#X text 77 665 rounded towards 0;
+#X obj 15 712 s op;
+#X text 76 714 rounded downwards;
+#X text 101 695 B / A;
+#X text 68 760 modulo (goes with div);
+#X text 65 809 modulo (goes with div);
+#X msg 14 790 op swap%;
+#X obj 15 286 s op;
+#X obj 15 334 s op;
+#X msg 15 267 op ignore;
+#X text 90 268 A;
+#X msg 15 315 op put;
+#X text 76 315 B;
+#X msg 15 693 op swapdiv;
+#X obj 237 286 s op;
+#X msg 237 267 op rem;
+#X text 315 263 A % B;
+#X obj 236 338 s op;
+#X text 330 319 B % A;
+#X text 314 278 remainder;
+#X text 314 293 (goes with /);
+#X msg 236 319 op swaprem;
+#X text 327 333 remainder;
+#X text 326 348 (goes with /);
+#X obj 236 388 s op;
+#X obj 236 435 s op;
+#X msg 236 369 op gcd;
+#X msg 236 416 op lcm;
+#X text 298 373 greatest common divisor;
+#X text 298 420 least common multiple;
+#X obj 235 481 s op;
+#X text 299 464 A or B \, bitwise;
+#X msg 235 462 op;
+#X obj 235 525 s op;
+#X text 299 508 A xor B \, bitwise;
+#X msg 235 506 op ^;
+#X obj 235 578 s op;
+#X msg 235 559 op &;
+#X text 300 561 A and B \, bitwise;
+#X obj 235 623 s op;
+#X msg 235 604 op <<;
+#X text 300 606 A * (2**(B % 32);
+#X text 299 621 left-shifthing;
+#X obj 235 669 s op;
+#X msg 235 649 op >>;
+#X text 299 666 right-shifthing;
+#X text 300 652 A / (2**(B % 32);
+#X obj 218 463 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X obj 235 714 s op;
+#X msg 235 695 op;
+#X obj 218 695 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X text 299 697 if A is zero then;
+#X text 300 711 B else A;
+#X obj 235 758 s op;
+#X text 299 741 if A is zero then;
+#X msg 235 739 op &&;
+#X text 300 755 zero else B;
+#X obj 236 807 s op;
+#X msg 236 788 op min;
+#X text 300 789 the lowest value;
+#X text 301 804 in A \, B;
+#X obj 500 287 s op;
+#X msg 500 267 op max;
+#X text 556 284 in A \, B;
+#X text 557 268 the highest value;
+#X obj 500 333 s op;
+#X msg 500 313 op cmp;
+#X text 551 310 -1 when A<B;
+#X text 558 338 1 when A>B;
+#X text 558 324 0 when A=B;
+#X obj 500 386 s op;
+#X msg 500 366 op ==;
+#X text 557 367 is A equal to B ?;
+#X text 556 385 1 = true \, 0 = false;
+#X obj 500 433 s op;
+#X msg 500 413 op !=;
+#X text 557 414 is A not equal to B ?;
+#X obj 500 477 s op;
+#X msg 500 456 op >;
+#X text 557 457 is A greater than B ?;
+#X obj 500 523 s op;
+#X msg 500 502 op <=;
+#X text 557 503 is A not greater than B ?;
+#X obj 500 572 s op;
+#X msg 500 551 op <;
+#X text 557 552 is A less than B ?;
+#X obj 500 618 s op;
+#X msg 500 597 op >=;
+#X text 557 598 is A not less than B ?;
+#X obj 500 666 s op;
+#X msg 500 645 op sin*;
+#X text 559 646 B * sin(A);
+#X obj 500 713 s op;
+#X msg 500 691 op cos*;
+#X text 560 693 B * cos(A);
+#X obj 500 758 s op;
+#X msg 500 736 op atan;
+#X text 560 737 arctan(A/B);
+#X obj 499 805 s op;
+#X msg 499 783 op tan*;
+#X text 559 784 tanh(A);
+#X obj 738 288 s op;
+#X msg 738 268 op log*;
+#X text 795 269 B*log(A);
+#X text 794 286 in base e;
+#X obj 738 334 s op;
+#X msg 738 314 op gamma;
+#X text 809 314 floor(pow(a/256.0 \, 256.0/b)*256.0);
+#X obj 737 385 s op;
+#X msg 737 366 op **;
+#X text 799 368 A**B;
+#X text 799 385 A raised to power B;
+#X obj 737 431 s op;
+#X msg 737 412 op abs-;
+#X text 799 412 absolute value of (A-B);
+#X obj 737 478 s op;
+#X msg 737 459 op rand;
+#X text 800 473 number below A;
+#X text 799 458 randomly produces a non-negative;
+#X obj 737 524 s op;
+#X msg 737 505 op sqrt;
+#X text 799 504 square root of A;
+#X text 800 519 rounded downwards;
+#X obj 737 566 s op;
+#X msg 737 547 op sq-;
+#X text 800 546 (A-B) times (A-B);
+#X obj 740 614 s op;
+#X obj 723 595 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 740 595 op clip+;
+#X text 808 595 A+B but output is clipped;
+#X obj 740 660 s op;
+#X obj 723 641 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 740 641 op clip-;
+#X text 808 641 A-B but output is clipped;
+#X obj 740 706 s op;
+#X obj 740 750 s op;
+#X text 808 687 (A+B)/2;
+#X msg 740 687 op avg;
+#X msg 740 731 op hypot;
+#X text 808 731 square root of (A*A+B*B);
+#X obj 740 792 s op;
+#X obj 723 773 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X msg 740 773 op erf;
+#X text 807 773 integral of e^(-x*x)dx;
+#N canvas 8 30 615 351 all_operators 0;
+#X obj 174 99 # -;
+#X obj 522 97 # swap%;
+#X obj 186 177 # abs-;
+#X obj 238 177 # rand;
+#X obj 342 177 # sq-;
+#X obj 290 177 # sqrt;
+#X obj 144 99 # +;
+#X obj 492 97 # %;
+#X obj 260 99 # *;
+#X obj 289 99 # /;
+#X obj 206 99 # inv+;
+#X obj 321 99 # div;
+#X obj 367 98 # inv*;
+#X obj 420 98 # swapdiv;
+#X obj 35 99 # ignore;
+#X obj 100 100 # put;
+#X obj 35 125 # rem;
+#X obj 78 125 # swaprem;
+#X obj 149 125 # gcd;
+#X obj 191 125 # lcm;
+#X obj 234 125 # |;
+#X obj 234 125 # |;
+#X obj 263 125 # ^;
+#X obj 293 125 # &;
+#X obj 322 125 # <<;
+#X obj 358 125 # >>;
+#X obj 394 125 # ||;
+#X obj 431 125 # &&;
+#X obj 467 125 # min;
+#X obj 35 151 # max;
+#X obj 79 151 # cmp;
+#X obj 124 151 # ==;
+#X obj 162 151 # !=;
+#X obj 199 151 # >;
+#X obj 234 151 # <=;
+#X obj 274 151 # <;
+#X obj 304 152 # >=;
+#X obj 341 152 # sin*;
+#X obj 391 152 # cos*;
+#X obj 442 152 # atan;
+#X obj 493 152 # tanh*;
+#X obj 35 177 # log*;
+#X obj 87 177 # gamma;
+#X obj 148 177 # **;
+#X obj 388 177 # avg;
+#X obj 433 177 # hypot;
+#X restore 15 174 pd all_operators;
+#X text 585 31 select values below;
+#X text 14 233 select an operator below;
+#X text 478 51 A;
+#X text 683 53 B;
+#X obj 479 182 # +;
+#X obj 257 196 #color;
+#X obj 297 162 #reverse;
+#X obj 443 215 display;
+#X obj 656 197 #unpack 3;
+#X floatatom 605 244 5 0 0 0 - - -;
+#X obj 642 150 t a a;
+#X obj 597 191 display;
+#X connect 7 0 185 0;
+#X connect 7 0 187 0;
+#X connect 7 0 191 0;
+#X connect 8 0 185 1;
+#X connect 9 0 11 0;
+#X connect 10 0 13 0;
+#X connect 12 0 185 0;
+#X connect 16 0 14 0;
+#X connect 18 0 17 0;
+#X connect 21 0 20 0;
+#X connect 27 0 26 0;
+#X connect 31 0 29 0;
+#X connect 34 0 33 0;
+#X connect 42 0 23 0;
+#X connect 45 0 43 0;
+#X connect 47 0 44 0;
+#X connect 49 0 37 0;
+#X connect 51 0 50 0;
+#X connect 57 0 53 0;
+#X connect 62 0 60 0;
+#X connect 63 0 61 0;
+#X connect 68 0 66 0;
+#X connect 71 0 69 0;
+#X connect 73 0 72 0;
+#X connect 76 0 75 0;
+#X connect 80 0 79 0;
+#X connect 85 0 84 0;
+#X connect 91 0 89 0;
+#X connect 94 0 93 0;
+#X connect 98 0 97 0;
+#X connect 102 0 101 0;
+#X connect 107 0 106 0;
+#X connect 111 0 110 0;
+#X connect 114 0 113 0;
+#X connect 117 0 116 0;
+#X connect 120 0 119 0;
+#X connect 123 0 122 0;
+#X connect 126 0 125 0;
+#X connect 129 0 128 0;
+#X connect 132 0 131 0;
+#X connect 135 0 134 0;
+#X connect 138 0 137 0;
+#X connect 142 0 141 0;
+#X connect 145 0 144 0;
+#X connect 149 0 148 0;
+#X connect 152 0 151 0;
+#X connect 156 0 155 0;
+#X connect 160 0 159 0;
+#X connect 164 0 162 0;
+#X connect 168 0 166 0;
+#X connect 173 0 170 0;
+#X connect 174 0 171 0;
+#X connect 178 0 176 0;
+#X connect 187 0 186 0;
+#X connect 187 0 188 0;
+#X connect 189 0 190 0;
+#X connect 191 0 192 0;
+#X connect 191 1 189 0;
+#X restore 265 380 pd numop;
+#X text 290 157 Grid - Accepts a grid to be modified by an operator
+consistent with the right inlet value (list of operators in [pd numop]).
+In this example [# +] is used.;
+#X text 72 234 <-- change this value to modify the operation.;
+#X text 193 154 <--modify color with sliders.;
+#X connect 19 0 29 1;
+#X connect 21 0 29 0;
+#X connect 22 0 21 0;
+#X connect 29 0 20 0;
+#X connect 29 0 23 0;
diff --git a/externals/gridflow/doc/flow_classes/#out-help.pd b/externals/gridflow/doc/flow_classes/#out-help.pd
new file mode 100644
index 00000000..13fb52d4
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#out-help.pd
@@ -0,0 +1,159 @@
+#N canvas 512 0 624 877 10;
+#X obj 4 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 13 296 cnv 15 185 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 6 677 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 372 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 395 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 678 Outlets (1);
+#X obj 6 766 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 765 Arguments (1);
+#X obj 6 698 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 13 1 #out;
+#X obj 15 326 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 10 71 Displaying a grid:;
+#X text 342 73 Saving a grid:;
+#X text 6 456 MESSAGE;
+#X text 8 424 GRID;
+#X text 7 493 MESSAGE;
+#X text 8 569 MESSAGE;
+#X text 75 569 "rewind" rewinds to the beginning of a video file. Will
+overwrite previous data.;
+#X text 79 606 "timelog 1" will display (in the console) the current
+time and the time since the last frame. Message "timelog 0" will hide
+this information. The default is "timelog 0".;
+#X text 8 603 MESSAGE;
+#X text 206 374 Inlets (1);
+#X text 31 794 window [#out window] opens a window in which the grid
+will be displayed.;
+#X text 7 732 BANG;
+#X msg 45 150 open working.jpg;
+#X obj 15 100 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 15 221 #in;
+#X msg 66 229 open window;
+#X msg 65 252 close;
+#X text 75 493 "close" closes the file and hides the display \, must
+be accompanied by message "open window" to reopen the display.;
+#X text 9 396 Inlet 0;
+#X text 7 700 Outlet 0;
+#X text 75 732 A bang notifies when a complete grid has been received.
+;
+#N canvas 140 137 570 631 More 0;
+#X obj 35 266 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 1
+;
+#X text 203 143 open default display for screenshot;
+#X msg 82 197 open videodev /dev/video0;
+#X text 277 196 open a video device;
+#X msg 187 388 open x11 here;
+#X msg 158 337 open x11 local 10;
+#X text 116 287 show/hide timing statistics;
+#X text 298 390 connect to default display;
+#X text 297 338 connect to display #10 on this machine;
+#X msg 65 313 open x11 remote.host.bla.net 0;
+#X text 297 315 connect to remote machine on display #0;
+#X text 202 114 open an image file;
+#X msg 242 437 close;
+#X msg 83 142 open x11 here;
+#X msg 200 413 open window;
+#X text 299 413 opens a window x11 \, quartz or sdl;
+#X msg 35 288 timelog \$1;
+#X text 37 502 An incoming file is sent through the opened device/socket/file.
+In single file format \, a subsequent picture overwrite the preceeding
+one. There are many more options. for more information see the reference
+manual in the "formats" and "objects for input/output" sections.;
+#X obj 23 223 cnv 15 23 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 23 223 #in;
+#X obj 23 480 cnv 15 30 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 5 13 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 14 14 #out;
+#X obj 23 480 #out;
+#X msg 53 114 open sewing.jpg;
+#X obj 23 72 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X obj 23 93 t b b;
+#X msg 83 170 open lsd.mov;
+#X text 203 169 open a quicktime video;
+#X obj 97 74 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 165 363 open save_here.jpg;
+#X text 298 362 select file to write to in jpg format;
+#X text 39 579 Message "open" followed by the format of the specific
+grid opens a grid (usually an image) to then be displayed or saved
+by [#out].;
+#X text 14 36 #out communicating grids (images) to/from devices \,
+sockets \, files;
+#X connect 0 0 16 0;
+#X connect 2 0 19 0;
+#X connect 4 0 23 0;
+#X connect 5 0 23 0;
+#X connect 9 0 23 0;
+#X connect 12 0 23 0;
+#X connect 13 0 19 0;
+#X connect 14 0 23 0;
+#X connect 16 0 23 0;
+#X connect 19 0 23 0;
+#X connect 24 0 19 0;
+#X connect 25 0 26 0;
+#X connect 26 0 19 0;
+#X connect 26 1 24 0;
+#X connect 27 0 19 0;
+#X connect 29 0 19 0;
+#X connect 30 0 23 0;
+#X restore 140 334 pd More info about this object;
+#X text 77 426 Receives a grid.;
+#X text 398 0 GridFlow 0.9.0;
+#X text 12 32 Displays or saves an incoming grid (usually an image
+or a video).;
+#X obj 15 296 #out window \, title example;
+#X msg 207 145 open sewing.jpg;
+#X obj 15 126 t b b;
+#X obj 177 121 t b b;
+#X obj 177 97 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 96 846 #record;
+#X msg 366 228 open somefile.jpg;
+#X text 9 845 see also :;
+#X text 73 451 "open filename.format" (ex: "open somefile.jpg") sets
+the filename to write to.;
+#X msg 381 144 open sewing.jpg;
+#X obj 351 120 t b b;
+#X obj 351 96 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 351 190 #in;
+#X obj 351 267 cnv 15 30 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 351 266 #out;
+#X msg 127 262 hidecursor;
+#X text 205 261 <-- linux only;
+#X text 7 533 MESSAGE;
+#X text 75 533 "hidecursor" (linux only) hides the mouse cursor.;
+#X connect 23 0 25 0;
+#X connect 24 0 38 0;
+#X connect 25 0 36 0;
+#X connect 26 0 36 0;
+#X connect 27 0 36 0;
+#X connect 36 0 10 0;
+#X connect 37 0 25 0;
+#X connect 38 0 25 0;
+#X connect 38 1 23 0;
+#X connect 39 0 25 0;
+#X connect 39 1 37 0;
+#X connect 40 0 39 0;
+#X connect 42 0 50 0;
+#X connect 45 0 48 0;
+#X connect 46 0 48 0;
+#X connect 46 1 45 0;
+#X connect 47 0 46 0;
+#X connect 48 0 50 0;
+#X connect 51 0 36 0;
diff --git a/externals/gridflow/doc/flow_classes/#outer-help.pd b/externals/gridflow/doc/flow_classes/#outer-help.pd
new file mode 100644
index 00000000..72361cdd
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#outer-help.pd
@@ -0,0 +1,70 @@
+#N canvas 23 44 613 383 10;
+#X obj 19 39 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X obj 19 130 spigot;
+#X obj 100 130 spigot;
+#X obj 67 130 == 0;
+#X obj 67 39 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 1
+;
+#X text 171 178 @outer does the same two-input operation between every
+possible pair of the left-side grid and the right side grid. @inner
+treats both input grids like @fold does \, then does a @outer on the
+other dimensions \, such that every two-input operation is like a @fold.
+this is a very powerful operation that can be used to do rotations
+\, rgb->yuv \, color conversions \, etc.;
+#X text 88 40 select pattern;
+#X text 17 296 combine channelless picture with gamma factors (r \,
+g \, b);
+#X obj 19 89 until;
+#X msg 19 68 128;
+#X obj 60 89 float 1;
+#X obj 115 89 + 1;
+#X obj 171 90 until;
+#X obj 212 90 float 1;
+#X obj 267 90 + 1;
+#X msg 171 69 4;
+#X text 665 16 gridflow;
+#X text 8 328 see also:;
+#X obj 19 277 @out window;
+#X text 18 10 #outer;
+#X obj 129 333 @join;
+#X obj 171 333 #finished;
+#X obj 76 333 #scan +;
+#X obj 241 333 #cast;
+#X obj 283 333 #ravel;
+#X obj 331 333 #grade;
+#X obj 380 333 #perspective;
+#X obj 171 111 #import (3);
+#X obj 171 132 # * 128;
+#X obj 19 109 #import (128);
+#X obj 19 162 #outer +;
+#X obj 100 161 #outer ^;
+#X obj 100 181 # * 2;
+#X obj 19 255 #outer gamma;
+#X connect 0 0 9 0;
+#X connect 0 0 15 0;
+#X connect 1 0 30 0;
+#X connect 1 0 30 1;
+#X connect 2 0 31 0;
+#X connect 2 0 31 1;
+#X connect 3 0 2 1;
+#X connect 4 0 1 1;
+#X connect 4 0 3 0;
+#X connect 8 0 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 10 0 29 0;
+#X connect 11 0 10 1;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 0 27 0;
+#X connect 14 0 13 1;
+#X connect 15 0 12 0;
+#X connect 27 0 28 0;
+#X connect 28 0 33 1;
+#X connect 29 0 1 0;
+#X connect 29 0 2 0;
+#X connect 30 0 33 0;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#pack-help.pd b/externals/gridflow/doc/flow_classes/#pack-help.pd
new file mode 100644
index 00000000..c11d22d0
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#pack-help.pd
@@ -0,0 +1,44 @@
+#N canvas 379 12 503 503 10;
+#X obj 2 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 340 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 260 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 283 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 203 342 Outlets (1);
+#X obj 2 429 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 361 cnv 15 65 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 12 1 #pack;
+#X obj 23 178 #color;
+#X floatatom 85 77 5 0 0 0 - - -;
+#X floatatom 107 96 5 0 0 0 - - -;
+#X floatatom 129 115 5 0 0 0 - - -;
+#X text 14 28 Creates a one dimentional grid (Dim(N) vector) from individual
+integers.;
+#X text 6 459 INTEGER;
+#X text 73 459 An integer defines the number of inlets and the amount
+of grid dimensions.;
+#X text 204 262 Inlets (n);
+#X text 4 316 INTEGER;
+#X text 10 395 GRID;
+#X obj 263 180 display;
+#X text 162 90 <--click and drag to place numbers in the grid.;
+#X obj 85 135 cnv 15 51 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 85 135 #pack 3;
+#X text 76 315 Accepts integers.;
+#X text 72 392 Outputs values from each individual inlet into a grid.
+;
+#X text 5 284 Inlet All;
+#X text 6 362 Outlet 0;
+#X text 204 430 Arguments;
+#X text 395 1 GridFlow 0.9.0;
+#X connect 9 0 21 0;
+#X connect 10 0 21 1;
+#X connect 11 0 21 2;
+#X connect 21 0 8 0;
+#X connect 21 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd b/externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd
new file mode 100644
index 00000000..87fa2694
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#pack_and_#unpack-help.pd
@@ -0,0 +1,85 @@
+#N canvas 109 540 736 659 10;
+#X obj 268 124 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X obj 278 148 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 641 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X obj 7 5 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 268 43 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 271 43 Arguments:;
+#X obj 268 267 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 271 267 Outlets:;
+#X obj 8 43 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 11 43 Usage:;
+#X obj 8 63 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 100 cnv 15 250 200 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 271 124 Inlets: (Read left to right \, inlet "0" being the
+leftmost);
+#X obj 80 71 #pack;
+#X text 11 5 SUMMARY:;
+#X text 76 5 Creates a one dimentional grid (Dim(N) vector) from individual
+integers.;
+#X obj 30 222 #color;
+#X floatatom 30 114 5 0 0 0 - - -;
+#X floatatom 52 142 5 0 0 0 - - -;
+#X floatatom 74 170 5 0 0 0 - - -;
+#X obj 30 196 #pack 3;
+#X text 283 63 One - [integer] defines the number of inlets and the
+amount of grid dimensions.;
+#X text 289 175 Integer - accepts multiple integers as defined by the
+argument and creates a vector.;
+#X text 283 287 One - outputs values from each individual inlet.;
+#X obj 270 483 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X obj 281 503 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 7 335 cnv 15 720 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 268 373 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 271 373 Arguments:;
+#X obj 268 595 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 271 595 Outlets:;
+#X obj 8 373 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 11 373 Usage:;
+#X obj 8 393 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 430 cnv 15 250 200 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 273 482 Inlets: (Read left to right \, inlet "0" being the
+leftmost);
+#X text 11 335 SUMMARY:;
+#X obj 79 400 #unpack;
+#X obj 30 518 #unpack 3;
+#X obj 30 451 #color;
+#X floatatom 30 601 5 0 0 0 - - -;
+#X floatatom 59 574 5 0 0 0 - - -;
+#X floatatom 88 549 5 0 0 0 - - -;
+#X text 283 393 One - [integer] defines the number of outlets and the
+amount of grid dimensions.;
+#X text 281 148 All:;
+#X text 283 503 All:;
+#X text 284 529 Grid - receives grids and outputs integers.;
+#X text 289 218 Grid - receives grids and outputs integers.;
+#X text 77 335 Outputs individual integers corresponding to the vector
+dimensions (number of elements in a grid).;
+#X text 284 615 All - outputs the vector dimensions as individual integers.
+;
+#X text 17 648 GridFlow 0.8.0;
+#X connect 17 0 20 0;
+#X connect 18 0 20 1;
+#X connect 19 0 20 2;
+#X connect 20 0 16 0;
+#X connect 38 0 40 0;
+#X connect 38 1 41 0;
+#X connect 38 2 42 0;
+#X connect 39 0 38 0;
diff --git a/externals/gridflow/doc/flow_classes/#perspective-help.pd b/externals/gridflow/doc/flow_classes/#perspective-help.pd
new file mode 100644
index 00000000..eef22c09
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#perspective-help.pd
@@ -0,0 +1,26 @@
+#N canvas 280 56 664 282 10;
+#X text 413 215 see also:;
+#X text 597 12 gridflow;
+#X text 24 15 @perspective;
+#X text 153 15 transforms a dim[a... \, b] grid into a dim[a... \,
+b-1] grid. there is a projection plane perpendicular to the last axis
+and whose position is given by the creation argument. each vector's
+length is adjusted so that it lies onto that plane. then the last dimension
+of each vector is dropped;
+#X obj 30 147 #pack 3;
+#X floatatom 75 102 5 0 0 0 - - -;
+#X obj 77 120 max 1;
+#X floatatom 12 115 5 0 0 0 - - -;
+#X floatatom 52 77 5 0 0 0 - - -;
+#X obj 30 210 #print;
+#X obj 269 210 #print;
+#X obj 269 173 #perspective;
+#X obj 487 214 #redim;
+#X obj 540 214 #ravel;
+#X connect 4 0 9 0;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 2;
+#X connect 7 0 4 0;
+#X connect 8 0 4 1;
+#X connect 11 0 10 0;
diff --git a/externals/gridflow/doc/flow_classes/#polygon_comparator-help.pd b/externals/gridflow/doc/flow_classes/#polygon_comparator-help.pd
new file mode 100644
index 00000000..cdb35df8
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#polygon_comparator-help.pd
@@ -0,0 +1,69 @@
+#N canvas 271 133 749 424 10;
+#X obj 422 218 #outer + (0 9000);
+#X text 430 162 make regular triangle;
+#X obj 422 316 #rotate;
+#X obj 374 142 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 475 316 * 100;
+#X floatatom 475 300 5 0 0 0 - - -;
+#X obj 392 161 t b b;
+#X obj 422 335 #polygon_comparator;
+#X obj 373 161 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 422 275 #t;
+#X obj 393 142 metro 1000;
+#X text 32 364 BUG: first try doesn't work;
+#X text 69 375 please bang twice;
+#X msg 556 206 4 2 # 1 1 1 -1 -1 -1 -1 1;
+#X obj 597 252 display;
+#X obj 422 199 # * 12000;
+#X obj 422 180 #for 0 3 1;
+#X obj 556 226 # * (100 100);
+#X obj 422 256 # + (0 0);
+#X obj 422 237 # cos* (100 100);
+#X obj 382 367 #fold min;
+#X obj 462 367 #fold max;
+#X obj 382 386 #export;
+#X obj 462 386 #export;
+#X obj 557 185 loadbang;
+#X obj 382 405 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 9
+-262144 -1 -1 0 256;
+#X obj 462 405 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 9
+-262144 -1 -1 0 256;
+#X text 11 66 inlet 1: a 2-D polygon as N by 2 grid;
+#X text 11 16 inlet 0: a 2-D polygon as N by 2 grid;
+#X text 74 30 or method "precision" for setting the size of the output
+grid.;
+#X text 73 80 in which the peak represents the amount of similarity
+between the two polygons \, and the position of the peak represents
+the optimal rotation for maximum overlapping of the polygons. The rotation
+origin is assumed to be the centroid (#moment 1);
+#X text 25 348 NOTE: requires [#fft];
+#X text 8 179 Comparisons are supposed to be invariant to the following
+transformation:;
+#X text 33 213 translations \, e.g. [# +];
+#X text 33 231 rotations \, e.g. [#rotate];
+#X text 33 249 scalar scalings \, e.g. [# *] with only one value.;
+#X connect 0 0 19 0;
+#X connect 2 0 7 0;
+#X connect 3 0 10 0;
+#X connect 4 0 2 1;
+#X connect 5 0 4 0;
+#X connect 6 1 16 0;
+#X connect 7 0 20 0;
+#X connect 7 0 21 0;
+#X connect 8 0 6 0;
+#X connect 9 0 2 0;
+#X connect 10 0 6 0;
+#X connect 13 0 17 0;
+#X connect 15 0 0 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 17 0 7 1;
+#X connect 18 0 9 0;
+#X connect 19 0 18 0;
+#X connect 20 0 22 0;
+#X connect 21 0 23 0;
+#X connect 22 0 25 0;
+#X connect 23 0 26 0;
+#X connect 24 0 13 0;
diff --git a/externals/gridflow/doc/flow_classes/#polygon_each_edge-help.pd b/externals/gridflow/doc/flow_classes/#polygon_each_edge-help.pd
new file mode 100644
index 00000000..4765fe7f
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#polygon_each_edge-help.pd
@@ -0,0 +1,12 @@
+#N canvas 502 236 450 158 10;
+#X text 220 35 very small square;
+#X text 174 68 enumerate edges;
+#X obj 41 109 #print;
+#X text 52 88 each edge is a vertex pair;
+#X text 221 22 example polygon:;
+#X obj 60 40 # +;
+#X msg 44 10 4 2 # 0 0 1 1 1 1 1 0;
+#X obj 41 66 #polygon_each_edge;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 2 0;
diff --git a/externals/gridflow/doc/flow_classes/#polygon_radial_map-help.pd b/externals/gridflow/doc/flow_classes/#polygon_radial_map-help.pd
new file mode 100644
index 00000000..03303fc2
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#polygon_radial_map-help.pd
@@ -0,0 +1,42 @@
+#N canvas 412 64 630 462 10;
+#X obj 274 276 #polygon_radial_map;
+#X text 70 40 makes a 1-D panoramic (polar) rendering of a polygon.
+;
+#X text 69 57 if you want to make standardized (translation-independent)
+renderings of polygons \, first substract [#polygon_moment] (or a variant
+thereof) from the polygon.;
+#X obj 274 371 #outer * (255 255 255);
+#X obj 274 390 #out window;
+#X obj 24 193 t b a;
+#X obj 24 240 #draw_polygon put (255 224 200);
+#X msg 24 221 240 320 3 # 0 60 90;
+#X obj 274 333 #for 128 0 -1;
+#X obj 24 259 #out window;
+#X obj 274 140 #t;
+#X obj 304 141 #polygon_moment;
+#X obj 323 162 display;
+#X obj 274 166 # -;
+#X obj 288 188 display;
+#X msg 24 116 4 2 # 30 30 30 250 120 200 170 90;
+#X obj 274 295 t a a;
+#X obj 274 314 #finished;
+#X obj 274 352 #outer <;
+#X connect 0 0 16 0;
+#X connect 3 0 4 0;
+#X connect 5 0 7 0;
+#X connect 5 1 6 2;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X connect 8 0 18 0;
+#X connect 10 0 13 0;
+#X connect 10 1 11 0;
+#X connect 11 0 12 0;
+#X connect 11 0 13 1;
+#X connect 13 0 0 0;
+#X connect 13 0 14 0;
+#X connect 15 0 5 0;
+#X connect 15 0 10 0;
+#X connect 16 0 17 0;
+#X connect 16 1 18 1;
+#X connect 17 0 8 0;
+#X connect 18 0 3 0;
diff --git a/externals/gridflow/doc/flow_classes/#posterize-help.pd b/externals/gridflow/doc/flow_classes/#posterize-help.pd
new file mode 100644
index 00000000..94f0f23c
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#posterize-help.pd
@@ -0,0 +1,36 @@
+#N canvas 384 100 640 338 10;
+#X obj 20 32 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X floatatom 84 131 5 2 255 0 - - -;
+#X obj 84 147 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 132 131 2 - 255;
+#X text 157 157 number of possible levels per channel. the levels are
+equally spaced \, with the lowest at 0 and the highest at 255 the minimum
+number of levels is 2 and the default value is also 2;
+#X text 572 6 gridflow;
+#X text 210 300 see also:;
+#X obj 20 59 fork;
+#X msg 43 79 open bluemarble.jpg;
+#X text 98 7 reduces the number of possible intensities in an image:
+it rounds the color values. the effect is mostly apparent with a low
+number of levels;
+#X obj 20 100 #in;
+#X obj 19 127 #store;
+#X obj 19 175 #posterize;
+#X obj 19 303 #out window;
+#X obj 281 304 #convolve;
+#X obj 350 304 #contrast;
+#X obj 419 304 #solarize;
+#X obj 488 304 #layer;
+#X text 16 7 #posterize;
+#X connect 0 0 7 0;
+#X connect 1 0 2 0;
+#X connect 1 0 12 1;
+#X connect 2 0 11 0;
+#X connect 7 0 10 0;
+#X connect 7 1 8 0;
+#X connect 8 0 10 0;
+#X connect 10 0 11 1;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
diff --git a/externals/gridflow/doc/flow_classes/#print-help.pd b/externals/gridflow/doc/flow_classes/#print-help.pd
new file mode 100644
index 00000000..e7143e19
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#print-help.pd
@@ -0,0 +1,81 @@
+#N canvas 408 30 536 638 10;
+#X text 15 32 Displays the dimensions of a grid in the console. If
+the grid has less than two dimensions it will display all grid data.
+;
+#X floatatom 213 105 5 0 0 0 - - -;
+#X floatatom 235 126 5 0 0 0 - - -;
+#X floatatom 257 146 5 0 0 0 - - -;
+#X obj 71 116 #in;
+#X obj 100 158 #import (3 3 3);
+#X msg 100 110 3 3 3 # 27;
+#X obj 100 134 # rand;
+#X obj 0 3 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 70 267 cnv 15 100 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 2 431 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 302 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 325 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 326 Inlet_0;
+#X text 203 433 Outlets (1);
+#X obj 2 452 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 351 GRID;
+#X msg 71 88 load sewing.jpg;
+#X obj 17 4 #print;
+#X text 8 483 GRID;
+#X obj 71 267 #print paprika;
+#X obj 4 640 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 520 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 206 521 Arguments (1);
+#X text 70 555 Adds a number as a prefix before the element printed
+in the console.;
+#X text 11 598 SYMBOL;
+#X text 68 597 Adds a symbol (text) as a prefix before the printed
+element in the console.;
+#X text 7 453 Outlet_0;
+#X text 67 352 Incoming grid.;
+#X text 203 304 Inlets (1);
+#X text 63 483 Outputs the dimensions of a grid and the grid data to
+the console.;
+#X text 7 640 see also:;
+#X obj 82 641 #dim;
+#X obj 116 641 #export;
+#X obj 171 641 #export_list;
+#X obj 262 641 print;
+#X text 11 556 FLOAT;
+#X text 122 375 select between base 2 \, 8 \, 10 \, 16;
+#X text 9 389 maxrows INTEGER;
+#X text 8 375 base INTEGER;
+#X text 122 389 stop printing after that number of rows;
+#X text 9 402 trunc INTEGER;
+#X text 123 403 stop printing after that number of characters on the
+same line;
+#X text 398 4 GridFlow 0.9.1;
+#X obj 213 165 #pack 3;
+#X msg 368 188 base 2;
+#X msg 368 208 base 8;
+#X msg 368 228 base 10;
+#X msg 368 248 base 16;
+#X msg 370 159 maxrows 10;
+#X msg 370 136 trunc 20;
+#X connect 1 0 44 0;
+#X connect 2 0 44 1;
+#X connect 3 0 44 2;
+#X connect 4 0 20 0;
+#X connect 5 0 20 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 0;
+#X connect 17 0 4 0;
+#X connect 44 0 20 0;
+#X connect 45 0 20 0;
+#X connect 46 0 20 0;
+#X connect 47 0 20 0;
+#X connect 48 0 20 0;
+#X connect 49 0 20 0;
+#X connect 50 0 20 0;
diff --git a/externals/gridflow/doc/flow_classes/#ravel-help.pd b/externals/gridflow/doc/flow_classes/#ravel-help.pd
new file mode 100644
index 00000000..3d222e3f
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#ravel-help.pd
@@ -0,0 +1,31 @@
+#N canvas 364 101 660 279 10;
+#X text 143 15 like @redim but always produces a 1-D grid with the
+same total number of elements.;
+#X obj 20 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X obj 20 211 print before;
+#X obj 259 213 print after;
+#X text 403 215 see also:;
+#X text 575 14 gridflow;
+#X msg 43 81 open bluemarble.jpg;
+#X obj 20 60 fork;
+#X obj 20 102 #in;
+#X obj 20 168 #dim;
+#X obj 20 190 #export_list;
+#X text 14 15 #ravel;
+#X obj 477 214 #redim (1);
+#X obj 567 214 #perspective;
+#X obj 259 192 #export_list;
+#X obj 259 170 #dim;
+#X obj 140 129 #ravel;
+#X connect 1 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 7 1 6 0;
+#X connect 8 0 9 0;
+#X connect 8 0 16 0;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 14 0 3 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
diff --git a/externals/gridflow/doc/flow_classes/#record-help.pd b/externals/gridflow/doc/flow_classes/#record-help.pd
new file mode 100644
index 00000000..947adabb
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#record-help.pd
@@ -0,0 +1,68 @@
+#N canvas 507 136 507 659 10;
+#X obj 79 121 #camera;
+#X obj 79 70 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
+#X obj 105 153 #out window;
+#X obj 154 70 hsl 128 15 20 300 0 0 empty empty empty -2 -6 0 8 -260818
+-1 -1 0 1;
+#X obj 105 178 fps detailed;
+#X obj 105 202 print;
+#X obj 79 98 metro 100;
+#X obj 93 231 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 123 280 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 108 255 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 3 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 603 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 348 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 371 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 636 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 204 350 Inlets (4);
+#X text 4 397 GRID;
+#X text 76 396 Accepts grids.;
+#X obj 2 428 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 487 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 546 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 4 455 BANG;
+#X text 4 519 BANG;
+#X text 4 578 BANG;
+#X text 5 373 Inlet 0;
+#X text 5 430 Inlet 1;
+#X text 5 494 Inlet 2;
+#X text 5 553 Inlet 3;
+#X obj 79 309 cnv 15 50 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 79 310 #record;
+#X text 76 519 Starts recording to the file.;
+#X text 76 578 Stops recording.;
+#X text 205 605 Outlets (0);
+#X text 206 637 Arguments (0);
+#X text 76 454 Opens a dialog window in which to type the filename
+to be recorded \, the defualt encoding is quicktime (raw).;
+#X text 22 33 Record a quicktime file with [#out];
+#X text 113 229 <-- 1 select filename;
+#X text 128 254 <-- 2 start recording;
+#X text 143 280 <-- 3 stop recording;
+#X text 142 309 <-- open for more options;
+#X text 39 39 comment;
+#X obj 13 0 #record;
+#X text 394 1 GridFlow 0.9.0;
+#X connect 0 0 2 0;
+#X connect 0 0 29 0;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 0;
+#X connect 6 0 0 0;
+#X connect 7 0 29 1;
+#X connect 8 0 29 3;
+#X connect 9 0 29 2;
diff --git a/externals/gridflow/doc/flow_classes/#redim-help.pd b/externals/gridflow/doc/flow_classes/#redim-help.pd
new file mode 100644
index 00000000..2977b174
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#redim-help.pd
@@ -0,0 +1,65 @@
+#N canvas 271 30 511 573 10;
+#X obj 109 154 cnv 15 130 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 6 398 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 210 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 233 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 9 234 Inlet_0;
+#X text 206 212 Inlets (2);
+#X text 215 400 Outlets (1);
+#X obj 5 480 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 221 481 Arguments (1);
+#X obj 5 329 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 419 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 420 Inlet_0;
+#X text 10 330 Inlet_1;
+#X text 7 259 GRID;
+#X text 7 357 GRID;
+#X text 11 443 GRID;
+#X obj 5 552 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 86 37 rearrange a grid's values according to new dimensions
+;
+#X obj 21 36 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X text 834 99 gridflow;
+#X obj 21 59 fork;
+#X obj 21 103 #in;
+#X obj 111 183 #out window;
+#X obj 7 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X msg 44 81 open working.jpg;
+#X text 19 550 see also:;
+#X obj 99 553 #ravel;
+#X obj 149 553 #perspective;
+#X obj 21 184 #out window;
+#X obj 21 127 t a a;
+#X obj 22 0 #redim ( 2 );
+#X obj 111 154 #redim (120 160 3);
+#X text 72 444 Outputs the redimensioned data as a grid.;
+#X text 24 511 Accepts a grid as a creation argument \, here (120 160
+3).;
+#X msg 232 131 240 320 3;
+#X text 65 257 Accepts a grid which elements are serialized. If the
+resulting grid must be larger \, the sequence is repeated as much as
+necessary. It is truncated if it must be smaller. The elements are
+then deserialized to form the resulting grid.;
+#X text 71 357 Accepts grids that is a dimension list.;
+#X text 399 1 GridFlow 0.8.4;
+#X msg 200 101 400 400 3;
+#X connect 18 0 20 0;
+#X connect 20 0 21 0;
+#X connect 20 1 24 0;
+#X connect 21 0 29 0;
+#X connect 24 0 21 0;
+#X connect 29 0 28 0;
+#X connect 29 1 31 0;
+#X connect 31 0 22 0;
+#X connect 34 0 31 1;
+#X connect 38 0 31 1;
diff --git a/externals/gridflow/doc/flow_classes/#remap_image-help.pd b/externals/gridflow/doc/flow_classes/#remap_image-help.pd
new file mode 100644
index 00000000..22c2e453
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#remap_image-help.pd
@@ -0,0 +1,70 @@
+#N canvas 300 38 508 671 10;
+#X obj 3 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 46 229 cnv 15 86 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 4 477 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 327 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 350 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 8 351 Inlet_0;
+#X text 205 329 Inlets (2);
+#X obj 4 611 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 409 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 498 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 8 410 Inlet_1;
+#X obj 10 0 #remap_image;
+#X text 19 26 Transforms a grid by displacing pixels.;
+#X obj 27 154 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 46 179 #in;
+#X floatatom 166 201 5 0 0 0 - - -;
+#X text 7 378 GRID;
+#X obj 150 229 # +;
+#X msg 61 153 open sewing.jpg;
+#X text 211 199 <-- Modify value to see transformation.;
+#X text 54 377 Accepts a grid.;
+#X text 178 152 <-- open image;
+#X text 401 1 GridFlow 0.8.4;
+#X obj 46 281 #out window \, title remapped;
+#X obj 46 97 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
+#X obj 46 120 metro 33.3667;
+#X text 19 45 If you chain indexmap (coordinate) transformations from
+outlet 1 to inlet 1 \, then sending an image in inlet 0 will emit its
+deformation out of outlet 0;
+#X text 8 524 GRID;
+#X text 8 499 Outlet_0;
+#X text 55 523 The deformed grid.;
+#X obj 46 229 #remap_image;
+#X text 204 610 Arguments (0);
+#X text 206 479 Outlets (2);
+#X obj 4 552 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 8 578 GRID;
+#X text 8 553 Outlet_1;
+#X text 197 229 <-- change the numop to change the transformation;
+#X text 6 437 GRID;
+#X text 55 577;
+#X obj 4 646 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 12 645 See also :;
+#X obj 92 645 #rotate;
+#X text 53 436 Receives a grid that is to be used as the transformation
+map;
+#X text 55 578;
+#X text 55 577 The deformed grid that has received the last transformation.
+;
+#X connect 13 0 14 0;
+#X connect 14 0 30 0;
+#X connect 15 0 17 1;
+#X connect 17 0 30 1;
+#X connect 18 0 14 0;
+#X connect 24 0 25 0;
+#X connect 25 0 14 0;
+#X connect 30 0 23 0;
+#X connect 30 1 17 0;
diff --git a/externals/gridflow/doc/flow_classes/#reverse-help.pd b/externals/gridflow/doc/flow_classes/#reverse-help.pd
new file mode 100644
index 00000000..441e9d40
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#reverse-help.pd
@@ -0,0 +1,46 @@
+#N canvas 599 113 566 552 10;
+#X text 428 11 GridFlow 0.8.0;
+#X obj 258 207 #color;
+#X obj 288 391 #color;
+#X obj 259 476 display;
+#X text 15 27 [#reverse];
+#X obj 258 359 t a a;
+#X text 15 57 Swaps the values of incoming grids while preserving the
+number of Dimensions between incoming and outgoing grids.;
+#X obj 22 287 #in;
+#X obj 22 206 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 52 256 open b001.jpg;
+#X obj 22 401 #out window;
+#X obj 87 289 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -260818 -1
+-1 5;
+#X obj 87 307 - 3;
+#X floatatom 87 327 5 0 0 0 - - -;
+#X text 16 107 0 vertical;
+#X text 16 122 1 horizontal;
+#X text 16 135 2 rgb <-> bgr;
+#X text 16 150 -1 \, -2 \, -3 \, swaps the specicied dimensions;
+#X text 16 92 An int argument changes the behavior in this way :;
+#X obj 22 228 t b b;
+#X obj 22 344 #reverse 0;
+#X obj 258 330 #reverse 0;
+#X obj 323 275 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -260818 -1
+-1 0;
+#X obj 323 293 - 3;
+#X floatatom 323 313 5 0 0 0 - - -;
+#X connect 1 0 21 0;
+#X connect 5 0 3 0;
+#X connect 5 1 2 0;
+#X connect 7 0 20 0;
+#X connect 8 0 19 0;
+#X connect 9 0 7 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 20 1;
+#X connect 19 0 7 0;
+#X connect 19 1 9 0;
+#X connect 20 0 10 0;
+#X connect 21 0 5 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 21 1;
diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-help.pd b/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-help.pd
new file mode 100644
index 00000000..f512369a
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-help.pd
@@ -0,0 +1,40 @@
+#N canvas 113 134 502 431 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 299 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 210 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 233 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 301 Outlets (1);
+#X obj 1 320 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 234 Inlet 0;
+#X text 2 321 Outlet 0;
+#X obj 166 183 #out window;
+#X obj 166 112 #in;
+#X obj 14 0 #rgb_to_greyscale;
+#X obj 166 137 cnv 15 121 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 166 137 #rgb_to_greyscale;
+#X obj 174 91 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X msg 166 68 open working.jpg;
+#X obj 166 160 #greyscale_to_rgb;
+#X text 221 211 Inlets (1);
+#X text 7 259 GRID;
+#X text 8 346 GRID;
+#X text 87 260 A color grid at the left inlet is accepted.;
+#X text 15 27 Creates a greyscale image from a color image.;
+#X obj 2 391 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 196 392 Arguments (none);
+#X text 84 349 A grid equivalent to the original one is output in greyscale.
+;
+#X connect 10 0 13 0;
+#X connect 13 0 16 0;
+#X connect 14 0 10 0;
+#X connect 15 0 10 0;
+#X connect 16 0 9 0;
diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd b/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd
new file mode 100644
index 00000000..3caf9136
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd
@@ -0,0 +1,42 @@
+#N canvas 205 69 509 416 10;
+#X obj 4 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 314 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 225 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 248 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 9 249 Inlet_0;
+#X text 208 316 Outlets (1);
+#X obj 6 335 cnv 15 67 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 24 1 #rgb_to_yuv;
+#X obj 324 188 #out window;
+#X obj 273 87 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 255 107 #in;
+#X msg 255 61 open sewing.jpg;
+#X obj 324 150 cnv 15 79 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 324 150 #rgb_to_yuv;
+#X text 206 227 Inlets (1);
+#X text 7 274 Grid;
+#X text 5 152 This displays the image as RGB:;
+#X text 99 190 This displays the image as YUV:;
+#X text 23 26 Converts an RGB color model image to a YUV color model
+image.;
+#X text 8 365 Grid;
+#X text 10 336 Outlet_0;
+#X text 80 367 Displays an image in YUV format.;
+#X text 79 276 Receives an image in RGB format.;
+#X obj 226 152 #out window;
+#X text 396 1 GridFlow 0.8.4;
+#X obj 7 390 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 206 391 Arguments (none);
+#X connect 9 0 10 0;
+#X connect 10 0 13 0;
+#X connect 10 0 23 0;
+#X connect 11 0 10 0;
+#X connect 13 0 8 0;
diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd b/externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd
new file mode 100644
index 00000000..8be0a8c3
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#rgb_to_yuv_and_#yuv_to_rgb-help.pd
@@ -0,0 +1,44 @@
+#N canvas 98 384 737 338 10;
+#X obj 267 25 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X obj 279 77 cnv 15 450 15 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 306 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X obj 8 5 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 266 192 cnv 15 460 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 269 191 Outlets:;
+#X obj 8 25 cnv 15 250 15 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 11 25 Usage:;
+#X obj 8 45 cnv 15 250 30 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 81 cnv 15 250 220 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 270 25 Inlets: (Read left to right \, inlet "0" being the leftmost)
+;
+#X text 282 77 0: (Leftmost);
+#X text 12 5 SUMMARY:;
+#X obj 42 51 #rgb_to_yuv;
+#X obj 15 117 #for (0 0) (256 256) (1 1);
+#X obj 15 90 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 15 220 #clip;
+#X obj 15 143 #inner (2 3 # 0 1 0 0 0 1);
+#X obj 15 194 #yuv_to_rgb;
+#X obj 15 168 # + (200 0 0);
+#X obj 16 261 #peephole;
+#X text 289 99 Grid - Receives a grid in RGB or YUV format.;
+#X text 16 313 GridFlow 0.8.0;
+#X obj 135 51 #yuv_to_rgb;
+#X text 72 5 converts RGB colourspace to YUV colourspace or YUV to
+RGB.;
+#X text 291 224 One - outputs the converted grid.;
+#X connect 14 0 17 0;
+#X connect 15 0 14 0;
+#X connect 16 0 20 0;
+#X connect 17 0 19 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#rotate-help.pd b/externals/gridflow/doc/flow_classes/#rotate-help.pd
new file mode 100644
index 00000000..de4f6c0b
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#rotate-help.pd
@@ -0,0 +1,64 @@
+#N canvas 350 51 503 521 10;
+#X obj 181 122 cnv 15 51 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 1 345 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 168 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 191 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 347 Outlets (1);
+#X obj 1 426 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 425 Arguments (1);
+#X obj 0 263 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 366 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 192 Inlet 0;
+#X text 1 264 Inlet 1;
+#X text 221 169 Inlets (2);
+#X text 2 367 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 10 1 #rotate;
+#X text 393 1 GridFlow 0.8.4;
+#X obj 180 121 #rotate;
+#X text 11 454 INT;
+#X text 8 218 GRID;
+#X text 11 290 INT;
+#X text 4 26 The [#rotate] performs rotations on indexmaps and polygons
+and such objects.;
+#X obj 163 83 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 80 98 #in;
+#X obj 227 99 hsl 40 15 0 35999 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 2800 1;
+#X text 11 390 GRID;
+#X text 60 455 [#rotate] accepts an integer number (0 to 35999) as
+a creation argument which initializes the first angle of rotation.
+;
+#X obj 80 121 #remap_image;
+#X obj 80 142 #out window \, title #rotate;
+#X obj 9 57 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 1 1;
+#X obj 9 76 metro 100;
+#X text 65 392 Outputs the result of the rotation and needs to be sent
+to a [#remap_image] to be visualized.;
+#X text 57 217 The Grid passed in inlet 0 will be the grid on which
+the rotation will be performed.;
+#X text 57 289 An integer from 0 to 35999 (36000 is the same as 0)
+passed in inlet 1 will determine the angle of rotation for the object
+to be rotated.;
+#X floatatom 243 123 7 0 0 0 - - -;
+#X msg 80 57 open b001.jpg;
+#X connect 17 0 27 1;
+#X connect 22 0 23 0;
+#X connect 23 0 27 0;
+#X connect 24 0 17 1;
+#X connect 24 0 34 0;
+#X connect 27 0 28 0;
+#X connect 27 1 17 0;
+#X connect 29 0 30 0;
+#X connect 30 0 23 0;
+#X connect 35 0 23 0;
diff --git a/externals/gridflow/doc/flow_classes/#saturation-help.pd b/externals/gridflow/doc/flow_classes/#saturation-help.pd
new file mode 100644
index 00000000..3d92609b
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#saturation-help.pd
@@ -0,0 +1,60 @@
+#N canvas 115 0 502 637 10;
+#X obj 27 157 print;
+#X obj 27 117 #out window;
+#X text 293 68 OR;
+#X text 275 30 global saturation;
+#X obj 27 138 fps detailed;
+#X text 240 87 per-channel saturation;
+#X msg 231 25 0;
+#X obj 231 4 loadbang;
+#X obj 234 46 hsl 137 15 -256 512 0 0 empty empty empty -2 -6 0 8 -260818
+-128992 -1 5700 1;
+#X floatatom 192 47 5 0 0 0 - - -;
+#X obj 27 -45 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
+;
+#X obj 27 -11 metro 33.3667;
+#X msg 184 88 3 # \$1;
+#X obj 27 24 #in babbage.jpg;
+#X obj 184 114 #color -256 512 1;
+#X obj 1 -99 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 395 -98 GridFlow 0.9.0;
+#X obj 1 394 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 263 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 286 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 287 Inlet_0;
+#X obj 1 474 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 415 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 0 416 Outlet_0;
+#X text 13 441 GRID;
+#X text 13 505 INT;
+#X text 203 265 Inlets (2);
+#X text 13 314 GRID;
+#X text 13 364 GRID;
+#X text 72 312 Accepts original image;
+#X obj 11 -99 #saturation;
+#X text 72 363 Modifying grid;
+#X obj 1 340 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 341 Inlet_1;
+#X text 203 395 Outlet (1);
+#X obj 27 93 #saturation -128;
+#X text 73 504 Saturation value \, can be negative.;
+#X text 205 473 Arguments (1);
+#X connect 1 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 8 0 12 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 35 0;
+#X connect 14 0 35 1;
+#X connect 35 0 1 0;
diff --git a/externals/gridflow/doc/flow_classes/#scale_by-help.pd b/externals/gridflow/doc/flow_classes/#scale_by-help.pd
new file mode 100644
index 00000000..3c44cdda
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#scale_by-help.pd
@@ -0,0 +1,59 @@
+#N canvas 670 77 508 615 10;
+#X obj 89 182 cnv 15 80 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 1 413 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 255 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 278 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 418 Outlets (1);
+#X obj 1 493 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 496 Arguments (1);
+#X obj 1 348 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 434 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 278 Inlet 0;
+#X text 2 352 Inlet 1;
+#X text 221 257 Inlets (2);
+#X text 2 438 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 11 82 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
+#X obj 11 102 metro 100;
+#X obj 89 149 #in;
+#X text 210 496 Arguments (1);
+#X obj 2 562 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 217 565 See Also;
+#X obj 10 589 #scale_to;
+#X obj 80 589 #downscale_by;
+#X text 7 302 GRID;
+#X text 3 463 GRID;
+#X text 64 463 Outputs the resulting scaled image.;
+#X obj 89 227 #out window \, title #scale_by;
+#X msg 89 85 open bluemarble.jpg \, bang;
+#X obj 9 1 #scale_by;
+#X text 396 1 GridFlow 0.9.0;
+#X obj 89 183 #scale_by 2;
+#X text 7 28 The [#scale_by] scales the image received by the row and
+column factors passed. A single value applies the scaling uniformly
+on the row and columns.;
+#X msg 227 129 2 # 2 1;
+#X msg 230 152 2 # 2 3;
+#X floatatom 181 131 5 0 0 0 - - -;
+#X text 3 525 INT;
+#X text 4 376 INT;
+#X text 61 375 Scaling factor.;
+#X text 64 524 The scaling factor (defaults to 2).;
+#X text 62 303 The Grid on which the scale_to will be performed.;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 29 0;
+#X connect 26 0 16 0;
+#X connect 29 0 25 0;
+#X connect 31 0 29 1;
+#X connect 32 0 29 1;
+#X connect 33 0 29 1;
diff --git a/externals/gridflow/doc/flow_classes/#scale_to-help.pd b/externals/gridflow/doc/flow_classes/#scale_to-help.pd
new file mode 100644
index 00000000..34038065
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#scale_to-help.pd
@@ -0,0 +1,78 @@
+#N canvas 122 0 504 602 10;
+#X obj 90 170 cnv 15 135 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 1 394 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 236 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 259 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 399 Outlets (1);
+#X obj 1 474 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 477 Arguments (1);
+#X obj 1 329 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 415 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 259 Inlet 0;
+#X text 2 333 Inlet 1;
+#X text 221 238 Inlets (2);
+#X text 2 419 Outlet 0;
+#X obj 1 1 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 11 75 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
+#X obj 11 94 metro 100;
+#X obj 89 171 #scale_to (133 133);
+#X obj 89 133 #in;
+#X obj 284 159 #pack;
+#X obj 325 138 hsl 128 8 0 640 0 0 empty empty empty 0 -8 0 8 -260818
+-1 -1 0 1;
+#X obj 325 148 hsl 128 8 0 640 0 0 empty empty empty 0 -8 0 8 -260818
+-1 -1 0 1;
+#X obj 9 1 #scale_to;
+#X obj 89 208 #out window \, title #scale_to;
+#X text 210 477 Arguments (1);
+#X obj 2 543 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 217 546 See Also;
+#X obj 80 570 #downscale_by;
+#X msg 89 73 open scissors.jpg \, bang;
+#X obj 300 183 #print;
+#X msg 284 75 2 # 500 500;
+#X obj 412 97 #print;
+#X text 7 283 GRID;
+#X msg 284 94 2 # 100 500;
+#X msg 285 115 2 # 500 100;
+#X text 460 133 height;
+#X text 460 145 width;
+#X text 62 357 A height width value pair in pixels.;
+#X text 3 444 GRID;
+#X text 64 444 Outputs the resulting scaled image.;
+#X text 3 506 INT INT;
+#X text 65 504 A (height width) pair of integers indicating the size
+to scale to image to. This initial argument is required.;
+#X text 62 284 The Grid passed at inlet 0 will be the image on which
+the scale_to will be performed.;
+#X text 284 58 2 grid size values y=500 x=500;
+#X obj 7 570 #scale_by;
+#X text 395 2 GridFlow 0.9.0;
+#X text 9 22 The [#scale_to] scales the image received to the x and
+y values passed. Initial creation arguments are mandatory (0 0) otherwise.
+;
+#X text 3 358 INT INT;
+#X connect 14 0 15 0;
+#X connect 15 0 17 0;
+#X connect 16 0 22 0;
+#X connect 17 0 16 0;
+#X connect 18 0 16 1;
+#X connect 18 0 28 0;
+#X connect 19 0 18 0;
+#X connect 20 0 18 1;
+#X connect 27 0 17 0;
+#X connect 29 0 16 1;
+#X connect 29 0 30 0;
+#X connect 32 0 16 1;
+#X connect 32 0 30 0;
+#X connect 33 0 16 1;
+#X connect 33 0 30 0;
diff --git a/externals/gridflow/doc/flow_classes/#scan-help.pd b/externals/gridflow/doc/flow_classes/#scan-help.pd
new file mode 100644
index 00000000..08e9e468
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#scan-help.pd
@@ -0,0 +1,24 @@
+#N canvas 140 0 421 309 10;
+#X text 69 15 computes subtotals;
+#X floatatom 17 56 5 0 0 0 - - -;
+#X floatatom 62 56 5 0 0 0 - - -;
+#X floatatom 109 56 5 0 0 0 - - -;
+#X floatatom 17 225 5 0 0 0 - - -;
+#X floatatom 56 225 5 0 0 0 - - -;
+#X floatatom 96 225 5 0 0 0 - - -;
+#X text 73 129 second inlet seems to be dead;
+#X text 340 14 gridflow;
+#X text 14 266 see also:;
+#X text 14 15 #scan;
+#X obj 17 96 #pack 3;
+#X obj 17 127 #scan +;
+#X obj 17 186 #unpack 3;
+#X obj 83 270 #fold +;
+#X connect 1 0 11 0;
+#X connect 2 0 11 1;
+#X connect 3 0 11 2;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 4 0;
+#X connect 13 1 5 0;
+#X connect 13 2 6 0;
diff --git a/externals/gridflow/doc/flow_classes/#slice-help.pd b/externals/gridflow/doc/flow_classes/#slice-help.pd
new file mode 100644
index 00000000..c7c76227
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#slice-help.pd
@@ -0,0 +1,18 @@
+#N canvas 366 229 551 300 10;
+#X obj 38 150 display;
+#X text 36 173 should print subgrid: 3 5 8 13 21;
+#X msg 37 105 0 1 1 2 3 5 8 13 21 34 55 89;
+#X obj 37 130 #slice 4 9;
+#X obj 256 69 #slice (1 1) (3 3);
+#X obj 257 90 display;
+#X obj 256 50 #redim (4 4);
+#X obj 256 31 #for 0 16 1;
+#X obj 256 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 259 137 should print subgrid: 2 2 # 5 6 9 10;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 0;
+#X connect 8 0 7 0;
diff --git a/externals/gridflow/doc/flow_classes/#solarize-help.pd b/externals/gridflow/doc/flow_classes/#solarize-help.pd
new file mode 100644
index 00000000..f35f8ad3
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#solarize-help.pd
@@ -0,0 +1,25 @@
+#N canvas 411 100 613 339 10;
+#X obj 20 59 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X text 98 7 makes medium intensities brightest. formerly brightest
+colors become darkest \, formerly darkest stays darkest. this filter
+is linear. it's like a 200% contrast \, except that overflows are mirrored
+instead of clipped or wrapped.;
+#X text 545 5 gridflow;
+#X text 202 305 see also:;
+#X msg 43 112 open bluemarble.jpg;
+#X obj 20 83 fork;
+#X obj 20 174 #solarize;
+#X obj 20 222 #out window;
+#X obj 20 138 #in;
+#X obj 273 309 #convolve;
+#X obj 342 309 #contrast;
+#X obj 411 309 #posterize;
+#X obj 487 309 #layer;
+#X text 16 7 #solarize;
+#X connect 0 0 5 0;
+#X connect 4 0 8 0;
+#X connect 5 0 8 0;
+#X connect 5 1 4 0;
+#X connect 6 0 7 0;
+#X connect 8 0 6 0;
diff --git a/externals/gridflow/doc/flow_classes/#sort-help.pd b/externals/gridflow/doc/flow_classes/#sort-help.pd
new file mode 100644
index 00000000..0702cc07
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#sort-help.pd
@@ -0,0 +1,25 @@
+#N canvas 484 136 450 300 10;
+#X obj 28 210 #sort;
+#X msg 28 5 0 1 1 2 3 5 8 13 21 34 55 89;
+#X msg 28 62 12 # 666;
+#X obj 28 81 # rand;
+#X obj 28 138 #store;
+#X obj 28 100 #grade;
+#X obj 28 24 t a a;
+#X obj 28 43 #finished;
+#X obj 58 164 display;
+#X obj 28 119 #outer + (0);
+#X text 151 100 shuffle;
+#X obj 58 234 display;
+#X text 140 212 unshuffle;
+#X connect 0 0 11 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 4 0 8 0;
+#X connect 5 0 9 0;
+#X connect 6 0 7 0;
+#X connect 6 1 4 1;
+#X connect 7 0 2 0;
+#X connect 9 0 4 0;
diff --git a/externals/gridflow/doc/flow_classes/#spread-help.pd b/externals/gridflow/doc/flow_classes/#spread-help.pd
new file mode 100644
index 00000000..d0fa1ac8
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#spread-help.pd
@@ -0,0 +1,57 @@
+#N canvas 237 296 787 472 10;
+#X text 129 15 makes noise;
+#X obj 232 58 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X obj 275 140 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 1
+1;
+#X floatatom 368 241 5 0 0 0 - - -;
+#X floatatom 78 163 5 0 0 0 - - -;
+#X obj 20 88 until;
+#X obj 20 51 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X msg 20 69 65536;
+#X obj 61 88 float;
+#X obj 101 88 + 1;
+#X text 368 314 we limit here \, because the values might go out of
+range;
+#X text 702 13 gridflow;
+#X msg 255 112 open r001.jpg;
+#X obj 232 87 fork;
+#X obj 149 73 metro 50;
+#X obj 149 51 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X text 300 141 switch displays \, use this to get an image into the
+@store;
+#X obj 20 129 #import (256 256 2);
+#X obj 20 197 #spread 1;
+#X obj 195 269 #store;
+#X obj 195 393 #out window;
+#X obj 310 393 #out window;
+#X obj 310 291 #clip;
+#X obj 310 270 #spread 1;
+#X obj 232 159 #in;
+#X text 14 15 #spread;
+#X obj 249 247 shunt;
+#X connect 1 0 13 0;
+#X connect 2 0 26 1;
+#X connect 3 0 23 1;
+#X connect 4 0 18 1;
+#X connect 5 0 8 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 0;
+#X connect 8 0 9 0;
+#X connect 8 0 17 0;
+#X connect 9 0 8 1;
+#X connect 12 0 24 0;
+#X connect 13 0 24 0;
+#X connect 13 1 12 0;
+#X connect 14 0 24 0;
+#X connect 15 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
+#X connect 24 0 26 0;
+#X connect 26 0 19 1;
+#X connect 26 1 23 0;
diff --git a/externals/gridflow/doc/flow_classes/#store-help.pd b/externals/gridflow/doc/flow_classes/#store-help.pd
new file mode 100644
index 00000000..e3b1bb66
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#store-help.pd
@@ -0,0 +1,87 @@
+#N canvas 691 44 533 625 10;
+#X obj 1 464 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 9 305 BANG;
+#X obj 1 223 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 246 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 466 Outlets (1);
+#X obj 1 545 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 346 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 485 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 247 Inlet 0;
+#X text 2 347 Inlet 1;
+#X text 252 225 Inlets (2);
+#X text 2 486 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 9 1 #store;
+#X floatatom 132 89 5 0 0 0 - - -;
+#X floatatom 177 89 5 0 0 0 - - -;
+#X floatatom 20 160 5 0 0 0 - - -;
+#X floatatom 132 200 5 0 0 0 - - -;
+#X text 115 201 R:;
+#X floatatom 193 200 5 0 0 0 - - -;
+#X floatatom 253 200 5 0 0 0 - - -;
+#X text 176 201 G:;
+#X text 237 201 B:;
+#X floatatom 73 161 5 0 0 0 - - -;
+#X text 1 161 X:;
+#X text 58 162 Y:;
+#X obj 132 107 #pack;
+#X obj 296 134 #in;
+#X msg 296 115 load r001.jpg;
+#X obj 20 131 #unpack;
+#X obj 132 175 #unpack 3;
+#X text 393 1 GridFlow 0.8.4;
+#X text 210 544 Arguments (0);
+#X obj 132 153 cnv 15 43 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 132 153 #store;
+#X text 60 304 A bang at the left inlet will force [#store] to send
+its value to the outlet.;
+#X text 7 272 GRID;
+#X text 129 54 this example allows you to select a single pixel from
+the loaded picture and view its rgb value.;
+#X text 8 24 The [#store] stores exactly one grid \, using the right
+inlet. You fetch it back \, or selected subparts using the left inlet.
+;
+#X text 10 571 GRID;
+#X text 60 573 [#store] accepts a grid as a creation argument which
+initializes the first value to be stored.;
+#X obj 296 181 display;
+#X obj 86 94 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 296 161 display;
+#X text 59 271 Accepts a grid.;
+#X text 7 371 GRID;
+#X text 60 371 Accepts a grid or a subpart of it.;
+#X text 62 401 Reassign;
+#X text 63 423 put_at;
+#X text 131 410 To be clarified;
+#X text 12 509 GRID;
+#X text 59 509 Outputs the grid as requested.;
+#X obj 132 131 #redim 2;
+#X obj 296 96 loadbang;
+#X connect 15 0 27 0;
+#X connect 16 0 27 1;
+#X connect 27 0 30 0;
+#X connect 27 0 53 0;
+#X connect 28 0 35 1;
+#X connect 29 0 28 0;
+#X connect 30 0 17 0;
+#X connect 30 1 24 0;
+#X connect 31 0 18 0;
+#X connect 31 1 20 0;
+#X connect 31 2 21 0;
+#X connect 35 0 31 0;
+#X connect 35 0 42 0;
+#X connect 43 0 35 0;
+#X connect 53 0 35 0;
+#X connect 53 0 44 0;
+#X connect 54 0 29 0;
diff --git a/externals/gridflow/doc/flow_classes/#t-help.pd b/externals/gridflow/doc/flow_classes/#t-help.pd
new file mode 100644
index 00000000..b8b7e471
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#t-help.pd
@@ -0,0 +1,75 @@
+#N canvas 78 0 516 656 10;
+#X obj 1 380 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 263 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 286 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 529 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 401 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 287 Inlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 9 1 #t;
+#X text 42 2 trigger;
+#X text 7 313 GRID;
+#X text 2 402 Outlet 0;
+#X obj 10 134 #in teapot.png;
+#X obj 10 161 t a a;
+#X obj 40 181 #convolve (1 3 # -1 2 -1);
+#X obj 267 181 #convolve (1 3 # -1 2 -1);
+#X obj 10 112 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 237 161 #t;
+#X obj 237 205 # *>>8;
+#X obj 10 205 # *>>8;
+#X text 257 112 Works;
+#X text 8 64 In some situations \, a grid hasn't finished entering
+the right-hand side \, when an object begins receiving on the left-hand
+side. in those cases you should use #t.;
+#X obj 237 113 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 10 234 #out window \, title doesnt_work;
+#X obj 237 233 #out window \, title works;
+#X text 8 25 The [#t] trigger object sequences grid operations in a
+right-to-left order. It outputs its input from right to left.;
+#X text 28 112 Doesn't work (all black);
+#X text 393 1 GridFlow 0.8.4;
+#X obj 237 134 #in teapot.png;
+#X text 11 425 GRID;
+#X text 13 517;
+#X text 215 382 Outlets (2);
+#X text 221 264 Inlets (1);
+#X text 210 528 Arguments (0);
+#X obj 2 576 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 14 564;
+#X text 217 577 See also;
+#X text 103 603;
+#X obj 9 605 trigger;
+#X text 59 426 The same grid received in inlet 0 is first sent to the
+outlet 0;
+#X obj 2 459 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 12 483 GRID;
+#X text 3 460 Outlet 1;
+#X text 60 484 The same grid received in inlet 0 is sent to the outlet
+1 after it was sent to outlet 0;
+#X text 59 313 The Grid passed in inlet 0 will be first sent to the
+right most outlet and then to the second from the right (the left outlet
+in this case).;
+#X connect 12 0 13 0;
+#X connect 13 0 19 0;
+#X connect 13 1 14 0;
+#X connect 14 0 19 1;
+#X connect 15 0 18 1;
+#X connect 16 0 12 0;
+#X connect 17 0 18 0;
+#X connect 17 1 15 0;
+#X connect 18 0 24 0;
+#X connect 19 0 23 0;
+#X connect 22 0 28 0;
+#X connect 28 0 17 0;
diff --git a/externals/gridflow/doc/flow_classes/#to_float-help.pd b/externals/gridflow/doc/flow_classes/#to_float-help.pd
new file mode 100644
index 00000000..b82cc30f
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#to_float-help.pd
@@ -0,0 +1,39 @@
+#N canvas 585 129 502 472 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 352 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 247 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 270 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 214 354 Outlets (1);
+#X obj 0 450 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 373 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 1 271 Inlet 0;
+#X text 1 374 Outlet 0;
+#X text 214 247 Inlets (1);
+#X obj 15 188 cnv 15 55 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 5 298 GRID;
+#X obj 15 100 #import ( 2 2 2 );
+#X obj 51 133 display;
+#X msg 15 73 1 2 3 4 5 6 7 8;
+#X text 209 449 Arguments (0);
+#X text 59 298 Accepts a grid that will be transformed into its elements.
+;
+#X text 138 73 <-- create the grid here;
+#X obj 2 0 #to_float;
+#X text 397 2 GridFlow 0.9.0;
+#X text 4 401 FLOAT;
+#X text 79 401 The grid is transformed into a sequence of floats.;
+#X obj 15 188 #to_float;
+#X text 12 27 Produces sequences of floats from grid data. Useful for
+the integration into the rest of PureData.;
+#X obj 15 216 print converted_grid;
+#X connect 12 0 13 0;
+#X connect 12 0 22 0;
+#X connect 14 0 12 0;
+#X connect 22 0 24 0;
diff --git a/externals/gridflow/doc/flow_classes/#to_list-help.pd b/externals/gridflow/doc/flow_classes/#to_list-help.pd
new file mode 100644
index 00000000..3ee2f872
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#to_list-help.pd
@@ -0,0 +1,42 @@
+#N canvas 544 108 502 472 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 352 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 247 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 270 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 214 354 Outlets (1);
+#X obj 0 450 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 373 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 1 271 Inlet 0;
+#X text 1 374 Outlet 0;
+#X text 214 247 Inlets (1);
+#X obj 15 160 cnv 15 52 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 5 298 GRID;
+#X obj 14 91 #import ( 2 2 2 );
+#X obj 50 115 display;
+#X msg 14 64 1 2 3 4 5 6 7 8;
+#X text 209 449 Arguments (0);
+#X obj 161 217 display;
+#X text 59 298 Accepts a grid that will be transformed into a list.
+;
+#X text 3 401 LIST;
+#X text 57 401 The grid is transformed into a single message containing
+a sequence of integers.;
+#X text 12 27 Produces a list from grid data. Useful for the integration
+into the rest of PureData.;
+#X text 130 63 <-- create the grid here;
+#X obj 2 0 #to_list;
+#X text 397 1 GridFlow 0.9.0;
+#X obj 14 161 #to_list;
+#X obj 14 216 print converted_grid;
+#X connect 12 0 13 0;
+#X connect 12 0 24 0;
+#X connect 14 0 12 0;
+#X connect 24 0 16 0;
+#X connect 24 0 25 0;
diff --git a/externals/gridflow/doc/flow_classes/#to_pix-help.pd b/externals/gridflow/doc/flow_classes/#to_pix-help.pd
new file mode 100644
index 00000000..00a1c979
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#to_pix-help.pd
@@ -0,0 +1,126 @@
+#N canvas 921 79 511 752 10;
+#X msg 325 61 create \, 1;
+#X obj 325 42 loadbang;
+#X obj -26 1 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -25 0 [#to_pix];
+#X obj 90 162 #in;
+#X msg 117 139 open violoncelle.mov;
+#X obj 90 72 tgl 15 0 empty empty empty 17 7 0 10 -4034 -1 -1 1 1;
+#X obj 5 52 gemhead;
+#X obj 5 291 pix_texture;
+#X text 371 2 GridFlow 0.9.3;
+#X obj -27 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -21 721 see also :;
+#X text 62 720 [#import_pix];
+#X obj -27 403 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -25 431 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -24 432 Inlet 0;
+#X text 193 404 Inlets (1);
+#X obj -27 578 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 606 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -26 607 Outlet 0;
+#X obj -27 578 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 606 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -26 607 Outlet 0;
+#X obj -27 578 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 606 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -26 607 Outlet 0;
+#X obj -27 578 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 184 580 Outlets (1);
+#X obj -27 606 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -26 607 Outlet 0;
+#X obj -27 578 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 578 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -27 578 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 184 580 Outlets (1);
+#X obj -28 669 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -28 669 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -28 669 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj -28 669 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X msg 389 62 destroy;
+#X obj 90 93 metro 30;
+#X obj 325 93 gemwin 30;
+#X obj 117 117 loadbang;
+#X text 110 69 <-- start playing the video;
+#X text 0 353 Note : you can get some timebased 'moiree' effects if
+the arguments to the [gemwin] and the [metro] are not synched;
+#X text 190 188 <-- only temporarily necessary;
+#X obj -25 521 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text -24 522 Inlet 1;
+#X text 77 253 <-- imports gridflow grids into GEM;
+#X text 141 720 \, game_of_life_gem.pd in the examples folder;
+#X text -25 541 GRID;
+#X obj 5 253 #to_pix;
+#X text -24 624 gemlist;
+#X text -24 451 gem_state;
+#X text 56 540 Grid with 4 channels;
+#X text 51 625 Modified gemstate so that the pix is equal to the Grid
+of inlet 1;
+#X text 53 451 Something coming from [gemhead];
+#X msg 17 217 yflip \$1;
+#X obj 17 197 tgl 15 0 empty empty empty 17 7 0 10 -257985 -1 -1 1
+1;
+#X text 186 670 Arguments (0);
+#X text -23 480 yflip;
+#X text 55 481 With one boolean argument that selects the order in
+which the y dimension of the Grid will be read \, defaults to '1';
+#N canvas 0 22 458 308 channel_test 0;
+#X obj 130 221 #rgb_to_rgba;
+#X obj 131 103 #dim;
+#X obj 103 173 shunt;
+#X obj 131 126 #unpack 3;
+#X obj 104 29 inlet;
+#X obj 104 56 t a a;
+#X obj 103 265 outlet;
+#X obj 131 150 == 3;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 2 0 6 0;
+#X connect 2 1 0 0;
+#X connect 3 2 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 1 0;
+#X connect 7 0 2 1;
+#X restore 90 190 pd channel_test;
+#X obj 5 322 rectangle 4 3;
+#X connect 0 0 43 0;
+#X connect 1 0 0 0;
+#X connect 4 0 64 0;
+#X connect 5 0 4 0;
+#X connect 6 0 42 0;
+#X connect 7 0 53 0;
+#X connect 8 0 65 0;
+#X connect 41 0 43 0;
+#X connect 42 0 4 0;
+#X connect 44 0 5 0;
+#X connect 53 0 8 0;
+#X connect 59 0 53 0;
+#X connect 60 0 59 0;
+#X connect 64 0 53 1;
diff --git a/externals/gridflow/doc/flow_classes/#to_symbol-help.pd b/externals/gridflow/doc/flow_classes/#to_symbol-help.pd
new file mode 100644
index 00000000..a03fbbf9
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#to_symbol-help.pd
@@ -0,0 +1,46 @@
+#N canvas 721 295 503 549 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 428 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 323 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 346 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 214 430 Outlets (1);
+#X obj 0 526 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 449 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 1 347 Inlet 0;
+#X text 1 450 Outlet 0;
+#X text 214 323 Inlets (1);
+#X obj 11 233 cnv 15 63 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 5 374 GRID;
+#X obj 46 164 display;
+#X text 209 525 Arguments (0);
+#X obj 174 292 display;
+#X text 3 477 LIST;
+#X symbolatom 353 294 12 0 0 0 - - -;
+#X text 59 374 Accepts a grid that will be transformed into a symbol.
+;
+#X text 57 477 The grid is transformed into a single message containing
+a symbol.;
+#X text 11 32 Produces a symbol from grid data in its input. The values
+are expected to be valid ASCII codes \, but no check will be performed
+for that \, and additionally \, no check will be made that the generated
+symbol only contains characters that can be put in a symbol.;
+#X msg 11 111 72 101 108 108 111 32 87 111 114 108 100 33;
+#X obj 11 138 #import (3 2 2);
+#X text 324 111 <-- create the grid here;
+#X text 397 0 GridFlow 0.9.0;
+#X obj 2 0 #to_symbol;
+#X obj 11 233 #to_symbol;
+#X obj 11 292 print converted_grid;
+#X connect 20 0 21 0;
+#X connect 21 0 12 0;
+#X connect 21 0 25 0;
+#X connect 25 0 14 0;
+#X connect 25 0 16 0;
+#X connect 25 0 26 0;
diff --git a/externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd b/externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd
new file mode 100644
index 00000000..26e31fee
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#unpack-#pack-help.pd
@@ -0,0 +1,45 @@
+#N canvas 245 108 834 542 10;
+#X text 534 23 GridFlow 0.8.0;
+#X obj 572 257 #unpack 3;
+#X floatatom 562 305 5 0 0 0 - - -;
+#X obj 465 190 t a a;
+#X obj 382 301 display;
+#X floatatom 601 305 5 0 0 0 - - -;
+#X floatatom 640 305 5 0 0 0 - - -;
+#X text 1 51 [#unpack];
+#X obj 579 352 #pack 3;
+#X text 0 122 It takes an integer as an argument to specify the number
+of Dimensions the incoming grid has.;
+#X obj 465 76 #color;
+#X obj 565 411 #color;
+#X text 1 84 Accepts grids in its inlet and produces integers via its
+outlet.;
+#X text 10 349 [#pack];
+#X text 10 382 Accepts integers in its inlets and produces a corresponding
+grid via its outlet.;
+#X text 9 421 It takes an integer as an argument to specify the number
+of incoming integers and the corresponding number of Dimensions the
+outgoing grid will have.;
+#X obj 532 332 - 127;
+#X obj 18 190 trigger bang bang;
+#X obj 215 178 metro 100;
+#X obj 138 345 display;
+#X obj 223 272 print blah;
+#X obj 194 316 print blah2;
+#X obj 171 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X connect 1 0 2 0;
+#X connect 1 1 5 0;
+#X connect 1 2 6 0;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 3 1 1 0;
+#X connect 5 0 8 1;
+#X connect 6 0 8 2;
+#X connect 8 0 11 0;
+#X connect 10 0 3 0;
+#X connect 16 0 8 0;
+#X connect 18 0 19 0;
+#X connect 18 0 20 0;
+#X connect 18 0 21 0;
+#X connect 22 0 18 0;
diff --git a/externals/gridflow/doc/flow_classes/#unpack-help.pd b/externals/gridflow/doc/flow_classes/#unpack-help.pd
new file mode 100644
index 00000000..8d217fd6
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/#unpack-help.pd
@@ -0,0 +1,40 @@
+#N canvas 286 66 511 484 10;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 316 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 225 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 248 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 409 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 203 410 Arguments (1);
+#X obj 1 337 cnv 15 79 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 15 446 INTEGER;
+#X text 15 368 INTEGER;
+#X text 17 282 GRID;
+#X obj 11 1 #unpack;
+#X obj 17 61 #color;
+#X floatatom 17 195 5 0 0 0 - - -;
+#X floatatom 46 174 5 0 0 0 - - -;
+#X floatatom 75 152 5 0 0 0 - - -;
+#X text 204 318 Outlets (n);
+#X text 204 227 Inlets (1);
+#X text 91 282 Accepts a grid.;
+#X text 196 84 <--click and drag to view grid values.;
+#X text 12 28 Outputs individual integer values from a grid.;
+#X obj 17 128 cnv 15 65 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 17 128 #unpack 3;
+#X text 87 369 Outputs grid dimensions as individual integers.;
+#X text 397 1 GridFlow 0.8.4;
+#X text 11 250 Inlet 0;
+#X text 5 338 Outlet All;
+#X text 84 445 Defines the number of outlets \, usually corresponds
+to the number of grid dimensions.;
+#X connect 11 0 21 0;
+#X connect 21 0 12 0;
+#X connect 21 1 13 0;
+#X connect 21 2 14 0;
diff --git a/externals/gridflow/doc/flow_classes/0x40complex_sq-help.pd b/externals/gridflow/doc/flow_classes/0x40complex_sq-help.pd
new file mode 100644
index 00000000..d5fac1a2
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/0x40complex_sq-help.pd
@@ -0,0 +1,28 @@
+#N canvas 301 131 637 303 10;
+#X obj 21 159 @complex_sq;
+#X text 96 15 this object computes the square of complex numbers. if
+seeing imaginary as Y and real as X \, then this operation squares
+the distance of a point from origin and doubles the angle between it
+and the +X half-axis clockwise. :);
+#X floatatom 21 108 5 0 0 0 - - -;
+#X floatatom 21 238 5 0 0 0 - - -;
+#X floatatom 64 108 5 0 0 0 - - -;
+#X floatatom 58 238 5 0 0 0 - - -;
+#X text 572 13 gridflow;
+#X text 21 275 see also:;
+#X obj 21 128 #pack;
+#X text 138 88 However \, this (old) object is backwards from the rest
+of GridFlow because it puts Imaginary before Real. [#fft] puts the
+Real part first.;
+#X text 14 14 @complex_sq;
+#X obj 114 235 #print;
+#X obj 21 209 #unpack;
+#X obj 94 279 # +;
+#X obj 127 279 # abs-;
+#X connect 0 0 11 0;
+#X connect 0 0 12 0;
+#X connect 2 0 8 0;
+#X connect 4 0 8 1;
+#X connect 8 0 0 0;
+#X connect 12 0 3 0;
+#X connect 12 1 5 0;
diff --git a/externals/gridflow/doc/flow_classes/0x40join-help.pd b/externals/gridflow/doc/flow_classes/0x40join-help.pd
new file mode 100644
index 00000000..6bf7630e
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/0x40join-help.pd
@@ -0,0 +1,44 @@
+#N canvas 677 232 659 362 10;
+#X obj 18 32 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X obj 211 30 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1
+-1;
+#X obj 18 161 @join 2;
+#X text 16 8 @join;
+#X text 204 238 the left grid and right grid must have the same number
+of elements in all dimensions except the one specified \, which will
+be the sum of the two corresponding;
+#X text 563 10 gridflow;
+#X text 17 306 see also:;
+#X msg 41 73 open r001.jpg;
+#X msg 234 69 open b001.jpg;
+#X obj 18 53 fork;
+#X obj 211 48 fork;
+#X text 244 29 1 <--;
+#X text 45 31 2 <--;
+#X obj 18 242 #clip;
+#X obj 86 310 #fold +;
+#X obj 142 310 #scan +;
+#X obj 18 269 #out window;
+#X obj 18 96 #in;
+#X obj 237 96 #rgb_to_greyscale;
+#X obj 211 96 #in;
+#X obj 18 188 #perspective 128;
+#X text 205 170 creation argument is the index of the dimension by
+which the join will occur. for n-dimensional grids \, the dimensions
+are numbered from 0 to n-1. in addition \, negative numbers from -n
+to -1 may be used \, to which n will be added.;
+#X connect 0 0 9 0;
+#X connect 1 0 10 0;
+#X connect 2 0 20 0;
+#X connect 7 0 17 0;
+#X connect 8 0 19 0;
+#X connect 9 0 17 0;
+#X connect 9 1 7 0;
+#X connect 10 0 19 0;
+#X connect 10 1 8 0;
+#X connect 13 0 16 0;
+#X connect 17 0 2 0;
+#X connect 18 0 2 1;
+#X connect 19 0 18 0;
+#X connect 20 0 13 0;
diff --git a/externals/gridflow/doc/flow_classes/ascii-help.pd b/externals/gridflow/doc/flow_classes/ascii-help.pd
new file mode 100644
index 00000000..99ee3cac
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/ascii-help.pd
@@ -0,0 +1,30 @@
+#N canvas 442 305 506 373 10;
+#X obj 39 93 ascii;
+#X floatatom 39 61 5 0 0 0 - - -;
+#X obj 39 124 print;
+#X msg 86 60 42;
+#X obj 1 -2 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 -2 GridFlow 0.9.3;
+#X obj 11 -2 ascii;
+#X obj 1 176 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 199 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 200 Inlet 0;
+#X text 215 176 Inlets (1);
+#X text 5 225 INT;
+#X obj 1 282 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 284 Outlets (1);
+#X obj 1 303 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 304 Outlet 0;
+#X text 8 332 FLOAT;
+#X text 135 94 write integer as decimal in ascii codes;
+#X text 84 225 number to be converted into ascii codes;
+#X text 82 332 a sequence of floats corresponding to the ascii codes
+of the input integer;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
diff --git a/externals/gridflow/doc/flow_classes/condition-help.pd b/externals/gridflow/doc/flow_classes/condition-help.pd
new file mode 100644
index 00000000..a5b0385c
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/condition-help.pd
@@ -0,0 +1,16 @@
+#N canvas 78 0 388 273 10;
+#X obj 33 112 condition 0 0 60 90;
+#X floatatom 33 77 5 0 0 0 - - -;
+#X floatatom 161 77 5 0 0 0 - - -;
+#X obj 33 148 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 161 148 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X text 31 16 accepts (X0 \, Y0) (X1 \, Y1);
+#X text 30 194 returns a bang only when the condition changes;
+#X text 30 236 use with;
+#X obj 99 237 #motion_detection;
+#X connect 0 0 3 0;
+#X connect 0 1 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
diff --git a/externals/gridflow/doc/flow_classes/count-help.pd b/externals/gridflow/doc/flow_classes/count-help.pd
new file mode 100644
index 00000000..9d812919
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/count-help.pd
@@ -0,0 +1,15 @@
+#N canvas 85 117 336 239 10;
+#X obj 65 80 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 65 144 5 0 0 0 - - -;
+#X obj 130 143 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 130 79 42;
+#X obj 65 110 count 0 10;
+#X text 158 78 count limit;
+#X text 26 19 simple counter from a to b in increments of '1'. The
+arguments sets the range.;
+#X connect 0 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 1 0;
+#X connect 4 1 2 0;
diff --git a/externals/gridflow/doc/flow_classes/cv.Kalman-help.pd b/externals/gridflow/doc/flow_classes/cv.Kalman-help.pd
new file mode 100644
index 00000000..354f4831
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/cv.Kalman-help.pd
@@ -0,0 +1,25 @@
+#N canvas 657 262 450 300 10;
+#X obj 46 59 metro 100;
+#X obj 46 42 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 144 92 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X obj 116 91 f;
+#X obj 141 136 -;
+#X obj 116 158 #pack;
+#X obj 116 110 t f f f;
+#X obj 116 177 #redim (2 1);
+#X obj 47 239 display;
+#X obj 46 213 cv.Kalman 2 1 1;
+#X text 132 21 This is a help file \, so \, HELP!;
+#X connect 0 0 9 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 1;
+#X connect 3 0 6 0;
+#X connect 4 0 5 1;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 6 1 4 1;
+#X connect 6 2 4 0;
+#X connect 7 0 9 1;
+#X connect 9 0 8 0;
diff --git a/externals/gridflow/doc/flow_classes/cv.numop-help.pd b/externals/gridflow/doc/flow_classes/cv.numop-help.pd
new file mode 100644
index 00000000..26f89c99
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/cv.numop-help.pd
@@ -0,0 +1,45 @@
+#N canvas 1083 158 509 668 10;
+#X obj 4 1 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 401 2 GridFlow 0.9.0;
+#X text 5 0 [opencv];
+#X obj 2 629 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 629 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 629 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 2 629 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 8 630 see also :;
+#X text 91 629 #numop-help.pd;
+#X obj 22 135 #print;
+#X msg 22 69 2 2 # 0 1 2 3;
+#X obj 22 100 cv.Add (2 2 # 0 1 2 3);
+#X obj 22 260 #print;
+#X msg 22 194 2 2 # 0 1 2 3;
+#X obj 22 387 #print;
+#X msg 22 321 2 2 # 0 1 2 3;
+#X obj 22 514 #print;
+#X msg 22 448 2 2 # 0 1 2 3;
+#X obj 22 225 cv.Sub (2 2 # 0 1 2 3);
+#X obj 22 352 cv.Mul (2 2 # 0 1 2 3);
+#X obj 22 479 cv.Div (2 2 # 0 1 2 3);
+#X msg 151 448 2 2 # 0 1 42 666;
+#X msg 151 321 2 2 # 0 1 42 666;
+#X msg 151 194 2 2 # 0 1 42 666;
+#X msg 151 69 2 2 # 0 1 42 666;
+#X text 274 479 rounds down;
+#X text 87 0 numeric operators;
+#X connect 10 0 11 0;
+#X connect 11 0 9 0;
+#X connect 13 0 18 0;
+#X connect 15 0 19 0;
+#X connect 17 0 20 0;
+#X connect 18 0 12 0;
+#X connect 19 0 14 0;
+#X connect 20 0 16 0;
+#X connect 21 0 20 1;
+#X connect 22 0 19 1;
+#X connect 23 0 18 1;
+#X connect 24 0 11 1;
diff --git a/externals/gridflow/doc/flow_classes/display-help.pd b/externals/gridflow/doc/flow_classes/display-help.pd
new file mode 100644
index 00000000..3006888a
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/display-help.pd
@@ -0,0 +1,30 @@
+#N canvas 414 111 504 403 10;
+#X obj 0 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 339 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 241 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 0 264 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 5 265 Inlet_0;
+#X obj 0 370 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 202 243 Inlets (1);
+#X text 16 312 GRID;
+#X text 17 287 LIST;
+#X text 15 300 INTEGER;
+#X text 394 1 GridFlow 0.8.5;
+#X text 88 278 GUI object equivalent to [print] and [#print]. method
+(any) () Displays the received message in the box \, resizing the box
+so that the message fits exactly.;
+#X obj 90 185 display;
+#X text 5 0 [display];
+#X text 202 340 Outlets (0);
+#X text 204 369 Arguments (0);
+#X msg 319 61 0 1 2 3 5 8 13;
+#X floatatom 319 89 5 0 0 0 - - -;
+#X obj 89 58 #color;
+#X connect 16 0 12 0;
+#X connect 17 0 12 0;
+#X connect 18 0 12 0;
diff --git a/externals/gridflow/doc/flow_classes/exec-help.pd b/externals/gridflow/doc/flow_classes/exec-help.pd
new file mode 100644
index 00000000..4d43e556
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/exec-help.pd
@@ -0,0 +1,40 @@
+#N canvas 628 0 501 450 10;
+#X obj 10 105 cnv 15 30 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 1 273 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 146 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 169 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 324 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 170 Inlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 9 1 exec;
+#X obj 10 105 exec;
+#X obj 13 407 renamefile;
+#X obj 128 407 unix_time;
+#X obj 96 407 ls;
+#X msg 10 77 shell xlogo &;
+#X msg 119 77 shell ftp ac@artengine.ca &;
+#X text 221 147 Inlets (1);
+#X text 398 2 GridFlow 0.8.4;
+#X obj 1 379 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 380 See also;
+#X text 9 25 The [exec] launches a Unix shell program or script. It
+does not return a result \, see the PureData shell after using the
+ftp command.;
+#X text 9 197 SYMBOL;
+#X text 215 275 Outlets (0);
+#X text 15 297 No outlet;
+#X text 210 325 Arguments (0);
+#X text 64 354;
+#X text 14 352 No argument;
+#X text 56 196 Inlet 0 accepts a symbol made of the word "shell" which
+creates a Unix shell and the program or script to be executed in that
+shell like "xlogo &" or "ftp ftpsitename &" \, etc.;
+#X connect 12 0 8 0;
+#X connect 13 0 8 0;
diff --git a/externals/gridflow/doc/flow_classes/for-help.pd b/externals/gridflow/doc/flow_classes/for-help.pd
new file mode 100644
index 00000000..f73c4f00
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/for-help.pd
@@ -0,0 +1,9 @@
+#N canvas 472 284 450 300 10;
+#X obj 41 95 print;
+#X text 41 132 note that 104 should not be included!;
+#X obj 41 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 40 115 should print 10 23 36 49 62 75 88 101;
+#X obj 41 71 for 10 114 13;
+#X connect 2 0 4 0;
+#X connect 4 0 0 0;
diff --git a/externals/gridflow/doc/flow_classes/gf.oneshot-help.pd b/externals/gridflow/doc/flow_classes/gf.oneshot-help.pd
new file mode 100644
index 00000000..366cc68c
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/gf.oneshot-help.pd
@@ -0,0 +1,51 @@
+#N canvas 161 29 505 543 10;
+#X obj 5 435 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 260 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 283 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 524 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 5 456 cnv 15 65 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 205 262 Inlets (2);
+#X text 6 284 Inlet 0;
+#X obj 3 352 cnv 15 73 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 353 Inlet 1;
+#X text 5 316 ANY;
+#X text 8 490 ANY;
+#X obj 127 159 cnv 15 72 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 29 34 Like [spigot] \, but turns itself off after each message
+\, so you have to turn it on again to making it pass another message.
+;
+#X text 206 437 Outlets (1);
+#X text 9 457 Outlet;
+#X msg 195 126 1;
+#X obj 171 126 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X msg 127 88 test;
+#X obj 127 219 print;
+#X floatatom 168 90 5 0 0 0 - - -;
+#X floatatom 171 220 5 0 0 0 - - -;
+#X text 232 126 <-- both will reset the object;
+#X text 5 385 BANG;
+#X text 74 489 Outputs incoming message.;
+#X text 194 525 Arguments (none);
+#X text 77 315 Incoming message can be Grids \, Symbols \, Integers
+\, Lists \, etc.;
+#X text 76 385 Resets the object so that the next mesage will be passed
+through.;
+#X obj 127 159 gf.oneshot;
+#X obj 12 1 gf.oneshot;
+#X text 393 1 GridFlow 0.9.4;
+#X connect 16 0 28 1;
+#X connect 17 0 28 1;
+#X connect 18 0 28 0;
+#X connect 20 0 28 0;
+#X connect 28 0 19 0;
+#X connect 28 0 21 0;
diff --git a/externals/gridflow/doc/flow_classes/gridflow-help.pd b/externals/gridflow/doc/flow_classes/gridflow-help.pd
new file mode 100644
index 00000000..dd0f8fae
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/gridflow-help.pd
@@ -0,0 +1,11 @@
+#N canvas 624 183 400 205 10;
+#X text 22 53 dummy object for controlling the profiler;
+#X msg 48 95 profiler_reset;
+#X msg 59 115 profiler_dump;
+#X text 321 18 gridflow;
+#X obj 24 146 gridflow;
+#X text 21 22 gridflow;
+#X msg 168 95 \; gridflow profiler_reset;
+#X msg 168 115 \; gridflow profiler_dump;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
diff --git a/externals/gridflow/doc/flow_classes/inv*-help.pd b/externals/gridflow/doc/flow_classes/inv*-help.pd
new file mode 100644
index 00000000..0b4af986
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/inv*-help.pd
@@ -0,0 +1,96 @@
+#N canvas 602 28 510 655 10;
+#X obj 1 438 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 7 329 FLOAT;
+#X obj 1 280 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 303 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 440 Outlets (1);
+#X obj 1 521 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 520 Arguments (1);
+#X obj 1 371 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 459 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 394 FLOAT;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 304 Inlet 0;
+#X text 2 373 Inlet 1;
+#X text 221 281 Inlets (2);
+#X text 2 460 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 2 GridFlow 0.8.4;
+#X obj 219 121 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 219 163 #in;
+#X obj 263 164 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 1
+1;
+#X obj 219 82 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
+;
+#X obj 219 185 shunt 2;
+#X text 369 140 image loader;
+#X msg 219 139 open r001.jpg \, bang;
+#X obj 219 101 metro 33.3667;
+#X obj 219 238 #out window \, title inv+;
+#X text 349 221 Outputs negated image;
+#X text 68 221 Outputs initial image;
+#X obj 338 192 hsl 128 8 1000 65000 0 0 empty empty empty -2 -6 0 8
+-262144 -1 -1 1600 1;
+#X text 10 548 FLOAT;
+#X obj 1 590 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 216 592 See also;
+#X obj 105 616 swap;
+#X obj 105 616 swap;
+#X floatatom 34 102 5 0 0 0 - - -;
+#X floatatom 57 120 5 0 0 0 - - -;
+#X floatatom 34 176 5 0 0 0 - - -;
+#X text 323 78 Another application inv+ as a numerical operator of
+the Grid object;
+#X obj 263 210 cnv 15 80 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 33 144 cnv 15 30 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 11 483 FLOAT;
+#X floatatom 105 104 5 0 0 0 - - -;
+#X floatatom 149 121 5 0 0 0 - - -;
+#X floatatom 105 178 5 0 0 0 - - -;
+#X obj 105 145 cnv 15 50 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 9 0 inv*;
+#X obj 105 145 inv* 10;
+#X obj 34 144 inv*;
+#X text 62 548 [inv*] accepts a single float as a creation argument
+which initializes the first value to perform the operation with.;
+#X obj 12 616 inv+;
+#X obj 52 616 # inv*;
+#X text 8 24 The [inv*] performs an inversion on the data passed to
+it. If you consider inlet 0 as the variable "a" and inlet 1 as variable
+"b" \, [inv*] performs the operation "b/a" on the values passed to
+it.;
+#X text 62 330 A float in inlet 1 is stored as the value "a" to perform
+the "b/a" operation.;
+#X text 62 396 A float in inlet 1 is stored as the value "b" to perform
+the "b/a" operation.;
+#X text 64 485 Outputs the result of the operation "b/a".;
+#X obj 263 209 # inv* 4000;
+#X text 288 163 inversion;
+#X connect 17 0 23 0;
+#X connect 18 0 21 0;
+#X connect 19 0 21 1;
+#X connect 20 0 24 0;
+#X connect 21 0 25 0;
+#X connect 21 1 55 0;
+#X connect 23 0 18 0;
+#X connect 24 0 17 0;
+#X connect 28 0 55 1;
+#X connect 34 0 47 0;
+#X connect 35 0 47 1;
+#X connect 41 0 46 0;
+#X connect 42 0 46 1;
+#X connect 46 0 43 0;
+#X connect 47 0 36 0;
+#X connect 55 0 25 0;
diff --git a/externals/gridflow/doc/flow_classes/inv+-help.pd b/externals/gridflow/doc/flow_classes/inv+-help.pd
new file mode 100644
index 00000000..e0d6bcdc
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/inv+-help.pd
@@ -0,0 +1,96 @@
+#N canvas 698 0 510 655 10;
+#X obj 1 438 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 7 329 FLOAT;
+#X obj 1 280 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 303 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 440 Outlets (1);
+#X obj 1 521 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 520 Arguments (1);
+#X obj 1 371 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 459 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 6 394 FLOAT;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 304 Inlet 0;
+#X text 2 373 Inlet 1;
+#X text 221 281 Inlets (2);
+#X text 2 460 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 2 GridFlow 0.8.4;
+#X obj 219 121 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 288 163 negative;
+#X obj 219 163 #in;
+#X obj 263 164 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0
+1;
+#X obj 219 82 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+;
+#X obj 219 185 shunt 2;
+#X text 369 140 image loader;
+#X msg 219 139 open r001.jpg \, bang;
+#X obj 219 101 metro 33.3667;
+#X obj 219 238 #out window \, title inv+;
+#X text 349 221 Outputs negated image;
+#X text 68 221 Outputs initial image;
+#X obj 331 192 hsl 128 8 0 255 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 6000 1;
+#X text 10 548 FLOAT;
+#X text 62 396 A float in inlet 1 is stored as the value "b" to perform
+the "b-a" operation.;
+#X text 62 330 A float in inlet 1 is stored as the value "a" to perform
+the "b-a" operation.;
+#X obj 1 590 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 216 592 See also;
+#X obj 105 616 swap;
+#X obj 105 616 swap;
+#X obj 9 0 inv+;
+#X text 62 548 [inv+] accepts a single float as a creation argument
+which initializes the first value to perform the operation with.;
+#X obj 12 616 inv*;
+#X text 9 24 The [inv+] performs an inversion on the data passed to
+it. If you consider inlet 0 as the variable "a" and inlet 1 as variable
+"b" \, [inv+] performs the operation "b-a" on the values passed to
+it.;
+#X floatatom 34 102 5 0 0 0 - - -;
+#X floatatom 57 119 5 0 0 0 - - -;
+#X floatatom 34 176 5 0 0 0 - - -;
+#X text 323 78 Another application inv+ as a numerical operator of
+the Grid object;
+#X obj 52 616 # inv+;
+#X obj 264 211 cnv 15 72 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 33 144 cnv 15 30 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 34 144 inv+;
+#X obj 263 211 # inv+ 255;
+#X text 11 483 FLOAT;
+#X text 64 485 Outputs the result of the operation "b-a".;
+#X floatatom 105 104 5 0 0 0 - - -;
+#X floatatom 149 121 5 0 0 0 - - -;
+#X floatatom 105 178 5 0 0 0 - - -;
+#X obj 105 145 cnv 15 50 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 105 145 inv+ 10;
+#X connect 17 0 24 0;
+#X connect 19 0 22 0;
+#X connect 20 0 22 1;
+#X connect 21 0 25 0;
+#X connect 22 0 26 0;
+#X connect 22 1 49 0;
+#X connect 24 0 19 0;
+#X connect 25 0 17 0;
+#X connect 29 0 49 1;
+#X connect 41 0 48 0;
+#X connect 42 0 48 1;
+#X connect 48 0 43 0;
+#X connect 49 0 26 0;
+#X connect 52 0 56 0;
+#X connect 53 0 56 1;
+#X connect 56 0 54 0;
diff --git a/externals/gridflow/doc/flow_classes/listappend-help.pd b/externals/gridflow/doc/flow_classes/listappend-help.pd
new file mode 100644
index 00000000..cd77dff7
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/listappend-help.pd
@@ -0,0 +1,58 @@
+#N canvas 38 23 507 568 10;
+#X obj 1 334 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 235 LIST;
+#X obj 1 185 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 208 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 336 Outlets (1);
+#X obj 2 414 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 355 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 209 Inlet 0;
+#X text 2 356 Outlet 0;
+#X obj -3 -1 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 472 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 219 473 See also;
+#X obj 10 506 listappend;
+#X obj 99 506 listelement;
+#X obj 198 507 listfind;
+#X obj 291 507 listflatten;
+#X obj 11 533 listmake;
+#X obj 99 532 listprepend;
+#X obj 199 533 listreverse;
+#X obj 292 533 listsublist;
+#X msg 80 87 1 3 hello 8 13;
+#X obj 80 131 cnv 15 170 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X msg 248 85 1 12 a b c d e f g h i j k l;
+#X obj 81 155 display;
+#X obj 2 271 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 3 273 Inlet 1;
+#X text 8 380 LIST;
+#X msg 257 106 200 201 202 203 204 205 206;
+#X text 66 235 Accepts a list to be appended to initial list.;
+#X text 9 297 LIST;
+#X text 221 186 Inlets (2);
+#X text 65 381 Outputs the resulting list.;
+#X text 213 413 Arguments (n);
+#X text 7 441 ANY;
+#X text 62 442 This optional argument can contain the initial list
+;
+#X obj 10 0 listappend;
+#X obj 80 132 listappend 1 2 3 4 5 6 7;
+#X text 11 22 The [listappend] combines two lists together. It takes
+the initial list (List1)(passed as an argument or to inlet 1) and appends
+to it the list passed to inlet 0 (List0). [listappend] combines List0
+followed by List1 in a new list.;
+#X text 65 297 Accepts initial list to appended.;
+#X text 392 0 GridFlow 0.9.0;
+#X connect 20 0 36 0;
+#X connect 22 0 36 1;
+#X connect 27 0 36 1;
+#X connect 36 0 23 0;
diff --git a/externals/gridflow/doc/flow_classes/listelement-help.pd b/externals/gridflow/doc/flow_classes/listelement-help.pd
new file mode 100644
index 00000000..e1aa3bf9
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/listelement-help.pd
@@ -0,0 +1,52 @@
+#N canvas 92 61 509 554 10;
+#X obj 4 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 323 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 176 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 4 199 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 9 200 Inlet_0;
+#X text 206 178 Inlets (2);
+#X text 215 325 Outlets (1);
+#X obj 6 429 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 212 428 Arguments (1);
+#X obj 5 261 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 344 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 262 Inlet_1;
+#X obj 11 1 listelement;
+#X floatatom 262 142 5 0 0 0 - - -;
+#X floatatom 281 88 5 0 0 0 - - -;
+#X obj 195 140 print;
+#X msg 195 63 1 3 hello 8 13;
+#X obj 195 111 cnv 15 93 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X text 7 346 Outlet_0;
+#X text 14 231 LIST;
+#X text 10 460 INTEGER;
+#X obj 195 111 listelement 0;
+#X text 78 231 Accepts a list of numbers or symbols.;
+#X text 10 25 Outputs one element from a list as selected by an integer.
+;
+#X text 10 373 INTEGER;
+#X text 11 387 SYMBOL;
+#X text 75 373 The element selected by the index is sent to the outlet
+and can be viewed in the console using the print object or in a number
+box if displaying an integer.;
+#X text 75 460 An integer acts as an index \, it selects the position
+of an element in a list. The selected element is output \, for example:
+integer "0" selects and outputs the first element in a list \, integer
+"1" selects and outputs the second element in a list \, integers "-1"
+selects and outputs the last element in a list.;
+#X text 77 289 Changes the value of the argument i.e. changes the index
+into the list to get a different element.;
+#X text 11 290 INTEGER;
+#X text 396 1 GridFlow 0.9.0;
+#X connect 14 0 21 1;
+#X connect 16 0 21 0;
+#X connect 21 0 13 0;
+#X connect 21 0 15 0;
diff --git a/externals/gridflow/doc/flow_classes/listflatten-help.pd b/externals/gridflow/doc/flow_classes/listflatten-help.pd
new file mode 100644
index 00000000..6db88217
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/listflatten-help.pd
@@ -0,0 +1,46 @@
+#N canvas 630 27 508 513 10;
+#X obj 1 302 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 255 LIST;
+#X obj 1 205 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 228 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 304 Outlets (1);
+#X obj 0 382 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 323 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 229 Inlet 0;
+#X text 2 324 Outlet 0;
+#X obj 1 418 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 219 419 See also;
+#X obj 10 452 listappend;
+#X obj 99 452 listelement;
+#X obj 198 453 listfind;
+#X obj 291 453 listflatten;
+#X obj 11 477 listmake;
+#X obj 99 476 listprepend;
+#X obj 199 477 listreverse;
+#X obj 292 477 listsublist;
+#X obj 103 104 cnv 15 79 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 104 137 display;
+#X text 8 348 LIST;
+#X obj -1 -3 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 6 -2 listflatten;
+#X text 393 -2 GridFlow 0.9.0;
+#X text 221 206 Inlets (1);
+#X obj 103 104 listflatten;
+#X text 212 382 Arguments (0);
+#X text 64 348 Outputs the flattened list.;
+#X msg 88 68 1 (2 (3 4 5) 6 7) 8;
+#X text 25 22 Takes nested lists and places their contents into a single
+list.;
+#X obj 89 171 display;
+#X text 65 255 Accepts a nested list.;
+#X connect 26 0 20 0;
+#X connect 29 0 26 0;
+#X connect 29 0 31 0;
diff --git a/externals/gridflow/doc/flow_classes/listlength-help.pd b/externals/gridflow/doc/flow_classes/listlength-help.pd
new file mode 100644
index 00000000..f5693914
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/listlength-help.pd
@@ -0,0 +1,52 @@
+#N canvas 687 0 504 509 10;
+#X obj 1 273 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 218 LIST;
+#X obj 1 168 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 191 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 275 Outlets (1);
+#X obj 2 353 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 294 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 192 Inlet 0;
+#X text 2 295 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 10 0 listlength;
+#X text 398 2 GridFlow 0.8.4;
+#X text 8 26 The [listlength] outputs the number of elements in the
+incoming list.;
+#X text 221 169 Inlets (1);
+#X text 61 320 Outputs the number of elements in the list.;
+#X text 9 380 No argument;
+#X text 211 354 Arguments (0);
+#X text 9 380 No argument;
+#X obj 3 411 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 219 412 See also;
+#X obj 10 445 listappend;
+#X obj 99 445 listelement;
+#X obj 198 446 listfind;
+#X obj 291 446 listflatten;
+#X obj 11 472 listmake;
+#X obj 99 471 listprepend;
+#X obj 199 472 listreverse;
+#X obj 292 472 listsublist;
+#X floatatom 206 142 5 0 0 0 - - -;
+#X obj 139 140 print;
+#X msg 139 63 1 3 hello 8 13;
+#X obj 139 102 cnv 15 73 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 139 102 listlength;
+#X msg 246 78 1 12 a b c d e f g h i j k l;
+#X text 58 218 The length of the list passed to the left inlet will
+be returned in the outlet.;
+#X text 8 319 INT;
+#X connect 31 0 33 0;
+#X connect 33 0 29 0;
+#X connect 33 0 30 0;
+#X connect 34 0 33 0;
diff --git a/externals/gridflow/doc/flow_classes/listprepend-help.pd b/externals/gridflow/doc/flow_classes/listprepend-help.pd
new file mode 100644
index 00000000..d02f9d69
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/listprepend-help.pd
@@ -0,0 +1,59 @@
+#N canvas 631 0 507 568 10;
+#X obj 1 334 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 235 LIST;
+#X obj 1 185 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 208 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 336 Outlets (1);
+#X obj 2 414 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 355 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 209 Inlet 0;
+#X text 2 356 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 472 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 219 473 See also;
+#X obj 10 506 listappend;
+#X obj 99 506 listelement;
+#X obj 198 507 listfind;
+#X obj 291 507 listflatten;
+#X obj 11 533 listmake;
+#X obj 99 532 listprepend;
+#X obj 199 533 listreverse;
+#X obj 292 533 listsublist;
+#X msg 80 87 1 3 hello 8 13;
+#X obj 78 131 cnv 15 178 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X msg 248 85 1 12 a b c d e f g h i j k l;
+#X obj 81 155 display;
+#X obj 2 271 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 3 273 Inlet 1;
+#X text 8 380 LIST;
+#X obj 10 0 listprepend;
+#X msg 257 106 200 201 202 203 204 205 206;
+#X obj 80 132 listprepend 1 2 3 4 5 6 7;
+#X text 66 235 Accepts a list to be appended to initial list.;
+#X text 9 297 LIST;
+#X text 64 297 Accepts initial list to be appended to.;
+#X text 221 186 Inlets (2);
+#X text 65 381 Outputs the resulting list.;
+#X text 213 413 Arguments (n);
+#X text 7 441 ANY;
+#X text 62 442 This optional argument can contain the initial list
+;
+#X text 8 25 The [listprepend] combines two lists together. It takes
+the initial list (List1)(passed as an argument or to inlet 1) and appends
+the list passed to inlet 0 (List0). [listprepend] combines List1 followed
+by List0 in a new list.;
+#X text 398 2 GridFlow 0.9.0;
+#X connect 21 0 30 0;
+#X connect 23 0 30 1;
+#X connect 29 0 30 1;
+#X connect 30 0 24 0;
diff --git a/externals/gridflow/doc/flow_classes/listsublist-help.pd b/externals/gridflow/doc/flow_classes/listsublist-help.pd
new file mode 100644
index 00000000..3ad88017
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/listsublist-help.pd
@@ -0,0 +1,64 @@
+#N canvas 630 27 508 642 10;
+#X obj 1 433 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 10 255 LIST;
+#X obj 1 205 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 228 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 215 435 Outlets (1);
+#X obj 2 513 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 454 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 398 1 GridFlow 0.8.4;
+#X text 2 229 Inlet 0;
+#X text 2 455 Outlet 0;
+#X obj 1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 3 571 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 219 572 See also;
+#X obj 10 605 listappend;
+#X obj 99 605 listelement;
+#X obj 198 606 listfind;
+#X obj 291 606 listflatten;
+#X obj 11 630 listmake;
+#X obj 99 629 listprepend;
+#X obj 199 630 listreverse;
+#X obj 292 630 listsublist;
+#X msg 153 89 1 3 hello 8 13;
+#X obj 153 153 cnv 15 57 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X msg 162 113 1 12 a b c d e f g h i j k l;
+#X obj 154 177 display;
+#X obj 2 283 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 3 285 Inlet 1;
+#X text 3 314 INTEGER;
+#X text 65 255 Accepts a list.;
+#X text 65 314 The index in the list to start the sublist at.;
+#X obj 1 346 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 373 INTEGER;
+#X text 2 348 Inlet 2;
+#X text 66 373 The number of items wanted from the list starting at
+the index specified.;
+#X text 212 513 Arguments (2);
+#X text 8 479 LIST;
+#X text 64 480 Outputs the sublist as specified by the inlets or the
+arguments.;
+#X text 6 538 Integers specifying index and length of the sublist;
+#X text 9 23 The [listsublist] outputs consecutive elements of the
+list \, as selected by index (inlet 1 or arg 1) and length (inlet 2
+or arg 2). A negative index will start from the end of the list (like
+-1 means last element in the list).;
+#X floatatom 204 135 5 0 0 0 - - -;
+#X text 398 2 GridFlow 0.9.0;
+#X text 221 206 Inlets (3);
+#X obj 153 153 listmake;
+#X obj 3 -1 listmake;
+#X connect 21 0 42 0;
+#X connect 23 0 42 0;
+#X connect 39 0 42 1;
+#X connect 42 0 24 0;
diff --git a/externals/gridflow/doc/flow_classes/ls-help.pd b/externals/gridflow/doc/flow_classes/ls-help.pd
new file mode 100644
index 00000000..5bc04c39
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/ls-help.pd
@@ -0,0 +1,21 @@
+#N canvas 293 272 624 295 10;
+#X text 259 22 GridFlow 0.8.0;
+#X text 30 266 see also:;
+#X obj 106 267 renamefile;
+#X obj 189 267 unix_time;
+#X obj 67 130 ls;
+#X obj 67 48 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 25 186 listlength;
+#X floatatom 25 220 5 0 0 0 - - -;
+#X obj 107 187 display;
+#X obj 265 267 exec;
+#X msg 67 81 symbol /home;
+#X text 157 118 Similar to the Unix command 'ls'. Returns the filenames
+in a directory. May be used with [listlength] to determine the number
+of files in a directory.;
+#X connect 4 0 6 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 7 0;
+#X connect 10 0 4 0;
diff --git a/externals/gridflow/doc/flow_classes/mysql-help.pd b/externals/gridflow/doc/flow_classes/mysql-help.pd
new file mode 100644
index 00000000..0c46ef08
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/mysql-help.pd
@@ -0,0 +1,22 @@
+#N canvas 0 0 558 326 10;
+#X obj 39 218 mysql;
+#X obj 52 278 rubyprint;
+#X msg 66 159 symbol test;
+#X obj 70 252 print mysql;
+#X msg 39 91 connect server_url mysql_user some_password database_name
+;
+#X msg 53 121 query select thing from some_table;
+#X msg 162 143 query select * from some_table order by rand() limit
+1;
+#X msg 60 187 query insert into some_table (something) values (' \$1
+');
+#X text 39 26 http://tmtm.org/en/mysql;
+#X text 37 9 [mysql] requires mysql-ruby from Tomita Masahiro;
+#X text 39 43 no recompiling required \; -);
+#X connect 0 0 1 0;
+#X connect 0 0 3 0;
+#X connect 2 0 7 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
diff --git a/externals/gridflow/doc/flow_classes/parallel_port-help.pd b/externals/gridflow/doc/flow_classes/parallel_port-help.pd
new file mode 100644
index 00000000..d871515d
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/parallel_port-help.pd
@@ -0,0 +1,78 @@
+#N canvas 0 27 742 490 10;
+#X floatatom 47 380 5 0 0 0 - - -;
+#X floatatom 121 348 5 0 0 0 - - -;
+#X floatatom 196 323 5 0 0 0 - - -;
+#X obj 47 34 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 0 1
+;
+#X text 420 278 * my system resets the owner of the printer port to
+'root.lp' so I need to issue as root 'chown myuser.lp';
+#X text 421 37 * you will need : a paper clip (or a 'high tech' solid
+core 22-18 awg wire) an led a button;
+#X text 422 238 * consult http://en.wikipedia.org/wiki/Parallel_Port
+for the pinouts + more;
+#X text 425 357 7 6 5 4 3 2 1 0 bit number;
+#X text 425 371 9 8 7 6 5 4 3 2 pin number;
+#X text 424 331 layout of bit to pin numbers;
+#X text 67 33 <-- This will send a 0 or a 1 to the first pin;
+#X text 421 145 2 connect the led between pins 2 (Data0) and 23 (GND)
+;
+#X text 421 87 1 break the paper clip in two and connect pin 11 (Busy)
+to pin 24 (GND) and pin 12 (Paper-Out) to 25 (GND). Those pins are
+normally 1 and grounding them opens the port for messages.;
+#X text 113 228 Will accept values from 0-255;
+#X obj 1 -37 cnv 15 840 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 722 -36 GridFlow 0.9.0;
+#X obj 47 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1
+;
+#X obj 69 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1
+;
+#X obj 91 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1
+;
+#X obj 113 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0
+1;
+#X obj 136 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0
+1;
+#X obj 158 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0
+1;
+#X obj 180 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0
+1;
+#X obj 203 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0
+1;
+#X obj 47 229 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-241291 -1 -1 0 256;
+#X obj 47 191 #fold +;
+#X obj 47 210 #export;
+#X obj 47 172 # << (0 1 2 3 4 5 6 7);
+#X obj 47 153 #pack 8 \, \, \, \, \, \, \, \, \, \, \, \, \, \, \,
+\,;
+#X text 206 293 takes the port as argument;
+#X text 93 379 <-- reserved for future use;
+#X text 44 -1 The cheapest digital i/o interface;
+#X text 238 322 <-- parallel port flags;
+#X text 419 188 3 connect a button between pin 10 and 22 (GND);
+#X text 163 348 <-- status (pin 10);
+#X obj 47 293 parallel_port /dev/lp0;
+#X obj 47 63 metro 1;
+#X text 425 402 Flags : PERRORP (active low) \, PSELECD (active high)
+\, POUTPA (active high) \, PACK (active low) \, PBUSY (active high)
+;
+#X obj 11 -37 parallel_port /dev/someport;
+#X connect 3 0 36 0;
+#X connect 16 0 28 0;
+#X connect 17 0 28 1;
+#X connect 18 0 28 2;
+#X connect 19 0 28 3;
+#X connect 20 0 28 4;
+#X connect 21 0 28 5;
+#X connect 22 0 28 6;
+#X connect 23 0 28 7;
+#X connect 24 0 35 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 0;
+#X connect 27 0 25 0;
+#X connect 28 0 27 0;
+#X connect 35 0 0 0;
+#X connect 35 1 1 0;
+#X connect 35 2 2 0;
+#X connect 36 0 16 0;
diff --git a/externals/gridflow/doc/flow_classes/plotter_control-help.pd b/externals/gridflow/doc/flow_classes/plotter_control-help.pd
new file mode 100644
index 00000000..1381d341
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/plotter_control-help.pd
@@ -0,0 +1,64 @@
+#N canvas 423 134 724 349 10;
+#X text 557 11 GridFlow 0.8.0;
+#X obj 92 99 r foo;
+#X msg 557 173 print_from_ascii $*;
+#X msg 557 52 print hello_world;
+#X msg 284 54 pu;
+#X msg 284 102 pd;
+#X msg 285 205 sp 0;
+#X msg 284 154 pa 120 160;
+#X obj 557 124 unix_time;
+#X obj 557 148 @export_list;
+#X obj 557 104 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 74 255 comport 0 9600;
+#X obj 76 129 plotter_control;
+#X obj 93 158 print hpgl_commands;
+#X obj 557 196 s foo;
+#X text 324 54 pen up;
+#X text 324 102 pen down;
+#X obj 557 74 s foo;
+#X text 368 154 move to absolute position;
+#N canvas 0 0 450 300 draw_a_rectangle 0;
+#X obj 120 196 @export_list;
+#X obj 128 159 @ * ( 110 320 );
+#X msg 31 156 pu \, sp 0;
+#X obj 28 97 fork;
+#X msg 114 222 pd \, pa \$2 \$1;
+#X msg 129 100 sp 5 \, pu \, pa 0 0 \, other si 320 320;
+#X obj 115 252 s foo;
+#X obj 33 71 fork;
+#X obj 30 126 fork;
+#X msg 128 134 0 0 \, 0 1 \, 1 1 \, 1 0 \, 0 0;
+#X obj 31 35 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 6 0;
+#X connect 3 0 8 0;
+#X connect 3 1 9 0;
+#X connect 4 0 6 0;
+#X connect 7 0 3 0;
+#X connect 7 1 5 0;
+#X connect 8 0 2 0;
+#X connect 9 0 1 0;
+#X connect 10 0 7 0;
+#X restore 557 228 pd draw_a_rectangle;
+#X text 76 9 plotter_control;
+#X text 74 280 use the comport object to interface to the plotter;
+#X obj 285 227 s foo;
+#X obj 284 176 s foo;
+#X obj 284 124 s foo;
+#X obj 284 76 s foo;
+#X text 328 207 (0...6) remove/change the pen;
+#X connect 1 0 12 0;
+#X connect 2 0 14 0;
+#X connect 3 0 17 0;
+#X connect 4 0 25 0;
+#X connect 5 0 24 0;
+#X connect 6 0 22 0;
+#X connect 7 0 23 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X connect 10 0 8 0;
+#X connect 12 0 13 0;
diff --git a/externals/gridflow/doc/flow_classes/renamefile-help.pd b/externals/gridflow/doc/flow_classes/renamefile-help.pd
new file mode 100644
index 00000000..70d9937c
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/renamefile-help.pd
@@ -0,0 +1,9 @@
+#N canvas 383 288 441 244 10;
+#X obj 50 120 renamefile;
+#X msg 50 76 list current_name new_name;
+#X obj 128 206 ls;
+#X text 42 208 also see :;
+#X text 313 21 GridFlow 0.8.0;
+#X text 45 157 * The path should correspond to the location of the
+file from where pd is started;
+#X connect 1 0 0 0;
diff --git a/externals/gridflow/doc/flow_classes/route2-help.pd b/externals/gridflow/doc/flow_classes/route2-help.pd
new file mode 100644
index 00000000..40f4debf
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/route2-help.pd
@@ -0,0 +1,21 @@
+#N canvas 0 0 450 300 10;
+#X obj 21 140 route2 blah foo bar;
+#X msg 39 39 blah blah blah;
+#X msg 39 62 foo 42;
+#X msg 39 86 bar 3.14159;
+#X obj 150 160 display;
+#X obj 107 180 display;
+#X obj 64 200 display;
+#X obj 22 220 display;
+#X msg 39 114 pas rapport;
+#X text 186 29 just like [route];
+#X text 187 46 but preserves message as-is;
+#X text 325 7 GridFlow 0.8.4;
+#X connect 0 0 7 0;
+#X connect 0 1 6 0;
+#X connect 0 2 5 0;
+#X connect 0 3 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 8 0 0 0;
diff --git a/externals/gridflow/doc/flow_classes/seq_fold-help.pd b/externals/gridflow/doc/flow_classes/seq_fold-help.pd
new file mode 100644
index 00000000..6870ac56
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/seq_fold-help.pd
@@ -0,0 +1,13 @@
+#N canvas 679 317 400 300 10;
+#X obj 125 166 seq_fold;
+#X msg 125 65 2 \, 3 \, 5 \, 7 \, end;
+#X obj 125 93 route end;
+#X obj 150 190 +;
+#X obj 126 239 display;
+#X connect 0 0 4 0;
+#X connect 0 1 3 0;
+#X connect 0 2 3 1;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 2 1 0 1;
+#X connect 3 0 0 3;
diff --git a/externals/gridflow/doc/flow_classes/shunt-help.pd b/externals/gridflow/doc/flow_classes/shunt-help.pd
new file mode 100644
index 00000000..7826ff2e
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/shunt-help.pd
@@ -0,0 +1,58 @@
+#N canvas 76 32 504 500 10;
+#X obj 1 331 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 181 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 204 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 412 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 210 411 Arguments (1);
+#X obj 1 271 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 1 352 cnv 15 60 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X text 2 205 Inlet 0;
+#X text 2 272 Inlet 1;
+#X text 221 182 Inlets (2);
+#X obj -1 0 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 10 0 shunt;
+#X obj 165 117 cnv 15 52 17 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 166 117 shunt 4;
+#X floatatom 121 151 5 0 0 0 - - -;
+#X floatatom 163 151 5 0 0 0 - - -;
+#X floatatom 205 151 5 0 0 0 - - -;
+#X floatatom 247 151 5 0 0 0 - - -;
+#X floatatom 166 85 5 0 0 0 - - -;
+#X obj 210 85 hradio 15 1 0 4 empty empty empty 0 -6 0 8 -260818 -1
+-1 0;
+#X text 272 84 <-- select output here;
+#X text 65 84 vary this -->;
+#X obj 346 119 shunt;
+#X text 63 295 The integer passed to inlet 1 determines which outlet
+is active.;
+#X text 6 229 ANY;
+#X text 61 229 Incoming message can be Grids \, Symbols \, Integers
+\, Lists \, etc.;
+#X text 65 439 [shunt] accepts an integer as a creation argument which
+defines the number of outlets desired. If [shunt] is created without
+an argument \, it will have 2 outlets.;
+#X text 215 333 Outlets (n);
+#X text 2 353 Outlets;
+#X text 10 380 ANY;
+#X text 64 380 Outputs incoming message value according to the selector
+value.;
+#X text 6 295 INTEGER;
+#X text 10 438 INTEGER;
+#X text 7 29 The [shunt] routes any type of data to its active outlet.
+The number of outlets is defined by the argument at creation and the
+active outlet is defined by its right most inlet.;
+#X text 398 2 GridFlow 0.9.0;
+#X connect 13 0 14 0;
+#X connect 13 1 15 0;
+#X connect 13 2 16 0;
+#X connect 13 3 17 0;
+#X connect 18 0 13 0;
+#X connect 19 0 13 1;
diff --git a/externals/gridflow/doc/flow_classes/unix_time-help.pd b/externals/gridflow/doc/flow_classes/unix_time-help.pd
new file mode 100644
index 00000000..d80b4c19
--- /dev/null
+++ b/externals/gridflow/doc/flow_classes/unix_time-help.pd
@@ -0,0 +1,29 @@
+#N canvas 134 38 639 312 10;
+#X obj 91 113 unix_time;
+#X obj 91 82 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 8 172 #export_list;
+#X obj 91 40 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 9 246 display;
+#X obj 91 58 metro 500;
+#X text 60 243 <-- Ascii format for the date;
+#X obj 308 221 display;
+#X obj 123 171 display;
+#X obj 307 195 display;
+#X obj 306 170 rubysprintf %04d%02d%02d-%02d%02d%02d;
+#X obj 8 282 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
+0;
+#X text 16 289 GridFlow 0.8.0;
+#X obj 8 5 cnv 15 720 15 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 9 5 SUMMARY : the unixtime command;
+#X connect 0 0 2 0;
+#X connect 0 1 8 0;
+#X connect 0 2 7 0;
+#X connect 0 2 10 0;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 5 0 1 0;
+#X connect 10 0 9 0;