aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2006-02-10 05:21:35 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2006-02-10 05:21:35 +0000
commitb0694283829f7627cd424ae0a417b6eb5c985377 (patch)
treee5a81cd48afded643bcbcaa6d10a5c936bd1d3da
parent47950158fef8a54a1b1e416f5dc7cf6cedcf2989 (diff)
added Cyrille's list handling objects
svn path=/trunk/externals/mapping/; revision=4575
-rw-r--r--curve_exp.pd18
-rw-r--r--delay_n.pd15
-rw-r--r--diff_n.pd13
-rw-r--r--distance_n.pd101
-rw-r--r--help/delay_n-help.pd18
-rw-r--r--help/diff_n-help.pd10
-rw-r--r--help/distance_n-help.pd34
-rw-r--r--help/last_n-help.pd8
-rw-r--r--help/local_max-help.pd8
-rw-r--r--help/local_min-help.pd11
-rw-r--r--help/max_n-help.pd26
-rw-r--r--help/mean_n-help.pd22
-rw-r--r--help/min_n-help.pd24
-rw-r--r--last_n.pd21
-rw-r--r--local_max.pd23
-rw-r--r--local_min.pd23
-rw-r--r--max_n.pd16
-rw-r--r--mean_n.pd29
-rw-r--r--min_n.pd16
-rw-r--r--pd/curve_exp.pd18
-rw-r--r--pd/delay_n.pd15
-rw-r--r--pd/diff_n.pd13
-rw-r--r--pd/distance_n.pd101
-rw-r--r--pd/last_n.pd21
-rw-r--r--pd/local_max.pd23
-rw-r--r--pd/local_min.pd23
-rw-r--r--pd/max_n.pd16
-rw-r--r--pd/mean_n.pd29
-rw-r--r--pd/min_n.pd16
29 files changed, 693 insertions, 18 deletions
diff --git a/curve_exp.pd b/curve_exp.pd
index e77d677..a15e6b5 100644
--- a/curve_exp.pd
+++ b/curve_exp.pd
@@ -1,8 +1,7 @@
-#N canvas 225 325 507 333 10;
+#N canvas 225 325 511 337 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;
@@ -13,12 +12,13 @@
#X text 248 296 released under the GNU GPL;
#X text 31 282 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
;
+#X obj 22 116 * -1;
#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 2 0 12 0;
+#X connect 2 1 6 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 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;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 12 0 5 0;
diff --git a/delay_n.pd b/delay_n.pd
new file mode 100644
index 0000000..243b936
--- /dev/null
+++ b/delay_n.pd
@@ -0,0 +1,15 @@
+#N canvas 212 243 661 510 10;
+#X obj 160 88 t f b;
+#X obj 49 86 list;
+#X obj 159 50 inlet;
+#X obj 49 52 inlet;
+#X obj 93 200 outlet;
+#X obj 49 131 list split \$1;
+#X connect 0 0 5 1;
+#X connect 0 1 1 1;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 5 0 1 1;
+#X connect 5 1 4 0;
+#X connect 5 2 1 1;
diff --git a/diff_n.pd b/diff_n.pd
new file mode 100644
index 0000000..c3fd06f
--- /dev/null
+++ b/diff_n.pd
@@ -0,0 +1,13 @@
+#N canvas 246 155 294 362 10;
+#X obj 59 49 inlet;
+#X obj 59 184 outlet;
+#X obj 175 93 inlet;
+#X obj 59 93 t f f;
+#X obj 59 152 -;
+#X obj 89 119 delay_n \$1;
+#X connect 0 0 3 0;
+#X connect 2 0 5 1;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 1;
diff --git a/distance_n.pd b/distance_n.pd
new file mode 100644
index 0000000..85f6a70
--- /dev/null
+++ b/distance_n.pd
@@ -0,0 +1,101 @@
+#N canvas 872 510 450 424 10;
+#N canvas 640 117 487 367 drip-two-lists 0;
+#X obj 64 243 outlet;
+#X obj 64 57 inlet;
+#X obj 157 240 outlet;
+#X obj 225 242 outlet;
+#X obj 321 95 inlet;
+#X text 272 240 End;
+#X obj 64 156 t a b;
+#N canvas 0 0 533 407 drip 0;
+#X obj 64 206 list split 1;
+#X obj 64 123 until;
+#X obj 64 181 list append;
+#X obj 194 206 bang;
+#X text 146 90 First store list \, then start the loop;
+#X text 163 118 "until" bangs its output until told to stop by a "bang"
+to its right inlet.;
+#X text 182 160 Store the remaining list.;
+#X text 239 205 third outlet of "split" tells us to stop.;
+#X obj 64 243 outlet;
+#X obj 64 57 inlet;
+#X text 237 44 From list-help.pd;
+#X obj 143 243 outlet;
+#X obj 64 86 t b a;
+#X connect 0 0 8 0;
+#X connect 0 1 2 1;
+#X connect 0 2 3 0;
+#X connect 0 2 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 1;
+#X connect 9 0 12 0;
+#X connect 12 0 1 0;
+#X connect 12 1 2 1;
+#X restore 64 122 pd drip;
+#N canvas 0 0 533 407 dripslow 0;
+#X obj 87 232 list split 1;
+#X obj 87 207 list append;
+#X obj 87 283 outlet;
+#X obj 87 83 inlet;
+#X obj 166 283 outlet;
+#X obj 159 81 inlet;
+#X obj 87 118 b;
+#X text 202 82 list;
+#X text 42 83 bang;
+#X text 210 283 EOL;
+#X text 28 282 element;
+#X obj 166 253 b;
+#X connect 0 0 2 0;
+#X connect 0 1 1 1;
+#X connect 0 2 11 0;
+#X connect 1 0 0 0;
+#X connect 3 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 0;
+#X connect 11 0 4 0;
+#X restore 158 191 pd dripslow;
+#X connect 1 0 7 0;
+#X connect 4 0 8 1;
+#X connect 6 0 0 0;
+#X connect 6 1 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 3 0;
+#X connect 8 0 2 0;
+#X restore 133 139 pd drip-two-lists;
+#X obj 113 27 inlet;
+#X obj 287 20 inlet;
+#X obj 133 167 -;
+#X obj 133 195 t f f;
+#X obj 133 224 *;
+#X obj 134 278 f;
+#X obj 133 256 +;
+#X msg 196 197 0;
+#X obj 118 300 f;
+#X obj 119 325 sqrt;
+#X obj 118 349 outlet;
+#X msg 313 61 1 2 3 5 7 8;
+#X msg 134 62 1 2 3 4 5 6;
+#X obj 246 99 list;
+#X obj 115 98 t b a b b;
+#X connect 0 0 3 0;
+#X connect 0 1 3 1;
+#X connect 1 0 15 0;
+#X connect 2 0 14 1;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
+#X connect 5 0 7 0;
+#X connect 6 0 7 1;
+#X connect 6 0 9 1;
+#X connect 7 0 6 0;
+#X connect 8 0 7 1;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 14 1;
+#X connect 13 0 15 0;
+#X connect 14 0 0 1;
+#X connect 15 0 9 0;
+#X connect 15 1 0 0;
+#X connect 15 2 8 0;
+#X connect 15 3 14 0;
diff --git a/help/delay_n-help.pd b/help/delay_n-help.pd
new file mode 100644
index 0000000..199de01
--- /dev/null
+++ b/help/delay_n-help.pd
@@ -0,0 +1,18 @@
+#N canvas 811 284 661 510 10;
+#X obj 40 36 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4700 1;
+#X obj 268 221 pipe 500;
+#X obj 138 260 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4700 1;
+#X obj 268 263 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4700 1;
+#X obj 40 176 resample 25;
+#X obj 138 219 delay_n 20;
+#X obj 40 262 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4700 1;
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 4 0 1 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
diff --git a/help/diff_n-help.pd b/help/diff_n-help.pd
new file mode 100644
index 0000000..2650e03
--- /dev/null
+++ b/help/diff_n-help.pd
@@ -0,0 +1,10 @@
+#N canvas 615 164 462 500 10;
+#X obj 63 47 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 6500 0;
+#X floatatom 63 301 5 0 0 0 - - -;
+#X text 145 64 diferentiate of the input;
+#X obj 63 218 resample 30;
+#X obj 63 265 diff_n 5;
+#X connect 0 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
diff --git a/help/distance_n-help.pd b/help/distance_n-help.pd
new file mode 100644
index 0000000..8e0ae57
--- /dev/null
+++ b/help/distance_n-help.pd
@@ -0,0 +1,34 @@
+#N canvas 443 111 675 756 10;
+#X obj 54 428 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 396 1;
+#X obj 54 96 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4100 1;
+#X obj 76 97 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 4000 1;
+#X obj 76 244 t b f;
+#X obj 54 390 distance_n;
+#X msg 119 365 0.3 0.3 0.5 0.4;
+#X obj 119 342 loadbang;
+#X obj 54 279 pack f f f f;
+#X obj 116 97 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 6500 1;
+#X obj 116 244 t b f;
+#X obj 156 97 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 5200 1;
+#X obj 156 244 t b f;
+#X text 126 29 distance from a point and a stream in nd;
+#X text 173 53 n is the min size of the list send on the inlets;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 3 1 7 1;
+#X connect 4 0 0 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 4 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 9 1 7 2;
+#X connect 10 0 11 0;
+#X connect 11 0 7 0;
+#X connect 11 1 7 3;
diff --git a/help/last_n-help.pd b/help/last_n-help.pd
new file mode 100644
index 0000000..72d2607
--- /dev/null
+++ b/help/last_n-help.pd
@@ -0,0 +1,8 @@
+#N canvas 649 496 268 257 10;
+#X floatatom 40 56 5 0 0 0 - - -;
+#X floatatom 112 77 5 0 0 0 - - -;
+#X obj 40 155 print;
+#X obj 40 99 last_n 5;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 3 0 2 0;
diff --git a/help/local_max-help.pd b/help/local_max-help.pd
new file mode 100644
index 0000000..0c3c4b2
--- /dev/null
+++ b/help/local_max-help.pd
@@ -0,0 +1,8 @@
+#N canvas 552 108 525 298 10;
+#X floatatom 22 86 5 0 0 0 - - -;
+#X floatatom 22 133 5 0 0 0 - - -;
+#X obj 22 109 local_max;
+#X text 49 27 give the value of every local maximum whenever there
+is a change in direction.;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/help/local_min-help.pd b/help/local_min-help.pd
new file mode 100644
index 0000000..49b3694
--- /dev/null
+++ b/help/local_min-help.pd
@@ -0,0 +1,11 @@
+#N canvas 552 108 535 356 10;
+#X floatatom 48 102 5 0 0 0 - - -;
+#X floatatom 48 151 5 0 0 0 - - -;
+#X obj 48 125 local_min;
+#X obj 30 151 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 54 39 gives the value of every local minimum whenever there
+is a change in direction;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 0 3 0;
diff --git a/help/max_n-help.pd b/help/max_n-help.pd
new file mode 100644
index 0000000..263931e
--- /dev/null
+++ b/help/max_n-help.pd
@@ -0,0 +1,26 @@
+#N canvas 64 215 518 470 10;
+#X floatatom 59 93 5 -20 127 0 - - -;
+#X text 60 75 data;
+#X obj 59 172 t f f;
+#X msg 66 118 0;
+#X floatatom 288 231 5 0 0 0 - - -;
+#X floatatom 339 182 5 0 0 0 - - -;
+#X text 387 180 size: n (n>=2);
+#X text 80 39 max_n return the maximum from the last n (n>1) values
+;
+#X msg 94 118 1;
+#X msg 127 118 0.5;
+#X floatatom 84 227 5 0 0 0 - - -;
+#X obj 59 256 timeroll;
+#X obj 267 255 timeroll;
+#X obj 267 205 max_n 20;
+#X connect 0 0 2 0;
+#X connect 2 0 10 0;
+#X connect 2 0 11 0;
+#X connect 2 1 13 0;
+#X connect 3 0 2 0;
+#X connect 5 0 13 1;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 13 0 4 0;
+#X connect 13 0 12 0;
diff --git a/help/mean_n-help.pd b/help/mean_n-help.pd
new file mode 100644
index 0000000..b8eac68
--- /dev/null
+++ b/help/mean_n-help.pd
@@ -0,0 +1,22 @@
+#N canvas 354 297 821 592 10;
+#X obj 68 174 t f f;
+#X floatatom 358 195 5 0 0 0 - - -;
+#X text 353 172 order: n;
+#X text 49 37 Fir_mean_n computes a fir low pass mean filter of order
+n;
+#X obj 499 307 -;
+#X floatatom 68 126 5 0 1 0 - - -;
+#X obj 68 148 resample 30;
+#X obj 69 336 timeroll;
+#X obj 280 333 timeroll;
+#X obj 499 335 timeroll;
+#X obj 279 220 mean_n 25;
+#X connect 0 0 4 0;
+#X connect 0 0 7 0;
+#X connect 0 1 10 0;
+#X connect 1 0 10 1;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 10 0 4 1;
+#X connect 10 0 8 0;
diff --git a/help/min_n-help.pd b/help/min_n-help.pd
new file mode 100644
index 0000000..00a9eb4
--- /dev/null
+++ b/help/min_n-help.pd
@@ -0,0 +1,24 @@
+#N canvas 397 193 522 474 10;
+#X floatatom 40 76 5 0 127 0 - - -;
+#X text 41 58 data;
+#X obj 40 155 t f f;
+#X msg 47 101 0;
+#X floatatom 271 249 5 0 0 0 - - -;
+#X floatatom 318 197 5 2 150 0 - - -;
+#X text 366 195 size: n (n>=2);
+#X text 51 32 min_n return the minimum from the last n (n>1) values
+;
+#X msg 75 101 1;
+#X msg 108 101 0.5;
+#X obj 40 271 timeroll;
+#X obj 246 271 timeroll;
+#X obj 246 219 min_n 20;
+#X connect 0 0 2 0;
+#X connect 2 0 10 0;
+#X connect 2 1 12 0;
+#X connect 3 0 2 0;
+#X connect 5 0 12 1;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 12 0 4 0;
+#X connect 12 0 11 0;
diff --git a/last_n.pd b/last_n.pd
new file mode 100644
index 0000000..7e3b076
--- /dev/null
+++ b/last_n.pd
@@ -0,0 +1,21 @@
+#N canvas 417 318 723 395 10;
+#X floatatom 356 89 5 0 0 2 change-size - -;
+#X obj 326 112 t f b;
+#X text 378 110 first reset (b) \, then set new length (f).;
+#X text 311 195 Right outlet is responsible to first fill the list
+;
+#X text 322 217 Left outlet then only lets the smaller list pass.;
+#X obj 180 183 list;
+#X obj 326 54 inlet;
+#X obj 180 149 inlet;
+#X obj 180 302 outlet;
+#X obj 180 228 list split \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 9 1;
+#X connect 1 1 5 1;
+#X connect 5 0 9 0;
+#X connect 6 0 1 0;
+#X connect 7 0 5 0;
+#X connect 9 0 5 1;
+#X connect 9 0 8 0;
+#X connect 9 2 5 1;
diff --git a/local_max.pd b/local_max.pd
new file mode 100644
index 0000000..a693300
--- /dev/null
+++ b/local_max.pd
@@ -0,0 +1,23 @@
+#N canvas 609 111 302 364 10;
+#X obj 50 165 > 0;
+#X obj 50 244 f;
+#X obj 25 101 t f f;
+#X obj 50 139 -;
+#X obj 50 218 sel 0;
+#X obj 67 100 f;
+#X obj 25 62 t f f b;
+#X obj 50 191 change;
+#X obj 50 279 outlet;
+#X obj 25 22 inlet;
+#X connect 0 0 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 3 1;
+#X connect 2 1 3 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 1;
+#X connect 6 0 2 0;
+#X connect 6 1 5 1;
+#X connect 6 2 5 0;
+#X connect 7 0 4 0;
+#X connect 9 0 6 0;
diff --git a/local_min.pd b/local_min.pd
new file mode 100644
index 0000000..b7d57e3
--- /dev/null
+++ b/local_min.pd
@@ -0,0 +1,23 @@
+#N canvas 552 108 250 310 10;
+#X obj 78 218 f;
+#X obj 78 140 < 0;
+#X obj 53 69 t f f;
+#X obj 78 107 -;
+#X obj 78 192 sel 0;
+#X obj 94 69 f;
+#X obj 53 44 t f f b;
+#X obj 78 166 change;
+#X obj 78 243 outlet;
+#X obj 53 16 inlet;
+#X connect 0 0 8 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 1;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 1;
+#X connect 6 0 2 0;
+#X connect 6 1 5 1;
+#X connect 6 2 5 0;
+#X connect 7 0 4 0;
+#X connect 9 0 6 0;
diff --git a/max_n.pd b/max_n.pd
new file mode 100644
index 0000000..6171b23
--- /dev/null
+++ b/max_n.pd
@@ -0,0 +1,16 @@
+#N canvas 0 0 462 312 10;
+#X obj 64 57 inlet;
+#X obj 144 56 inlet;
+#X obj 64 179 maximum;
+#X obj 64 207 outlet;
+#X obj 144 120 max 2;
+#X obj 160 76 loadbang;
+#X obj 160 97 \$1;
+#X obj 64 149 last_n;
+#X connect 0 0 7 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 4 0 7 1;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 2 0;
diff --git a/mean_n.pd b/mean_n.pd
new file mode 100644
index 0000000..255c38b
--- /dev/null
+++ b/mean_n.pd
@@ -0,0 +1,29 @@
+#N canvas 248 541 341 340 10;
+#X obj 46 26 inlet;
+#X obj 125 26 inlet;
+#X obj 46 297 outlet;
+#X obj 62 130 list split 1;
+#X obj 101 153 list;
+#X obj 62 178 +;
+#X obj 62 203 f;
+#X obj 46 85 t b a b;
+#X msg 90 109 0;
+#X obj 46 230 f;
+#X obj 46 263 / \$1;
+#X obj 46 57 last_n \$1;
+#X connect 0 0 11 0;
+#X connect 1 0 10 1;
+#X connect 1 0 11 1;
+#X connect 3 0 5 0;
+#X connect 3 1 4 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 5 1;
+#X connect 6 0 9 1;
+#X connect 7 0 9 0;
+#X connect 7 1 3 0;
+#X connect 7 2 8 0;
+#X connect 8 0 5 1;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 11 0 7 0;
diff --git a/min_n.pd b/min_n.pd
new file mode 100644
index 0000000..a9315cc
--- /dev/null
+++ b/min_n.pd
@@ -0,0 +1,16 @@
+#N canvas 26 291 365 247 10;
+#X obj 64 175 outlet;
+#X obj 64 147 minimum;
+#X obj 64 27 inlet;
+#X obj 144 26 inlet;
+#X obj 144 89 max 2;
+#X obj 160 46 loadbang;
+#X obj 160 66 \$1;
+#X obj 64 118 last_n;
+#X connect 1 0 0 0;
+#X connect 2 0 7 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 1;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
diff --git a/pd/curve_exp.pd b/pd/curve_exp.pd
index e77d677..a15e6b5 100644
--- a/pd/curve_exp.pd
+++ b/pd/curve_exp.pd
@@ -1,8 +1,7 @@
-#N canvas 225 325 507 333 10;
+#N canvas 225 325 511 337 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;
@@ -13,12 +12,13 @@
#X text 248 296 released under the GNU GPL;
#X text 31 282 (C) Copyright 2006 Hans-Christoph Steiner <hans@at.or.at>
;
+#X obj 22 116 * -1;
#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 2 0 12 0;
+#X connect 2 1 6 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 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;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 12 0 5 0;
diff --git a/pd/delay_n.pd b/pd/delay_n.pd
new file mode 100644
index 0000000..243b936
--- /dev/null
+++ b/pd/delay_n.pd
@@ -0,0 +1,15 @@
+#N canvas 212 243 661 510 10;
+#X obj 160 88 t f b;
+#X obj 49 86 list;
+#X obj 159 50 inlet;
+#X obj 49 52 inlet;
+#X obj 93 200 outlet;
+#X obj 49 131 list split \$1;
+#X connect 0 0 5 1;
+#X connect 0 1 1 1;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X connect 5 0 1 1;
+#X connect 5 1 4 0;
+#X connect 5 2 1 1;
diff --git a/pd/diff_n.pd b/pd/diff_n.pd
new file mode 100644
index 0000000..c3fd06f
--- /dev/null
+++ b/pd/diff_n.pd
@@ -0,0 +1,13 @@
+#N canvas 246 155 294 362 10;
+#X obj 59 49 inlet;
+#X obj 59 184 outlet;
+#X obj 175 93 inlet;
+#X obj 59 93 t f f;
+#X obj 59 152 -;
+#X obj 89 119 delay_n \$1;
+#X connect 0 0 3 0;
+#X connect 2 0 5 1;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 1;
diff --git a/pd/distance_n.pd b/pd/distance_n.pd
new file mode 100644
index 0000000..85f6a70
--- /dev/null
+++ b/pd/distance_n.pd
@@ -0,0 +1,101 @@
+#N canvas 872 510 450 424 10;
+#N canvas 640 117 487 367 drip-two-lists 0;
+#X obj 64 243 outlet;
+#X obj 64 57 inlet;
+#X obj 157 240 outlet;
+#X obj 225 242 outlet;
+#X obj 321 95 inlet;
+#X text 272 240 End;
+#X obj 64 156 t a b;
+#N canvas 0 0 533 407 drip 0;
+#X obj 64 206 list split 1;
+#X obj 64 123 until;
+#X obj 64 181 list append;
+#X obj 194 206 bang;
+#X text 146 90 First store list \, then start the loop;
+#X text 163 118 "until" bangs its output until told to stop by a "bang"
+to its right inlet.;
+#X text 182 160 Store the remaining list.;
+#X text 239 205 third outlet of "split" tells us to stop.;
+#X obj 64 243 outlet;
+#X obj 64 57 inlet;
+#X text 237 44 From list-help.pd;
+#X obj 143 243 outlet;
+#X obj 64 86 t b a;
+#X connect 0 0 8 0;
+#X connect 0 1 2 1;
+#X connect 0 2 3 0;
+#X connect 0 2 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 1;
+#X connect 9 0 12 0;
+#X connect 12 0 1 0;
+#X connect 12 1 2 1;
+#X restore 64 122 pd drip;
+#N canvas 0 0 533 407 dripslow 0;
+#X obj 87 232 list split 1;
+#X obj 87 207 list append;
+#X obj 87 283 outlet;
+#X obj 87 83 inlet;
+#X obj 166 283 outlet;
+#X obj 159 81 inlet;
+#X obj 87 118 b;
+#X text 202 82 list;
+#X text 42 83 bang;
+#X text 210 283 EOL;
+#X text 28 282 element;
+#X obj 166 253 b;
+#X connect 0 0 2 0;
+#X connect 0 1 1 1;
+#X connect 0 2 11 0;
+#X connect 1 0 0 0;
+#X connect 3 0 6 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 0;
+#X connect 11 0 4 0;
+#X restore 158 191 pd dripslow;
+#X connect 1 0 7 0;
+#X connect 4 0 8 1;
+#X connect 6 0 0 0;
+#X connect 6 1 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 3 0;
+#X connect 8 0 2 0;
+#X restore 133 139 pd drip-two-lists;
+#X obj 113 27 inlet;
+#X obj 287 20 inlet;
+#X obj 133 167 -;
+#X obj 133 195 t f f;
+#X obj 133 224 *;
+#X obj 134 278 f;
+#X obj 133 256 +;
+#X msg 196 197 0;
+#X obj 118 300 f;
+#X obj 119 325 sqrt;
+#X obj 118 349 outlet;
+#X msg 313 61 1 2 3 5 7 8;
+#X msg 134 62 1 2 3 4 5 6;
+#X obj 246 99 list;
+#X obj 115 98 t b a b b;
+#X connect 0 0 3 0;
+#X connect 0 1 3 1;
+#X connect 1 0 15 0;
+#X connect 2 0 14 1;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
+#X connect 5 0 7 0;
+#X connect 6 0 7 1;
+#X connect 6 0 9 1;
+#X connect 7 0 6 0;
+#X connect 8 0 7 1;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 14 1;
+#X connect 13 0 15 0;
+#X connect 14 0 0 1;
+#X connect 15 0 9 0;
+#X connect 15 1 0 0;
+#X connect 15 2 8 0;
+#X connect 15 3 14 0;
diff --git a/pd/last_n.pd b/pd/last_n.pd
new file mode 100644
index 0000000..7e3b076
--- /dev/null
+++ b/pd/last_n.pd
@@ -0,0 +1,21 @@
+#N canvas 417 318 723 395 10;
+#X floatatom 356 89 5 0 0 2 change-size - -;
+#X obj 326 112 t f b;
+#X text 378 110 first reset (b) \, then set new length (f).;
+#X text 311 195 Right outlet is responsible to first fill the list
+;
+#X text 322 217 Left outlet then only lets the smaller list pass.;
+#X obj 180 183 list;
+#X obj 326 54 inlet;
+#X obj 180 149 inlet;
+#X obj 180 302 outlet;
+#X obj 180 228 list split \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 9 1;
+#X connect 1 1 5 1;
+#X connect 5 0 9 0;
+#X connect 6 0 1 0;
+#X connect 7 0 5 0;
+#X connect 9 0 5 1;
+#X connect 9 0 8 0;
+#X connect 9 2 5 1;
diff --git a/pd/local_max.pd b/pd/local_max.pd
new file mode 100644
index 0000000..a693300
--- /dev/null
+++ b/pd/local_max.pd
@@ -0,0 +1,23 @@
+#N canvas 609 111 302 364 10;
+#X obj 50 165 > 0;
+#X obj 50 244 f;
+#X obj 25 101 t f f;
+#X obj 50 139 -;
+#X obj 50 218 sel 0;
+#X obj 67 100 f;
+#X obj 25 62 t f f b;
+#X obj 50 191 change;
+#X obj 50 279 outlet;
+#X obj 25 22 inlet;
+#X connect 0 0 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 3 1;
+#X connect 2 1 3 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 1;
+#X connect 6 0 2 0;
+#X connect 6 1 5 1;
+#X connect 6 2 5 0;
+#X connect 7 0 4 0;
+#X connect 9 0 6 0;
diff --git a/pd/local_min.pd b/pd/local_min.pd
new file mode 100644
index 0000000..b7d57e3
--- /dev/null
+++ b/pd/local_min.pd
@@ -0,0 +1,23 @@
+#N canvas 552 108 250 310 10;
+#X obj 78 218 f;
+#X obj 78 140 < 0;
+#X obj 53 69 t f f;
+#X obj 78 107 -;
+#X obj 78 192 sel 0;
+#X obj 94 69 f;
+#X obj 53 44 t f f b;
+#X obj 78 166 change;
+#X obj 78 243 outlet;
+#X obj 53 16 inlet;
+#X connect 0 0 8 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 1;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 1;
+#X connect 6 0 2 0;
+#X connect 6 1 5 1;
+#X connect 6 2 5 0;
+#X connect 7 0 4 0;
+#X connect 9 0 6 0;
diff --git a/pd/max_n.pd b/pd/max_n.pd
new file mode 100644
index 0000000..6171b23
--- /dev/null
+++ b/pd/max_n.pd
@@ -0,0 +1,16 @@
+#N canvas 0 0 462 312 10;
+#X obj 64 57 inlet;
+#X obj 144 56 inlet;
+#X obj 64 179 maximum;
+#X obj 64 207 outlet;
+#X obj 144 120 max 2;
+#X obj 160 76 loadbang;
+#X obj 160 97 \$1;
+#X obj 64 149 last_n;
+#X connect 0 0 7 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 4 0 7 1;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 2 0;
diff --git a/pd/mean_n.pd b/pd/mean_n.pd
new file mode 100644
index 0000000..255c38b
--- /dev/null
+++ b/pd/mean_n.pd
@@ -0,0 +1,29 @@
+#N canvas 248 541 341 340 10;
+#X obj 46 26 inlet;
+#X obj 125 26 inlet;
+#X obj 46 297 outlet;
+#X obj 62 130 list split 1;
+#X obj 101 153 list;
+#X obj 62 178 +;
+#X obj 62 203 f;
+#X obj 46 85 t b a b;
+#X msg 90 109 0;
+#X obj 46 230 f;
+#X obj 46 263 / \$1;
+#X obj 46 57 last_n \$1;
+#X connect 0 0 11 0;
+#X connect 1 0 10 1;
+#X connect 1 0 11 1;
+#X connect 3 0 5 0;
+#X connect 3 1 4 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 5 1;
+#X connect 6 0 9 1;
+#X connect 7 0 9 0;
+#X connect 7 1 3 0;
+#X connect 7 2 8 0;
+#X connect 8 0 5 1;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 11 0 7 0;
diff --git a/pd/min_n.pd b/pd/min_n.pd
new file mode 100644
index 0000000..a9315cc
--- /dev/null
+++ b/pd/min_n.pd
@@ -0,0 +1,16 @@
+#N canvas 26 291 365 247 10;
+#X obj 64 175 outlet;
+#X obj 64 147 minimum;
+#X obj 64 27 inlet;
+#X obj 144 26 inlet;
+#X obj 144 89 max 2;
+#X obj 160 46 loadbang;
+#X obj 160 66 \$1;
+#X obj 64 118 last_n;
+#X connect 1 0 0 0;
+#X connect 2 0 7 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 1;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;