aboutsummaryrefslogtreecommitdiff
path: root/Gem/examples/04.pix
diff options
context:
space:
mode:
authorTravis CI <zmoelnig@travis-ci.umlaeute.mur.at>2015-03-14 20:40:49 +0000
committerTravis CI <zmoelnig@travis-ci.umlaeute.mur.at>2015-03-14 20:40:49 +0000
commit5c694f159b012d1d94bf15bfe580dec52e4fe797 (patch)
treece400f82d72f92189c50f54afa11c568cda53562 /Gem/examples/04.pix
Gem osx/x86_64
built '' for osx/x86_64
Diffstat (limited to 'Gem/examples/04.pix')
-rw-r--r--Gem/examples/04.pix/01.image.pd60
-rw-r--r--Gem/examples/04.pix/02.multiimage.pd49
-rw-r--r--Gem/examples/04.pix/04.ImageInPlace.pd64
-rw-r--r--Gem/examples/04.pix/05.film.pd121
-rw-r--r--Gem/examples/04.pix/05.movie.pd89
-rw-r--r--Gem/examples/04.pix/06.PixRect.pd88
-rw-r--r--Gem/examples/04.pix/07.PixSet.pd69
-rw-r--r--Gem/examples/04.pix/08.PixDump.pd64
-rw-r--r--Gem/examples/04.pix/09.Histogram.pd89
-rw-r--r--Gem/examples/04.pix/10.PixDataSimple.pd90
-rw-r--r--Gem/examples/04.pix/11.PixDataComplex.pd117
-rw-r--r--Gem/examples/04.pix/12.add.pd52
-rw-r--r--Gem/examples/04.pix/12.blending.pd173
-rw-r--r--Gem/examples/04.pix/12.composite.pd54
-rw-r--r--Gem/examples/04.pix/12.pix_multiply.pd55
-rw-r--r--Gem/examples/04.pix/13.maskDancer.pd55
-rw-r--r--Gem/examples/04.pix/14.takeAlpha.pd64
-rw-r--r--Gem/examples/04.pix/15.pix_alpha.pd82
-rw-r--r--Gem/examples/04.pix/16.alphaGrey.pd78
-rw-r--r--Gem/examples/04.pix/16.pix_2grey.pd45
-rw-r--r--Gem/examples/04.pix/17.pix_gain.pd72
-rw-r--r--Gem/examples/04.pix/18.Curves.pd180
-rw-r--r--Gem/examples/04.pix/19.colorMatrix.pd60
-rw-r--r--Gem/examples/04.pix/20.convolve.pd106
-rw-r--r--Gem/examples/04.pix/22.biquad.pd108
-rw-r--r--Gem/examples/04.pix/23.gravity.pd108
-rw-r--r--Gem/examples/04.pix/24.time-filtering.pd102
-rw-r--r--Gem/examples/04.pix/25.buffer.pd137
-rw-r--r--Gem/examples/04.pix/26.framebuffer_readback.pd88
-rw-r--r--Gem/examples/04.pix/27.bitmap_font.pd152
30 files changed, 2671 insertions, 0 deletions
diff --git a/Gem/examples/04.pix/01.image.pd b/Gem/examples/04.pix/01.image.pd
new file mode 100644
index 0000000..0abd4a9
--- /dev/null
+++ b/Gem/examples/04.pix/01.image.pd
@@ -0,0 +1,60 @@
+#N canvas 452 108 681 502 12;
+#X text 172 376 click on the pix_image object to display the loaded
+image with imgview;
+#X obj 179 199 gemhead;
+#X obj 179 351 pix_draw;
+#X text 196 18 display an image using pix_draw;
+#X obj 179 227 pix_image ../data/dancer.JPG;
+#X obj 179 309 translateXYZ;
+#X floatatom 315 261 0 0 0 0 - - -;
+#X text 176 177 notice that Z doesn't change the size of the image
+;
+#X text 62 442 On most machines \, pix_draw is MUCH slower than pix_texture.
+However \, pix_draw is easier to use in an example patch.;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X obj 315 284 / 100;
+#X floatatom 264 261 0 0 0 0 - - -;
+#X obj 264 284 / 100;
+#X floatatom 213 261 0 0 0 0 - - -;
+#X obj 213 284 / 100;
+#X connect 1 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 6 0 13 0;
+#X connect 10 0 11 0;
+#X connect 11 0 10 0;
+#X connect 13 0 5 3;
+#X connect 14 0 15 0;
+#X connect 15 0 5 2;
+#X connect 16 0 17 0;
+#X connect 17 0 5 1;
diff --git a/Gem/examples/04.pix/02.multiimage.pd b/Gem/examples/04.pix/02.multiimage.pd
new file mode 100644
index 0000000..5f0c519
--- /dev/null
+++ b/Gem/examples/04.pix/02.multiimage.pd
@@ -0,0 +1,49 @@
+#N canvas 411 137 739 504 12;
+#X msg 345 170 1;
+#X msg 345 202 0;
+#X obj 278 200 gemhead;
+#X msg 344 133 2;
+#X text 206 104 select one of the three images to display;
+#X text 154 29 display images use pix_multiimage;
+#X obj 278 255 pix_multiimage ../data/temp*.JPG 2;
+#X obj 20 209 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 253 pd gemwin;
+#X msg 25 229 create;
+#X text 21 209 Create window and render;
+#X obj 278 313 pix_texture;
+#X obj 278 335 square 3;
+#X connect 0 0 6 1;
+#X connect 1 0 6 1;
+#X connect 2 0 6 0;
+#X connect 3 0 6 1;
+#X connect 6 0 11 0;
+#X connect 8 0 9 0;
+#X connect 9 0 8 0;
+#X connect 11 0 12 0;
diff --git a/Gem/examples/04.pix/04.ImageInPlace.pd b/Gem/examples/04.pix/04.ImageInPlace.pd
new file mode 100644
index 0000000..72e6f0b
--- /dev/null
+++ b/Gem/examples/04.pix/04.ImageInPlace.pd
@@ -0,0 +1,64 @@
+#N canvas 314 61 654 599 12;
+#X msg 489 227 1;
+#X msg 489 259 0;
+#X obj 375 254 gemhead;
+#X msg 488 190 2;
+#X text 254 156 select one of the three images to display;
+#X obj 375 308 pix_imageInPlace;
+#X msg 121 288 download;
+#X msg 124 318 purge;
+#X obj 375 367 square;
+#X text 206 20 display images use pix_imageInPlace;
+#X text 64 389 pix_imageInPlace is slightly different than pix_multiimage.
+When you select an image to display with pix_multiimage \, it copies
+over the image data to the pix_buffer \, which is then used by pix_texture.
+;
+#X text 62 451 This is potentially slow if you are trying to change
+between a lot of images \, but it doesn't use a lot of texture ram.
+;
+#X text 62 503 pix_imageInPlace sends all of the image data to texture
+RAM when the preload message is received. This means that you cannot
+process any of the pixel data \, but it is extremely quick to change
+between the various images.;
+#X msg 119 255 preload ../data/temp*.JPG 2;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X connect 0 0 5 1;
+#X connect 1 0 5 1;
+#X connect 2 0 5 0;
+#X connect 3 0 5 1;
+#X connect 5 0 8 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 13 0 5 0;
+#X connect 15 0 16 0;
+#X connect 16 0 15 0;
diff --git a/Gem/examples/04.pix/05.film.pd b/Gem/examples/04.pix/05.film.pd
new file mode 100644
index 0000000..601dd7b
--- /dev/null
+++ b/Gem/examples/04.pix/05.film.pd
@@ -0,0 +1,121 @@
+#N canvas 61 44 827 553 12;
+#X obj 90 186 gemhead;
+#X floatatom 220 155 5 0 0 0 - - -;
+#X msg 150 156 auto \$1;
+#X obj 150 137 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X floatatom 124 261 5 0 0 0 - - -;
+#X msg 197 392 -1 -2 -1 -2 8 -2 1 -2 1;
+#X obj 90 467 pix_convolve 3 3;
+#X text 472 233 load and play-back a movie;
+#X text 368 28 win32:;
+#X text 212 134 frame;
+#N canvas 243 65 604 505 README 0;
+#X text 49 38 the pix_film is the same as pix_movie but does not texture
+the movie immediately onto a Geo.;
+#X text 50 77 therefore it is possible to manipulate the frames;
+#X text 48 106 the pix_film object will return the movie in it's (more
+or less) native color-space. most of the times \, this will probably
+be not RGBA but RGB or BGR (on windows machines).;
+#X text 48 153 do not worry about this. however \, most of the pix-manips
+will only work correctly on RGBA-pixes. if this is the case and you
+send it a non-RGBA pixture it will say something like "pix_object cannot
+handle gray image".;
+#X text 49 226 to avoid this \, you can convert your pix-buff to RGBA
+using "pix_rgba". this will be a no-cost operation if the pix_buf already
+is in RGBA.;
+#X text 36 334 you might notice a significant performance-enhancement
+by just turning the [pix_rgba] off (via the toggle). however \, not
+[pix_rgba] is expensive but actually the [pix_convolve] (which appears to do
+nothing when initialized with "0 0 0 0 1 0 0 0 0". When [pix_rgba]
+is "off" \, the [pix_convolve] will be bypassed \, and therefore be
+very fast.;
+#X restore 635 187 pd README;
+#X obj 90 573 square 4;
+#X obj 90 233 pix_film;
+#X floatatom 149 547 5 0 0 0 - - -;
+#X msg 393 48 open ../data/homer.avi;
+#X msg 386 111 open ../data/anim-1.mov;
+#X msg 391 156 open ../data/alea.mpg;
+#X text 247 502 you have to texture the movie by hand;
+#X text 256 466 manipulate the movie (expensive!);
+#X text 26 10 load \, play and manipulate digital videos;
+#X text 423 397 edge detection;
+#X msg 230 424 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125 0.125
+;
+#X text 715 422 smoothing;
+#X obj 289 252 t f;
+#X obj 197 368 loadbang;
+#X obj 110 439 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X obj 90 500 pix_texture;
+#X obj 20 49 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 93 pd gemwin;
+#X msg 25 69 create;
+#X text 21 49 Create window and render;
+#X text 358 91 linux \, os-X:;
+#X text 363 140 linux \, ??:;
+#X obj 345 181 t a;
+#X msg 410 207 open \$1;
+#X obj 410 185 symbol;
+#X obj 471 185 openpanel;
+#X obj 563 185 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 90 309 pix_rgba;
+#X text 178 289 transform the movie into RGBA-space (if the image is
+not RGBA \, [pix_convolve] might not be able to process the image and
+therefore will do nothing \, which will dramatically "increase" performance)
+;
+#X connect 0 0 12 0;
+#X connect 1 0 12 1;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 5 0 6 2;
+#X connect 6 0 26 0;
+#X connect 12 0 38 0;
+#X connect 12 1 4 0;
+#X connect 12 2 23 0;
+#X connect 13 0 11 1;
+#X connect 14 0 33 0;
+#X connect 15 0 33 0;
+#X connect 16 0 33 0;
+#X connect 21 0 6 2;
+#X connect 23 0 12 1;
+#X connect 24 0 5 0;
+#X connect 25 0 6 0;
+#X connect 26 0 11 0;
+#X connect 28 0 29 0;
+#X connect 29 0 28 0;
+#X connect 33 0 12 0;
+#X connect 34 0 33 0;
+#X connect 35 0 34 0;
+#X connect 36 0 35 0;
+#X connect 37 0 36 0;
+#X connect 38 0 6 0;
diff --git a/Gem/examples/04.pix/05.movie.pd b/Gem/examples/04.pix/05.movie.pd
new file mode 100644
index 0000000..a6227d3
--- /dev/null
+++ b/Gem/examples/04.pix/05.movie.pd
@@ -0,0 +1,89 @@
+#N canvas 133 25 637 554 12;
+#X obj 157 59 gemhead;
+#X floatatom 336 167 0 0 0 0 - - -;
+#X obj 157 385 rotateXYZ;
+#X obj 157 437 cube;
+#X floatatom 224 359 0 0 0 0 - - -;
+#X obj 224 310 metro 50;
+#X obj 203 412 translateXYZ 2 1 0;
+#X obj 203 438 cube;
+#X obj 157 201 pix_movie;
+#X text 377 167 control which frame;
+#X text 256 436 automatically textures;
+#X obj 177 238 print frames;
+#X msg 287 25 open ../data/homer.avi;
+#X obj 224 290 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X obj 325 282 print done;
+#X msg 336 135 auto \$1;
+#X obj 336 116 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X text 43 486 the texturing is done automatically: there is no need
+to care for the image-size (it doesn't have to be a power of 2). on
+the other hand \, you cannot do image-processing !! use [pix_film]
+for this;
+#X msg 325 259 reached the end !!!;
+#X obj 293 235 t f b;
+#X text 449 13 Win32;
+#X text 461 73 linux;
+#X msg 297 56 open ../data/anim-1.mov;
+#X msg 307 87 open ../data/alea.mpg;
+#X text 8 264 notice: you don't need pix_texture;
+#X text 406 131 play the movie !;
+#X obj 224 335 i;
+#X obj 259 335 + 1;
+#X obj 295 335 % 360;
+#X text 471 42 apple;
+#X obj 505 415 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 142 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 198 112 destroy;
+#X msg 234 221 dimen 500 500;
+#X msg 279 189 dimen 1024 768;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X restore 510 453 pd gemwin;
+#X msg 510 430 create;
+#X text 506 413 Create window:;
+#X connect 0 0 8 0;
+#X connect 1 0 8 1;
+#X connect 2 0 3 0;
+#X connect 2 0 6 0;
+#X connect 4 0 2 2;
+#X connect 4 0 2 3;
+#X connect 5 0 26 0;
+#X connect 6 0 7 0;
+#X connect 8 0 2 0;
+#X connect 8 1 11 0;
+#X connect 8 2 19 0;
+#X connect 12 0 8 0;
+#X connect 13 0 5 0;
+#X connect 15 0 8 0;
+#X connect 16 0 15 0;
+#X connect 18 0 14 0;
+#X connect 19 0 8 1;
+#X connect 19 1 18 0;
+#X connect 22 0 8 0;
+#X connect 23 0 8 0;
+#X connect 26 0 27 0;
+#X connect 26 0 4 0;
+#X connect 27 0 28 0;
+#X connect 28 0 26 1;
+#X connect 31 0 32 0;
+#X connect 32 0 31 0;
diff --git a/Gem/examples/04.pix/06.PixRect.pd b/Gem/examples/04.pix/06.PixRect.pd
new file mode 100644
index 0000000..93f5fba
--- /dev/null
+++ b/Gem/examples/04.pix/06.PixRect.pd
@@ -0,0 +1,88 @@
+#N canvas 183 99 635 638 12;
+#X obj 179 176 gemhead;
+#X obj 179 587 pix_texture;
+#X msg 291 536 1 0 0;
+#X obj 179 612 square 3;
+#X floatatom 329 238 0 -10 250 0 - - -;
+#X obj 420 434 t b f;
+#X obj 420 408 + 40;
+#X obj 342 420 + 40;
+#X text 372 182 the position;
+#X text 433 539 the color;
+#X obj 291 513 loadbang;
+#X obj 179 204 pix_image ../data/fractal.JPG;
+#X obj 329 308 t f f;
+#X obj 380 308 t f f;
+#X text 375 241 x-pos;
+#X text 423 269 y-pos;
+#X floatatom 466 304 0 -50 250 0 - - -;
+#X text 512 307 width;
+#X text 560 335 height;
+#X obj 466 374 t b f;
+#X obj 517 374 t b f;
+#X obj 342 443 t b f;
+#X floatatom 380 271 0 -10 250 0 - - -;
+#X floatatom 517 333 0 -50 250 0 - - -;
+#X msg 373 538 0 1 0;
+#X obj 235 488 pack 0 0 40 40;
+#X obj 179 561 pix_rectangle;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X text 118 26 draw a rectangle onto an image;
+#X connect 0 0 11 0;
+#X connect 1 0 3 0;
+#X connect 2 0 26 2;
+#X connect 4 0 12 0;
+#X connect 5 0 25 0;
+#X connect 5 1 25 3;
+#X connect 6 0 5 0;
+#X connect 7 0 21 0;
+#X connect 10 0 2 0;
+#X connect 11 0 26 0;
+#X connect 12 0 25 0;
+#X connect 12 1 7 0;
+#X connect 13 0 6 0;
+#X connect 13 1 25 1;
+#X connect 16 0 19 0;
+#X connect 19 0 7 0;
+#X connect 19 1 7 1;
+#X connect 20 0 6 0;
+#X connect 20 1 6 1;
+#X connect 21 0 25 0;
+#X connect 21 1 25 2;
+#X connect 22 0 13 0;
+#X connect 23 0 20 0;
+#X connect 24 0 26 2;
+#X connect 25 0 26 1;
+#X connect 26 0 1 0;
+#X connect 28 0 29 0;
+#X connect 29 0 28 0;
diff --git a/Gem/examples/04.pix/07.PixSet.pd b/Gem/examples/04.pix/07.PixSet.pd
new file mode 100644
index 0000000..b6deab3
--- /dev/null
+++ b/Gem/examples/04.pix/07.PixSet.pd
@@ -0,0 +1,69 @@
+#N canvas 243 272 754 536 10;
+#X obj 143 110 gemhead;
+#X text 99 37 ========;
+#X msg 149 366 quality 0;
+#X obj 143 409 square 2;
+#X obj 149 343 loadbang;
+#X text 101 487 maybe have a look at;
+#X text 101 24 pix_set;
+#X text 246 23 set the pixles of the image;
+#X msg 279 165 rgb;
+#X msg 279 141 rgba;
+#X msg 279 189 grey;
+#X msg 229 108 0 0.8 0 0 0.9 0 0.1 0 1 1 1 10;
+#X msg 268 227 set 2 4;
+#X text 461 109 a list of pixel-values;
+#X text 331 163 interpret the list as;
+#X text 514 136 r1 g1 b1 a1 r2 g2 b2 a2 r3...;
+#X text 512 165 r1 g1 b1 r2 g2 b2 r3...;
+#X text 512 194 grey1 grey2 grey3...;
+#X text 507 236 set the imagesize to "X Y";
+#X text 306 317 creation arguments :: [X Y] of the image buffer;
+#X msg 265 249 set 1 1;
+#X text 253 487 [pix_dump];
+#X obj 143 243 pix_set 64 64;
+#X obj 143 387 pix_texture;
+#X obj 450 389 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 455 433 pd gemwin;
+#X msg 455 409 create;
+#X text 451 389 Create window and render;
+#X connect 0 0 22 0;
+#X connect 2 0 23 0;
+#X connect 4 0 2 0;
+#X connect 8 0 22 0;
+#X connect 9 0 22 0;
+#X connect 10 0 22 0;
+#X connect 11 0 22 1;
+#X connect 12 0 22 0;
+#X connect 20 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 3 0;
+#X connect 25 0 26 0;
+#X connect 26 0 25 0;
diff --git a/Gem/examples/04.pix/08.PixDump.pd b/Gem/examples/04.pix/08.PixDump.pd
new file mode 100644
index 0000000..a21b273
--- /dev/null
+++ b/Gem/examples/04.pix/08.PixDump.pd
@@ -0,0 +1,64 @@
+#N canvas 53 47 761 536 10;
+#X obj 143 110 gemhead;
+#X obj 143 203 pix_dump;
+#X text 101 24 pix_dump;
+#X text 99 37 ========;
+#X msg 369 184 bang;
+#X obj 143 387 pix_texture;
+#X msg 149 366 quality 0;
+#X obj 143 409 square 2;
+#X obj 149 343 loadbang;
+#X text 412 184 trigger the pix_dump;
+#X text 246 24 dump the pixels of the image;
+#X obj 194 254 print dump;
+#X text 297 265 this produces an output like;
+#X text 292 285 "r1 g1 b1 a1 r2 g2 b2 a2 r3 ...";
+#X text 292 302 (r=red \; g=green \; b=blue \; a=alpha);
+#X obj 474 371 repack;
+#X text 278 369 maybe you would like to use;
+#X text 525 373 (part of zexy);
+#X text 275 389 to excerpt pixel information out of this;
+#X text 101 487 maybe have a look at;
+#X obj 250 487 pix_set;
+#X obj 455 54 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 460 98 pd gemwin;
+#X msg 460 74 create;
+#X text 456 54 Create window and render;
+#X obj 143 135 pix_image ../data/blob2.tif;
+#X connect 0 0 25 0;
+#X connect 1 0 5 0;
+#X connect 1 1 11 0;
+#X connect 4 0 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 8 0 6 0;
+#X connect 22 0 23 0;
+#X connect 23 0 22 0;
+#X connect 25 0 1 0;
diff --git a/Gem/examples/04.pix/09.Histogram.pd b/Gem/examples/04.pix/09.Histogram.pd
new file mode 100644
index 0000000..5922a8e
--- /dev/null
+++ b/Gem/examples/04.pix/09.Histogram.pd
@@ -0,0 +1,89 @@
+#N canvas 0 0 764 557 10;
+#N canvas 412 247 681 394 tables 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array red 256 float 0;
+#X coords 0 1 255 0 256 140 1;
+#X restore 95 30 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array green 256 float 0;
+#X coords 0 1 255 0 256 140 1;
+#X restore 399 29 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array blue 256 float 0;
+#X coords 0 1 255 0 256 140 1;
+#X restore 98 214 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array alpha 64 float 0;
+#X coords 0 1 63 0 256 140 1;
+#X restore 396 212 graph;
+#X restore 379 211 pd tables;
+#X obj 34 192 gemhead;
+#X obj 34 476 pix_texture;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array rgb 64 float 0;
+#X coords 0 1 63 0 256 140 1;
+#X restore 287 53 graph;
+#X text 78 8 pix_curve: adjust the colour of an image;
+#X text 451 213 separate tables for r \, g \, b and a;
+#X msg 185 192 1;
+#X msg 155 192 0;
+#X msg 214 192 2;
+#X obj 34 497 square 3;
+#X msg 95 289 set red green blue alpha;
+#X msg 99 325 set red green blue;
+#X msg 99 365 set rgb;
+#X obj 34 395 pix_histo rgb;
+#X msg 564 57 \; rgb resize 32;
+#X msg 565 93 \; rgb resize 64;
+#X msg 564 135 \; rgb normalize 1;
+#X obj 300 367 pix_histo rgb;
+#X obj 303 328 pix_histo red green blue;
+#X obj 302 288 pix_histo red green blue alpha;
+#X text 313 388 one histogramm for all channels (making grey out of
+rgb);
+#X text 326 346 histograms for r \, g \, b;
+#X text 337 306 histograms for r \, g \, b \, a;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X obj 34 217 pix_multiimage ../data/temp*.JPG 2;
+#X connect 1 0 27 0;
+#X connect 2 0 9 0;
+#X connect 6 0 27 1;
+#X connect 7 0 27 1;
+#X connect 8 0 27 1;
+#X connect 10 0 13 0;
+#X connect 11 0 13 0;
+#X connect 12 0 13 0;
+#X connect 13 0 2 0;
+#X connect 24 0 25 0;
+#X connect 25 0 24 0;
+#X connect 27 0 13 0;
diff --git a/Gem/examples/04.pix/10.PixDataSimple.pd b/Gem/examples/04.pix/10.PixDataSimple.pd
new file mode 100644
index 0000000..36bb4e6
--- /dev/null
+++ b/Gem/examples/04.pix/10.PixDataSimple.pd
@@ -0,0 +1,90 @@
+#N canvas 284 93 594 539 10;
+#X obj 46 186 gemwin;
+#X obj 319 173 gemhead;
+#X obj 258 329 pix_data;
+#X msg 244 103 1;
+#X msg 243 128 0;
+#X msg 87 48 create;
+#X msg 114 104 destroy;
+#X msg 319 143 bang;
+#X msg 205 103 bang;
+#X obj 205 73 t b b;
+#X msg 205 54 bang;
+#X obj 233 422 translateXYZ;
+#X obj 233 360 gemhead;
+#X obj 233 449 color;
+#X obj 233 200 t b b b b;
+#X obj 369 328 * 6;
+#X obj 444 328 * 6;
+#X obj 444 348 - 3;
+#X obj 369 348 - 3;
+#X msg 348 42 1;
+#X msg 391 42 0;
+#X obj 84 302 world_light;
+#X obj 84 274 gemhead;
+#X obj 348 93 metro 5;
+#X obj 233 478 sphere 0.1;
+#X text 79 13 click here to begin;
+#X text 320 18 turn on/off the metro;
+#X obj 319 202 pix_image ../data/fractal.JPG;
+#N canvas 95 194 290 179 Gem.init 0;
+#X obj 118 18 loadbang;
+#X msg 201 78 reset;
+#X obj 118 113 outlet;
+#X obj 118 45 t b b;
+#X msg 118 79 lighting 1;
+#X msg 22 77 buffer 1;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 1 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X restore 25 153 pd Gem.init;
+#X text 93 34 1;
+#X text 209 38 2;
+#X obj 337 253 random 1000;
+#X obj 337 270 / 1000;
+#X obj 337 288 t f f;
+#X obj 419 253 random 1000;
+#X obj 419 270 / 1000;
+#X obj 419 288 t f f;
+#X connect 1 0 27 0;
+#X connect 2 1 13 1;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 0;
+#X connect 8 0 0 0;
+#X connect 9 0 7 0;
+#X connect 9 0 8 0;
+#X connect 9 1 3 0;
+#X connect 10 0 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 13 0 24 0;
+#X connect 14 0 12 0;
+#X connect 14 1 2 0;
+#X connect 14 1 22 0;
+#X connect 14 2 31 0;
+#X connect 14 3 34 0;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 11 2;
+#X connect 18 0 11 1;
+#X connect 19 0 23 0;
+#X connect 20 0 23 0;
+#X connect 22 0 21 0;
+#X connect 23 0 14 0;
+#X connect 27 0 2 1;
+#X connect 28 0 0 0;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 2 2;
+#X connect 33 1 15 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 2 3;
+#X connect 36 1 16 0;
diff --git a/Gem/examples/04.pix/11.PixDataComplex.pd b/Gem/examples/04.pix/11.PixDataComplex.pd
new file mode 100644
index 0000000..cb8d846
--- /dev/null
+++ b/Gem/examples/04.pix/11.PixDataComplex.pd
@@ -0,0 +1,117 @@
+#N canvas 331 86 929 574 10;
+#X obj 30 159 gemwin;
+#X obj 372 135 gemhead;
+#X obj 372 164 pix_image ../data/fractal.JPG;
+#X obj 285 311 pix_data;
+#X msg 183 110 1;
+#X msg 218 110 0;
+#X msg 48 37 create;
+#X msg 49 87 destroy;
+#X msg 372 105 bang;
+#X msg 138 111 bang;
+#X obj 214 61 t b b;
+#X msg 214 36 bang;
+#X obj 206 400 translateXYZ;
+#X obj 206 338 gemhead;
+#X obj 206 436 color;
+#X obj 266 205 t b b b b;
+#X obj 443 313 * 6;
+#X obj 443 339 - 3;
+#X obj 385 341 - 3;
+#X msg 292 30 1;
+#X msg 325 30 0;
+#X obj 84 320 world_light;
+#X obj 84 274 gemhead;
+#X obj 206 471 rotate 1 1 1;
+#X obj 337 397 * 90;
+#X obj 292 114 metro 5;
+#X obj 485 313 pix_data;
+#X obj 501 237 gemhead;
+#N canvas 99 214 290 179 Gem.init 0;
+#X obj 118 18 loadbang;
+#X msg 215 80 reset;
+#X obj 118 113 outlet;
+#X obj 118 45 t b b;
+#X msg 118 79 lighting 1;
+#X msg 34 80 buffer 1;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 1 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X restore 30 125 pd Gem.init;
+#X text 53 22 1;
+#X text 217 19 2;
+#X obj 336 236 random 1000;
+#X obj 336 254 / 1000;
+#X obj 336 272 t f f;
+#X obj 418 236 random 1000;
+#X obj 418 254 / 1000;
+#X obj 418 272 t f f;
+#X floatatom 385 366 5 0 0 0 - - -;
+#X floatatom 443 366 5 0 0 0 - - -;
+#X obj 385 314 * 6;
+#X floatatom 341 429 5 0 0 0 - - -;
+#X obj 206 506 cube 0;
+#X msg 500 197 bang;
+#X obj 501 272 pix_image ../data/dancer.JPG;
+#X floatatom 537 423 5 0 0 0 - - -;
+#X obj 537 473 * 0.2;
+#X obj 537 369 f;
+#X connect 1 0 2 0;
+#X connect 2 0 3 1;
+#X connect 3 1 14 1;
+#X connect 3 2 24 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;
+#X connect 8 0 1 0;
+#X connect 8 0 27 0;
+#X connect 9 0 0 0;
+#X connect 10 0 8 0;
+#X connect 10 0 9 0;
+#X connect 10 1 4 0;
+#X connect 11 0 10 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 0;
+#X connect 14 0 23 0;
+#X connect 15 0 13 0;
+#X connect 15 1 3 0;
+#X connect 15 1 22 0;
+#X connect 15 1 26 0;
+#X connect 15 2 31 0;
+#X connect 15 3 34 0;
+#X connect 16 0 17 0;
+#X connect 17 0 12 2;
+#X connect 17 0 38 0;
+#X connect 18 0 12 1;
+#X connect 18 0 37 0;
+#X connect 19 0 25 0;
+#X connect 20 0 25 0;
+#X connect 22 0 21 0;
+#X connect 23 0 41 0;
+#X connect 24 0 23 1;
+#X connect 24 0 40 0;
+#X connect 25 0 15 0;
+#X connect 26 1 46 0;
+#X connect 27 0 43 0;
+#X connect 28 0 0 0;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 3 2;
+#X connect 33 0 26 2;
+#X connect 33 1 39 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 3 3;
+#X connect 36 0 26 3;
+#X connect 36 1 16 0;
+#X connect 39 0 18 0;
+#X connect 42 0 27 0;
+#X connect 43 0 26 1;
+#X connect 44 0 45 0;
+#X connect 45 0 41 1;
+#X connect 46 0 44 0;
diff --git a/Gem/examples/04.pix/12.add.pd b/Gem/examples/04.pix/12.add.pd
new file mode 100644
index 0000000..2b5dc7f
--- /dev/null
+++ b/Gem/examples/04.pix/12.add.pd
@@ -0,0 +1,52 @@
+#N canvas 542 198 681 468 10;
+#X obj 270 175 pix_image ../data/dancer.JPG;
+#X obj 270 342 pix_texture;
+#X obj 270 383 square;
+#X msg 329 364 3;
+#X obj 369 209 gemhead 20;
+#X obj 270 142 gemhead;
+#X msg 370 141 open ../data/dancer.JPG;
+#X obj 369 232 pix_image ../data/fractal.JPG;
+#X obj 270 282 pix_add;
+#X obj 20 79 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 123 pd gemwin;
+#X msg 25 106 create;
+#X text 21 79 Create window and render;
+#X text 135 60 blending \, using pixel addition;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 1;
+#X connect 4 0 7 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 8 1;
+#X connect 8 0 1 0;
+#X connect 10 0 11 0;
+#X connect 11 0 10 0;
diff --git a/Gem/examples/04.pix/12.blending.pd b/Gem/examples/04.pix/12.blending.pd
new file mode 100644
index 0000000..473c48e
--- /dev/null
+++ b/Gem/examples/04.pix/12.blending.pd
@@ -0,0 +1,173 @@
+#N canvas 138 0 775 371 10;
+#X obj 254 305 pix_texture;
+#X obj 290 112 gemhead 20;
+#X obj 254 65 gemhead;
+#X text 257 30 various methods for blending images;
+#N canvas 165 295 561 386 blending 0;
+#X obj 28 65 inlet;
+#X obj 191 354 outlet;
+#X obj 173 285 inlet;
+#X obj 320 8 inlet;
+#X obj 28 322 pix_composite;
+#X obj 129 323 pix_add;
+#X obj 285 322 pix_diff;
+#X obj 191 322 pix_subtract;
+#X obj 28 227 pix_alpha;
+#N canvas 445 182 508 174 select 0;
+#X obj 88 35 inlet;
+#X msg 88 98 1;
+#X msg 144 98 2;
+#X msg 201 97 3;
+#X msg 257 97 0;
+#X obj 88 121 outlet;
+#X msg 329 100 4;
+#X obj 88 59 select pix_add pix_subtract pix_diff pix_composite pix_multiply
+;
+#X connect 0 0 7 0;
+#X connect 1 0 5 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 7 1 2 0;
+#X connect 7 2 3 0;
+#X connect 7 3 4 0;
+#X connect 7 4 6 0;
+#X restore 350 82 pd select blending method;
+#X obj 360 324 pix_multiply;
+#N canvas 172 373 450 300 demux5 0;
+#X obj 59 30 inlet;
+#X obj 283 17 inlet;
+#X obj 59 193 outlet;
+#X obj 59 137 spigot;
+#X obj 96 109 == 0;
+#X obj 106 137 spigot;
+#X obj 153 139 spigot;
+#X obj 200 137 spigot;
+#X obj 246 137 spigot;
+#X obj 143 109 == 1;
+#X obj 190 109 == 2;
+#X obj 237 109 == 3;
+#X obj 283 109 == 4;
+#X obj 96 83 loadbang;
+#X obj 59 52 t a a a a a;
+#X obj 106 194 outlet;
+#X obj 153 195 outlet;
+#X obj 200 196 outlet;
+#X obj 246 195 outlet;
+#X obj 283 61 f;
+#X connect 0 0 14 0;
+#X connect 1 0 19 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 15 0;
+#X connect 6 0 16 0;
+#X connect 7 0 17 0;
+#X connect 8 0 18 0;
+#X connect 9 0 5 1;
+#X connect 10 0 6 1;
+#X connect 11 0 7 1;
+#X connect 12 0 8 1;
+#X connect 13 0 4 0;
+#X connect 14 0 3 0;
+#X connect 14 1 5 0;
+#X connect 14 2 6 0;
+#X connect 14 3 7 0;
+#X connect 14 4 8 0;
+#X connect 19 0 4 0;
+#X connect 19 0 9 0;
+#X connect 19 0 10 0;
+#X connect 19 0 11 0;
+#X connect 19 0 12 0;
+#X restore 28 189 pd demux5;
+#X obj 320 28 t b a;
+#X obj 28 129 pix_buf;
+#X text 26 39 pix1;
+#X text 176 269 pix2;
+#X obj 350 56 symbol;
+#X text 99 232 we need an alpha componenct for 'composite';
+#X text 85 115 [pix_add] and friends will overwrite the original (left)
+image with the blend. [pix_buf] holds a local copy of the original
+image and will refresh the output when banged.;
+#X connect 0 0 13 0;
+#X connect 2 0 5 1;
+#X connect 2 0 4 1;
+#X connect 2 0 7 1;
+#X connect 2 0 6 1;
+#X connect 2 0 10 1;
+#X connect 3 0 12 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X connect 8 0 4 0;
+#X connect 9 0 11 1;
+#X connect 10 0 1 0;
+#X connect 11 0 8 0;
+#X connect 11 1 5 0;
+#X connect 11 2 7 0;
+#X connect 11 3 6 0;
+#X connect 11 4 10 0;
+#X connect 12 0 13 0;
+#X connect 12 1 16 0;
+#X connect 13 0 11 0;
+#X connect 16 0 9 0;
+#X restore 254 250 pd blending;
+#X obj 254 328 square 3;
+#X text 461 210 additive blending (likely to get white);
+#X text 461 231 subtractive blending (likely to get black);
+#X text 467 184 alpha blending;
+#X msg 367 281 pix_multiply;
+#X msg 368 256 pix_diff;
+#X msg 366 232 pix_subtract;
+#X msg 366 207 pix_add;
+#X msg 367 184 pix_composite;
+#X text 469 281 multiply 2 images together;
+#X obj 254 87 pix_image ../data/dancer.JPG;
+#X obj 290 136 pix_image ../data/fractal.JPG;
+#X text 465 259 difference;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X connect 0 0 5 0;
+#X connect 1 0 16 0;
+#X connect 2 0 15 0;
+#X connect 4 0 0 0;
+#X connect 9 0 4 2;
+#X connect 10 0 4 2;
+#X connect 11 0 4 2;
+#X connect 12 0 4 2;
+#X connect 13 0 4 2;
+#X connect 15 0 4 0;
+#X connect 16 0 4 1;
+#X connect 19 0 20 0;
+#X connect 20 0 19 0;
diff --git a/Gem/examples/04.pix/12.composite.pd b/Gem/examples/04.pix/12.composite.pd
new file mode 100644
index 0000000..ce3a790
--- /dev/null
+++ b/Gem/examples/04.pix/12.composite.pd
@@ -0,0 +1,54 @@
+#N canvas 246 168 681 468 10;
+#X obj 270 175 pix_image ../data/dancer.JPG;
+#X obj 270 338 pix_texture;
+#X obj 270 379 square;
+#X msg 329 360 3;
+#X obj 270 278 pix_composite;
+#X obj 369 209 gemhead 20;
+#X obj 270 142 gemhead;
+#X obj 270 207 pix_alpha;
+#X msg 370 141 open ../data/dancer.JPG;
+#X obj 369 244 pix_image ../data/fractal.JPG;
+#X text 135 60 blending \, using the alpha-mask;
+#X obj 20 79 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 123 pd gemwin;
+#X msg 25 105 create;
+#X text 21 79 Create window and render;
+#X connect 0 0 7 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 1;
+#X connect 4 0 1 0;
+#X connect 5 0 9 0;
+#X connect 6 0 0 0;
+#X connect 7 0 4 0;
+#X connect 8 0 0 0;
+#X connect 9 0 4 1;
+#X connect 12 0 13 0;
+#X connect 13 0 12 0;
diff --git a/Gem/examples/04.pix/12.pix_multiply.pd b/Gem/examples/04.pix/12.pix_multiply.pd
new file mode 100644
index 0000000..1826175
--- /dev/null
+++ b/Gem/examples/04.pix/12.pix_multiply.pd
@@ -0,0 +1,55 @@
+#N canvas 58 175 600 500 10;
+#X obj 288 247 pix_image ../data/dancer.JPG;
+#X obj 270 153 gemhead;
+#X obj 270 188 pix_image ../data/fractal.JPG;
+#X obj 288 214 gemhead 20;
+#X obj 270 278 pix_multiply;
+#X text 296 84 multiply two images together;
+#X text 270 116 the dancer image is just black and white;
+#X text 104 25 blending \, using multiplication;
+#X obj 270 318 pix_texture;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 689 152 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X msg 27 83 color 1 1 1 0;
+#X obj 66 65 t b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 1 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X obj 270 379 square 3;
+#X connect 0 0 4 1;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 8 0;
+#X connect 8 0 13 0;
+#X connect 10 0 11 0;
+#X connect 11 0 10 0;
diff --git a/Gem/examples/04.pix/13.maskDancer.pd b/Gem/examples/04.pix/13.maskDancer.pd
new file mode 100644
index 0000000..957a941
--- /dev/null
+++ b/Gem/examples/04.pix/13.maskDancer.pd
@@ -0,0 +1,55 @@
+#N canvas 4 20 600 500 10;
+#X obj 270 278 pix_mask;
+#X obj 288 247 pix_image ../data/dancer.JPG;
+#X obj 270 153 gemhead;
+#X obj 270 312 alpha;
+#X obj 270 188 pix_image ../data/fractal.JPG;
+#X obj 270 338 pix_texture;
+#X obj 288 214 gemhead 20;
+#X obj 270 379 square 3;
+#X text 234 59 blending \, using mask;
+#X obj 20 89 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 88 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X msg 25 82 color 1 1 1 0;
+#X obj 88 64 t b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 1 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 133 pd gemwin;
+#X msg 25 109 create;
+#X text 21 89 Create window and render;
+#X connect 0 0 3 0;
+#X connect 1 0 0 1;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 5 0 7 0;
+#X connect 6 0 1 0;
+#X connect 10 0 11 0;
+#X connect 11 0 10 0;
diff --git a/Gem/examples/04.pix/14.takeAlpha.pd b/Gem/examples/04.pix/14.takeAlpha.pd
new file mode 100644
index 0000000..535056c
--- /dev/null
+++ b/Gem/examples/04.pix/14.takeAlpha.pd
@@ -0,0 +1,64 @@
+#N canvas 426 68 613 402 10;
+#X obj 257 92 gemhead;
+#X obj 343 168 gemhead;
+#X obj 257 244 pix_takealpha;
+#X text 18 24 takes the alpha-channel of another image;
+#X obj 456 269 pix_texture;
+#X obj 456 336 square;
+#X obj 456 310 translateXYZ 2 0 0;
+#X obj 257 314 translateXYZ -2 0 0;
+#X obj 456 289 alpha;
+#X obj 257 342 square 2;
+#X obj 257 270 pix_texture;
+#X obj 257 290 alpha;
+#X text 403 173 load an image with an alpha-mask;
+#X text 355 245 take the alpha-mask of img2;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X obj 343 210 t a a;
+#X obj 257 125 pix_image ../data/temp2.JPG;
+#X obj 343 190 pix_image ../data/fractalAlpha.TIF;
+#X connect 0 0 19 0;
+#X connect 1 0 20 0;
+#X connect 2 0 10 0;
+#X connect 4 0 8 0;
+#X connect 6 0 5 0;
+#X connect 7 0 9 0;
+#X connect 8 0 6 0;
+#X connect 10 0 11 0;
+#X connect 11 0 7 0;
+#X connect 15 0 16 0;
+#X connect 16 0 15 0;
+#X connect 18 0 2 1;
+#X connect 18 1 4 0;
+#X connect 19 0 2 0;
+#X connect 20 0 18 0;
diff --git a/Gem/examples/04.pix/15.pix_alpha.pd b/Gem/examples/04.pix/15.pix_alpha.pd
new file mode 100644
index 0000000..de645f2
--- /dev/null
+++ b/Gem/examples/04.pix/15.pix_alpha.pd
@@ -0,0 +1,82 @@
+#N canvas 78 67 719 587 10;
+#X obj 332 30 gemhead;
+#X obj 332 371 pix_texture;
+#X msg 375 394 4;
+#X obj 332 76 pix_image ../data/fractal.JPG;
+#X obj 332 302 pix_alpha;
+#X obj 332 421 square;
+#X obj 332 336 alpha;
+#X msg 456 166 1 1 1;
+#X msg 459 243 0 0 0;
+#X msg 356 219 0.5;
+#X msg 348 185 1;
+#X msg 457 209 1 0.5 0.5;
+#X msg 362 255 0;
+#X text 212 222 set the alpha value;
+#X text 394 138 set the high threshold;
+#N canvas 12 0 271 246 cube 0;
+#X obj 69 39 gemhead 20;
+#X obj 69 71 translateXYZ 0 0 -4;
+#X obj 69 205 cube;
+#X obj 69 180 rotateXYZ;
+#X obj 69 112 render_trigger;
+#X obj 115 141 i;
+#X obj 145 142 + 1;
+#X obj 180 143 % 360;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 5 0;
+#X connect 5 0 6 0;
+#X connect 5 0 3 1;
+#X connect 5 0 3 2;
+#X connect 5 0 3 3;
+#X connect 6 0 7 0;
+#X connect 7 0 5 1;
+#X restore 444 551 pd cube in the back;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X connect 0 0 3 0;
+#X connect 1 0 5 0;
+#X connect 2 0 5 1;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 6 0 1 0;
+#X connect 7 0 4 3;
+#X connect 8 0 4 3;
+#X connect 9 0 4 1;
+#X connect 10 0 4 1;
+#X connect 11 0 4 3;
+#X connect 12 0 4 1;
+#X connect 17 0 18 0;
+#X connect 18 0 17 0;
diff --git a/Gem/examples/04.pix/16.alphaGrey.pd b/Gem/examples/04.pix/16.alphaGrey.pd
new file mode 100644
index 0000000..9d5405b
--- /dev/null
+++ b/Gem/examples/04.pix/16.alphaGrey.pd
@@ -0,0 +1,78 @@
+#N canvas 28 0 713 500 10;
+#X obj 135 336 pix_texture;
+#X obj 135 393 square 2;
+#X obj 135 171 pix_image ../data/fractalAlpha.TIF;
+#X obj 135 308 pix_a_2grey 0.5;
+#X obj 135 215 translateXYZ -2 0 0;
+#X obj 386 140 gemhead;
+#X obj 386 309 pix_texture;
+#X obj 386 402 square 2;
+#X obj 386 171 pix_image ../data/fractalAlpha.TIF;
+#X obj 386 348 alpha;
+#X obj 386 209 translateXYZ 2 0 0;
+#X obj 228 13 pix_a_2grey;
+#X text 261 55 grey's out all pixels \, of which the alpha-channel
+is above a certain threshold;
+#X obj 240 269 hsl 128 15 -1 1 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 3100 1;
+#X msg 237 246 0;
+#X msg 266 246 0.5;
+#X obj 20 39 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 21 39 Create window and render;
+#X obj 135 139 gemhead;
+#N canvas 340 107 682 322 gemwin 0;
+#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144
+-1 -1 1 1;
+#X obj 102 161 r \$0-gemstart;
+#X obj 102 182 select 1 0;
+#X msg 102 214 create \, 1;
+#X msg 177 215 destroy;
+#X obj 102 239 t a;
+#X obj 318 54 inlet;
+#X obj 318 255 gemwin;
+#X obj 318 100 t a a;
+#X obj 318 287 outlet;
+#X obj 350 128 route create destroy;
+#X obj 350 150 t b;
+#X msg 350 172 1;
+#X obj 390 150 t b;
+#X msg 390 172 0;
+#X obj 350 195 t f;
+#X msg 350 219 set \$1;
+#X text 118 122 rendering;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
+#X restore 28 61 pd gemwin;
+#X floatatom 237 288 5 -1 1 0 - - -;
+#X connect 0 0 1 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 5 0 8 0;
+#X connect 6 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 13 0 20 0;
+#X connect 14 0 13 0;
+#X connect 15 0 13 0;
+#X connect 18 0 2 0;
+#X connect 20 0 3 1;
diff --git a/Gem/examples/04.pix/16.pix_2grey.pd b/Gem/examples/04.pix/16.pix_2grey.pd
new file mode 100644
index 0000000..e2552c1
--- /dev/null
+++ b/Gem/examples/04.pix/16.pix_2grey.pd
@@ -0,0 +1,45 @@
+#N canvas 204 170 691 547 10;
+#X obj 308 140 gemhead;
+#X obj 308 374 pix_texture;
+#X obj 308 402 square 2;
+#X obj 308 171 pix_image ../data/fractalAlpha.TIF;
+#X obj 308 297 pix_2grey;
+#X obj 20 159 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 203 pd gemwin;
+#X msg 25 179 create;
+#X text 21 159 Create window and render;
+#X text 64 81 greys out all pixels (but pixel-values are still in RGBA)
+;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 6 0;
diff --git a/Gem/examples/04.pix/17.pix_gain.pd b/Gem/examples/04.pix/17.pix_gain.pd
new file mode 100644
index 0000000..3b6ae5e
--- /dev/null
+++ b/Gem/examples/04.pix/17.pix_gain.pd
@@ -0,0 +1,72 @@
+#N canvas 111 106 885 510 10;
+#X floatatom 664 182 0 0 0 0 - - -;
+#X obj 664 210 / 100;
+#X floatatom 610 163 0 0 0 0 - - -;
+#X obj 610 192 / 100;
+#X obj 343 56 gemhead;
+#X obj 343 319 pix_texture;
+#X msg 394 359 4;
+#X floatatom 556 121 0 0 0 0 - - -;
+#X obj 556 149 / 100;
+#X obj 343 268 pix_gain;
+#X obj 556 241 pack 0 0 0;
+#X obj 343 387 triangle;
+#X text 356 341 click here to change the size of the triangle;
+#X msg 570 213 bang;
+#X obj 343 82 pix_image ../data/fractal.JPG;
+#X obj 364 134 vsl 15 128 0 1 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 1;
+#X text 382 141 overall factor;
+#X text 632 121 color-wise factor;
+#X text 103 453 using [pix_gain] is probably very expensive (since
+it does operations on your CPU). Try using [color] if your card has
+openGL-hw-accleration...;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X connect 0 0 1 0;
+#X connect 1 0 10 2;
+#X connect 1 0 13 0;
+#X connect 2 0 3 0;
+#X connect 3 0 10 1;
+#X connect 3 0 13 0;
+#X connect 4 0 14 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 1;
+#X connect 7 0 8 0;
+#X connect 8 0 10 0;
+#X connect 9 0 5 0;
+#X connect 10 0 9 2;
+#X connect 13 0 10 0;
+#X connect 14 0 9 0;
+#X connect 15 0 9 1;
+#X connect 20 0 21 0;
+#X connect 21 0 20 0;
diff --git a/Gem/examples/04.pix/18.Curves.pd b/Gem/examples/04.pix/18.Curves.pd
new file mode 100644
index 0000000..ca02c91
--- /dev/null
+++ b/Gem/examples/04.pix/18.Curves.pd
@@ -0,0 +1,180 @@
+#N canvas 119 33 764 634 10;
+#N canvas 285 0 681 629 tables 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array red 256 float 0;
+#X coords 0 255 255 0 256 140 1;
+#X restore 95 30 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array green 256 float 0;
+#X coords 0 255 255 0 256 140 1;
+#X restore 399 29 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array blue 256 float 0;
+#X coords 0 255 255 0 256 140 1;
+#X restore 98 214 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array alpha 64 float 0;
+#X coords 0 255 63 0 256 140 1;
+#X restore 396 212 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array edge 8 float 0;
+#X coords 0 255 7 0 256 140 1;
+#X restore 49 440 graph;
+#X text 319 459 set all black and white pixels to black.;
+#X text 318 477 set all "grey" pixels (the transients) to white.;
+#X restore 219 225 pd tables;
+#X obj 30 272 gemhead;
+#X obj 30 468 pix_texture;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array rgba 67 float 0;
+#X coords 0 256 66 0 256 140 1;
+#X restore 217 70 graph;
+#X text 78 8 pix_curve: adjust the colour of an image;
+#X text 291 227 separate tables for r \, g \, b and a;
+#X obj 466 274 pix_curve rgba;
+#X obj 469 324 pix_curve red green blue;
+#X obj 470 373 pix_curve red green blue alpha;
+#X text 504 291 one curve for all channels;
+#X text 505 391 curves for r \, g \, b \, a;
+#X text 500 341 curves for r \, g \, b \; leave a unchanged;
+#X msg 507 127 \; rgba cosinesum 64 128 128;
+#X obj 30 393 pix_curve rgba;
+#N canvas 328 58 600 502 init 0;
+#X obj 93 39 loadbang;
+#X msg 115 87 \; rgba resize 256 \; red resize 256 green resize 256
+\; blue resize 256 \; alpha resize 64 \; alpha const 128;
+#X obj 93 197 t b b;
+#X msg 93 219 256;
+#X msg 125 218 0;
+#X obj 93 241 until;
+#X obj 93 262 i;
+#X obj 123 261 + 1;
+#X msg 93 177 bang;
+#X obj 93 283 t f f f;
+#X obj 93 370 tabwrite rgba;
+#X msg 93 348 \$1 \$1;
+#X obj 210 304 / 255;
+#X obj 210 326 sqrt;
+#X obj 210 347 * 255;
+#X obj 210 395 tabwrite red;
+#X obj 210 373 pack 0 0;
+#X obj 319 456 tabwrite green;
+#X obj 104 395 tabwrite blue;
+#X obj 93 63 t b b b;
+#X msg 364 83 \; edge resize 8 \; edge const 255 \; edge 0 0 \; edge
+7 0;
+#X obj 319 393 unpack;
+#X obj 319 413 - 255;
+#X obj 319 432 * -1;
+#X obj 362 413 - 255;
+#X obj 362 432 * -1;
+#X connect 0 0 19 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 1;
+#X connect 8 0 2 0;
+#X connect 9 0 11 0;
+#X connect 9 1 12 0;
+#X connect 9 2 16 1;
+#X connect 11 0 10 0;
+#X connect 11 0 18 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 16 0;
+#X connect 16 0 15 0;
+#X connect 16 0 21 0;
+#X connect 19 0 8 0;
+#X connect 19 1 1 0;
+#X connect 19 2 20 0;
+#X connect 21 0 22 0;
+#X connect 21 1 24 0;
+#X connect 22 0 23 0;
+#X connect 23 0 17 0;
+#X connect 24 0 25 0;
+#X connect 25 0 17 1;
+#X restore 604 470 pd init;
+#X msg 284 275 set rgba;
+#X msg 282 325 set red green blue;
+#X msg 278 375 set red green blue alpha;
+#X text 505 110 an alternative colour-curve;
+#X text 228 56 paint your own curve;
+#X obj 30 509 square 2;
+#X obj 30 488 translateXYZ -2 0 0;
+#X obj 244 486 gemhead;
+#X obj 244 548 pix_texture;
+#X obj 244 569 translateXYZ 2 0 0;
+#X obj 244 527 pix_curve edge;
+#N canvas 80 38 600 318 pix_update 0;
+#X obj 59 115 inlet;
+#X obj 59 227 outlet;
+#X text 61 19 this is quite a dummy-routine:;
+#X text 78 47 just multiply the pix-buffer with 1 (do nothing !) \,
+and make it thereby dirty \, so that the pix_curve routines are going
+to be called....;
+#X text 56 272 maybe this could be done more easily..?;
+#X obj 59 202 pix_buf;
+#X obj 59 156 t a b;
+#X connect 0 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
+#X connect 6 1 5 0;
+#X restore 30 331 pd pix_update;
+#X obj 244 592 square 2;
+#X obj 30 435 alpha;
+#X obj 30 303 pix_image ../data/fractal.JPG;
+#X obj 244 506 pix_image ../data/dancer.JPG;
+#X obj 11 151 cnv 15 200 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X obj 132 193 gemwin;
+#X obj 132 135 t a;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 5 0;
+#X connect 2 1 4 0;
+#X connect 2 1 6 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 9 0;
+#X connect 6 0 9 0;
+#X connect 7 0 9 0;
+#X connect 9 0 8 0;
+#X restore 16 195 pd gemwin;
+#X msg 16 171 create;
+#X text 12 151 Create window and render;
+#X connect 1 0 29 0;
+#X connect 2 0 21 0;
+#X connect 13 0 28 0;
+#X connect 15 0 13 0;
+#X connect 16 0 13 0;
+#X connect 17 0 13 0;
+#X connect 21 0 20 0;
+#X connect 22 0 30 0;
+#X connect 23 0 24 0;
+#X connect 24 0 27 0;
+#X connect 25 0 23 0;
+#X connect 26 0 13 0;
+#X connect 28 0 2 0;
+#X connect 29 0 26 0;
+#X connect 30 0 25 0;
+#X connect 32 0 33 0;
+#X connect 33 0 32 0;
diff --git a/Gem/examples/04.pix/19.colorMatrix.pd b/Gem/examples/04.pix/19.colorMatrix.pd
new file mode 100644
index 0000000..c53ab1a
--- /dev/null
+++ b/Gem/examples/04.pix/19.colorMatrix.pd
@@ -0,0 +1,60 @@
+#N canvas 10 20 769 486 10;
+#X obj 252 258 gemhead;
+#X obj 252 313 pix_image ../data/fractal.JPG;
+#X obj 252 343 pix_colormatrix;
+#X msg 351 223 0 1 0 0 0 1 1 0 0;
+#X msg 321 157 0 0 1 1 0 0 0 1 0;
+#X msg 284 61 1 0 0 0 0 1 0 1 0;
+#X obj 252 371 pix_texture;
+#X obj 252 411 square;
+#X msg 312 110 1 0 0 0 1 0 0 0 1;
+#X text 460 156 shift colors: red->[0 \, 0 \, 1]=blue \; green->[1
+\, 0 \, 0]=red \; blue->[0 \, 1 \, 0]=green;
+#X text 469 97 unity matrix: [1 \, 0 \, 0 \; 0 \, 1 \, 0 \; 0 \, 0
+\, 1];
+#X text 446 47 swap green and blue: [1 \, 0 \, 0 \; 0 \, 0 \, 1 \;
+0 \, 1 \, 0];
+#X text 480 210 shift colors: red->[0 \, 1 \, 0]=green \; green->[0
+\, 0 \, 1]=blue \; blue->[1 \, 0 \, 0]=red;
+#X text 26 23 matrix-multiply the RGB-vector;
+#X obj 41 142 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 46 186 pd gemwin;
+#X msg 46 162 create;
+#X text 42 142 Create window and render;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 5 0 2 1;
+#X connect 6 0 7 0;
+#X connect 8 0 2 1;
+#X connect 15 0 16 0;
+#X connect 16 0 15 0;
diff --git a/Gem/examples/04.pix/20.convolve.pd b/Gem/examples/04.pix/20.convolve.pd
new file mode 100644
index 0000000..bf3999f
--- /dev/null
+++ b/Gem/examples/04.pix/20.convolve.pd
@@ -0,0 +1,106 @@
+#N canvas 150 20 846 728 12;
+#X obj 575 515 s matrix;
+#X obj 502 516 s scale;
+#X msg 502 483 1;
+#X obj 575 404 s matrix;
+#X obj 502 405 s scale;
+#X msg 502 372 1;
+#X obj 572 311 s matrix;
+#X obj 499 312 s scale;
+#X msg 499 279 1;
+#X obj 572 206 s matrix;
+#X obj 499 207 s scale;
+#X msg 499 174 1;
+#X obj 576 106 s matrix;
+#X obj 503 107 s scale;
+#X msg 503 74 1;
+#X obj 320 153 s matrix;
+#X obj 247 154 s scale;
+#X msg 247 121 1;
+#X msg 576 47 -1 -1 -1 -1 8 -1 -1 -1 -1;
+#X msg 572 146 -1 -4 -1 -4 20 -4 -1 -4 -1;
+#X msg 314 517 1 2 1 2 4 2 1 2 1;
+#X text 506 10 edge detection matrices;
+#X text 506 26 scale = 1;
+#X text 234 497 scale = 16;
+#X text 234 482 smoothing matrix;
+#X obj 14 330 gemhead;
+#X obj 14 522 pix_texture;
+#X obj 14 356 pix_image ../data/fractal.JPG;
+#X obj 14 455 pix_convolve 3 3;
+#X msg 320 92 0 0 0 0 1 0 0 0 0;
+#X msg 572 248 0 -1 0 0 2 0 0 -1 0;
+#X msg 575 450 -1 0 -1 0 4 0 -1 0 -1;
+#X msg 575 343 0 0 0 -1 2 -1 0 0 0;
+#X obj 314 596 s matrix;
+#X obj 153 423 r matrix;
+#X obj 241 596 s scale;
+#X obj 83 422 r scale;
+#X text 241 72 scale = 1;
+#X text 241 55 identity matrix;
+#X obj 14 547 square 4;
+#X obj 20 219 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 263 pd gemwin;
+#X msg 25 239 create;
+#X text 21 219 Create window and render;
+#X msg 241 545 1 16;
+#X obj 241 571 /;
+#X text 43 650 a good start for the scale is the sum of all the elements
+;
+#X connect 2 0 1 0;
+#X connect 5 0 4 0;
+#X connect 8 0 7 0;
+#X connect 11 0 10 0;
+#X connect 14 0 13 0;
+#X connect 17 0 16 0;
+#X connect 18 0 14 0;
+#X connect 18 0 12 0;
+#X connect 19 0 11 0;
+#X connect 19 0 9 0;
+#X connect 20 0 44 0;
+#X connect 20 0 33 0;
+#X connect 25 0 27 0;
+#X connect 26 0 39 0;
+#X connect 27 0 28 0;
+#X connect 28 0 26 0;
+#X connect 29 0 17 0;
+#X connect 29 0 15 0;
+#X connect 30 0 8 0;
+#X connect 30 0 6 0;
+#X connect 31 0 2 0;
+#X connect 31 0 0 0;
+#X connect 32 0 5 0;
+#X connect 32 0 3 0;
+#X connect 34 0 28 2;
+#X connect 36 0 28 1;
+#X connect 41 0 42 0;
+#X connect 42 0 41 0;
+#X connect 44 0 45 0;
+#X connect 45 0 35 0;
diff --git a/Gem/examples/04.pix/22.biquad.pd b/Gem/examples/04.pix/22.biquad.pd
new file mode 100644
index 0000000..6e9934e
--- /dev/null
+++ b/Gem/examples/04.pix/22.biquad.pd
@@ -0,0 +1,108 @@
+#N canvas 269 10 753 499 10;
+#X msg 360 312 set;
+#X floatatom 401 209 4 0 0 0 - - -;
+#X floatatom 442 209 4 0 0 0 - - -;
+#X obj 441 229 t b f;
+#X floatatom 491 209 4 0 0 0 - - -;
+#X obj 490 229 t b f;
+#X floatatom 532 208 4 0 0 0 - - -;
+#X obj 531 228 t b f;
+#X floatatom 576 210 4 0 0 0 - - -;
+#X obj 575 230 t b f;
+#X text 257 23 calculates the following difference equation:;
+#X text 261 38 y(n) = ff1 * w(n) + ff2 * w(n-1) + ff3 * w(n-2);
+#X floatatom 621 210 4 0 0 0 - - -;
+#X obj 620 230 t b f;
+#X obj 407 260 pack 0 0 0 0 0 0;
+#X text 265 55 w(n) = fb0 * x(n) + fb1 * w(n-1) + fb2 * w(n-2);
+#X msg 403 98 1 0 0 1 0 0;
+#X msg 403 121 1 0 0 0.2 0.2 0.6;
+#X obj 35 224 gemhead;
+#X obj 35 300 pix_texture;
+#X obj 35 324 square 3;
+#X text 403 190 fb0;
+#X text 443 190 fb1;
+#X text 494 189 fb2;
+#X text 533 186 ff1;
+#X text 582 187 ff2;
+#X text 623 186 ff3;
+#X obj 355 257 t l;
+#X msg 175 218 0;
+#X msg 202 218 1;
+#X msg 231 218 2;
+#X text 551 94 route through;
+#X text 553 120 a low-pass;
+#X text 34 391 pix_biquad: fb0 fb1 fb2 ff1 ff2 ff3;
+#X text 338 377 very(*) similar to the pd-object;
+#X obj 572 375 biquad~;
+#X text 336 406 *: but not exactly the same;
+#X text 390 312 set w(n-1) and w(n-2) to the next(!) x(n);
+#X obj 35 274 pix_biquad;
+#X msg 404 150 0.05 0.8 0.15 0.2 0.2 0.6;
+#X text 587 148 a LOW-pass;
+#X text 397 331 (important for hard feedback-loops);
+#X text 98 455 no sanity check is done for the coefficients !;
+#X text 151 200 click these OFTEN !;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X obj 35 247 pix_multiimage ../data/temp*.JPG 2;
+#X connect 0 0 38 0;
+#X connect 1 0 14 0;
+#X connect 2 0 3 0;
+#X connect 3 0 14 0;
+#X connect 3 1 14 1;
+#X connect 4 0 5 0;
+#X connect 5 0 14 0;
+#X connect 5 1 14 2;
+#X connect 6 0 7 0;
+#X connect 7 0 14 0;
+#X connect 7 1 14 3;
+#X connect 8 0 9 0;
+#X connect 9 0 14 0;
+#X connect 9 1 14 4;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 1 14 5;
+#X connect 14 0 27 0;
+#X connect 16 0 27 0;
+#X connect 17 0 27 0;
+#X connect 18 0 48 0;
+#X connect 19 0 20 0;
+#X connect 27 0 38 0;
+#X connect 28 0 48 1;
+#X connect 29 0 48 1;
+#X connect 30 0 48 1;
+#X connect 38 0 19 0;
+#X connect 39 0 27 0;
+#X connect 45 0 46 0;
+#X connect 46 0 45 0;
+#X connect 48 0 38 0;
diff --git a/Gem/examples/04.pix/23.gravity.pd b/Gem/examples/04.pix/23.gravity.pd
new file mode 100644
index 0000000..9821f94
--- /dev/null
+++ b/Gem/examples/04.pix/23.gravity.pd
@@ -0,0 +1,108 @@
+#N canvas 0 0 626 514 10;
+#X floatatom 107 437 5 0 0 0 - - -;
+#X floatatom 160 436 5 0 0 0 - - -;
+#X floatatom 219 435 5 0 0 0 - - -;
+#X obj 54 338 pix_blob 1;
+#X msg 86 227 0;
+#X msg 94 250 1;
+#X msg 101 271 2;
+#X msg 107 292 3;
+#X msg 110 313 4;
+#X text 119 456 X;
+#X text 173 456 Y;
+#X text 230 455 size;
+#X text 135 228 grey (default);
+#X text 136 250 red;
+#X text 136 269 green;
+#X text 137 291 blue;
+#X text 137 313 alpha;
+#X text 327 20 pix_blob;
+#X text 324 32 =========;
+#X text 276 48 get the center of gravity in a picture;
+#X msg 288 298 1 0.5 0.5 1;
+#X msg 284 274 0.33;
+#X msg 276 252 1 1 2;
+#X text 328 252 ==;
+#X msg 355 251 1 1 2 0;
+#X msg 356 274 0.33 0.33 0.33 0;
+#X text 326 275 ==;
+#X msg 363 112 bang;
+#X obj 363 134 t b b;
+#X msg 428 114 bang;
+#X obj 428 136 t b b;
+#X text 341 454 size = 0..1;
+#X text 341 425 x/y-coordinates from lower-left \; 0..1;
+#X text 329 96 upper-left;
+#X text 428 93 lower-right;
+#X obj 54 176 pix_multiimage ../data/blob*.tif 2;
+#X obj 54 148 gemhead;
+#X msg 154 116 0;
+#X msg 154 136 1;
+#X msg 154 154 2;
+#X obj 54 469 pix_texture;
+#X obj 54 492 square 4;
+#X msg 139 496 quality 0;
+#X obj 139 475 loadbang;
+#X text 307 233 rgb(a)-color;
+#X obj 276 320 t b l;
+#X obj 20 19 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 63 pd gemwin;
+#X msg 25 39 create;
+#X text 21 19 Create window and render;
+#X connect 3 0 40 0;
+#X connect 3 1 0 0;
+#X connect 3 2 1 0;
+#X connect 3 3 2 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 3 1;
+#X connect 8 0 3 1;
+#X connect 20 0 45 0;
+#X connect 21 0 45 0;
+#X connect 22 0 45 0;
+#X connect 27 0 28 0;
+#X connect 28 0 39 0;
+#X connect 28 1 5 0;
+#X connect 29 0 30 0;
+#X connect 30 0 39 0;
+#X connect 30 1 7 0;
+#X connect 35 0 3 0;
+#X connect 36 0 35 0;
+#X connect 37 0 35 1;
+#X connect 38 0 35 1;
+#X connect 39 0 35 1;
+#X connect 40 0 41 0;
+#X connect 42 0 40 0;
+#X connect 43 0 42 0;
+#X connect 45 0 39 0;
+#X connect 45 1 3 2;
+#X connect 47 0 48 0;
+#X connect 48 0 47 0;
diff --git a/Gem/examples/04.pix/24.time-filtering.pd b/Gem/examples/04.pix/24.time-filtering.pd
new file mode 100644
index 0000000..c1ca697
--- /dev/null
+++ b/Gem/examples/04.pix/24.time-filtering.pd
@@ -0,0 +1,102 @@
+#N canvas 228 84 794 352 10;
+#X floatatom 279 191 5 0 0 0 - - -;
+#X obj 266 241 pix_tIIR 2 2;
+#X obj 279 211 * 0.01;
+#X obj 279 146 unpack 30 60 10 50 50 -20;
+#X floatatom 328 191 5 0 0 0 - - -;
+#X obj 328 211 * 0.01;
+#X floatatom 375 191 5 0 0 0 - - -;
+#X obj 375 211 * 0.01;
+#X floatatom 424 191 5 0 0 0 - - -;
+#X obj 424 211 * 0.01;
+#X floatatom 471 191 5 0 0 0 - - -;
+#X obj 471 211 * 0.01;
+#X floatatom 520 191 5 0 0 0 - - -;
+#X obj 520 211 * 0.01;
+#X msg 279 100 bang;
+#X obj 266 38 gemhead;
+#X msg 601 44 auto \$1;
+#X obj 601 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 279 122 pack 30 60 10 50 50 -20;
+#X floatatom 461 64 5 0 0 0 - - -;
+#X floatatom 351 86 5 0 0 0 - - -;
+#X obj 266 262 pix_texture;
+#X msg 421 27 open ../data/alea.mpg;
+#X msg 421 7 open \$1;
+#X obj 483 7 openpanel;
+#X obj 573 5 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 446 63 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 266 61 pix_film ../data/alea.mpg;
+#X obj 266 309 square 3;
+#X obj 266 286 rotateXYZ 0 -30 0;
+#X obj 20 69 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X connect 0 0 2 0;
+#X connect 1 0 21 0;
+#X connect 2 0 1 1;
+#X connect 3 0 0 0;
+#X connect 3 1 4 0;
+#X connect 3 2 6 0;
+#X connect 3 3 8 0;
+#X connect 3 4 10 0;
+#X connect 3 5 12 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 2;
+#X connect 6 0 7 0;
+#X connect 7 0 1 3;
+#X connect 8 0 9 0;
+#X connect 9 0 1 4;
+#X connect 10 0 11 0;
+#X connect 11 0 1 5;
+#X connect 12 0 13 0;
+#X connect 13 0 1 6;
+#X connect 14 0 18 0;
+#X connect 15 0 27 0;
+#X connect 16 0 27 0;
+#X connect 17 0 16 0;
+#X connect 18 0 3 0;
+#X connect 19 0 27 1;
+#X connect 21 0 29 0;
+#X connect 22 0 27 0;
+#X connect 23 0 27 0;
+#X connect 24 0 23 0;
+#X connect 25 0 24 0;
+#X connect 26 0 19 0;
+#X connect 27 0 1 0;
+#X connect 27 1 20 0;
+#X connect 27 2 26 0;
+#X connect 29 0 28 0;
+#X connect 31 0 32 0;
+#X connect 32 0 31 0;
diff --git a/Gem/examples/04.pix/25.buffer.pd b/Gem/examples/04.pix/25.buffer.pd
new file mode 100644
index 0000000..857cdaf
--- /dev/null
+++ b/Gem/examples/04.pix/25.buffer.pd
@@ -0,0 +1,137 @@
+#N canvas 0 0 832 589 10;
+#X obj 62 327 gemhead;
+#X obj 62 369 pix_texture;
+#X obj 62 392 square 4;
+#X obj 316 316 gemhead;
+#X obj 316 342 pix_film;
+#X obj 316 387 t a b;
+#X obj 361 430 i;
+#X obj 388 430 + 1;
+#X obj 361 408 spigot;
+#X obj 398 364 t b b;
+#X msg 398 387 1;
+#X msg 455 388 0;
+#X obj 398 339 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 419 339 start recording into the buffer;
+#X msg 398 296 open \$1;
+#X obj 398 275 openpanel;
+#X obj 398 257 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 477 240 ../data/anim-1.mov;
+#X msg 477 260 ../data/alea.mpg;
+#X msg 478 216 ../data/homer.avi;
+#X obj 477 282 symbol;
+#X floatatom 155 321 5 0 0 0 - - -;
+#X text 195 320 index;
+#X msg 408 408 0;
+#X obj 571 401 gemhead;
+#X obj 571 427 pix_image ../data/fractal.JPG;
+#X floatatom 423 497 5 0 0 0 - - -;
+#X msg 405 318 auto 1;
+#X msg 457 319 0;
+#X obj 361 456 moses 10;
+#X floatatom 663 406 5 0 0 0 - - -;
+#X msg 663 386 5;
+#X text 467 493 put the next image into "myImages" @ index;
+#X msg 140 390 set yourImages;
+#X msg 212 490 set yourImages;
+#X text 213 473 set the storage-name;
+#X obj 62 349 pix_buffer_read myImages;
+#X obj 316 515 pix_buffer_write myImages;
+#X obj 571 453 pix_buffer_write myImages;
+#X text 291 539 write an image into a certain storage-buffer;
+#X text 15 422 read an image from a certain storage-buffer;
+#X text 17 302 get an image from the pix_buffer;
+#X obj 33 227 pix_buffer yourImages 10;
+#X obj 20 69 cnv 15 200 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 22 454 304 gemwin 0;
+#X obj 132 136 gemwin;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 41 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 132 112 create \, 1;
+#X msg 238 112 destroy;
+#N canvas 87 154 247 179 Gem.init 0;
+#X obj 118 46 loadbang;
+#X msg 118 81 reset;
+#X obj 118 113 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X restore 289 80 pd Gem.init;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 3 1 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X restore 25 113 pd gemwin;
+#X msg 25 89 create;
+#X text 21 69 Create window and render;
+#X text 284 32 ============;
+#X text 236 48 store/get images into/from a buffer;
+#X msg 226 77 bang;
+#X floatatom 226 174 5 0 0 0 - - -;
+#X text 265 77 get the size of the depot;
+#X msg 237 116 allocate 128 64 4;
+#X text 371 104 pre-allocate each image-buffer to hold at east 128*64*4
+pixels;
+#X text 388 155 a storage-place for "10" pix-images called "myImages"
+;
+#X obj 226 153 pix_buffer myImages 10;
+#X text 287 20 [pix_buffer];
+#X msg 353 181 open ../data/fractal.JPG 5;
+#X text 524 182 load an image into a certain storage-buffer;
+#X connect 0 0 36 0;
+#X connect 1 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 37 0;
+#X connect 5 1 8 0;
+#X connect 6 0 7 0;
+#X connect 6 0 29 0;
+#X connect 7 0 6 1;
+#X connect 8 0 6 0;
+#X connect 9 0 10 0;
+#X connect 9 1 23 0;
+#X connect 10 0 8 1;
+#X connect 11 0 8 1;
+#X connect 11 0 31 0;
+#X connect 12 0 9 0;
+#X connect 14 0 4 0;
+#X connect 14 0 12 0;
+#X connect 14 0 27 0;
+#X connect 14 0 28 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
+#X connect 17 0 20 0;
+#X connect 18 0 20 0;
+#X connect 19 0 20 0;
+#X connect 20 0 14 0;
+#X connect 21 0 36 1;
+#X connect 23 0 6 1;
+#X connect 24 0 25 0;
+#X connect 25 0 38 0;
+#X connect 26 0 37 1;
+#X connect 27 0 4 0;
+#X connect 28 0 4 1;
+#X connect 29 0 26 0;
+#X connect 29 1 11 0;
+#X connect 30 0 38 1;
+#X connect 31 0 30 0;
+#X connect 33 0 36 0;
+#X connect 34 0 37 0;
+#X connect 36 0 1 0;
+#X connect 44 0 45 0;
+#X connect 45 0 44 0;
+#X connect 49 0 55 0;
+#X connect 52 0 55 0;
+#X connect 55 0 50 0;
+#X connect 57 0 55 0;
diff --git a/Gem/examples/04.pix/26.framebuffer_readback.pd b/Gem/examples/04.pix/26.framebuffer_readback.pd
new file mode 100644
index 0000000..3f49f1e
--- /dev/null
+++ b/Gem/examples/04.pix/26.framebuffer_readback.pd
@@ -0,0 +1,88 @@
+#N canvas 0 0 826 651 10;
+#X msg 112 86 create \, 1;
+#X obj 112 131 gemwin;
+#X obj 311 112 pix_buffer \$0-framebuffer 2;
+#X obj 620 108 gemhead 5;
+#X obj 620 129 world_light;
+#X msg 129 108 lighting 1;
+#X text 44 5 you can render a scene into a framebuffer \, then take
+a snapshot of the framebuffer with [pix_snap] and use this as an ordinary
+pix (where you can apply effects and all kind of weird things);
+#X obj 75 439 cnv 15 250 130 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 161 269 cnv 15 150 150 empty empty scene 20 12 0 14 -233017
+-66577 0;
+#X obj 82 196 gemhead 20;
+#X obj 82 220 gemframebuffer;
+#X msg 163 195 dimen 256 256;
+#X obj 167 331 rotateXYZ;
+#X obj 167 376 teapot;
+#X obj 82 266 t a a b;
+#X obj 187 293 i;
+#X obj 220 292 + 1;
+#X obj 250 291 % 360;
+#X obj 82 453 t a b;
+#X msg 114 474 snap;
+#X obj 82 522 t a b;
+#X msg 296 527 1;
+#X obj 82 547 pix_buffer_write \$0-framebuffer;
+#X obj 410 262 gemhead 30;
+#X obj 410 306 t a b;
+#X msg 465 307 1;
+#X obj 410 331 pix_buffer_read \$0-framebuffer;
+#X obj 410 411 pix_texture;
+#X obj 410 476 square 3;
+#X obj 82 243 translateXYZ 0 0 -4;
+#X obj 82 498 pix_snap 0 0 256 256;
+#X obj 167 353 color 1 0 1;
+#X floatatom 226 313 5 0 0 0 - - -;
+#X obj 410 453 rotateXYZ;
+#X floatatom 445 433 5 0 0 0 - - -;
+#X text 318 130 temporary storage;
+#X obj 163 175 loadbang;
+#X text 130 451 later usage;
+#X text 129 436 snapshot and store image for;
+#X text 562 308 fetch framebuffer-pix;
+#X text 535 379 apply some nifty FX;
+#X text 73 597 note \, that there are more efficient ways to apply
+FX to framebuffers (noteably openGL-shaders: see examples/10.glsl/
+for more information);
+#X obj 425 358 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 410 380 pix_kaleidoscope;
+#X connect 0 0 1 0;
+#X connect 3 0 4 0;
+#X connect 5 0 1 0;
+#X connect 9 0 10 0;
+#X connect 10 0 29 0;
+#X connect 11 0 10 0;
+#X connect 12 0 31 0;
+#X connect 14 0 18 0;
+#X connect 14 1 12 0;
+#X connect 14 2 15 0;
+#X connect 15 0 16 0;
+#X connect 15 0 12 1;
+#X connect 15 0 12 2;
+#X connect 16 0 17 0;
+#X connect 17 0 15 1;
+#X connect 18 0 30 0;
+#X connect 18 1 19 0;
+#X connect 19 0 30 0;
+#X connect 20 0 22 0;
+#X connect 20 1 21 0;
+#X connect 21 0 22 1;
+#X connect 23 0 24 0;
+#X connect 24 0 26 0;
+#X connect 24 1 25 0;
+#X connect 25 0 26 1;
+#X connect 26 0 43 0;
+#X connect 27 0 33 0;
+#X connect 29 0 14 0;
+#X connect 30 0 20 0;
+#X connect 31 0 13 0;
+#X connect 32 0 12 3;
+#X connect 33 0 28 0;
+#X connect 34 0 33 2;
+#X connect 36 0 11 0;
+#X connect 42 0 43 0;
+#X connect 43 0 27 0;
diff --git a/Gem/examples/04.pix/27.bitmap_font.pd b/Gem/examples/04.pix/27.bitmap_font.pd
new file mode 100644
index 0000000..c6b182d
--- /dev/null
+++ b/Gem/examples/04.pix/27.bitmap_font.pd
@@ -0,0 +1,152 @@
+#N canvas 656 222 901 508 10;
+#X obj 191 413 pix_texture;
+#X obj 463 158 gemwin;
+#X msg 506 135 0 \, destroy;
+#X msg 125 362 quality 0;
+#X obj 31 200 pix_crop 0 0 6 8;
+#X obj 125 342 loadbang;
+#X obj 31 10 gemhead 10;
+#N canvas 472 238 750 406 grab-ascii 0;
+#X obj 76 144 moses 65;
+#X obj 121 164 moses 91;
+#X obj 166 194 moses 97;
+#X obj 211 214 moses 123;
+#X obj 153 308 outlet;
+#X obj 211 234 - 97;
+#X text 174 164 from A to Z (65 to 90);
+#X text 276 212 from a to z (97 to 122);
+#X text 137 331 remap from 0 to 25;
+#X obj 121 185 - 65;
+#X obj 334 342 outlet;
+#X text 326 359 bang on <ENTER>;
+#X obj 455 342 outlet;
+#X obj 334 289 sel 10 32 8;
+#X obj 565 342 outlet;
+#X text 556 359 bang on <DEL>;
+#X text 446 359 bang on <SPACE>;
+#X obj 303 319 loadbang;
+#X obj 76 114 key;
+#X connect 0 0 13 0;
+#X connect 0 1 1 0;
+#X connect 1 0 9 0;
+#X connect 1 1 2 0;
+#X connect 2 1 3 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 9 0 4 0;
+#X connect 13 0 10 0;
+#X connect 13 1 12 0;
+#X connect 13 2 14 0;
+#X connect 17 0 10 0;
+#X connect 18 0 0 0;
+#X restore 73 51 pd grab-ascii;
+#X obj 100 132 f;
+#X obj 413 248 loadbang;
+#X obj 260 189 * 6;
+#X obj 73 158 * 6;
+#X msg 135 92 0;
+#X obj 191 263 gemhead 9;
+#X obj 135 71 t b b;
+#X obj 75 178 t b b f;
+#X obj 31 29 pix_image ../data/bitmap_font_6x8.bmp;
+#X obj 463 64 bng 15 250 50 0 empty empty empty 17 7 0 10 -4034 -1
+-1;
+#X text 310 22 <- this is the bitmap font;
+#X obj 31 138 pix_grey;
+#X obj 73 92 t f b;
+#X obj 127 132 + 1;
+#X text 485 231 - key in range A-Z and a-z;
+#X text 510 212 features :;
+#X text 485 241 - space bar add a space...;
+#X text 485 251 - enter reset all;
+#X text 520 283 purpose :;
+#X text 495 299 - orginally design to drive a LED matrix;
+#X msg 260 298 roi \$1 \$2 \$3 \$4;
+#X obj 260 211 t f f;
+#X obj 260 253 pack 0 0 0 8;
+#X obj 314 232 + 6;
+#N canvas 12 50 450 300 normalize 0;
+#X obj 84 70 inlet x1 y1 x2 y2;
+#X obj 84 92 unpack 0 0 0 0;
+#X obj 84 184 pack 0 0 0 0;
+#X obj 84 206 outlet X1 Y1 X2 Y2;
+#X obj 84 144 / 120;
+#X obj 134 144 / 8;
+#X obj 184 144 / 120;
+#X obj 234 144 / 8;
+#X text 288 112 adding 0.5 to make;
+#X text 288 125 rounding easier...;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 5 0;
+#X connect 1 2 6 0;
+#X connect 1 3 7 0;
+#X connect 2 0 3 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 1;
+#X connect 6 0 2 2;
+#X connect 7 0 2 3;
+#X restore 260 277 pd normalize;
+#X msg 413 268 grey \, fill 1 \, bang;
+#X obj 31 250 pix_dump;
+#X text 481 65 <- 1 click here to start rendering;
+#X obj 191 334 pix_roi 0 0 0 0;
+#X text 306 336 initialize to non-existent ROI;
+#X obj 191 362 pix_set 120 8;
+#X obj 191 165 t b f;
+#X obj 225 124 t b b b;
+#X msg 264 144 roi 0 0 1 1;
+#X obj 225 105 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 463 117 dimen 1024 128 \, color 1 1 1 1 \, create \, 1;
+#X obj 191 433 translateXYZ 0 0 0;
+#X obj 191 483 rectangle 32 -2;
+#X text 501 84 2 click on this patch (to focuses it) and type something
+with your keyboard;
+#X connect 0 0 44 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 34 0;
+#X connect 5 0 3 0;
+#X connect 6 0 16 0;
+#X connect 7 0 20 0;
+#X connect 7 1 14 0;
+#X connect 7 2 8 0;
+#X connect 8 0 21 0;
+#X connect 8 0 39 0;
+#X connect 9 0 33 0;
+#X connect 10 0 29 0;
+#X connect 11 0 15 0;
+#X connect 12 0 8 0;
+#X connect 13 0 36 0;
+#X connect 14 0 12 0;
+#X connect 14 0 13 0;
+#X connect 14 1 42 0;
+#X connect 15 0 34 0;
+#X connect 15 1 6 0;
+#X connect 15 2 4 3;
+#X connect 16 0 19 0;
+#X connect 17 0 43 0;
+#X connect 19 0 4 0;
+#X connect 20 0 11 0;
+#X connect 20 1 8 0;
+#X connect 21 0 8 1;
+#X connect 28 0 36 0;
+#X connect 29 0 30 0;
+#X connect 29 1 31 0;
+#X connect 30 0 32 0;
+#X connect 31 0 30 2;
+#X connect 32 0 28 0;
+#X connect 33 0 38 0;
+#X connect 34 1 38 1;
+#X connect 36 0 38 0;
+#X connect 38 0 0 0;
+#X connect 39 0 13 0;
+#X connect 39 1 10 0;
+#X connect 40 0 33 0;
+#X connect 40 1 13 0;
+#X connect 40 2 41 0;
+#X connect 41 0 36 0;
+#X connect 42 0 40 0;
+#X connect 43 0 1 0;
+#X connect 44 0 45 0;