aboutsummaryrefslogtreecommitdiff
path: root/doc/tutorials/visual
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tutorials/visual')
-rw-r--r--doc/tutorials/visual/03.gemwin_control.pd2
-rw-r--r--doc/tutorials/visual/04.render_chains.pd2
-rw-r--r--doc/tutorials/visual/05.basic_2d_objects.pd2
-rw-r--r--doc/tutorials/visual/06.lighting.pd6
-rw-r--r--doc/tutorials/visual/07.basic_3d_objects.pd32
-rw-r--r--doc/tutorials/visual/08.manipulations.pd105
-rw-r--r--doc/tutorials/visual/09.gem_units.pd2
-rw-r--r--doc/tutorials/visual/10.Exercise-make_your_object.pd (renamed from doc/tutorials/visual/Attic/10.exercise.pd)0
-rw-r--r--doc/tutorials/visual/11.images.pd31
-rw-r--r--doc/tutorials/visual/12.texturing.pd22
-rw-r--r--doc/tutorials/visual/13.movies.pd43
-rw-r--r--doc/tutorials/visual/14.live_video.pd46
-rw-r--r--doc/tutorials/visual/15.pixel_processing.pd44
-rw-r--r--doc/tutorials/visual/16.Exercise-pix_effects.pd7
-rw-r--r--doc/tutorials/visual/17.tracking.pd140
-rw-r--r--doc/tutorials/visual/TEMPLATE.pd2
16 files changed, 461 insertions, 25 deletions
diff --git a/doc/tutorials/visual/03.gemwin_control.pd b/doc/tutorials/visual/03.gemwin_control.pd
index 3b4d114f..1aa6c22e 100644
--- a/doc/tutorials/visual/03.gemwin_control.pd
+++ b/doc/tutorials/visual/03.gemwin_control.pd
@@ -1,4 +1,4 @@
-#N canvas 10 40 624 464 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty gemwin_control 20 12 0 24 -228992
-66577 0;
#X obj 465 16 gemwin_control;
diff --git a/doc/tutorials/visual/04.render_chains.pd b/doc/tutorials/visual/04.render_chains.pd
index e92d1b4f..981d115f 100644
--- a/doc/tutorials/visual/04.render_chains.pd
+++ b/doc/tutorials/visual/04.render_chains.pd
@@ -1,4 +1,4 @@
-#N canvas 10 40 624 464 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty render_chains 20 12 0 24 -228992
-66577 0;
#X obj 208 217 gemhead;
diff --git a/doc/tutorials/visual/05.basic_2d_objects.pd b/doc/tutorials/visual/05.basic_2d_objects.pd
index dc6d6da9..2c7741b7 100644
--- a/doc/tutorials/visual/05.basic_2d_objects.pd
+++ b/doc/tutorials/visual/05.basic_2d_objects.pd
@@ -1,4 +1,4 @@
-#N canvas 20 42 632 472 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty basic_2d_objects 20 12 0 24 -228992
-66577 0;
#X obj 168 196 gemhead;
diff --git a/doc/tutorials/visual/06.lighting.pd b/doc/tutorials/visual/06.lighting.pd
index 3b5d1070..8d0c66b7 100644
--- a/doc/tutorials/visual/06.lighting.pd
+++ b/doc/tutorials/visual/06.lighting.pd
@@ -1,4 +1,4 @@
-#N canvas 613 242 628 468 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty lighting 20 12 0 24 -228992 -66577
0;
#X obj 465 16 gemwin_control;
@@ -27,14 +27,14 @@ of lighting needs to be turned on by sending a message to [gemwin]
#X msg 54 403 0 0 1;
#X msg 52 301 0 1 0;
#X msg 62 231 1 0 0;
-#X text 125 223 A [world_light] is a light that is infinitely far away
+#X text 125 225 A [world_light] is a light that is infinitely far away
\, basically like sunlight. The rays coming from a [world_light] are
always parallel.;
#X text 124 306 [light] generates a point-light that is part of the
scene. It is basically like a lamp. You can place the lamp directly
in your scene.;
#X msg 30 384 debug \$1;
-#X obj 46 365 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+#X obj 46 365 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X text 124 386 A [spot_light] generates a spot light which you can
move around. It can be used for pinpoint light or widened to cover
diff --git a/doc/tutorials/visual/07.basic_3d_objects.pd b/doc/tutorials/visual/07.basic_3d_objects.pd
index 3ce2e586..e44c20c7 100644
--- a/doc/tutorials/visual/07.basic_3d_objects.pd
+++ b/doc/tutorials/visual/07.basic_3d_objects.pd
@@ -1,9 +1,6 @@
-#N canvas 283 71 624 464 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty basic_3D_objects 20 12 0 24 -228992
-66577 0;
-#X obj 29 120 gemwin;
-#X msg 28 63 create \, 1;
-#X msg 42 90 destroy;
#X obj 39 190 gemhead;
#X obj 38 162 tgl 15 1 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
;
@@ -29,24 +26,27 @@
;
#X obj 341 219 torus;
#X obj 465 16 gemwin_control;
-#X obj 466 60 import Gem;
+#X obj 466 59 import Gem;
#X obj 401 191 gemhead;
-#X obj 400 163 tgl 15 1 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+#X obj 400 163 tgl 15 1 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
;
#X obj 401 219 cuboid;
+#X obj 63 322 gemhead;
+#X obj 63 349 world_light;
+#X msg 135 321 1 1 1;
+#X connect 1 0 3 0;
#X connect 2 0 1 0;
-#X connect 3 0 1 0;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
-#X connect 10 0 12 0;
+#X connect 10 0 15 0;
#X connect 11 0 10 0;
-#X connect 13 0 18 0;
-#X connect 14 0 13 0;
-#X connect 15 0 17 0;
-#X connect 16 0 15 0;
-#X connect 19 0 21 0;
-#X connect 20 0 19 0;
-#X connect 24 0 26 0;
-#X connect 25 0 24 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 0;
+#X connect 16 0 18 0;
+#X connect 17 0 16 0;
+#X connect 21 0 23 0;
+#X connect 22 0 21 0;
+#X connect 24 0 25 0;
+#X connect 26 0 25 1;
diff --git a/doc/tutorials/visual/08.manipulations.pd b/doc/tutorials/visual/08.manipulations.pd
index a4adbd51..3b071bbe 100644
--- a/doc/tutorials/visual/08.manipulations.pd
+++ b/doc/tutorials/visual/08.manipulations.pd
@@ -1,5 +1,108 @@
-#N canvas 15 58 632 452 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty manipulations 20 12 0 24 -228992
-66577 0;
#X obj 465 16 gemwin_control;
#X obj 466 60 import Gem;
+#X obj 28 130 color;
+#X obj 28 342 translate;
+#X obj 331 96 gemhead;
+#X msg 219 78 lighting \$1;
+#X obj 219 57 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 219 101 gemwin;
+#X obj 205 432 world_light;
+#X obj 331 427 cube;
+#X obj 205 412 gemhead;
+#X obj 332 146 translateXYZ 0 0 0;
+#X obj 457 86 hsl 128 15 -2 2 0 0 empty empty X 12 8 1 12 -233017 -1
+-1 0 1;
+#X obj 457 106 hsl 128 15 -2 2 0 0 empty empty Y 12 8 1 12 -233017
+-1 -1 5900 1;
+#X obj 457 126 hsl 128 15 -2 2 0 0 empty empty Z 12 8 1 12 -233017
+-1 -1 0 1;
+#X obj 457 166 hsl 128 15 0 360 0 0 empty empty X 12 8 1 12 -233017
+-1 -1 0 1;
+#X obj 457 186 hsl 128 15 0 360 0 0 empty empty Y 12 8 1 12 -233017
+-1 -1 0 1;
+#X obj 457 206 hsl 128 15 0 360 0 0 empty empty Z 12 8 1 12 -233017
+-1 -1 0 1;
+#X obj 331 225 rotateXYZ 0 0 0;
+#X obj 457 246 hsl 128 15 0 3 0 1 empty empty X 12 8 1 12 -233017 -1
+-1 4233 1;
+#X obj 457 266 hsl 128 15 0 3 0 1 empty empty Y 12 8 1 12 -233017 -1
+-1 4233 1;
+#X obj 457 286 hsl 128 15 0 3 0 1 empty empty Z 12 8 1 12 -233017 -1
+-1 4233 1;
+#X obj 457 326 hsl 128 15 0 1 0 1 empty empty R 12 8 1 12 -261689 -1
+-1 12700 1;
+#X obj 457 346 hsl 128 15 0 1 0 1 empty empty G 12 8 1 12 -225271 -1
+-1 12700 1;
+#X obj 457 366 hsl 128 15 0 1 0 1 empty empty B 12 8 1 12 -228992 -1
+-1 12700 1;
+#X obj 331 385 colorRGB 1 1 1;
+#X obj 28 371 sphere;
+#X obj 27 83 gemhead;
+#X obj 60 300 hsl 128 15 -2 2 0 0 empty empty amount 6 8 1 12 -233017
+-1 -1 0 1;
+#X msg 73 318 1 0 1;
+#X msg 120 318 0 0.5 0.5;
+#X text 118 335 direction;
+#X obj 60 230 hsl 128 15 0 3 0 0 empty empty amount 6 8 1 12 -233017
+-1 -1 0 1;
+#X msg 73 248 1 0 1;
+#X msg 120 248 0 0.5 0.5;
+#X text 118 265 direction;
+#X obj 60 163 hsl 128 15 0 360 0 0 empty empty amount 6 8 1 12 -233017
+-1 -1 0 1;
+#X msg 73 181 1 0 1;
+#X msg 120 181 0 0.5 0.5;
+#X msg 39 103 1 1 1;
+#X msg 86 103 1 0 0;
+#X msg 133 103 0 0 1;
+#X obj 28 205 rotate;
+#X obj 28 272 scale 1 1 1;
+#X text 118 198 rotation axis;
+#X obj 331 305 scaleXYZ 1 1 1;
+#X obj 331 75 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 27 64 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X connect 3 0 43 0;
+#X connect 4 0 27 0;
+#X connect 5 0 12 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 11 0 9 0;
+#X connect 12 0 19 0;
+#X connect 13 0 12 1;
+#X connect 14 0 12 2;
+#X connect 15 0 12 3;
+#X connect 16 0 19 1;
+#X connect 17 0 19 2;
+#X connect 18 0 19 3;
+#X connect 19 0 46 0;
+#X connect 20 0 46 1;
+#X connect 21 0 46 2;
+#X connect 22 0 46 3;
+#X connect 23 0 26 1;
+#X connect 24 0 26 2;
+#X connect 25 0 26 3;
+#X connect 26 0 10 0;
+#X connect 28 0 3 0;
+#X connect 29 0 4 1;
+#X connect 30 0 4 2;
+#X connect 31 0 4 2;
+#X connect 33 0 44 1;
+#X connect 34 0 44 2;
+#X connect 35 0 44 2;
+#X connect 37 0 43 1;
+#X connect 38 0 43 2;
+#X connect 39 0 43 2;
+#X connect 40 0 3 1;
+#X connect 41 0 3 1;
+#X connect 42 0 3 1;
+#X connect 43 0 44 0;
+#X connect 44 0 4 0;
+#X connect 46 0 26 0;
+#X connect 47 0 5 0;
+#X connect 48 0 28 0;
diff --git a/doc/tutorials/visual/09.gem_units.pd b/doc/tutorials/visual/09.gem_units.pd
index db0c06b8..71875daf 100644
--- a/doc/tutorials/visual/09.gem_units.pd
+++ b/doc/tutorials/visual/09.gem_units.pd
@@ -1,4 +1,4 @@
-#N canvas 574 327 632 452 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty gem_units 20 12 0 24 -228992
-66577 0;
#X obj 465 16 gemwin_control;
diff --git a/doc/tutorials/visual/Attic/10.exercise.pd b/doc/tutorials/visual/10.Exercise-make_your_object.pd
index 964fa05c..964fa05c 100644
--- a/doc/tutorials/visual/Attic/10.exercise.pd
+++ b/doc/tutorials/visual/10.Exercise-make_your_object.pd
diff --git a/doc/tutorials/visual/11.images.pd b/doc/tutorials/visual/11.images.pd
new file mode 100644
index 00000000..1ccfdfd1
--- /dev/null
+++ b/doc/tutorials/visual/11.images.pd
@@ -0,0 +1,31 @@
+#N canvas 10 40 620 460 10;
+#X obj 8 10 cnv 15 400 40 empty empty images 20 12 0 24 -228992 -66577
+0;
+#X obj 465 16 gemwin_control;
+#X obj 466 60 import Gem;
+#X obj 141 157 gemhead;
+#X obj 141 306 pix_draw;
+#X obj 141 269 pix_image;
+#X obj 157 189 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 10 40 620 460 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 157 210 pd openpanel;
+#X msg 157 238 open somefile.jpg;
+#X text 14 67 You can load up and display images in the Gem space.
+[pix_image] loads up the image \, and [pix_draw] draws it to the screen.
+;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 5 0;
diff --git a/doc/tutorials/visual/12.texturing.pd b/doc/tutorials/visual/12.texturing.pd
new file mode 100644
index 00000000..d5fdaaaf
--- /dev/null
+++ b/doc/tutorials/visual/12.texturing.pd
@@ -0,0 +1,22 @@
+#N canvas 10 40 620 460 10;
+#X obj 8 10 cnv 15 400 40 empty empty texturing 20 12 0 24 -228992
+-66577 0;
+#X obj 465 16 gemwin_control;
+#X obj 466 60 import Gem;
+#X obj 80 144 gemhead;
+#X obj 80 256 pix_image;
+#X obj 96 176 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 80 293 pix_texture;
+#X text 9 66 You can write images to surfaces of objects. This is known
+as texturing. You use the [pix_texture] object followed by the shape
+to write to:;
+#X obj 81 351 cuboid 4 3 3;
+#X obj 96 197 openpanel;
+#X msg 96 225 open \$1;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 5 0 9 0;
+#X connect 6 0 8 0;
+#X connect 9 0 10 0;
+#X connect 10 0 4 0;
diff --git a/doc/tutorials/visual/13.movies.pd b/doc/tutorials/visual/13.movies.pd
new file mode 100644
index 00000000..deb75c19
--- /dev/null
+++ b/doc/tutorials/visual/13.movies.pd
@@ -0,0 +1,43 @@
+#N canvas 10 40 620 460 10;
+#X obj 8 10 cnv 15 400 40 empty empty movies 20 12 0 24 -228992 -66577
+0;
+#X obj 465 16 gemwin_control;
+#X obj 466 60 import Gem;
+#X obj 118 90 gemhead;
+#X obj 130 120 bng 25 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X text 173 95 movie-clip;
+#X obj 147 314 unpack 0 0 0;
+#X floatatom 133 337 5 0 0 3 length - -;
+#X floatatom 182 337 5 0 0 3 width - -;
+#X obj 187 295 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 176 260 5 0 10000 1 frame# - -;
+#X obj 130 149 openpanel;
+#X msg 130 169 open \$1;
+#X msg 136 212 auto \$1;
+#X obj 136 194 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
+;
+#X msg 147 236 colorspace Grey;
+#X floatatom 229 338 5 0 0 0 - - -;
+#X obj 118 278 pix_film;
+#X obj 120 374 pix_texture;
+#X text 14 58 You can also uses videos as textures:;
+#X obj 120 424 cuboid 4 3 3;
+#X obj 120 399 translateXYZ 0 0 -3;
+#X connect 3 0 17 0;
+#X connect 4 0 11 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 6 2 16 0;
+#X connect 10 0 17 1;
+#X connect 11 0 12 0;
+#X connect 12 0 17 0;
+#X connect 13 0 17 0;
+#X connect 14 0 13 0;
+#X connect 15 0 17 0;
+#X connect 17 0 18 0;
+#X connect 17 1 6 0;
+#X connect 17 2 9 0;
+#X connect 18 0 21 0;
+#X connect 21 0 20 0;
diff --git a/doc/tutorials/visual/14.live_video.pd b/doc/tutorials/visual/14.live_video.pd
new file mode 100644
index 00000000..c58c13e9
--- /dev/null
+++ b/doc/tutorials/visual/14.live_video.pd
@@ -0,0 +1,46 @@
+#N canvas 10 40 620 460 10;
+#X obj 8 10 cnv 15 400 40 empty empty live_video 20 12 0 24 -228992
+-66577 0;
+#X obj 465 16 gemwin_control;
+#X obj 466 60 import Gem;
+#X obj 6 76 gemhead;
+#X msg 143 139 freq 1234;
+#X msg 145 210 dimen 256 256;
+#X msg 145 230 dimen 64 64;
+#X msg 141 62 mode NTSC;
+#X msg 142 88 channel 2;
+#X obj 6 417 rectangle 4 3;
+#X msg 145 190 dimen 256 128;
+#X obj 6 393 pix_texture;
+#X text 223 83 depending on your capture-device you can switch between
+(e.g) Tuner \, COMPOSITE & S-VHS;
+#X text 211 63 defaults to PAL;
+#X text 221 141 set the frequency for the TV-Tuner;
+#X text 260 194 various dimension (might not work on your specific
+capture-device);
+#X obj 6 366 pix_video;
+#X msg 145 271 colorspace RGBA;
+#X text 263 271 could be RGBA \, YUV or Grey;
+#X msg 148 312 device 0;
+#X msg 148 342 driver 0;
+#X text 262 313 switch between capture-cards;
+#X text 252 343 switch between drivers (e.g: v4l and ieee1394);
+#X msg 150 380 enumerate;
+#X text 248 379 list all devices to the console;
+#X msg 156 422 dialog;
+#X text 222 423 configure the device via a pop-up dialog (on Windows(r))
+;
+#X connect 3 0 16 0;
+#X connect 4 0 16 0;
+#X connect 5 0 16 0;
+#X connect 6 0 16 0;
+#X connect 7 0 16 0;
+#X connect 8 0 16 0;
+#X connect 10 0 16 0;
+#X connect 11 0 9 0;
+#X connect 16 0 11 0;
+#X connect 17 0 16 0;
+#X connect 19 0 16 0;
+#X connect 20 0 16 0;
+#X connect 23 0 16 0;
+#X connect 25 0 16 0;
diff --git a/doc/tutorials/visual/15.pixel_processing.pd b/doc/tutorials/visual/15.pixel_processing.pd
new file mode 100644
index 00000000..5a63956d
--- /dev/null
+++ b/doc/tutorials/visual/15.pixel_processing.pd
@@ -0,0 +1,44 @@
+#N canvas 10 40 620 460 10;
+#X obj 8 10 cnv 15 400 40 empty empty pixel_processing 20 12 0 24 -228992
+-66577 0;
+#X obj 465 16 gemwin_control;
+#X obj 466 60 import Gem;
+#X text 13 65 There is a very wide range of pixel-based effects in
+Gem. These objects start with the "pix_" prefix. You can see a list
+of them in the Help Browser \, in "5.reference->Gem" \, then scroll
+down to the objects starting with "pix_".;
+#X obj 92 170 gemhead;
+#X obj 92 379 square 3;
+#X obj 92 357 pix_texture;
+#X obj 92 249 pix_film;
+#X obj 156 249 t f;
+#X obj 105 192 bng 25 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#N canvas 10 40 620 460 open 0;
+#X obj 85 49 inlet;
+#X obj 85 237 outlet;
+#X obj 85 145 openpanel;
+#X msg 85 179 open \$1;
+#X msg 259 213 auto 1;
+#X obj 268 179 loadbang;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X restore 105 221 pd open;
+#X obj 92 325 pix_motionblur;
+#X text 14 132 Here's an example of one effect:;
+#X obj 190 299 hsl 128 15 0 1 0 0 empty empty amount 8 8 1 12 -262144
+-1 -1 0 1;
+#X floatatom 203 323 5 0 0 0 - - -;
+#X connect 4 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 11 0;
+#X connect 7 2 8 0;
+#X connect 8 0 7 1;
+#X connect 9 0 10 0;
+#X connect 10 0 7 0;
+#X connect 11 0 6 0;
+#X connect 13 0 11 1;
+#X connect 13 0 14 0;
diff --git a/doc/tutorials/visual/16.Exercise-pix_effects.pd b/doc/tutorials/visual/16.Exercise-pix_effects.pd
new file mode 100644
index 00000000..42bd74ce
--- /dev/null
+++ b/doc/tutorials/visual/16.Exercise-pix_effects.pd
@@ -0,0 +1,7 @@
+#N canvas 10 40 624 464 10;
+#X obj 8 10 cnv 15 400 40 empty empty exercise 20 12 0 24 -228992 -66577
+0;
+#X obj 465 16 gemwin_control;
+#X obj 466 60 import Gem;
+#X text 11 63 Start with a image \, movie \, or live video and add
+some pixel effects of your choosing.;
diff --git a/doc/tutorials/visual/17.tracking.pd b/doc/tutorials/visual/17.tracking.pd
new file mode 100644
index 00000000..d21e6a75
--- /dev/null
+++ b/doc/tutorials/visual/17.tracking.pd
@@ -0,0 +1,140 @@
+#N canvas 10 40 620 460 10;
+#X obj 8 10 cnv 15 400 40 empty empty tracking 20 12 0 24 -228992 -66577
+0;
+#X obj 465 16 gemwin_control;
+#X obj 466 60 import Gem;
+#X obj 159 193 pix_grey;
+#X msg 184 221 reset;
+#X obj 159 250 pix_background;
+#X msg 252 229 \$1 \$1 \$1;
+#X floatatom 252 213 5 0 0 0 - - -;
+#X obj 103 316 pix_blob;
+#N canvas 10 40 620 460 cursor 0;
+#X obj 17 14 inlet;
+#X obj 89 18 inlet;
+#X obj 101 346 translateXYZ;
+#X text 63 148 0.64;
+#X text 37 151 1;
+#X obj 23 63 t f f;
+#X obj 37 176 -;
+#X text 62 177 X-Range;
+#X text 196 176 Y-Range;
+#X obj 63 240 expr (8/$f1);
+#X obj 33 241 -;
+#X obj 51 267 *;
+#X obj 29 95 max 0;
+#X obj 71 95 min 10;
+#X obj 59 132 f;
+#X obj 33 131 f;
+#X obj 52 293 - 4;
+#X text 193 146 0.64;
+#X text 167 149 1;
+#X obj 153 61 t f f;
+#X obj 167 174 -;
+#X obj 193 238 expr (8/$f1);
+#X obj 163 239 -;
+#X obj 181 265 *;
+#X obj 159 93 max 0;
+#X obj 201 93 min 10;
+#X obj 189 130 f;
+#X obj 163 129 f;
+#X text 188 171 comment;
+#X obj 154 298 expr (-1*$f1)+4;
+#X obj 293 27 inlet;
+#X obj 283 63 * 10;
+#X obj 94 320 gemhead 15;
+#X obj 157 509 circle 0.1;
+#X obj 17 423 separator;
+#X obj 87 423 separator;
+#X obj 17 484 rectangle 0.2 0.01;
+#X obj 157 423 separator;
+#X msg 185 478 draw line;
+#X obj 185 457 loadbang;
+#X obj 77 386 colorRGB 1 0 0 1;
+#X obj 17 462 rectangle 0.01 0.2;
+#X msg 256 478 width \$1;
+#X obj 296 342 int;
+#X obj 275 413 + 1;
+#X connect 0 0 5 0;
+#X connect 1 0 19 0;
+#X connect 2 0 40 0;
+#X connect 5 0 10 0;
+#X connect 5 0 12 0;
+#X connect 5 1 13 0;
+#X connect 6 0 9 0;
+#X connect 9 0 11 1;
+#X connect 10 0 11 0;
+#X connect 11 0 16 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 6 1;
+#X connect 14 0 10 1;
+#X connect 14 0 13 1;
+#X connect 15 0 6 0;
+#X connect 15 0 12 1;
+#X connect 16 0 2 1;
+#X connect 19 0 22 0;
+#X connect 19 0 24 0;
+#X connect 19 1 25 0;
+#X connect 20 0 21 0;
+#X connect 21 0 23 1;
+#X connect 22 0 23 0;
+#X connect 23 0 29 0;
+#X connect 24 0 27 0;
+#X connect 25 0 26 0;
+#X connect 26 0 20 1;
+#X connect 26 0 22 1;
+#X connect 26 0 25 1;
+#X connect 27 0 20 0;
+#X connect 27 0 24 1;
+#X connect 29 0 2 2;
+#X connect 30 0 31 0;
+#X connect 31 0 33 1;
+#X connect 31 0 43 0;
+#X connect 32 0 2 0;
+#X connect 34 0 41 0;
+#X connect 35 0 36 0;
+#X connect 37 0 33 0;
+#X connect 38 0 33 0;
+#X connect 39 0 38 0;
+#X connect 40 0 34 0;
+#X connect 40 0 35 0;
+#X connect 40 0 37 0;
+#X connect 42 0 33 0;
+#X connect 43 0 44 0;
+#X connect 44 0 42 0;
+#X restore 117 348 pd cursor;
+#X obj 292 133 separator;
+#X obj 292 154 pix_texture;
+#X obj 292 175 square 4;
+#X obj 278 368 pix_texture;
+#X obj 159 170 separator;
+#X obj 278 348 alpha;
+#X obj 278 328 colourRGB 1 1 1 0.65;
+#X obj 278 388 translateXYZ -2.4 -2.4 0;
+#X obj 278 408 square 1.5;
+#X obj 227 68 gemhead 10;
+#X obj 227 89 pix_video;
+#X text 276 309 Show pix_background output;
+#X text 116 369 Show centroid/size;
+#X text 294 210 Set noise threshold;
+#X text 291 115 Render source video;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 5 0 16 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 0;
+#X connect 8 1 9 0;
+#X connect 8 2 9 1;
+#X connect 8 3 9 2;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 13 0 17 0;
+#X connect 14 0 3 0;
+#X connect 15 0 13 0;
+#X connect 16 0 15 0;
+#X connect 17 0 18 0;
+#X connect 19 0 20 0;
+#X connect 20 0 10 0;
+#X connect 20 0 14 0;
diff --git a/doc/tutorials/visual/TEMPLATE.pd b/doc/tutorials/visual/TEMPLATE.pd
index 6fc45ac9..24956083 100644
--- a/doc/tutorials/visual/TEMPLATE.pd
+++ b/doc/tutorials/visual/TEMPLATE.pd
@@ -1,4 +1,4 @@
-#N canvas 15 58 628 448 10;
+#N canvas 10 40 620 460 10;
#X obj 8 10 cnv 15 400 40 empty empty TEMPLATE 20 12 0 24 -228992 -66577
0;
#X obj 465 16 gemwin_control;