aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2007-04-17 05:25:46 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2007-04-17 05:25:46 +0000
commit271bd5960eb6d11edb21ed7070dc92cbb4aa48a6 (patch)
treee14a3909c98c2393b83389a0f51649e8bf4812b5
parent9326d1df4dde05b6ce826d87dd9feef78b3fcb4b (diff)
went on a curve binge at the Patching Circle. I also discovered that Cyrille's breakpoint_smooth is the same as elliptic.pd
svn path=/trunk/externals/mapping/; revision=7571
-rw-r--r--circular.pd6
-rw-r--r--circular_seat.pd2
-rw-r--r--cubic_seat.pd33
-rw-r--r--elliptic.pd65
-rw-r--r--help/circular-help.pd114
-rw-r--r--help/circular_seat-help.pd18
-rw-r--r--help/cubic_seat-help.pd131
-rw-r--r--help/elliptic-help.pd131
-rw-r--r--help/quadratic-help.pd133
-rw-r--r--help/simplified_cubic_seat-help.pd131
-rw-r--r--help/simplified_quadratic-help.pd123
-rw-r--r--quadratic.pd30
-rw-r--r--simplified_cubic_seat.pd36
-rw-r--r--simplified_quadratic.pd32
14 files changed, 975 insertions, 10 deletions
diff --git a/circular.pd b/circular.pd
new file mode 100644
index 0000000..1cb0bfb
--- /dev/null
+++ b/circular.pd
@@ -0,0 +1,6 @@
+#N canvas 577 316 599 452 10;
+#X obj 62 10 inlet;
+#X obj 195 405 outlet;
+#X obj 65 172 expr 1 - sqrt(1 - pow($f1 \, 2));
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/circular_seat.pd b/circular_seat.pd
index c2c5f76..c216b61 100644
--- a/circular_seat.pd
+++ b/circular_seat.pd
@@ -1,4 +1,4 @@
-#N canvas 508 166 591 444 10;
+#N canvas 508 166 595 448 10;
#X obj 62 10 inlet;
#X obj 195 405 outlet;
#X obj 240 10 loadbang;
diff --git a/cubic_seat.pd b/cubic_seat.pd
new file mode 100644
index 0000000..2f79ff1
--- /dev/null
+++ b/cubic_seat.pd
@@ -0,0 +1,33 @@
+#N canvas 571 181 589 471 12;
+#X obj 42 10 inlet;
+#X obj 349 13 inlet;
+#X obj 106 405 outlet;
+#X obj 220 10 loadbang;
+#X obj 147 9 inlet;
+#X obj 147 50 purepd/float_argument \$1;
+#X obj 349 54 purepd/float_argument \$2;
+#X obj 42 113 moses;
+#X obj 147 97 moses 1;
+#X obj 147 121 + 1e-06;
+#X text 202 106 prevent divide by 0;
+#X obj 7 199 expr $f3 - $f3*pow(1 - $f1/$f2 \, 3);
+#X obj 152 275 expr $f3 + (1 - $f3) * pow(($f1 - $f2) / (1 - $f2) \,
+3);
+#X obj 349 121 float;
+#X connect 0 0 7 0;
+#X connect 1 0 6 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 1;
+#X connect 5 0 8 0;
+#X connect 6 0 13 0;
+#X connect 7 0 11 0;
+#X connect 7 1 12 0;
+#X connect 8 0 9 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 11 0 2 0;
+#X connect 12 0 2 0;
+#X connect 13 0 11 2;
+#X connect 13 0 12 2;
diff --git a/elliptic.pd b/elliptic.pd
new file mode 100644
index 0000000..3a81754
--- /dev/null
+++ b/elliptic.pd
@@ -0,0 +1,65 @@
+#N canvas 408 22 535 556 12;
+#X obj 345 96 t b f;
+#X obj 43 353 pow;
+#X msg 385 286 1 \$1;
+#X obj 385 311 -;
+#X obj 43 246 moses;
+#X obj 43 325 /;
+#X obj 43 381 *;
+#X obj 80 323 /;
+#X msg 211 288 1 \$1;
+#X obj 211 313 -;
+#X obj 161 314 - 1;
+#X obj 161 342 * -1;
+#X obj 161 398 pow;
+#X obj 161 371 /;
+#X obj 161 422 *;
+#X obj 211 369 /;
+#X obj 161 446 * -1;
+#X obj 161 470 + 1;
+#X obj 43 518 outlet;
+#X obj 43 10 inlet;
+#X obj 160 12 inlet;
+#X obj 345 12 inlet;
+#X text 89 11 input;
+#X text 205 11 X;
+#X text 396 13 Y;
+#X obj 160 152 f;
+#X obj 250 30 loadbang;
+#X obj 157 70 purepd/float_argument \$1;
+#X obj 345 70 purepd/float_argument \$2;
+#X connect 0 0 25 0;
+#X connect 0 1 2 0;
+#X connect 0 1 6 1;
+#X connect 0 1 7 1;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 3 0 14 1;
+#X connect 3 0 15 1;
+#X connect 4 0 5 0;
+#X connect 4 1 10 0;
+#X connect 5 0 1 0;
+#X connect 6 0 18 0;
+#X connect 7 0 1 1;
+#X connect 8 0 9 0;
+#X connect 9 0 15 0;
+#X connect 9 0 13 1;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 0;
+#X connect 14 0 16 0;
+#X connect 15 0 12 1;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 19 0 4 0;
+#X connect 20 0 27 0;
+#X connect 21 0 28 0;
+#X connect 25 0 8 0;
+#X connect 25 0 7 0;
+#X connect 25 0 4 1;
+#X connect 25 0 5 1;
+#X connect 26 0 27 0;
+#X connect 26 0 28 0;
+#X connect 27 0 25 0;
+#X connect 28 0 0 0;
diff --git a/help/circular-help.pd b/help/circular-help.pd
new file mode 100644
index 0000000..ebe0ed3
--- /dev/null
+++ b/help/circular-help.pd
@@ -0,0 +1,114 @@
+#N canvas 399 232 494 437 10;
+#X obj 5 2 cnv 15 450 20 empty empty circular 2 11 1 18 -233017 -66577
+0;
+#X msg 422 3 pddp;
+#X text 273 392 released under the GNU GPL;
+#X text 148 361 For more info:;
+#X floatatom 15 127 8 0 0 0 - - -;
+#X floatatom 15 288 8 0 0 0 - - -;
+#X obj 18 305 hsl 200 20 0 1 0 0 empty empty curved_output 22 11 1
+12 -262144 -1 -1 0 1;
+#X obj 18 101 hsl 200 20 0 1 0 0 empty empty raw_input 22 11 1 12 -261681
+-1 -1 0 1;
+#N canvas 144 55 490 423 draw_array 0;
+#X msg 54 82 bang;
+#X obj 54 133 until;
+#X text 85 82 start;
+#X obj 54 155 f;
+#X obj 83 155 + 1;
+#X obj 54 43 loadbang;
+#X obj 54 210 trigger float float;
+#X obj 127 157 select 0;
+#X obj 53 343 tabwrite \$0-curve;
+#X obj 139 53 trigger bang float;
+#X obj 83 177 mod 200;
+#X obj 54 237 / 200;
+#X text 96 237 mapping output range: 0 to 1;
+#N canvas 0 22 461 369 receive 0;
+#X obj 253 33 receive \$0-y;
+#X obj 253 57 moses;
+#X obj 280 78 moses 201;
+#X obj 331 99 bang;
+#X msg 331 120 200;
+#X obj 238 98 bang;
+#X msg 238 119 0;
+#X obj 91 56 moses;
+#X obj 118 77 moses 201;
+#X obj 169 98 bang;
+#X msg 169 119 200;
+#X obj 76 97 bang;
+#X msg 76 118 0;
+#X obj 91 32 receive \$0-x;
+#X obj 117 289 receive \$0-x-slider;
+#X floatatom 118 312 5 0 0 0 - - -;
+#X floatatom 279 313 5 0 0 0 - - -;
+#X obj 280 290 receive \$0-y-slider;
+#X obj 118 169 / 200;
+#X obj 280 170 / 200;
+#X obj 118 249 send \$0-x-slider-receive;
+#X obj 280 250 send \$0-y-slider-receive;
+#X msg 281 193 1 \$1;
+#X obj 280 221 -;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 19 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 19 0;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 8 0 18 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 18 0;
+#X connect 11 0 12 0;
+#X connect 12 0 18 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X restore 265 348 pd receive from gcanvas;
+#X obj 138 9 receive \$0-x-slider;
+#X obj 54 106 cyclone/speedlim 100;
+#X obj 53 293 circular;
+#X connect 0 0 15 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 6 0 11 0;
+#X connect 6 1 8 1;
+#X connect 7 0 1 1;
+#X connect 9 0 0 0;
+#X connect 10 0 3 1;
+#X connect 10 0 7 0;
+#X connect 11 0 16 0;
+#X connect 14 0 9 0;
+#X connect 15 0 1 0;
+#X connect 16 0 8 0;
+#X restore 367 71 pd draw_array;
+#X obj 252 359 pddp/open mapping-about;
+#X text 6 391 (C) Copyright 2007 Free Software Foundation;
+#X obj 15 207 circular;
+#X obj 262 103 gcanvas 200 200;
+#N canvas 0 22 450 300 graph1 0;
+#X array \$0-curve 200 float 0;
+#X coords 0 1 199 0 200 200 1;
+#X restore 262 103 graph;
+#X obj 262 308 send \$0-x;
+#X obj 404 307 send \$0-y;
+#X text 17 39 This object curves the input range using a double-circular
+seat controlled by one parameter.;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 7 0 4 0;
+#X connect 11 0 5 0;
+#X connect 12 0 14 0;
+#X connect 12 1 15 0;
diff --git a/help/circular_seat-help.pd b/help/circular_seat-help.pd
index cb785a1..885a4b0 100644
--- a/help/circular_seat-help.pd
+++ b/help/circular_seat-help.pd
@@ -1,4 +1,4 @@
-#N canvas 107 47 486 429 10;
+#N canvas 399 232 490 433 10;
#X obj 5 2 cnv 15 450 20 empty empty circular_seat 2 11 1 18 -233017
-66577 0;
#X msg 422 3 pddp;
@@ -10,7 +10,7 @@
12 -262144 -1 -1 0 1;
#X obj 18 101 hsl 200 20 0 1 0 0 empty empty raw_input 22 11 1 12 -261681
-1 -1 0 1;
-#N canvas 273 69 470 403 draw_array 0;
+#N canvas 273 69 474 407 draw_array 0;
#X msg 54 82 bang;
#X obj 54 133 until;
#X text 85 82 start;
@@ -75,9 +75,9 @@
#X connect 23 0 21 0;
#X restore 265 348 pd receive from gcanvas;
#X obj 138 9 receive \$0-x-slider;
-#X obj 54 108 speedlim 100;
#X obj 53 313 circular_seat;
-#X connect 0 0 15 0;
+#X obj 54 106 cyclone/speedlim 100;
+#X connect 0 0 16 0;
#X connect 1 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 6 0;
@@ -87,13 +87,13 @@
#X connect 6 1 8 1;
#X connect 7 0 1 1;
#X connect 9 0 0 0;
-#X connect 9 1 16 1;
+#X connect 9 1 15 1;
#X connect 10 0 3 1;
#X connect 10 0 7 0;
-#X connect 11 0 16 0;
+#X connect 11 0 15 0;
#X connect 14 0 9 0;
-#X connect 15 0 1 0;
-#X connect 16 0 8 0;
+#X connect 15 0 8 0;
+#X connect 16 0 1 0;
#X restore 367 71 pd draw_array;
#X obj 252 359 pddp/open mapping-about;
#X text 6 391 (C) Copyright 2007 Free Software Foundation;
@@ -106,7 +106,7 @@
#X obj 262 308 send \$0-x;
#X obj 404 307 send \$0-y;
#X obj 111 167 hsl 50 15 0 1 0 0 \$0-x-slider \$0-x-slider-receive
-x 5 9 0 11 -232576 -1 -1 0 0;
+x 5 9 0 11 -232576 -1 -1 2916 0;
#X floatatom 117 187 7 0 0 0 - - -;
#X text 17 39 This object curves the input range using a double-circular
seat controlled by one parameter.;
diff --git a/help/cubic_seat-help.pd b/help/cubic_seat-help.pd
new file mode 100644
index 0000000..8a7f897
--- /dev/null
+++ b/help/cubic_seat-help.pd
@@ -0,0 +1,131 @@
+#N canvas 249 248 567 425 12;
+#X obj 418 32 import mapping ggee;
+#X obj 5 2 cnv 15 550 20 empty empty cubic_seat 2 11 1 18 -233017 -66577
+0;
+#X msg 516 2 pddp;
+#X text 313 393 released under the GNU GPL;
+#X text 263 356 For more info:;
+#X floatatom 35 127 8 0 0 0 - - -;
+#X floatatom 35 278 8 0 0 0 - - -;
+#X obj 38 305 hsl 200 20 0 1 0 0 empty empty curved_output 22 11 1
+12 -262144 -1 -1 0 1;
+#X obj 38 101 hsl 200 20 0 1 0 0 empty empty raw_input 22 11 1 12 -261681
+-1 -1 0 1;
+#X obj 168 167 hsl 50 15 0 1 0 1 \$0-y-slider \$0-y-slider-receive
+y 5 9 0 11 -204800 -1 -1 2720 0;
+#X floatatom 175 186 7 0 0 0 - - -;
+#X obj 362 356 pddp/open mapping-about;
+#X text 0 393 (C) Copyright 2007 Free Software Foundation;
+#X obj 74 167 hsl 50 15 0 1 0 1 \$0-x-slider \$0-x-slider-receive x
+5 9 0 11 -232576 -1 -1 1984 0;
+#X floatatom 80 187 7 0 0 0 - - -;
+#X text 6 33 This object curves the input range using cubic curves
+that meet at the specified point \, forming a seat.;
+#X obj 35 247 cubic_seat;
+#N canvas 273 69 478 411 draw_array 0;
+#X msg 54 82 bang;
+#X obj 54 133 until;
+#X text 85 82 start;
+#X obj 54 155 f;
+#X obj 83 155 + 1;
+#X obj 54 43 loadbang;
+#X obj 54 210 trigger float float;
+#X obj 127 157 select 0;
+#X obj 66 343 tabwrite \$0-curve;
+#X obj 139 53 trigger bang float;
+#X obj 83 177 mod 200;
+#X obj 54 254 / 200;
+#X text 96 254 mapping output range: 0 to 1;
+#N canvas 0 22 461 369 receive 0;
+#X obj 253 33 receive \$0-y;
+#X obj 253 57 moses;
+#X obj 280 78 moses 201;
+#X obj 331 99 bang;
+#X msg 331 120 200;
+#X obj 238 98 bang;
+#X msg 238 119 0;
+#X obj 91 56 moses;
+#X obj 118 77 moses 201;
+#X obj 169 98 bang;
+#X msg 169 119 200;
+#X obj 76 97 bang;
+#X msg 76 118 0;
+#X obj 91 32 receive \$0-x;
+#X obj 117 289 receive \$0-x-slider;
+#X floatatom 118 312 5 0 0 0 - - -;
+#X floatatom 279 313 5 0 0 0 - - -;
+#X obj 280 290 receive \$0-y-slider;
+#X obj 118 169 / 200;
+#X obj 280 170 / 200;
+#X obj 118 249 send \$0-x-slider-receive;
+#X obj 280 250 send \$0-y-slider-receive;
+#X msg 281 193 1 \$1;
+#X obj 280 221 -;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 19 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 19 0;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 8 0 18 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 18 0;
+#X connect 11 0 12 0;
+#X connect 12 0 18 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X restore 265 348 pd receive from gcanvas;
+#X obj 138 9 receive \$0-x-slider;
+#X obj 293 12 receive \$0-y-slider;
+#X obj 294 50 trigger bang float;
+#X obj 54 108 cyclone/speedlim 100;
+#X obj 54 280 cubic_seat;
+#X connect 0 0 17 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 6 0 11 0;
+#X connect 6 1 8 1;
+#X connect 7 0 1 1;
+#X connect 9 0 0 0;
+#X connect 9 1 18 1;
+#X connect 10 0 3 1;
+#X connect 10 0 7 0;
+#X connect 11 0 18 0;
+#X connect 14 0 9 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 16 1 18 2;
+#X connect 17 0 1 0;
+#X connect 18 0 8 0;
+#X restore 409 71 pd draw_array;
+#X obj 304 103 gcanvas 200 200;
+#N canvas 0 22 450 300 graph1 0;
+#X array \$0-curve 200 float 0;
+#X coords 0 1 199 0 200 200 1;
+#X restore 304 103 graph;
+#X obj 304 308 send \$0-x;
+#X obj 446 307 send \$0-y;
+#X connect 5 0 16 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 9 0 16 2;
+#X connect 13 0 14 0;
+#X connect 13 0 16 1;
+#X connect 16 0 6 0;
+#X connect 18 0 20 0;
+#X connect 18 1 21 0;
diff --git a/help/elliptic-help.pd b/help/elliptic-help.pd
new file mode 100644
index 0000000..1cabc18
--- /dev/null
+++ b/help/elliptic-help.pd
@@ -0,0 +1,131 @@
+#N canvas 249 248 567 425 12;
+#X obj 418 32 import mapping ggee;
+#X obj 5 2 cnv 15 550 20 empty empty elliptic 2 11 1 18 -233017 -66577
+0;
+#X msg 516 2 pddp;
+#X text 313 393 released under the GNU GPL;
+#X text 263 356 For more info:;
+#X floatatom 35 127 8 0 0 0 - - -;
+#X floatatom 35 278 8 0 0 0 - - -;
+#X obj 38 305 hsl 200 20 0 1 0 0 empty empty curved_output 22 11 1
+12 -262144 -1 -1 0 1;
+#X obj 38 101 hsl 200 20 0 1 0 0 empty empty raw_input 22 11 1 12 -261681
+-1 -1 0 1;
+#X obj 168 167 hsl 50 15 0 1 0 1 \$0-y-slider \$0-y-slider-receive
+y 5 9 0 11 -204800 -1 -1 2720 0;
+#X floatatom 175 186 7 0 0 0 - - -;
+#X obj 362 356 pddp/open mapping-about;
+#X text 0 393 (C) Copyright 2007 Free Software Foundation;
+#X obj 74 167 hsl 50 15 0 1 0 1 \$0-x-slider \$0-x-slider-receive x
+5 9 0 11 -232576 -1 -1 1984 0;
+#X floatatom 80 187 7 0 0 0 - - -;
+#X text 6 33 This object curves the input range using two ellipses
+that meet at the specified point.;
+#X obj 35 247 elliptic;
+#N canvas 273 69 478 411 draw_array 0;
+#X msg 54 82 bang;
+#X obj 54 133 until;
+#X text 85 82 start;
+#X obj 54 155 f;
+#X obj 83 155 + 1;
+#X obj 54 43 loadbang;
+#X obj 54 210 trigger float float;
+#X obj 127 157 select 0;
+#X obj 66 343 tabwrite \$0-curve;
+#X obj 139 53 trigger bang float;
+#X obj 83 177 mod 200;
+#X obj 54 254 / 200;
+#X text 96 254 mapping output range: 0 to 1;
+#N canvas 0 22 461 369 receive 0;
+#X obj 253 33 receive \$0-y;
+#X obj 253 57 moses;
+#X obj 280 78 moses 201;
+#X obj 331 99 bang;
+#X msg 331 120 200;
+#X obj 238 98 bang;
+#X msg 238 119 0;
+#X obj 91 56 moses;
+#X obj 118 77 moses 201;
+#X obj 169 98 bang;
+#X msg 169 119 200;
+#X obj 76 97 bang;
+#X msg 76 118 0;
+#X obj 91 32 receive \$0-x;
+#X obj 117 289 receive \$0-x-slider;
+#X floatatom 118 312 5 0 0 0 - - -;
+#X floatatom 279 313 5 0 0 0 - - -;
+#X obj 280 290 receive \$0-y-slider;
+#X obj 118 169 / 200;
+#X obj 280 170 / 200;
+#X obj 118 249 send \$0-x-slider-receive;
+#X obj 280 250 send \$0-y-slider-receive;
+#X msg 281 193 1 \$1;
+#X obj 280 221 -;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 19 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 19 0;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 8 0 18 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 18 0;
+#X connect 11 0 12 0;
+#X connect 12 0 18 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X restore 265 348 pd receive from gcanvas;
+#X obj 138 9 receive \$0-x-slider;
+#X obj 293 12 receive \$0-y-slider;
+#X obj 294 50 trigger bang float;
+#X obj 54 108 cyclone/speedlim 100;
+#X obj 54 280 elliptic;
+#X connect 0 0 17 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 6 0 11 0;
+#X connect 6 1 8 1;
+#X connect 7 0 1 1;
+#X connect 9 0 0 0;
+#X connect 9 1 18 1;
+#X connect 10 0 3 1;
+#X connect 10 0 7 0;
+#X connect 11 0 18 0;
+#X connect 14 0 9 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 16 1 18 2;
+#X connect 17 0 1 0;
+#X connect 18 0 8 0;
+#X restore 409 71 pd draw_array;
+#X obj 304 103 gcanvas 200 200;
+#N canvas 0 22 450 300 graph1 0;
+#X array \$0-curve 200 float 0;
+#X coords 0 1 199 0 200 200 1;
+#X restore 304 103 graph;
+#X obj 304 308 send \$0-x;
+#X obj 446 307 send \$0-y;
+#X connect 5 0 16 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 9 0 16 2;
+#X connect 13 0 14 0;
+#X connect 13 0 16 1;
+#X connect 16 0 6 0;
+#X connect 18 0 20 0;
+#X connect 18 1 21 0;
diff --git a/help/quadratic-help.pd b/help/quadratic-help.pd
new file mode 100644
index 0000000..bec9e7c
--- /dev/null
+++ b/help/quadratic-help.pd
@@ -0,0 +1,133 @@
+#N canvas 511 22 572 442 12;
+#X obj 410 58 import mapping ggee;
+#X obj 5 2 cnv 15 550 20 empty empty quadratic 2 11 1 18 -233017 -66577
+0;
+#X msg 516 2 pddp;
+#X text 313 393 released under the GNU GPL;
+#X text 111 347 For more info:;
+#X floatatom 35 127 8 0 0 0 - - -;
+#X floatatom 35 278 8 0 0 0 - - -;
+#X obj 38 305 hsl 200 20 0 1 0 0 empty empty curved_output 22 11 1
+12 -262144 -1 -1 0 1;
+#X obj 38 101 hsl 200 20 0 1 0 0 empty empty raw_input 22 11 1 12 -261681
+-1 -1 0 1;
+#X obj 148 167 hsl 50 15 0 1 0 1 \$0-y-slider \$0-y-slider-receive
+y 5 9 0 11 -204800 -1 -1 4778 0;
+#X floatatom 155 186 7 0 0 0 - - -;
+#X obj 362 366 pddp/open mapping-about;
+#X text 0 393 (C) Copyright 2007 Free Software Foundation;
+#X obj 54 167 hsl 50 15 0 1 0 1 \$0-x-slider \$0-x-slider-receive x
+5 9 0 11 -232576 -1 -1 2597 0;
+#X floatatom 64 187 7 0 0 0 - - -;
+#N canvas 273 69 482 415 draw_array 0;
+#X msg 54 82 bang;
+#X obj 54 133 until;
+#X text 85 82 start;
+#X obj 54 155 f;
+#X obj 83 155 + 1;
+#X obj 54 43 loadbang;
+#X obj 54 210 trigger float float;
+#X obj 127 157 select 0;
+#X obj 66 343 tabwrite \$0-curve;
+#X obj 139 53 trigger bang float;
+#X obj 83 177 mod 200;
+#X obj 54 254 / 200;
+#X text 96 254 mapping output range: 0 to 1;
+#N canvas 0 22 461 369 receive 0;
+#X obj 253 33 receive \$0-y;
+#X obj 253 57 moses;
+#X obj 280 78 moses 201;
+#X obj 331 99 bang;
+#X msg 331 120 200;
+#X obj 238 98 bang;
+#X msg 238 119 0;
+#X obj 91 56 moses;
+#X obj 118 77 moses 201;
+#X obj 169 98 bang;
+#X msg 169 119 200;
+#X obj 76 97 bang;
+#X msg 76 118 0;
+#X obj 91 32 receive \$0-x;
+#X obj 117 289 receive \$0-x-slider;
+#X floatatom 118 312 5 0 0 0 - - -;
+#X floatatom 279 313 5 0 0 0 - - -;
+#X obj 280 290 receive \$0-y-slider;
+#X obj 118 169 / 200;
+#X obj 280 170 / 200;
+#X obj 118 249 send \$0-x-slider-receive;
+#X obj 280 250 send \$0-y-slider-receive;
+#X msg 281 193 1 \$1;
+#X obj 280 221 -;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 19 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 19 0;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 8 0 18 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 18 0;
+#X connect 11 0 12 0;
+#X connect 12 0 18 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X restore 265 348 pd receive from gcanvas;
+#X obj 138 9 receive \$0-x-slider;
+#X obj 293 12 receive \$0-y-slider;
+#X obj 294 50 trigger bang float;
+#X obj 54 108 cyclone/speedlim 100;
+#X obj 54 280 quadratic;
+#X connect 0 0 17 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 6 0 11 0;
+#X connect 6 1 8 1;
+#X connect 7 0 1 1;
+#X connect 9 0 0 0;
+#X connect 9 1 18 1;
+#X connect 10 0 3 1;
+#X connect 10 0 7 0;
+#X connect 11 0 18 0;
+#X connect 14 0 9 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 16 1 18 2;
+#X connect 17 0 1 0;
+#X connect 18 0 8 0;
+#X restore 305 58 pd draw_array;
+#X obj 304 103 gcanvas 200 200;
+#N canvas 0 22 450 300 graph1 0;
+#X array \$0-curve 200 float 0;
+#X coords 0 1 199 0 200 200 1;
+#X restore 304 103 graph;
+#X obj 304 308 send \$0-x;
+#X obj 446 307 send \$0-y;
+#X text 3 33 This object curves the input range using a quadratic bezier
+curve.;
+#X obj 220 347 pddp/pddplink http://www.tinaja.com/text/bezmath.html
+;
+#X obj 35 218 quadratic;
+#X connect 5 0 22 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 9 0 22 2;
+#X connect 13 0 14 0;
+#X connect 13 0 22 1;
+#X connect 16 0 18 0;
+#X connect 16 1 19 0;
+#X connect 22 0 6 0;
diff --git a/help/simplified_cubic_seat-help.pd b/help/simplified_cubic_seat-help.pd
new file mode 100644
index 0000000..b5a482b
--- /dev/null
+++ b/help/simplified_cubic_seat-help.pd
@@ -0,0 +1,131 @@
+#N canvas 249 248 571 429 12;
+#X obj 418 32 import mapping ggee;
+#X obj 5 2 cnv 15 550 20 empty empty simplified_cubic_seat 2 11 1 18
+-233017 -66577 0;
+#X msg 516 2 pddp;
+#X text 313 393 released under the GNU GPL;
+#X text 263 356 For more info:;
+#X floatatom 35 127 8 0 0 0 - - -;
+#X floatatom 35 278 8 0 0 0 - - -;
+#X obj 38 305 hsl 200 20 0 1 0 0 empty empty curved_output 22 11 1
+12 -262144 -1 -1 0 1;
+#X obj 38 101 hsl 200 20 0 1 0 0 empty empty raw_input 22 11 1 12 -261681
+-1 -1 0 1;
+#X obj 208 167 hsl 50 15 0 1 0 1 \$0-y-slider \$0-y-slider-receive
+y 5 9 0 11 -204800 -1 -1 0 0;
+#X floatatom 215 186 7 0 0 0 - - -;
+#X obj 362 356 pddp/open mapping-about;
+#X text 0 393 (C) Copyright 2007 Free Software Foundation;
+#X obj 114 167 hsl 50 15 0 1 0 1 \$0-x-slider \$0-x-slider-receive
+x 5 9 0 11 -232576 -1 -1 4900 0;
+#X floatatom 120 187 7 0 0 0 - - -;
+#X text 6 33 This object curves the input range using simple cubic
+curves that meet at the specified point \, forming a seat.;
+#X obj 35 247 simplified_cubic_seat;
+#N canvas 273 69 478 411 draw_array 0;
+#X msg 54 82 bang;
+#X obj 54 133 until;
+#X text 85 82 start;
+#X obj 54 155 f;
+#X obj 83 155 + 1;
+#X obj 54 43 loadbang;
+#X obj 54 210 trigger float float;
+#X obj 127 157 select 0;
+#X obj 66 343 tabwrite \$0-curve;
+#X obj 139 53 trigger bang float;
+#X obj 83 177 mod 200;
+#X obj 54 254 / 200;
+#X text 96 254 mapping output range: 0 to 1;
+#N canvas 0 22 461 369 receive 0;
+#X obj 253 33 receive \$0-y;
+#X obj 253 57 moses;
+#X obj 280 78 moses 201;
+#X obj 331 99 bang;
+#X msg 331 120 200;
+#X obj 238 98 bang;
+#X msg 238 119 0;
+#X obj 91 56 moses;
+#X obj 118 77 moses 201;
+#X obj 169 98 bang;
+#X msg 169 119 200;
+#X obj 76 97 bang;
+#X msg 76 118 0;
+#X obj 91 32 receive \$0-x;
+#X obj 117 289 receive \$0-x-slider;
+#X floatatom 118 312 5 0 0 0 - - -;
+#X floatatom 279 313 5 0 0 0 - - -;
+#X obj 280 290 receive \$0-y-slider;
+#X obj 118 169 / 200;
+#X obj 280 170 / 200;
+#X obj 118 249 send \$0-x-slider-receive;
+#X obj 280 250 send \$0-y-slider-receive;
+#X msg 281 193 1 \$1;
+#X obj 280 221 -;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 19 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 19 0;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 8 0 18 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 18 0;
+#X connect 11 0 12 0;
+#X connect 12 0 18 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X restore 265 348 pd receive from gcanvas;
+#X obj 138 9 receive \$0-x-slider;
+#X obj 293 12 receive \$0-y-slider;
+#X obj 294 50 trigger bang float;
+#X obj 54 108 cyclone/speedlim 100;
+#X obj 54 280 simplified_cubic_seat;
+#X connect 0 0 17 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 6 0 11 0;
+#X connect 6 1 8 1;
+#X connect 7 0 1 1;
+#X connect 9 0 0 0;
+#X connect 9 1 18 1;
+#X connect 10 0 3 1;
+#X connect 10 0 7 0;
+#X connect 11 0 18 0;
+#X connect 14 0 9 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 16 1 18 2;
+#X connect 17 0 1 0;
+#X connect 18 0 8 0;
+#X restore 409 71 pd draw_array;
+#X obj 304 103 gcanvas 200 200;
+#N canvas 0 22 450 300 graph1 0;
+#X array \$0-curve 200 float 0;
+#X coords 0 1 199 0 200 200 1;
+#X restore 304 103 graph;
+#X obj 304 308 send \$0-x;
+#X obj 446 307 send \$0-y;
+#X connect 5 0 16 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 9 0 16 2;
+#X connect 13 0 14 0;
+#X connect 13 0 16 1;
+#X connect 16 0 6 0;
+#X connect 18 0 20 0;
+#X connect 18 1 21 0;
diff --git a/help/simplified_quadratic-help.pd b/help/simplified_quadratic-help.pd
new file mode 100644
index 0000000..211e127
--- /dev/null
+++ b/help/simplified_quadratic-help.pd
@@ -0,0 +1,123 @@
+#N canvas 360 135 572 442 12;
+#X obj 413 35 import mapping ggee;
+#X obj 5 2 cnv 15 550 20 empty empty simplified_quadratic 2 11 1 18
+-233017 -66577 0;
+#X msg 516 2 pddp;
+#X text 324 394 released under the GNU GPL;
+#X text 243 352 For more info:;
+#X floatatom 35 127 8 0 0 0 - - -;
+#X floatatom 35 278 8 0 0 0 - - -;
+#X obj 38 305 hsl 200 20 0 1 0 0 empty empty curved_output 22 11 1
+12 -262144 -1 -1 0 1;
+#X obj 38 101 hsl 200 20 0 1 0 0 empty empty raw_input 22 11 1 12 -261681
+-1 -1 0 1;
+#X obj 360 352 pddp/open mapping-about;
+#X text 11 394 (C) Copyright 2007 Free Software Foundation;
+#X obj 175 167 hsl 50 15 0 1 0 1 \$0-x-slider \$0-x-slider-receive
+x 5 9 0 11 -232576 -1 -1 1495 0;
+#X floatatom 181 187 7 0 0 0 - - -;
+#X obj 35 217 simplified_quadratic;
+#N canvas 273 69 482 415 draw_array 0;
+#X msg 54 82 bang;
+#X obj 54 133 until;
+#X text 85 82 start;
+#X obj 54 155 f;
+#X obj 83 155 + 1;
+#X obj 54 43 loadbang;
+#X obj 54 210 trigger float float;
+#X obj 127 157 select 0;
+#X obj 66 343 tabwrite \$0-curve;
+#X obj 139 53 trigger bang float;
+#X obj 83 177 mod 200;
+#X obj 54 254 / 200;
+#X text 96 254 mapping output range: 0 to 1;
+#N canvas 0 22 461 369 receive 0;
+#X obj 253 33 receive \$0-y;
+#X obj 253 57 moses;
+#X obj 280 78 moses 201;
+#X obj 331 99 bang;
+#X msg 331 120 200;
+#X obj 238 98 bang;
+#X msg 238 119 0;
+#X obj 91 56 moses;
+#X obj 118 77 moses 201;
+#X obj 169 98 bang;
+#X msg 169 119 200;
+#X obj 76 97 bang;
+#X msg 76 118 0;
+#X obj 91 32 receive \$0-x;
+#X obj 117 289 receive \$0-x-slider;
+#X floatatom 118 312 5 0 0 0 - - -;
+#X floatatom 279 313 5 0 0 0 - - -;
+#X obj 280 290 receive \$0-y-slider;
+#X obj 118 169 / 200;
+#X obj 280 170 / 200;
+#X obj 118 249 send \$0-x-slider-receive;
+#X obj 280 250 send \$0-y-slider-receive;
+#X msg 281 193 1 \$1;
+#X obj 280 221 -;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 19 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 19 0;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 11 0;
+#X connect 7 1 8 0;
+#X connect 8 0 18 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 18 0;
+#X connect 11 0 12 0;
+#X connect 12 0 18 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X restore 265 348 pd receive from gcanvas;
+#X obj 138 9 receive \$0-x-slider;
+#X obj 293 12 receive \$0-y-slider;
+#X obj 294 50 trigger bang float;
+#X obj 54 108 cyclone/speedlim 100;
+#X obj 54 280 simplified_quadratic;
+#X connect 0 0 17 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 0;
+#X connect 6 0 11 0;
+#X connect 6 1 8 1;
+#X connect 7 0 1 1;
+#X connect 9 0 0 0;
+#X connect 9 1 18 1;
+#X connect 10 0 3 1;
+#X connect 10 0 7 0;
+#X connect 11 0 18 0;
+#X connect 14 0 9 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 17 0 1 0;
+#X connect 18 0 8 0;
+#X restore 409 73 pd draw_array;
+#X obj 304 103 gcanvas 200 200;
+#N canvas 0 22 450 300 graph1 0;
+#X array \$0-curve 200 float 0;
+#X coords 0 1 199 0 200 200 1;
+#X restore 304 103 graph;
+#X obj 304 308 send \$0-x;
+#X text 3 33 This object curves the input range using a simplified
+quadratic bezier curve controlled by one parameter.;
+#X connect 5 0 13 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 0;
+#X connect 11 0 12 0;
+#X connect 11 0 13 1;
+#X connect 13 0 6 0;
+#X connect 15 0 17 0;
diff --git a/quadratic.pd b/quadratic.pd
new file mode 100644
index 0000000..32d46a4
--- /dev/null
+++ b/quadratic.pd
@@ -0,0 +1,30 @@
+#N canvas 79 279 589 471 10;
+#X obj 22 10 inlet;
+#X obj 412 9 inlet;
+#X obj 174 405 outlet;
+#X obj 270 10 loadbang;
+#X obj 167 9 inlet;
+#X obj 167 50 purepd/float_argument \$1;
+#X obj 412 50 purepd/float_argument \$2;
+#X obj 167 97 select 0.5;
+#X obj 224 149 float;
+#X msg 167 121 0.50001;
+#X text 225 121 prevent divide by 0;
+#X obj 271 213 expr 1 - 2*$f1;
+#X obj 22 250 expr (sqrt($f2*$f2 + $f3*$f1) - $f2) / $f3;
+#X obj 175 309 expr (1 - 2*$f2)*($f1*$f1) + (2*$f2)*$f1;
+#X connect 0 0 12 0;
+#X connect 1 0 6 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 13 1;
+#X connect 7 0 9 0;
+#X connect 7 1 8 0;
+#X connect 8 0 11 0;
+#X connect 8 0 12 1;
+#X connect 9 0 8 0;
+#X connect 11 0 12 2;
+#X connect 12 0 13 0;
+#X connect 13 0 2 0;
diff --git a/simplified_cubic_seat.pd b/simplified_cubic_seat.pd
new file mode 100644
index 0000000..87bf333
--- /dev/null
+++ b/simplified_cubic_seat.pd
@@ -0,0 +1,36 @@
+#N canvas 515 141 585 467 12;
+#X obj 42 10 inlet;
+#X obj 349 13 inlet;
+#X obj 106 405 outlet;
+#X obj 220 10 loadbang;
+#X obj 147 9 inlet;
+#X obj 147 50 purepd/float_argument \$1;
+#X obj 349 54 purepd/float_argument \$2;
+#X obj 42 113 moses;
+#X obj 349 110 -;
+#X msg 349 87 1 \$1;
+#X obj 7 199 expr $f3*$f1 + (1-$f3)*$f2*(1 - pow(1 - $f1/$f2 \, 3))
+;
+#X obj 147 97 moses 1;
+#X obj 147 121 + 1e-06;
+#X text 202 106 prevent divide by 0;
+#X obj 152 275 expr $f3*$f1 + (1-$f3)*($f2 + (1-$f2)*pow(($f1-$f2)
+/ (1-$f2) \, 3));
+#X connect 0 0 7 0;
+#X connect 1 0 6 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 1;
+#X connect 5 0 11 0;
+#X connect 6 0 9 0;
+#X connect 7 0 10 0;
+#X connect 7 1 14 0;
+#X connect 8 0 10 2;
+#X connect 8 0 14 2;
+#X connect 9 0 8 0;
+#X connect 10 0 2 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 1;
+#X connect 12 0 14 1;
+#X connect 14 0 2 0;
diff --git a/simplified_quadratic.pd b/simplified_quadratic.pd
new file mode 100644
index 0000000..a38e739
--- /dev/null
+++ b/simplified_quadratic.pd
@@ -0,0 +1,32 @@
+#N canvas 206 281 589 471 10;
+#X obj 22 10 inlet;
+#X obj 174 435 outlet;
+#X obj 270 10 loadbang;
+#X obj 167 9 inlet;
+#X obj 167 50 purepd/float_argument \$1;
+#X obj 167 157 select 0.5;
+#X obj 224 209 float;
+#X msg 167 181 0.50001;
+#X text 225 181 prevent divide by 0;
+#X obj 271 243 expr 1 - 2*$f1;
+#X obj 22 280 expr (sqrt($f2*$f2 + $f3*$f1) - $f2) / $f3;
+#X obj 175 339 expr (1 - 2*$f2)*($f1*$f1) + (2*$f2)*$f1;
+#X obj 278 82 * 2;
+#X obj 317 126 - 1;
+#X obj 278 104 moses 1;
+#X connect 0 0 10 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 12 0;
+#X connect 5 0 7 0;
+#X connect 5 1 6 0;
+#X connect 6 0 9 0;
+#X connect 6 0 10 1;
+#X connect 7 0 6 0;
+#X connect 9 0 10 2;
+#X connect 10 0 11 0;
+#X connect 11 0 1 0;
+#X connect 12 0 14 0;
+#X connect 13 0 11 1;
+#X connect 14 0 5 0;
+#X connect 14 1 13 0;