aboutsummaryrefslogtreecommitdiff
path: root/externals/gridflow/pd_abstractions
diff options
context:
space:
mode:
authorN.N. <matju@users.sourceforge.net>2005-10-04 02:04:42 +0000
committerN.N. <matju@users.sourceforge.net>2005-10-04 02:04:42 +0000
commit04c235c6ac5f36b507c629de5634d5e6d326222b (patch)
tree7f494dc2dae6d9771aed83cf73825ea81cd3ed96 /externals/gridflow/pd_abstractions
parent5e2a1bc9e56003349e533f7e5841041ba5c04e28 (diff)
adding abstractions and helpfiles
svn path=/trunk/; revision=3647
Diffstat (limited to 'externals/gridflow/pd_abstractions')
-rw-r--r--externals/gridflow/pd_abstractions/#apply_colormap_channelwise.pd12
-rw-r--r--externals/gridflow/pd_abstractions/#camera.pd149
-rw-r--r--externals/gridflow/pd_abstractions/#camera_control.pd129
-rw-r--r--externals/gridflow/pd_abstractions/#centre_of_gravity.pd113
-rw-r--r--externals/gridflow/pd_abstractions/#centroid.pd80
-rw-r--r--externals/gridflow/pd_abstractions/#checkers.pd18
-rw-r--r--externals/gridflow/pd_abstractions/#clip.pd20
-rw-r--r--externals/gridflow/pd_abstractions/#color.pd68
-rw-r--r--externals/gridflow/pd_abstractions/#contrast.pd20
-rw-r--r--externals/gridflow/pd_abstractions/#fade.pd37
-rw-r--r--externals/gridflow/pd_abstractions/#fade_lin.pd29
-rw-r--r--externals/gridflow/pd_abstractions/#greyscale_to_rgb.pd8
-rw-r--r--externals/gridflow/pd_abstractions/#hueshift.pd31
-rw-r--r--externals/gridflow/pd_abstractions/#motion_detection.pd64
-rw-r--r--externals/gridflow/pd_abstractions/#mouse.pd93
-rw-r--r--externals/gridflow/pd_abstractions/#posterize.pd15
-rw-r--r--externals/gridflow/pd_abstractions/#ravel.pd15
-rw-r--r--externals/gridflow/pd_abstractions/#remap_image.pd21
-rw-r--r--externals/gridflow/pd_abstractions/#rgb_to_greyscale.pd10
-rw-r--r--externals/gridflow/pd_abstractions/#rgb_to_yuv.pd10
-rw-r--r--externals/gridflow/pd_abstractions/#solarize.pd14
-rw-r--r--externals/gridflow/pd_abstractions/#spread.pd22
-rw-r--r--externals/gridflow/pd_abstractions/#text_to_image.pd41
-rw-r--r--externals/gridflow/pd_abstractions/#yuv_to_rgb.pd10
-rw-r--r--externals/gridflow/pd_abstractions/@complex_sq.pd8
-rw-r--r--externals/gridflow/pd_abstractions/count.pd44
-rw-r--r--externals/gridflow/pd_abstractions/pingpong.pd27
27 files changed, 1108 insertions, 0 deletions
diff --git a/externals/gridflow/pd_abstractions/#apply_colormap_channelwise.pd b/externals/gridflow/pd_abstractions/#apply_colormap_channelwise.pd
new file mode 100644
index 00000000..2402036a
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#apply_colormap_channelwise.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 450 300 10;
+#X obj 17 17 inlet;
+#X obj 17 37 #outer & ( -1 0 );
+#X obj 17 57 # + ( 3 2 # 0 0 0 1 0 2 );
+#X obj 17 77 #store;
+#X obj 17 97 outlet;
+#X obj 67 17 inlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 3 1;
diff --git a/externals/gridflow/pd_abstractions/#camera.pd b/externals/gridflow/pd_abstractions/#camera.pd
new file mode 100644
index 00000000..71780ad0
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#camera.pd
@@ -0,0 +1,149 @@
+#N canvas 192 66 485 362 10;
+#X obj 132 83 hradio 18 1 0 4 \$0-channel \$0-channel _0__1__2__3_
+0 14 0 8 -241291 -258699 -1 1;
+#X obj 299 31 hsl 128 15 0 65535 0 0 \$0-brightness \$0-brightness
+brightness 8 8 0 8 -260818 -1 -1 10250 1;
+#X obj 299 71 hsl 128 15 0 65535 0 0 \$0-hue \$0-hue hue 8 8 0 8 -260818
+-1 -1 6600 1;
+#X obj 299 11 hsl 128 15 0 65535 0 0 \$0-contrast \$0-contrast contrast
+8 8 0 8 -260818 -1 -1 8800 1;
+#X obj 299 91 hsl 128 15 0 65635 0 0 \$0-whiteness \$0-whiteness whiteness
+8 8 0 8 -260818 -1 -1 0 1;
+#N canvas 256 168 546 412 camera 0;
+#X obj 20 387 outlet;
+#X obj 11 9 inlet;
+#X msg 160 126 contrast \$1;
+#X msg 160 186 whiteness \$1;
+#X msg 160 106 brightness \$1;
+#X msg 160 227 channel \$1;
+#X obj 270 106 r \$0-brightness;
+#X obj 270 126 r \$0-contrast;
+#X obj 270 186 r \$0-whiteness;
+#X obj 153 276 r \$0-size;
+#X obj 270 226 r \$0-channel;
+#X obj 270 166 r \$0-hue;
+#X msg 160 166 hue \$1;
+#X msg 160 146 colour \$1;
+#X obj 270 146 r \$0-colour;
+#X obj 23 198 t a;
+#X msg 319 382 open videodev \$1 \, get;
+#X obj 318 363 rubysprintf /dev/video%d;
+#X msg 160 206 frequency \$1;
+#X obj 270 206 r \$0-frequency;
+#X obj 318 344 r \$0-device;
+#X obj 153 346 #export_list;
+#X msg 153 295 list \$1;
+#X msg 154 365 size \$1 \$2;
+#X obj 153 314 #store ( 4 2 # 120 160 240 320 480 640 120 180 240 360
+480 720 );
+#X obj 12 98 rubysprintf %d-%s;
+#X obj 11 117 pack s f;
+#X obj 12 77 t a a;
+#X msg 68 77 \$3;
+#X msg 11 136 \; \$1 \$2;
+#X obj 11 56 messageprepend \$0;
+#X msg 160 247 tuner \$1;
+#X obj 270 246 r \$0-tuner;
+#X connect 1 0 30 0;
+#X connect 2 0 15 0;
+#X connect 3 0 15 0;
+#X connect 4 0 15 0;
+#X connect 5 0 15 0;
+#X connect 6 0 4 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 22 0;
+#X connect 10 0 5 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 15 0;
+#X connect 14 0 13 0;
+#X connect 15 0 0 0;
+#X connect 16 0 0 0;
+#X connect 17 0 16 0;
+#X connect 18 0 15 0;
+#X connect 19 0 18 0;
+#X connect 20 0 17 0;
+#X connect 21 0 23 0;
+#X connect 22 0 24 0;
+#X connect 23 0 0 0;
+#X connect 24 0 21 0;
+#X connect 25 0 26 0;
+#X connect 26 0 29 0;
+#X connect 27 0 25 0;
+#X connect 27 1 28 0;
+#X connect 28 0 26 1;
+#X connect 30 0 27 0;
+#X connect 31 0 15 0;
+#X connect 32 0 31 0;
+#X restore 49 115 pd camera;
+#X msg 317 236 colorspace YUV420P;
+#X obj 66 177 #yuv_to_rgb;
+#X obj 299 51 hsl 128 15 0 65535 0 0 \$0-colour \$0-colour colour 8
+8 0 8 -260818 -1 -1 12700 1;
+#X obj 133 21 vradio 15 1 0 3 \$0-size \$0-size empty 0 -6 0 8 -241291
+-258699 -1 1;
+#X text 151 21 120 \, 160;
+#X text 151 37 240 \, 320;
+#X text 151 52 480 \, 640;
+#X text 131 6 select size;
+#X text 132 68 select channel;
+#X obj 240 12 nbx 5 14 0 65535 0 0 \$0-contrast \$0-contrast empty
+0 -6 0 10 -260818 -1 -1 45410 256;
+#X obj 240 32 nbx 5 14 0 65535 0 0 \$0-brightness \$0-brightness empty
+0 -6 0 10 -260818 -1 -1 52892 256;
+#X obj 240 52 nbx 5 14 0 65535 0 0 \$0-colour \$0-colour empty 0 -6
+0 10 -260818 -1 -1 65535 256;
+#X obj 240 72 nbx 5 14 0 65535 0 0 \$0-hue \$0-hue empty 0 -6 0 10
+-260818 -1 -1 34058 256;
+#X obj 240 92 nbx 5 14 0 65535 0 0 \$0-whiteness \$0-whiteness empty
+0 -6 0 10 -260818 -1 -1 0 256;
+#X text 17 6 Select a camera;
+#X msg 317 156 transfer mmap;
+#X msg 317 196 transfer read;
+#X msg 317 216 colorspace RGB24;
+#X text 316 140 Special options:;
+#X obj 22 115 #in;
+#X obj 22 245 outlet image;
+#X obj 21 33 hradio 18 1 0 4 \$0-device \$0-device _0__1__2__3_ 0 -4
+0 8 -241291 -258699 -1 0;
+#X obj 22 148 shunt 2;
+#X obj 141 206 vradio 15 1 0 2 empty empty empty 0 -6 0 8 -241291 -258699
+-1 0;
+#X text 161 221 YUV->RGB;
+#X text 161 205 no conversion;
+#X obj 23 96 inlet;
+#X obj 66 198 # min 255;
+#X obj 66 217 # max 0;
+#X msg 317 176 transfer mmap 4;
+#X obj 132 117 hradio 18 1 0 4 \$0-tuner \$0-tuner _0__1__2__3_ 0 14
+0 8 -241291 -258699 -1 0;
+#X text 132 102 select tuner;
+#X obj 299 121 hsl 128 15 0 65635 0 0 \$0-frequency \$0-frequency frequency
+8 8 0 8 -62784 -44926 -44926 0 1;
+#X obj 240 122 nbx 5 14 0 65535 0 0 \$0-frequency \$0-frequency empty
+0 -6 0 10 -62784 -44926 -44926 0 256;
+#X obj 21 271 \$0;
+#X obj 47 272 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 305 257 s \$0-o;
+#X msg 21 290 \; \$1-device 0 \; \$1-size 1 \; \$1-channel 1;
+#X obj 62 95 r \$0-o;
+#X connect 5 0 25 0;
+#X connect 6 0 42 0;
+#X connect 7 0 33 0;
+#X connect 21 0 42 0;
+#X connect 22 0 42 0;
+#X connect 23 0 42 0;
+#X connect 25 0 28 0;
+#X connect 25 1 5 0;
+#X connect 28 0 26 0;
+#X connect 28 1 7 0;
+#X connect 29 0 28 1;
+#X connect 32 0 25 0;
+#X connect 33 0 34 0;
+#X connect 34 0 26 0;
+#X connect 35 0 42 0;
+#X connect 40 0 43 0;
+#X connect 41 0 40 0;
+#X connect 44 0 25 0;
diff --git a/externals/gridflow/pd_abstractions/#camera_control.pd b/externals/gridflow/pd_abstractions/#camera_control.pd
new file mode 100644
index 00000000..c759fd23
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#camera_control.pd
@@ -0,0 +1,129 @@
+#N canvas 287 295 576 286 10;
+#X obj 50 265 outlet;
+#X obj 239 124 hradio 18 1 0 4 \$0-channel \$0-channel _0__1__2__3_
+0 -4 0 8 -241291 -258699 -1 0;
+#X obj 413 63 hsl 128 15 0 65535 0 0 \$0-brightness \$0-brightness
+brightness 8 8 0 8 -260818 -1 -1 0 1;
+#X obj 413 103 hsl 128 15 0 65535 0 0 \$0-hue \$0-hue hue 8 8 0 8 -260818
+-1 -1 0 1;
+#X obj 413 43 hsl 128 15 0 65535 0 0 \$0-contrast \$0-contrast contrast
+8 8 0 8 -260818 -1 -1 0 1;
+#X obj 413 123 hsl 128 15 0 65635 0 0 \$0-whiteness \$0-whiteness whiteness
+8 8 0 8 -260818 -1 -1 0 1;
+#X text 119 245 <-- open to access more camera controls;
+#N canvas 170 20 420 404 camera 0;
+#X obj 9 362 outlet;
+#X obj 9 8 inlet;
+#X msg 66 153 contrast \$1;
+#X msg 66 213 whiteness \$1;
+#X msg 66 133 brightness \$1;
+#X msg 171 383 size 120 160;
+#X msg 190 363 size 240 320;
+#X msg 209 343 size 480 640;
+#X msg 72 277 channel \$1;
+#X obj 176 133 r \$0-brightness;
+#X obj 176 153 r \$0-contrast;
+#X obj 176 213 r \$0-whiteness;
+#X obj 171 299 r \$0-size;
+#X obj 182 277 r \$0-channel;
+#X obj 176 193 r \$0-hue;
+#X msg 66 193 hue \$1;
+#X msg 66 173 colour \$1;
+#X obj 176 173 r \$0-colour;
+#X obj 171 319 sel 0 1 2;
+#X obj 67 55 s \$0-brightness;
+#X obj 77 75 s \$0-contrast;
+#X obj 197 55 s \$0-colour;
+#X obj 207 75 s \$0-hue;
+#X obj 217 95 s \$0-whiteness;
+#X obj 32 245 t a;
+#X obj 9 35 route symbol brightness contrast colour hue whiteness;
+#X msg 9 109 open videodev \$1 \, get;
+#X connect 1 0 25 0;
+#X connect 2 0 24 0;
+#X connect 3 0 24 0;
+#X connect 4 0 24 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 4 0;
+#X connect 10 0 2 0;
+#X connect 11 0 3 0;
+#X connect 12 0 18 0;
+#X connect 13 0 8 0;
+#X connect 14 0 15 0;
+#X connect 15 0 24 0;
+#X connect 16 0 24 0;
+#X connect 17 0 16 0;
+#X connect 18 0 5 0;
+#X connect 18 1 6 0;
+#X connect 18 2 7 0;
+#X connect 24 0 0 0;
+#X connect 25 0 26 0;
+#X connect 25 1 19 0;
+#X connect 25 2 20 0;
+#X connect 25 3 21 0;
+#X connect 25 4 22 0;
+#X connect 25 5 23 0;
+#X connect 25 6 0 0;
+#X connect 26 0 0 0;
+#X restore 50 245 pd camera;
+#X msg 83 196 colorspace YUV420P;
+#X text 218 196 <-- click here if your webcam uses this colorspace
+;
+#X obj 103 222 #yuv_to_rgb;
+#X text 185 222 <-- add this after [#in] to translate the colorspaces
+;
+#X obj 413 83 hsl 128 15 0 65535 0 0 \$0-colour \$0-colour colour 8
+8 0 8 -260818 -1 -1 0 1;
+#X text 98 266 plug this to #in;
+#X obj 241 53 vradio 15 1 0 3 \$0-size \$0-size empty 0 -6 0 8 -241291
+-258699 -1 0;
+#X text 259 53 120 \, 160;
+#X text 259 69 240 \, 320;
+#X text 259 84 480 \, 640;
+#X text 239 38 select size;
+#X text 239 101 select channel;
+#X obj 10 245 inlet;
+#X obj 354 44 nbx 5 14 0 65535 0 0 \$0-contrast \$0-contrast empty
+0 -6 0 10 -260818 -1 -1 0 256;
+#X obj 354 64 nbx 5 14 0 65535 0 0 \$0-brightness \$0-brightness empty
+0 -6 0 10 -260818 -1 -1 0 256;
+#X obj 354 84 nbx 5 14 0 65535 0 0 \$0-colour \$0-colour empty 0 -6
+0 10 -260818 -1 -1 0 256;
+#X obj 354 104 nbx 5 14 0 65535 0 0 \$0-hue \$0-hue empty 0 -6 0 10
+-260818 -1 -1 0 256;
+#X obj 354 124 nbx 5 14 0 65535 0 0 \$0-whiteness \$0-whiteness empty
+0 -6 0 10 -260818 -1 -1 0 256;
+#X msg 50 28 symbol /dev/video0;
+#X msg 50 48 symbol /dev/video1;
+#X msg 50 68 symbol /dev/video2;
+#X msg 50 88 symbol /dev/video3;
+#X text 17 6 Select a camera;
+#X obj 31 28 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1
+-1;
+#X obj 31 48 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1
+-1;
+#X obj 31 68 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1
+-1;
+#X obj 31 88 bng 15 250 50 0 empty empty empty 0 -6 0 8 -241291 -1
+-1;
+#X msg 81 133 transfer mmap;
+#X msg 81 153 transfer read;
+#X msg 83 176 colorspace RGB24;
+#X text 70 115 Special options:;
+#X connect 7 0 0 0;
+#X connect 8 0 7 0;
+#X connect 20 0 7 0;
+#X connect 26 0 7 0;
+#X connect 27 0 7 0;
+#X connect 28 0 7 0;
+#X connect 29 0 7 0;
+#X connect 31 0 26 0;
+#X connect 32 0 27 0;
+#X connect 33 0 28 0;
+#X connect 34 0 29 0;
+#X connect 35 0 7 0;
+#X connect 36 0 7 0;
+#X connect 37 0 7 0;
diff --git a/externals/gridflow/pd_abstractions/#centre_of_gravity.pd b/externals/gridflow/pd_abstractions/#centre_of_gravity.pd
new file mode 100644
index 00000000..543b409d
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#centre_of_gravity.pd
@@ -0,0 +1,113 @@
+#N canvas 311 42 543 559 10;
+#X obj 166 26 inlet;
+#X obj 51 106 #rgb_to_greyscale;
+#X obj 51 162 #fold +;
+#X obj 51 188 # >> 8;
+#N canvas 0 0 450 300 gravity 0;
+#X obj 77 20 inlet;
+#X obj 75 276 outlet;
+#X obj 77 54 t a a;
+#X obj 41 90 #finished;
+#X obj 125 79 #dim;
+#X obj 126 105 #fold +;
+#X obj 68 140 #for 0 0 1;
+#X obj 172 190 #fold +;
+#X obj 72 179 # *;
+#X obj 72 199 #fold +;
+#X obj 72 249 # /;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 0;
+#X connect 2 1 8 1;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 8 0;
+#X connect 7 0 10 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 36 221 pd gravity;
+#X obj 50 244 #export;
+#X obj 84 277 #two;
+#X obj 85 301 #export_list;
+#X obj 86 367 # ==;
+#X obj 51 132 #fold +;
+#X obj 85 344 #for ( 0 0 ) ( 288 352 ) ( 1 1 );
+#X obj 264 253 #finished;
+#X obj 86 388 #fold |;
+#X obj 194 319 inlet;
+#X obj 98 441 #finished;
+#X obj 98 469 #store;
+#X obj 110 499 #outer * ( 255 -255 -255 );
+#X obj 112 520 # +;
+#X obj 112 540 # min 255;
+#X obj 112 560 # max 0;
+#X obj 112 586 outlet;
+#X obj 122 162 #fold +;
+#X obj 122 189 # >> 8;
+#N canvas 0 0 450 300 gravity 0;
+#X obj 77 20 inlet;
+#X obj 75 276 outlet;
+#X obj 77 54 t a a;
+#X obj 41 90 #finished;
+#X obj 125 79 #dim;
+#X obj 126 105 #fold +;
+#X obj 68 140 #for 0 0 1;
+#X obj 172 190 #fold +;
+#X obj 72 179 # *;
+#X obj 72 199 #fold +;
+#X obj 72 249 # /;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 0;
+#X connect 2 1 8 1;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 8 0;
+#X connect 7 0 10 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 134 219 pd gravity;
+#X obj 141 242 #export;
+#X obj 9 352 print list;
+#X obj 91 414 fork;
+#X obj 166 51 fork;
+#X obj 9 332 outlet;
+#X obj 122 134 #transpose;
+#X connect 0 0 27 0;
+#X connect 1 0 9 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 1;
+#X connect 7 0 28 0;
+#X connect 8 0 12 0;
+#X connect 9 0 2 0;
+#X connect 9 0 29 0;
+#X connect 10 0 8 0;
+#X connect 11 0 10 0;
+#X connect 12 0 26 0;
+#X connect 13 0 10 1;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 6 1;
+#X connect 26 0 14 0;
+#X connect 26 1 15 1;
+#X connect 27 0 11 0;
+#X connect 27 0 1 0;
+#X connect 27 1 17 1;
+#X connect 29 0 21 0;
diff --git a/externals/gridflow/pd_abstractions/#centroid.pd b/externals/gridflow/pd_abstractions/#centroid.pd
new file mode 100644
index 00000000..646b828a
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#centroid.pd
@@ -0,0 +1,80 @@
+#N canvas 494 135 339 225 10;
+#X obj -63 82 #fold +;
+#X obj -63 101 # >> 8;
+#N canvas 0 0 450 300 gravity 0;
+#X obj 77 20 inlet;
+#X obj 75 276 outlet;
+#X obj 77 54 t a a;
+#X obj 41 90 #finished;
+#X obj 125 79 #dim;
+#X obj 126 105 #fold +;
+#X obj 68 140 #for 0 0 1;
+#X obj 172 190 #fold +;
+#X obj 72 179 # *;
+#X obj 72 199 #fold +;
+#X obj 72 249 # /;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 0;
+#X connect 2 1 8 1;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 8 0;
+#X connect 7 0 10 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore -63 120 pd gravity;
+#X obj -63 139 #export;
+#X obj -63 25 #fold +;
+#X obj 30 83 #fold +;
+#X obj 30 102 # >> 8;
+#N canvas 0 0 450 300 gravity 0;
+#X obj 77 20 inlet;
+#X obj 75 276 outlet;
+#X obj 77 54 t a a;
+#X obj 41 90 #finished;
+#X obj 125 79 #dim;
+#X obj 126 105 #fold +;
+#X obj 68 140 #for 0 0 1;
+#X obj 172 190 #fold +;
+#X obj 72 179 # *;
+#X obj 72 199 #fold +;
+#X obj 72 249 # /;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 0;
+#X connect 2 1 8 1;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 8 0;
+#X connect 7 0 10 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X restore 30 121 pd gravity;
+#X obj 30 140 #export;
+#X obj 30 63 #transpose;
+#X obj -63 44 t a a;
+#X obj -63 178 #pack 2;
+#X obj -63 197 outlet position;
+#X obj -63 6 inlet greyscale_image;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 11 0;
+#X connect 4 0 10 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 1;
+#X connect 9 0 5 0;
+#X connect 10 0 0 0;
+#X connect 10 1 9 0;
+#X connect 11 0 12 0;
+#X connect 13 0 4 0;
+#X coords 0 0 5.43251e-06 7.95071e-06 100 40 0;
diff --git a/externals/gridflow/pd_abstractions/#checkers.pd b/externals/gridflow/pd_abstractions/#checkers.pd
new file mode 100644
index 00000000..24ca52eb
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#checkers.pd
@@ -0,0 +1,18 @@
+#N canvas 0 0 450 300 10;
+#X obj 18 14 inlet;
+#X obj 18 34 # >> 3;
+#X obj 18 54 # & 1;
+#X obj 18 74 #fold ^;
+#X obj 18 94 # inv+;
+#X obj 18 114 # & 63;
+#X obj 18 134 # + 128;
+#X obj 18 154 #outer ignore ( 0 0 0 );
+#X obj 18 174 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
diff --git a/externals/gridflow/pd_abstractions/#clip.pd b/externals/gridflow/pd_abstractions/#clip.pd
new file mode 100644
index 00000000..c96553c0
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#clip.pd
@@ -0,0 +1,20 @@
+#N canvas 531 259 450 300 10;
+#X obj 87 22 inlet;
+#X obj 87 206 outlet;
+#X obj 87 94 # min \$1;
+#X obj 87 143 # max \$2;
+#X obj 196 38 inlet;
+#X obj 249 108 inlet;
+#X msg 132 59 255;
+#X obj 132 39 loadbang;
+#X obj 184 106 loadbang;
+#X msg 184 126 0;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 1;
+#X connect 5 0 3 1;
+#X connect 6 0 2 1;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 3 1;
diff --git a/externals/gridflow/pd_abstractions/#color.pd b/externals/gridflow/pd_abstractions/#color.pd
new file mode 100644
index 00000000..bd97d09b
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#color.pd
@@ -0,0 +1,68 @@
+#N canvas 648 305 209 58 10;
+#X floatatom 3 29 5 0 0 0 - - -;
+#X obj 75 28 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -225271
+-24198 -1 0 1;
+#X obj 75 43 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -228992
+-62784 -1 0 1;
+#X floatatom 3 44 5 0 0 0 - - -;
+#X obj 75 13 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -261689
+-258699 -1 0 1;
+#X floatatom 3 14 5 0 0 0 - - -;
+#X obj 3 76 #pack 3;
+#X obj 209 36 #export_list;
+#X obj 210 55 unpack 0 0 0;
+#X obj 208 17 inlet rgb_color;
+#X obj 56 75 outlet rgb_color;
+#X obj 43 12 int;
+#X obj 43 27 int;
+#X obj 43 42 int;
+#X obj 196 2 cnv 10 60 10 empty \$0-cnv empty 20 12 0 14 -262144 -262144
+0;
+#X obj 125 192 s \$0-cnv;
+#X msg 125 172 color \$1;
+#X obj 4 154 #export;
+#X obj 3 133 # ^ -1;
+#X obj 3 114 #fold |;
+#X obj 3 95 # << ( 16 8 0 );
+#X obj 194 75 loadbang;
+#X msg 194 151 range \$1 \$2;
+#X obj 194 132 #export_list;
+#X obj 194 94 listmake \$1 \$2;
+#X obj 194 113 # || ( 0 255 );
+#X obj 59 134 loadbang;
+#X obj 88 154 - \$3;
+#X msg 59 154 1;
+#X obj 3 180 spigot;
+#X connect 0 0 6 1;
+#X connect 1 0 12 0;
+#X connect 2 0 13 0;
+#X connect 3 0 6 2;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 6 0 10 0;
+#X connect 6 0 20 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 8 1 1 0;
+#X connect 8 2 2 0;
+#X connect 9 0 7 0;
+#X connect 11 0 5 0;
+#X connect 12 0 0 0;
+#X connect 13 0 3 0;
+#X connect 16 0 15 0;
+#X connect 17 0 29 0;
+#X connect 18 0 17 0;
+#X connect 19 0 18 0;
+#X connect 20 0 19 0;
+#X connect 21 0 24 0;
+#X connect 22 0 2 0;
+#X connect 22 0 1 0;
+#X connect 22 0 4 0;
+#X connect 23 0 22 0;
+#X connect 24 0 25 0;
+#X connect 25 0 23 0;
+#X connect 26 0 28 0;
+#X connect 27 0 29 1;
+#X connect 28 0 27 0;
+#X connect 29 0 16 0;
+#X coords 0 0 1 1 120 56 1;
diff --git a/externals/gridflow/pd_abstractions/#contrast.pd b/externals/gridflow/pd_abstractions/#contrast.pd
new file mode 100644
index 00000000..13549341
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#contrast.pd
@@ -0,0 +1,20 @@
+#N canvas 0 0 450 300 10;
+#X obj 14 14 inlet;
+#X obj 14 34 # inv+ 255;
+#X obj 14 54 # *>>8;
+#X obj 14 74 # inv+ 255;
+#X obj 14 94 # *>>8;
+#X obj 14 114 # min 255;
+#X obj 14 134 # max 0;
+#X obj 14 154 outlet;
+#X obj 54 14 inlet;
+#X obj 94 14 inlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 2 1;
+#X connect 9 0 4 1;
diff --git a/externals/gridflow/pd_abstractions/#fade.pd b/externals/gridflow/pd_abstractions/#fade.pd
new file mode 100644
index 00000000..ade53918
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#fade.pd
@@ -0,0 +1,37 @@
+#N canvas 398 352 418 256 10;
+#X obj 21 65 inlet;
+#X obj 21 233 outlet;
+#X obj 21 85 # +;
+#X obj 78 199 # *;
+#X obj 190 108 float \$1;
+#X obj 190 88 loadbang;
+#X obj 156 64 inlet;
+#X text 20 7 new = (x-1)/x of old input + 1/x of new input;
+#X obj 173 180 # - 1;
+#X text 198 65 select fade rate;
+#X text 61 65 input;
+#X text 70 236 output;
+#X obj 21 106 # +;
+#X obj 127 169 # / 2;
+#X obj 156 86 t a;
+#X text 19 21 now rounds to closest;
+#X obj 21 127 # *>>8;
+#X obj 70 128 # inv* 256;
+#X obj 21 213 t a a;
+#X text 19 34 also faster (uses *>>8 instead of /);
+#X connect 0 0 2 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 1;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 14 0;
+#X connect 8 0 3 1;
+#X connect 12 0 16 0;
+#X connect 13 0 12 1;
+#X connect 14 0 13 0;
+#X connect 14 0 8 0;
+#X connect 14 0 17 0;
+#X connect 16 0 18 0;
+#X connect 17 0 16 1;
+#X connect 18 0 1 0;
+#X connect 18 1 3 0;
diff --git a/externals/gridflow/pd_abstractions/#fade_lin.pd b/externals/gridflow/pd_abstractions/#fade_lin.pd
new file mode 100644
index 00000000..22054260
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#fade_lin.pd
@@ -0,0 +1,29 @@
+#N canvas 614 446 450 300 10;
+#X obj 68 16 inlet;
+#X obj 92 146 outlet;
+#X obj 95 61 # -;
+#X obj 155 16 inlet;
+#X obj 65 123 # +;
+#X obj 95 124 t a;
+#X obj 155 36 f \$1;
+#X obj 140 101 # inv+ 0;
+#X obj 296 38 loadbang;
+#X obj 78 101 # max -1;
+#X obj 78 81 # min 1;
+#X obj 195 16 inlet;
+#X obj 195 37 f \$2;
+#X connect 0 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 4 1;
+#X connect 5 0 1 0;
+#X connect 5 0 2 1;
+#X connect 6 0 10 1;
+#X connect 7 0 9 1;
+#X connect 8 0 6 0;
+#X connect 8 0 12 0;
+#X connect 9 0 4 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 12 0 7 0;
diff --git a/externals/gridflow/pd_abstractions/#greyscale_to_rgb.pd b/externals/gridflow/pd_abstractions/#greyscale_to_rgb.pd
new file mode 100644
index 00000000..612bcb14
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#greyscale_to_rgb.pd
@@ -0,0 +1,8 @@
+#N canvas 550 233 335 174 10;
+#X obj 10 10 inlet;
+#X obj 10 70 outlet;
+#X obj 10 30 #fold put;
+#X obj 10 50 #outer ignore ( 0 0 0 );
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
diff --git a/externals/gridflow/pd_abstractions/#hueshift.pd b/externals/gridflow/pd_abstractions/#hueshift.pd
new file mode 100644
index 00000000..028801ea
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#hueshift.pd
@@ -0,0 +1,31 @@
+#N canvas 581 130 450 278 10;
+#X obj 13 105 inlet;
+#X obj 13 162 outlet;
+#X obj 59 48 #rgb_to_yuv;
+#X obj 59 124 #yuv_to_rgb;
+#X obj 59 67 # - 128;
+#X obj 59 105 # + 128;
+#X obj 171 10 inlet;
+#X obj 59 86 #rotate \, axis 1 2 3;
+#X obj 59 7 loadbang;
+#X obj 171 29 t b f;
+#X obj 212 29 \$1;
+#X obj 212 10 loadbang;
+#X obj 13 124 #inner;
+#X msg 59 29 3 3 # 256 0 0 0;
+#X obj 13 143 # >> 8;
+#X connect 0 0 12 0;
+#X connect 2 0 4 0;
+#X connect 3 0 12 1;
+#X connect 4 0 7 0;
+#X connect 5 0 3 0;
+#X connect 6 0 9 0;
+#X connect 7 0 5 0;
+#X connect 8 0 13 0;
+#X connect 9 0 13 0;
+#X connect 9 1 7 1;
+#X connect 10 0 9 0;
+#X connect 11 0 10 0;
+#X connect 12 0 14 0;
+#X connect 13 0 2 0;
+#X connect 14 0 1 0;
diff --git a/externals/gridflow/pd_abstractions/#motion_detection.pd b/externals/gridflow/pd_abstractions/#motion_detection.pd
new file mode 100644
index 00000000..2867cd2c
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#motion_detection.pd
@@ -0,0 +1,64 @@
+#N canvas 70 26 572 517 10;
+#X msg 152 39 1;
+#X msg 152 63 0;
+#X text 188 37 <-- take a snapshot;
+#X text 190 64 <-- compare incoming images;
+#X obj 61 153 t a a;
+#X obj 62 206 # -;
+#X obj 62 366 # min 255;
+#X obj 62 341 # max 0;
+#X obj 62 295 # abs-;
+#X obj 102 178 spigot;
+#X obj 86 109 inlet;
+#X obj 63 491 outlet;
+#X obj 301 445 #fold +;
+#X obj 317 467 #fold +;
+#X obj 331 490 #fold +;
+#X obj 337 516 #export;
+#X obj 371 542 route int;
+#X obj 385 564 / 10000;
+#X msg 289 257 1;
+#X msg 302 286 0;
+#X obj 252 401 spigot;
+#X text 325 255 <-- output values;
+#X obj 91 411 # -;
+#X obj 150 406 r noise;
+#X obj 64 453 # max 0;
+#X obj 310 348 r displaced;
+#X text 339 281 <-- save your cpu some work and turn it off;
+#X obj 486 592 s displaced_numb;
+#X obj 163 121 r snapshot;
+#X obj 134 242 r emboss;
+#X obj 134 295 # + 128;
+#X obj 62 230 # << 2;
+#X obj 62 267 shunt 2;
+#X connect 0 0 9 1;
+#X connect 1 0 9 1;
+#X connect 4 0 9 0;
+#X connect 4 1 5 0;
+#X connect 5 0 31 0;
+#X connect 6 0 20 0;
+#X connect 6 0 22 0;
+#X connect 7 0 6 0;
+#X connect 8 0 7 0;
+#X connect 9 0 5 1;
+#X connect 10 0 4 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 27 0;
+#X connect 18 0 20 1;
+#X connect 19 0 20 1;
+#X connect 20 0 12 0;
+#X connect 22 0 24 0;
+#X connect 23 0 22 1;
+#X connect 24 0 11 0;
+#X connect 25 0 20 1;
+#X connect 28 0 9 1;
+#X connect 29 0 32 1;
+#X connect 30 0 7 0;
+#X connect 31 0 32 0;
+#X connect 32 0 8 0;
+#X connect 32 1 30 0;
diff --git a/externals/gridflow/pd_abstractions/#mouse.pd b/externals/gridflow/pd_abstractions/#mouse.pd
new file mode 100644
index 00000000..7e87688e
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#mouse.pd
@@ -0,0 +1,93 @@
+#N canvas 313 211 690 428 10;
+#X obj 23 103 listsublist 0 2;
+#X obj 48 64 fork;
+#X obj 126 181 fork;
+#X text 153 149 is button pressed?;
+#X obj 129 209 -;
+#X obj 125 150 > 0;
+#X obj 183 86 listelement 2;
+#X obj 120 377 outlet;
+#X text 161 183 1=click \, 0=nochange \, -1=unclick;
+#X text 157 36 list (y \, x \, buttons);
+#X obj 49 8 inlet;
+#X obj 48 34 route position;
+#X text 93 8 compatible with output of [#out window];
+#X obj 142 246 inv+ 1;
+#X obj 98 397 outlet;
+#X obj 142 356 outlet;
+#X text 431 330 three toggle-compatible outputs;
+#X text 432 346 and one +1/0/-1 for the wheel;
+#X text 147 397 click;
+#X text 193 357 unclick;
+#X obj 468 60 listelement 2;
+#X obj 430 301 outlet;
+#X obj 480 301 outlet;
+#X obj 530 301 outlet;
+#X obj 580 301 outlet;
+#X obj 430 273 change;
+#X obj 108 63 fork;
+#X obj 468 86 #outer >> ( 8 9 10 11 12 );
+#X obj 469 115 # & 1;
+#X obj 469 173 unpack 0 0 0 0 0;
+#X obj 549 241 inv+;
+#X obj 480 274 change;
+#X obj 530 275 change;
+#X obj 580 276 change;
+#X obj 469 145 #export_list;
+#X obj 163 335 outlet;
+#X text 172 378 drag;
+#X text 214 337 move;
+#X obj 163 275 inv+ 1;
+#X obj 389 16 inlet;
+#X text 433 9 list of 3 toggles;
+#X text 434 23 which buttons should be active;
+#X obj 347 81 # << ( 8 9 10 );
+#X obj 345 107 #fold +;
+#X obj 345 131 #export;
+#X obj 125 126 &;
+#X text 151 126 check only wanted buttons;
+#X obj 305 33 loadbang;
+#X msg 305 57 1 1 1;
+#X obj 98 269 shunt 3;
+#X obj 120 302 shunt 2;
+#X connect 0 0 49 0;
+#X connect 1 0 0 0;
+#X connect 1 1 6 0;
+#X connect 2 0 4 1;
+#X connect 2 1 4 0;
+#X connect 2 1 38 0;
+#X connect 4 0 13 0;
+#X connect 5 0 2 0;
+#X connect 6 0 45 0;
+#X connect 10 0 11 0;
+#X connect 11 0 26 0;
+#X connect 13 0 49 1;
+#X connect 20 0 27 0;
+#X connect 25 0 21 0;
+#X connect 26 0 1 0;
+#X connect 26 1 20 0;
+#X connect 27 0 28 0;
+#X connect 28 0 34 0;
+#X connect 29 0 25 0;
+#X connect 29 1 31 0;
+#X connect 29 2 32 0;
+#X connect 29 3 30 0;
+#X connect 29 4 30 1;
+#X connect 30 0 33 0;
+#X connect 31 0 22 0;
+#X connect 32 0 23 0;
+#X connect 33 0 24 0;
+#X connect 34 0 29 0;
+#X connect 38 0 50 1;
+#X connect 39 0 42 0;
+#X connect 42 0 43 0;
+#X connect 43 0 44 0;
+#X connect 44 0 45 1;
+#X connect 45 0 5 0;
+#X connect 47 0 48 0;
+#X connect 48 0 42 0;
+#X connect 49 0 14 0;
+#X connect 49 1 50 0;
+#X connect 49 2 15 0;
+#X connect 50 0 7 0;
+#X connect 50 1 35 0;
diff --git a/externals/gridflow/pd_abstractions/#posterize.pd b/externals/gridflow/pd_abstractions/#posterize.pd
new file mode 100644
index 00000000..5e763eac
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#posterize.pd
@@ -0,0 +1,15 @@
+#N canvas 0 0 450 300 10;
+#X obj 13 11 inlet;
+#X obj 13 31 # *>>8;
+#X obj 13 51 # * 255;
+#X obj 13 71 # /;
+#X obj 92 31 # - 1;
+#X obj 13 91 outlet;
+#X obj 92 11 inlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 1;
+#X connect 6 0 4 0;
+#X connect 6 0 1 1;
diff --git a/externals/gridflow/pd_abstractions/#ravel.pd b/externals/gridflow/pd_abstractions/#ravel.pd
new file mode 100644
index 00000000..bf17742f
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#ravel.pd
@@ -0,0 +1,15 @@
+#N canvas 0 0 450 300 10;
+#X obj 14 15 inlet;
+#X obj 44 65 #dim;
+#X obj 44 85 #fold * \, seed 1;
+#X obj 44 105 #redim ( 1 );
+#X obj 14 125 #redim ( 42 );
+#X obj 14 35 t a a;
+#X obj 14 145 outlet;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 1;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 5 1 1 0;
diff --git a/externals/gridflow/pd_abstractions/#remap_image.pd b/externals/gridflow/pd_abstractions/#remap_image.pd
new file mode 100644
index 00000000..d56eae88
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#remap_image.pd
@@ -0,0 +1,21 @@
+#N canvas 0 0 450 300 10;
+#X obj 18 13 inlet;
+#X obj 168 163 inlet;
+#X obj 18 160 #store;
+#X obj 113 90 #dim;
+#X obj 18 33 t a a;
+#X obj 18 110 #finished;
+#X obj 18 130 #for ( 0 0 ) ( 0 0 ) ( 1 1 );
+#X obj 18 191 outlet;
+#X obj 113 110 #inner ( 3 2 # 1 0 0 );
+#X obj 68 191 outlet;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 7 0;
+#X connect 3 0 8 0;
+#X connect 4 0 5 0;
+#X connect 4 1 3 0;
+#X connect 4 1 2 1;
+#X connect 5 0 6 0;
+#X connect 6 0 9 0;
+#X connect 8 0 6 1;
diff --git a/externals/gridflow/pd_abstractions/#rgb_to_greyscale.pd b/externals/gridflow/pd_abstractions/#rgb_to_greyscale.pd
new file mode 100644
index 00000000..24c5c0d9
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#rgb_to_greyscale.pd
@@ -0,0 +1,10 @@
+#N canvas 550 233 335 174 10;
+#X obj 10 10 inlet;
+#X obj 10 30 # * ( 77 151 28 );
+#X obj 10 50 #fold +;
+#X obj 10 70 #outer >> ( 8 );
+#X obj 10 90 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
diff --git a/externals/gridflow/pd_abstractions/#rgb_to_yuv.pd b/externals/gridflow/pd_abstractions/#rgb_to_yuv.pd
new file mode 100644
index 00000000..c144dda0
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#rgb_to_yuv.pd
@@ -0,0 +1,10 @@
+#N canvas 550 233 438 174 10;
+#X obj 10 10 inlet;
+#X obj 10 90 outlet;
+#X obj 10 70 # + ( 0 128 128 );
+#X obj 10 50 # >> 8;
+#X obj 10 30 #inner ( 3 3 # 76 -44 128 150 -85 -108 29 128 -21 );
+#X connect 0 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
diff --git a/externals/gridflow/pd_abstractions/#solarize.pd b/externals/gridflow/pd_abstractions/#solarize.pd
new file mode 100644
index 00000000..62cf7b75
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#solarize.pd
@@ -0,0 +1,14 @@
+#N canvas 0 0 450 300 10;
+#X obj 15 14 inlet;
+#X obj 15 34 # & 255;
+#X obj 15 54 # << 1;
+#X obj 15 74 # inv+ 255;
+#X obj 15 114 # inv+ 255;
+#X obj 15 134 outlet;
+#X obj 15 94 # abs-;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 6 0 4 0;
diff --git a/externals/gridflow/pd_abstractions/#spread.pd b/externals/gridflow/pd_abstractions/#spread.pd
new file mode 100644
index 00000000..b86ed96e
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#spread.pd
@@ -0,0 +1,22 @@
+#N canvas 0 0 450 300 10;
+#X obj 17 12 inlet;
+#X obj 17 52 # & 0;
+#X obj 17 72 # + 5;
+#X obj 17 92 #! rand;
+#X obj 17 112 # - 2;
+#X obj 137 162 # +;
+#X obj 124 68 # >> 1;
+#X obj 17 32 t a a;
+#X obj 137 182 outlet;
+#X obj 124 32 inlet;
+#X connect 0 0 7 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 4 1;
+#X connect 7 0 1 0;
+#X connect 7 1 5 1;
+#X connect 9 0 6 0;
+#X connect 9 0 2 1;
diff --git a/externals/gridflow/pd_abstractions/#text_to_image.pd b/externals/gridflow/pd_abstractions/#text_to_image.pd
new file mode 100644
index 00000000..f9d57480
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#text_to_image.pd
@@ -0,0 +1,41 @@
+#N canvas 305 189 450 300 10;
+#X obj 16 14 inlet text;
+#X obj 16 265 outlet image;
+#X obj 291 132 inlet font;
+#X obj 16 155 #store;
+#X obj 203 38 inlet colors;
+#X text 203 2 0: background;
+#X text 203 18 1: foreground;
+#X obj 203 66 t a;
+#X obj 16 174 #store;
+#X obj 229 66 loadbang;
+#X text 67 157 font;
+#X text 68 174 palette;
+#X obj 16 33 #outer ignore ( 0 );
+#X obj 16 212 t a a;
+#X obj 16 238 #redim ( );
+#X obj 154 161 #dim;
+#X obj 154 180 #unpack 4;
+#X obj 174 200 *;
+#X obj 16 193 #transpose 0 1;
+#X obj 154 228 pack 0 0 0;
+#X msg 229 85 2 3 # 0 0 0 255 255 255;
+#X connect 0 0 12 0;
+#X connect 2 0 3 1;
+#X connect 3 0 8 0;
+#X connect 4 0 7 0;
+#X connect 8 0 18 0;
+#X connect 9 0 20 0;
+#X connect 12 0 3 0;
+#X connect 13 0 14 0;
+#X connect 13 1 15 0;
+#X connect 14 0 1 0;
+#X connect 15 0 16 0;
+#X connect 16 0 19 0;
+#X connect 16 1 17 0;
+#X connect 16 2 17 1;
+#X connect 16 3 19 2;
+#X connect 17 0 19 1;
+#X connect 18 0 13 0;
+#X connect 19 0 14 1;
+#X connect 20 0 8 1;
diff --git a/externals/gridflow/pd_abstractions/#yuv_to_rgb.pd b/externals/gridflow/pd_abstractions/#yuv_to_rgb.pd
new file mode 100644
index 00000000..4856a10f
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/#yuv_to_rgb.pd
@@ -0,0 +1,10 @@
+#N canvas 550 233 438 174 10;
+#X obj 10 10 inlet;
+#X obj 10 90 outlet;
+#X obj 10 30 # - ( 0 128 128 );
+#X obj 10 70 # >> 8;
+#X obj 10 50 #inner ( 3 3 # 256 256 256 0 -88 454 358 -183 0 );
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
diff --git a/externals/gridflow/pd_abstractions/@complex_sq.pd b/externals/gridflow/pd_abstractions/@complex_sq.pd
new file mode 100644
index 00000000..9b05de81
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/@complex_sq.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 303 155 10;
+#X obj 17 15 inlet;
+#X obj 17 75 outlet;
+#X obj 17 35 #inner ( 2 2 2 # 0 2 1 -1 1 0 1 1 );
+#X obj 17 55 #fold * \, seed 1;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
diff --git a/externals/gridflow/pd_abstractions/count.pd b/externals/gridflow/pd_abstractions/count.pd
new file mode 100644
index 00000000..087bd40d
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/count.pd
@@ -0,0 +1,44 @@
+#N canvas 448 36 450 300 10;
+#X obj 131 81 + 1;
+#X obj 132 37 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 190 82 5 0 0 0 - - -;
+#X msg 131 61 1;
+#X obj 204 168 select 1;
+#X obj 191 195 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 70 39 inlet;
+#X obj 131 150 outlet;
+#X obj 239 80 inlet;
+#X obj 190 106 == \$2;
+#X floatatom 131 132 5 0 0 0 - - -;
+#X obj 191 218 outlet;
+#X obj 131 106 - 1;
+#X floatatom 191 130 5 0 0 0 - - -;
+#X obj 203 11 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 293 49 print;
+#X obj 222 63 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 192 38 float \$1;
+#X text 231 9 <-- bang this to reset;
+#X obj 219 -11 inlet;
+#X connect 0 0 2 0;
+#X connect 0 0 12 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 1;
+#X connect 2 0 9 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 17 0;
+#X connect 5 0 11 0;
+#X connect 6 0 1 0;
+#X connect 8 0 9 1;
+#X connect 9 0 13 0;
+#X connect 10 0 7 0;
+#X connect 12 0 10 0;
+#X connect 13 0 4 0;
+#X connect 14 0 17 0;
+#X connect 16 0 2 0;
+#X connect 17 0 2 0;
+#X connect 19 0 14 0;
diff --git a/externals/gridflow/pd_abstractions/pingpong.pd b/externals/gridflow/pd_abstractions/pingpong.pd
new file mode 100644
index 00000000..406c9d16
--- /dev/null
+++ b/externals/gridflow/pd_abstractions/pingpong.pd
@@ -0,0 +1,27 @@
+#N canvas 0 0 450 270 10;
+#X text 50 11 counter;
+#X obj 67 40 inlet;
+#X obj 67 83 %;
+#X obj 67 103 -;
+#X obj 164 49 inlet;
+#X text 163 32 maxvalue;
+#X obj 83 62 * 2;
+#X obj 67 124 abs;
+#X obj 67 185 outlet;
+#X text 123 184 values from 0 to maxvalue;
+#X obj 67 145 -;
+#X obj 67 165 * -1;
+#X obj 164 70 float \$1;
+#X obj 206 49 loadbang;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 12 0;
+#X connect 6 0 2 1;
+#X connect 7 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 8 0;
+#X connect 12 0 6 0;
+#X connect 12 0 10 1;
+#X connect 12 0 3 1;
+#X connect 13 0 12 0;