aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buttongate.pd42
-rw-r--r--curve.pd34
-rw-r--r--curve_exp.pd33
-rw-r--r--curve_log.pd33
-rw-r--r--curve_power.pd47
-rw-r--r--curve_root.pd35
-rw-r--r--help/autoscale-help.pd10
-rw-r--r--help/buttongate-help.pd39
-rw-r--r--help/curve-help.pd77
-rw-r--r--help/curve_exp-help.pd2
-rw-r--r--help/curve_log-help.pd50
-rw-r--r--help/degrees2mapping-help.pd24
-rw-r--r--help/keygate-help.pd33
-rw-r--r--help/mapping2degrees-help.pd24
-rw-r--r--help/mapping2radians-help.pd28
-rw-r--r--help/notescale-help.pd44
-rw-r--r--help/polar-help.pd16
-rw-r--r--help/radians2mapping-help.pd8
-rw-r--r--help/spiral-help.pd40
-rw-r--r--keygate.pd43
-rw-r--r--notescale.pd29
-rw-r--r--pd/buttongate.pd42
-rw-r--r--pd/curve.pd34
-rw-r--r--pd/curve_exp.pd33
-rw-r--r--pd/curve_log.pd33
-rw-r--r--pd/curve_power.pd47
-rw-r--r--pd/curve_root.pd35
-rw-r--r--pd/keygate.pd43
-rw-r--r--pd/notescale.pd29
-rw-r--r--pd/spiral.pd46
-rw-r--r--spiral.pd46
31 files changed, 909 insertions, 170 deletions
diff --git a/buttongate.pd b/buttongate.pd
new file mode 100644
index 0000000..8797ad4
--- /dev/null
+++ b/buttongate.pd
@@ -0,0 +1,42 @@
+#N canvas 367 43 525 408 10;
+#X obj 303 81 hid \$1;
+#X obj 303 24 inlet;
+#X obj 303 106 route key;
+#X obj 303 127 route \$2;
+#X obj 104 26 inlet;
+#X obj 104 295 outlet;
+#X obj 104 264 spigot;
+#X text 10 324 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 226 340 released under the GNU GPL;
+#X text 16 371 $Author: eighthave $;
+#X text 16 388 $Date: 2006-01-29 08:12:33 $;
+#X text 16 354 $Revision: 1.1 $;
+#X obj 192 16 loadbang;
+#X obj 303 147 unpack f f;
+#X text 5 6 [buttongate];
+#X obj 242 263 spigot;
+#X obj 242 295 outlet;
+#X obj 333 195 - 1;
+#X obj 333 215 abs;
+#X msg 192 50 0;
+#X msg 243 50 1;
+#X obj 303 168 t f f;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 13 0;
+#X connect 4 0 6 0;
+#X connect 4 0 15 0;
+#X connect 6 0 5 0;
+#X connect 12 0 19 0;
+#X connect 12 0 20 0;
+#X connect 13 0 21 0;
+#X connect 15 0 16 0;
+#X connect 17 0 18 0;
+#X connect 18 0 15 1;
+#X connect 19 0 6 1;
+#X connect 20 0 15 1;
+#X connect 20 0 0 0;
+#X connect 21 0 6 1;
+#X connect 21 1 17 0;
diff --git a/curve.pd b/curve.pd
new file mode 100644
index 0000000..8d09a66
--- /dev/null
+++ b/curve.pd
@@ -0,0 +1,34 @@
+#N canvas 12 269 577 490 10;
+#X obj 50 36 inlet;
+#X obj 165 34 inlet;
+#X obj 165 57 symbol;
+#X obj 47 411 outlet;
+#X obj 50 150 pack float symbol;
+#X msg 50 175 \$2 \$1;
+#X obj 39 256 atan;
+#X obj 123 260 cos;
+#X obj 152 260 sin;
+#X obj 188 273 print [curve];
+#X msg 189 251 ERROR: argument not supported \$1;
+#X obj 194 96 symbol_argument \$1;
+#X obj 51 100 * 3.14159;
+#X obj 39 277 / 1.26263;
+#X obj 50 198 route atan cos sin;
+#X obj 190 225 symbol;
+#X connect 0 0 12 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 14 0;
+#X connect 6 0 13 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X connect 10 0 9 0;
+#X connect 11 0 4 1;
+#X connect 12 0 4 0;
+#X connect 13 0 3 0;
+#X connect 14 0 6 0;
+#X connect 14 1 7 0;
+#X connect 14 2 8 0;
+#X connect 14 3 15 0;
+#X connect 15 0 10 0;
diff --git a/curve_exp.pd b/curve_exp.pd
index b7ca7a4..e77d677 100644
--- a/curve_exp.pd
+++ b/curve_exp.pd
@@ -1,11 +1,24 @@
-#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;
+#N canvas 225 325 507 333 10;
+#X obj 37 25 inlet;
+#X obj 37 262 outlet;
+#X obj 38 63 moses 0;
+#X obj 22 116 abs;
+#X obj 22 189 * -1;
+#X obj 22 168 dbtorms;
+#X obj 22 142 * 100;
+#X obj 83 142 * 100;
+#X obj 83 169 dbtorms;
+#X text 85 25 input range: -1 to 1;
+#X text 93 262 output range: -1 to 1;
+#X text 248 296 released under the GNU GPL;
+#X text 31 282 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 7 0;
+#X connect 3 0 6 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 0;
diff --git a/curve_log.pd b/curve_log.pd
index 297f5f8..f3946f1 100644
--- a/curve_log.pd
+++ b/curve_log.pd
@@ -1,11 +1,24 @@
-#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;
+#N canvas 236 31 428 321 10;
+#X obj 31 8 inlet;
+#X obj 31 245 outlet;
+#X obj 77 122 rmstodb;
+#X obj 77 152 / 100;
+#X obj 32 46 moses 0;
+#X obj 16 99 abs;
+#X obj 16 123 rmstodb;
+#X obj 16 151 / 100;
+#X obj 16 172 * -1;
+#X text 79 8 input range: -1 to 1;
+#X text 87 245 output range: -1 to 1;
+#X text 225 284 released under the GNU GPL;
+#X text 8 270 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 4 1 2 0;
#X connect 5 0 6 0;
-#X connect 6 0 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 0;
diff --git a/curve_power.pd b/curve_power.pd
index 0332375..116f7b8 100644
--- a/curve_power.pd
+++ b/curve_power.pd
@@ -1,14 +1,33 @@
-#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;
+#N canvas 529 139 460 377 10;
+#X obj 40 32 inlet;
+#X obj 40 299 outlet;
+#X obj 40 74 min 1;
+#X text 5 6 input range: -1 to 1;
+#X obj 40 94 max -1;
+#X obj 41 231 pow;
+#X text 96 298 output range: -1 to 1;
+#X obj 178 30 inlet;
+#X obj 207 106 float_argument \$1 1;
+#X obj 207 85 loadbang;
+#X text 245 344 released under the GNU GPL;
+#X text 28 330 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 39 121 moses 0;
+#X obj 41 207 abs;
+#X obj 115 232 pow;
+#X obj 41 257 * -1;
+#X obj 177 156 float;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 4 0 12 0;
+#X connect 5 0 15 0;
+#X connect 7 0 16 0;
+#X connect 8 0 16 0;
+#X connect 9 0 8 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 0;
+#X connect 13 0 5 0;
+#X connect 14 0 1 0;
+#X connect 15 0 1 0;
+#X connect 16 0 14 1;
+#X connect 16 0 5 1;
diff --git a/curve_root.pd b/curve_root.pd
index a75bdc2..81aa3a6 100644
--- a/curve_root.pd
+++ b/curve_root.pd
@@ -1,22 +1,35 @@
-#N canvas 295 229 460 377 10;
+#N canvas 295 229 464 381 10;
#X obj 40 32 inlet;
#X obj 40 299 outlet;
-#X obj 40 94 min 1;
+#X obj 40 74 min 1;
#X text 5 6 input range: -1 to 1;
-#X obj 40 114 max -1;
-#X obj 41 271 pow;
+#X obj 40 94 max -1;
+#X obj 41 231 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 obj 177 156 /;
+#X msg 177 136 1 \$1;
+#X obj 178 30 inlet;
+#X obj 207 106 float_argument \$1 1;
+#X obj 207 85 loadbang;
+#X text 245 344 released under the GNU GPL;
+#X text 28 330 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 39 121 moses 0;
+#X obj 40 161 abs;
+#X obj 115 232 pow;
+#X obj 41 257 * -1;
#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 4 0 14 0;
+#X connect 5 0 17 0;
#X connect 7 0 5 1;
+#X connect 7 0 16 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;
+#X connect 14 0 15 0;
+#X connect 14 1 16 0;
+#X connect 15 0 5 0;
+#X connect 16 0 1 0;
+#X connect 17 0 1 0;
diff --git a/help/autoscale-help.pd b/help/autoscale-help.pd
index ae8aaf7..65ddaec 100644
--- a/help/autoscale-help.pd
+++ b/help/autoscale-help.pd
@@ -1,4 +1,4 @@
-#N canvas 229 80 464 537 10;
+#N canvas 229 80 468 541 10;
#X floatatom 26 76 5 0 0 0 - - -;
#X floatatom 26 140 0 0 0 0 - - -;
#X obj 68 258 autoscale;
@@ -8,8 +8,8 @@
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 obj 71 281 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 17 1;
#X text 17 441 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
;
#X text 234 455 released under the GNU GPL;
@@ -17,12 +17,12 @@ range set as arguments \, and an input range which is set dynamically.
#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 17 474 $Revision: 1.2 $$Date: 2006-01-29 08:12: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
+#X obj 71 401 hsl 128 15 0 1 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;
diff --git a/help/buttongate-help.pd b/help/buttongate-help.pd
new file mode 100644
index 0000000..59388cb
--- /dev/null
+++ b/help/buttongate-help.pd
@@ -0,0 +1,39 @@
+#N canvas 345 96 463 514 10;
+#X obj 5 2 cnv 15 450 20 empty empty [buttongate] 2 11 1 18 -233017
+-66577 0;
+#X obj 160 287 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 160 151 loadbang;
+#X msg 160 171 1;
+#X obj 160 199 metro 150;
+#X text 27 470 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 244 484 released under the GNU GPL;
+#X obj 223 417 pddp_open mapping-about;
+#X text 114 418 For more info:;
+#X text 17 38 [buttongate] is a simple gate controlled by a HID button.
+You must specify the device and the button which controls the gate.
+The left inlet takes the data to be gated. The right inlet is for sending
+optional control messages to the HID.;
+#X obj 160 244 buttongate 0 btn_0;
+#X text 18 119 The first button on the first device controls this gate:
+;
+#X text 15 237 data to be gated -->;
+#X text 292 237 <-- msgs to [hid];
+#X obj 281 288 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 310 197 refresh;
+#X msg 299 176 open 2;
+#X text 39 294 button pressed->;
+#X text 310 293 <-- button released;
+#X text 23 348 Keyboard keys can also be used to control this object.
+You can get the [hid] keycode from here:;
+#X obj 324 368 ev_key-list;
+#X msg 422 3 pddp;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 10 0;
+#X connect 10 0 1 0;
+#X connect 10 1 14 0;
+#X connect 15 0 10 1;
+#X connect 16 0 10 1;
diff --git a/help/curve-help.pd b/help/curve-help.pd
new file mode 100644
index 0000000..34e454f
--- /dev/null
+++ b/help/curve-help.pd
@@ -0,0 +1,77 @@
+#N canvas 485 163 480 361 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 320 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 244 334 released under the GNU GPL;
+#X text 158 291 For more info:;
+#X floatatom 25 163 8 0 0 0 - - -;
+#X floatatom 25 224 8 0 0 0 - - -;
+#X obj 28 241 hsl 200 15 0 1 0 0 empty empty empty 22 8 1 12 -262144
+-1 -1 19900 1;
+#X obj 28 143 hsl 200 15 0 1 0 0 empty empty empty 22 8 1 12 -261681
+-1 -1 19900 1;
+#N canvas 0 22 450 300 graph1 0;
+#X array \$0-curve 100 float 0;
+#X coords 0 1 99 -1 100 100 1;
+#X restore 321 111 graph;
+#N canvas 266 69 379 369 draw_array 0;
+#X msg 54 82 bang;
+#X obj 54 103 until;
+#X text 85 82 start;
+#X obj 54 125 f;
+#X obj 83 125 + 1;
+#X obj 83 147 mod 100;
+#X obj 54 43 loadbang;
+#X text 96 257 mapping output range: -1 to 1;
+#X obj 54 257 / 50;
+#X obj 53 229 - 50;
+#X obj 139 53 t b s;
+#X obj 139 32 symbol;
+#X obj 138 9 receive \$0-type;
+#X obj 54 180 trigger float float;
+#X obj 127 127 select 0;
+#X obj 53 313 tabwrite \$0-curve;
+#X obj 53 283 curve cos;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 13 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 1;
+#X connect 5 0 14 0;
+#X connect 6 0 0 0;
+#X connect 8 0 16 0;
+#X connect 9 0 8 0;
+#X connect 10 0 0 0;
+#X connect 10 1 16 1;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 9 0;
+#X connect 13 1 15 1;
+#X connect 14 0 1 1;
+#X connect 16 0 15 0;
+#X restore 321 89 pd draw_array;
+#X text 17 39 This object maps the input range to a exponential curve
+\, the inverse of a logarithmic curve.;
+#X msg 61 82 atan;
+#X msg 98 82 cos;
+#X obj 83 184 receive \$0-type;
+#X obj 115 115 send \$0-type;
+#X msg 128 82 sin;
+#X obj 25 203 curve sin;
+#X obj 262 289 pddp_open mapping-about;
+#X text 286 231 related objects:;
+#X obj 259 250 curve_root;
+#X obj 342 250 curve_power;
+#X obj 259 268 curve_exp;
+#X obj 342 268 curve_log;
+#X connect 5 0 17 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 0;
+#X connect 12 0 15 0;
+#X connect 13 0 15 0;
+#X connect 14 0 17 1;
+#X connect 16 0 15 0;
+#X connect 17 0 6 0;
diff --git a/help/curve_exp-help.pd b/help/curve_exp-help.pd
index c37b7bc..39688b4 100644
--- a/help/curve_exp-help.pd
+++ b/help/curve_exp-help.pd
@@ -30,7 +30,7 @@
#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 text 99 207 mapping output range: 0 to 1;
#X obj 56 283 tabwrite curve_exp;
#X obj 56 233 curve_exp;
#X connect 0 0 1 0;
diff --git a/help/curve_log-help.pd b/help/curve_log-help.pd
index 800816f..4d1ccf1 100644
--- a/help/curve_log-help.pd
+++ b/help/curve_log-help.pd
@@ -1,12 +1,11 @@
-#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;
+#N canvas 127 78 480 361 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
@@ -17,41 +16,44 @@
#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;
+#N canvas 266 69 343 333 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 obj 56 243 curve_log;
+#X text 99 217 mapping output range: -1 to 1;
+#X obj 57 193 - 50;
+#X obj 57 217 / 50;
+#X obj 132 97 select 0;
#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 connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 1;
+#X connect 5 0 15 0;
+#X connect 6 0 13 0;
+#X connect 6 1 7 0;
+#X connect 8 0 10 1;
+#X connect 9 0 0 0;
+#X connect 11 0 10 0;
+#X connect 13 0 14 0;
+#X connect 14 0 11 0;
+#X connect 15 0 1 1;
#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;
+#X obj 202 269 pddp_open mapping-about;
+#X connect 5 0 12 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 0;
+#X connect 12 0 6 0;
diff --git a/help/degrees2mapping-help.pd b/help/degrees2mapping-help.pd
index 562b4e2..63b64df 100644
--- a/help/degrees2mapping-help.pd
+++ b/help/degrees2mapping-help.pd
@@ -1,6 +1,6 @@
-#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;
+#N canvas 237 323 487 327 10;
+#X obj 5 2 cnv 15 450 20 empty empty [degrees2mapping] 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:;
@@ -8,17 +8,17 @@
#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 352 184 radians2mapping;
#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 obj 59 103 hsl 300 15 0 360 0 0 empty empty degrees 6 7 1 10 -262131
+-1 -1 29900 0;
#X floatatom 82 133 5 0 0 0 - - -;
-#X text 26 34 This object converts numbers from the [hid] range (0
+#X text 26 34 This object converts numbers from the mapping 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 obj 296 204 mapping2degrees;
+#X obj 56 168 degrees2mapping;
+#X obj 240 184 mapping2radians;
#X connect 9 0 10 0;
-#X connect 9 0 14 0;
-#X connect 14 0 8 0;
+#X connect 9 0 13 0;
+#X connect 13 0 8 0;
diff --git a/help/keygate-help.pd b/help/keygate-help.pd
new file mode 100644
index 0000000..03d9b67
--- /dev/null
+++ b/help/keygate-help.pd
@@ -0,0 +1,33 @@
+#N canvas 525 201 462 476 10;
+#X obj 5 2 cnv 15 450 20 empty empty [keygate] 2 11 1 18 -233017 -66577
+0;
+#X obj 160 257 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 160 121 loadbang;
+#X msg 160 141 1;
+#X obj 160 169 metro 150;
+#X text 33 416 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 250 430 released under the GNU GPL;
+#X obj 237 369 pddp_open mapping-about;
+#X text 128 370 For more info:;
+#X text 15 207 data to be gated -->;
+#X obj 281 258 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 40 300 keyname;
+#X symbolatom 84 320 10 0 0 0 - - -;
+#X text 162 320 <-- check here for the keyname symbol;
+#X obj 160 214 keygate f;
+#X text 17 38 [keygate] is a simple gate controlled by a keyboard.
+You must specify the name of the key which controls the gate. The left
+inlet takes the data to be gated.;
+#X text 18 89 The "f" key on the any keyboard controls this gate:;
+#X text 310 263 <-- key released;
+#X text 41 264 key pressed -->;
+#X msg 422 3 pddp;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 14 0;
+#X connect 11 1 12 0;
+#X connect 14 0 1 0;
+#X connect 14 1 10 0;
diff --git a/help/mapping2degrees-help.pd b/help/mapping2degrees-help.pd
index b800b4f..51519d5 100644
--- a/help/mapping2degrees-help.pd
+++ b/help/mapping2degrees-help.pd
@@ -1,6 +1,6 @@
-#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;
+#N canvas 589 387 487 327 10;
+#X obj 5 2 cnv 15 450 20 empty empty [mapping2deg] 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:;
@@ -8,16 +8,16 @@
#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 obj 240 184 radians2mapping;
+#X obj 352 184 degrees2mapping;
#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 obj 72 85 hsl 128 15 0 1 0 0 empty empty mapping 6 7 1 10 -262131
+-1 -1 12700 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
+#X obj 69 150 mapping2degrees;
+#X text 26 34 This object converts numbers from the mapping range (0
to 1) to degrees (0 to 360) with the 0 being north.;
+#X obj 298 205 mapping2radians;
#X connect 10 0 11 0;
-#X connect 10 0 13 0;
-#X connect 13 0 9 0;
+#X connect 10 0 12 0;
+#X connect 12 0 9 0;
diff --git a/help/mapping2radians-help.pd b/help/mapping2radians-help.pd
index 2698127..be1012f 100644
--- a/help/mapping2radians-help.pd
+++ b/help/mapping2radians-help.pd
@@ -1,24 +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;
+#N canvas 633 307 475 315 10;
+#X obj 5 2 cnv 15 450 20 empty empty [mapping2radians] 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 text 294 161 related objects:;
+#X obj 234 181 radians2mapping;
+#X obj 346 181 degrees2mapping;
+#X obj 288 200 mapping2degrees;
#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 obj 72 85 hsl 128 15 0 1 0 0 empty empty mapping 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
+#X obj 69 150 mapping2radians;
+#X text 26 34 This object converts numbers from the mapping 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;
+#X connect 11 0 12 0;
+#X connect 11 0 13 0;
+#X connect 13 0 10 0;
diff --git a/help/notescale-help.pd b/help/notescale-help.pd
new file mode 100644
index 0000000..d79a87c
--- /dev/null
+++ b/help/notescale-help.pd
@@ -0,0 +1,44 @@
+#N canvas 577 303 464 467 10;
+#X floatatom 26 85 5 0 0 0 - - -;
+#X floatatom 26 160 0 0 0 0 - - -;
+#X obj 2 2 cnv 15 450 20 empty empty [notescale] 2 11 1 18 -233017
+-66577 0;
+#X msg 418 3 pddp;
+#X floatatom 137 266 5 0 0 0 - - -;
+#X obj 140 330 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X text 17 393 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 234 407 released under the GNU GPL;
+#X floatatom 150 160 0 0 0 0 - - -;
+#X floatatom 297 160 0 0 0 0 - - -;
+#X obj 213 83 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -225271
+-1 -1 0 0;
+#X text 17 426 $Revision: 1.1 $$Date: 2006-01-29 08:12:33 $;
+#X text 18 439 $Author: eighthave $;
+#X obj 140 244 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262131
+-1 -1 0 0;
+#X obj 26 130 notescale 30 60;
+#X floatatom 137 347 5 0 0 0 - - -;
+#X text 13 193 If you use [notescale] with no arguments \, then the
+output range defaults to 0-127.;
+#X floatatom 202 109 5 0 0 0 - - -;
+#X obj 26 105 / 100;
+#X text 18 35 [notescale] scales a stream of numbers to a MIDI note
+number. It takes an input range of 0 to 1 \, and outputs MIDI note
+numbers based on an output range set as arguments.;
+#X obj 137 297 notescale;
+#X obj 150 130 notescale 15 120;
+#X obj 297 130 notescale 24 48;
+#X connect 0 0 18 0;
+#X connect 4 0 20 0;
+#X connect 5 0 15 0;
+#X connect 10 0 17 0;
+#X connect 10 0 21 0;
+#X connect 10 0 22 0;
+#X connect 13 0 4 0;
+#X connect 14 0 1 0;
+#X connect 18 0 14 0;
+#X connect 20 0 5 0;
+#X connect 21 0 8 0;
+#X connect 22 0 9 0;
diff --git a/help/polar-help.pd b/help/polar-help.pd
index 9f35ce6..4ecef66 100644
--- a/help/polar-help.pd
+++ b/help/polar-help.pd
@@ -1,13 +1,13 @@
-#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;
+#N canvas 601 232 486 459 10;
+#X obj 5 2 cnv 15 450 20 empty empty [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 obj 100 295 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
@@ -18,16 +18,16 @@
#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 275 283 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 obj 197 303 spiral;
+#X obj 356 303 mapping2degrees;
+#X obj 245 303 mapping2radians;
#X connect 3 0 7 0;
#X connect 7 0 4 0;
#X connect 7 1 11 0;
diff --git a/help/radians2mapping-help.pd b/help/radians2mapping-help.pd
index 9e0b6f1..1e8fe36 100644
--- a/help/radians2mapping-help.pd
+++ b/help/radians2mapping-help.pd
@@ -1,5 +1,5 @@
#N canvas 168 236 533 333 10;
-#X obj 5 2 cnv 15 450 20 empty empty [rad2hid] 2 11 1 18 -233017 -66577
+#X obj 5 2 cnv 15 450 20 empty empty [radians2mapping] 2 11 1 18 -233017 -66577
0;
#X msg 422 3 pddp;
#X text 254 269 released under the GNU GPL;
@@ -7,13 +7,13 @@
#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 floatatom 69 195 5 0 0 1 mapping - -;
#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 obj 69 160 radians2mapping;
#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.
+to the mapping range (0 to 1) with the 0's lining up in the same place.
;
#X obj 252 202 radians2mapping;
#X obj 140 202 degrees2mapping;
diff --git a/help/spiral-help.pd b/help/spiral-help.pd
new file mode 100644
index 0000000..8d96756
--- /dev/null
+++ b/help/spiral-help.pd
@@ -0,0 +1,40 @@
+#N canvas 56 302 475 480 10;
+#X obj 5 2 cnv 15 450 20 empty empty [spiral] 2 11 1 18 -233017
+-66577 0;
+#X msg 422 3 pddp;
+#X text 245 451 released under the GNU GPL;
+#X floatatom 70 288 5 0 0 0 - - -;
+#X floatatom 70 375 5 0 0 0 radius-> - -;
+#X text 175 408 For more info:;
+#X text 28 437 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 71 201 hsl 128 15 0 1 0 0 empty empty x-axis 133 7 1 10 -225280
+-1 -1 0 0;
+#X obj 127 143 vsl 15 128 0 1 0 0 empty empty y-axis -6 -9 1 10 -261681
+-1 -1 0 0;
+#X floatatom 136 376 8 0 0 1 <-angle - -;
+#X floatatom 128 288 5 0 0 0 - - -;
+#X obj 127 305 t b f;
+#X text 246 271 related objects:;
+#X text 264 324 example:;
+#X msg 69 126 0.5;
+#X text 15 126 center:;
+#X obj 323 324 spiral-joystick;
+#X obj 70 335 spiral;
+#X obj 279 406 pddp_open mapping-about;
+#X obj 362 271 polar;
+#X text 24 32 Converts cartesian coordinates(x \, y) to spiral in polar
+coordinates (radius \, angle). The angle is from 0 to 1 The angle 0
+is at cartesian (1 \, 0) or far right center.;
+#X text 24 81 The angle will just keep going up/down as long as there
+is rotation rather than reset like [polar].;
+#X connect 3 0 17 0;
+#X connect 7 0 3 0;
+#X connect 8 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 3 0;
+#X connect 11 1 17 1;
+#X connect 14 0 8 0;
+#X connect 14 0 7 0;
+#X connect 17 0 4 0;
+#X connect 17 1 9 0;
diff --git a/keygate.pd b/keygate.pd
new file mode 100644
index 0000000..2da19c5
--- /dev/null
+++ b/keygate.pd
@@ -0,0 +1,43 @@
+#N canvas 326 22 530 481 10;
+#X obj 44 36 inlet;
+#X obj 44 365 outlet;
+#X obj 44 334 spigot;
+#X text 109 401 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 326 415 released under the GNU GPL;
+#X text 16 444 $Author: eighthave $;
+#X text 16 461 $Date: 2006-01-29 08:12:33 $;
+#X text 16 427 $Revision: 1.1 $;
+#X obj 132 26 loadbang;
+#X text 5 6 [keygate];
+#X obj 182 333 spigot;
+#X obj 182 365 outlet;
+#X obj 273 204 - 1;
+#X obj 273 224 abs;
+#X obj 236 27 keyname;
+#X msg 132 60 0;
+#X msg 183 60 1;
+#X obj 243 181 t f f;
+#X obj 243 157 f;
+#X obj 243 107 sel \$1;
+#X obj 243 86 symbol;
+#X obj 236 57 trigger bang float;
+#X connect 0 0 2 0;
+#X connect 0 0 10 0;
+#X connect 2 0 1 0;
+#X connect 8 0 15 0;
+#X connect 8 0 16 0;
+#X connect 10 0 11 0;
+#X connect 12 0 13 0;
+#X connect 13 0 10 1;
+#X connect 14 0 21 0;
+#X connect 14 1 20 1;
+#X connect 15 0 2 1;
+#X connect 16 0 10 1;
+#X connect 17 0 2 1;
+#X connect 17 1 12 0;
+#X connect 18 0 17 0;
+#X connect 19 0 18 0;
+#X connect 20 0 19 0;
+#X connect 21 0 20 0;
+#X connect 21 1 18 1;
diff --git a/notescale.pd b/notescale.pd
new file mode 100644
index 0000000..8c63369
--- /dev/null
+++ b/notescale.pd
@@ -0,0 +1,29 @@
+#N canvas 37 318 444 446 10;
+#X obj 64 49 inlet;
+#X obj 64 389 outlet;
+#X obj 64 325 int;
+#X obj 64 297 expr $f1 * ($f3 - $f2) + $f2;
+#X obj 357 231 f \$2;
+#X obj 159 230 f \$1;
+#X obj 159 257 expr if ($f1 == $f2 \, 0 \, $f1) \; if ($f1 == $f2 \,
+127 \, $f2);
+#X text 10 7 [notescale];
+#X obj 229 152 loadbang;
+#X obj 229 179 t b b;
+#X text 114 49 input range: 0 to 1;
+#X obj 64 96 min 1;
+#X obj 64 116 max 0;
+#X text 123 389 output range: MIDI note #s;
+#X connect 0 0 11 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 1;
+#X connect 5 0 6 0;
+#X connect 6 0 3 1;
+#X connect 6 1 3 2;
+#X connect 8 0 9 0;
+#X connect 9 0 5 0;
+#X connect 9 1 4 0;
+#X connect 11 0 12 0;
+#X connect 12 0 3 0;
+#X connect 12 0 9 0;
diff --git a/pd/buttongate.pd b/pd/buttongate.pd
new file mode 100644
index 0000000..8797ad4
--- /dev/null
+++ b/pd/buttongate.pd
@@ -0,0 +1,42 @@
+#N canvas 367 43 525 408 10;
+#X obj 303 81 hid \$1;
+#X obj 303 24 inlet;
+#X obj 303 106 route key;
+#X obj 303 127 route \$2;
+#X obj 104 26 inlet;
+#X obj 104 295 outlet;
+#X obj 104 264 spigot;
+#X text 10 324 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 226 340 released under the GNU GPL;
+#X text 16 371 $Author: eighthave $;
+#X text 16 388 $Date: 2006-01-29 08:12:33 $;
+#X text 16 354 $Revision: 1.1 $;
+#X obj 192 16 loadbang;
+#X obj 303 147 unpack f f;
+#X text 5 6 [buttongate];
+#X obj 242 263 spigot;
+#X obj 242 295 outlet;
+#X obj 333 195 - 1;
+#X obj 333 215 abs;
+#X msg 192 50 0;
+#X msg 243 50 1;
+#X obj 303 168 t f f;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 13 0;
+#X connect 4 0 6 0;
+#X connect 4 0 15 0;
+#X connect 6 0 5 0;
+#X connect 12 0 19 0;
+#X connect 12 0 20 0;
+#X connect 13 0 21 0;
+#X connect 15 0 16 0;
+#X connect 17 0 18 0;
+#X connect 18 0 15 1;
+#X connect 19 0 6 1;
+#X connect 20 0 15 1;
+#X connect 20 0 0 0;
+#X connect 21 0 6 1;
+#X connect 21 1 17 0;
diff --git a/pd/curve.pd b/pd/curve.pd
new file mode 100644
index 0000000..8d09a66
--- /dev/null
+++ b/pd/curve.pd
@@ -0,0 +1,34 @@
+#N canvas 12 269 577 490 10;
+#X obj 50 36 inlet;
+#X obj 165 34 inlet;
+#X obj 165 57 symbol;
+#X obj 47 411 outlet;
+#X obj 50 150 pack float symbol;
+#X msg 50 175 \$2 \$1;
+#X obj 39 256 atan;
+#X obj 123 260 cos;
+#X obj 152 260 sin;
+#X obj 188 273 print [curve];
+#X msg 189 251 ERROR: argument not supported \$1;
+#X obj 194 96 symbol_argument \$1;
+#X obj 51 100 * 3.14159;
+#X obj 39 277 / 1.26263;
+#X obj 50 198 route atan cos sin;
+#X obj 190 225 symbol;
+#X connect 0 0 12 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 14 0;
+#X connect 6 0 13 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X connect 10 0 9 0;
+#X connect 11 0 4 1;
+#X connect 12 0 4 0;
+#X connect 13 0 3 0;
+#X connect 14 0 6 0;
+#X connect 14 1 7 0;
+#X connect 14 2 8 0;
+#X connect 14 3 15 0;
+#X connect 15 0 10 0;
diff --git a/pd/curve_exp.pd b/pd/curve_exp.pd
index b7ca7a4..e77d677 100644
--- a/pd/curve_exp.pd
+++ b/pd/curve_exp.pd
@@ -1,11 +1,24 @@
-#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;
+#N canvas 225 325 507 333 10;
+#X obj 37 25 inlet;
+#X obj 37 262 outlet;
+#X obj 38 63 moses 0;
+#X obj 22 116 abs;
+#X obj 22 189 * -1;
+#X obj 22 168 dbtorms;
+#X obj 22 142 * 100;
+#X obj 83 142 * 100;
+#X obj 83 169 dbtorms;
+#X text 85 25 input range: -1 to 1;
+#X text 93 262 output range: -1 to 1;
+#X text 248 296 released under the GNU GPL;
+#X text 31 282 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 7 0;
+#X connect 3 0 6 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 0;
diff --git a/pd/curve_log.pd b/pd/curve_log.pd
index 297f5f8..f3946f1 100644
--- a/pd/curve_log.pd
+++ b/pd/curve_log.pd
@@ -1,11 +1,24 @@
-#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;
+#N canvas 236 31 428 321 10;
+#X obj 31 8 inlet;
+#X obj 31 245 outlet;
+#X obj 77 122 rmstodb;
+#X obj 77 152 / 100;
+#X obj 32 46 moses 0;
+#X obj 16 99 abs;
+#X obj 16 123 rmstodb;
+#X obj 16 151 / 100;
+#X obj 16 172 * -1;
+#X text 79 8 input range: -1 to 1;
+#X text 87 245 output range: -1 to 1;
+#X text 225 284 released under the GNU GPL;
+#X text 8 270 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X connect 0 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 4 1 2 0;
#X connect 5 0 6 0;
-#X connect 6 0 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 0;
diff --git a/pd/curve_power.pd b/pd/curve_power.pd
index 0332375..116f7b8 100644
--- a/pd/curve_power.pd
+++ b/pd/curve_power.pd
@@ -1,14 +1,33 @@
-#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;
+#N canvas 529 139 460 377 10;
+#X obj 40 32 inlet;
+#X obj 40 299 outlet;
+#X obj 40 74 min 1;
+#X text 5 6 input range: -1 to 1;
+#X obj 40 94 max -1;
+#X obj 41 231 pow;
+#X text 96 298 output range: -1 to 1;
+#X obj 178 30 inlet;
+#X obj 207 106 float_argument \$1 1;
+#X obj 207 85 loadbang;
+#X text 245 344 released under the GNU GPL;
+#X text 28 330 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 39 121 moses 0;
+#X obj 41 207 abs;
+#X obj 115 232 pow;
+#X obj 41 257 * -1;
+#X obj 177 156 float;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 4 0 12 0;
+#X connect 5 0 15 0;
+#X connect 7 0 16 0;
+#X connect 8 0 16 0;
+#X connect 9 0 8 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 0;
+#X connect 13 0 5 0;
+#X connect 14 0 1 0;
+#X connect 15 0 1 0;
+#X connect 16 0 14 1;
+#X connect 16 0 5 1;
diff --git a/pd/curve_root.pd b/pd/curve_root.pd
index a75bdc2..81aa3a6 100644
--- a/pd/curve_root.pd
+++ b/pd/curve_root.pd
@@ -1,22 +1,35 @@
-#N canvas 295 229 460 377 10;
+#N canvas 295 229 464 381 10;
#X obj 40 32 inlet;
#X obj 40 299 outlet;
-#X obj 40 94 min 1;
+#X obj 40 74 min 1;
#X text 5 6 input range: -1 to 1;
-#X obj 40 114 max -1;
-#X obj 41 271 pow;
+#X obj 40 94 max -1;
+#X obj 41 231 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 obj 177 156 /;
+#X msg 177 136 1 \$1;
+#X obj 178 30 inlet;
+#X obj 207 106 float_argument \$1 1;
+#X obj 207 85 loadbang;
+#X text 245 344 released under the GNU GPL;
+#X text 28 330 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 39 121 moses 0;
+#X obj 40 161 abs;
+#X obj 115 232 pow;
+#X obj 41 257 * -1;
#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 4 0 14 0;
+#X connect 5 0 17 0;
#X connect 7 0 5 1;
+#X connect 7 0 16 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;
+#X connect 14 0 15 0;
+#X connect 14 1 16 0;
+#X connect 15 0 5 0;
+#X connect 16 0 1 0;
+#X connect 17 0 1 0;
diff --git a/pd/keygate.pd b/pd/keygate.pd
new file mode 100644
index 0000000..2da19c5
--- /dev/null
+++ b/pd/keygate.pd
@@ -0,0 +1,43 @@
+#N canvas 326 22 530 481 10;
+#X obj 44 36 inlet;
+#X obj 44 365 outlet;
+#X obj 44 334 spigot;
+#X text 109 401 (C) Copyright 2004 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X text 326 415 released under the GNU GPL;
+#X text 16 444 $Author: eighthave $;
+#X text 16 461 $Date: 2006-01-29 08:12:33 $;
+#X text 16 427 $Revision: 1.1 $;
+#X obj 132 26 loadbang;
+#X text 5 6 [keygate];
+#X obj 182 333 spigot;
+#X obj 182 365 outlet;
+#X obj 273 204 - 1;
+#X obj 273 224 abs;
+#X obj 236 27 keyname;
+#X msg 132 60 0;
+#X msg 183 60 1;
+#X obj 243 181 t f f;
+#X obj 243 157 f;
+#X obj 243 107 sel \$1;
+#X obj 243 86 symbol;
+#X obj 236 57 trigger bang float;
+#X connect 0 0 2 0;
+#X connect 0 0 10 0;
+#X connect 2 0 1 0;
+#X connect 8 0 15 0;
+#X connect 8 0 16 0;
+#X connect 10 0 11 0;
+#X connect 12 0 13 0;
+#X connect 13 0 10 1;
+#X connect 14 0 21 0;
+#X connect 14 1 20 1;
+#X connect 15 0 2 1;
+#X connect 16 0 10 1;
+#X connect 17 0 2 1;
+#X connect 17 1 12 0;
+#X connect 18 0 17 0;
+#X connect 19 0 18 0;
+#X connect 20 0 19 0;
+#X connect 21 0 20 0;
+#X connect 21 1 18 1;
diff --git a/pd/notescale.pd b/pd/notescale.pd
new file mode 100644
index 0000000..8c63369
--- /dev/null
+++ b/pd/notescale.pd
@@ -0,0 +1,29 @@
+#N canvas 37 318 444 446 10;
+#X obj 64 49 inlet;
+#X obj 64 389 outlet;
+#X obj 64 325 int;
+#X obj 64 297 expr $f1 * ($f3 - $f2) + $f2;
+#X obj 357 231 f \$2;
+#X obj 159 230 f \$1;
+#X obj 159 257 expr if ($f1 == $f2 \, 0 \, $f1) \; if ($f1 == $f2 \,
+127 \, $f2);
+#X text 10 7 [notescale];
+#X obj 229 152 loadbang;
+#X obj 229 179 t b b;
+#X text 114 49 input range: 0 to 1;
+#X obj 64 96 min 1;
+#X obj 64 116 max 0;
+#X text 123 389 output range: MIDI note #s;
+#X connect 0 0 11 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 1;
+#X connect 5 0 6 0;
+#X connect 6 0 3 1;
+#X connect 6 1 3 2;
+#X connect 8 0 9 0;
+#X connect 9 0 5 0;
+#X connect 9 1 4 0;
+#X connect 11 0 12 0;
+#X connect 12 0 3 0;
+#X connect 12 0 9 0;
diff --git a/pd/spiral.pd b/pd/spiral.pd
new file mode 100644
index 0000000..24fcd8d
--- /dev/null
+++ b/pd/spiral.pd
@@ -0,0 +1,46 @@
+#N canvas 492 167 673 445 10;
+#X obj 30 58 inlet;
+#X obj 25 363 outlet;
+#X text 73 363 output range: 0 to 1;
+#X text 72 57 input range: 0 to 1;
+#X obj 232 362 outlet;
+#X obj 222 58 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 text 254 411 released under the GNU GPL;
+#X text 40 396 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 309 258 +;
+#X msg 260 227 1;
+#X msg 356 227 -1;
+#X obj 232 327 +;
+#X obj 262 161 delta;
+#X obj 310 291 * 1;
+#X obj 262 185 moses -0.4;
+#X obj 312 205 moses 0.4;
+#X text 273 90 changes over 0.4 mean one rotation. I can't move fast
+enough on my joystick to get near a change of 0.4 This might not work
+on other devices \, like tablets \, but we'll cross that bridge when
+we get to it (i.e. when I get a tablet);
+#X text 280 362 output range: infinite \, one rotation = 1;
+#X obj 105 109 polar;
+#X obj 135 133 trigger float float;
+#X obj 340 258 float;
+#X connect 0 0 21 0;
+#X connect 5 0 21 1;
+#X connect 11 0 16 0;
+#X connect 11 0 23 0;
+#X connect 12 0 11 0;
+#X connect 13 0 11 0;
+#X connect 14 0 4 0;
+#X connect 15 0 17 0;
+#X connect 16 0 14 1;
+#X connect 17 0 12 0;
+#X connect 17 1 18 0;
+#X connect 18 1 13 0;
+#X connect 21 0 1 0;
+#X connect 21 1 22 0;
+#X connect 22 0 14 0;
+#X connect 22 1 15 0;
+#X connect 23 0 11 1;
diff --git a/spiral.pd b/spiral.pd
new file mode 100644
index 0000000..24fcd8d
--- /dev/null
+++ b/spiral.pd
@@ -0,0 +1,46 @@
+#N canvas 492 167 673 445 10;
+#X obj 30 58 inlet;
+#X obj 25 363 outlet;
+#X text 73 363 output range: 0 to 1;
+#X text 72 57 input range: 0 to 1;
+#X obj 232 362 outlet;
+#X obj 222 58 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 text 254 411 released under the GNU GPL;
+#X text 40 396 (C) Copyright 2005 Hans-Christoph Steiner <hans@at.or.at>
+;
+#X obj 309 258 +;
+#X msg 260 227 1;
+#X msg 356 227 -1;
+#X obj 232 327 +;
+#X obj 262 161 delta;
+#X obj 310 291 * 1;
+#X obj 262 185 moses -0.4;
+#X obj 312 205 moses 0.4;
+#X text 273 90 changes over 0.4 mean one rotation. I can't move fast
+enough on my joystick to get near a change of 0.4 This might not work
+on other devices \, like tablets \, but we'll cross that bridge when
+we get to it (i.e. when I get a tablet);
+#X text 280 362 output range: infinite \, one rotation = 1;
+#X obj 105 109 polar;
+#X obj 135 133 trigger float float;
+#X obj 340 258 float;
+#X connect 0 0 21 0;
+#X connect 5 0 21 1;
+#X connect 11 0 16 0;
+#X connect 11 0 23 0;
+#X connect 12 0 11 0;
+#X connect 13 0 11 0;
+#X connect 14 0 4 0;
+#X connect 15 0 17 0;
+#X connect 16 0 14 1;
+#X connect 17 0 12 0;
+#X connect 17 1 18 0;
+#X connect 18 1 13 0;
+#X connect 21 0 1 0;
+#X connect 21 1 22 0;
+#X connect 22 0 14 0;
+#X connect 22 1 15 0;
+#X connect 23 0 11 1;