aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.txt9
-rw-r--r--autoscale.pd87
-rw-r--r--curve_exp.pd11
-rw-r--r--curve_graph.pd45
-rw-r--r--curve_log.pd11
-rw-r--r--curve_power.pd14
-rw-r--r--curve_root.pd22
-rw-r--r--debounce.pd28
-rw-r--r--degrees2mapping.pd25
-rw-r--r--disjoin.pd27
-rw-r--r--help/autoscale-help.pd44
-rw-r--r--help/curve_exp-help.pd57
-rw-r--r--help/curve_graph-help.pd27
-rw-r--r--help/curve_log-help.pd57
-rw-r--r--help/debounce-help.pd45
-rw-r--r--help/degrees2mapping-help.pd24
-rw-r--r--help/disjoin-help.pd19
-rw-r--r--help/join-help.pd19
-rw-r--r--help/mapping2degrees-help.pd23
-rw-r--r--help/mapping2radians-help.pd24
-rw-r--r--help/polar-help.pd40
-rw-r--r--help/radians2mapping-help.pd24
-rw-r--r--help/reverse-help.pd21
-rw-r--r--help/segment-help.pd33
-rw-r--r--join.pd25
-rw-r--r--mapping2degrees.pd31
-rw-r--r--mapping2radians.pd22
-rw-r--r--pd/autoscale.pd87
-rw-r--r--pd/curve_exp.pd11
-rw-r--r--pd/curve_graph.pd45
-rw-r--r--pd/curve_log.pd11
-rw-r--r--pd/curve_power.pd14
-rw-r--r--pd/curve_root.pd22
-rw-r--r--pd/debounce.pd28
-rw-r--r--pd/degrees2mapping.pd25
-rw-r--r--pd/disjoin.pd27
-rw-r--r--pd/join.pd25
-rw-r--r--pd/mapping2degrees.pd31
-rw-r--r--pd/mapping2radians.pd22
-rw-r--r--pd/polar.pd31
-rw-r--r--pd/radians2mapping.pd26
-rw-r--r--pd/reverse.pd13
-rw-r--r--pd/vector.pd31
-rw-r--r--polar.pd31
-rw-r--r--radians2mapping.pd26
-rw-r--r--reverse.pd13
-rw-r--r--vector.pd31
47 files changed, 1364 insertions, 0 deletions
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..07a3418
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,9 @@
+
+This is the beginnings of the "mapping" library, which is a combination of
+efforts of Cyrille Henry and Hans-Christoph Steiner. It draws from the hid_*
+classes, ds_/datastream classes, and the La-Kitchen classes for working with
+sensors.
+
+These classes are for creatively mapping data to something that you want to
+control.
+
diff --git a/autoscale.pd b/autoscale.pd
new file mode 100644
index 0000000..ddd295e
--- /dev/null
+++ b/autoscale.pd
@@ -0,0 +1,87 @@
+#N canvas 206 226 777 546 10;
+#X obj 45 30 inlet;
+#X obj 175 453 outlet;
+#X obj 235 268 f;
+#X text 262 268 min;
+#X text 360 269 max;
+#X obj 454 167 f \$1;
+#X obj 652 167 f \$2;
+#X obj 235 245 moses 0;
+#X obj 320 245 moses 0;
+#X obj 175 102 trigger float float float bang bang;
+#X obj 175 390 expr (($f1 - $f2) * (($f5 - $f4) / ($f3 - $f2))) + $f4
+;
+#X obj 326 205 oneshot;
+#X obj 364 226 f;
+#X obj 320 178 t f b f;
+#X obj 241 205 oneshot;
+#X obj 279 226 f;
+#X obj 235 178 t f b f;
+#X obj 384 269 + 1e-09;
+#X obj 478 213 ==;
+#X obj 478 233 sel 1;
+#X obj 545 77 loadbang;
+#X obj 478 299 print [autoscale];
+#X floatatom 472 189 5 0 0 0 - - -;
+#X obj 545 100 t b b;
+#X obj 478 256 oneshot;
+#X text 2 476 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 219 491 released under the GNU GPL;
+#X text 417 475 $Revision: 1.1 $$Date: 2006-01-29 05:43:33 $;
+#X text 417 488 $Author: eighthave $;
+#X obj 45 62 route reset;
+#X obj 45 81 bang;
+#X msg 45 129 0;
+#X msg 114 102 clear;
+#X text 172 47 these [oneshot] bits are just here to get the max/min
+tracking started;
+#X text 8 3 [autoscale];
+#X msg 478 278 using default range (0-1);
+#X obj 454 329 expr if ($f1 == $f2 \, 0 \, $f1) \; if ($f1 == $f2 \,
+1 \, $f2);
+#X connect 0 0 29 0;
+#X connect 2 0 7 1;
+#X connect 2 0 10 1;
+#X connect 5 0 18 0;
+#X connect 5 0 22 0;
+#X connect 5 0 36 0;
+#X connect 6 0 18 1;
+#X connect 6 0 36 1;
+#X connect 7 0 2 0;
+#X connect 8 1 17 0;
+#X connect 9 0 10 0;
+#X connect 9 1 16 0;
+#X connect 9 2 13 0;
+#X connect 9 3 5 0;
+#X connect 9 4 6 0;
+#X connect 10 0 1 0;
+#X connect 11 0 12 0;
+#X connect 12 0 8 1;
+#X connect 13 0 8 0;
+#X connect 13 1 11 0;
+#X connect 13 2 12 1;
+#X connect 14 0 15 0;
+#X connect 15 0 7 1;
+#X connect 16 0 7 0;
+#X connect 16 1 14 0;
+#X connect 16 2 15 1;
+#X connect 17 0 8 1;
+#X connect 17 0 10 2;
+#X connect 18 0 19 0;
+#X connect 19 0 24 0;
+#X connect 20 0 23 0;
+#X connect 23 0 5 0;
+#X connect 23 1 6 0;
+#X connect 24 0 35 0;
+#X connect 29 0 30 0;
+#X connect 29 1 9 0;
+#X connect 30 0 31 0;
+#X connect 30 0 32 0;
+#X connect 31 0 2 0;
+#X connect 31 0 12 0;
+#X connect 32 0 14 0;
+#X connect 32 0 11 0;
+#X connect 35 0 21 0;
+#X connect 36 0 10 3;
+#X connect 36 1 10 4;
diff --git a/curve_exp.pd b/curve_exp.pd
new file mode 100644
index 0000000..b7ca7a4
--- /dev/null
+++ b/curve_exp.pd
@@ -0,0 +1,11 @@
+#N canvas 225 325 499 325 10;
+#X obj 72 38 inlet;
+#X obj 72 258 outlet;
+#X text 120 38 input range: 0 to 1;
+#X text 128 258 output range: 0 to 1;
+#X text 7 9 [hid_exp];
+#X obj 73 142 dbtorms;
+#X obj 73 120 * 100;
+#X connect 0 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
diff --git a/curve_graph.pd b/curve_graph.pd
new file mode 100644
index 0000000..22b46a6
--- /dev/null
+++ b/curve_graph.pd
@@ -0,0 +1,45 @@
+#N canvas 606 208 100 116 10;
+#X obj 103 188 inlet;
+#N canvas 0 22 466 316 graph5 0;
+#X array \$0_ 100 float 2;
+#X coords 0 1 100 0 100 100 1;
+#X restore 0 16 graph;
+#X obj 198 378 outlet;
+#X text 238 311 gives a range of 0-100;
+#X text 245 379 output range 0 to 1;
+#X text 79 167 [hid_graph];
+#X obj 198 310 * 100;
+#X text 143 190 input range: 0 to 1;
+#X obj 103 237 route reset;
+#X obj 75 380 f;
+#X obj 45 380 +;
+#X msg 89 348 0;
+#X msg 45 348 1;
+#X obj 45 464 / 100;
+#X obj 45 441 trigger f f;
+#X obj 21 278 trigger bang bang;
+#X msg 21 303 100;
+#X obj 21 322 until;
+#X obj 198 333 tabread \$0_;
+#X obj 45 496 tabwrite \$0_;
+#X obj -7 229 loadbang;
+#X connect 0 0 8 0;
+#X connect 6 0 18 0;
+#X connect 8 0 15 0;
+#X connect 8 1 6 0;
+#X connect 9 0 10 1;
+#X connect 10 0 14 0;
+#X connect 10 0 9 0;
+#X connect 11 0 9 1;
+#X connect 11 0 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 19 0;
+#X connect 14 0 13 0;
+#X connect 14 1 19 1;
+#X connect 15 0 16 0;
+#X connect 15 1 11 0;
+#X connect 16 0 17 0;
+#X connect 17 0 12 0;
+#X connect 18 0 2 0;
+#X connect 20 0 15 0;
+#X coords 0 0 1 1 100 116 1;
diff --git a/curve_log.pd b/curve_log.pd
new file mode 100644
index 0000000..297f5f8
--- /dev/null
+++ b/curve_log.pd
@@ -0,0 +1,11 @@
+#N canvas 297 485 422 322 10;
+#X obj 31 45 inlet;
+#X obj 31 282 outlet;
+#X text 79 45 input range: 0 to 1;
+#X text 87 282 output range: 0 to 1;
+#X text 9 5 [hid_log];
+#X obj 30 145 rmstodb;
+#X obj 30 175 / 100;
+#X connect 0 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
diff --git a/curve_power.pd b/curve_power.pd
new file mode 100644
index 0000000..0332375
--- /dev/null
+++ b/curve_power.pd
@@ -0,0 +1,14 @@
+#N canvas 612 444 456 373 10;
+#X obj 42 53 inlet;
+#X obj 42 230 outlet;
+#X text 5 14 input range: -1 to 1;
+#X obj 43 182 pow;
+#X text 98 229 output range: -1 to 1;
+#X obj 138 53 inlet;
+#X obj 146 106 float_argument \$1 1;
+#X obj 146 84 loadbang;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 6 0;
diff --git a/curve_root.pd b/curve_root.pd
new file mode 100644
index 0000000..a75bdc2
--- /dev/null
+++ b/curve_root.pd
@@ -0,0 +1,22 @@
+#N canvas 295 229 460 377 10;
+#X obj 40 32 inlet;
+#X obj 40 299 outlet;
+#X obj 40 94 min 1;
+#X text 5 6 input range: -1 to 1;
+#X obj 40 114 max -1;
+#X obj 41 271 pow;
+#X text 96 298 output range: -1 to 1;
+#X obj 58 246 /;
+#X msg 58 226 1 \$1;
+#X obj 142 33 inlet;
+#X obj 155 107 float_argument \$1 1;
+#X obj 155 86 loadbang;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 7 0 5 1;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 10 0 8 0;
+#X connect 11 0 10 0;
diff --git a/debounce.pd b/debounce.pd
new file mode 100644
index 0000000..09092c3
--- /dev/null
+++ b/debounce.pd
@@ -0,0 +1,28 @@
+#N canvas 132 316 478 432 10;
+#X obj 38 43 inlet;
+#X obj 252 108 f \$1;
+#X obj 252 85 loadbang;
+#X obj 226 33 inlet;
+#X obj 251 132 select 0;
+#X text 274 34 delay between state change;
+#X obj 62 381 outlet;
+#X obj 61 325 f;
+#X text 298 152 set default;
+#X obj 246 189 send \$0-delay;
+#X obj 157 271 delay;
+#X obj 187 248 receive \$0-delay;
+#X text 80 31 float input;
+#X text 120 378 debounced float output;
+#X msg 250 152 10;
+#X obj 100 103 change;
+#X connect 0 0 7 1;
+#X connect 0 0 15 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 14 0;
+#X connect 4 1 9 0;
+#X connect 7 0 6 0;
+#X connect 10 0 7 0;
+#X connect 11 0 10 1;
+#X connect 14 0 9 0;
diff --git a/degrees2mapping.pd b/degrees2mapping.pd
new file mode 100644
index 0000000..ee9ac47
--- /dev/null
+++ b/degrees2mapping.pd
@@ -0,0 +1,25 @@
+#N canvas 380 212 444 356 10;
+#X obj 88 30 inlet;
+#X obj 89 264 outlet;
+#X text 232 311 released under the GNU GPL;
+#X text 15 297 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 143 264 output range: 0 to 360 \, 0 = north/top;
+#X text 19 9 [deg2hid];
+#X text 129 28 input range: 0 to 360 \, 0 = east/right;
+#X obj 88 170 / 360;
+#X text 162 108 % is an int operation;
+#X text 169 126 this saves accuracy;
+#X obj 89 121 % 3.6e+07;
+#X obj 89 142 / 100000;
+#X obj 89 100 * 100000;
+#X obj 45 210 moses 0;
+#X obj 45 230 + 1;
+#X connect 0 0 12 0;
+#X connect 7 0 13 0;
+#X connect 10 0 11 0;
+#X connect 11 0 7 0;
+#X connect 12 0 10 0;
+#X connect 13 0 14 0;
+#X connect 13 1 1 0;
+#X connect 14 0 1 0;
diff --git a/disjoin.pd b/disjoin.pd
new file mode 100644
index 0000000..a74cf43
--- /dev/null
+++ b/disjoin.pd
@@ -0,0 +1,27 @@
+#N canvas 0 22 454 304 10;
+#X obj 62 28 inlet;
+#X obj 62 53 moses \$1;
+#X obj 62 204 outlet;
+#X obj 113 203 outlet;
+#X obj 62 100 / \$1;
+#X obj 152 27 inlet;
+#X obj 113 101 - \$1;
+#X obj 177 83 t b f;
+#X obj 161 63 loadbang;
+#X obj 113 158 / 1;
+#X msg 177 105 1;
+#X obj 177 129 - \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 1;
+#X connect 5 0 6 1;
+#X connect 5 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 10 0;
+#X connect 7 1 11 1;
+#X connect 8 0 10 0;
+#X connect 9 0 3 0;
+#X connect 10 0 11 0;
+#X connect 11 0 9 1;
diff --git a/help/autoscale-help.pd b/help/autoscale-help.pd
new file mode 100644
index 0000000..ae8aaf7
--- /dev/null
+++ b/help/autoscale-help.pd
@@ -0,0 +1,44 @@
+#N canvas 229 80 464 537 10;
+#X floatatom 26 76 5 0 0 0 - - -;
+#X floatatom 26 140 0 0 0 0 - - -;
+#X obj 68 258 autoscale;
+#X obj 2 -10 cnv 15 450 20 empty empty [autoscale] 2 11 1 18 -233017
+-66577 0;
+#X text 18 23 [autoscale] scales a stream of numbers based on an output
+range set as arguments \, and an input range which is set dynamically.
+;
+#X floatatom 68 237 5 0 0 0 - - -;
+#X obj 71 281 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X text 17 441 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 234 455 released under the GNU GPL;
+#X floatatom 150 140 0 0 0 0 - - -;
+#X floatatom 297 140 0 0 0 0 - - -;
+#X obj 213 71 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X text 17 474 $Revision: 1.1 $$Date: 2006-01-29 05:43:33 $;
+#X text 18 487 $Author: eighthave $;
+#X text 25 324 The [reset( message resets the stored max and min to
+zero.;
+#X floatatom 46 348 5 0 0 0 - - -;
+#X obj 71 401 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X msg 96 346 reset;
+#X obj 150 110 autoscale -0.01 0.01;
+#X obj 297 110 autoscale -4095 4095;
+#X obj 68 378 autoscale;
+#X text 13 181 If you use [autoscale] with no arguments \, then the
+output range defaults to 0-1.;
+#X obj 26 110 autoscale;
+#X connect 0 0 22 0;
+#X connect 2 0 6 0;
+#X connect 5 0 2 0;
+#X connect 11 0 18 0;
+#X connect 11 0 19 0;
+#X connect 15 0 20 0;
+#X connect 17 0 20 0;
+#X connect 18 0 9 0;
+#X connect 19 0 10 0;
+#X connect 20 0 16 0;
+#X connect 22 0 1 0;
diff --git a/help/curve_exp-help.pd b/help/curve_exp-help.pd
new file mode 100644
index 0000000..c37b7bc
--- /dev/null
+++ b/help/curve_exp-help.pd
@@ -0,0 +1,57 @@
+#N canvas 567 104 476 357 10;
+#X obj 5 2 cnv 15 450 20 empty empty [curve_exp] 2 11 1 18 -233017 -66577
+0;
+#X msg 422 3 pddp;
+#X text 27 300 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 244 314 released under the GNU GPL;
+#X text 98 271 For more info:;
+#X obj 202 269 pddp_open all_about_curve_mapping;
+#X floatatom 25 123 8 0 0 0 - - -;
+#X floatatom 25 184 8 0 0 0 - - -;
+#X obj 28 201 hsl 200 15 0 1 0 0 empty empty empty 22 8 1 12 -262144
+-1 -1 0 1;
+#X obj 28 103 hsl 200 15 0 1 0 0 empty empty empty 22 8 1 12 -261681
+-1 -1 0 1;
+#N canvas 0 22 450 300 graph1 0;
+#X array curve_exp 100 float 0;
+#X coords 0 1 99 0 100 100 1;
+#X restore 321 111 graph;
+#N canvas 266 69 331 321 draw_array 0;
+#X msg 57 52 bang;
+#X obj 57 73 until;
+#X text 88 52 start;
+#X obj 57 95 f;
+#X obj 86 95 + 1;
+#X obj 132 97 sel 0;
+#X obj 86 117 mod 100;
+#X obj 57 150 t f f;
+#X obj 94 177 s array_index;
+#X obj 170 262 r array_index;
+#X obj 57 13 loadbang;
+#X obj 57 207 / 100;
+#X text 99 207 [hid] output range: 0 to 1;
+#X obj 56 283 tabwrite curve_exp;
+#X obj 56 233 curve_exp;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 7 0;
+#X connect 4 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 0 3 1;
+#X connect 6 0 5 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 9 0 13 1;
+#X connect 10 0 0 0;
+#X connect 11 0 14 0;
+#X connect 14 0 13 0;
+#X restore 321 78 pd draw_array;
+#X text 17 39 This object maps the input range to a exponential curve
+\, the inverse of a logarithmic curve.;
+#X obj 25 153 curve_exp;
+#X connect 6 0 13 0;
+#X connect 7 0 8 0;
+#X connect 9 0 6 0;
+#X connect 13 0 7 0;
diff --git a/help/curve_graph-help.pd b/help/curve_graph-help.pd
new file mode 100644
index 0000000..ee26584
--- /dev/null
+++ b/help/curve_graph-help.pd
@@ -0,0 +1,27 @@
+#N canvas 61 248 495 470 10;
+#X obj 5 2 cnv 15 450 20 empty empty [curve_graph] 2 11 1 18 -233017
+-66577 0;
+#X msg 422 3 pddp;
+#X text 27 410 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 244 424 released under the GNU GPL;
+#X text 98 381 For more info:;
+#X obj 202 379 pddp_open all_about_curve_mapping;
+#X msg 19 150 reset;
+#X floatatom 95 163 5 0 0 0 - - -;
+#X floatatom 94 314 5 0 0 0 - - -;
+#X obj 97 331 hsl 250 15 0 1 0 0 empty empty empty 22 8 1 12 -262144
+-1 -1 0 1;
+#X obj 98 143 hsl 250 15 0 1 0 0 empty empty empty 22 8 1 12 -261681
+-1 -1 0 1;
+#X obj 94 187 curve_graph;
+#X text 18 33 This object allows you to draw an arbitrary curve \,
+which is then applied to the input range. To change the curve \, click
+anywhere on the black diagonal line and start dragging.;
+#X text 19 86 There are 100 points in [curve_graph] \, each one pixel
+in size.;
+#X connect 6 0 11 0;
+#X connect 7 0 11 0;
+#X connect 8 0 9 0;
+#X connect 10 0 7 0;
+#X connect 11 0 8 0;
diff --git a/help/curve_log-help.pd b/help/curve_log-help.pd
new file mode 100644
index 0000000..800816f
--- /dev/null
+++ b/help/curve_log-help.pd
@@ -0,0 +1,57 @@
+#N canvas 127 78 476 357 10;
+#X obj 5 2 cnv 15 450 20 empty empty [curve_log] 2 11 1 18 -233017 -66577
+0;
+#X msg 422 3 pddp;
+#X text 27 300 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 244 314 released under the GNU GPL;
+#X text 98 271 For more info:;
+#X obj 202 269 pddp_open all_about_curve_mapping;
+#X floatatom 25 123 8 0 0 0 - - -;
+#X floatatom 25 184 8 0 0 0 - - -;
+#X obj 28 201 hsl 200 15 0 1 0 0 empty empty empty 22 8 1 12 -262144
+-1 -1 0 1;
+#X obj 28 103 hsl 200 15 0 1 0 0 empty empty empty 22 8 1 12 -261681
+-1 -1 0 1;
+#N canvas 0 22 450 300 graph1 0;
+#X array curve_log 100 float 0;
+#X coords 0 1 99 0 100 100 1;
+#X restore 321 111 graph;
+#N canvas 266 69 335 325 draw_array 0;
+#X msg 57 52 bang;
+#X obj 57 73 until;
+#X text 88 52 start;
+#X obj 57 95 f;
+#X obj 86 95 + 1;
+#X obj 132 97 sel 0;
+#X obj 86 117 mod 100;
+#X obj 57 150 t f f;
+#X obj 94 177 s array_index;
+#X obj 170 262 r array_index;
+#X obj 57 13 loadbang;
+#X obj 57 207 / 100;
+#X text 99 207 [hid] output range: 0 to 1;
+#X obj 56 283 tabwrite curve_log;
+#X obj 56 233 curve_log;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 7 0;
+#X connect 4 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 0 3 1;
+#X connect 6 0 5 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 9 0 13 1;
+#X connect 10 0 0 0;
+#X connect 11 0 14 0;
+#X connect 14 0 13 0;
+#X restore 321 78 pd draw_array;
+#X text 17 40 This object maps the input range to a logarithmic curve.
+Humans perceive pitch and amplitude on a logarithmic scale.;
+#X obj 25 153 curve_log;
+#X connect 6 0 13 0;
+#X connect 7 0 8 0;
+#X connect 9 0 6 0;
+#X connect 13 0 7 0;
diff --git a/help/debounce-help.pd b/help/debounce-help.pd
new file mode 100644
index 0000000..af80552
--- /dev/null
+++ b/help/debounce-help.pd
@@ -0,0 +1,45 @@
+#N canvas 429 170 470 540 10;
+#X obj 2 2 cnv 15 450 20 empty empty [debounce] 2 11 1 18 -233017 -66577
+0;
+#X msg 418 3 pddp;
+#X text 234 467 released under the GNU GPL;
+#X text 17 486 $Revision: 1.1 $$Date: 2006-01-29 05:43:33 $;
+#X text 18 499 $Author: eighthave $;
+#X text 17 453 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 122 78 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 123 102 t b b;
+#X obj 123 142 delay;
+#X obj 63 121 bang;
+#X obj 122 202 tgl 35 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X floatatom 166 203 5 0 0 0 - - -;
+#X obj 122 271 tgl 35 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 123 166 random 2;
+#X msg 85 78 stop;
+#X obj 244 211 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 240 277 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 26 387 Right now \, it handles "floats" and "bangs". Everything
+else is converted to a "bang".;
+#X obj 152 122 random 1000;
+#X obj 237 247 debounce 900;
+#X obj 122 246 debounce 900;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 1 18 0;
+#X connect 8 0 9 0;
+#X connect 8 0 13 0;
+#X connect 8 0 15 0;
+#X connect 9 0 7 0;
+#X connect 10 0 20 0;
+#X connect 13 0 10 0;
+#X connect 13 0 11 0;
+#X connect 14 0 8 0;
+#X connect 15 0 19 0;
+#X connect 18 0 8 1;
+#X connect 19 0 16 0;
+#X connect 20 0 12 0;
diff --git a/help/degrees2mapping-help.pd b/help/degrees2mapping-help.pd
new file mode 100644
index 0000000..562b4e2
--- /dev/null
+++ b/help/degrees2mapping-help.pd
@@ -0,0 +1,24 @@
+#N canvas 82 386 483 323 10;
+#X obj 5 2 cnv 15 450 20 empty empty [deg2hid] 2 11 1 18 -233017 -66577
+0;
+#X msg 422 3 pddp;
+#X text 254 269 released under the GNU GPL;
+#X text 185 228 For more info:;
+#X obj 289 226 pddp_open mapping-about;
+#X text 40 254 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 300 168 related objects:;
+#X obj 333 184 rad2hid;
+#X floatatom 56 203 7 0 0 1 - - -;
+#X obj 59 103 hsl 300 15 -720 720 0 0 empty empty degrees 6 7 1 10
+-262131 -1 -1 3100 0;
+#X floatatom 82 133 5 0 0 0 - - -;
+#X text 26 34 This object converts numbers from the [hid] range (0
+to 1) to radians (-pi to pi) with the 0's lining up in the same place.
+;
+#X obj 274 184 hid2rad;
+#X obj 392 184 hid2deg;
+#X obj 56 168 deg2hid;
+#X connect 9 0 10 0;
+#X connect 9 0 14 0;
+#X connect 14 0 8 0;
diff --git a/help/disjoin-help.pd b/help/disjoin-help.pd
new file mode 100644
index 0000000..eb8c71f
--- /dev/null
+++ b/help/disjoin-help.pd
@@ -0,0 +1,19 @@
+#N canvas 759 140 610 671 10;
+#X obj 33 34 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 33 205 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 112 205 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 33 396 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 134 339 5 0 0 0 - - -;
+#X obj 33 175 disjoin 0.3;
+#X obj 33 364 join 0.3;
+#X connect 0 0 5 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 1;
+#X connect 4 0 6 2;
+#X connect 5 0 1 0;
+#X connect 5 1 2 0;
+#X connect 6 0 3 0;
diff --git a/help/join-help.pd b/help/join-help.pd
new file mode 100644
index 0000000..778cdc2
--- /dev/null
+++ b/help/join-help.pd
@@ -0,0 +1,19 @@
+#N canvas 972 276 508 607 10;
+#X obj 82 37 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 82 208 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 161 208 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 82 399 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X floatatom 197 342 5 0 0 0 - - -;
+#X obj 82 175 disjoin 0.3;
+#X obj 82 368 join 0.3;
+#X connect 0 0 5 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 1;
+#X connect 4 0 6 2;
+#X connect 5 0 1 0;
+#X connect 5 1 2 0;
+#X connect 6 0 3 0;
diff --git a/help/mapping2degrees-help.pd b/help/mapping2degrees-help.pd
new file mode 100644
index 0000000..b800b4f
--- /dev/null
+++ b/help/mapping2degrees-help.pd
@@ -0,0 +1,23 @@
+#N canvas 589 387 483 323 10;
+#X obj 5 2 cnv 15 450 20 empty empty [hid2deg] 2 11 1 18 -233017 -66577
+0;
+#X msg 422 3 pddp;
+#X text 254 269 released under the GNU GPL;
+#X text 185 228 For more info:;
+#X obj 289 226 pddp_open mapping-about;
+#X text 40 254 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 300 168 related objects:;
+#X obj 333 184 rad2hid;
+#X obj 392 184 deg2hid;
+#X floatatom 69 185 7 0 0 1 degrees - -;
+#X obj 72 85 hsl 128 15 0 1 0 0 empty empty hid 6 7 1 10 -262131 -1
+-1 500 0;
+#X floatatom 95 115 5 0 0 0 - - -;
+#X obj 274 184 hid2rad;
+#X obj 69 150 hid2deg;
+#X text 26 34 This object converts numbers from the [hid] range (0
+to 1) to degrees (0 to 360) with the 0 being north.;
+#X connect 10 0 11 0;
+#X connect 10 0 13 0;
+#X connect 13 0 9 0;
diff --git a/help/mapping2radians-help.pd b/help/mapping2radians-help.pd
new file mode 100644
index 0000000..2698127
--- /dev/null
+++ b/help/mapping2radians-help.pd
@@ -0,0 +1,24 @@
+#N canvas 633 307 471 311 10;
+#X obj 5 2 cnv 15 450 20 empty empty [hid2rad] 2 11 1 18 -233017 -66577
+0;
+#X msg 422 3 pddp;
+#X text 254 269 released under the GNU GPL;
+#X text 185 228 For more info:;
+#X obj 289 226 pddp_open mapping-about;
+#X text 40 254 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 300 168 related objects:;
+#X obj 273 184 rad2hid;
+#X obj 332 184 deg2hid;
+#X obj 391 184 hid2deg;
+#X obj 69 150 hid2rad;
+#X floatatom 69 185 9 0 0 1 radians - -;
+#X obj 72 85 hsl 128 15 0 1 0 0 empty empty hid 6 7 1 10 -262131 -1
+-1 0 0;
+#X floatatom 95 115 5 0 0 0 - - -;
+#X text 26 34 This object converts numbers from the [hid] range (0
+to 1) to radians (-pi to pi) with the 0's lining up in the same place.
+;
+#X connect 10 0 11 0;
+#X connect 12 0 13 0;
+#X connect 12 0 10 0;
diff --git a/help/polar-help.pd b/help/polar-help.pd
new file mode 100644
index 0000000..9f35ce6
--- /dev/null
+++ b/help/polar-help.pd
@@ -0,0 +1,40 @@
+#N canvas 601 232 482 455 10;
+#X obj 5 2 cnv 15 450 20 empty empty [hid_polar] 2 11 1 18 -233017
+-66577 0;
+#X msg 422 3 pddp;
+#X text 244 411 released under the GNU GPL;
+#X floatatom 100 248 5 0 0 0 - - -;
+#X floatatom 100 335 7 0 0 0 radius-> - -;
+#X text 124 370 For more info:;
+#X obj 228 368 pddp_open mapping-about;
+#X obj 100 295 hid_polar;
+#X text 27 397 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 101 161 hsl 128 15 0 1 0 0 empty empty x-axis 133 7 1 10 -225280
+-1 -1 0 0;
+#X obj 157 103 vsl 15 128 0 1 0 0 empty empty y-axis -6 -9 1 10 -261681
+-1 -1 0 0;
+#X floatatom 159 335 7 0 0 1 <-angle - -;
+#X floatatom 158 248 5 0 0 0 - - -;
+#X obj 157 265 t b f;
+#X obj 334 335 polar-joystick;
+#X text 275 273 related objects:;
+#X text 273 334 example:;
+#X msg 97 86 0.5;
+#X text 43 86 center:;
+#X text 17 29 Converts cartesian coordinates(x \, y) to polar coordinates
+(radius \, angle). The angle is in radians (-pi to pi). The angle 0
+is at cartesian (1 \, 0.5) or to the right.;
+#X obj 361 293 hid_spiral;
+#X obj 245 293 hid2rad;
+#X obj 303 293 hid2deg;
+#X connect 3 0 7 0;
+#X connect 7 0 4 0;
+#X connect 7 1 11 0;
+#X connect 9 0 3 0;
+#X connect 10 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 13 1 7 1;
+#X connect 17 0 9 0;
+#X connect 17 0 10 0;
diff --git a/help/radians2mapping-help.pd b/help/radians2mapping-help.pd
new file mode 100644
index 0000000..9e0b6f1
--- /dev/null
+++ b/help/radians2mapping-help.pd
@@ -0,0 +1,24 @@
+#N canvas 168 236 533 333 10;
+#X obj 5 2 cnv 15 450 20 empty empty [rad2hid] 2 11 1 18 -233017 -66577
+0;
+#X msg 422 3 pddp;
+#X text 254 269 released under the GNU GPL;
+#X text 144 228 For more info:;
+#X text 40 254 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 254 186 related objects:;
+#X floatatom 69 195 5 0 0 1 hid - -;
+#X obj 72 95 hsl 128 15 -3.14159 3.14159 0 0 empty empty radians 6
+7 1 10 -262131 -1 -1 0 0;
+#X floatatom 95 125 9 0 0 0 - - -;
+#X obj 69 160 rad2hid;
+#X text 21 35 This object converts numbers from radians (-pi to pi)
+to the [hid] range (0 to 1) with the 0's lining up in the same place.
+;
+#X obj 252 202 radians2mapping;
+#X obj 140 202 degrees2mapping;
+#X obj 365 202 mapping2degrees;
+#X obj 248 226 pddp_open mapping-about;
+#X connect 7 0 8 0;
+#X connect 7 0 9 0;
+#X connect 9 0 6 0;
diff --git a/help/reverse-help.pd b/help/reverse-help.pd
new file mode 100644
index 0000000..6dc8f92
--- /dev/null
+++ b/help/reverse-help.pd
@@ -0,0 +1,21 @@
+#N canvas 550 202 473 316 10;
+#X obj 5 2 cnv 15 450 20 empty empty [reverse] 2 11 1 18 -233017
+-66577 0;
+#X msg 422 3 pddp;
+#X text 27 270 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 244 284 released under the GNU GPL;
+#X floatatom 153 90 5 0 0 0 - - -;
+#X floatatom 153 166 5 0 0 0 - - -;
+#X obj 156 71 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 156 183 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X text 27 43 Inverts the stream of numbers.;
+#X text 98 233 For more info:;
+#X obj 202 231 pddp_open mapping-about;
+#X obj 153 126 reverse;
+#X connect 4 0 11 0;
+#X connect 5 0 7 0;
+#X connect 6 0 4 0;
+#X connect 11 0 5 0;
diff --git a/help/segment-help.pd b/help/segment-help.pd
new file mode 100644
index 0000000..588860c
--- /dev/null
+++ b/help/segment-help.pd
@@ -0,0 +1,33 @@
+#N canvas 15 380 668 314 10;
+#X obj 62 198 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 11010 1;
+#X obj 195 198 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 97 1;
+#X obj 328 198 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 21 1;
+#X obj 461 198 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 8322 1;
+#X obj 62 28 hsl 527 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 11400 1;
+#X msg 189 88 2;
+#X msg 250 87 6;
+#X msg 219 87 4;
+#X floatatom 60 222 5 0 0 0 - - -;
+#X floatatom 196 220 5 0 0 0 - - -;
+#X floatatom 328 222 5 0 0 0 - - -;
+#X floatatom 459 220 5 0 0 0 - - -;
+#X floatatom 46 51 5 0 0 0 - - -;
+#X obj 154 123 segment 4;
+#X connect 0 0 8 0;
+#X connect 1 0 9 0;
+#X connect 2 0 10 0;
+#X connect 3 0 11 0;
+#X connect 4 0 12 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 1;
+#X connect 6 0 13 1;
+#X connect 7 0 13 1;
+#X connect 13 0 0 0;
+#X connect 13 1 1 0;
+#X connect 13 2 2 0;
+#X connect 13 3 3 0;
diff --git a/join.pd b/join.pd
new file mode 100644
index 0000000..79c8b80
--- /dev/null
+++ b/join.pd
@@ -0,0 +1,25 @@
+#N canvas 492 503 452 397 10;
+#X obj 32 24 inlet;
+#X obj 78 25 inlet;
+#X obj 125 25 inlet;
+#X obj 32 215 outlet;
+#X obj 125 71 t b f;
+#X obj 142 48 loadbang;
+#X msg 125 93 1;
+#X obj 125 117 - \$1;
+#X obj 78 180 + \$1;
+#X obj 32 119 * \$1;
+#X obj 78 153 *;
+#X connect 0 0 9 0;
+#X connect 1 0 10 0;
+#X connect 2 0 4 0;
+#X connect 2 0 8 1;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 4 1 7 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 1;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 10 0 8 0;
diff --git a/mapping2degrees.pd b/mapping2degrees.pd
new file mode 100644
index 0000000..af40bca
--- /dev/null
+++ b/mapping2degrees.pd
@@ -0,0 +1,31 @@
+#N canvas 163 40 444 356 10;
+#X obj 88 30 inlet;
+#X obj 89 264 outlet;
+#X obj 88 56 min 1;
+#X obj 88 74 max 0;
+#X text 133 63 its a [hid] object \, so limit input range;
+#X text 232 311 released under the GNU GPL;
+#X text 15 297 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 19 9 [hid2deg];
+#X text 129 28 input range: 0 to 1 \, 0 = east/right;
+#X text 143 264 output range: 0 to 360 \, 0 = north/top;
+#X obj 88 100 * 360;
+#X text 162 189 % is an int operation;
+#X text 169 207 this saves accuracy;
+#X obj 88 148 abs;
+#X obj 88 123 - 450;
+#X text 131 122 <- rotate zero to north;
+#X text 130 148 <- change direction of rotation;
+#X obj 89 202 % 3.6e+07;
+#X obj 89 223 / 100000;
+#X obj 89 181 * 100000;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 10 0;
+#X connect 10 0 14 0;
+#X connect 13 0 19 0;
+#X connect 14 0 13 0;
+#X connect 17 0 18 0;
+#X connect 18 0 1 0;
+#X connect 19 0 17 0;
diff --git a/mapping2radians.pd b/mapping2radians.pd
new file mode 100644
index 0000000..b2c3f19
--- /dev/null
+++ b/mapping2radians.pd
@@ -0,0 +1,22 @@
+#N canvas 287 246 432 344 10;
+#X obj 88 30 inlet;
+#X obj 89 264 outlet;
+#X text 19 9 [hid2rad];
+#X obj 89 198 * 6.28318;
+#X obj 88 101 moses 0.5;
+#X obj 88 56 min 1;
+#X obj 88 74 max 0;
+#X obj 147 133 - 1;
+#X text 133 63 its a [hid] object \, so limit input range;
+#X text 129 28 input range: 0 to 1;
+#X text 143 264 output range: -pi to pi;
+#X text 232 311 released under the GNU GPL;
+#X text 15 297 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 5 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 4 1 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
diff --git a/pd/autoscale.pd b/pd/autoscale.pd
new file mode 100644
index 0000000..ddd295e
--- /dev/null
+++ b/pd/autoscale.pd
@@ -0,0 +1,87 @@
+#N canvas 206 226 777 546 10;
+#X obj 45 30 inlet;
+#X obj 175 453 outlet;
+#X obj 235 268 f;
+#X text 262 268 min;
+#X text 360 269 max;
+#X obj 454 167 f \$1;
+#X obj 652 167 f \$2;
+#X obj 235 245 moses 0;
+#X obj 320 245 moses 0;
+#X obj 175 102 trigger float float float bang bang;
+#X obj 175 390 expr (($f1 - $f2) * (($f5 - $f4) / ($f3 - $f2))) + $f4
+;
+#X obj 326 205 oneshot;
+#X obj 364 226 f;
+#X obj 320 178 t f b f;
+#X obj 241 205 oneshot;
+#X obj 279 226 f;
+#X obj 235 178 t f b f;
+#X obj 384 269 + 1e-09;
+#X obj 478 213 ==;
+#X obj 478 233 sel 1;
+#X obj 545 77 loadbang;
+#X obj 478 299 print [autoscale];
+#X floatatom 472 189 5 0 0 0 - - -;
+#X obj 545 100 t b b;
+#X obj 478 256 oneshot;
+#X text 2 476 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 219 491 released under the GNU GPL;
+#X text 417 475 $Revision: 1.1 $$Date: 2006-01-29 05:43:33 $;
+#X text 417 488 $Author: eighthave $;
+#X obj 45 62 route reset;
+#X obj 45 81 bang;
+#X msg 45 129 0;
+#X msg 114 102 clear;
+#X text 172 47 these [oneshot] bits are just here to get the max/min
+tracking started;
+#X text 8 3 [autoscale];
+#X msg 478 278 using default range (0-1);
+#X obj 454 329 expr if ($f1 == $f2 \, 0 \, $f1) \; if ($f1 == $f2 \,
+1 \, $f2);
+#X connect 0 0 29 0;
+#X connect 2 0 7 1;
+#X connect 2 0 10 1;
+#X connect 5 0 18 0;
+#X connect 5 0 22 0;
+#X connect 5 0 36 0;
+#X connect 6 0 18 1;
+#X connect 6 0 36 1;
+#X connect 7 0 2 0;
+#X connect 8 1 17 0;
+#X connect 9 0 10 0;
+#X connect 9 1 16 0;
+#X connect 9 2 13 0;
+#X connect 9 3 5 0;
+#X connect 9 4 6 0;
+#X connect 10 0 1 0;
+#X connect 11 0 12 0;
+#X connect 12 0 8 1;
+#X connect 13 0 8 0;
+#X connect 13 1 11 0;
+#X connect 13 2 12 1;
+#X connect 14 0 15 0;
+#X connect 15 0 7 1;
+#X connect 16 0 7 0;
+#X connect 16 1 14 0;
+#X connect 16 2 15 1;
+#X connect 17 0 8 1;
+#X connect 17 0 10 2;
+#X connect 18 0 19 0;
+#X connect 19 0 24 0;
+#X connect 20 0 23 0;
+#X connect 23 0 5 0;
+#X connect 23 1 6 0;
+#X connect 24 0 35 0;
+#X connect 29 0 30 0;
+#X connect 29 1 9 0;
+#X connect 30 0 31 0;
+#X connect 30 0 32 0;
+#X connect 31 0 2 0;
+#X connect 31 0 12 0;
+#X connect 32 0 14 0;
+#X connect 32 0 11 0;
+#X connect 35 0 21 0;
+#X connect 36 0 10 3;
+#X connect 36 1 10 4;
diff --git a/pd/curve_exp.pd b/pd/curve_exp.pd
new file mode 100644
index 0000000..b7ca7a4
--- /dev/null
+++ b/pd/curve_exp.pd
@@ -0,0 +1,11 @@
+#N canvas 225 325 499 325 10;
+#X obj 72 38 inlet;
+#X obj 72 258 outlet;
+#X text 120 38 input range: 0 to 1;
+#X text 128 258 output range: 0 to 1;
+#X text 7 9 [hid_exp];
+#X obj 73 142 dbtorms;
+#X obj 73 120 * 100;
+#X connect 0 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
diff --git a/pd/curve_graph.pd b/pd/curve_graph.pd
new file mode 100644
index 0000000..22b46a6
--- /dev/null
+++ b/pd/curve_graph.pd
@@ -0,0 +1,45 @@
+#N canvas 606 208 100 116 10;
+#X obj 103 188 inlet;
+#N canvas 0 22 466 316 graph5 0;
+#X array \$0_ 100 float 2;
+#X coords 0 1 100 0 100 100 1;
+#X restore 0 16 graph;
+#X obj 198 378 outlet;
+#X text 238 311 gives a range of 0-100;
+#X text 245 379 output range 0 to 1;
+#X text 79 167 [hid_graph];
+#X obj 198 310 * 100;
+#X text 143 190 input range: 0 to 1;
+#X obj 103 237 route reset;
+#X obj 75 380 f;
+#X obj 45 380 +;
+#X msg 89 348 0;
+#X msg 45 348 1;
+#X obj 45 464 / 100;
+#X obj 45 441 trigger f f;
+#X obj 21 278 trigger bang bang;
+#X msg 21 303 100;
+#X obj 21 322 until;
+#X obj 198 333 tabread \$0_;
+#X obj 45 496 tabwrite \$0_;
+#X obj -7 229 loadbang;
+#X connect 0 0 8 0;
+#X connect 6 0 18 0;
+#X connect 8 0 15 0;
+#X connect 8 1 6 0;
+#X connect 9 0 10 1;
+#X connect 10 0 14 0;
+#X connect 10 0 9 0;
+#X connect 11 0 9 1;
+#X connect 11 0 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 19 0;
+#X connect 14 0 13 0;
+#X connect 14 1 19 1;
+#X connect 15 0 16 0;
+#X connect 15 1 11 0;
+#X connect 16 0 17 0;
+#X connect 17 0 12 0;
+#X connect 18 0 2 0;
+#X connect 20 0 15 0;
+#X coords 0 0 1 1 100 116 1;
diff --git a/pd/curve_log.pd b/pd/curve_log.pd
new file mode 100644
index 0000000..297f5f8
--- /dev/null
+++ b/pd/curve_log.pd
@@ -0,0 +1,11 @@
+#N canvas 297 485 422 322 10;
+#X obj 31 45 inlet;
+#X obj 31 282 outlet;
+#X text 79 45 input range: 0 to 1;
+#X text 87 282 output range: 0 to 1;
+#X text 9 5 [hid_log];
+#X obj 30 145 rmstodb;
+#X obj 30 175 / 100;
+#X connect 0 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
diff --git a/pd/curve_power.pd b/pd/curve_power.pd
new file mode 100644
index 0000000..0332375
--- /dev/null
+++ b/pd/curve_power.pd
@@ -0,0 +1,14 @@
+#N canvas 612 444 456 373 10;
+#X obj 42 53 inlet;
+#X obj 42 230 outlet;
+#X text 5 14 input range: -1 to 1;
+#X obj 43 182 pow;
+#X text 98 229 output range: -1 to 1;
+#X obj 138 53 inlet;
+#X obj 146 106 float_argument \$1 1;
+#X obj 146 84 loadbang;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 6 0;
diff --git a/pd/curve_root.pd b/pd/curve_root.pd
new file mode 100644
index 0000000..a75bdc2
--- /dev/null
+++ b/pd/curve_root.pd
@@ -0,0 +1,22 @@
+#N canvas 295 229 460 377 10;
+#X obj 40 32 inlet;
+#X obj 40 299 outlet;
+#X obj 40 94 min 1;
+#X text 5 6 input range: -1 to 1;
+#X obj 40 114 max -1;
+#X obj 41 271 pow;
+#X text 96 298 output range: -1 to 1;
+#X obj 58 246 /;
+#X msg 58 226 1 \$1;
+#X obj 142 33 inlet;
+#X obj 155 107 float_argument \$1 1;
+#X obj 155 86 loadbang;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 7 0 5 1;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 10 0 8 0;
+#X connect 11 0 10 0;
diff --git a/pd/debounce.pd b/pd/debounce.pd
new file mode 100644
index 0000000..09092c3
--- /dev/null
+++ b/pd/debounce.pd
@@ -0,0 +1,28 @@
+#N canvas 132 316 478 432 10;
+#X obj 38 43 inlet;
+#X obj 252 108 f \$1;
+#X obj 252 85 loadbang;
+#X obj 226 33 inlet;
+#X obj 251 132 select 0;
+#X text 274 34 delay between state change;
+#X obj 62 381 outlet;
+#X obj 61 325 f;
+#X text 298 152 set default;
+#X obj 246 189 send \$0-delay;
+#X obj 157 271 delay;
+#X obj 187 248 receive \$0-delay;
+#X text 80 31 float input;
+#X text 120 378 debounced float output;
+#X msg 250 152 10;
+#X obj 100 103 change;
+#X connect 0 0 7 1;
+#X connect 0 0 15 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 14 0;
+#X connect 4 1 9 0;
+#X connect 7 0 6 0;
+#X connect 10 0 7 0;
+#X connect 11 0 10 1;
+#X connect 14 0 9 0;
diff --git a/pd/degrees2mapping.pd b/pd/degrees2mapping.pd
new file mode 100644
index 0000000..ee9ac47
--- /dev/null
+++ b/pd/degrees2mapping.pd
@@ -0,0 +1,25 @@
+#N canvas 380 212 444 356 10;
+#X obj 88 30 inlet;
+#X obj 89 264 outlet;
+#X text 232 311 released under the GNU GPL;
+#X text 15 297 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 143 264 output range: 0 to 360 \, 0 = north/top;
+#X text 19 9 [deg2hid];
+#X text 129 28 input range: 0 to 360 \, 0 = east/right;
+#X obj 88 170 / 360;
+#X text 162 108 % is an int operation;
+#X text 169 126 this saves accuracy;
+#X obj 89 121 % 3.6e+07;
+#X obj 89 142 / 100000;
+#X obj 89 100 * 100000;
+#X obj 45 210 moses 0;
+#X obj 45 230 + 1;
+#X connect 0 0 12 0;
+#X connect 7 0 13 0;
+#X connect 10 0 11 0;
+#X connect 11 0 7 0;
+#X connect 12 0 10 0;
+#X connect 13 0 14 0;
+#X connect 13 1 1 0;
+#X connect 14 0 1 0;
diff --git a/pd/disjoin.pd b/pd/disjoin.pd
new file mode 100644
index 0000000..a74cf43
--- /dev/null
+++ b/pd/disjoin.pd
@@ -0,0 +1,27 @@
+#N canvas 0 22 454 304 10;
+#X obj 62 28 inlet;
+#X obj 62 53 moses \$1;
+#X obj 62 204 outlet;
+#X obj 113 203 outlet;
+#X obj 62 100 / \$1;
+#X obj 152 27 inlet;
+#X obj 113 101 - \$1;
+#X obj 177 83 t b f;
+#X obj 161 63 loadbang;
+#X obj 113 158 / 1;
+#X msg 177 105 1;
+#X obj 177 129 - \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 6 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 1;
+#X connect 5 0 6 1;
+#X connect 5 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 10 0;
+#X connect 7 1 11 1;
+#X connect 8 0 10 0;
+#X connect 9 0 3 0;
+#X connect 10 0 11 0;
+#X connect 11 0 9 1;
diff --git a/pd/join.pd b/pd/join.pd
new file mode 100644
index 0000000..79c8b80
--- /dev/null
+++ b/pd/join.pd
@@ -0,0 +1,25 @@
+#N canvas 492 503 452 397 10;
+#X obj 32 24 inlet;
+#X obj 78 25 inlet;
+#X obj 125 25 inlet;
+#X obj 32 215 outlet;
+#X obj 125 71 t b f;
+#X obj 142 48 loadbang;
+#X msg 125 93 1;
+#X obj 125 117 - \$1;
+#X obj 78 180 + \$1;
+#X obj 32 119 * \$1;
+#X obj 78 153 *;
+#X connect 0 0 9 0;
+#X connect 1 0 10 0;
+#X connect 2 0 4 0;
+#X connect 2 0 8 1;
+#X connect 2 0 9 1;
+#X connect 4 0 6 0;
+#X connect 4 1 7 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 1;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 10 0 8 0;
diff --git a/pd/mapping2degrees.pd b/pd/mapping2degrees.pd
new file mode 100644
index 0000000..af40bca
--- /dev/null
+++ b/pd/mapping2degrees.pd
@@ -0,0 +1,31 @@
+#N canvas 163 40 444 356 10;
+#X obj 88 30 inlet;
+#X obj 89 264 outlet;
+#X obj 88 56 min 1;
+#X obj 88 74 max 0;
+#X text 133 63 its a [hid] object \, so limit input range;
+#X text 232 311 released under the GNU GPL;
+#X text 15 297 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 19 9 [hid2deg];
+#X text 129 28 input range: 0 to 1 \, 0 = east/right;
+#X text 143 264 output range: 0 to 360 \, 0 = north/top;
+#X obj 88 100 * 360;
+#X text 162 189 % is an int operation;
+#X text 169 207 this saves accuracy;
+#X obj 88 148 abs;
+#X obj 88 123 - 450;
+#X text 131 122 <- rotate zero to north;
+#X text 130 148 <- change direction of rotation;
+#X obj 89 202 % 3.6e+07;
+#X obj 89 223 / 100000;
+#X obj 89 181 * 100000;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 10 0;
+#X connect 10 0 14 0;
+#X connect 13 0 19 0;
+#X connect 14 0 13 0;
+#X connect 17 0 18 0;
+#X connect 18 0 1 0;
+#X connect 19 0 17 0;
diff --git a/pd/mapping2radians.pd b/pd/mapping2radians.pd
new file mode 100644
index 0000000..b2c3f19
--- /dev/null
+++ b/pd/mapping2radians.pd
@@ -0,0 +1,22 @@
+#N canvas 287 246 432 344 10;
+#X obj 88 30 inlet;
+#X obj 89 264 outlet;
+#X text 19 9 [hid2rad];
+#X obj 89 198 * 6.28318;
+#X obj 88 101 moses 0.5;
+#X obj 88 56 min 1;
+#X obj 88 74 max 0;
+#X obj 147 133 - 1;
+#X text 133 63 its a [hid] object \, so limit input range;
+#X text 129 28 input range: 0 to 1;
+#X text 143 264 output range: -pi to pi;
+#X text 232 311 released under the GNU GPL;
+#X text 15 297 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 5 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 4 1 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
diff --git a/pd/polar.pd b/pd/polar.pd
new file mode 100644
index 0000000..a982061
--- /dev/null
+++ b/pd/polar.pd
@@ -0,0 +1,31 @@
+#N canvas 189 157 476 419 10;
+#X obj 30 58 inlet;
+#X obj 25 313 outlet;
+#X text 73 313 output range: 0 to 1;
+#X text 72 57 input range: 0 to 1;
+#X text 11 5 [hid_polar];
+#X obj 232 312 outlet;
+#X obj 224 56 inlet;
+#X text 264 57 input range: 0 to 1;
+#X text 29 29 x-axis value;
+#X text 221 26 y-axis value;
+#X obj 252 140 - 1;
+#X obj 252 120 * 2;
+#X obj 29 140 - 1;
+#X obj 29 120 * 2;
+#X text 61 125 convert range to -1 to 1;
+#X text 280 312 output range: 0 to 1;
+#X text 245 371 released under the GNU GPL;
+#X text 28 357 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 23 331 radius;
+#X text 230 332 angle;
+#X obj 88 218 vector;
+#X connect 0 0 13 0;
+#X connect 6 0 11 0;
+#X connect 10 0 20 1;
+#X connect 11 0 10 0;
+#X connect 12 0 20 0;
+#X connect 13 0 12 0;
+#X connect 20 0 1 0;
+#X connect 20 1 5 0;
diff --git a/pd/radians2mapping.pd b/pd/radians2mapping.pd
new file mode 100644
index 0000000..39debb1
--- /dev/null
+++ b/pd/radians2mapping.pd
@@ -0,0 +1,26 @@
+#N canvas 258 110 429 400 10;
+#X obj 42 36 inlet;
+#X obj 140 297 outlet;
+#X text 19 9 [rad2hid];
+#X obj 141 234 % 628318;
+#X obj 127 167 moses 0;
+#X obj 141 255 / 628318;
+#X obj 42 96 * 100000;
+#X obj 41 167 % 628318;
+#X obj 42 136 moses -314159;
+#X obj 85 200 + 628318;
+#X text 10 66 % is an int operation \, we want floats \, so convert
+to large integers;
+#X text 225 351 released under the GNU GPL;
+#X text 8 337 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 6 0;
+#X connect 3 0 5 0;
+#X connect 4 0 9 0;
+#X connect 4 1 3 0;
+#X connect 5 0 1 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 4 0;
+#X connect 9 0 3 0;
diff --git a/pd/reverse.pd b/pd/reverse.pd
new file mode 100644
index 0000000..53f6969
--- /dev/null
+++ b/pd/reverse.pd
@@ -0,0 +1,13 @@
+#N canvas 360 364 385 311 10;
+#X obj 70 32 inlet;
+#X obj 84 249 outlet;
+#X text 140 249 output range: 0 to 1;
+#X text 118 32 input range: 0 to 1;
+#X obj 84 142 -;
+#X msg 70 122 1;
+#X obj 70 103 t b f;
+#X connect 0 0 6 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 6 1 4 1;
diff --git a/pd/vector.pd b/pd/vector.pd
new file mode 100644
index 0000000..528bc46
--- /dev/null
+++ b/pd/vector.pd
@@ -0,0 +1,31 @@
+#N canvas 711 171 488 431 10;
+#X obj 30 75 inlet;
+#X obj 25 300 outlet;
+#X text 73 300 output range: 0 to 1;
+#X obj 232 299 outlet;
+#X obj 164 73 inlet;
+#X text 11 31 x-axis value;
+#X text 167 30 y-axis value;
+#X obj 25 269 / 1.41421;
+#X text 92 269 (sqrt 2);
+#X text 280 299 output range: 0 to 1;
+#X text 245 371 released under the GNU GPL;
+#X text 28 357 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 9 48 input range: -1 to 1;
+#X text 168 48 input range: -1 to 1;
+#X text 230 319 direction;
+#X text 23 318 magnatude;
+#X obj 153 197 zexy/cart2pol;
+#X obj 231 267 radians2mapping;
+#X obj 29 159 float;
+#X obj 76 127 trigger bang float;
+#X connect 0 0 18 0;
+#X connect 4 0 19 0;
+#X connect 7 0 1 0;
+#X connect 16 0 7 0;
+#X connect 16 1 17 0;
+#X connect 17 0 3 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 0;
+#X connect 19 1 16 1;
diff --git a/polar.pd b/polar.pd
new file mode 100644
index 0000000..a982061
--- /dev/null
+++ b/polar.pd
@@ -0,0 +1,31 @@
+#N canvas 189 157 476 419 10;
+#X obj 30 58 inlet;
+#X obj 25 313 outlet;
+#X text 73 313 output range: 0 to 1;
+#X text 72 57 input range: 0 to 1;
+#X text 11 5 [hid_polar];
+#X obj 232 312 outlet;
+#X obj 224 56 inlet;
+#X text 264 57 input range: 0 to 1;
+#X text 29 29 x-axis value;
+#X text 221 26 y-axis value;
+#X obj 252 140 - 1;
+#X obj 252 120 * 2;
+#X obj 29 140 - 1;
+#X obj 29 120 * 2;
+#X text 61 125 convert range to -1 to 1;
+#X text 280 312 output range: 0 to 1;
+#X text 245 371 released under the GNU GPL;
+#X text 28 357 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 23 331 radius;
+#X text 230 332 angle;
+#X obj 88 218 vector;
+#X connect 0 0 13 0;
+#X connect 6 0 11 0;
+#X connect 10 0 20 1;
+#X connect 11 0 10 0;
+#X connect 12 0 20 0;
+#X connect 13 0 12 0;
+#X connect 20 0 1 0;
+#X connect 20 1 5 0;
diff --git a/radians2mapping.pd b/radians2mapping.pd
new file mode 100644
index 0000000..39debb1
--- /dev/null
+++ b/radians2mapping.pd
@@ -0,0 +1,26 @@
+#N canvas 258 110 429 400 10;
+#X obj 42 36 inlet;
+#X obj 140 297 outlet;
+#X text 19 9 [rad2hid];
+#X obj 141 234 % 628318;
+#X obj 127 167 moses 0;
+#X obj 141 255 / 628318;
+#X obj 42 96 * 100000;
+#X obj 41 167 % 628318;
+#X obj 42 136 moses -314159;
+#X obj 85 200 + 628318;
+#X text 10 66 % is an int operation \, we want floats \, so convert
+to large integers;
+#X text 225 351 released under the GNU GPL;
+#X text 8 337 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 6 0;
+#X connect 3 0 5 0;
+#X connect 4 0 9 0;
+#X connect 4 1 3 0;
+#X connect 5 0 1 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 8 1 4 0;
+#X connect 9 0 3 0;
diff --git a/reverse.pd b/reverse.pd
new file mode 100644
index 0000000..53f6969
--- /dev/null
+++ b/reverse.pd
@@ -0,0 +1,13 @@
+#N canvas 360 364 385 311 10;
+#X obj 70 32 inlet;
+#X obj 84 249 outlet;
+#X text 140 249 output range: 0 to 1;
+#X text 118 32 input range: 0 to 1;
+#X obj 84 142 -;
+#X msg 70 122 1;
+#X obj 70 103 t b f;
+#X connect 0 0 6 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 6 1 4 1;
diff --git a/vector.pd b/vector.pd
new file mode 100644
index 0000000..528bc46
--- /dev/null
+++ b/vector.pd
@@ -0,0 +1,31 @@
+#N canvas 711 171 488 431 10;
+#X obj 30 75 inlet;
+#X obj 25 300 outlet;
+#X text 73 300 output range: 0 to 1;
+#X obj 232 299 outlet;
+#X obj 164 73 inlet;
+#X text 11 31 x-axis value;
+#X text 167 30 y-axis value;
+#X obj 25 269 / 1.41421;
+#X text 92 269 (sqrt 2);
+#X text 280 299 output range: 0 to 1;
+#X text 245 371 released under the GNU GPL;
+#X text 28 357 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 9 48 input range: -1 to 1;
+#X text 168 48 input range: -1 to 1;
+#X text 230 319 direction;
+#X text 23 318 magnatude;
+#X obj 153 197 zexy/cart2pol;
+#X obj 231 267 radians2mapping;
+#X obj 29 159 float;
+#X obj 76 127 trigger bang float;
+#X connect 0 0 18 0;
+#X connect 4 0 19 0;
+#X connect 7 0 1 0;
+#X connect 16 0 7 0;
+#X connect 16 1 17 0;
+#X connect 17 0 3 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 0;
+#X connect 19 1 16 1;