aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/0.INTRO.txt105
-rw-r--r--examples/a2l.pd21
-rw-r--r--examples/any2list.pd23
-rw-r--r--examples/atoi.pd39
-rw-r--r--examples/avg~.pd22
-rw-r--r--examples/date.pd26
-rw-r--r--examples/demultiplex.pd35
-rw-r--r--examples/demultiplex~.pd33
-rw-r--r--examples/dfreq~.pd15
-rw-r--r--examples/digidistort.pd69
-rw-r--r--examples/dirac~.pd43
-rw-r--r--examples/drip.pd70
-rw-r--r--examples/envrms~.pd24
-rw-r--r--examples/glue.pd21
-rw-r--r--examples/index.pd87
-rw-r--r--examples/length.pd16
-rw-r--r--examples/limiter~.pd226
-rw-r--r--examples/list2int.pd17
-rw-r--r--examples/list2symbol.pd16
-rw-r--r--examples/lister.pd23
-rw-r--r--examples/lp.pd20
-rw-r--r--examples/makesymbol.pd58
-rw-r--r--examples/matrix.pd133
-rw-r--r--examples/matrix~.pd58
-rw-r--r--examples/mavg.pd16
-rw-r--r--examples/mean.pd9
-rw-r--r--examples/minmax.pd12
-rw-r--r--examples/msgfile.pd109
-rw-r--r--examples/mtx_binops.pd112
-rw-r--r--examples/mtx_element.pd64
-rw-r--r--examples/mtx_inverse.pd18
-rw-r--r--examples/mtx_mean.pd13
-rw-r--r--examples/mtx_rand.pd20
-rw-r--r--examples/mtx_size.pd44
-rw-r--r--examples/mtx_special.pd60
-rw-r--r--examples/mtx_trace.pd23
-rw-r--r--examples/mtx_transpose.pd59
-rw-r--r--examples/multiline~.pd63
-rw-r--r--examples/multiplex~.pd23
-rw-r--r--examples/niagara.pd21
-rw-r--r--examples/noish~.pd21
-rw-r--r--examples/noisi~.pd21
-rw-r--r--examples/nop.pd17
-rw-r--r--examples/nop~.pd17
-rw-r--r--examples/packel.pd20
-rw-r--r--examples/pack~.pd33
-rw-r--r--examples/pdf~.pd25
-rw-r--r--examples/quantize~.pd37
-rw-r--r--examples/repack.pd23
-rw-r--r--examples/scalarmult.pd73
-rw-r--r--examples/segregate.pd33
-rw-r--r--examples/sf-play_record.pd57
-rw-r--r--examples/sigbinops+.pd106
-rw-r--r--examples/sigzero~.pd50
-rw-r--r--examples/sort.pd77
-rw-r--r--examples/step~.pd74
-rw-r--r--examples/strcmp.pd26
-rw-r--r--examples/swap~.pd39
-rw-r--r--examples/tabdump.pd19
-rw-r--r--examples/tabread4.pd29
-rw-r--r--examples/tabset.pd19
-rw-r--r--examples/tavg~.pd28
-rw-r--r--examples/time.pd31
-rw-r--r--examples/unpack~.pd59
-rw-r--r--examples/z~.pd28
65 files changed, 2828 insertions, 0 deletions
diff --git a/examples/0.INTRO.txt b/examples/0.INTRO.txt
new file mode 100644
index 0000000..ffd209a
--- /dev/null
+++ b/examples/0.INTRO.txt
@@ -0,0 +1,105 @@
+These are the objects that come with the zexy-external
+
+============================ DSP~ ===============================
+
+---------------------------- IO~ --------------------------------
+sfplay play back (multi-channel) soundfiles
+sfrecord record (multichannel) soundfiles
+
+------------------------ generators~ ----------------------------
+dirac~ dirac-pulse
+step~ unity step
+noish~ downsampled noise (hold)
+noisi~ downsampled noise (interpolate)
+
+------------------------ processing~ ----------------------------
+limiter~ a limiter/compressor module
+quantize~ quantizes signals
+swap~ bytes swap a 16bit-signal
+z~ samplewise delay
+
+------------------------- analytic~ -----------------------------
+sigzero~ detects whether a signal is zero throughout the vector or not
+pdf~ probability density function
+envrms~ like env~, but outputting rms instead of dB
+avg~ arithmetic mean of 1 signal-vector
+tavg~ arithmetic mean between two bangs
+dfreq~ frequency detector
+
+------------------------- sigbinops~ ----------------------------
+>~, <~, ==~, &&~, ||~ logical operators
+abs~ absolute value of a signal
+sgn~ signum of a signal
+
+--------------------------- misc~ -------------------------------
+nop~ no-operation
+pack~ convert a signal to a list of floats
+unpack~ convert a list of floats to a signal
+matrix~ matrix-multiply m IN-signals to n OUT-signals
+multiplex~ multiplex 1-of-n inlets to 1 outlet
+demultiplex~ demultiplex 1 inlet to 1-of-n outlets
+
+
+========================= control ==============================
+
+-------------------------- basic -------------------------------
+nop no-operation
+lister store lists (like "float" for floats)
+repack (re)pack atoms to packages of a given size
+packel get a specified element of a list
+length get the length of a list
+niagara split 1 packages into 2
+glue append a package to another (glue them together)
+segregate segregate the input to various outlets, depending on the type
+any2list convert "anythings" to "lists"
+list2int cast each float of a list to integer
+atoi ascii to integer
+strcmp compare lists as strings
+list2symbol convert a list into a single symbol
+. scalar multiplication of vectors (=lists of floats)
+
+------------------------ advanced ------------------------------
+tabread4 interpolating tabread (obsolete since pd>=0.30)
+tabdump dump out a table as a list of floats
+tabset set a table with a list of floats
+makesymbol concatenate lists to formatted symbols
+date get system date
+time get system time
+index map symbols to indices
+msgfile a powerful "textfile" derivative
+mavg moving average filter for floats
+mean get the mean value of a list of floats
+minmax get minimum and maximum of a list of floats
+sort shell-sort a list of floats
+demultiplex demultiplex the input to a specified outlet
+drip extract the atoms of a package (opt. scheduled)
+lp write to the (parallel) port (linux only)
+
+-------------------------- matrix -------------------------------
+matrix create/store/... matrices
+mtx_element set elements of a matrix
+mtx_row set rows of a matrix
+mtx_col set columns of a matrix
+mtx_ones matrix with all elements==1
+mtx_zeros matrix with all elements==0
+mtx_eye identity matrix
+mtx_egg identity matrix (from upper-right to lower-left)
+mtx_diag diagonal matrix
+mtx_diegg diagonal matrix (from upper-right to lower-left)
+mtx_diag get the diagonal of a matrix
+mtx_trace get the trace of a matrix
+mtx_transpose transpose a matrix
+mtx_roll column-shift a matrix
+mtx_scroll row-shift a matrix
+mtx_pivot pivot-transform a matrix
+mtx_resize resize a matrix (evtl. with zero-padding)
+mtx_size get the size of a matrix
+mtx_inverse get the inverse of a matrix
+mtx_add, mtx_+ add 2 matrices (or an offset to 1 matrix)
+mtx_mul, mtx_* multiply 2 matrices (or a factor with 1 matrix)
+mtx_.* multiply 2 matrices element by element
+mtx_./ divide 2 matrices element by element
+mtx_mean get the mean value of each column
+mtx_rand matrix with random elements
+mtx_check check the consistency of a matrix and repair
+mtx_print print a matrix to the stderr \ No newline at end of file
diff --git a/examples/a2l.pd b/examples/a2l.pd
new file mode 100644
index 0000000..54416e8
--- /dev/null
+++ b/examples/a2l.pd
@@ -0,0 +1,21 @@
+#N canvas 165 209 450 458 10;
+#X obj 76 28 a2l;
+#X text 113 30 convert "anything" to lists;
+#X obj 35 256 a2l;
+#X text 116 56 pass through the rest;
+#X floatatom 46 229;
+#X symbolatom 46 203;
+#X msg 46 162 this is anything;
+#X msg 46 182 list this is a list;
+#X obj 35 276 print a2l;
+#X text 69 335 to make "anything"s out of lists \, try;
+#X obj 319 339 route list;
+#X msg 319 320 list this is a list;
+#X obj 319 358 print l2a;
+#X connect 2 0 8 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 0;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
diff --git a/examples/any2list.pd b/examples/any2list.pd
new file mode 100644
index 0000000..9c460c0
--- /dev/null
+++ b/examples/any2list.pd
@@ -0,0 +1,23 @@
+#N canvas 319 129 450 458 10;
+#X text 113 30 convert "anything" to lists;
+#X text 116 56 pass through the rest;
+#X floatatom 46 229 0 0 0;
+#X symbolatom 46 203 0 0 0;
+#X msg 46 162 this is anything;
+#X msg 46 182 list this is a list;
+#X obj 35 276 print a2l;
+#X text 48 337 to make "anything"s out of lists \, try;
+#X obj 319 339 route list;
+#X msg 319 318 list this is a list;
+#X obj 319 359 print l2a;
+#X obj 56 30 any2list;
+#X text 245 223 alias;
+#X obj 280 223 a2l;
+#X obj 35 256 any2list;
+#X connect 2 0 14 0;
+#X connect 3 0 14 0;
+#X connect 4 0 14 0;
+#X connect 5 0 14 0;
+#X connect 8 0 10 0;
+#X connect 9 0 8 0;
+#X connect 14 0 6 0;
diff --git a/examples/atoi.pd b/examples/atoi.pd
new file mode 100644
index 0000000..c6a507a
--- /dev/null
+++ b/examples/atoi.pd
@@ -0,0 +1,39 @@
+#N canvas 271 320 749 300 10;
+#X obj 125 21 atoi;
+#X text 174 19 convert ascii to integer;
+#X obj 72 178 atoi;
+#X floatatom 72 201 4 0 0;
+#X obj 72 132 makefilename %4d;
+#X symbolatom 72 155 10 0 0;
+#X floatatom 72 110 4 0 0;
+#X floatatom 177 110 4 0 0;
+#X obj 177 132 makefilename 0%d;
+#X floatatom 280 110 4 0 0;
+#X obj 280 132 makefilename 0x%d;
+#X text 74 92 decimal;
+#X text 178 94 octal;
+#X text 280 93 sedecimal;
+#X floatatom 417 109 4 0 0;
+#X obj 417 127 makefilename %d;
+#X floatatom 502 106 4 0 0;
+#X text 506 93 base;
+#X obj 417 146 pack s 2;
+#X msg 417 86 101;
+#X msg 443 86 10011;
+#X text 241 214 symbols starting with "0x" are converted as hex-numbers;
+#X text 242 228 symbols starting with "0" are converted as octal numbers;
+#X text 241 243 symbols starting with numbers but "0" are converted as decimal numbers;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 5 0;
+#X connect 9 0 10 0;
+#X connect 10 0 5 0;
+#X connect 14 0 15 0;
+#X connect 15 0 18 0;
+#X connect 16 0 18 1;
+#X connect 18 0 2 0;
+#X connect 19 0 14 0;
+#X connect 20 0 14 0;
diff --git a/examples/avg~.pd b/examples/avg~.pd
new file mode 100644
index 0000000..9ae5626
--- /dev/null
+++ b/examples/avg~.pd
@@ -0,0 +1,22 @@
+#N canvas 288 18 580 361 10;
+#X floatatom 59 148;
+#X floatatom 59 254;
+#X floatatom 129 255;
+#X obj 59 276 dbtorms;
+#X floatatom 59 299;
+#X text 272 269 see also:;
+#X obj 277 296 env~;
+#X obj 373 296 tavg~;
+#X obj 71 51 avg~;
+#X obj 129 234 avg~;
+#X obj 59 233 env~;
+#X text 155 49 calculates the arithmetic mean of one signal vector;
+#X obj 315 296 envrms~;
+#X obj 59 173 osc~ 5512.5;
+#X connect 0 0 13 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 9 0 2 0;
+#X connect 10 0 1 0;
+#X connect 13 0 9 0;
+#X connect 13 0 10 0;
diff --git a/examples/date.pd b/examples/date.pd
new file mode 100644
index 0000000..bfeeb0a
--- /dev/null
+++ b/examples/date.pd
@@ -0,0 +1,26 @@
+#N canvas 253 26 421 378 10;
+#X obj 71 203 date;
+#X msg 71 174 bang;
+#X floatatom 94 230;
+#X floatatom 82 254;
+#X floatatom 71 281;
+#X msg 285 173 bang;
+#X floatatom 336 227;
+#X floatatom 310 253;
+#X floatatom 285 280;
+#X obj 285 202 date GMT;
+#X obj 73 26 date;
+#X text 91 79 get the system date;
+#X text 180 229 day;
+#X text 175 253 month;
+#X text 179 279 year;
+#X text 70 151 local;
+#X text 284 151 GMT;
+#X connect 0 0 4 0;
+#X connect 0 1 3 0;
+#X connect 0 2 2 0;
+#X connect 1 0 0 0;
+#X connect 5 0 9 0;
+#X connect 9 0 8 0;
+#X connect 9 1 7 0;
+#X connect 9 2 6 0;
diff --git a/examples/demultiplex.pd b/examples/demultiplex.pd
new file mode 100644
index 0000000..1d69b08
--- /dev/null
+++ b/examples/demultiplex.pd
@@ -0,0 +1,35 @@
+#N canvas 350 196 655 292 10;
+#X obj 51 171 demux 1 2 3 4;
+#X obj 51 91 metro 320;
+#X obj 51 111 t b b;
+#X obj 51 130 random 100;
+#X msg 51 69 1;
+#X msg 76 69 0;
+#X floatatom 135 147;
+#X obj 51 239 print output0;
+#X obj 135 129 random 4;
+#X obj 75 222 print outpu1;
+#X obj 99 205 print outp2;
+#X obj 124 188 print out3;
+#X msg 51 150 bet \$1;
+#X text 231 10 demultiplex the inlet to the specified output;
+#X obj 111 12 demultiplex;
+#X obj 315 236 demux;
+#X text 271 237 alias;
+#X text 268 166 creation: "demultiplex [<in1?> [<in2?> [<in3?> ... ]]]";
+#X text 303 185 the number of arguments defines the number of outlets;
+#X text 277 81 the right inlet specifies \, to which outlet the left inlet is routed;
+#X text 280 119 outlets number from 0..(n-1);
+#X connect 0 0 7 0;
+#X connect 0 1 9 0;
+#X connect 0 2 10 0;
+#X connect 0 3 11 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 8 0;
+#X connect 3 0 12 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 1;
+#X connect 8 0 6 0;
+#X connect 12 0 0 0;
diff --git a/examples/demultiplex~.pd b/examples/demultiplex~.pd
new file mode 100644
index 0000000..290fd72
--- /dev/null
+++ b/examples/demultiplex~.pd
@@ -0,0 +1,33 @@
+#N canvas 79 72 635 302 12;
+#X obj 72 139 sig~ 1;
+#X floatatom 110 93 4 0 0;
+#X obj 71 229 env~;
+#X floatatom 71 255 4 0 0;
+#X text 428 109 alias;
+#X obj 71 193 demultiplex~ . . . . .;
+#X obj 113 229 env~;
+#X floatatom 113 255 4 0 0;
+#X obj 156 230 env~;
+#X floatatom 156 256 4 0 0;
+#X obj 199 229 env~;
+#X floatatom 199 255 4 0 0;
+#X obj 242 227 env~;
+#X floatatom 242 253 4 0 0;
+#X text 156 94 select an outlet;
+#X obj 75 23 demultiplex~;
+#X text 210 22 demultiplex 1 signal to 1-of-n outlets;
+#X obj 480 110 demux~;
+#X text 154 174 the number of arguments specifies the number of outlets
+;
+#X connect 0 0 5 0;
+#X connect 1 0 5 0;
+#X connect 2 0 3 0;
+#X connect 5 0 2 0;
+#X connect 5 1 6 0;
+#X connect 5 2 8 0;
+#X connect 5 3 10 0;
+#X connect 5 4 12 0;
+#X connect 6 0 7 0;
+#X connect 8 0 9 0;
+#X connect 10 0 11 0;
+#X connect 12 0 13 0;
diff --git a/examples/dfreq~.pd b/examples/dfreq~.pd
new file mode 100644
index 0000000..a211c63
--- /dev/null
+++ b/examples/dfreq~.pd
@@ -0,0 +1,15 @@
+#N canvas 307 9 598 301 10;
+#X obj 61 163 dfreq~;
+#X obj 61 133 osc~ 440;
+#X obj 61 231 print~;
+#X msg 96 208 bang;
+#X obj 85 28 dfreq~;
+#X text 146 27 a frequency detector that counts zero-crossings;
+#X floatatom 61 109;
+#X text 182 104 every zero-crossing the frequency-estimation is updated \, therefore this estimation is given as a signal...;
+#X text 179 170 this detector won't work properly on complex signals (e.g. zero-crossings should not be caused by higher partials);
+#X text 177 205 on the other hand \, this is much cheaper than fft's or fiddle...;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 2 0;
+#X connect 6 0 1 0;
diff --git a/examples/digidistort.pd b/examples/digidistort.pd
new file mode 100644
index 0000000..6764a3b
--- /dev/null
+++ b/examples/digidistort.pd
@@ -0,0 +1,69 @@
+#N canvas 0 -1 708 652 10;
+#X obj 99 529 swap~;
+#X text 172 515 byte-swap the signal;
+#X text 214 164 quantize a signal with a variable step-number;
+#X text 171 533 this object first converts the signal to 16bit \, then swaps upper and lower byte.;
+#X text 117 11 objects~ that are distorting in a very "digital" way;
+#X msg 128 113 8bit;
+#X msg 128 89 16bit;
+#X msg 128 66 float;
+#X floatatom 129 42;
+#X obj 77 273 dac~ 1;
+#X obj 77 248 *~;
+#X obj 39 199 dbtorms;
+#X floatatom 39 175;
+#X msg 122 441 0;
+#X msg 122 417 1;
+#X msg 121 466 bang;
+#X obj 35 136 osc~ 440;
+#X floatatom 35 112;
+#X obj 96 164 quantize~ 16;
+#X obj 35 496 osc~ 440;
+#X floatatom 35 472;
+#X msg 121 491 help;
+#X obj 83 609 *~;
+#X obj 45 560 dbtorms;
+#X floatatom 45 536;
+#X msg 127 137 help;
+#X obj 83 634 dac~ 2;
+#X msg 404 59 \; pd dsp 1;
+#X obj 78 223 sig~ 0.2;
+#X obj 83 584 sig~ 0.2;
+#X msg 482 61 \; pd dsp 0;
+#X graph graph5 0 -1 100 1 298 494 698 194;
+#X array scope 100 float;
+#X pop;
+#X obj 148 223 tabwrite~ scope;
+#X msg 148 198 bang;
+#X obj 178 634 tabwrite~ scope;
+#X msg 178 609 bang;
+#X text 161 466 toggle;
+#X text 154 416 on;
+#X text 156 440 off;
+#X connect 0 0 22 1;
+#X connect 0 0 34 0;
+#X connect 5 0 18 0;
+#X connect 6 0 18 0;
+#X connect 7 0 18 0;
+#X connect 8 0 18 0;
+#X connect 10 0 9 0;
+#X connect 11 0 28 0;
+#X connect 12 0 11 0;
+#X connect 13 0 0 0;
+#X connect 14 0 0 0;
+#X connect 15 0 0 0;
+#X connect 16 0 18 0;
+#X connect 17 0 16 0;
+#X connect 18 0 10 1;
+#X connect 18 0 32 0;
+#X connect 19 0 0 0;
+#X connect 20 0 19 0;
+#X connect 21 0 0 0;
+#X connect 22 0 26 0;
+#X connect 23 0 29 0;
+#X connect 24 0 23 0;
+#X connect 25 0 18 0;
+#X connect 28 0 10 0;
+#X connect 29 0 22 0;
+#X connect 33 0 32 0;
+#X connect 35 0 34 0;
diff --git a/examples/dirac~.pd b/examples/dirac~.pd
new file mode 100644
index 0000000..d1317dd
--- /dev/null
+++ b/examples/dirac~.pd
@@ -0,0 +1,43 @@
+#N canvas 202 49 564 290 8;
+#X obj 123 230 dirac~;
+#X floatatom 95 186;
+#X obj 95 208 t b f;
+#X obj 123 253 print~;
+#X text 40 30 dirac~ ::;
+#X text 40 60 IN :;
+#X text 115 30 produces a unit:sample:sequence;
+#X text 114 61 define the nth sample after the float::bang:message for the unit:sample to take place;
+#X text 98 165 position;
+#N canvas 0 0 765 385 application 0;
+#X obj 75 82 t b b b;
+#X msg 119 104 \; pd dsp 1;
+#X obj 97 139 dirac~;
+#X floatatom 181 141;
+#X obj 97 181 tabwrite~ unit::response;
+#X graph graph1 0 -1 64 1 358 325 758 25;
+#X array unit::response 64 float;
+#X pop;
+#X msg 70 283 \; unit::response resize 64;
+#X text 32 353 we thought it useful to have a tool that would be able to easily plot the unit::response of a system;
+#X text 111 61 press me;
+#X msg 75 61 bang;
+#X obj 97 160 hip~ 5000;
+#X connect 0 0 4 0;
+#X connect 0 1 2 0;
+#X connect 0 2 1 0;
+#X connect 2 0 10 0;
+#X connect 3 0 10 1;
+#X connect 9 0 0 0;
+#X connect 10 0 4 0;
+#X restore 270 148 page application;
+#X obj 53 208 t f b;
+#X msg 53 187 2;
+#X msg 185 225 2;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 0 0;
+#X connect 10 0 3 0;
+#X connect 10 1 0 0;
+#X connect 11 0 10 0;
+#X connect 12 0 3 0;
diff --git a/examples/drip.pd b/examples/drip.pd
new file mode 100644
index 0000000..1aa7557
--- /dev/null
+++ b/examples/drip.pd
@@ -0,0 +1,70 @@
+#N canvas 378 65 854 849 10;
+#X msg 30 108 come on \, my house;
+#X obj 30 210 print UNFOLDED;
+#X msg 48 135 1 two tre quatre 5 se;
+#X text 72 10 drip;
+#X obj 30 183 drip;
+#X text 311 104 drip is like a medical drip - you can adjust the drop-speed;
+#X obj 316 198 drip 1000;
+#X obj 316 218 print DROP;
+#X msg 316 152 this is that slow;
+#X floatatom 365 179;
+#X text 439 545 drip without arguments will do no scheduling (this is: output all the atoms at once);
+#X text 424 182 drop-delay in [ms];
+#X obj 36 599 drip;
+#X obj 95 601 drip 0;
+#X msg 36 548 5 4 3 2 1 ready go;
+#X obj 36 569 t l l;
+#X obj 95 639 print SCHEDULED;
+#X obj 36 661 print DESCHEDUL;
+#X obj 248 592 drip -10;
+#X obj 248 621 print DESCHED;
+#X msg 248 556 bang;
+#X obj 639 805 unfold;
+#X text 423 790 for historical reasons (finding no proper object-name...) we still provide the obsolete alias;
+#X text 44 27 unfolds a package to a sequence;
+#X text 43 50 since you can switch to scheduled mode \, this might be used to reduce CPU-load;
+#X text 55 817 see also :;
+#X obj 127 819 repack;
+#X obj 35 299 t l l b;
+#X obj 151 350 t l l;
+#X obj 35 375 unfold 200 flush;
+#X obj 141 375 unfold 200;
+#X obj 151 309 del 250;
+#X msg 35 280 list some atoms could be saved while others;
+#X msg 151 329 list might get lost;
+#X obj 35 412 print TIGHT;
+#X obj 141 413 print LOOSE;
+#X obj 35 393 pipe s 1500;
+#X text 411 309 creation:;
+#X text 475 309 "drip [<n> [flush]]";
+#X text 457 397 <n> is the initial drop-delay in [ms];
+#X text 452 333 "flush" indicates whether non-empty buffers should be flushed when a new package arrives or not.;
+#X text 453 362 default is no_flush;
+#X text 457 430 n==0 will DO scheduling (and is therefore somewhat "slower" than without arguments;
+#X text 455 415 default is NO scheduling;
+#X text 456 465 negative values for <n> turn off scheduling;
+#X connect 0 0 4 0;
+#X connect 2 0 4 0;
+#X connect 4 0 1 0;
+#X connect 6 0 7 0;
+#X connect 8 0 6 0;
+#X connect 9 0 6 1;
+#X connect 12 0 17 0;
+#X connect 13 0 16 0;
+#X connect 14 0 15 0;
+#X connect 15 0 12 0;
+#X connect 15 1 13 0;
+#X connect 18 0 19 0;
+#X connect 20 0 18 0;
+#X connect 27 0 29 0;
+#X connect 27 1 30 0;
+#X connect 27 2 31 0;
+#X connect 28 0 29 0;
+#X connect 28 1 30 0;
+#X connect 29 0 36 0;
+#X connect 30 0 35 0;
+#X connect 31 0 33 0;
+#X connect 32 0 27 0;
+#X connect 33 0 28 0;
+#X connect 36 0 34 0;
diff --git a/examples/envrms~.pd b/examples/envrms~.pd
new file mode 100644
index 0000000..c0a4cc0
--- /dev/null
+++ b/examples/envrms~.pd
@@ -0,0 +1,24 @@
+#N canvas 288 18 580 361 10;
+#X obj 71 51 envrms~;
+#X text 174 51 an envelope follower that outputs rms instead of dB;
+#X obj 59 172 sig~ 3;
+#X floatatom 59 148;
+#X obj 59 233 env~;
+#X floatatom 59 254;
+#X floatatom 129 255;
+#X obj 129 234 envrms~;
+#X text 177 93 (i found it very often quite annoying \, to get dB all the times \, and i wouldn't use snapshot~ instead);
+#X obj 59 276 dbtorms;
+#X floatatom 59 299;
+#X text 179 172 of course \, this is cheaper than using env~ + dbtorms;
+#X text 272 269 see also:;
+#X obj 277 296 env~;
+#X obj 315 296 avg~;
+#X obj 354 296 tavg~;
+#X connect 2 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 9 0;
+#X connect 7 0 6 0;
+#X connect 9 0 10 0;
diff --git a/examples/glue.pd b/examples/glue.pd
new file mode 100644
index 0000000..ecc8603
--- /dev/null
+++ b/examples/glue.pd
@@ -0,0 +1,21 @@
+#N canvas 652 218 777 455 10;
+#X obj 111 58 glue;
+#X text 171 58 glue together 2 packages (append \, prepend \, ...)
+;
+#X msg 95 147 1 2 3;
+#X msg 127 174 4 you and me;
+#X obj 95 274 print;
+#X obj 277 270 print;
+#X msg 277 154 bang;
+#X msg 317 154 symbol click;
+#X text 104 335 creation argument: preset the second inlet;
+#X msg 51 179 bang;
+#X obj 95 210 glue;
+#X obj 277 206 glue and stick;
+#X connect 2 0 10 0;
+#X connect 3 0 10 1;
+#X connect 6 0 11 0;
+#X connect 7 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 4 0;
+#X connect 11 0 5 0;
diff --git a/examples/index.pd b/examples/index.pd
new file mode 100644
index 0000000..e7e1232
--- /dev/null
+++ b/examples/index.pd
@@ -0,0 +1,87 @@
+#N canvas 240 25 854 550 10;
+#X msg 117 288 reset;
+#X msg 216 288 auto 0;
+#X msg 354 287 help;
+#X floatatom 441 288;
+#X floatatom 192 439;
+#X obj 117 419 index 128 3;
+#X text 224 441 index;
+#X msg 216 313 auto 1;
+#X msg 128 85 add alias;
+#X msg 128 103 add bind;
+#X msg 128 121 add break;
+#X msg 128 140 add built-in;
+#X msg 128 159 add case;
+#X msg 384 103 delete bind;
+#X msg 384 121 delete break;
+#X msg 384 140 delete built-in;
+#X msg 384 159 delete case;
+#X obj 231 179 symbol;
+#X msg 250 159 case;
+#X msg 250 140 built-in;
+#X msg 250 121 break;
+#X msg 250 103 bind;
+#X msg 250 85 alias;
+#X obj 231 197 send 2index;
+#X obj 117 372 receive 2index;
+#X obj 372 197 send 2index;
+#X obj 114 197 send 2index;
+#X text 239 48 get item index;
+#X text 233 62 (evt. add new item);
+#X text 106 269 clear map;
+#X text 68 48 add new item to map;
+#X text 382 46 delete item from map;
+#X text 190 269 set/reset AUTO-adding;
+#X text 353 271 help;
+#X text 440 272 debug: which item has index #;
+#X text 61 9 index: create a symbol->int map;
+#X text 349 402 creation : "index [<n> [<auto>]]";
+#X text 290 517 in NON-AUTO mode \, only ADDED symbols (eg. "add <symbol>") are added to the map;
+#X text 289 495 in AUTO mode \, unknown symbols are automatically added to the map \;;
+#X msg 384 85 delete alias;
+#N canvas 601 96 333 308 print2screen 0;
+#X obj 114 58 inlet;
+#X obj 157 59 inlet;
+#X obj 114 231 pack 0 s;
+#X msg 114 252 \$2 -> \$1;
+#X obj 114 271 print mapped;
+#X obj 157 192 route add symbol delete;
+#X obj 157 212 symbol;
+#X obj 246 173 loadbang;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 6 0;
+#X connect 5 1 6 0;
+#X connect 5 2 6 0;
+#X connect 6 0 2 1;
+#X connect 7 0 6 0;
+#X restore 117 488 pd print2screen;
+#X text 387 420 n :: max. number of elements in list (defaults to 128);
+#X text 369 429 auto :: 1_sets auto ON \, 0_sets auto OFF (default off);
+#X connect 0 0 5 0;
+#X connect 1 0 5 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 5 0 40 0;
+#X connect 7 0 5 0;
+#X connect 8 0 26 0;
+#X connect 9 0 26 0;
+#X connect 10 0 26 0;
+#X connect 11 0 26 0;
+#X connect 12 0 26 0;
+#X connect 13 0 25 0;
+#X connect 14 0 25 0;
+#X connect 15 0 25 0;
+#X connect 16 0 25 0;
+#X connect 17 0 23 0;
+#X connect 18 0 17 0;
+#X connect 19 0 17 0;
+#X connect 20 0 17 0;
+#X connect 21 0 17 0;
+#X connect 22 0 17 0;
+#X connect 24 0 40 1;
+#X connect 24 0 5 0;
+#X connect 39 0 25 0;
diff --git a/examples/length.pd b/examples/length.pd
new file mode 100644
index 0000000..c75f45a
--- /dev/null
+++ b/examples/length.pd
@@ -0,0 +1,16 @@
+#N canvas 186 166 450 300 10;
+#X obj 77 40 length;
+#X text 141 43 get the length of a list;
+#X obj 72 186 length;
+#X floatatom 72 206 4 0 0;
+#X msg 72 109 list these are 4 elements;
+#X msg 83 128 1 2 3;
+#X msg 95 155 auralization by wave field synthesis;
+#X msg 25 113 bang;
+#X floatatom 14 146 4 0 0;
+#X connect 2 0 3 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
diff --git a/examples/limiter~.pd b/examples/limiter~.pd
new file mode 100644
index 0000000..3749f18
--- /dev/null
+++ b/examples/limiter~.pd
@@ -0,0 +1,226 @@
+#N canvas 283 98 625 388 8;
+#X text 189 15 limiter;
+#X text 187 25 ========;
+#N canvas 0 0 591 391 creation 0;
+#X text 211 152 creates a default limiter (MONO \, 9-samples-buffer)
+;
+#X text 213 189 creates a limiter(MONO \, 10ms-buffer);
+#X text 213 223 creates a limiter (multichannel \, 9-samples-buffer)
+;
+#X text 216 256 creates a limiter (multichannel \, 1ms-buffer !!);
+#X text 82 17 "limiter [<bufsize>] [<in1> [<in2> [...]]]";
+#X text 148 70 creating inlets depends ONLY on the number of arguments
+\, not on the arguments themselves... !;
+#X text 218 313 creates a limiter (multichannel \, 9-samples-buffer)
+;
+#X text 113 187 ______________;
+#X text 89 150 _________________;
+#X text 145 220 _________;
+#X text 114 254 ______________;
+#X text 199 311 __;
+#X obj 23 151 limiter~;
+#X obj 23 185 limiter~ 10;
+#X obj 22 219 limiter~ 0 1 2 3;
+#X obj 22 253 limiter~ 1 2;
+#X obj 18 310 limiter~ We need 4 inlets;
+#X restore 39 202 page creation;
+#N canvas 62 0 762 828 modes 0;
+#X text -259 189 MODE 0 : 1-treshold-limiter;
+#X text -261 384 MODE 1 : 2-tresholds-limiter;
+#X msg 62 255 print;
+#X obj 16 316 limiter~;
+#X obj 39 141 limiter~;
+#X msg 103 123 help;
+#X msg 102 104 print;
+#X msg 39 32 mode 0;
+#X msg 102 31 LIMIT;
+#X msg 39 50 mode 1;
+#X msg 102 49 CRACK;
+#X msg 39 67 mode 2;
+#X msg 102 66 COMPRESS;
+#X text 172 48 crack limiter (2 tresholds);
+#X text 172 66 compressor (1 treshold);
+#X text 181 102 context status;
+#X text 82 30 ==;
+#X text 81 49 ==;
+#X text 80 68 ==;
+#X msg 77 302 LIMIT;
+#X obj 77 286 loadbang;
+#X text 171 30 normal limiter (1 treshold) [default];
+#X msg 61 459 print;
+#X obj 13 522 limiter~;
+#X obj 74 492 loadbang;
+#X msg 74 508 CRACK;
+#X msg 47 716 print;
+#X obj 60 760 loadbang;
+#X text -255 590 MODE 2 : compressor;
+#X msg 60 776 COMPRESS;
+#X msg 52 629 ratio 0.5;
+#X text 159 628 set compress-ratio (0.5 == 1:2);
+#X text 159 605 set the treshold \, where the compressor should start
+to compress;
+#X text 162 677 set the compressor (limit/treshold/ratio);
+#X text 161 655 set limit/holdtime/releasetime at once;
+#X text 163 717 view actual settings;
+#X text 147 459 view actual settings;
+#X msg 64 188 limit 90;
+#X msg 64 211 set 105 40 150;
+#X msg 62 404 set 105 40 150;
+#X msg 65 426 set2 120 1 10;
+#X msg 51 654 set 110 40 150;
+#X msg 51 611 treshold 10;
+#X msg 50 677 compress 96 88 0.5;
+#X text 158 591 set the output-limit;
+#X msg 51 593 limit 98;
+#X text 148 254 view actual settings;
+#X text 149 212 set limit/holdtime/releasetime at once;
+#X text 149 185 set output limit;
+#X obj -1 790 limiter~;
+#X text 145 404 set limiter1 (output-limit/hold-time/release-time)
+;
+#X text -260 621 the output signal will never become louder than the
+specified output-limit.;
+#X text -260 643 if the input-signal becomes loader than the input-treshold
+\, a compressor will start working \, compressing the dynamic range
+by the specified ratio. Signals lesser than the treshold will pass
+through uncompressed.;
+#X text -231 59 set the limiter~ to one of the 3 modes;
+#X text 144 380 set both limits;
+#X text -261 220 this is simple : the output will not become bigger
+than the specified limit. When the input becomes small enough again
+so that this condition is matched even without (positive) amplification
+(this is \, when the input signal level falls below the limit) \, the
+amplification will increase gradually (depending on hold- & release-time)
+towards 1;
+#X text 144 427 set limiter2 (input-treshold/hold-time/release-time)
+;
+#X msg 62 381 limits 100 108;
+#X text -260 414 this limiter can be used to handle disgusting things
+like cracks \, which are much louder than the "normal" musical signal.
+Typically hold- and release-times for the second limiter are far smaller
+than those for the first \, to ensure that the disturbance will pass
+quite fast (since the crack would disturb the sensation anyhow \, we
+do not care much about the distortion caused by a fast limiter). The
+treshold for the 2nd limiter must be greater than the ouput-limit (if
+not \, the limiter will be reset to MODE 0);
+#X text -257 288 all levels (limts/tresholds) should be given in dB
+to produce satisfying results (following pd's agreement on the deziBel-scale
+\, 100dB are equal to 1 \, 0dB equals 0 \, ...);
+#X text 184 123 context(!) help;
+#X connect 2 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 0;
+#X connect 8 0 4 0;
+#X connect 9 0 4 0;
+#X connect 10 0 4 0;
+#X connect 11 0 4 0;
+#X connect 12 0 4 0;
+#X connect 19 0 3 0;
+#X connect 20 0 19 0;
+#X connect 22 0 23 0;
+#X connect 24 0 25 0;
+#X connect 25 0 23 0;
+#X connect 26 0 49 0;
+#X connect 27 0 29 0;
+#X connect 29 0 49 0;
+#X connect 30 0 49 0;
+#X connect 37 0 3 0;
+#X connect 38 0 3 0;
+#X connect 39 0 23 0;
+#X connect 40 0 23 0;
+#X connect 41 0 49 0;
+#X connect 42 0 49 0;
+#X connect 43 0 49 0;
+#X connect 45 0 49 0;
+#X connect 57 0 23 0;
+#X restore 184 201 page modes;
+#X msg 338 192 print;
+#X obj 385 316 dac~;
+#X obj 385 259 *~;
+#X obj 416 259 *~;
+#X floatatom 401 112 0 0 0;
+#X floatatom 482 110 0 0 0;
+#X floatatom 440 111 0 0 0;
+#X text 437 98 both;
+#X text 396 98 left;
+#X text 478 98 right;
+#X obj 416 206 limiter~ 50 1;
+#N canvas 0 153 455 493 tabwrite 0;
+#X graph graph1 0 -1 32767 1 130 336 330 196;
+#X array array1 32768 float 0;
+#X pop;
+#X obj 111 63 inlet~;
+#X msg 214 78 \; array1 resize 32768;
+#X obj 111 85 tabwrite~ array1;
+#X obj 151 64 bang~;
+#X obj 214 59 loadbang;
+#X obj 337 88 block~ 32768 8;
+#X connect 1 0 3 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X restore 443 318 pd tabwrite;
+#X obj 416 317 env~;
+#X floatatom 416 335 4 0 0;
+#X text 30 184 to learn more about this object \, try these;
+#X text 48 301 http://iem.kug.ac.at/~zmoelnig;
+#N canvas 59 76 600 400 generator~ 0;
+#X obj 86 49 inlet;
+#X obj 252 54 inlet;
+#X obj 112 229 outlet~;
+#X obj 112 185 *~;
+#X obj 151 185 *~;
+#X obj 122 128 osc~ 440;
+#X obj 151 145 osc~ 689.062;
+#X obj 112 163 line~;
+#X obj 167 162 line~;
+#X msg 167 128 \$1 100;
+#X msg 112 111 \$1 100;
+#X obj 86 97 f;
+#X obj 252 98 f;
+#X obj 154 229 outlet~;
+#X obj 86 72 dbtorms;
+#X obj 252 78 dbtorms;
+#X connect 0 0 14 0;
+#X connect 1 0 15 0;
+#X connect 3 0 2 0;
+#X connect 4 0 13 0;
+#X connect 5 0 3 1;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 1;
+#X connect 9 0 8 0;
+#X connect 10 0 7 0;
+#X connect 11 0 10 0;
+#X connect 12 0 9 0;
+#X connect 14 0 11 0;
+#X connect 15 0 12 0;
+#X restore 416 161 pd generator~;
+#X obj 426 240 nop~;
+#X obj 385 240 nop~;
+#X text 37 91 it is quite important to delay the original signals before
+the limiter-amplification is applied to prevent clicks !!!;
+#X text 52 283 1906:forum::für::umläute:2001;
+#X text 36 41 limiter will output the amplification-factor that has
+to be applied on all INlet~s to get a beautiful limited multichannel-signal
+that preserves the balance between the channels;
+#X text 401 72 level of the inlets;
+#X text 389 83 (give some 190dB and notice no clipping);
+#X connect 4 0 14 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 1;
+#X connect 7 0 16 0;
+#X connect 7 0 15 0;
+#X connect 8 0 20 0;
+#X connect 9 0 20 1;
+#X connect 10 0 20 0;
+#X connect 10 0 20 1;
+#X connect 14 0 7 0;
+#X connect 14 0 6 1;
+#X connect 16 0 17 0;
+#X connect 20 0 14 0;
+#X connect 20 0 22 0;
+#X connect 20 1 14 1;
+#X connect 20 1 21 0;
+#X connect 21 0 7 1;
+#X connect 22 0 6 0;
diff --git a/examples/list2int.pd b/examples/list2int.pd
new file mode 100644
index 0000000..d850396
--- /dev/null
+++ b/examples/list2int.pd
@@ -0,0 +1,17 @@
+#N canvas 104 89 612 302 12;
+#X obj 106 246 print;
+#X msg 141 139 3.14159 2 hello 1;
+#X msg 150 170 gosh 2.3 1;
+#X obj 106 212 list2int;
+#X text 145 23 list to integer;
+#X text 98 49 cast all floats of a list to integers;
+#X msg 106 110 1 2 -1.567 3 2;
+#X text 225 110 list of floats;
+#X text 316 138 list with symbols;
+#X text 240 169 anything;
+#X obj 412 248 l2i;
+#X text 365 248 alias;
+#X connect 1 0 3 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 6 0 3 0;
diff --git a/examples/list2symbol.pd b/examples/list2symbol.pd
new file mode 100644
index 0000000..801803f
--- /dev/null
+++ b/examples/list2symbol.pd
@@ -0,0 +1,16 @@
+#N canvas 190 131 809 343 10;
+#X obj 135 48 list2symbol;
+#X text 219 48 convert a list into a symbol;
+#X obj 457 50 l2s;
+#X symbolatom 75 230 50 0 0;
+#X obj 75 202 list2symbol;
+#X msg 75 156 list this was a list and is now a symbol;
+#X msg 159 177 anythings work fine too;
+#X obj 507 212 l2s my bonnie is over the ocean;
+#X obj 507 232 print;
+#X msg 507 191 bang;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
+#X connect 9 0 7 0;
diff --git a/examples/lister.pd b/examples/lister.pd
new file mode 100644
index 0000000..d6f3e45
--- /dev/null
+++ b/examples/lister.pd
@@ -0,0 +1,23 @@
+#N canvas 83 390 771 524 10;
+#X obj 160 14 lister;
+#X text 210 15 - store a list;
+#X msg 41 151 bang;
+#X text 76 152 outputs a list;
+#X text 257 196 sets and outputs a list;
+#X text 307 239 sets a list;
+#X text 214 263 creation argument initializes a list;
+#X obj 41 303 print;
+#X text 129 362 alias;
+#X obj 169 362 l;
+#X text 64 53 similar to the "float" \, "int" \, "symbol" \, ... objects;
+#X msg 204 240 2 3 5 7 11 prime;
+#X obj 41 262 lister 1 2 3 4 5 6 7 ordinal;
+#X msg 62 197 1 1 2 3 5 8 13 21 44 fibonacchi;
+#X text 64 77 of course \, this is similar to the "pack" object \, but here we handle list-lenghts dynamically and do not care about type checking !!!;
+#X text 40 434 of course \, this should be named "list" \, but there already appears to be a "list" object \, though i don't see any use in it;
+#X obj 434 443 list 1 two trois;
+#X text 40 471 it seems to store 1 atom only;
+#X connect 2 0 12 0;
+#X connect 11 0 12 1;
+#X connect 12 0 7 0;
+#X connect 13 0 12 0;
diff --git a/examples/lp.pd b/examples/lp.pd
new file mode 100644
index 0000000..2a317b7
--- /dev/null
+++ b/examples/lp.pd
@@ -0,0 +1,20 @@
+#N canvas 173 205 772 508 10;
+#X obj 90 33 lp;
+#X text 129 36 write data to the (parallel) port;
+#X text 82 70 this is LINUX ONLY !!!;
+#X text 17 125 note:;
+#X text 59 126 you might have to be root to get write-permissions on your specified port.;
+#X text 59 160 you can access all ports on your system when using "lp <hex-port-address>";
+#X text 59 194 if your port-address exceeds 0x3ff \, "lp" will try to get all permissions with the iopl()-command. this might be dangerous !;
+#X obj 81 411 lp 0;
+#X obj 110 411 lp 1;
+#X obj 139 411 lp 2;
+#X text 75 390 parallel ports 0 \, 1 \, 2;
+#X obj 294 415 lp 0x378;
+#X text 289 394 another port;
+#X obj 81 337 lp 1;
+#X obj 81 305 % 256;
+#X floatatom 81 283 4 0 0;
+#X text 122 284 write an 8bit-word;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
diff --git a/examples/makesymbol.pd b/examples/makesymbol.pd
new file mode 100644
index 0000000..a9ac712
--- /dev/null
+++ b/examples/makesymbol.pd
@@ -0,0 +1,58 @@
+#N canvas 131 -9 723 652 10;
+#X obj 57 15 makesymbol;
+#X text 56 39 makesymbol is something between the "symbol" and the "makefilename" object.;
+#X text 56 79 Any list (with up to 10 members) on the first input will be applied on a C-like format-string that can be either given as an argument on the second input or as a creation-argument.;
+#X text 58 150 The result will be a symbol.;
+#X obj 59 267 makesymbol;
+#X obj 61 591 makesymbol %s_is_%s;
+#X msg 14 246 bang;
+#X msg 11 359 bang;
+#X msg 10 570 bang;
+#X msg 232 246 symbol cat;
+#X msg 59 208 symbol horse;
+#X msg 59 233 symbol cow;
+#X obj 58 380 makesymbol house;
+#X msg 61 349 symbol castle;
+#X msg 232 221 symbol %ss;
+#X symbolatom 233 196;
+#X symbolatom 59 182;
+#X symbolatom 232 310;
+#X msg 61 562 list conan back;
+#X floatatom 128 511;
+#X obj 61 536 pack s 12;
+#X msg 61 488 symbol eleven;
+#X obj 59 293 print A;
+#X obj 58 405 print B;
+#X obj 61 615 print C;
+#X msg 232 335 symbol %d;
+#X msg 232 359 symbol %s;
+#X text 320 360 only %s does;
+#X text 319 328 %d \, %f... won't work properly;
+#X text 321 241 if the right inlet (mask) does not have any format-tags \, the left one won't get through !!;
+#X floatatom 62 460;
+#X text 149 461 it doesn't matter whether you are using numbers \, symbols...;
+#X text 254 541 note:: every member of the list will be converted to a STRING \, so there's no use \, using %d \, %f...;
+#X floatatom 59 324;
+#X text 353 338 (at least \, you won't get what you normally want);
+#X connect 4 0 22 0;
+#X connect 5 0 24 0;
+#X connect 6 0 4 0;
+#X connect 7 0 12 0;
+#X connect 8 0 5 0;
+#X connect 9 0 4 1;
+#X connect 10 0 4 0;
+#X connect 11 0 4 0;
+#X connect 12 0 23 0;
+#X connect 13 0 12 0;
+#X connect 14 0 4 1;
+#X connect 15 0 4 1;
+#X connect 16 0 4 0;
+#X connect 17 0 12 1;
+#X connect 18 0 5 0;
+#X connect 19 0 20 1;
+#X connect 20 0 5 0;
+#X connect 21 0 20 0;
+#X connect 25 0 12 1;
+#X connect 26 0 12 1;
+#X connect 30 0 5 0;
+#X connect 33 0 12 0;
diff --git a/examples/matrix.pd b/examples/matrix.pd
new file mode 100644
index 0000000..a1c6332
--- /dev/null
+++ b/examples/matrix.pd
@@ -0,0 +1,133 @@
+#N canvas 94 0 1118 745 10;
+#X obj 258 -23 matrix;
+#X obj 61 187 mtx_check;
+#X obj 61 216 mtx_print;
+#X obj 544 -21 mtx;
+#X obj 30 535 mtx_print;
+#X obj 30 513 matrix;
+#X msg 42 372 zeros 5;
+#X msg 30 353 eye 3;
+#X msg 49 390 ones 4;
+#X msg 55 411 diag 1 2 3 4;
+#X obj 369 531 matrix;
+#X obj 471 496 loadbang;
+#X obj 471 516 mtx_diag 4 3 1 2;
+#X obj 369 553 print;
+#X msg 369 364 row;
+#X msg 539 497 bang;
+#X msg 379 404 row \$1;
+#X floatatom 379 385 4 0 0;
+#X floatatom 391 424 4 0 0;
+#X msg 391 443 row \$1 1 2 3 4;
+#X floatatom 498 382 4 0 0;
+#X floatatom 510 421 4 0 0;
+#X msg 488 362 col;
+#X msg 498 401 col \$1;
+#X msg 510 440 col \$1 1 2 3 4;
+#X msg 592 364 element;
+#X msg 623 406 element \$1;
+#X floatatom 643 428 4 0 0;
+#X msg 643 447 element 3 \$1;
+#X floatatom 623 386 4 0 0;
+#X msg 61 162 matrix 3 3 1 2 3 4 5 6 7;
+#X msg 39 136 matrix 3 3 1 2 3 4 5 6 7;
+#X text 43 79 this is \, how a matrix really looks...;
+#X text 216 134 an "illegal" matrix;
+#X text 122 187 make the "illegal" matrix consistent;
+#X text 216 103 a "legal" matrix;
+#X msg 40 103 matrix 3 3 1 2 3 1 2 4 7 6 5;
+#X obj 590 218 mtx_print;
+#X obj 590 196 matrix;
+#X obj 655 174 mtx_ones 10;
+#X msg 655 154 bang;
+#X text 121 218 print to stderr (like "print");
+#X msg 590 64 bang;
+#X floatatom 615 103 4 0 0;
+#X msg 604 85 matrix 2 3 10 10 30 20 -5 8;
+#X msg 627 126 1 2 3 1 2 3 10 20 30;
+#X text 758 118 a list of elements;
+#X text 759 132 has to fit the size of the "current" matrix;
+#X text 651 104 set all elements of the current matrix to a value;
+#X text 366 345 get/set rows;
+#X text 479 344 get/set columns;
+#X text 5 564 create various matrices;
+#X text 356 -21 matrix operations;
+#X text 636 197 ==;
+#X obj 660 197 mtx;
+#X msg 335 398 bang;
+#X text 586 344 get/set elements;
+#X msg 654 486 element \$1 2 10;
+#X floatatom 654 468 4 0 0;
+#X msg 702 406 element \$1 \$1;
+#X text 687 406 ==;
+#X obj 161 479 matrix 3 2;
+#X obj 161 525 mtx_print;
+#X msg 161 357 bang;
+#X text 143 542 an "empty" [3 \, 2] matrix;
+#X msg 73 433 egg 4;
+#X msg 75 455 diegg 3 2 1;
+#X obj 126 671 mtx_element;
+#X obj 225 646 mtx_size;
+#X obj 225 669 mtx_transpose;
+#X obj 427 650 mtx_mean;
+#X obj 427 669 mtx_rand;
+#X obj 338 670 mtx_inverse;
+#X obj 126 646 mtx_eye;
+#X obj 338 645 mtx_+;
+#X text 127 620 see also help for:;
+#X msg 912 383 write /tmp/my_matrix.mtx;
+#X msg 912 406 read /tmp/my_matrix.mtx;
+#X obj 810 412 mtx_rand;
+#X msg 810 390 4 5;
+#X msg 858 389 bang;
+#X obj 858 464 mtx_print;
+#X text 848 351 load and save matrices;
+#X obj 858 440 matrix test.mtx;
+#X connect 1 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X connect 10 0 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 1;
+#X connect 14 0 10 0;
+#X connect 15 0 12 0;
+#X connect 16 0 10 0;
+#X connect 17 0 16 0;
+#X connect 18 0 19 0;
+#X connect 19 0 10 0;
+#X connect 20 0 23 0;
+#X connect 21 0 24 0;
+#X connect 22 0 10 0;
+#X connect 23 0 10 0;
+#X connect 24 0 10 0;
+#X connect 25 0 10 0;
+#X connect 26 0 10 0;
+#X connect 27 0 28 0;
+#X connect 28 0 10 0;
+#X connect 29 0 26 0;
+#X connect 30 0 1 0;
+#X connect 31 0 2 0;
+#X connect 36 0 2 0;
+#X connect 38 0 37 0;
+#X connect 39 0 38 1;
+#X connect 40 0 39 0;
+#X connect 42 0 38 0;
+#X connect 43 0 38 0;
+#X connect 44 0 38 0;
+#X connect 45 0 38 0;
+#X connect 55 0 10 0;
+#X connect 57 0 10 0;
+#X connect 58 0 57 0;
+#X connect 61 0 62 0;
+#X connect 63 0 61 0;
+#X connect 65 0 5 0;
+#X connect 66 0 5 0;
+#X connect 76 0 83 0;
+#X connect 77 0 83 0;
+#X connect 78 0 83 0;
+#X connect 79 0 78 0;
+#X connect 80 0 83 0;
+#X connect 83 0 81 0;
diff --git a/examples/matrix~.pd b/examples/matrix~.pd
new file mode 100644
index 0000000..5b0fa07
--- /dev/null
+++ b/examples/matrix~.pd
@@ -0,0 +1,58 @@
+#N canvas 59 -12 889 589 12;
+#X obj 68 271 osc~ 100;
+#X obj 68 297 *~ 0.2;
+#X obj 112 320 osc~ 1000;
+#X obj 112 346 *~ 1.5;
+#X obj 157 295 osc~ 432;
+#X obj 68 411 env~;
+#X floatatom 68 435 4 0 0;
+#X obj 127 410 env~;
+#X floatatom 127 434 4 0 0;
+#X obj 187 410 env~;
+#X floatatom 187 434 4 0 0;
+#X obj 247 409 env~;
+#X floatatom 247 433 4 0 0;
+#X floatatom 284 350 4 0 0;
+#X text 332 353 fade time in [ms];
+#X msg 265 100 bang;
+#X obj 265 127 mtx_eye 3 4;
+#X msg 362 100 bang;
+#X obj 362 127 mtx_egg 3 4;
+#X msg 261 179 bang;
+#X msg 362 178 bang;
+#X obj 261 206 mtx_ones 3 4;
+#X obj 362 205 mtx_zeros 3 4;
+#X obj 68 371 matrix~ 3 4 100 .......;
+#X obj 98 32 matrix~;
+#X text 174 24 matrix-multiply m IN~signals to n OUT~signals;
+#X text 174 37 matrices are interpolated a la line~;
+#X text 473 91 the one-before-last inlet eats;
+#X text 476 104 matrix-messages to control the gains;
+#X text 475 117 of the matrix~;
+#X text 484 333 the last inlet gets the fade-time between two matrix-messages.
+;
+#X obj 78 505 matrix~;
+#X text 154 503 creation: "matrix~ [<num_in> [<num_out> [<fade_time>]]]
+;
+#X connect 0 0 1 0;
+#X connect 1 0 23 0;
+#X connect 2 0 3 0;
+#X connect 3 0 23 1;
+#X connect 4 0 23 2;
+#X connect 5 0 6 0;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 11 0 12 0;
+#X connect 13 0 23 4;
+#X connect 15 0 16 0;
+#X connect 16 0 23 3;
+#X connect 17 0 18 0;
+#X connect 18 0 23 3;
+#X connect 19 0 21 0;
+#X connect 20 0 22 0;
+#X connect 21 0 23 3;
+#X connect 22 0 23 3;
+#X connect 23 0 5 0;
+#X connect 23 1 7 0;
+#X connect 23 2 9 0;
+#X connect 23 3 11 0;
diff --git a/examples/mavg.pd b/examples/mavg.pd
new file mode 100644
index 0000000..55a5e0e
--- /dev/null
+++ b/examples/mavg.pd
@@ -0,0 +1,16 @@
+#N canvas 0 0 452 302 12;
+#X obj 119 132 metro 100;
+#X obj 119 155 random 10;
+#X floatatom 119 235 4 0 0;
+#X msg 120 107 1;
+#X msg 153 108 0;
+#X obj 119 202 mavg 4;
+#X floatatom 220 181 4 0 0;
+#X text 59 20 moving average filter;
+#X text 261 181 samples to average;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 1;
diff --git a/examples/mean.pd b/examples/mean.pd
new file mode 100644
index 0000000..ca2851b
--- /dev/null
+++ b/examples/mean.pd
@@ -0,0 +1,9 @@
+#N canvas 186 94 383 302 12;
+#X obj 83 154 mean;
+#X floatatom 83 202 4 0 0;
+#X msg 96 96 2 4;
+#X text 46 17 get the mean value of a list of floats;
+#X msg 83 69 1 2 3 -4 5 6;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 4 0 0 0;
diff --git a/examples/minmax.pd b/examples/minmax.pd
new file mode 100644
index 0000000..8675c12
--- /dev/null
+++ b/examples/minmax.pd
@@ -0,0 +1,12 @@
+#N canvas 230 189 450 300 10;
+#X obj 73 61 minmax;
+#X text 127 60 get minimum and maximum of a (list of floats);
+#X obj 45 152 minmax;
+#X floatatom 45 184 4 0 0;
+#X floatatom 76 184 4 0 0;
+#X msg 45 112 10 2;
+#X msg 80 129 1 2 3 4 9 6 -1 7;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
diff --git a/examples/msgfile.pd b/examples/msgfile.pd
new file mode 100644
index 0000000..2e8ff56
--- /dev/null
+++ b/examples/msgfile.pd
@@ -0,0 +1,109 @@
+#N canvas 127 -1 1027 898 10;
+#X msg 463 10 rewind;
+#X obj 392 853 print done;
+#X text 575 665 read a file;
+#X text 609 686 write one;
+#X text 23 356 see also:;
+#X text 512 9 go to beginning;
+#X msg 466 223 bang;
+#X text 474 724 write a file \, terminating lines only with carriage return (omitting semicolons.) You can read files this way too \, in which case carriage returns are mapped to semicolons.;
+#X obj 355 871 print list;
+#X msg 466 281 clear;
+#X text 123 872 this outlet gets the lines in sequence.;
+#X msg 470 571 set 2 4 6 8;
+#X text 576 570 clear and then add one message;
+#X msg 466 388 add cis boom bah;
+#X msg 465 407 add2 bang;
+#X msg 465 782 print;
+#X text 507 784 debugging printout;
+#X obj 73 9 msgfile;
+#X text 127 9 read and write messages into text files;
+#X obj 355 815 msgfile;
+#X obj 84 357 textfile;
+#X text 18 57 The msgfile object is derived from the textfile object and expands its features.;
+#X text 15 97 new features are :;
+#X text 127 110 insert \, append \, delete \, replace;
+#X msg 464 33 end;
+#X text 511 33 go the the end;
+#X msg 462 84 skip -1;
+#X msg 463 181 next;
+#X msg 462 139 prev;
+#X msg 462 108 where;
+#X text 515 107 where are we now ?;
+#X msg 463 160 this;
+#X text 516 84 go to the <n>th line from here;
+#X text 512 58 go to line number <n>;
+#X text 515 220 output one line as a list and move to the next;
+#X text 520 282 empty the object;
+#X msg 467 321 delete 2;
+#X text 9 183 changed behaviour :;
+#X text 130 183 add2 : read "add too" \; append to an existing line;
+#X text 602 433 insert a message before the current line;
+#X text 605 455 add to the previous line (CHANGED BEHAVIOUR !!!);
+#X text 567 405 add to the last line (CHANGED BEHAVIOUR !!!);
+#X text 568 385 add a message at the end of the object;
+#X msg 467 489 append after the break of dawn;
+#X text 661 486 add a message at the current position;
+#X text 660 506 add to the current line (CHANGED BEHAVIOUR !!!);
+#X msg 468 537 replace the new day;
+#X text 660 537 replace the current line;
+#X msg 466 437 insert before sunrise;
+#X msg 466 455 insert2 inserted;
+#X msg 467 508 append2 appendix;
+#X msg 467 250 flush;
+#X text 516 249 output all lines;
+#X text 457 836 This outlet gets a bang when you hit the end of the sequence \; it will also get the current position when using "when";
+#X msg 467 666 read msgfile.txt;
+#X msg 467 708 write /tmp/msgfile2.txt cr;
+#X msg 466 761 read msgfile2.txt cr;
+#X text 511 139 output the previous line;
+#X text 513 179 output the next line;
+#X text 511 159 output the current line;
+#X msg 462 59 goto 8;
+#X msg 467 301 delete;
+#X text 521 302 delete the current line;
+#X text 524 321 delete the specified line;
+#X msg 467 340 delete 4 7;
+#X text 535 341 delete the specified region;
+#X msg 467 360 delete 7 4;
+#X msg 467 687 write /tmp/msgfile.txt;
+#X text 538 360 delete all but the specified region;
+#X msg 472 600 find test 6;
+#X msg 472 619 find test * 7 *;
+#X text 576 606 find a matching list ("*" is the only wildcard supported);
+#X text 127 97 end \, goto \, skip;
+#X text 131 127 flush \, where \, this \, prev \, next;
+#X text 128 145 find;
+#X text 73 163 read/write can handle csv files too;
+#X connect 0 0 19 0;
+#X connect 6 0 19 0;
+#X connect 9 0 19 0;
+#X connect 11 0 19 0;
+#X connect 13 0 19 0;
+#X connect 14 0 19 0;
+#X connect 15 0 19 0;
+#X connect 19 0 8 0;
+#X connect 19 1 1 0;
+#X connect 24 0 19 0;
+#X connect 26 0 19 0;
+#X connect 27 0 19 0;
+#X connect 28 0 19 0;
+#X connect 29 0 19 0;
+#X connect 31 0 19 0;
+#X connect 36 0 19 0;
+#X connect 43 0 19 0;
+#X connect 46 0 19 0;
+#X connect 48 0 19 0;
+#X connect 49 0 19 0;
+#X connect 50 0 19 0;
+#X connect 51 0 19 0;
+#X connect 54 0 19 0;
+#X connect 55 0 19 0;
+#X connect 56 0 19 0;
+#X connect 60 0 19 0;
+#X connect 61 0 19 0;
+#X connect 64 0 19 0;
+#X connect 66 0 19 0;
+#X connect 67 0 19 0;
+#X connect 69 0 19 0;
+#X connect 70 0 19 0;
diff --git a/examples/mtx_binops.pd b/examples/mtx_binops.pd
new file mode 100644
index 0000000..9c700f4
--- /dev/null
+++ b/examples/mtx_binops.pd
@@ -0,0 +1,112 @@
+#N canvas 95 74 802 673 10;
+#X obj 87 360 mtx_mul;
+#X obj 157 360 mtx_*;
+#X obj 88 163 mtx_add;
+#X obj 167 166 mtx_+;
+#X obj 155 134 mtx_diag 1 2 3 4 5;
+#X obj 88 134 mtx_ones 5;
+#X obj 88 111 t b b;
+#X obj 88 185 mtx_print;
+#X msg 88 92 bang;
+#X text 142 165 ==;
+#X obj 305 134 mtx_eye 4;
+#X obj 305 159 mtx_add 10;
+#X msg 305 107 bang;
+#X obj 305 186 mtx_print;
+#X floatatom 374 101 4 0 0;
+#X obj 374 119 t b f;
+#X obj 392 160 mtx_+ 10;
+#X text 371 161 ==;
+#X obj 87 394 mtx_print;
+#X msg 87 270 bang;
+#X obj 133 332 mtx_diag 1 2;
+#X obj 87 297 t b b;
+#X obj 87 332 mtx_+ 3;
+#X text 137 361 ==;
+#X obj 87 314 mtx_eye 3 2;
+#X obj 249 399 mtx_print;
+#X obj 249 292 t b f;
+#X floatatom 249 274 4 0 0;
+#X msg 249 315 4 2 1 3;
+#X obj 249 335 mtx_diag;
+#X obj 249 363 mtx_mul 2;
+#X obj 328 363 mtx_* 2;
+#X obj 393 363 mtx_.* 2;
+#X text 310 363 ==;
+#X text 376 364 ==;
+#X obj 522 366 mtx_.*;
+#X obj 522 401 mtx_print;
+#X obj 522 304 mtx_diag 1 2 3;
+#X obj 553 322 mtx_ones 3;
+#X obj 522 283 t b b;
+#X msg 522 264 bang;
+#X obj 553 341 mtx_* 2;
+#X text 80 214 add 2 matrices;
+#X text 274 218 add an offset to a matrix;
+#X text 70 423 multiply 2 matrices;
+#X text 245 422 multiply a matrix with a scalar;
+#X text 506 425 multiply 2 matrices element by element;
+#X text 334 19 matrix arithmetic;
+#X obj 88 599 mtx_print;
+#X obj 88 492 t b f;
+#X floatatom 88 474 4 0 0;
+#X msg 88 515 4 2 1 3;
+#X obj 88 535 mtx_diag;
+#X obj 323 600 mtx_print;
+#X obj 323 503 mtx_diag 1 2 3;
+#X obj 354 521 mtx_ones 3;
+#X obj 354 540 mtx_* 2;
+#X text 84 622 divide a matrix by a scalar;
+#X obj 88 563 mtx_./ 2;
+#X obj 323 565 mtx_./;
+#X text 307 624 divide 2 matrices element by element;
+#X obj 323 482 t b b f;
+#X floatatom 323 463 4 0 0;
+#X obj 709 538 matrix;
+#X text 592 538 see also help for;
+#X connect 0 0 18 0;
+#X connect 2 0 7 0;
+#X connect 4 0 2 1;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 6 1 4 0;
+#X connect 8 0 6 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 12 0 10 0;
+#X connect 14 0 15 0;
+#X connect 15 0 10 0;
+#X connect 15 1 11 1;
+#X connect 19 0 21 0;
+#X connect 20 0 0 1;
+#X connect 21 0 24 0;
+#X connect 21 1 20 0;
+#X connect 22 0 0 0;
+#X connect 24 0 22 0;
+#X connect 26 0 28 0;
+#X connect 26 1 30 1;
+#X connect 27 0 26 0;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
+#X connect 30 0 25 0;
+#X connect 35 0 36 0;
+#X connect 37 0 35 0;
+#X connect 38 0 41 0;
+#X connect 39 0 37 0;
+#X connect 39 1 38 0;
+#X connect 40 0 39 0;
+#X connect 41 0 35 1;
+#X connect 49 0 51 0;
+#X connect 49 1 58 1;
+#X connect 50 0 49 0;
+#X connect 51 0 52 0;
+#X connect 52 0 58 0;
+#X connect 54 0 59 0;
+#X connect 55 0 56 0;
+#X connect 56 0 59 1;
+#X connect 58 0 48 0;
+#X connect 59 0 53 0;
+#X connect 61 0 54 0;
+#X connect 61 1 55 0;
+#X connect 61 2 56 1;
+#X connect 62 0 61 0;
diff --git a/examples/mtx_element.pd b/examples/mtx_element.pd
new file mode 100644
index 0000000..a69e642
--- /dev/null
+++ b/examples/mtx_element.pd
@@ -0,0 +1,64 @@
+#N canvas 220 134 544 776 10;
+#X obj 53 302 mtx_print;
+#X obj 53 283 mtx_element 4 3;
+#X obj 64 260 mtx_ones 5 3;
+#X msg 64 241 bang;
+#X floatatom 53 191 4 0 0;
+#X msg 138 184 3 2;
+#X msg 144 202 2 0;
+#X msg 144 219 0 1;
+#X msg 145 237 0 0;
+#X text 179 184 set element [3 \, 2];
+#X text 179 202 set all elements in row [2];
+#X text 177 217 set all elements in column [1];
+#X text 178 236 set all elements of matrix;
+#X text 153 285 creation: mtx_element [<row> <col> [<posR> <posC>]];
+#X obj 53 469 mtx_print;
+#X obj 64 427 mtx_ones 5 3;
+#X msg 64 408 bang;
+#X obj 53 450 mtx_row 4 3;
+#X msg 122 405 0;
+#X text 153 405 set all rows;
+#X msg 114 383 2;
+#X text 154 380 set row [2];
+#X msg 53 356 -1 2 3 4 5;
+#X obj 50 658 mtx_print;
+#X obj 61 616 mtx_ones 5 3;
+#X msg 61 597 bang;
+#X msg 131 592 0;
+#X msg 123 570 2;
+#X msg 50 545 -1 2 3 4 5;
+#X obj 50 639 mtx_col 4 3 3;
+#X text 163 567 set column [2];
+#X text 162 593 set all columns;
+#X text 137 640 creation: mtx_col [<row> <col> [<posC>]];
+#X text 133 452 creation: mtx_row [<row> <col> [<posR>]];
+#X text 52 163 set matrix elements;
+#X text 55 339 set matrix rows;
+#X text 49 529 set matrix columns;
+#X text 187 50 get/set elements/rows/columns of a matrix;
+#X obj 90 33 mtx_element;
+#X obj 89 53 mtx_row;
+#X obj 90 75 mtx_col;
+#X obj 210 738 matrix;
+#X text 98 737 see also help for;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 1;
+#X connect 6 0 1 1;
+#X connect 7 0 1 1;
+#X connect 8 0 1 1;
+#X connect 15 0 17 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 17 1;
+#X connect 20 0 17 1;
+#X connect 22 0 17 0;
+#X connect 24 0 29 0;
+#X connect 25 0 24 0;
+#X connect 26 0 29 1;
+#X connect 27 0 29 1;
+#X connect 28 0 29 0;
+#X connect 29 0 23 0;
diff --git a/examples/mtx_inverse.pd b/examples/mtx_inverse.pd
new file mode 100644
index 0000000..9cca9fe
--- /dev/null
+++ b/examples/mtx_inverse.pd
@@ -0,0 +1,18 @@
+#N canvas 50 156 465 427 10;
+#X obj 92 208 mtx_inverse;
+#X obj 92 292 mtx_print;
+#X msg 103 140 matrix 3 3 1 2 3 2 3 4 3 4 5;
+#X text 280 142 singular;
+#X msg 92 108 matrix 3 3 1 2 4 2 3 4 3 4 5;
+#X text 265 107 regular;
+#X text 85 310 get the inverse of a matrix;
+#X text 286 158 regular;
+#X text 287 168 but badly conditioned;
+#X msg 111 164 matrix 3 3 1 2 3 2 4 4 3 4 5;
+#X text 82 26 get the inverse of a matrix;
+#X obj 233 381 matrix;
+#X text 116 381 see also help for;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 4 0 0 0;
+#X connect 9 0 0 0;
diff --git a/examples/mtx_mean.pd b/examples/mtx_mean.pd
new file mode 100644
index 0000000..02b02fb
--- /dev/null
+++ b/examples/mtx_mean.pd
@@ -0,0 +1,13 @@
+#N canvas 128 104 450 300 10;
+#X obj 57 146 mtx_mean;
+#X obj 63 91 mtx_print;
+#X obj 57 201 print mean_row;
+#X obj 57 76 mtx_rand;
+#X msg 57 52 4 5;
+#X text 55 229 get the mean value of each column;
+#X obj 175 275 matrix;
+#X text 58 275 see also help for;
+#X connect 0 0 2 0;
+#X connect 3 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
diff --git a/examples/mtx_rand.pd b/examples/mtx_rand.pd
new file mode 100644
index 0000000..491d6de
--- /dev/null
+++ b/examples/mtx_rand.pd
@@ -0,0 +1,20 @@
+#N canvas 120 116 450 300 10;
+#X obj 59 148 mtx_rand;
+#X obj 59 194 mtx_print;
+#X obj 83 100 mtx_ones 6 3;
+#X msg 83 82 bang;
+#X msg 74 58 5 7;
+#X msg 59 35 3;
+#X msg 115 133 seed 12;
+#X text 51 219 get a matrix containing;
+#X text 51 232 random elements (0..1];
+#X text 165 131 set seed;
+#X obj 357 274 matrix;
+#X text 240 274 see also help for;
+#X text 129 11 fill a matrix with random values;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
diff --git a/examples/mtx_size.pd b/examples/mtx_size.pd
new file mode 100644
index 0000000..85d7747
--- /dev/null
+++ b/examples/mtx_size.pd
@@ -0,0 +1,44 @@
+#N canvas 161 60 833 285 10;
+#X obj 386 214 mtx_print;
+#X obj 386 106 mtx_ones;
+#X msg 386 83 3 5;
+#X obj 386 192 mtx_resize;
+#X text 383 67 resize a matrix;
+#X msg 441 91 3 2;
+#X msg 447 109 2 0;
+#X msg 448 144 0 0;
+#X text 482 91 resize to [3 \, 2];
+#X text 482 109 resize to 2 rows \, leave row-length unchanged;
+#X text 481 143 don't resize;
+#X msg 452 169 2;
+#X text 484 171 resize to [2 \, 2];
+#X text 458 192 creation: mtx_resize [<rows> [<cols>]];
+#X msg 447 126 0 4;
+#X text 482 124 resize to 4 columns \, leave column-length unchanged;
+#X floatatom 81 178 4 0 0;
+#X text 78 68 get the size of a matrix;
+#X obj 81 140 mtx_size;
+#X msg 115 91 3 2;
+#X msg 81 91 7;
+#X obj 81 115 mtx_ones;
+#X floatatom 124 178 4 0 0;
+#X text 122 194 columns;
+#X text 82 195 rows;
+#X obj 150 22 mtx_size;
+#X obj 421 23 mtx_resize;
+#X text 223 24 get/set the size of a matrix;
+#X obj 306 252 matrix;
+#X text 189 252 see also help for;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 3 1;
+#X connect 11 0 3 1;
+#X connect 14 0 3 1;
+#X connect 18 0 16 0;
+#X connect 18 1 22 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 0;
+#X connect 21 0 18 0;
diff --git a/examples/mtx_special.pd b/examples/mtx_special.pd
new file mode 100644
index 0000000..b230a0f
--- /dev/null
+++ b/examples/mtx_special.pd
@@ -0,0 +1,60 @@
+#N canvas 113 77 498 667 10;
+#X obj 117 136 mtx_eye 5;
+#X obj 117 162 mtx_print;
+#X msg 117 65 bang;
+#X msg 147 109 3 5;
+#X msg 133 85 10;
+#X obj 120 332 mtx_print;
+#X msg 120 234 bang;
+#X msg 150 279 3 5;
+#X msg 136 255 10;
+#X obj 311 337 mtx_print;
+#X msg 311 239 bang;
+#X msg 341 284 3 5;
+#X msg 327 260 10;
+#X obj 120 306 mtx_ones 5;
+#X obj 311 311 mtx_zeros 5;
+#X obj 124 496 mtx_print;
+#X msg 136 417 1 2 3 4 5;
+#X msg 124 395 bang;
+#X obj 124 468 mtx_diag 7 6 5 4;
+#X text 93 181 identity matrix;
+#X text 104 358 all matrix elements=1;
+#X text 290 359 all matrix elements=0;
+#X text 113 522 diagonal-matrix;
+#X obj 333 162 mtx_print;
+#X msg 333 65 bang;
+#X msg 363 109 3 5;
+#X msg 349 85 10;
+#X obj 333 136 mtx_egg 5;
+#X obj 316 491 mtx_print;
+#X msg 328 412 1 2 3 4 5;
+#X msg 316 390 bang;
+#X obj 316 463 mtx_diegg 7 6 5 4;
+#X text 305 517 turned diagonal-matrix;
+#X text 309 181 turned identity matrix;
+#X text 173 19 create special matrices;
+#X obj 245 612 matrix;
+#X text 128 612 see also help for;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 6 0 13 0;
+#X connect 7 0 13 0;
+#X connect 8 0 13 0;
+#X connect 10 0 14 0;
+#X connect 11 0 14 0;
+#X connect 12 0 14 0;
+#X connect 13 0 5 0;
+#X connect 14 0 9 0;
+#X connect 16 0 18 0;
+#X connect 17 0 18 0;
+#X connect 18 0 15 0;
+#X connect 24 0 27 0;
+#X connect 25 0 27 0;
+#X connect 26 0 27 0;
+#X connect 27 0 23 0;
+#X connect 29 0 31 0;
+#X connect 30 0 31 0;
+#X connect 31 0 28 0;
diff --git a/examples/mtx_trace.pd b/examples/mtx_trace.pd
new file mode 100644
index 0000000..7925d5b
--- /dev/null
+++ b/examples/mtx_trace.pd
@@ -0,0 +1,23 @@
+#N canvas 137 140 916 465 10;
+#X obj 79 361 mtx_diag;
+#X obj 79 389 print;
+#X obj 79 308 mtx_ones 7;
+#X msg 79 288 bang;
+#X obj 84 106 mtx_ones 7;
+#X msg 84 83 bang;
+#X obj 84 147 mtx_trace;
+#X floatatom 84 189 4 0 0;
+#X text 86 68 get trace of a matrix;
+#X text 79 271 get diagonal of a matrix;
+#X text 81 204 trace = sum(diagonal elements);
+#X text 243 28 get information of the diagonale of a matrix;
+#X text 440 176 see also help for;
+#X obj 555 177 matrix;
+#X text 425 265 to create diagonale matrices \, see;
+#X obj 629 265 mtx_eye;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
diff --git a/examples/mtx_transpose.pd b/examples/mtx_transpose.pd
new file mode 100644
index 0000000..dd042b2
--- /dev/null
+++ b/examples/mtx_transpose.pd
@@ -0,0 +1,59 @@
+#N canvas 204 56 718 799 10;
+#X obj 48 162 mtx_print;
+#X obj 48 134 mtx_transpose;
+#X obj 48 81 mtx_ones;
+#X msg 48 59 3 5;
+#X text 45 42 transpose a matrix;
+#X text 158 13 tranpose/shift matrices;
+#X obj 37 349 mtx_print;
+#X msg 37 246 1 2 3 4 5;
+#X text 33 229 shift rows of a matrix;
+#X floatatom 104 301 4 0 0;
+#X obj 37 321 mtx_scroll 1;
+#X obj 37 268 mtx_diag;
+#X obj 32 524 mtx_print;
+#X msg 32 421 1 2 3 4 5;
+#X floatatom 99 476 4 0 0;
+#X obj 32 443 mtx_diag;
+#X text 28 404 shift columns of a matrix;
+#X obj 32 497 mtx_roll 1;
+#X text 135 477 shift amount (0=no-shift \; 1=1-column-right \; -2=2-columns-left \; ...);
+#X text 143 299 shift amount (0=no-shift \; 1=1-row-down \; -2=2-rows-up \; ...);
+#X text 30 594 pivot-transform a matrix;
+#X obj 34 669 mtx_pivot;
+#N canvas 352 114 190 367 rand-matrix 0;
+#X obj 74 163 inlet;
+#X obj 74 270 outlet;
+#X obj 74 195 mtx_rand;
+#X obj 74 215 mtx_* 10;
+#X obj 74 237 l2i;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X restore 34 633 pd rand-matrix;
+#X msg 34 611 4 3;
+#X obj 83 690 mtx_print post;
+#X obj 58 710 mtx_print pre;
+#X obj 34 760 mtx_print pivot;
+#X obj 485 95 matrix;
+#X text 375 95 see also help for;
+#X text 282 620 this will tranform the columns and rows \, so that the result will have all maximum values in the diagonale. the maximum of the matrix will be located at the upper-lft corner.;
+#X text 281 669 the first outlet is the pivot-transformed matrix.;
+#X text 280 695 the other outlets are the 1/0-matrices that have to be pre-multiplied (row-tranform) and post-multiplied (column-tranform) to the original matrix to get the pivot-tranformation. this is useful for de-pivoting.;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 7 0 11 0;
+#X connect 9 0 10 1;
+#X connect 10 0 6 0;
+#X connect 11 0 10 0;
+#X connect 13 0 15 0;
+#X connect 14 0 17 1;
+#X connect 15 0 17 0;
+#X connect 17 0 12 0;
+#X connect 21 0 26 0;
+#X connect 21 1 25 0;
+#X connect 21 2 24 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
diff --git a/examples/multiline~.pd b/examples/multiline~.pd
new file mode 100644
index 0000000..ae9d791
--- /dev/null
+++ b/examples/multiline~.pd
@@ -0,0 +1,63 @@
+#N canvas 262 397 898 508 10;
+#X obj 67 53 multiline~;
+#X text 209 55 line~d multiplication of multiple signals;
+#X obj 47 201 sig~ 1;
+#X obj 89 201 sig~ 10;
+#X floatatom 57 281 4 0 0;
+#X floatatom 154 282 4 0 0;
+#X msg 153 181 0 -1;
+#X obj 57 261 avg~;
+#X obj 154 262 avg~;
+#X floatatom 215 208 4 0 0;
+#X text 252 209 line-time;
+#X floatatom 121 129 4 0 0;
+#X text 157 132 multiply all signals with the same value;
+#X obj 57 223 multiline~ 1 2 50;
+#X msg 154 154 2 1;
+#X obj 452 235 multiline~ 1 1 1 1 1000;
+#X obj 452 253 avg~;
+#X floatatom 452 272 4 0 0;
+#X obj 452 193 sig~ 1;
+#X obj 496 253 avg~;
+#X floatatom 496 272 4 0 0;
+#X obj 496 193 sig~ 1;
+#X obj 540 253 avg~;
+#X floatatom 540 272 4 0 0;
+#X obj 540 193 sig~ 1;
+#X obj 585 254 avg~;
+#X floatatom 585 273 4 0 0;
+#X obj 585 194 sig~ 1;
+#X msg 653 171 0 0 0 0;
+#X msg 653 207 1 0 2 0;
+#X msg 653 189 0 1 0 2;
+#X msg 653 225 1 1;
+#X text 49 397 creation:;
+#X obj 121 400 multiline~ g1 g2 g3 ... g<n> fade-time;
+#X text 194 166 gain1 gain2 ...;
+#X text 367 394 will make <n> outlets and (n+2) inlets (1 extra for the gain-list \, 1 extra for the fade-time);
+#X connect 2 0 13 0;
+#X connect 3 0 13 1;
+#X connect 6 0 13 2;
+#X connect 7 0 4 0;
+#X connect 8 0 5 0;
+#X connect 9 0 13 3;
+#X connect 11 0 13 2;
+#X connect 13 0 7 0;
+#X connect 13 1 8 0;
+#X connect 14 0 13 2;
+#X connect 15 0 16 0;
+#X connect 15 1 19 0;
+#X connect 15 2 22 0;
+#X connect 15 3 25 0;
+#X connect 16 0 17 0;
+#X connect 18 0 15 0;
+#X connect 19 0 20 0;
+#X connect 21 0 15 1;
+#X connect 22 0 23 0;
+#X connect 24 0 15 2;
+#X connect 25 0 26 0;
+#X connect 27 0 15 3;
+#X connect 28 0 15 4;
+#X connect 29 0 15 4;
+#X connect 30 0 15 4;
+#X connect 31 0 15 4;
diff --git a/examples/multiplex~.pd b/examples/multiplex~.pd
new file mode 100644
index 0000000..90e64aa
--- /dev/null
+++ b/examples/multiplex~.pd
@@ -0,0 +1,23 @@
+#N canvas 79 72 637 304 12;
+#X obj 75 23 multiplex~;
+#X obj 72 193 multiplex~ . . . . .;
+#X text 210 23 multiplex 1-of-n signals to 1 outlet;
+#X obj 72 139 sig~ 1;
+#X obj 110 161 sig~ 0.5;
+#X obj 149 137 sig~ 50;
+#X obj 227 158 sig~ 0.1;
+#X floatatom 110 93 4 0 0;
+#X obj 72 229 env~;
+#X floatatom 72 255 4 0 0;
+#X text 156 93 select a signal;
+#X obj 306 262 mux~;
+#X text 254 261 alias;
+#X text 135 214 the number of arguments specifies the number of inlets
+;
+#X connect 1 0 8 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 1;
+#X connect 5 0 1 2;
+#X connect 6 0 1 4;
+#X connect 7 0 1 0;
+#X connect 8 0 9 0;
diff --git a/examples/niagara.pd b/examples/niagara.pd
new file mode 100644
index 0000000..f5528ca
--- /dev/null
+++ b/examples/niagara.pd
@@ -0,0 +1,21 @@
+#N canvas 87 562 895 337 10;
+#X floatatom 124 175;
+#X obj 69 206 niagara 12;
+#X obj 69 288 print LEFT;
+#X obj 124 269 print RIGHT;
+#X msg 85 139 1 2 3 4 5 6 7 all good children go to heaven;
+#X obj 159 25 niagara;
+#X text 374 28 divide a package into 2 sub-packages;
+#X text 241 53 creation : "niagara <n>" creates a niagara-fall with a rock at point <n>;
+#X text 159 176 where to divide;
+#X text 451 143 list;
+#X text 451 111 anything;
+#X text 420 219 note :;
+#X text 467 233 if <anything> is passed \, then 2 <anything>s appear at the outputs;
+#X text 467 219 if a <list> is passed \, then 2 <list>s appear at the outputs;
+#X msg 69 102 some water will go down on the left side of the rock and the rest will come down on the other side;
+#X connect 0 0 1 1;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 1 0;
+#X connect 14 0 1 0;
diff --git a/examples/noish~.pd b/examples/noish~.pd
new file mode 100644
index 0000000..72e7913
--- /dev/null
+++ b/examples/noish~.pd
@@ -0,0 +1,21 @@
+#N canvas 183 18 591 404 8;
+#X text 119 43 draws a random number every n samples and interpolates between;
+#X text 121 87 DODGE:JERSE::computer:music::c3:9;
+#X floatatom 91 222;
+#X text 85 199 drawing rate in Hz;
+#X obj 91 321 dac~;
+#X obj 132 322 print~;
+#X msg 132 298 bang;
+#X obj 55 321 env~;
+#X floatatom 55 347;
+#X text 223 219 maybe the input should be fixed to signal;
+#X text 45 44 noish~ ::;
+#X text 120 117 the effect is that you get a bandlimited noise of which the bandwidth of which can be conrtolled via the drawing:rate without having to use expensive filters;
+#X obj 91 245 noish~ 2756.25;
+#X connect 2 0 12 0;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 12 0 5 0;
+#X connect 12 0 4 1;
+#X connect 12 0 4 0;
+#X connect 12 0 7 0;
diff --git a/examples/noisi~.pd b/examples/noisi~.pd
new file mode 100644
index 0000000..c76c6d4
--- /dev/null
+++ b/examples/noisi~.pd
@@ -0,0 +1,21 @@
+#N canvas 183 18 588 401 8;
+#X text 45 44 noisi~ ::;
+#X text 119 43 draws a random number every n samples and interpolates between;
+#X text 116 87 DODGE:JERSE::computer:music::c3:9;
+#X floatatom 91 222;
+#X text 85 199 drawing rate in Hz;
+#X obj 91 321 dac~;
+#X obj 132 322 print~;
+#X msg 132 298 bang;
+#X obj 55 321 env~;
+#X floatatom 55 347;
+#X text 223 219 maybe the input should be fixed to signal;
+#X text 117 120 the effect is that you get a bandlimited:noise the bandwidth of which can be controlled via the drawing:rate without having to use expensive filters;
+#X obj 91 244 noisi~ 2756.25;
+#X connect 3 0 12 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 12 0 5 0;
+#X connect 12 0 5 1;
+#X connect 12 0 6 0;
+#X connect 12 0 8 0;
diff --git a/examples/nop.pd b/examples/nop.pd
new file mode 100644
index 0000000..aed3b61
--- /dev/null
+++ b/examples/nop.pd
@@ -0,0 +1,17 @@
+#N canvas 456 395 450 428 10;
+#X obj 121 331 nop;
+#X msg 155 157 bang;
+#X floatatom 155 175;
+#X symbolatom 156 196;
+#X obj 121 350 print;
+#X msg 156 240 set mummy;
+#X obj 132 26 nop;
+#X text 95 71 maybe this is not very intelligent;
+#X text 97 89 it just passes through what it gets;
+#X msg 157 218 1 to 3 for 5;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 5 0 0 0;
+#X connect 9 0 0 0;
diff --git a/examples/nop~.pd b/examples/nop~.pd
new file mode 100644
index 0000000..96673bc
--- /dev/null
+++ b/examples/nop~.pd
@@ -0,0 +1,17 @@
+#N canvas 25 -4 689 488 10;
+#X obj 89 71 nop~;
+#X text 134 73 will do nothing !!! but nevertheless it takes some time;
+#X text 132 85 so the signal is delay for 1 block...;
+#X text 131 98 Use this to synchronize signals;
+#X obj 60 216 osc~ 440;
+#X obj 60 312 -~;
+#X obj 60 339 env~;
+#X floatatom 59 364;
+#X obj 88 247 nop~;
+#X text 132 121 by the way \, you can use it as a cheap and very short delay too;
+#X text 135 158 ...or as a dummy for anything~...;
+#X connect 4 0 5 0;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 5 1;
diff --git a/examples/packel.pd b/examples/packel.pd
new file mode 100644
index 0000000..b7f2b56
--- /dev/null
+++ b/examples/packel.pd
@@ -0,0 +1,20 @@
+#N canvas 169 380 720 387 10;
+#X obj 48 34 packel;
+#X text 112 33 get the nth element of a package;
+#X msg 62 161 uno dva drei quattre five;
+#X floatatom 105 219;
+#X obj 62 239 packel 3;
+#X obj 62 268 print ELEMENT;
+#X msg 62 307 uno dva drei quattre five;
+#X obj 62 327 packel -2;
+#X obj 62 351 print REVERSE_ELEMENT;
+#X text 275 210 creation: packel [<n>];
+#X text 140 220 n;
+#X text 314 227 n indicates the index of the element to be output;
+#X text 314 245 n==0 ouputs the whole package;
+#X text 314 262 n<0 ouputs the nth-last element;
+#X connect 2 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 5 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
diff --git a/examples/pack~.pd b/examples/pack~.pd
new file mode 100644
index 0000000..24a9ec9
--- /dev/null
+++ b/examples/pack~.pd
@@ -0,0 +1,33 @@
+#N canvas 420 353 697 479 10;
+#X floatatom 83 92;
+#X obj 83 111 osc~ 689.062;
+#X obj 83 320 unpack 0 0 0;
+#X obj 240 302 print;
+#X floatatom 83 359;
+#X floatatom 150 339;
+#X obj 83 230 t l l;
+#X obj 240 282 spigot;
+#X msg 271 262 1;
+#X msg 297 262 0;
+#X obj 83 300 spigot;
+#X msg 114 280 1;
+#X msg 140 280 0;
+#X obj 83 162 pack~;
+#X text 154 40 pack~;
+#X text 178 65 convert signals to float-packages;
+#X text 460 14 see also;
+#X obj 461 33 unpack~;
+#X text 98 379 1st and 3rd sample of each signal-vector;
+#X connect 0 0 1 0;
+#X connect 1 0 13 0;
+#X connect 2 0 4 0;
+#X connect 2 2 5 0;
+#X connect 6 0 10 0;
+#X connect 6 1 7 0;
+#X connect 7 0 3 0;
+#X connect 8 0 7 1;
+#X connect 9 0 7 1;
+#X connect 10 0 2 0;
+#X connect 11 0 10 1;
+#X connect 12 0 10 1;
+#X connect 13 0 6 0;
diff --git a/examples/pdf~.pd b/examples/pdf~.pd
new file mode 100644
index 0000000..c6505b3
--- /dev/null
+++ b/examples/pdf~.pd
@@ -0,0 +1,25 @@
+#N canvas 160 310 829 485 10;
+#X obj 90 43 pdf~;
+#X text 175 44 probability density function;
+#X obj 14 166 osc~ 440;
+#X msg 97 193 bang;
+#X obj 14 387 tabwrite array99;
+#X obj 14 303 pdf~ 128;
+#X msg 96 246 clear;
+#X msg 97 215 1;
+#X msg 96 269 0;
+#X text 146 260 clear the buffer;
+#X text 140 203 send the pdf to the outlet;
+#X obj 137 387 print;
+#X text 90 302 creation argument : number of steps;
+#X text 227 315 default is 64;
+#X graph graph1 0 -1 128 1 428 431 828 131;
+#X array array99 128 float;
+#X pop;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 5 0 11 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
diff --git a/examples/quantize~.pd b/examples/quantize~.pd
new file mode 100644
index 0000000..02bd567
--- /dev/null
+++ b/examples/quantize~.pd
@@ -0,0 +1,37 @@
+#N canvas 0 -1 705 533 10;
+#X text 242 9 quantize a signal with a variable step-number;
+#X msg 119 204 8bit;
+#X msg 119 180 16bit;
+#X msg 119 157 float;
+#X floatatom 120 133;
+#X obj 71 367 dac~ 1;
+#X obj 71 342 *~;
+#X obj 32 293 dbtorms;
+#X floatatom 32 269;
+#X obj 26 227 osc~ 440;
+#X floatatom 26 203;
+#X obj 87 255 quantize~ 16;
+#X msg 118 228 help;
+#X msg 404 59 \; pd dsp 1;
+#X obj 71 317 sig~ 0.2;
+#X msg 482 61 \; pd dsp 0;
+#X graph graph5 0 -1 100 1 298 494 698 194;
+#X array scope 100 float;
+#X pop;
+#X obj 139 314 tabwrite~ scope;
+#X msg 139 289 bang;
+#X obj 123 12 quantize~;
+#X connect 1 0 11 0;
+#X connect 2 0 11 0;
+#X connect 3 0 11 0;
+#X connect 4 0 11 0;
+#X connect 6 0 5 0;
+#X connect 7 0 14 0;
+#X connect 8 0 7 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
+#X connect 11 0 6 1;
+#X connect 11 0 17 0;
+#X connect 12 0 11 0;
+#X connect 14 0 6 0;
+#X connect 18 0 17 0;
diff --git a/examples/repack.pd b/examples/repack.pd
new file mode 100644
index 0000000..3b2560b
--- /dev/null
+++ b/examples/repack.pd
@@ -0,0 +1,23 @@
+#N canvas 222 219 739 549 10;
+#X obj 78 35 repack;
+#X obj 73 303 print;
+#X floatatom 73 120;
+#X msg 73 138 1 2 3 4 5 6 7 8 9 10;
+#X obj 73 265 repack 7;
+#X msg 73 157 hallo;
+#X text 149 33 (re)packs (packages of) floats/symbols/pointers/anythings to packages of a (given) size;
+#X msg 120 187 bang;
+#X floatatom 116 235;
+#X text 172 236 set the package-size;
+#X text 173 191 output the currently made package immediately;
+#X obj 56 501 repack 1;
+#X text 118 502 unfolds packages to atoms \; see also;
+#X obj 337 503 drip;
+#X text 72 407 creation:;
+#X text 140 408 "repack <n>" create packages of the length n;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 7 0 4 0;
+#X connect 8 0 4 1;
diff --git a/examples/scalarmult.pd b/examples/scalarmult.pd
new file mode 100644
index 0000000..1b988ef
--- /dev/null
+++ b/examples/scalarmult.pd
@@ -0,0 +1,73 @@
+#N canvas 193 440 857 589 10;
+#X obj 83 45 .;
+#X text 130 46 scalar multilicaton ("dot");
+#X msg 71 156 1 2 3;
+#X msg 110 182 4 3 2;
+#X obj 71 241 print;
+#X msg 177 157 1 2 3;
+#X msg 235 185 4 3 2;
+#X obj 177 242 print;
+#X obj 177 216 . 10 10 1;
+#X obj 71 215 .;
+#X msg 375 159 1 2 3;
+#X obj 375 244 print;
+#X msg 481 160 1 2 3;
+#X obj 481 245 print;
+#X obj 375 218 . 0;
+#X floatatom 409 193 4 0 0;
+#X obj 481 219 . 7;
+#X floatatom 514 194 4 0 0;
+#X obj 62 456 .;
+#X msg 62 377 1 2 3;
+#X msg 178 378 1 2 3;
+#X obj 178 454 . 0;
+#X text 58 342 these are NOT the same !!;
+#X obj 178 485 print SCAL;
+#X obj 62 485 print VECT;
+#X msg 78 411 2 2 1;
+#X msg 114 437 3;
+#X msg 207 430 2 2 1;
+#X msg 194 407 3;
+#X text 233 406 good;
+#X text 247 430 bad;
+#X text 126 411 good;
+#X text 140 435 bad;
+#X text 420 334 tricky:;
+#X obj 431 453 print;
+#X msg 447 403 1 2 3;
+#X floatatom 431 377 4 0 0;
+#X obj 431 430 .;
+#X obj 536 460 print;
+#X msg 536 414 1 2 3;
+#X obj 536 437 .;
+#X obj 536 392 t b l;
+#X floatatom 536 368 4 0 0;
+#X text 582 393 note that we "cast" the float to list;
+#X connect 2 0 9 0;
+#X connect 3 0 9 1;
+#X connect 5 0 8 0;
+#X connect 6 0 8 1;
+#X connect 8 0 7 0;
+#X connect 9 0 4 0;
+#X connect 10 0 14 0;
+#X connect 12 0 16 0;
+#X connect 14 0 11 0;
+#X connect 15 0 14 1;
+#X connect 16 0 13 0;
+#X connect 17 0 16 1;
+#X connect 18 0 24 0;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 23 0;
+#X connect 25 0 18 1;
+#X connect 26 0 18 1;
+#X connect 27 0 21 1;
+#X connect 28 0 21 1;
+#X connect 35 0 37 1;
+#X connect 36 0 37 0;
+#X connect 37 0 34 0;
+#X connect 39 0 40 0;
+#X connect 40 0 38 0;
+#X connect 41 0 39 0;
+#X connect 41 1 40 1;
+#X connect 42 0 41 0;
diff --git a/examples/segregate.pd b/examples/segregate.pd
new file mode 100644
index 0000000..0e47699
--- /dev/null
+++ b/examples/segregate.pd
@@ -0,0 +1,33 @@
+#N canvas 543 205 450 496 10;
+#X obj 136 344 segregate;
+#X obj 136 447 print BANG;
+#X obj 145 430 print FLOAT;
+#X obj 155 413 print SYMBOL;
+#X obj 175 379 print POINTER;
+#X obj 165 396 print LIST;
+#X floatatom 155 226;
+#X symbolatom 171 255;
+#X msg 136 197 bang;
+#X msg 184 281 1 2 3 4;
+#X msg 185 307 come on \, my house;
+#X text 131 31 segregate;
+#X text 51 87 segregates the inputs by their type;
+#X text 50 112 known types (in order of their outlets)::;
+#X text 93 131 BANG \, FLOAT \, SYMBOL \, LIST \, POINTER;
+#X text 86 196 bang;
+#X text 86 226 float;
+#X text 87 256 symbol;
+#X obj 185 362 print ANYTHING;
+#X text 88 309 anythings;
+#X text 87 284 list;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 0 2 3 0;
+#X connect 0 3 5 0;
+#X connect 0 4 4 0;
+#X connect 0 5 18 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
diff --git a/examples/sf-play_record.pd b/examples/sf-play_record.pd
new file mode 100644
index 0000000..d44b65e
--- /dev/null
+++ b/examples/sf-play_record.pd
@@ -0,0 +1,57 @@
+#N canvas 153 6 588 488 10;
+#X obj 436 382 sfplay 2;
+#X obj 38 385 sfrecord 2;
+#X msg 436 200 help;
+#X obj 436 412 dac~;
+#X msg 436 226 open test.raw l;
+#X msg 436 249 start;
+#X msg 485 249 bang;
+#X msg 525 249 1;
+#X msg 436 272 stop;
+#X msg 525 272 0;
+#X msg 436 321 goto 100;
+#X msg 436 298 rewind;
+#X msg 495 410 done;
+#X obj 495 435 print;
+#X msg 38 201 help;
+#X msg 38 250 start;
+#X msg 38 274 stop;
+#X msg 38 298 close;
+#X msg 38 226 open test.raw l;
+#X msg 38 323 bang;
+#X floatatom 38 411;
+#X text 72 411 status (1-recording / 0-not_recording);
+#X obj 45 361 osc~ 100;
+#X obj 113 361 osc~ 578;
+#X msg 436 347 close;
+#X text 122 47 a little harddisk-recording system;
+#X text 77 324 retrigger status-output;
+#X text 261 224 <name> <endianity>;
+#X text 205 226 open;
+#X text 135 385 sfrecord/sfplay <num. of channels>;
+#X text 53 77 this makes it possible to do multi-track recordings;
+#X text 52 92 up to now \, the "sfrecord" only supports .RAW format;
+#X text 51 107 "sfplay" can skip any header \, if you know it's size:: just call "sfplay <num.of.chan> <skip.bytes>;
+#X connect 0 0 3 0;
+#X connect 0 1 3 1;
+#X connect 0 2 12 0;
+#X connect 1 0 20 0;
+#X connect 2 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 13 0;
+#X connect 14 0 1 0;
+#X connect 15 0 1 0;
+#X connect 16 0 1 0;
+#X connect 17 0 1 0;
+#X connect 18 0 1 0;
+#X connect 19 0 1 0;
+#X connect 22 0 1 0;
+#X connect 23 0 1 1;
+#X connect 24 0 0 0;
diff --git a/examples/sigbinops+.pd b/examples/sigbinops+.pd
new file mode 100644
index 0000000..3797df9
--- /dev/null
+++ b/examples/sigbinops+.pd
@@ -0,0 +1,106 @@
+#N canvas 470 149 594 490 10;
+#X obj 62 193 abs~;
+#X obj 120 194 sgn~;
+#X obj 262 191 <~;
+#X obj 296 190 ==~;
+#X obj 330 191 >~;
+#X obj 388 190 &&~;
+#X obj 423 190 ||~;
+#X floatatom 423 238;
+#X floatatom 388 238;
+#X floatatom 330 239;
+#X floatatom 296 239;
+#X floatatom 120 242;
+#X floatatom 62 243;
+#X obj 62 221 avg~;
+#X obj 120 220 avg~;
+#X floatatom 262 239;
+#X obj 262 217 avg~;
+#X obj 296 216 avg~;
+#X obj 330 216 avg~;
+#X obj 388 216 avg~;
+#X obj 423 216 avg~;
+#X obj 62 163 sig~;
+#X floatatom 62 141;
+#X obj 330 126 sig~;
+#X floatatom 330 104;
+#X obj 404 126 sig~;
+#X floatatom 404 104;
+#X floatatom 440 448;
+#X floatatom 400 448;
+#X floatatom 349 448;
+#X floatatom 308 449;
+#X floatatom 274 449;
+#X obj 274 427 avg~;
+#X obj 308 426 avg~;
+#X obj 349 425 avg~;
+#X obj 400 426 avg~;
+#X obj 440 426 avg~;
+#X obj 349 337 sig~;
+#X floatatom 349 315;
+#X floatatom 430 316;
+#X obj 274 401 <~ 2;
+#X obj 308 400 ==~ 2;
+#X obj 349 400 >~ 2;
+#X obj 400 400 &&~ 2;
+#X obj 440 400 ||~ 2;
+#X text 83 30 more math and binary operations for signals;
+#X text 28 263 absolute;
+#X text 50 278 value;
+#X text 112 263 signum;
+#X text 249 267 greater;
+#X text 330 268 less;
+#X text 296 284 equal;
+#X text 393 261 logical;
+#X text 386 274 AND;
+#X text 431 274 OR;
+#X text 72 58 (this patch might be very CPU-consupmtious \, because of the float-atoms....);
+#X connect 0 0 13 0;
+#X connect 1 0 14 0;
+#X connect 2 0 16 0;
+#X connect 3 0 17 0;
+#X connect 4 0 18 0;
+#X connect 5 0 19 0;
+#X connect 6 0 20 0;
+#X connect 13 0 12 0;
+#X connect 14 0 11 0;
+#X connect 16 0 15 0;
+#X connect 17 0 10 0;
+#X connect 18 0 9 0;
+#X connect 19 0 8 0;
+#X connect 20 0 7 0;
+#X connect 21 0 0 0;
+#X connect 21 0 1 0;
+#X connect 22 0 21 0;
+#X connect 23 0 2 0;
+#X connect 23 0 3 0;
+#X connect 23 0 4 0;
+#X connect 23 0 5 0;
+#X connect 23 0 6 0;
+#X connect 24 0 23 0;
+#X connect 25 0 6 1;
+#X connect 25 0 5 1;
+#X connect 25 0 4 1;
+#X connect 25 0 3 1;
+#X connect 25 0 2 1;
+#X connect 26 0 25 0;
+#X connect 32 0 31 0;
+#X connect 33 0 30 0;
+#X connect 34 0 29 0;
+#X connect 35 0 28 0;
+#X connect 36 0 27 0;
+#X connect 37 0 40 0;
+#X connect 37 0 41 0;
+#X connect 37 0 42 0;
+#X connect 37 0 43 0;
+#X connect 37 0 44 0;
+#X connect 38 0 37 0;
+#X connect 39 0 43 1;
+#X connect 39 0 42 1;
+#X connect 39 0 41 1;
+#X connect 39 0 40 1;
+#X connect 40 0 32 0;
+#X connect 41 0 33 0;
+#X connect 42 0 34 0;
+#X connect 43 0 35 0;
+#X connect 44 0 36 0;
diff --git a/examples/sigzero~.pd b/examples/sigzero~.pd
new file mode 100644
index 0000000..4b5d09b
--- /dev/null
+++ b/examples/sigzero~.pd
@@ -0,0 +1,50 @@
+#N canvas 0 0 594 494 10;
+#X obj 79 235 sigzero~;
+#X obj 79 187 sig~;
+#X floatatom 79 129;
+#X floatatom 79 262;
+#X obj 117 313 print signal;
+#X obj 117 264 select 0;
+#X msg 117 289 off;
+#X msg 176 288 on;
+#X text 72 42 sigzero~ detects whether there is a signal or not (e.g. zeroes throughout);
+#X obj 74 25 sigzero~;
+#X msg 136 161 bang;
+#X msg 135 185 off;
+#X floatatom 135 208;
+#X text 216 163 turn the detector on;
+#X text 216 188 turn it off;
+#X text 217 210 turn it on/off;
+#X text 114 128 try me;
+#X text 56 368;
+#N canvas 0 0 594 394 sub 0;
+#X obj 152 104 inlet~;
+#X obj 152 155 nop~;
+#X obj 152 210 outlet~;
+#X text 190 157 imagine we were doing some VERY heavy calcs here;
+#X obj 427 48 inlet;
+#X obj 427 75 switch~;
+#X text 35 272 if the heavy calculations done here are done in vain because there is no incoming signal \, it would be better to turn the whole sub-patch off...;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 4 0 5 0;
+#X restore 76 433 page sub;
+#X obj 76 383 adc~ 1;
+#X obj 76 458 dac~ 1;
+#X obj 135 410 sigzero~;
+#X text 213 410 that's how i use it;
+#X connect 0 0 3 0;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 18 0 20 0;
+#X connect 19 0 18 0;
+#X connect 19 0 21 0;
+#X connect 21 0 18 1;
diff --git a/examples/sort.pd b/examples/sort.pd
new file mode 100644
index 0000000..97729d3
--- /dev/null
+++ b/examples/sort.pd
@@ -0,0 +1,77 @@
+#N canvas 390 217 721 511 10;
+#X obj 86 231 print UNSORTED;
+#X msg 37 107 bang;
+#X obj 198 23 sort;
+#X text 314 87 any package-elements that are non-float will be interpreted as "0.0".;
+#X text 270 87 note :;
+#X obj 53 329 sort 1;
+#X obj 53 470 print ASCENDING;
+#X obj 37 347 sort -1;
+#X obj 37 487 print DESCENDING;
+#X text 278 297 creation : "sort [<dir>]";
+#X text 457 310 dir < 0 :: descending sort;
+#X text 456 297 dir >= 0 :: ascending sort;
+#X text 460 328 dir defaults to ascending;
+#N canvas 360 175 475 254 randompackage 0;
+#X obj 37 190 pack 0 0 0 0 0 0 0 0 0 0 0;
+#X obj 170 87 random 15;
+#X obj 156 104 random 15;
+#X obj 143 121 random 15;
+#X obj 130 138 random 15;
+#X obj 116 155 random 15;
+#X obj 103 172 random 15;
+#X obj 90 87 random 15;
+#X obj 76 104 random 15;
+#X obj 63 121 random 15;
+#X obj 50 138 random 15;
+#X obj 37 155 random 15;
+#X obj 37 52 inlet;
+#X obj 37 69 t b b b b b b b b b b b;
+#X obj 37 210 outlet;
+#X connect 0 0 14 0;
+#X connect 1 0 0 10;
+#X connect 2 0 0 9;
+#X connect 3 0 0 8;
+#X connect 4 0 0 7;
+#X connect 5 0 0 6;
+#X connect 6 0 0 5;
+#X connect 7 0 0 4;
+#X connect 8 0 0 3;
+#X connect 9 0 0 2;
+#X connect 10 0 0 1;
+#X connect 11 0 0 0;
+#X connect 12 0 13 0;
+#X connect 13 0 11 0;
+#X connect 13 1 10 0;
+#X connect 13 2 9 0;
+#X connect 13 3 8 0;
+#X connect 13 4 7 0;
+#X connect 13 5 6 0;
+#X connect 13 6 5 0;
+#X connect 13 7 4 0;
+#X connect 13 8 3 0;
+#X connect 13 9 2 0;
+#X connect 13 10 1 0;
+#X restore 37 195 pd randompackage;
+#X obj 72 177 print;
+#X msg 72 160 -----;
+#X obj 37 141 t b b;
+#X floatatom 88 293;
+#X text 122 295 direction;
+#X obj 37 213 t l l l l;
+#X obj 69 312 sort;
+#X obj 69 453 print SORTED;
+#X text 237 23 shell-sort a package of floats;
+#X connect 1 0 16 0;
+#X connect 5 0 6 0;
+#X connect 7 0 8 0;
+#X connect 13 0 19 0;
+#X connect 15 0 14 0;
+#X connect 16 0 13 0;
+#X connect 16 1 15 0;
+#X connect 17 0 20 1;
+#X connect 19 0 7 0;
+#X connect 19 1 5 0;
+#X connect 19 2 20 0;
+#X connect 19 3 0 0;
+#X connect 20 0 21 0;
diff --git a/examples/step~.pd b/examples/step~.pd
new file mode 100644
index 0000000..8b85d3d
--- /dev/null
+++ b/examples/step~.pd
@@ -0,0 +1,74 @@
+#N canvas 179 22 564 331 8;
+#X obj 243 283 step~;
+#X obj 243 309 print~;
+#X msg 186 236 bang;
+#X floatatom 283 259;
+#X floatatom 243 237;
+#X obj 186 259 t b b;
+#X obj 243 259 t f b;
+#X text 50 20 step~ ::;
+#X text 50 70 IN1 :;
+#X text 50 110 IN2 :;
+#X text 50 180 note :;
+#X text 100 20 produces a unit:step:sequence or a rectangle:window;
+#X text 100 70 define \, how many samples after the float::bang:message the rectangle:window will start;
+#X text 100 110 define the length of the rectangle:window choosing 1 will produce a dirac:impulse :: unit:sample:sequence) choosing 0 will make the rectangle infinitely long :: unit:step:sequence;
+#X text 100 180 1 sample equals 1:over:samplerate secs;
+#X text 235 217 position;
+#X text 303 239 length;
+#N canvas 169 79 597 397 application 0;
+#X obj 88 188 sig~ 440;
+#X obj 88 211 osc~;
+#X obj 88 235 *~;
+#X obj 149 211 osc~;
+#X obj 149 235 *~;
+#X obj 149 188 sig~ 550;
+#X floatatom 88 163;
+#X floatatom 149 163;
+#X obj 276 189 sig~ -1;
+#X obj 228 189 step~;
+#X msg 258 166 0;
+#X msg 291 166 44100;
+#X floatatom 338 166;
+#X msg 228 142 bang;
+#X obj 149 320 dac~;
+#X obj 149 290 *~;
+#X obj 431 227 dbtorms;
+#X obj 431 249 pack 0 100;
+#X obj 431 271 line~;
+#X floatatom 431 204;
+#X text 193 118 toggle::press;
+#X text 38 23 This \, of course \, is a quite barbarious use of the step~-object;
+#X text 124 51 but it was fast to do and I do think it illustrates the way it works.;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 15 0;
+#X connect 3 0 4 0;
+#X connect 4 0 15 0;
+#X connect 5 0 3 0;
+#X connect 6 0 0 0;
+#X connect 7 0 5 0;
+#X connect 8 0 4 1;
+#X connect 9 0 2 1;
+#X connect 9 0 4 1;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 12 0 9 1;
+#X connect 13 0 9 0;
+#X connect 15 0 14 0;
+#X connect 15 0 14 1;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 15 1;
+#X connect 19 0 16 0;
+#X restore 439 186 page application;
+#X msg 186 283 1;
+#X connect 0 0 1 0;
+#X connect 2 0 5 0;
+#X connect 3 0 0 1;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 5 1 18 0;
+#X connect 6 0 0 0;
+#X connect 6 1 1 0;
+#X connect 18 0 1 0;
diff --git a/examples/strcmp.pd b/examples/strcmp.pd
new file mode 100644
index 0000000..a2a64ee
--- /dev/null
+++ b/examples/strcmp.pd
@@ -0,0 +1,26 @@
+#N canvas 45 175 628 611 10;
+#X obj 90 54 strcmp;
+#X text 147 54 -- compare 2 lists as if they were strings;
+#X obj 71 398 strcmp this is list # 3;
+#X floatatom 71 423;
+#X obj 96 423 print strcmp;
+#X msg 71 184 list this is list # 3;
+#X msg 71 221 list this is list # 4;
+#X msg 71 239 1 2 3 4 5;
+#X msg 71 256 list yet another list;
+#X floatatom 83 286;
+#X msg 204 313 list yet another list;
+#X msg 222 366 list \$1;
+#X floatatom 222 349;
+#X text 278 357 to compare symbols/floats you have to make sure that they go to the 2nd inlet as lists;
+#X text 98 442 the output follows the "strcmp" of the C programming language;
+#X connect 2 0 4 0;
+#X connect 2 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 10 0 2 1;
+#X connect 11 0 2 1;
+#X connect 12 0 11 0;
diff --git a/examples/swap~.pd b/examples/swap~.pd
new file mode 100644
index 0000000..599811e
--- /dev/null
+++ b/examples/swap~.pd
@@ -0,0 +1,39 @@
+#N canvas 0 -1 718 576 10;
+#X obj 97 321 swap~;
+#X text 138 102 this object first converts the signal to 16bit \, then swaps upper and lower byte.;
+#X msg 120 233 0;
+#X msg 120 209 1;
+#X msg 119 258 bang;
+#X obj 33 288 osc~ 440;
+#X floatatom 33 264;
+#X msg 119 283 help;
+#X obj 81 401 *~;
+#X obj 43 352 dbtorms;
+#X floatatom 43 328;
+#X msg 445 28 \; pd dsp 1;
+#X obj 81 376 sig~ 0.2;
+#X msg 520 28 \; pd dsp 0;
+#X graph graph5 0 -1 100 1 298 494 698 194;
+#X array scope 100 float;
+#X pop;
+#X obj 176 426 tabwrite~ scope;
+#X msg 176 401 bang;
+#X text 159 258 toggle;
+#X text 152 208 on;
+#X text 154 232 off;
+#X obj 87 27 swap~;
+#X text 149 25 byte-swap a 16bit signal;
+#X obj 81 425 dac~ 1;
+#X connect 0 0 8 1;
+#X connect 0 0 15 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 0;
+#X connect 7 0 0 0;
+#X connect 8 0 22 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 0;
+#X connect 12 0 8 0;
+#X connect 16 0 15 0;
diff --git a/examples/tabdump.pd b/examples/tabdump.pd
new file mode 100644
index 0000000..e9379bd
--- /dev/null
+++ b/examples/tabdump.pd
@@ -0,0 +1,19 @@
+#N canvas 178 229 861 353 10;
+#X graph graph2 0 -1 8 1 603 257 803 117;
+#X array my_array66 5 float;
+#X array my_array77 8 float;
+#X pop;
+#X obj 283 138 loadbang;
+#X obj 83 168 tabdump my_array66;
+#X msg 83 100 bang;
+#X obj 83 193 print;
+#X msg 133 148 set my_array77;
+#X msg 283 164 \; my_array66 resize 5 \; my_array77 resize 8 \; my_array66 0.1 0.3 0.2 0.5 0.2 -0.1 \; my_array77 0.1 0.1 0.2 0.3 0.5 0.8 0.13 0.21 0.34;
+#X obj 176 22 tabdump;
+#X text 273 24 dump the contents of a table as a list;
+#X msg 132 126 set my_array66;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 5 0 2 0;
+#X connect 9 0 2 0;
diff --git a/examples/tabread4.pd b/examples/tabread4.pd
new file mode 100644
index 0000000..8fff4e5
--- /dev/null
+++ b/examples/tabread4.pd
@@ -0,0 +1,29 @@
+#N canvas 0 0 884 549 8;
+#X obj 85 45 tabread4;
+#X text 87 96 "tabread4" is missing in the pd-distribution \, and i really don't know why \, because sometimes one might need it...;
+#X text 89 132 so here it is;
+#X msg 495 140 \; readout 1 \; array99 resize 10 \; array99 bounds 0 0 10 10 \; array99 xlabel -0.5 0 1 2 3 4 5 6 7 8 9 10 \; array99 ylabel -1 0 1 2 3 4 5 6 7 8 9 10 \; array99 0 1 4 2 8 5 6 1 4 2 8;
+#X floatatom 204 185;
+#X floatatom 204 351;
+#X text 242 369 output = array99[index];
+#X text 323 303 creation argument;
+#X text 323 318 gives array name;
+#X msg 214 277 set array99;
+#X text 303 278 change array name;
+#X obj 204 317 tabread4 array99;
+#X graph graph1 0 0 10 10 504 467 754 267;
+#X array array99 10 float;
+#X pop;
+#X obj 94 317 tabread array99;
+#X floatatom 94 356;
+#X text -7 335 this is how it was;
+#X msg 214 255 help;
+#X text 235 184 index (try non-integer :: 1.5);
+#X obj 495 119 loadbang;
+#X connect 4 0 11 0;
+#X connect 4 0 13 0;
+#X connect 9 0 11 0;
+#X connect 11 0 5 0;
+#X connect 13 0 14 0;
+#X connect 16 0 11 0;
+#X connect 18 0 3 0;
diff --git a/examples/tabset.pd b/examples/tabset.pd
new file mode 100644
index 0000000..28bfb68
--- /dev/null
+++ b/examples/tabset.pd
@@ -0,0 +1,19 @@
+#N canvas 140 193 861 353 10;
+#X graph graph2 0 -1 8 1 603 257 803 117;
+#X array my_array99 5 float;
+#X array my_array97 8 float;
+#X pop;
+#X obj 283 138 loadbang;
+#X msg 132 126 set my_array99;
+#X msg 133 148 set my_array97;
+#X msg 283 164 \; my_array99 resize 5 \; my_array97 resize 8 \; my_array99 0.1 0.3 0.2 0.5 0.2 -0.1 \; my_array97 0.1 0.1 0.2 0.3 0.5 0.8 0.13 0.21 0.34;
+#X obj 176 22 tabdump;
+#X text 273 24 dump the contents of a table as a list;
+#X msg 83 73 1 0.7 0.5 0.3 0.2 0.1;
+#X obj 83 168 tabset my_array99;
+#X floatatom 97 95 4 0 0;
+#X connect 1 0 4 0;
+#X connect 2 0 8 0;
+#X connect 3 0 8 0;
+#X connect 7 0 8 0;
+#X connect 9 0 8 0;
diff --git a/examples/tavg~.pd b/examples/tavg~.pd
new file mode 100644
index 0000000..03c7b20
--- /dev/null
+++ b/examples/tavg~.pd
@@ -0,0 +1,28 @@
+#N canvas 288 18 580 361 10;
+#X floatatom 59 148;
+#X floatatom 59 254;
+#X floatatom 129 255;
+#X obj 59 276 dbtorms;
+#X floatatom 59 299;
+#X text 272 269 see also:;
+#X obj 277 296 env~;
+#X obj 59 233 env~;
+#X obj 315 296 envrms~;
+#X obj 59 173 osc~ 5512.5;
+#X obj 373 296 avg~;
+#X obj 129 234 tavg~;
+#X obj 71 51 tavg~;
+#X text 130 51 calculates the arithmetic mean of a signal between 2 bangs;
+#X obj 176 195 metro 1000;
+#X msg 176 167 bang;
+#X msg 211 167 stop;
+#X connect 0 0 9 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 7 0 1 0;
+#X connect 9 0 7 0;
+#X connect 9 0 11 0;
+#X connect 11 0 2 0;
+#X connect 14 0 11 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
diff --git a/examples/time.pd b/examples/time.pd
new file mode 100644
index 0000000..e179e13
--- /dev/null
+++ b/examples/time.pd
@@ -0,0 +1,31 @@
+#N canvas 253 26 421 378 10;
+#X msg 71 174 bang;
+#X floatatom 86 261;
+#X floatatom 78 284;
+#X floatatom 71 307;
+#X obj 71 203 time;
+#X floatatom 94 238;
+#X text 151 241 msec;
+#X text 152 263 sec;
+#X text 153 284 min;
+#X text 152 306 hours;
+#X msg 219 175 bang;
+#X floatatom 253 259;
+#X floatatom 236 284;
+#X floatatom 219 308;
+#X floatatom 270 234;
+#X obj 219 204 time GMT;
+#X text 91 79 get the system time;
+#X text 64 149 local;
+#X text 222 152 GMT;
+#X obj 73 27 time;
+#X connect 0 0 4 0;
+#X connect 4 0 3 0;
+#X connect 4 1 2 0;
+#X connect 4 2 1 0;
+#X connect 4 3 5 0;
+#X connect 10 0 15 0;
+#X connect 15 0 13 0;
+#X connect 15 1 12 0;
+#X connect 15 2 11 0;
+#X connect 15 3 14 0;
diff --git a/examples/unpack~.pd b/examples/unpack~.pd
new file mode 100644
index 0000000..c8cee41
--- /dev/null
+++ b/examples/unpack~.pd
@@ -0,0 +1,59 @@
+#N canvas 299 436 736 292 10;
+#X text 460 14 see also;
+#X obj 461 33 pack~;
+#X text 147 40 unpack~;
+#X text 178 65 convert float-packages to signals;
+#X obj 85 132 unpack~ 512;
+#X text 234 156 creation: "unpack~ [<bufsize>]";
+#X text 255 181 <bufsize>: in samples (defaults to 64) \; could be fine if you don't have a constant stream of floats;
+#N canvas 94 221 839 437 example 0;
+#X obj 69 75 osc~ 689.062;
+#X obj 69 123 pack~;
+#X obj 69 94 *~ 0.2;
+#X obj 69 142 unfold;
+#X obj 69 160 t b f;
+#X obj 69 178 +;
+#X obj 69 198 + 1;
+#X obj 69 236 select 0;
+#X obj 69 256 f;
+#X obj 69 332 unpack~;
+#X floatatom 69 50;
+#X obj 69 218 % 8;
+#X text 74 6 a simple samplerate-reducer;
+#X text 116 129 samplerate = 44.1kHz;
+#X text 126 258 samplerate = 5.5125kHz;
+#X text 108 363 reconstructed signal @ 44.1kHz;
+#X obj 127 114 dac~ 2;
+#X obj 69 387 dac~ 1;
+#X msg 69 276 \$1 \$1 \$1 \$1 \$1 \$1 \$1 \$1;
+#X graph graph2 0 -1 64 1 526 213 826 13;
+#X array high_rate 100 float;
+#X pop;
+#X graph graph3 0 -1 64 1 526 441 826 241;
+#X array low_rate 100 float;
+#X pop;
+#X obj 170 113 tabsend~ high_rate;
+#X obj 114 388 tabsend~ low_rate;
+#X msg 349 240 \; pd dsp 0;
+#X msg 349 179 \; pd dsp 1;
+#X obj 349 221 loadbang;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 2 0 16 0;
+#X connect 2 0 21 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 8 1;
+#X connect 5 0 6 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 8 0 18 0;
+#X connect 9 0 17 0;
+#X connect 9 0 22 0;
+#X connect 10 0 0 0;
+#X connect 11 0 5 1;
+#X connect 11 0 7 0;
+#X connect 18 0 9 0;
+#X connect 25 0 23 0;
+#X restore 85 249 pd example;
diff --git a/examples/z~.pd b/examples/z~.pd
new file mode 100644
index 0000000..49e5560
--- /dev/null
+++ b/examples/z~.pd
@@ -0,0 +1,28 @@
+#N canvas 267 156 597 497 8;
+#X obj 125 42 z~;
+#X text 177 41 samplewise delay;
+#X text 168 89 should make FIR-filter design possible;
+#X obj 65 222 osc~ 440;
+#X floatatom 65 191;
+#X obj 97 270 z~;
+#X obj 127 270 z~ 2;
+#X obj 167 270 z~ 3;
+#X obj 65 310 +~;
+#X obj 65 336 * 0.25;
+#X obj 65 366 dac~;
+#X text 235 269 4th order moving average filter;
+#X text 185 324 creation argument : delay in samples (default is 1);
+#X text 167 119 (note that you cannot do IIR-filters easily this way !);
+#X text 351 42 z;
+#X text 359 36 -N;
+#X connect 3 0 8 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 0 10 1;