aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/pdp_abstractions.pd22
-rw-r--r--test/test_oscil.pd69
-rw-r--r--test/test_pdp_add.pd96
-rw-r--r--test/test_pdp_affine.pd80
-rw-r--r--test/test_pdp_bq.pd136
-rw-r--r--test/test_pdp_bq2.pd146
-rw-r--r--test/test_pdp_bqt.pd91
-rw-r--r--test/test_pdp_chrot.pd32
-rw-r--r--test/test_pdp_conv.pd115
-rw-r--r--test/test_pdp_debug.pd18
-rw-r--r--test/test_pdp_del.pd41
-rw-r--r--test/test_pdp_gain.pd46
-rw-r--r--test/test_pdp_gradient.pd52
-rw-r--r--test/test_pdp_mix.pd114
-rw-r--r--test/test_pdp_mul.pd44
-rw-r--r--test/test_pdp_noise.pd40
-rw-r--r--test/test_pdp_pctv.pd47
-rw-r--r--test/test_pdp_portable.pd41
-rw-r--r--test/test_pdp_qt_read.pd164
-rw-r--r--test/test_pdp_qt_read2.pd45
-rw-r--r--test/test_pdp_randmix.pd31
-rw-r--r--test/test_pdp_reg.pd21
-rw-r--r--test/test_pdp_scale.pd38
-rw-r--r--test/test_pdp_scope.pd21
-rw-r--r--test/test_pdp_snap.pd16
-rw-r--r--test/test_pdp_thread.pd33
-rw-r--r--test/test_pdp_trigger.pd13
-rw-r--r--test/test_pdp_v4l.pd91
-rw-r--r--test/test_pdp_v4l_2.pd26
-rw-r--r--test/test_pdp_xv.pd44
-rw-r--r--test/test_pdp_zoom.pd73
-rw-r--r--test/test_warpfeedback.pd49
32 files changed, 1895 insertions, 0 deletions
diff --git a/test/pdp_abstractions.pd b/test/pdp_abstractions.pd
new file mode 100644
index 0000000..27a5d48
--- /dev/null
+++ b/test/pdp_abstractions.pd
@@ -0,0 +1,22 @@
+#N canvas 606 93 450 300 10;
+#X obj 68 71 pdp_v4l;
+#X obj 69 163 pdp_xv;
+#X obj 71 11 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 184 13 stop;
+#X obj 143 44 metro 20;
+#X msg 133 13 bang;
+#X floatatom 189 103 5 0 0;
+#X floatatom 243 102 5 0 0;
+#X msg 17 47 type grey;
+#X obj 388 25 vsl 15 128 -1 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4500 1;
+#X obj 69 125 pdp_phase_hor;
+#X connect 0 0 10 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 8 0 0 0;
+#X connect 9 0 10 1;
+#X connect 10 0 1 0;
diff --git a/test/test_oscil.pd b/test/test_oscil.pd
new file mode 100644
index 0000000..4455732
--- /dev/null
+++ b/test/test_oscil.pd
@@ -0,0 +1,69 @@
+#N canvas 144 73 626 492 10;
+#X obj 86 75 pdp_v4l;
+#X obj 69 268 pdp_xv;
+#X obj 186 40 metro 40;
+#X obj 185 13 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 85 24 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 258 148 1;
+#X obj 296 180 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 240 229 pdp_mix2;
+#X obj 302 203 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 800 1;
+#X floatatom 146 237 5 0 0;
+#X floatatom 236 122 5 0 0;
+#X obj 211 177 pdp_del 50;
+#X obj 257 261 pdp_conv;
+#X msg 290 34 dim 160 120;
+#X floatatom 310 229 5 0 0;
+#X floatatom 177 107 5 0 0;
+#X obj 194 81 hsl 128 15 0 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 10800 1;
+#X msg 211 10 stop;
+#X obj 126 140 pdp_randmix;
+#X obj 312 289 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 318 312 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 800 1;
+#X obj 319 343 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 325 366 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 800 1;
+#X obj 219 421 pdp_affine;
+#X obj 328 394 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 334 417 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 800 1;
+#X obj 217 325 pdp_affine 1;
+#X obj 217 368 pdp_affine 2;
+#X connect 0 0 18 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 11 1;
+#X connect 6 0 7 2;
+#X connect 7 0 12 0;
+#X connect 7 0 18 1;
+#X connect 8 0 7 3;
+#X connect 9 0 1 1;
+#X connect 10 0 11 1;
+#X connect 11 0 7 1;
+#X connect 12 0 11 0;
+#X connect 12 0 26 0;
+#X connect 13 0 0 0;
+#X connect 14 0 12 1;
+#X connect 15 0 18 2;
+#X connect 16 0 15 0;
+#X connect 17 0 2 0;
+#X connect 18 0 7 0;
+#X connect 19 0 26 1;
+#X connect 20 0 26 2;
+#X connect 21 0 27 1;
+#X connect 22 0 27 2;
+#X connect 23 0 1 0;
+#X connect 24 0 23 1;
+#X connect 25 0 23 2;
+#X connect 26 0 27 0;
+#X connect 27 0 23 0;
diff --git a/test/test_pdp_add.pd b/test/test_pdp_add.pd
new file mode 100644
index 0000000..e44df2d
--- /dev/null
+++ b/test/test_pdp_add.pd
@@ -0,0 +1,96 @@
+#N canvas 180 63 814 601 10;
+#X obj 152 101 pdp_qt;
+#X msg 173 63 bang;
+#X floatatom 92 60 5 0 0;
+#X msg 258 62 open /home/ben/MOV/test1.mov;
+#X obj 164 8 i 0;
+#X obj 220 19 + 1;
+#X obj 303 24 metro 40;
+#X obj 300 -1 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X msg 63 29 0;
+#X msg 102 31 9999;
+#X msg 63 131 loop \$1;
+#X obj 59 105 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 178 136 5 0 0;
+#X floatatom 235 137 5 0 0;
+#X obj 413 229 pdp_qt;
+#X msg 446 190 bang;
+#X floatatom 365 187 5 0 0;
+#X msg 531 189 open /home/ben/MOV/test1.mov;
+#X obj 437 135 i 0;
+#X obj 493 146 + 1;
+#X obj 576 151 metro 40;
+#X obj 573 126 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X msg 336 156 0;
+#X msg 375 158 9999;
+#X msg 336 258 loop \$1;
+#X obj 332 232 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X floatatom 451 263 5 0 0;
+#X floatatom 508 264 5 0 0;
+#X floatatom 383 3 5 0 0;
+#X floatatom 634 128 5 0 0;
+#X msg 327 106 0;
+#X obj 181 222 pdp_add;
+#X obj 196 550 pdp_xv;
+#X obj 76 200 print p1;
+#X obj 411 286 print p2;
+#X obj 180 301 print p;
+#X obj 201 453 pdp_v4l;
+#X obj 176 399 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 261 381 metro 40;
+#X obj 263 352 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 244 480 5 0 0;
+#X obj 332 546 pdp_del 8;
+#X floatatom 305 479 5 0 0;
+#X obj 191 519 pdp_affine;
+#X connect 0 0 31 0;
+#X connect 0 0 33 0;
+#X connect 0 1 12 0;
+#X connect 0 2 13 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 1;
+#X connect 6 0 0 0;
+#X connect 7 0 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 0;
+#X connect 14 0 31 1;
+#X connect 14 0 34 0;
+#X connect 14 1 26 0;
+#X connect 14 2 27 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 14 0;
+#X connect 18 0 19 0;
+#X connect 18 0 15 0;
+#X connect 19 0 18 1;
+#X connect 20 0 14 0;
+#X connect 21 0 20 0;
+#X connect 22 0 16 0;
+#X connect 23 0 16 0;
+#X connect 24 0 14 0;
+#X connect 25 0 24 0;
+#X connect 28 0 6 1;
+#X connect 29 0 20 1;
+#X connect 30 0 22 0;
+#X connect 30 0 8 0;
+#X connect 31 0 35 0;
+#X connect 36 0 41 0;
+#X connect 36 0 43 0;
+#X connect 37 0 36 0;
+#X connect 38 0 36 0;
+#X connect 39 0 38 0;
+#X connect 40 0 43 2;
+#X connect 42 0 43 1;
+#X connect 43 0 32 0;
diff --git a/test/test_pdp_affine.pd b/test/test_pdp_affine.pd
new file mode 100644
index 0000000..3e4afc9
--- /dev/null
+++ b/test/test_pdp_affine.pd
@@ -0,0 +1,80 @@
+#N canvas 278 50 629 562 10;
+#X obj 130 454 pdp_xv;
+#X obj 265 42 metro 40;
+#X obj 262 17 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X floatatom 309 9 5 0 0;
+#X obj 115 119 pdp_v4l;
+#X msg 220 80 open /dev/video0;
+#X msg 83 57 close;
+#X obj 142 56 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 233 127 dim 160 120;
+#X msg 238 162 dim 320 240;
+#X floatatom 177 418 5 0 0;
+#X msg 350 123 dim 640 480;
+#X obj 264 341 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 6350 1;
+#X obj 404 340 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 7750 1;
+#X obj 265 365 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 6350 1;
+#X obj 405 364 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 2650 1;
+#X obj 263 316 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 403 315 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 5250 1;
+#X obj 136 332 pdp_affine 1;
+#X obj 137 357 pdp_affine 2;
+#X obj 138 381 pdp_affine 3;
+#X msg 260 278 1;
+#X msg 399 275 0;
+#X msg 236 409 1;
+#X obj 415 223 sin;
+#X obj 448 223 cos;
+#X obj 346 192 f 0;
+#X obj 346 223 +;
+#X floatatom 382 188 5 0 0;
+#X obj 463 259 *;
+#X obj 427 258 *;
+#X floatatom 496 230 5 0 0;
+#X connect 1 0 7 0;
+#X connect 1 0 26 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 4 0 18 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 0;
+#X connect 8 0 4 0;
+#X connect 9 0 4 0;
+#X connect 10 0 0 1;
+#X connect 11 0 4 0;
+#X connect 12 0 19 1;
+#X connect 13 0 19 2;
+#X connect 14 0 20 1;
+#X connect 15 0 20 2;
+#X connect 16 0 18 1;
+#X connect 17 0 18 2;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 0 0;
+#X connect 21 0 16 0;
+#X connect 21 0 12 0;
+#X connect 21 0 14 0;
+#X connect 22 0 17 0;
+#X connect 22 0 13 0;
+#X connect 22 0 15 0;
+#X connect 23 0 10 0;
+#X connect 24 0 30 0;
+#X connect 25 0 29 0;
+#X connect 26 0 27 0;
+#X connect 27 0 26 1;
+#X connect 27 0 24 0;
+#X connect 27 0 25 0;
+#X connect 28 0 27 1;
+#X connect 29 0 14 0;
+#X connect 30 0 12 0;
+#X connect 31 0 29 1;
+#X connect 31 0 30 1;
diff --git a/test/test_pdp_bq.pd b/test/test_pdp_bq.pd
new file mode 100644
index 0000000..c7b48d4
--- /dev/null
+++ b/test/test_pdp_bq.pd
@@ -0,0 +1,136 @@
+#N canvas 8 69 765 701 10;
+#X obj 128 85 pdp_v4l;
+#X obj 127 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 178 30 stop;
+#X msg 216 29 bang;
+#X msg 291 64 dim 160 120;
+#X msg 289 29 dim 32 32;
+#X msg 283 5 dim 80 60;
+#X msg 313 94 dim 320 240;
+#X msg 334 117 dim 768 576;
+#X floatatom 222 3 5 0 0;
+#X msg 253 144 dim 640 240;
+#X msg 364 45 dim 640 480;
+#X msg 32 38 type grey;
+#X msg 31 14 type yv12;
+#X floatatom 193 228 5 0 0;
+#X msg 36 218 ver \$1;
+#X msg 91 219 hor \$1;
+#X obj 38 193 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 95 192 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 168 319 pdp_bq;
+#X floatatom 243 346 5 0 0;
+#X floatatom 130 10 5 0 0;
+#X obj 196 58 metro 5;
+#X floatatom 313 209 5 0 0;
+#X msg 312 233 onep \$1;
+#X obj 318 178 hsl 128 15 0.01 1 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 4900 1;
+#X floatatom 389 244 5 0 0;
+#X obj 394 213 hsl 128 15 0.03 1 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 9400 1;
+#X msg 388 267 twop \$1;
+#X floatatom 203 155 5 0 0;
+#X msg 18 303 u1 \$1;
+#X msg 20 334 u2 \$1;
+#X floatatom 51 273 5 0 0;
+#X floatatom 90 306 5 0 0;
+#X obj 44 156 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 102 154 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 30 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 87 99 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 28 125 lr \$1;
+#X msg 83 126 rl \$1;
+#X msg 32 172 tb \$1;
+#X msg 87 173 bt \$1;
+#X obj 461 368 hsl 128 15 0.05 0.5 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 0 1;
+#X obj 537 403 hsl 128 15 0.1 10 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 5200 1;
+#X obj 490 477 t b f;
+#X floatatom 556 438 5 0 0;
+#X floatatom 393 426 5 0 0;
+#X obj 495 529 pack s 0 0;
+#X msg 492 562 \$1 \$2 \$3;
+#X obj 548 482 t b f;
+#X msg 402 505 lpf;
+#X msg 402 484 hpf;
+#X msg 400 533 apf;
+#X msg 397 566 bsf;
+#X obj 157 181 pdp_mix;
+#X obj 545 98 random 2;
+#X obj 610 98 random 2;
+#X obj 548 61 pdp_trigger;
+#X obj 543 135 random 2;
+#X obj 608 135 random 2;
+#X connect 0 0 54 0;
+#X connect 0 0 57 0;
+#X connect 1 0 0 0;
+#X connect 2 0 22 0;
+#X connect 3 0 22 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 0 0;
+#X connect 9 0 22 1;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 19 1;
+#X connect 15 0 19 0;
+#X connect 16 0 19 0;
+#X connect 17 0 15 0;
+#X connect 18 0 16 0;
+#X connect 19 0 54 1;
+#X connect 22 0 0 0;
+#X connect 23 0 24 0;
+#X connect 24 0 19 0;
+#X connect 25 0 23 0;
+#X connect 26 0 28 0;
+#X connect 27 0 26 0;
+#X connect 28 0 19 0;
+#X connect 29 0 54 2;
+#X connect 30 0 19 0;
+#X connect 31 0 19 0;
+#X connect 32 0 30 0;
+#X connect 33 0 31 0;
+#X connect 34 0 40 0;
+#X connect 35 0 41 0;
+#X connect 36 0 38 0;
+#X connect 37 0 39 0;
+#X connect 38 0 19 0;
+#X connect 39 0 19 0;
+#X connect 40 0 19 0;
+#X connect 41 0 19 0;
+#X connect 42 0 46 0;
+#X connect 43 0 45 0;
+#X connect 44 0 47 0;
+#X connect 44 1 47 1;
+#X connect 45 0 49 0;
+#X connect 46 0 44 0;
+#X connect 47 0 48 0;
+#X connect 48 0 19 0;
+#X connect 49 0 47 0;
+#X connect 49 1 47 2;
+#X connect 50 0 47 0;
+#X connect 51 0 47 0;
+#X connect 52 0 47 0;
+#X connect 53 0 47 0;
+#X connect 54 0 19 0;
+#X connect 55 0 36 0;
+#X connect 56 0 37 0;
+#X connect 57 0 55 0;
+#X connect 57 0 56 0;
+#X connect 57 0 58 0;
+#X connect 57 0 59 0;
+#X connect 58 0 34 0;
+#X connect 59 0 35 0;
diff --git a/test/test_pdp_bq2.pd b/test/test_pdp_bq2.pd
new file mode 100644
index 0000000..a13b11b
--- /dev/null
+++ b/test/test_pdp_bq2.pd
@@ -0,0 +1,146 @@
+#N canvas 116 11 765 631 10;
+#X obj 128 85 pdp_v4l;
+#X obj 127 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 178 30 stop;
+#X msg 216 29 bang;
+#X msg 291 64 dim 160 120;
+#X msg 289 29 dim 32 32;
+#X msg 283 5 dim 80 60;
+#X msg 313 94 dim 320 240;
+#X msg 334 117 dim 768 576;
+#X floatatom 222 3 5 0 0;
+#X msg 253 144 dim 640 240;
+#X msg 364 45 dim 640 480;
+#X obj 90 507 pdp_xv;
+#X msg 32 38 type grey;
+#X msg 31 14 type yv12;
+#X floatatom 193 228 5 0 0;
+#X msg 36 218 ver \$1;
+#X msg 91 219 hor \$1;
+#X obj 38 193 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 95 192 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 168 319 pdp_bq;
+#X floatatom 243 346 5 0 0;
+#X floatatom 130 10 5 0 0;
+#X obj 196 58 metro 5;
+#X floatatom 313 209 5 0 0;
+#X msg 312 233 onep \$1;
+#X obj 318 178 hsl 128 15 0.01 1 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 2800 1;
+#X floatatom 389 244 5 0 0;
+#X obj 394 213 hsl 128 15 0.03 1 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 6900 1;
+#X msg 388 267 twop \$1;
+#X floatatom 203 155 5 0 0;
+#X msg 18 303 u1 \$1;
+#X msg 20 334 u2 \$1;
+#X floatatom 51 273 5 0 0;
+#X floatatom 90 306 5 0 0;
+#X obj 44 156 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 102 154 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 30 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 87 99 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 28 125 lr \$1;
+#X msg 83 126 rl \$1;
+#X msg 32 172 tb \$1;
+#X msg 87 173 bt \$1;
+#X obj 461 368 hsl 128 15 0.05 0.5 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 2400 1;
+#X obj 537 403 hsl 128 15 0.1 10 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 2700 1;
+#X obj 490 477 t b f;
+#X floatatom 556 438 5 0 0;
+#X floatatom 393 426 5 0 0;
+#X obj 495 529 pack s 0 0;
+#X msg 492 562 \$1 \$2 \$3;
+#X obj 548 482 t b f;
+#X msg 402 505 lpf;
+#X msg 402 484 hpf;
+#X msg 400 533 apf;
+#X msg 397 566 bsf;
+#X obj 157 181 pdp_mix;
+#X obj 545 98 random 2;
+#X obj 610 98 random 2;
+#X obj 548 61 pdp_trigger;
+#X obj 543 135 random 2;
+#X obj 608 135 random 2;
+#X obj 155 128 pdp_reg;
+#X msg 201 511 create :0;
+#X msg 204 475 close;
+#X connect 0 0 58 0;
+#X connect 0 0 61 0;
+#X connect 1 0 0 0;
+#X connect 2 0 23 0;
+#X connect 3 0 23 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 0 0;
+#X connect 9 0 23 1;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 0 0;
+#X connect 15 0 20 1;
+#X connect 16 0 20 0;
+#X connect 17 0 20 0;
+#X connect 18 0 16 0;
+#X connect 19 0 17 0;
+#X connect 20 0 55 1;
+#X connect 20 0 12 0;
+#X connect 21 0 12 1;
+#X connect 22 0 0 1;
+#X connect 23 0 0 0;
+#X connect 24 0 25 0;
+#X connect 25 0 20 0;
+#X connect 26 0 24 0;
+#X connect 27 0 29 0;
+#X connect 28 0 27 0;
+#X connect 29 0 20 0;
+#X connect 30 0 55 2;
+#X connect 31 0 20 0;
+#X connect 32 0 20 0;
+#X connect 33 0 31 0;
+#X connect 34 0 32 0;
+#X connect 35 0 41 0;
+#X connect 36 0 42 0;
+#X connect 37 0 39 0;
+#X connect 38 0 40 0;
+#X connect 39 0 20 0;
+#X connect 40 0 20 0;
+#X connect 41 0 20 0;
+#X connect 42 0 20 0;
+#X connect 43 0 47 0;
+#X connect 44 0 46 0;
+#X connect 45 0 48 0;
+#X connect 45 1 48 1;
+#X connect 46 0 50 0;
+#X connect 47 0 45 0;
+#X connect 48 0 49 0;
+#X connect 49 0 20 0;
+#X connect 50 0 48 0;
+#X connect 50 1 48 2;
+#X connect 51 0 48 0;
+#X connect 52 0 48 0;
+#X connect 53 0 48 0;
+#X connect 54 0 48 0;
+#X connect 55 0 20 0;
+#X connect 56 0 37 0;
+#X connect 57 0 38 0;
+#X connect 58 0 56 0;
+#X connect 58 0 57 0;
+#X connect 58 0 59 0;
+#X connect 58 0 60 0;
+#X connect 59 0 35 0;
+#X connect 60 0 36 0;
+#X connect 61 0 55 0;
+#X connect 62 0 12 0;
+#X connect 63 0 12 0;
diff --git a/test/test_pdp_bqt.pd b/test/test_pdp_bqt.pd
new file mode 100644
index 0000000..b52edf1
--- /dev/null
+++ b/test/test_pdp_bqt.pd
@@ -0,0 +1,91 @@
+#N canvas 28 181 765 631 10;
+#X obj 128 85 pdp_v4l;
+#X obj 127 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 178 30 stop;
+#X msg 216 29 bang;
+#X msg 291 64 dim 160 120;
+#X msg 289 29 dim 32 32;
+#X msg 283 5 dim 80 60;
+#X msg 313 94 dim 320 240;
+#X msg 334 117 dim 768 576;
+#X floatatom 222 3 5 0 0;
+#X msg 253 144 dim 640 240;
+#X msg 364 45 dim 640 480;
+#X obj 90 507 pdp_xv;
+#X msg 32 38 type grey;
+#X msg 31 14 type yv12;
+#X floatatom 141 464 5 0 0;
+#X floatatom 130 10 5 0 0;
+#X obj 196 58 metro 5;
+#X floatatom 313 209 5 0 0;
+#X msg 312 233 onep \$1;
+#X obj 318 178 hsl 128 15 0.01 1 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 4900 1;
+#X floatatom 389 244 5 0 0;
+#X obj 394 213 hsl 128 15 0.03 1 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 9400 1;
+#X msg 388 267 twop \$1;
+#X msg 18 303 u1 \$1;
+#X msg 20 334 u2 \$1;
+#X floatatom 51 273 5 0 0;
+#X floatatom 90 306 5 0 0;
+#X obj 461 368 hsl 128 15 0.001 0.5 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 100 1;
+#X obj 537 403 hsl 128 15 0.1 10 1 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 9800 1;
+#X obj 490 477 t b f;
+#X floatatom 556 438 5 0 0;
+#X floatatom 393 426 5 0 0;
+#X obj 495 529 pack s 0 0;
+#X msg 492 562 \$1 \$2 \$3;
+#X obj 548 482 t b f;
+#X msg 402 505 lpf;
+#X msg 402 484 hpf;
+#X msg 400 533 apf;
+#X msg 397 566 bsf;
+#X obj 168 319 pdp_bqt;
+#X msg 171 237 reset;
+#X connect 0 0 40 0;
+#X connect 1 0 0 0;
+#X connect 2 0 17 0;
+#X connect 3 0 17 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 0 0;
+#X connect 9 0 17 1;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 0 0;
+#X connect 15 0 12 1;
+#X connect 16 0 0 1;
+#X connect 17 0 0 0;
+#X connect 18 0 19 0;
+#X connect 19 0 40 0;
+#X connect 20 0 18 0;
+#X connect 21 0 23 0;
+#X connect 22 0 21 0;
+#X connect 23 0 40 0;
+#X connect 24 0 40 0;
+#X connect 25 0 40 0;
+#X connect 26 0 24 0;
+#X connect 27 0 25 0;
+#X connect 28 0 32 0;
+#X connect 29 0 31 0;
+#X connect 30 0 33 0;
+#X connect 30 1 33 1;
+#X connect 31 0 35 0;
+#X connect 32 0 30 0;
+#X connect 33 0 34 0;
+#X connect 34 0 40 0;
+#X connect 35 0 33 0;
+#X connect 35 1 33 2;
+#X connect 36 0 33 0;
+#X connect 37 0 33 0;
+#X connect 38 0 33 0;
+#X connect 39 0 33 0;
+#X connect 40 0 12 0;
+#X connect 41 0 40 0;
diff --git a/test/test_pdp_chrot.pd b/test/test_pdp_chrot.pd
new file mode 100644
index 0000000..308b21e
--- /dev/null
+++ b/test/test_pdp_chrot.pd
@@ -0,0 +1,32 @@
+#N canvas 7 0 629 658 10;
+#X obj 169 525 pdp_xv;
+#X obj 265 42 metro 40;
+#X obj 262 17 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X floatatom 309 9 5 0 0;
+#X obj 158 156 pdp_v4l;
+#X msg 83 57 close;
+#X obj 142 56 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 119 430 pdp_add;
+#X obj 156 305 pdp_gain;
+#X msg 266 272 y \$1;
+#X msg 315 272 v \$1;
+#X msg 363 271 u \$1;
+#X floatatom 265 235 5 0 0;
+#X floatatom 315 235 5 0 0;
+#X floatatom 367 235 5 0 0;
+#X connect 1 0 6 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 4 0 8 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 0 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 10 0 8 0;
+#X connect 11 0 8 0;
+#X connect 12 0 9 0;
+#X connect 13 0 10 0;
+#X connect 14 0 11 0;
diff --git a/test/test_pdp_conv.pd b/test/test_pdp_conv.pd
new file mode 100644
index 0000000..2de317a
--- /dev/null
+++ b/test/test_pdp_conv.pd
@@ -0,0 +1,115 @@
+#N canvas 255 202 713 686 10;
+#X obj 152 101 pdp_qt;
+#X msg 173 63 bang;
+#X floatatom 92 60 5 0 0;
+#X msg 258 62 open /home/ben/MOV/test1.mov;
+#X obj 164 8 i 0;
+#X obj 220 19 + 1;
+#X obj 303 24 metro 40;
+#X obj 300 -1 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X msg 63 29 0;
+#X msg 102 31 9999;
+#X msg 63 131 loop \$1;
+#X obj 59 105 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 178 136 5 0 0;
+#X floatatom 235 137 5 0 0;
+#X floatatom 383 3 5 0 0;
+#X obj 179 488 pdp_xv;
+#X obj 263 331 pdp_conv;
+#X msg 348 92 open /home/ben/MOV/neuskoter90.mov;
+#X obj 267 206 pdp_mix;
+#X floatatom 313 174 5 0 0;
+#X floatatom 234 454 5 0 0;
+#X msg 530 54 open \$1;
+#X obj 526 28 openpanel;
+#X obj 520 8 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X obj 408 164 * -1;
+#X obj 406 192 + 1;
+#X obj 405 137 hsl 128 15 1e-04 1 1 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 317 299 5 0 0;
+#X msg 119 257 hor \$1;
+#X msg 173 257 ver \$1;
+#X obj 123 231 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X obj 176 228 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X obj 212 395 pdp_mix;
+#X obj 463 283 pack 0 0;
+#X obj 485 253 t b f;
+#X floatatom 462 222 5 0 0;
+#X floatatom 511 223 5 0 0;
+#X msg 462 310 mix2 \$1 \$2;
+#X obj 357 417 pdp_xv;
+#X floatatom 399 387 5 0 0;
+#X msg 323 2 stop;
+#X msg 40 416 size 1024 768;
+#X floatatom 272 367 5 0 0;
+#X msg 305 250 vmask 0.25 0.5 0.25;
+#X msg 306 272 hmask 0.25 0.5 0.25;
+#X msg 300 226 vmask 0.25 -0.5 0.25;
+#X obj 476 654 pdp_xv;
+#X floatatom 531 620 5 0 0;
+#X obj 446 535 pdp_v4l;
+#X obj 446 499 metro 40;
+#X obj 443 471 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 514 554 5 0 0;
+#X obj 450 585 pdp_chrot;
+#X connect 0 0 18 0;
+#X connect 0 0 32 0;
+#X connect 0 1 12 0;
+#X connect 0 2 13 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 1;
+#X connect 6 0 1 0;
+#X connect 7 0 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 0;
+#X connect 14 0 6 1;
+#X connect 16 0 32 1;
+#X connect 17 0 0 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 2;
+#X connect 20 0 15 1;
+#X connect 21 0 0 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
+#X connect 24 0 25 0;
+#X connect 25 0 19 0;
+#X connect 26 0 24 0;
+#X connect 27 0 16 1;
+#X connect 28 0 16 0;
+#X connect 29 0 16 0;
+#X connect 30 0 28 0;
+#X connect 31 0 29 0;
+#X connect 32 0 15 0;
+#X connect 32 0 18 1;
+#X connect 33 0 37 0;
+#X connect 34 0 33 0;
+#X connect 34 1 33 1;
+#X connect 35 0 33 0;
+#X connect 36 0 34 0;
+#X connect 37 0 32 0;
+#X connect 39 0 38 1;
+#X connect 40 0 6 0;
+#X connect 41 0 15 0;
+#X connect 42 0 32 2;
+#X connect 43 0 16 0;
+#X connect 44 0 16 0;
+#X connect 45 0 16 0;
+#X connect 47 0 46 1;
+#X connect 48 0 52 0;
+#X connect 49 0 48 0;
+#X connect 50 0 49 0;
+#X connect 51 0 52 1;
+#X connect 52 0 46 0;
diff --git a/test/test_pdp_debug.pd b/test/test_pdp_debug.pd
new file mode 100644
index 0000000..54ccb66
--- /dev/null
+++ b/test/test_pdp_debug.pd
@@ -0,0 +1,18 @@
+#N canvas 649 12 317 300 10;
+#X obj 102 33 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 94 208 pdp_xv;
+#X floatatom 173 149 5 0 0;
+#X floatatom 199 64 5 0 0;
+#X obj 93 112 pdp_mix;
+#X obj 34 35 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 29 59 pdp_noise;
+#X obj 105 59 pdp_noise;
+#X connect 0 0 7 0;
+#X connect 2 0 1 1;
+#X connect 3 0 4 2;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 1;
diff --git a/test/test_pdp_del.pd b/test/test_pdp_del.pd
new file mode 100644
index 0000000..b363936
--- /dev/null
+++ b/test/test_pdp_del.pd
@@ -0,0 +1,41 @@
+#N canvas 0 0 498 481 10;
+#X obj 163 121 pdp_v4l;
+#X obj 115 58 metro 40;
+#X obj 118 25 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 75 454 pdp_xv;
+#X obj 94 106 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 283 93 5 0 0;
+#X floatatom 163 21 5 0 0;
+#X msg 232 25 2000;
+#X floatatom 220 198 5 0 0;
+#X floatatom 132 406 5 0 0;
+#X obj 133 248 pdp_mix2 0.5 -0.5;
+#X obj 291 308 pdp_conv;
+#X obj 73 360 pdp_mul;
+#X floatatom 283 337 5 0 0;
+#X floatatom 354 273 5 0 0;
+#X obj 186 359 pdp_mix;
+#X obj 181 175 pdp_del 100;
+#X msg 295 215 mask 0.33333 0.33333 0.33333;
+#X connect 0 0 10 0;
+#X connect 0 0 15 0;
+#X connect 0 0 16 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 4 0 0 0;
+#X connect 5 0 16 1;
+#X connect 6 0 1 1;
+#X connect 7 0 1 1;
+#X connect 8 0 10 2;
+#X connect 9 0 3 1;
+#X connect 10 0 11 0;
+#X connect 11 0 15 1;
+#X connect 12 0 3 0;
+#X connect 13 0 15 2;
+#X connect 14 0 11 1;
+#X connect 15 0 12 0;
+#X connect 15 0 12 1;
+#X connect 16 0 10 1;
+#X connect 17 0 11 0;
diff --git a/test/test_pdp_gain.pd b/test/test_pdp_gain.pd
new file mode 100644
index 0000000..4387b7e
--- /dev/null
+++ b/test/test_pdp_gain.pd
@@ -0,0 +1,46 @@
+#N canvas 7 0 629 658 10;
+#X obj 169 525 pdp_xv;
+#X obj 265 42 metro 40;
+#X obj 262 17 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X floatatom 309 9 5 0 0;
+#X obj 158 156 pdp_v4l;
+#X msg 83 57 close;
+#X obj 142 56 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 119 430 pdp_add;
+#X obj 156 305 pdp_gain;
+#X msg 266 272 y \$1;
+#X msg 315 272 v \$1;
+#X msg 363 271 u \$1;
+#X floatatom 265 235 5 0 0;
+#X floatatom 315 235 5 0 0;
+#X floatatom 367 235 5 0 0;
+#X floatatom 327 184 5 0 0;
+#X floatatom 212 259 5 0 0;
+#X obj 266 212 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 332 213 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 372 208 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X connect 1 0 6 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 4 0 8 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 0 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 10 0 8 0;
+#X connect 11 0 8 0;
+#X connect 12 0 9 0;
+#X connect 13 0 10 0;
+#X connect 14 0 11 0;
+#X connect 15 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 8 1;
+#X connect 17 0 12 0;
+#X connect 18 0 13 0;
+#X connect 19 0 14 0;
diff --git a/test/test_pdp_gradient.pd b/test/test_pdp_gradient.pd
new file mode 100644
index 0000000..831fd4d
--- /dev/null
+++ b/test/test_pdp_gradient.pd
@@ -0,0 +1,52 @@
+#N canvas 0 0 592 507 10;
+#X obj 128 85 pdp_v4l;
+#X obj 127 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 178 30 stop;
+#X msg 216 29 bang;
+#X msg 307 9 dim 160 120;
+#X msg 305 64 dim 320 240;
+#X floatatom 222 3 5 0 0;
+#X msg 303 36 dim 640 480;
+#X obj 126 360 pdp_xv;
+#X obj 196 58 metro 20;
+#X msg 32 38 type grey;
+#X msg 31 14 type yv12;
+#X obj 129 268 pdp_gradient;
+#X obj 224 174 pack s 0 0 0;
+#X msg 171 142 rgb;
+#X floatatom 337 105 5 0 0;
+#X msg 222 209 \$1 \$2 \$3 \$4;
+#X obj 339 139 t b f;
+#X floatatom 287 105 5 0 0;
+#X obj 289 139 t b f;
+#X floatatom 232 106 5 0 0;
+#X obj 234 140 t b f;
+#X obj 125 118 pdp_trigger;
+#X msg 170 179 yuv;
+#X connect 0 0 22 0;
+#X connect 1 0 0 0;
+#X connect 2 0 9 0;
+#X connect 3 0 9 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 9 1;
+#X connect 7 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 8 0;
+#X connect 13 0 16 0;
+#X connect 14 0 13 0;
+#X connect 15 0 17 0;
+#X connect 16 0 12 0;
+#X connect 17 0 13 0;
+#X connect 17 1 13 3;
+#X connect 18 0 19 0;
+#X connect 19 0 13 0;
+#X connect 19 1 13 2;
+#X connect 20 0 21 0;
+#X connect 21 0 13 0;
+#X connect 21 1 13 1;
+#X connect 22 0 12 0;
+#X connect 23 0 13 0;
diff --git a/test/test_pdp_mix.pd b/test/test_pdp_mix.pd
new file mode 100644
index 0000000..8f9599e
--- /dev/null
+++ b/test/test_pdp_mix.pd
@@ -0,0 +1,114 @@
+#N canvas 341 641 822 286 10;
+#X obj 152 101 pdp_qt;
+#X msg 173 63 bang;
+#X floatatom 92 60 5 0 0;
+#X msg 258 62 open /home/ben/MOV/test1.mov;
+#X obj 164 8 i 0;
+#X obj 220 19 + 1;
+#X obj 303 24 metro 40;
+#X obj 300 -1 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X msg 63 29 0;
+#X msg 102 31 9999;
+#X msg 63 131 loop \$1;
+#X obj 59 105 toggle 15 0 empty empty empty 20 8 0 8 -262144 -1 -1
+1 1;
+#X floatatom 178 136 5 0 0;
+#X floatatom 235 137 5 0 0;
+#X obj 413 229 pdp_qt;
+#X msg 446 190 bang;
+#X floatatom 365 187 5 0 0;
+#X msg 531 189 open /home/ben/MOV/test1.mov;
+#X obj 437 135 i 0;
+#X obj 493 146 + 1;
+#X obj 576 151 metro 40;
+#X obj 573 126 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X msg 336 156 0;
+#X msg 375 158 9999;
+#X msg 336 258 loop \$1;
+#X obj 332 232 toggle 15 0 empty empty empty 20 8 0 8 -262144 -1 -1
+1 1;
+#X floatatom 451 263 5 0 0;
+#X floatatom 508 264 5 0 0;
+#X floatatom 383 3 5 0 0;
+#X floatatom 634 128 5 0 0;
+#X msg 327 106 0;
+#X obj 289 565 pdp_xv;
+#X obj 232 390 pdp_mix;
+#X floatatom 313 352 5 0 0;
+#X obj 356 326 hslider 300 15 0 1 0 0 empty empty empty 20 8 0 8 -241291
+-1 -1 27200 1;
+#X obj 236 437 pdp_reg;
+#X obj 297 519 pdp_mix;
+#X obj 397 437 hslider 300 15 0 1 0 0 empty empty empty 20 8 0 8 -241291
+-1 -1 10100 1;
+#X msg 396 517 mix2 \$1 \$2;
+#X obj 394 410 hslider 300 15 0 1 0 0 empty empty empty 20 8 0 8 -241291
+-1 -1 8900 1;
+#X obj 437 465 t b f;
+#X obj 417 493 pack 0 0;
+#X floatatom 241 215 5 0 0;
+#X floatatom 350 541 5 0 0;
+#X floatatom 549 226 5 0 0;
+#X msg 470 33 open /home/ben/MOV/neuskoter90.mov;
+#X msg 555 80 open /home/ben/MOV/neuskoter90.mov;
+#X msg 480 101 open \$1;
+#X obj 479 79 openpanel;
+#X obj 480 59 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X connect 0 0 32 0;
+#X connect 0 1 12 0;
+#X connect 0 2 13 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 1;
+#X connect 6 0 0 0;
+#X connect 7 0 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 0;
+#X connect 14 0 36 1;
+#X connect 14 1 26 0;
+#X connect 14 2 27 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 14 0;
+#X connect 18 0 19 0;
+#X connect 18 0 15 0;
+#X connect 19 0 18 1;
+#X connect 20 0 15 0;
+#X connect 21 0 20 0;
+#X connect 22 0 16 0;
+#X connect 23 0 16 0;
+#X connect 24 0 14 0;
+#X connect 25 0 24 0;
+#X connect 28 0 6 1;
+#X connect 29 0 20 1;
+#X connect 30 0 22 0;
+#X connect 30 0 8 0;
+#X connect 32 0 35 0;
+#X connect 32 0 36 0;
+#X connect 33 0 32 2;
+#X connect 34 0 33 0;
+#X connect 35 0 32 1;
+#X connect 36 0 31 0;
+#X connect 37 0 40 0;
+#X connect 38 0 36 0;
+#X connect 39 0 41 0;
+#X connect 40 0 41 0;
+#X connect 40 1 41 1;
+#X connect 41 0 38 0;
+#X connect 42 0 0 1;
+#X connect 43 0 31 1;
+#X connect 44 0 14 1;
+#X connect 45 0 0 0;
+#X connect 46 0 14 0;
+#X connect 47 0 14 0;
+#X connect 47 0 0 0;
+#X connect 48 0 47 0;
+#X connect 49 0 48 0;
diff --git a/test/test_pdp_mul.pd b/test/test_pdp_mul.pd
new file mode 100644
index 0000000..3fc0902
--- /dev/null
+++ b/test/test_pdp_mul.pd
@@ -0,0 +1,44 @@
+#N canvas 0 0 450 373 10;
+#X obj 128 85 pdp_v4l;
+#X obj 128 215 pdp_xv;
+#X obj 127 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 340 167 pdp_reg;
+#X obj 211 93 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 178 195 5 0 0;
+#X obj 95 167 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 178 30 stop;
+#X obj 196 58 metro 40;
+#X msg 216 29 bang;
+#X obj 291 193 pdp_mul;
+#X msg 291 64 dim 160 120;
+#X msg 289 29 dim 32 32;
+#X msg 283 5 dim 80 60;
+#X msg 313 94 dim 320 240;
+#X msg 334 117 dim 768 576;
+#X floatatom 222 3 5 0 0;
+#X obj 262 245 timer;
+#X floatatom 261 271 5 0 0;
+#X obj 148 121 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X connect 0 0 1 0;
+#X connect 0 0 19 0;
+#X connect 2 0 0 0;
+#X connect 3 0 10 1;
+#X connect 4 0 3 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 0;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 0 0;
+#X connect 15 0 0 0;
+#X connect 16 0 8 1;
+#X connect 17 0 18 0;
+#X connect 19 0 17 1;
+#X connect 19 0 17 0;
diff --git a/test/test_pdp_noise.pd b/test/test_pdp_noise.pd
new file mode 100644
index 0000000..7302692
--- /dev/null
+++ b/test/test_pdp_noise.pd
@@ -0,0 +1,40 @@
+#N canvas 0 0 450 300 10;
+#X obj 132 150 pdp_noise;
+#X obj 128 258 pdp_xv;
+#X obj 133 21 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 171 92 type grey;
+#X msg 173 114 type yv12;
+#X msg 243 35 dim 32 32;
+#X msg 244 10 dim 320 240;
+#X msg 246 61 dim 640 480;
+#X msg 243 216 lpf \$1 \$2;
+#X obj 242 179 pack 0 0;
+#X floatatom 247 117 5 0 0;
+#X floatatom 299 123 5 0 0;
+#X obj 264 150 t b f;
+#X floatatom 174 184 5 0 0;
+#X msg 340 33 dim 512 256;
+#X obj 134 57 metro 100;
+#X msg 205 158 2;
+#X msg 358 71 dim 1024 1024;
+#X obj 132 212 pdp_bq;
+#X connect 0 0 18 0;
+#X connect 2 0 15 0;
+#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 0 0;
+#X connect 8 0 18 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 12 0 9 0;
+#X connect 12 1 9 1;
+#X connect 13 0 18 1;
+#X connect 14 0 0 0;
+#X connect 15 0 0 0;
+#X connect 16 0 13 0;
+#X connect 17 0 0 0;
+#X connect 18 0 1 0;
diff --git a/test/test_pdp_pctv.pd b/test/test_pdp_pctv.pd
new file mode 100644
index 0000000..379a8e0
--- /dev/null
+++ b/test/test_pdp_pctv.pd
@@ -0,0 +1,47 @@
+#N canvas 0 0 458 400 10;
+#X obj 128 85 pdp_v4l;
+#X obj 127 53 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 178 30 stop;
+#X msg 216 29 bang;
+#X msg 291 64 dim 160 120;
+#X msg 289 29 dim 32 32;
+#X msg 283 5 dim 80 60;
+#X msg 313 94 dim 320 240;
+#X msg 334 117 dim 768 576;
+#X floatatom 222 3 5 0 0;
+#X msg 253 144 dim 640 240;
+#X msg 364 45 dim 640 480;
+#X obj 126 360 pdp_xv;
+#X obj 196 58 metro 20;
+#X msg 32 38 type grey;
+#X msg 31 14 type yv12;
+#X obj 129 268 pdp_conv;
+#X floatatom 193 228 5 0 0;
+#X msg 36 218 ver \$1;
+#X msg 91 219 hor \$1;
+#X obj 38 193 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 95 192 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X connect 0 0 16 0;
+#X connect 1 0 0 0;
+#X connect 2 0 13 0;
+#X connect 3 0 13 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 0 0;
+#X connect 9 0 13 1;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 0 0;
+#X connect 15 0 0 0;
+#X connect 16 0 12 0;
+#X connect 17 0 16 1;
+#X connect 18 0 16 0;
+#X connect 19 0 16 0;
+#X connect 20 0 18 0;
+#X connect 21 0 19 0;
diff --git a/test/test_pdp_portable.pd b/test/test_pdp_portable.pd
new file mode 100644
index 0000000..5da41be
--- /dev/null
+++ b/test/test_pdp_portable.pd
@@ -0,0 +1,41 @@
+#N canvas 281 443 562 448 10;
+#X obj 60 370 pdp_xv;
+#X obj 76 103 pdp_v4l;
+#X obj 78 76 metro 20;
+#X obj 78 41 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 211 158 5 0 0;
+#X obj 71 238 pdp_gain;
+#X floatatom 146 219 5 0 0;
+#X msg 18 79 close;
+#X msg 22 156 channel \$1;
+#X floatatom 24 123 5 0 0;
+#X msg 190 97 freqMHz \$1;
+#X obj 167 8 hsl 201 15 -100 100 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X floatatom 215 36 5 0 0;
+#X obj 331 90 +;
+#X obj 333 61 t b f;
+#X obj 169 37 * 8;
+#X floatatom 330 33 5 0 0;
+#X msg 86 336 cursor \$1;
+#X obj 98 315 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 1;
+#X connect 7 0 1 0;
+#X connect 8 0 1 0;
+#X connect 9 0 8 0;
+#X connect 10 0 1 0;
+#X connect 11 0 12 0;
+#X connect 11 0 15 0;
+#X connect 13 0 10 0;
+#X connect 14 0 13 0;
+#X connect 14 1 13 1;
+#X connect 15 0 13 0;
+#X connect 16 0 14 0;
+#X connect 17 0 0 0;
+#X connect 18 0 17 0;
diff --git a/test/test_pdp_qt_read.pd b/test/test_pdp_qt_read.pd
new file mode 100644
index 0000000..b4bb088
--- /dev/null
+++ b/test/test_pdp_qt_read.pd
@@ -0,0 +1,164 @@
+#N canvas 190 294 862 660 10;
+#X obj 122 506 pdp_xv;
+#X msg 135 81 bang;
+#X floatatom 54 78 5 0 0;
+#X msg 222 90 open /home/ben/MOV/test1.mov;
+#X msg 418 369 open /home/ben/MOV/eye.mov;
+#X obj 126 26 i 0;
+#X obj 182 37 + 1;
+#X obj 217 47 metro 40;
+#X obj 262 17 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X msg 25 47 0;
+#X msg 64 49 9999;
+#X msg 25 149 loop \$1;
+#X obj 21 123 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 264 231 5 0 0;
+#X floatatom 538 184 5 0 0;
+#X msg 370 44 open \$1;
+#X obj 369 20 openpanel;
+#X obj 354 3 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X floatatom 192 459 5 0 0;
+#X floatatom 309 9 5 0 0;
+#X msg 298 135 open /home/ben/MOV/nogeseenfilmke.mov;
+#X obj 346 406 table tab1;
+#X msg 56 23 close;
+#X obj 250 542 dac~;
+#X msg 315 390 0;
+#X obj 316 427 tabplay~ tab1;
+#X msg 332 325 importaudio tab1;
+#X obj 26 185 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 180 83 5 0 0;
+#X msg 215 7 stop;
+#X obj 478 213 i;
+#X obj 490 276 mod;
+#X obj 494 244 + 1;
+#X floatatom 558 226 5 0 0;
+#X msg 30 211 autoplay \$1;
+#X floatatom 501 321 5 0 0;
+#X obj 119 331 pdp_del 10;
+#X floatatom 194 289 5 0 0;
+#X obj 384 221 *;
+#X obj 288 159 hsl 300 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 305 44 hsl 300 15 0 1000 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X msg 329 254 loop \$1;
+#X obj 325 228 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X obj 236 258 pdp_trigger;
+#X obj 117 421 pdp_mix;
+#X floatatom 182 390 5 0 0;
+#X obj 278 349 hsl 300 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X msg 434 394 open /home/ben/MOV/nogeseenfilmke.mov;
+#X obj 241 175 tgl 15 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
+1;
+#X msg 245 201 autoplay \$1;
+#X obj 408 254 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 65 281 close;
+#X obj 352 484 vol~;
+#X obj 221 497 vol~;
+#X floatatom 252 470 5 0 0;
+#X floatatom 382 460 5 0 0;
+#X msg 418 281 close;
+#X msg 121 145 play;
+#X msg 347 229 play;
+#X msg 447 13 bang;
+#X msg 564 13 stop;
+#X msg 540 97 \; pd dsp 1;
+#X msg 616 98 \; pd dsp 0;
+#X floatatom 608 13 5 0 0;
+#X msg 732 104 close;
+#X msg 778 105 close;
+#X obj 470 66 route 0 1 2 3 4 5 6 7;
+#X msg 675 13 140;
+#X obj 489 42 random 6;
+#X obj 483 12 metro 140;
+#X obj 715 46 loadbang;
+#X msg 750 76 \; pd dsp 1;
+#X obj 133 205 pdp_qt~;
+#X obj 322 283 pdp_qt~;
+#X obj 207 71 random 250;
+#X connect 1 0 72 0;
+#X connect 2 0 72 0;
+#X connect 3 0 72 0;
+#X connect 4 0 73 0;
+#X connect 5 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 1;
+#X connect 7 0 74 0;
+#X connect 8 0 7 0;
+#X connect 9 0 2 0;
+#X connect 10 0 2 0;
+#X connect 11 0 72 0;
+#X connect 12 0 11 0;
+#X connect 14 0 31 1;
+#X connect 14 0 38 1;
+#X connect 15 0 72 0;
+#X connect 16 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 0 1;
+#X connect 19 0 7 1;
+#X connect 20 0 72 0;
+#X connect 22 0 72 0;
+#X connect 24 0 25 0;
+#X connect 26 0 72 0;
+#X connect 27 0 34 0;
+#X connect 28 0 72 1;
+#X connect 29 0 7 0;
+#X connect 30 0 32 0;
+#X connect 31 0 35 0;
+#X connect 32 0 31 0;
+#X connect 33 0 32 1;
+#X connect 34 0 72 0;
+#X connect 36 0 44 0;
+#X connect 37 0 36 1;
+#X connect 38 0 28 0;
+#X connect 39 0 38 0;
+#X connect 40 0 19 0;
+#X connect 41 0 73 0;
+#X connect 42 0 41 0;
+#X connect 44 0 0 0;
+#X connect 45 0 44 2;
+#X connect 46 0 45 0;
+#X connect 47 0 73 0;
+#X connect 48 0 49 0;
+#X connect 49 0 73 0;
+#X connect 50 0 73 0;
+#X connect 51 0 72 0;
+#X connect 56 0 73 0;
+#X connect 57 0 72 0;
+#X connect 58 0 73 0;
+#X connect 59 0 69 0;
+#X connect 59 0 58 0;
+#X connect 59 0 57 0;
+#X connect 60 0 69 0;
+#X connect 63 0 69 1;
+#X connect 64 0 72 0;
+#X connect 65 0 73 0;
+#X connect 66 0 3 0;
+#X connect 66 1 20 0;
+#X connect 66 2 4 0;
+#X connect 66 3 47 0;
+#X connect 66 6 64 0;
+#X connect 66 7 65 0;
+#X connect 67 0 63 0;
+#X connect 68 0 66 0;
+#X connect 69 0 68 0;
+#X connect 70 0 59 0;
+#X connect 70 0 71 0;
+#X connect 72 0 43 0;
+#X connect 72 0 36 0;
+#X connect 72 1 13 0;
+#X connect 72 2 14 0;
+#X connect 72 3 23 1;
+#X connect 72 4 23 0;
+#X connect 73 0 44 1;
+#X connect 73 3 23 0;
+#X connect 73 4 23 1;
+#X connect 74 0 28 0;
diff --git a/test/test_pdp_qt_read2.pd b/test/test_pdp_qt_read2.pd
new file mode 100644
index 0000000..0071f4b
--- /dev/null
+++ b/test/test_pdp_qt_read2.pd
@@ -0,0 +1,45 @@
+#N canvas 388 475 450 300 10;
+#X msg 120 29 open /home/ben/MOV/nogeseenfilmke.mov;
+#X obj 79 52 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 119 156 pdp_xv;
+#X obj 222 166 dac~;
+#X obj 200 137 *~ 0.2;
+#X obj 253 135 *~ 0.2;
+#X obj 122 100 pdp_qt~;
+#X msg 50 98 stop;
+#X msg 119 7 open /home/ben/MOV/test1.mov;
+#X floatatom 322 77 5 0 0;
+#X obj 362 139 osc~ 1000;
+#X msg 56 215 thread \$1;
+#X obj 58 185 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 271 51 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 289 75 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 205 73 autoplay \$1;
+#X msg 205 47 loop \$1;
+#X obj 14 25 metro;
+#X obj 11 1 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1
+;
+#X floatatom 47 2 5 0 0;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 4 0 3 0;
+#X connect 5 0 3 1;
+#X connect 6 0 2 0;
+#X connect 6 3 4 0;
+#X connect 6 4 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X connect 9 0 6 1;
+#X connect 11 0 6 0;
+#X connect 12 0 11 0;
+#X connect 13 0 16 0;
+#X connect 14 0 15 0;
+#X connect 15 0 6 0;
+#X connect 16 0 6 0;
+#X connect 17 0 1 0;
+#X connect 18 0 17 0;
+#X connect 19 0 17 1;
diff --git a/test/test_pdp_randmix.pd b/test/test_pdp_randmix.pd
new file mode 100644
index 0000000..c3c3023
--- /dev/null
+++ b/test/test_pdp_randmix.pd
@@ -0,0 +1,31 @@
+#N canvas 0 0 569 226 10;
+#X obj 137 194 pdp_randmix;
+#X obj 135 98 pdp_v4l;
+#X obj 167 151 pdp_reg;
+#X obj 225 113 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 135 70 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 137 241 pdp_xv;
+#X floatatom 232 167 5 0 0;
+#X msg 130 30 stop;
+#X obj 182 15 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 181 43 metro 40;
+#X obj 260 134 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 9800 1;
+#X obj 254 214 pdp_conv;
+#X floatatom 316 184 5 0 0;
+#X connect 0 0 5 0;
+#X connect 0 0 11 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 6 0 0 2;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
+#X connect 9 0 4 0;
+#X connect 10 0 6 0;
+#X connect 11 0 2 0;
+#X connect 12 0 11 1;
diff --git a/test/test_pdp_reg.pd b/test/test_pdp_reg.pd
new file mode 100644
index 0000000..6e5424b
--- /dev/null
+++ b/test/test_pdp_reg.pd
@@ -0,0 +1,21 @@
+#N canvas 0 0 450 300 10;
+#X obj 152 123 pdp_reg;
+#X obj 152 180 pdp_xv;
+#X obj 108 89 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X obj 149 64 pdp_qt;
+#X msg 180 34 open /home/ben/MOV/test1.mov;
+#X obj 119 21 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X msg 300 71 loop 1;
+#X obj 301 126 metro 40;
+#X obj 299 101 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 3 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 0;
+#X connect 8 0 7 0;
diff --git a/test/test_pdp_scale.pd b/test/test_pdp_scale.pd
new file mode 100644
index 0000000..41a16ee
--- /dev/null
+++ b/test/test_pdp_scale.pd
@@ -0,0 +1,38 @@
+#N canvas 103 210 562 448 10;
+#X obj 60 370 pdp_xv;
+#X obj 78 76 metro 20;
+#X obj 78 41 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 211 158 5 0 0;
+#X floatatom 206 277 5 0 0;
+#X msg 18 79 close;
+#X msg 22 156 channel \$1;
+#X floatatom 24 123 5 0 0;
+#X msg 86 336 cursor \$1;
+#X obj 98 315 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 109 178 dim 256 256;
+#X msg 113 202 dim 320 240;
+#X obj 71 238 pdp_scale 320 240;
+#X obj 152 78 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 76 103 pdp_v4l;
+#X msg 121 144 dim 32 32;
+#X msg 280 221 quality \$1;
+#X obj 282 193 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X connect 1 0 14 0;
+#X connect 2 0 1 0;
+#X connect 5 0 14 0;
+#X connect 6 0 14 0;
+#X connect 7 0 6 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 12 0 0 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 15 0 12 0;
+#X connect 16 0 12 0;
+#X connect 17 0 16 0;
diff --git a/test/test_pdp_scope.pd b/test/test_pdp_scope.pd
new file mode 100644
index 0000000..d441ebb
--- /dev/null
+++ b/test/test_pdp_scope.pd
@@ -0,0 +1,21 @@
+#N canvas 504 346 450 300 10;
+#X obj 107 108 pdp_scope~;
+#X obj 81 45 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 109 161 pdp_xv;
+#X msg 118 23 type grey;
+#X obj 253 58 metro 40;
+#X obj 249 37 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 198 29 5 0 0;
+#X obj 127 55 noise~ 50;
+#X obj 248 175 r~ scope;
+#X msg 270 113 dim 1024 512;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
diff --git a/test/test_pdp_snap.pd b/test/test_pdp_snap.pd
new file mode 100644
index 0000000..b8b5e8b
--- /dev/null
+++ b/test/test_pdp_snap.pd
@@ -0,0 +1,16 @@
+#N canvas 0 0 450 300 10;
+#X obj 130 211 pdp_xv;
+#X obj 74 97 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X obj 189 38 metro 40;
+#X obj 187 13 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X obj 118 131 pdp_snap;
+#X msg 103 96 snap;
+#X obj 185 72 pdp_v4l;
+#X connect 1 0 4 0;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 1;
diff --git a/test/test_pdp_thread.pd b/test/test_pdp_thread.pd
new file mode 100644
index 0000000..2110c12
--- /dev/null
+++ b/test/test_pdp_thread.pd
@@ -0,0 +1,33 @@
+#N canvas 512 101 579 567 10;
+#X msg 86 6 stop;
+#X obj 61 6 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1
+;
+#X floatatom 130 3 5 0 0;
+#X obj 88 30 metro 40;
+#X obj 174 125 pdp_v4l;
+#X floatatom 207 93 5 0 0;
+#X obj 93 407 pdp_xv;
+#X msg 162 66 type grey;
+#X msg 242 63 type yv12;
+#X obj 332 322 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 346 413 pdp_control;
+#X msg 332 363 thread \$1;
+#X obj 153 408 pdp_xv;
+#X obj 212 408 pdp_xv;
+#X floatatom 213 289 5 0 0;
+#X obj 124 329 pdp_route 3;
+#X connect 0 0 3 0;
+#X connect 1 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 4 0;
+#X connect 4 0 15 0;
+#X connect 5 0 4 1;
+#X connect 7 0 4 0;
+#X connect 8 0 4 0;
+#X connect 9 0 11 0;
+#X connect 11 0 10 0;
+#X connect 14 0 15 1;
+#X connect 15 0 6 0;
+#X connect 15 1 12 0;
+#X connect 15 2 13 0;
diff --git a/test/test_pdp_trigger.pd b/test/test_pdp_trigger.pd
new file mode 100644
index 0000000..877d7eb
--- /dev/null
+++ b/test/test_pdp_trigger.pd
@@ -0,0 +1,13 @@
+#N canvas 661 462 467 193 10;
+#X obj 33 137 pdp_xv;
+#X obj 33 57 pdp_v4l;
+#X msg 33 12 bang;
+#X obj 33 92 pdp_trigger;
+#X obj 33 35 metro 1000;
+#X obj 105 138 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 1 5 0;
+#X connect 4 0 1 0;
diff --git a/test/test_pdp_v4l.pd b/test/test_pdp_v4l.pd
new file mode 100644
index 0000000..0bff99b
--- /dev/null
+++ b/test/test_pdp_v4l.pd
@@ -0,0 +1,91 @@
+#N canvas 7 0 629 658 10;
+#X obj 130 454 pdp_xv;
+#X obj 265 42 metro 40;
+#X obj 262 17 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X floatatom 309 9 5 0 0;
+#X obj 115 119 pdp_v4l;
+#X msg 220 80 open /dev/video0;
+#X msg 83 57 close;
+#X obj 142 56 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 233 127 dim 160 120;
+#X msg 238 162 dim 320 240;
+#X floatatom 177 418 5 0 0;
+#X obj 161 239 pdp_conv;
+#X floatatom 228 237 5 0 0;
+#X obj 157 325 pdp_mix2;
+#X floatatom 191 293 5 0 0;
+#X floatatom 241 293 5 0 0;
+#X obj 315 259 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 316 280 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X msg 350 123 dim 640 480;
+#X obj 252 372 pdp_mix;
+#X obj 257 435 pdp_reg;
+#X floatatom 307 340 5 0 0;
+#X obj 253 405 pdp_conv;
+#X floatatom 319 388 5 0 0;
+#X obj 313 314 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X msg 64 391 size 1024 768;
+#X msg 62 363 size 320 240;
+#X obj 357 453 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 358 474 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 357 500 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 358 521 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 230 528 pdp_affine 2;
+#X obj 357 544 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 358 565 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 228 570 pdp_affine 3;
+#X obj 228 479 pdp_affine 1;
+#X obj 499 372 osc~;
+#X obj 490 408 dac~;
+#X floatatom 486 335 5 0 0;
+#X connect 1 0 7 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 4 0 11 0;
+#X connect 4 0 13 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 0;
+#X connect 8 0 4 0;
+#X connect 9 0 4 0;
+#X connect 10 0 0 1;
+#X connect 11 0 13 1;
+#X connect 12 0 11 1;
+#X connect 13 0 19 0;
+#X connect 14 0 13 2;
+#X connect 15 0 13 3;
+#X connect 16 0 14 0;
+#X connect 17 0 15 0;
+#X connect 18 0 4 0;
+#X connect 19 0 22 0;
+#X connect 20 0 19 1;
+#X connect 20 0 35 0;
+#X connect 21 0 19 2;
+#X connect 22 0 20 0;
+#X connect 23 0 22 1;
+#X connect 24 0 21 0;
+#X connect 25 0 0 0;
+#X connect 26 0 0 0;
+#X connect 27 0 35 1;
+#X connect 28 0 35 2;
+#X connect 29 0 31 1;
+#X connect 30 0 31 2;
+#X connect 31 0 34 0;
+#X connect 32 0 34 1;
+#X connect 33 0 34 2;
+#X connect 34 0 0 0;
+#X connect 35 0 31 0;
+#X connect 36 0 37 0;
+#X connect 36 0 37 1;
+#X connect 38 0 36 0;
diff --git a/test/test_pdp_v4l_2.pd b/test/test_pdp_v4l_2.pd
new file mode 100644
index 0000000..905e850
--- /dev/null
+++ b/test/test_pdp_v4l_2.pd
@@ -0,0 +1,26 @@
+#N canvas 207 394 450 300 10;
+#X obj 112 96 pdp_v4l;
+#X obj 111 177 pdp_xv;
+#X obj 111 48 metro 40;
+#X obj 110 21 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 232 76 channel \$1;
+#X floatatom 227 45 5 0 0;
+#X msg 135 22 stop;
+#X msg 52 78 close;
+#X msg 222 147 dim 1280 1024;
+#X obj 63 35 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 223 120 dim 320 240;
+#X obj 110 121 pdp_grey;
+#X connect 0 0 11 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 6 0 2 0;
+#X connect 7 0 0 0;
+#X connect 8 0 1 0;
+#X connect 9 0 0 0;
+#X connect 10 0 1 0;
+#X connect 11 0 1 0;
diff --git a/test/test_pdp_xv.pd b/test/test_pdp_xv.pd
new file mode 100644
index 0000000..ebd2258
--- /dev/null
+++ b/test/test_pdp_xv.pd
@@ -0,0 +1,44 @@
+#N canvas 451 201 473 511 10;
+#X obj 57 83 pdp_xv;
+#X msg 51 35 create;
+#X msg 105 41 bang;
+#X floatatom 195 37 5 0 0;
+#X msg 151 30 bang;
+#X obj 155 78 metro 40;
+#X obj 75 248 pdp_xv;
+#X msg 69 200 create;
+#X msg 123 206 bang;
+#X obj 237 244 pdp_xv;
+#X msg 231 196 create;
+#X msg 285 202 bang;
+#X floatatom 188 134 5 0 0;
+#X msg 144 127 bang;
+#X obj 148 175 metro 40;
+#X floatatom 330 121 5 0 0;
+#X msg 286 114 bang;
+#X obj 290 162 metro 40;
+#X msg 76 8 destroy;
+#X msg 283 27 size 300 300;
+#X msg 285 58 size 320 240;
+#X msg 227 326 size 1280 1024;
+#X msg 147 7 random;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 0 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X connect 10 0 9 0;
+#X connect 11 0 9 0;
+#X connect 12 0 14 1;
+#X connect 13 0 14 0;
+#X connect 14 0 8 0;
+#X connect 15 0 17 1;
+#X connect 16 0 17 0;
+#X connect 17 0 11 0;
+#X connect 18 0 0 0;
+#X connect 19 0 0 0;
+#X connect 20 0 0 0;
+#X connect 21 0 0 0;
+#X connect 22 0 0 0;
diff --git a/test/test_pdp_zoom.pd b/test/test_pdp_zoom.pd
new file mode 100644
index 0000000..eab3826
--- /dev/null
+++ b/test/test_pdp_zoom.pd
@@ -0,0 +1,73 @@
+#N canvas 58 235 562 448 10;
+#X obj 104 418 pdp_xv;
+#X obj 78 76 metro 20;
+#X obj 78 41 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 18 79 close;
+#X msg 22 156 channel \$1;
+#X floatatom 24 123 5 0 0;
+#X msg 129 344 cursor \$1;
+#X obj 129 325 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 152 78 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 76 103 pdp_v4l;
+#X obj 108 301 pdp_zoom;
+#X floatatom 157 257 5 0 0;
+#X obj 134 193 pdp_mix;
+#X floatatom 195 130 5 0 0;
+#X obj 245 179 hsl 300 15 0.01 100 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 17104 1;
+#X floatatom 211 304 5 0 0;
+#X obj 235 244 hsl 300 15 0.01 100 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 14200 1;
+#X msg 254 279 zoomx \$1;
+#X msg 253 305 zoomy \$1;
+#X floatatom 213 280 5 0 0;
+#X obj 239 217 hsl 300 15 0.01 100 1 1 empty empty empty -2 -6 0 8
+-262144 -1 -1 17200 1;
+#X obj 238 91 hsl 300 15 0 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 22600 1;
+#X msg 367 345 centerx \$1;
+#X floatatom 370 319 5 0 0;
+#X floatatom 452 317 5 0 0;
+#X msg 449 343 centery \$1;
+#X obj 378 265 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 7700 1;
+#X obj 396 284 hsl 128 15 -1 1 0 1 empty empty empty -2 -6 0 8 -262144
+-1 -1 7700 1;
+#X msg 381 386 center 0 0;
+#X obj 129 148 pdp_grey;
+#X obj 108 382 pdp_saturation;
+#X floatatom 212 359 5 0 0;
+#X connect 1 0 9 0;
+#X connect 2 0 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 9 0;
+#X connect 5 0 4 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 29 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 1;
+#X connect 10 0 30 0;
+#X connect 11 0 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 12 2;
+#X connect 14 0 11 0;
+#X connect 15 0 18 0;
+#X connect 16 0 15 0;
+#X connect 17 0 10 0;
+#X connect 18 0 10 0;
+#X connect 19 0 17 0;
+#X connect 20 0 19 0;
+#X connect 21 0 13 0;
+#X connect 22 0 10 0;
+#X connect 23 0 22 0;
+#X connect 24 0 25 0;
+#X connect 25 0 10 0;
+#X connect 26 0 23 0;
+#X connect 27 0 24 0;
+#X connect 28 0 10 0;
+#X connect 30 0 0 0;
+#X connect 31 0 30 1;
diff --git a/test/test_warpfeedback.pd b/test/test_warpfeedback.pd
new file mode 100644
index 0000000..4ae32ef
--- /dev/null
+++ b/test/test_warpfeedback.pd
@@ -0,0 +1,49 @@
+#N canvas 723 178 450 461 10;
+#X obj 107 108 pdp_scope~;
+#X obj 81 45 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 120 374 pdp_xv;
+#X msg 118 23 type grey;
+#X obj 253 58 metro 40;
+#X obj 249 37 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 198 29 5 0 0;
+#X obj 127 55 noise~ 50;
+#X obj 248 175 r~ scope;
+#X msg 270 113 dim 1024 512;
+#X obj 162 215 pdp_gain;
+#X floatatom 224 192 5 0 0;
+#X floatatom 121 157 5 0 0;
+#X obj 216 264 pdp_warp;
+#X obj 77 197 pdp_mix;
+#X floatatom 266 320 5 0 0;
+#X floatatom 293 287 5 0 0;
+#X obj 32 135 pdp_v4l;
+#X floatatom 230 367 5 0 0;
+#X obj 320 226 pdp_control;
+#X msg 321 194 thread 0;
+#X obj 193 303 pdp_phase;
+#X floatatom 247 213 5 0 0;
+#X obj 183 243 pdp_blur;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 4 0 17 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 23 0;
+#X connect 11 0 10 1;
+#X connect 12 0 14 2;
+#X connect 13 0 21 0;
+#X connect 14 0 10 0;
+#X connect 15 0 13 1;
+#X connect 16 0 21 1;
+#X connect 17 0 14 0;
+#X connect 18 0 2 1;
+#X connect 20 0 19 0;
+#X connect 21 0 14 1;
+#X connect 21 0 2 0;
+#X connect 22 0 23 1;
+#X connect 23 0 13 0;