aboutsummaryrefslogtreecommitdiff
path: root/help
diff options
context:
space:
mode:
Diffstat (limited to 'help')
-rw-r--r--help/automata.txt178
-rw-r--r--help/examplescore.txt25
-rw-r--r--help/help-arbran.pd28
-rw-r--r--help/help-average.pd29
-rw-r--r--help/help-beat.pd66
-rw-r--r--help/help-beta.pd14
-rw-r--r--help/help-bilex.pd12
-rw-r--r--help/help-borax.pd86
-rw-r--r--help/help-cauchy.pd11
-rw-r--r--help/help-chord.pd37
-rw-r--r--help/help-delta.pd20
-rw-r--r--help/help-dist.pd36
-rw-r--r--help/help-divide.pd18
-rw-r--r--help/help-divmod.pd20
-rw-r--r--help/help-edge.pd17
-rw-r--r--help/help-expo.pd12
-rw-r--r--help/help-fifo.pd13
-rw-r--r--help/help-gauss.pd14
-rw-r--r--help/help-gestalt.pd51
-rw-r--r--help/help-history.pd30
-rw-r--r--help/help-ignore.pd15
-rw-r--r--help/help-iso.pd54
-rw-r--r--help/help-lifo.pd16
-rw-r--r--help/help-limit.pd25
-rw-r--r--help/help-linear.pd8
-rw-r--r--help/help-listfunnel.pd21
-rw-r--r--help/help-match.pd68
-rw-r--r--help/help-maxlib.pd73
-rw-r--r--help/help-minus.pd17
-rw-r--r--help/help-mlife.pd56
-rw-r--r--help/help-multi.pd17
-rw-r--r--help/help-netclient.pd51
-rw-r--r--help/help-netdist.pd37
-rw-r--r--help/help-netrec.pd34
-rw-r--r--help/help-netserver.pd50
-rw-r--r--help/help-nroute.pd37
-rw-r--r--help/help-pitch.pd30
-rw-r--r--help/help-plus.pd17
-rw-r--r--help/help-poisson.pd12
-rw-r--r--help/help-pulse.pd35
-rw-r--r--help/help-remote.pd18
-rw-r--r--help/help-rhythm.pd35
-rw-r--r--help/help-scale.pd31
-rw-r--r--help/help-score.pd52
-rw-r--r--help/help-speedlim.pd30
-rw-r--r--help/help-step.pd22
-rw-r--r--help/help-subst.pd72
-rw-r--r--help/help-temperature.pd16
-rw-r--r--help/help-tilt.pd26
-rw-r--r--help/help-triang.pd9
-rw-r--r--help/help-velocity.pd14
-rw-r--r--help/help-weibull.pd15
52 files changed, 1730 insertions, 0 deletions
diff --git a/help/automata.txt b/help/automata.txt
new file mode 100644
index 0000000..afa5e9e
--- /dev/null
+++ b/help/automata.txt
@@ -0,0 +1,178 @@
+[The following note originally appeared on the emusic-l mailing list. It is
+reprinted here with the author's permission]
+
+From xrjdm@FARSIDE.GSFC.NASA.GOV Wed Nov 23 11:26:39 1994
+Date: Tue, 4 Oct 1994 15:09:23 -0500
+From: Joe McMahon <xrjdm@FARSIDE.GSFC.NASA.GOV>
+Reply to: Electronic Music Discussion List <EMUSIC-L@AMERICAN.EDU>
+To: Multiple recipients of list EMUSIC-L <EMUSIC-L@AMERICAN.EDU>
+Subject: Automata: the long-awaited summary
+
+Back in August, I think, I promised to post a quick intro to cellular
+automata and how they can be used as a sound-generation tool. Since I'm
+going to take a couple of different sources and sum them up with little or
+no direct attribution, combined with my own opinions, I'll give everybody
+my references *first* so they can delete the article and draw their own
+conclusions if they so prefer.
+
+The primary reference that got me started on all this is one in the CMJ:
+Vol 14, No. 4, Winter 1990: "Digital Synthesis of Self-modifying Waveforms
+by Means of Cellular Automata" (Jacques Chareyon). Those who are already
+familiar with automata may just skip to that article and forget about the
+rest of this one.
+Note: the article gives a mail address for M. Chareyon, but he did not
+answer an inquiry about any available recordings using this technique in
+1990.
+
+So. Anyone still here? Good.
+
+Cellular automata are a mathematical concept first introduced in the late
+1940's. Generally speaking, a cellular automaton consists of a grid of
+cells. Each cell may take on any of a number of values - binary automata
+(cell on or cell off) are the most commonly studied. Each cell has a
+neighborhood, defined more simply as other cells which influence its state.
+The exact nature of this influence is defined by what are called transition
+rules. The cellular automaton starts off with some cells in any of the
+allowable states. for each "step" in the automaton's history, the
+neighborhood of every cell is checked, and the state of the cell is
+updated. All updates occur simultaneously.
+
+The transition rule must describe the resulting state of a cell for every
+possible configuration of other cells in the neighborhood. For large
+numbers of states, the amount of memory required to hold the transition
+rule becomes increasingly large, Therefore, some automata use what is known
+as a "totalistic" rule. These rules simply sum the values of the cells in
+the neighborhood and then assign a result on this basis. The resulting
+tables are far smaller.
+
+Many readers may already be familiar with John Horton Conway's game of
+"Life". This is a two-dimensional binary automaton with a totalistic rule.
+This makes for a very small rule set:
+
+ i) If fewer than two filled cells (cells with value 1) surround a cell,
+ it becomes empty next generation.
+ ii) If more than three filled cells surround a cell, it becomes empty
+ next generation.
+iii) If exactly three cells filled cells surround a cell, it becomes
+ filled on the next generation.
+
+This corresponds to a totalistic rule set with a total of 8(2-1)+1 or 9
+rules (one each for the sum values of 0 (no cells with a value) through 9
+(all cells with a value) ).If the transition rule were represented as a
+non-totalistic one, the rule set would need 2**8 or 256 entries. There are
+many interesting totalistic automata, so giving up detailed description of
+every nuance of the transitions to save memory space isn't a big sacrifice.
+
+Interesting as two dimensional automata are, they really aren't terribly
+useful for music making. There have been some experiments which have
+attempted to use a two-dimensional automaton to generate MIDI events -
+synthesis at the note level, using :
+
+Battista, T. and M. Giri, 1988. "Composizione Tramite Automi Cellulari."
+Atti del VII Cooloquio di Informatica Musicale. Rome, Italy: Edizione Arti
+Grafiche Ambrosini, pp. 181-182.
+
+Edgar, R. and J. Ryan, 1986. "LINA" Exhibition of the 1986 International
+Computer Music Conference, San Francisco: Computer Music Association.
+
+I have not heard any of the music from these efforts, so I certainly can't
+pass any judgement on them. For the purposes of this summary, we'll just
+look at one-dimensional automata. These use a linear array of cells, with
+the neighborhood generally being one or two cells on either side of each
+cell.
+(This is the type of automaton dealt with in M. Chareyon's article, which I
+will be paraphrasing broadly hereafter).
+
+M. Chareyon's automata are wavetables. A digitized signal is stored as a
+linear array of numbers in memory. A totalistic rule is used to determine a
+lookup value which indexes into an array containing the resulting value;
+this is saved into a second array. After the first array is completely
+processed, the roles of the two are swapped and the process is repeated.
+
+The limiting factor in this process is the number of bits of resolution
+being used to generate the sound. For a totalistic rule using a two-cell
+neighborhood and 12-bit individual samples, we have 3*(2*12) = 12288
+entries in the rule table. At 2 bytes each, this is 24K of storage. If we
+go to 16-bit sample resolution, we have 196608 entries at 2 bytes each for
+a total of 393216 bytes, or 384K.
+
+The key point of M. Charyeon's method is the use of small neighborhoods
+with large numbers of cellular states. Since the computation of the new
+wavetable is all table lookup, very complex transition rules can be
+precomputed and loaded into the tables, allowing the synthesis to
+essentially be a fast sum-and-lookup loop to calculate each new wavesample.
+>From the article, it appears that M. Chareyon was able to produce 2 or 3
+voices in realtime on a Mac II with a Digidesign Sound Accelerator board.
+It seems that it would probably be possible to use an AV Mac to do it
+without the board.
+
+This LASy (Linear Automaton Synthesis) method is closely related to the
+Karplus-Strong plucked-string algorithm, in that a wavesample is run
+through an algorithm which recirculates the samples to "self-modify" the
+wave. In fact, a judicious choice of table entries allows one to very
+simply simulate the K-S algoritm directly.
+
+So what are the sounds like? Some automata produce waveforms which quickly
+"ramp-up" to complex spectra and then drop off quickly. Others move to a
+steady state and then remain there. Yet others produce never-ending and
+unpredictable waveforms, whose harmonic content is constantly changing.
+
+Obviously enough, the original wavesample can be obtained mathematically,
+or by actual sampling and using LASy as a waveshaper. As M. Chareyon notes,
+a quick estimate of the number of possible automata for a 2-neighbor
+totalistic rule using a 256-entry wavetable with 12-bit entries is
+(2**12)**256 * (2**12)**(3*2**12) or about 10**4500 possible automata. Of
+course, many, many of these would not be suitable for music (e.g., the 4096
+automata in which all values go to one vlaue in one step, etc.); however,
+the number of musically useful automata is still likely to be an immense
+number.
+
+M. Chareyon provides a number of examples of ways to fill out the rule
+tables and a number of hints on creating wave tables - generally speaking,
+one can create a function which is used to compute the values to be placed
+into the table and then fill it so it can simply be loaded and used by the
+basic algorithm. His experience in using LASy is that he manages
+approximately 50% of the time to produce sounds with the desired
+characteristics, and that about 10% of the remaining time he gets
+unexpected but useful results which can be used as starting points for
+further exploration.
+
+Again, the important point is that the basic automaton uses wavesamples at
+full resolution, calculating a new wavesample for each step of the
+automaton; the next wavesample can be played while the new one is being
+calculated. Because of the large number of states, mathematical tools for
+the analysis of automata and the construction of automata with specifically
+desired qualities require too much storage and compute time to make them
+useful for LASy purposes.
+
+Again, much of this article is paraphrased from M. Chareyon's article; I
+take no credit for any of the work in this note. I'm just summarizing.
+
+The following other articles were referenced by M. Chareyon's article:
+
+Burks, A., ed. 1970. Essays on Cellular Automata. Champaign/Urbana, IL:
+University of Illinois Press.
+
+Chareyon, J. 1988a. "Sound Synthesis and Processing by Means of Linear
+Cellular Automata." Proceedings of the 1988 Internation Computer Music
+Conference. San Francisco: Computer Music Association.
+
+Chareyon, J. 1988b. "Wavetable come Automa Cellulare: una Nuova Tecnica di
+Sintesi." Atti del VII Colloquio di Informatica Musicale, Rome, Italy:
+Edizioni Arti Grafiche Ambrosini, pp. 174-177.
+
+Farmer, D., T. Toffoli, and S. Wolfram, eds. 1984. Cellular Automata.
+North-Holland Physics Publishing. [One of the definitive works on cellular
+automata - fairly heavy math, not a popular presentation - JM]
+
+Gardner, M. 1970. "The Fantastic Combinations of John Conway's New Solitare
+Game 'Life'". Scientific American 223(4) 120-123. [A good introduction to
+cellular automata, focusing on 'life' in specific. Useful intro if my
+1-paragraph summary of automata was confusing :) - JM]
+
+ --- Joe M.
+
+--
+"At the end of the hour, we'll have information on the sedatives used by
+the artists,,," (MST3K)
+
diff --git a/help/examplescore.txt b/help/examplescore.txt
new file mode 100644
index 0000000..78afd45
--- /dev/null
+++ b/help/examplescore.txt
@@ -0,0 +1,25 @@
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+71
+70
+69
+68
+67
+66
+65
+64
+63
+62
+61
+60 \ No newline at end of file
diff --git a/help/help-arbran.pd b/help/help-arbran.pd
new file mode 100644
index 0000000..9153bf5
--- /dev/null
+++ b/help/help-arbran.pd
@@ -0,0 +1,28 @@
+#N canvas 190 136 663 491 12;
+#X obj 41 152 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 41 249 5 0 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 6 float 1;
+#A 0 1.1 2.67143 3.24285 3.1 4.38571 8.67143;
+#X coords 0 10 5 0 200 140 1;
+#X restore 347 71 graph;
+#N canvas 0 0 450 300 graph2 0;
+#X array array2 6 float 1;
+#A 0 0.0229077 0.204366 0.486501 0.0632986 0.204028 0.025319;
+#X coords 0 1 5 0 200 140 1;
+#X restore 347 220 graph;
+#X obj 41 202 arbran array1 array2;
+#X text 39 21 arbran :: generates a random variable that conforms
+to the piecewise probability density functions specified in two arrays
+;
+#X text 40 297 array1 has values between 0 and 10;
+#X text 40 317 array2 between 0 and 1 !;
+#X msg 99 152 pdfscale;
+#X text 41 389 array1 stores the values and array2 the corresponding
+probabilities (0 - 1) for each of that values \, use message 'pdfscale'
+to check (and adjust) the probability values to correct settings (the
+area below the curve has to be 1);
+#X connect 0 0 4 0;
+#X connect 4 0 1 0;
+#X connect 8 0 4 0;
diff --git a/help/help-average.pd b/help/help-average.pd
new file mode 100644
index 0000000..6155716
--- /dev/null
+++ b/help/help-average.pd
@@ -0,0 +1,29 @@
+#N canvas 445 253 470 320 12;
+#X floatatom 47 39 5 0 0;
+#X floatatom 47 276 5 0 0;
+#X floatatom 122 191 5 0 0;
+#X obj 47 219 average 10;
+#X text 177 191 number of items to average;
+#X text 139 220 creation argument = number of items;
+#X floatatom 122 254 5 0 0;
+#X text 105 277 average of last N items;
+#X text 125 11 average :: calculates the average of the;
+#X text 214 30 last N items (floats);
+#X text 176 255 tendency (up = 1 \, down = -1);
+#X msg 100 60 reset;
+#X text 152 61 forget everything;
+#X msg 129 94 linear;
+#X msg 147 118 geometric;
+#X text 191 93 linear average (dafault);
+#X text 230 119 geometric average;
+#X msg 158 146 weight;
+#X text 217 147 weighted average (giving last;
+#X text 218 163 items higher weight);
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X connect 3 1 6 0;
+#X connect 11 0 3 0;
+#X connect 13 0 3 0;
+#X connect 14 0 3 0;
+#X connect 17 0 3 0;
diff --git a/help/help-beat.pd b/help/help-beat.pd
new file mode 100644
index 0000000..55f85ef
--- /dev/null
+++ b/help/help-beat.pd
@@ -0,0 +1,66 @@
+#N canvas 294 98 628 562 12;
+#X floatatom 20 503 8 0 0;
+#X obj 20 66 notein;
+#X obj 183 376 makenote 100 250;
+#X floatatom 41 477 5 0 0;
+#X text 43 13 beat :: beat tracker;
+#X text 97 505 beats per minute;
+#X msg 71 224 reset;
+#X obj 183 219 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 183 346 60;
+#X msg 53 108 print;
+#X obj 63 446 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -258699
+-1;
+#X text 93 447 'on beat';
+#X text 96 479 milliseconds;
+#X msg 303 336 400;
+#X obj 319 299 + 0;
+#X text 411 245 <-- adding some jitter;
+#X obj 183 271 random 4;
+#X obj 183 298 select 0 1 2 3;
+#X text 211 218 <-- click here to play random rhythm;
+#X obj 338 243 random 3;
+#X obj 338 270 - 1;
+#X obj 20 414 beat 4;
+#X text 88 415 creation: beat <band percentage>;
+#X text 349 456 certain percentage in which;
+#X text 350 472 the beats have to lie;
+#X msg 262 337 200;
+#X msg 222 336 100;
+#X obj 183 245 metro 100;
+#X text 106 108 print internal data (toggle on/off);
+#X text 106 136 prints out: time between current and last event \,
+the five best-fitting theories (with likelyhood in brackets) \, the
+time of arrival of current event (R) and the expected time of arrival
+(E) of the next event;
+#X text 213 439 band percentage: creates a critical time band of a
+;
+#X connect 1 0 21 0;
+#X connect 1 1 21 1;
+#X connect 2 0 21 0;
+#X connect 2 1 21 1;
+#X connect 6 0 21 0;
+#X connect 7 0 27 0;
+#X connect 8 0 2 0;
+#X connect 9 0 21 0;
+#X connect 13 0 14 0;
+#X connect 14 0 27 1;
+#X connect 16 0 17 0;
+#X connect 17 0 8 0;
+#X connect 17 0 26 0;
+#X connect 17 1 8 0;
+#X connect 17 1 25 0;
+#X connect 17 2 13 0;
+#X connect 17 2 8 0;
+#X connect 17 3 8 0;
+#X connect 17 3 13 0;
+#X connect 19 0 20 0;
+#X connect 20 0 14 1;
+#X connect 21 0 0 0;
+#X connect 21 1 3 0;
+#X connect 21 2 10 0;
+#X connect 25 0 14 0;
+#X connect 26 0 14 0;
+#X connect 27 0 16 0;
+#X connect 27 0 19 0;
diff --git a/help/help-beta.pd b/help/help-beta.pd
new file mode 100644
index 0000000..f4b9edf
--- /dev/null
+++ b/help/help-beta.pd
@@ -0,0 +1,14 @@
+#N canvas 438 222 487 308 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X floatatom 139 94 5 0 0;
+#X obj 70 140 beta 0.78 1.3;
+#X text 192 95 a;
+#X floatatom 209 116 5 0 0;
+#X text 262 117 b;
+#X text 39 21 beta :: beta distributed random numbers;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X connect 5 0 3 2;
diff --git a/help/help-bilex.pd b/help/help-bilex.pd
new file mode 100644
index 0000000..4e9961f
--- /dev/null
+++ b/help/help-bilex.pd
@@ -0,0 +1,12 @@
+#N canvas 370 195 485 306 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X floatatom 177 103 5 0 0;
+#X text 230 105 lambda;
+#X text 13 20 bilex :: bilinear exponetionally distributed random
+numbers;
+#X obj 70 140 bilex 1.5;
+#X connect 0 0 5 0;
+#X connect 2 0 5 1;
+#X connect 5 0 1 0;
diff --git a/help/help-borax.pd b/help/help-borax.pd
new file mode 100644
index 0000000..a286a60
--- /dev/null
+++ b/help/help-borax.pd
@@ -0,0 +1,86 @@
+#N canvas 281 85 645 549 12;
+#X obj 125 230 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 125 298 6 0 0;
+#X floatatom 50 451 5 0 0;
+#X floatatom 26 502 5 0 0;
+#X floatatom 63 425 5 0 0;
+#X floatatom 38 476 5 0 0;
+#X floatatom 100 349 6 0 0;
+#X floatatom 75 399 5 0 0;
+#X floatatom 112 323 5 0 0;
+#X floatatom 87 374 5 0 0;
+#X obj 26 269 borax 0 0 0 0;
+#X text 103 452 number of voices currently playing;
+#X text 120 422 pitch;
+#X text 127 399 velocity;
+#X obj 15 54 makenote 100 1500;
+#X obj 336 67 metro 100;
+#X obj 428 124 + 50;
+#X obj 428 147 s time;
+#X obj 403 43 r time;
+#X obj 260 147 s pitch;
+#X obj 15 17 r pitch;
+#X obj 80 18 r velo;
+#X msg 336 14 1;
+#X msg 345 37 0;
+#X obj 513 101 random 64;
+#X obj 513 124 + 64;
+#X obj 513 147 s velo;
+#X obj 146 19 r duration;
+#X obj 336 147 s duration;
+#X obj 336 124 + 250;
+#X text 91 477 voice allocation number - each note playing is assigned
+a no;
+#X obj 45 88 noteout 1;
+#X obj 428 101 random 500;
+#X obj 260 101 random 88;
+#X obj 260 124 + 21;
+#X text 120 200 borax :: analyse incoming midi notes;
+#X text 363 13 <-- click to play random music;
+#X obj 40 125 notein 1;
+#X text 186 300 delta time value - time between note-ons;
+#X text 160 350 duration value - time between note-on and note-off
+;
+#X text 79 502 note-on count;
+#X text 141 374 duration count;
+#X text 164 326 delta time count;
+#X obj 336 101 random 1000;
+#X text 153 228 <-- reset :: sets counters and clocks to zero and sends
+;
+#X text 258 243 note-off for all notes currently playing;
+#X text 137 273 <--- zeroes only added to make the object larger;
+#X connect 0 0 10 2;
+#X connect 10 0 3 0;
+#X connect 10 1 5 0;
+#X connect 10 2 2 0;
+#X connect 10 3 4 0;
+#X connect 10 4 7 0;
+#X connect 10 5 9 0;
+#X connect 10 6 6 0;
+#X connect 10 7 8 0;
+#X connect 10 8 1 0;
+#X connect 14 0 10 0;
+#X connect 14 0 31 0;
+#X connect 14 1 10 1;
+#X connect 14 1 31 1;
+#X connect 15 0 24 0;
+#X connect 15 0 32 0;
+#X connect 15 0 33 0;
+#X connect 15 0 43 0;
+#X connect 16 0 17 0;
+#X connect 18 0 15 1;
+#X connect 20 0 14 0;
+#X connect 21 0 14 1;
+#X connect 22 0 15 0;
+#X connect 23 0 15 0;
+#X connect 24 0 25 0;
+#X connect 25 0 26 0;
+#X connect 27 0 14 2;
+#X connect 29 0 28 0;
+#X connect 32 0 16 0;
+#X connect 33 0 34 0;
+#X connect 34 0 19 0;
+#X connect 37 0 10 0;
+#X connect 37 1 10 1;
+#X connect 43 0 29 0;
diff --git a/help/help-cauchy.pd b/help/help-cauchy.pd
new file mode 100644
index 0000000..a7dd6f2
--- /dev/null
+++ b/help/help-cauchy.pd
@@ -0,0 +1,11 @@
+#N canvas 438 222 487 308 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X floatatom 185 103 5 0 0;
+#X obj 70 140 cauchy 0.5;
+#X text 238 104 alpha - governs spread;
+#X text 39 21 cauchy :: Cauchy distributed random numbers;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
diff --git a/help/help-chord.pd b/help/help-chord.pd
new file mode 100644
index 0000000..a509840
--- /dev/null
+++ b/help/help-chord.pd
@@ -0,0 +1,37 @@
+#N canvas 291 216 458 308 12;
+#X floatatom 15 276 5 0 0;
+#X symbolatom 44 212 48 0 0;
+#X floatatom 74 149 5 0 0;
+#X floatatom 131 149 5 0 0;
+#X floatatom 189 149 5 0 0;
+#X floatatom 248 149 5 0 0;
+#X floatatom 59 182 5 0 0;
+#X text 71 276 MIDI note number of bass note;
+#X text 116 175 root position (0) \, 1st inversion (1);
+#X text 115 188 or 2nd inversion (2);
+#X floatatom 29 249 5 0 0;
+#X text 84 251 class of bass note;
+#X text 231 118 list of chord notes;
+#X obj 15 51 notein;
+#X obj 15 86 chord 59;
+#X text 90 86 <-- notes higher than 59 get ignored;
+#X text 15 9 chord :: tries to detect chords;
+#X text 89 232 notes in chord : chord name;
+#X text 89 26 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X text 89 44 based on code by Rober Rowe;
+#X obj 74 118 unpack f f f f f f;
+#X floatatom 303 149 5 0 0;
+#X floatatom 362 149 5 0 0;
+#X connect 13 0 14 0;
+#X connect 13 1 14 1;
+#X connect 14 0 0 0;
+#X connect 14 1 10 0;
+#X connect 14 2 1 0;
+#X connect 14 3 6 0;
+#X connect 14 4 20 0;
+#X connect 20 0 2 0;
+#X connect 20 1 3 0;
+#X connect 20 2 4 0;
+#X connect 20 3 5 0;
+#X connect 20 4 21 0;
+#X connect 20 5 22 0;
diff --git a/help/help-delta.pd b/help/help-delta.pd
new file mode 100644
index 0000000..fa865e3
--- /dev/null
+++ b/help/help-delta.pd
@@ -0,0 +1,20 @@
+#N canvas 328 264 466 318 12;
+#X floatatom 54 217 5 0 0;
+#X floatatom 54 108 5 0 0;
+#X msg 23 83 bang;
+#X text 69 82 calculate and output result now;
+#X obj 54 172 delta;
+#X obj 54 133 * 3;
+#X floatatom 127 218 5 0 0;
+#X floatatom 127 109 5 0 0;
+#X obj 127 134 * 3;
+#X obj 127 173 delta 2;
+#X text 53 259 use creation arguments to set order (1st or 2nd);
+#X text 39 20 delta :: calculate 1st or 2nd order difference;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 6 0;
diff --git a/help/help-dist.pd b/help/help-dist.pd
new file mode 100644
index 0000000..608283f
--- /dev/null
+++ b/help/help-dist.pd
@@ -0,0 +1,36 @@
+#N canvas 450 84 473 453 12;
+#X text 33 10 dist :: send data to a list of receive objects;
+#X obj 34 364 dist;
+#X msg 85 127 connect bla;
+#X msg 103 154 connect foo;
+#X msg 131 209 disconnect bla;
+#X msg 145 237 disconnect foo;
+#X msg 158 295 clear;
+#X obj 200 374 receive bla;
+#X obj 306 374 receive foo;
+#X obj 200 400 print bla;
+#X obj 306 400 print foo;
+#X floatatom 34 69 5 0 0;
+#X msg 170 328 print;
+#X msg 56 98 send anything 1 2 dog;
+#X obj 34 397 d bla foo;
+#X msg 122 180 connect dog cat;
+#X msg 159 265 disconnect cat dog;
+#X text 210 295 empty receiver list;
+#X text 218 328 print list of receive names;
+#X text 190 126 add 'bla' to list of receivers;
+#X text 253 209 remove 'bla' from list;
+#X text 238 99 send anything you want;
+#X text 97 28 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 9 0;
+#X connect 8 0 10 0;
+#X connect 11 0 1 0;
+#X connect 12 0 1 0;
+#X connect 13 0 1 0;
+#X connect 15 0 1 0;
+#X connect 16 0 1 0;
diff --git a/help/help-divide.pd b/help/help-divide.pd
new file mode 100644
index 0000000..a0aea04
--- /dev/null
+++ b/help/help-divide.pd
@@ -0,0 +1,18 @@
+#N canvas 328 264 466 318 12;
+#X floatatom 54 217 5 0 0;
+#X floatatom 54 132 5 0 0;
+#X floatatom 108 132 5 0 0;
+#X text 39 20 divide :: like '/' but calculates result;
+#X text 133 204 use creation arguments to set initial;
+#X text 133 220 values for inlets;
+#X msg 7 104 bang;
+#X text 53 103 calculate and output result now;
+#X obj 54 172 divide 8 6 4;
+#X text 118 58 allows for up to 32 inlets;
+#X floatatom 164 132 5 0 0;
+#X text 120 38 when leftmost or second inlet is changed;
+#X connect 1 0 8 0;
+#X connect 2 0 8 1;
+#X connect 6 0 8 0;
+#X connect 8 0 0 0;
+#X connect 10 0 8 2;
diff --git a/help/help-divmod.pd b/help/help-divmod.pd
new file mode 100644
index 0000000..5e0018b
--- /dev/null
+++ b/help/help-divmod.pd
@@ -0,0 +1,20 @@
+#N canvas 328 264 464 316 12;
+#X floatatom 54 239 5 0 0;
+#X floatatom 54 127 5 0 0;
+#X floatatom 129 127 5 0 0;
+#X obj 54 172 divmod 8 6;
+#X text 146 170 use creation arguments to set initial;
+#X text 146 186 values for inlets;
+#X msg 23 83 bang;
+#X text 69 82 calculate and output result now;
+#X floatatom 129 219 5 0 0;
+#X text 182 222 modulo;
+#X text 106 242 result of division;
+#X text 186 127 takes int's only!;
+#X text 12 19 divmod :: calculate division and modulo;
+#X text 92 35 outputs results even when right inlet changes;
+#X connect 1 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 0 0;
+#X connect 3 1 8 0;
+#X connect 6 0 3 0;
diff --git a/help/help-edge.pd b/help/help-edge.pd
new file mode 100644
index 0000000..ce85dfb
--- /dev/null
+++ b/help/help-edge.pd
@@ -0,0 +1,17 @@
+#N canvas 258 208 452 302 12;
+#X obj 100 154 edge;
+#X obj 100 215 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 127 186 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 156 186 falling edge detected;
+#X text 128 216 rising edge detected;
+#X text 31 16 edge :: detect rising or falling edge in floats;
+#X floatatom 126 111 5 0 0;
+#X obj 100 79 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 94 35 written by <olaf.matthes@gmx.de>;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
diff --git a/help/help-expo.pd b/help/help-expo.pd
new file mode 100644
index 0000000..922cf4c
--- /dev/null
+++ b/help/help-expo.pd
@@ -0,0 +1,12 @@
+#N canvas 370 195 454 304 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X text 13 20 expo :: exponetionally distributed random numbers
+;
+#X obj 70 140 expo 0.5;
+#X floatatom 169 101 5 0 0;
+#X text 222 103 lambda;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
diff --git a/help/help-fifo.pd b/help/help-fifo.pd
new file mode 100644
index 0000000..581a7b7
--- /dev/null
+++ b/help/help-fifo.pd
@@ -0,0 +1,13 @@
+#N canvas 356 196 452 302 12;
+#X obj 38 176 fifo 10;
+#X floatatom 38 231 5 0 0;
+#X floatatom 61 132 5 0 0;
+#X msg 38 98 bang;
+#X text 83 98 hit to get next number;
+#X text 111 176 fifo <size>;
+#X text 92 233 output of fifo;
+#X text 42 14 fifo :: first in first out buffer for floats;
+#X text 105 32 written for Max by St. Rainstick;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
diff --git a/help/help-gauss.pd b/help/help-gauss.pd
new file mode 100644
index 0000000..c4dce4b
--- /dev/null
+++ b/help/help-gauss.pd
@@ -0,0 +1,14 @@
+#N canvas 438 222 487 308 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X floatatom 123 91 5 0 0;
+#X obj 70 140 gauss 1 0;
+#X floatatom 177 113 5 0 0;
+#X text 39 21 gauss :: Gauss distributed random numbers;
+#X text 176 92 sigma - standard deviation;
+#X text 230 114 mu - mean;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X connect 4 0 3 2;
diff --git a/help/help-gestalt.pd b/help/help-gestalt.pd
new file mode 100644
index 0000000..acf09cc
--- /dev/null
+++ b/help/help-gestalt.pd
@@ -0,0 +1,51 @@
+#N canvas 323 155 599 396 12;
+#X text 137 8 gestalt :: gestalt detection for monophonic melodies
+;
+#X floatatom 58 332 5 0 0;
+#X obj 58 176 makenote 100 100;
+#X obj 58 53 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 58 76 metro 100;
+#X obj 58 100 random 24;
+#X obj 58 124 + 60;
+#X obj 58 278 gestalt 100;
+#X obj 142 100 random 24;
+#X obj 142 124 select 0;
+#X msg 201 146 100;
+#X msg 142 146 400;
+#X floatatom 68 154 5 0 0;
+#X text 160 282 CREATION ARGUMENT: reference time;
+#X obj 219 220 beat;
+#X floatatom 232 245 5 0 0;
+#X text 87 54 click to play random melody;
+#X text 112 350 one could use 'tilt' to detect abrupt changes that
+;
+#X text 112 367 indicate the start of a new segment;
+#X text 111 332 the higher the output the more the gestalt changes
+\;;
+#X text 161 298 i.e. time in ms expected to be the duration of the
+;
+#X text 161 314 shortest note (also setable via rightmost inlet);
+#X text 281 200 use 'beat' (maxlib) to get the real;
+#X text 281 217 reference time from input \, especially;
+#X text 282 234 when using;
+#X obj 372 235 notein;
+#X text 225 26 written by <olaf.matthes@gmx.de>;
+#X connect 2 0 7 0;
+#X connect 2 0 14 0;
+#X connect 2 1 7 1;
+#X connect 2 1 14 1;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 0 12 0;
+#X connect 7 0 1 0;
+#X connect 8 0 9 0;
+#X connect 9 0 11 0;
+#X connect 9 1 10 0;
+#X connect 10 0 2 2;
+#X connect 11 0 2 2;
+#X connect 14 1 15 0;
+#X connect 14 1 7 2;
diff --git a/help/help-history.pd b/help/help-history.pd
new file mode 100644
index 0000000..acd1bc8
--- /dev/null
+++ b/help/help-history.pd
@@ -0,0 +1,30 @@
+#N canvas 445 253 480 330 12;
+#X floatatom 32 49 5 0 0;
+#X floatatom 32 286 5 0 0;
+#X floatatom 115 201 5 0 0;
+#X floatatom 115 264 5 0 0;
+#X text 169 265 tendency (up = 1 \, down = -1);
+#X msg 85 70 reset;
+#X text 137 71 forget everything;
+#X msg 114 104 linear;
+#X msg 132 128 geometric;
+#X text 176 103 linear average (dafault);
+#X text 215 129 geometric average;
+#X msg 143 156 weight;
+#X text 203 173 items higher weight);
+#X text 124 6 history :: calculates the average of the;
+#X text 212 23 items (floats) that came in;
+#X obj 32 229 history 250;
+#X text 202 157 weighted average (giving newer;
+#X text 130 229 creation argument = ms to look back;
+#X text 171 201 milliseconds to look back;
+#X text 214 40 within the last N milliseconds;
+#X text 90 287 average over last N milliseconds;
+#X connect 0 0 15 0;
+#X connect 2 0 15 1;
+#X connect 5 0 15 0;
+#X connect 7 0 15 0;
+#X connect 8 0 15 0;
+#X connect 11 0 15 0;
+#X connect 15 0 1 0;
+#X connect 15 1 3 0;
diff --git a/help/help-ignore.pd b/help/help-ignore.pd
new file mode 100644
index 0000000..fc6314a
--- /dev/null
+++ b/help/help-ignore.pd
@@ -0,0 +1,15 @@
+#N canvas 445 253 464 314 12;
+#X floatatom 47 107 5 0 0;
+#X floatatom 47 225 5 0 0;
+#X text 122 197 creation argument = time in ms;
+#X floatatom 122 136 5 0 0;
+#X obj 47 167 ignore 500;
+#X text 177 136 time in ms a value has to;
+#X text 178 152 be present in order to get through;
+#X text 75 24 ignore :: lets information through;
+#X text 154 41 only when it was presente;
+#X text 155 59 at input longer than N ms;
+#X text 73 258 note: input gets delayed by N milliseconds;
+#X connect 0 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 1 0;
diff --git a/help/help-iso.pd b/help/help-iso.pd
new file mode 100644
index 0000000..79559ab
--- /dev/null
+++ b/help/help-iso.pd
@@ -0,0 +1,54 @@
+#N canvas 438 64 464 535 12;
+#X obj 16 407 iso;
+#X floatatom 16 434 5 0 0;
+#X floatatom 69 434 10 0 0;
+#X msg 72 156 bang;
+#X msg 96 207 stop;
+#X msg 106 233 pause;
+#X msg 117 259 resume;
+#X msg 128 285 loop;
+#X msg 139 311 unloop;
+#X text 214 100 list of pitches;
+#X text 273 129 list of attacks [ms];
+#X text 170 284 turn loopin back on;
+#X text 198 309 turn looping off;
+#X obj 16 460 makenote 0 100;
+#X obj 16 487 noteout;
+#X text 112 156 start from beginning;
+#X text 149 183 start at item specyfied;
+#X text 281 145 (inter-note onsets);
+#X text 88 45 ported to Pd by Olaf Matthes;
+#X text 216 337 global time multiplier;
+#X text 163 435 duration in ms;
+#X msg 152 337 hook 2;
+#X msg 161 368 duty 1.5;
+#X text 234 369 duration multiplier;
+#X obj 16 69 loadbang;
+#X msg 82 182 start 4;
+#X text 251 350 (speed adjustment);
+#X text 237 389 duty < 1 - staccato;
+#X text 237 404 duty > 1 - legato;
+#X text 169 198 (item count starts with 0);
+#X text 88 26 written for Max by Charlie Baker;
+#X text 31 6 iso :: queues up lists of pitches and attack points;
+#X msg 16 100 60 61 62 66 67 68 69 70;
+#X msg 35 128 240 10 500 375 15 15 375 500;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 1 0 13 0;
+#X connect 2 0 13 1;
+#X connect 3 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 13 0 14 0;
+#X connect 13 1 14 1;
+#X connect 21 0 0 0;
+#X connect 22 0 0 0;
+#X connect 24 0 32 0;
+#X connect 24 0 33 0;
+#X connect 25 0 0 0;
+#X connect 32 0 0 0;
+#X connect 33 0 0 1;
diff --git a/help/help-lifo.pd b/help/help-lifo.pd
new file mode 100644
index 0000000..c5ec758
--- /dev/null
+++ b/help/help-lifo.pd
@@ -0,0 +1,16 @@
+#N canvas 356 196 454 304 12;
+#X obj 38 176 lifo 10;
+#X floatatom 38 231 5 0 0;
+#X floatatom 61 110 5 0 0;
+#X msg 38 76 bang;
+#X text 83 76 hit to get next number;
+#X text 111 176 lifo <size>;
+#X text 42 14 lifo :: last in first out buffer for floats;
+#X text 108 33 written for Max by St. Rainstick;
+#X msg 76 140 clear;
+#X text 127 139 clear buffer;
+#X text 92 233 output of buffer;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 8 0 0 0;
diff --git a/help/help-limit.pd b/help/help-limit.pd
new file mode 100644
index 0000000..4ee74da
--- /dev/null
+++ b/help/help-limit.pd
@@ -0,0 +1,25 @@
+#N canvas 328 32 558 365 12;
+#X floatatom 27 277 8 0 0;
+#X floatatom 27 73 5 0 0;
+#X text 215 46 written by <olaf.matthes@gmx.de>;
+#X floatatom 54 131 5 0 0;
+#X floatatom 82 152 5 0 0;
+#X floatatom 110 173 5 0 0;
+#X text 84 71 input value;
+#X text 57 104 creation arguments can be changed dynamically:;
+#X obj 27 249 limit 0 9 5;
+#X text 35 316 creation arguments:;
+#X text 170 172 0 = limit \, others: compression ratio;
+#X text 35 340 limit <lower limit> <upper limit> <ratio>;
+#X text 324 195 values between 0 and 1;
+#X text 325 213 result in expansion !;
+#X text 106 278 limited / compressed output value;
+#X text 141 11 limit :: limits input to lie between boundaries;
+#X text 213 27 allows for compression / expansion;
+#X text 114 129 lower boundary;
+#X text 144 151 upper boundary;
+#X connect 1 0 8 0;
+#X connect 3 0 8 1;
+#X connect 4 0 8 2;
+#X connect 5 0 8 3;
+#X connect 8 0 0 0;
diff --git a/help/help-linear.pd b/help/help-linear.pd
new file mode 100644
index 0000000..adcf043
--- /dev/null
+++ b/help/help-linear.pd
@@ -0,0 +1,8 @@
+#N canvas 206 71 452 302 12;
+#X obj 70 140 linear;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X text 23 20 linear :: linearly distributed random numbers;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
diff --git a/help/help-listfunnel.pd b/help/help-listfunnel.pd
new file mode 100644
index 0000000..2d309a8
--- /dev/null
+++ b/help/help-listfunnel.pd
@@ -0,0 +1,21 @@
+#N canvas 280 185 452 302 12;
+#X obj 47 160 listfunnel;
+#X floatatom 47 89 5 0 0;
+#X obj 47 219 unpack f f;
+#X floatatom 47 244 5 0 0;
+#X floatatom 122 246 5 0 0;
+#X obj 61 194 print listfunnel;
+#X msg 73 114 17.3 23 147 11;
+#X text 37 23 listfunnel :: send values out as a list with;
+#X text 149 38 source index;
+#X text 149 55 based on code found on the web;
+#X msg 210 113 99 \$1 12;
+#X floatatom 210 86 5 0 0;
+#X connect 0 0 2 0;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 6 0 0 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 0;
diff --git a/help/help-match.pd b/help/help-match.pd
new file mode 100644
index 0000000..8d2fbd7
--- /dev/null
+++ b/help/help-match.pd
@@ -0,0 +1,68 @@
+#N canvas 90 142 874 407 12;
+#X obj 50 350 bng 24 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 148 212 reset;
+#X obj 50 95 random 5;
+#X msg 50 5 0;
+#X msg 65 32 1;
+#X obj 50 65 metro 100;
+#X text 203 212 reset internal data storage;
+#X text 182 26 input values matches the creation;
+#X text 183 42 arguments;
+#X text 185 82 this can be changed in the sources !;
+#X text 83 351 <-- 'bang' when input matches arguments;
+#X obj 62 122 hdl 20 1 0 5 empty empty empty 0 -6 0 8 -262144 -1 -1
+0;
+#X floatatom 50 154 5 0 0;
+#X text 228 229 -> forget all old values;
+#X obj 50 243 match 3 4;
+#X floatatom 81 325 5 0 0;
+#X floatatom 156 324 5 0 0;
+#X obj 81 294 unpack f f;
+#X text 111 11 match :: outputs a list when a list of;
+#X msg 93 178 1 3 4 7;
+#X msg 160 178 1 2 4 5;
+#X text 230 179 send a list of floats;
+#X symbolatom 688 312 10 0 0;
+#X symbolatom 616 336 10 0 0;
+#X symbolatom 581 356 10 0 0;
+#X obj 540 349 bng 24 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 540 244 match dog bytes 2 cats;
+#X msg 553 186 dog bytes 2 cats;
+#X msg 564 214 cat bytes 2 dogs;
+#X text 384 114 same works for symbols and mixtures of floats and symbols:
+;
+#X obj 581 285 unpack s s f s;
+#X floatatom 635 313 5 0 0;
+#X text 89 271 sends out the list when a match is found;
+#X msg 459 151 dog;
+#X msg 494 143 cats;
+#X msg 519 170 2;
+#X msg 471 195 bytes;
+#X text 183 68 a maximum of 16 arguments is allowed;
+#X connect 1 0 14 0;
+#X connect 2 0 12 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 11 0 12 0;
+#X connect 12 0 14 0;
+#X connect 14 0 0 0;
+#X connect 14 0 17 0;
+#X connect 17 0 15 0;
+#X connect 17 1 16 0;
+#X connect 19 0 14 0;
+#X connect 20 0 14 0;
+#X connect 26 0 25 0;
+#X connect 26 0 30 0;
+#X connect 27 0 26 0;
+#X connect 28 0 26 0;
+#X connect 30 0 24 0;
+#X connect 30 1 23 0;
+#X connect 30 2 31 0;
+#X connect 30 3 22 0;
+#X connect 33 0 26 0;
+#X connect 34 0 26 0;
+#X connect 35 0 26 0;
+#X connect 36 0 26 0;
diff --git a/help/help-maxlib.pd b/help/help-maxlib.pd
new file mode 100644
index 0000000..663c605
--- /dev/null
+++ b/help/help-maxlib.pd
@@ -0,0 +1,73 @@
+#N canvas 70 3 889 647 12;
+#X obj 290 277 average;
+#X obj 19 171 beat;
+#X obj 19 196 borax;
+#X obj 19 146 chord;
+#X obj 472 491 dist;
+#X obj 290 172 divide;
+#X obj 290 146 divmod;
+#X obj 606 171 fifo;
+#X obj 290 303 history;
+#X obj 17 496 ignore;
+#X obj 17 470 iso;
+#X obj 605 145 lifo;
+#X obj 290 329 match;
+#X obj 290 197 minus;
+#X obj 609 261 mlife;
+#X obj 290 224 multi;
+#X obj 472 516 netdist;
+#X obj 19 272 pitch;
+#X obj 290 251 plus;
+#X obj 17 418 pulse;
+#X obj 472 542 remote;
+#X obj 19 221 rhythm;
+#X obj 19 246 score array01;
+#X obj 17 444 speedlim;
+#X obj 17 522 step;
+#X obj 609 236 subst;
+#X text 30 27 maxlib 0.8 :: Music Analysis eXtensions LIBrary;
+#X text 140 44 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X text 139 61 download at http://www.akustische-kunst.de/puredata/maxlib
+;
+#X text 72 146 chord detection;
+#X text 69 171 beat tracking;
+#X text 78 222 beat detection;
+#X text 73 197 music analysis;
+#X text 136 246 score following;
+#X text 73 272 pitch information;
+#X text 20 115 MUSIC / MIDI ANALYSIS;
+#X text 290 110 MATH;
+#X text 357 147 calculate / and %;
+#X text 355 172 / for several inputs;
+#X text 349 252 + for several inputs;
+#X text 349 224 * for several inputs;
+#X text 353 198 - for several inputs;
+#X text 361 276 average of last N values;
+#X text 362 302 average over last N seconds;
+#X text 345 329 match input to list of numbers;
+#X text 17 392 TIME;
+#X text 94 445 lets input through every N milliseconds;
+#X text 56 472 play sequence of MIDI notes;
+#X text 78 497 ignore too fast changing input;
+#X text 469 459 CONTROL;
+#X text 520 490 send to list of receive objects;
+#X text 541 514 same for netreceive;
+#X text 531 541 send to one receive object;
+#X text 604 118 BUFFER;
+#X text 650 145 last in first out;
+#X text 653 171 first in first out;
+#X text 64 524 a line object that steps;
+#X text 606 204 OTHER / EXPERIMENTAL;
+#X text 666 235 self-similar substitution;
+#X text 665 261 cellular automaton;
+#X obj 290 355 scale;
+#X text 344 356 scale input to outpur range;
+#X text 72 418 a 'better' metro;
+#X obj 17 548 history;
+#X obj 17 574 velocity;
+#X text 86 548 average over last N milliseconds;
+#X text 93 574 velocity of input in digits per second;
+#X obj 472 569 netrec;
+#X text 531 570 netreceive with extra info about sender;
+#X obj 290 381 delta;
+#X text 344 381 calculate 1st or 2nd order difference;
diff --git a/help/help-minus.pd b/help/help-minus.pd
new file mode 100644
index 0000000..64e45f3
--- /dev/null
+++ b/help/help-minus.pd
@@ -0,0 +1,17 @@
+#N canvas 328 264 464 316 12;
+#X floatatom 54 217 5 0 0;
+#X floatatom 54 127 5 0 0;
+#X floatatom 107 127 5 0 0;
+#X text 39 20 minus :: like '-' but calculates result;
+#X text 133 204 use creation arguments to set initial;
+#X text 133 220 values for inlets;
+#X msg 23 83 bang;
+#X text 69 82 calculate and output result now;
+#X obj 54 172 minus 8 6 4;
+#X floatatom 161 127 5 0 0;
+#X text 120 38 when leftmost or second inlet is changed;
+#X connect 1 0 8 0;
+#X connect 2 0 8 1;
+#X connect 6 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 2;
diff --git a/help/help-mlife.pd b/help/help-mlife.pd
new file mode 100644
index 0000000..d12e1fc
--- /dev/null
+++ b/help/help-mlife.pd
@@ -0,0 +1,56 @@
+#N canvas 309 47 454 459 12;
+#X floatatom 23 424 5 0 0;
+#X floatatom 39 397 5 0 0;
+#X floatatom 76 424 5 0 0;
+#X floatatom 93 397 5 0 0;
+#X floatatom 129 424 5 0 0;
+#X floatatom 147 397 5 0 0;
+#X floatatom 183 425 5 0 0;
+#X floatatom 200 398 5 0 0;
+#X msg 22 33 bang;
+#X msg 69 123 randfill;
+#X msg 84 150 fill 0;
+#X msg 100 177 lo 2;
+#X msg 108 204 hi 3;
+#X msg 120 231 nset 3;
+#X msg 161 312 display;
+#X text 178 233 set neighbourhood;
+#X text 151 205 set high;
+#X text 146 176 set low;
+#X text 151 150 fill cells with 0;
+#X text 145 123 fill cells with random value;
+#X text 226 312 display state of cells;
+#X msg 35 72 1;
+#X text 63 33 calculate next generation and output;
+#X text 64 50 bangs on every cell that is alife;
+#X text 68 72 calculate next generation and output;
+#X text 68 89 1 if cell is alife \, 0 if dead;
+#X text 227 329 in Pd console window;
+#X text 142 355 mlife <number of cells> <view_start>;
+#X text 189 370 <view_size> <closed>;
+#X text 279 395 closed universe if;
+#X text 279 409 <closed> = 1;
+#X msg 134 258 randseed 4;
+#X text 225 258 seed array with random no.;
+#X text 225 284 seed array with a number;
+#X msg 149 285 seed 1 4;
+#X obj 23 356 mlife 8 1 8 0;
+#X text 44 5 mlife :: a cellular automata object;
+#X connect 8 0 35 0;
+#X connect 9 0 35 0;
+#X connect 10 0 35 0;
+#X connect 11 0 35 0;
+#X connect 12 0 35 0;
+#X connect 13 0 35 0;
+#X connect 14 0 35 0;
+#X connect 21 0 35 0;
+#X connect 31 0 35 0;
+#X connect 34 0 35 0;
+#X connect 35 0 0 0;
+#X connect 35 1 1 0;
+#X connect 35 2 2 0;
+#X connect 35 3 3 0;
+#X connect 35 4 4 0;
+#X connect 35 5 5 0;
+#X connect 35 6 6 0;
+#X connect 35 7 7 0;
diff --git a/help/help-multi.pd b/help/help-multi.pd
new file mode 100644
index 0000000..86e6a5c
--- /dev/null
+++ b/help/help-multi.pd
@@ -0,0 +1,17 @@
+#N canvas 328 264 464 316 12;
+#X floatatom 54 217 5 0 0;
+#X floatatom 54 127 5 0 0;
+#X floatatom 108 128 5 0 0;
+#X text 39 20 multi :: like '*' but calculates result;
+#X text 133 204 use creation arguments to set initial;
+#X text 133 220 values for inlets;
+#X msg 23 83 bang;
+#X text 69 82 calculate and output result now;
+#X obj 54 172 multi 8 6 2;
+#X floatatom 163 129 5 0 0;
+#X text 120 38 when leftmost or second inlet is changed;
+#X connect 1 0 8 0;
+#X connect 2 0 8 1;
+#X connect 6 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 2;
diff --git a/help/help-netclient.pd b/help/help-netclient.pd
new file mode 100644
index 0000000..46e5b52
--- /dev/null
+++ b/help/help-netclient.pd
@@ -0,0 +1,51 @@
+#N canvas 246 114 752 474 12;
+#X floatatom 49 333 5 0 0;
+#X floatatom 87 298 5 0 0;
+#X symbolatom 164 251 10 0 0;
+#X text 102 332 received data;
+#X text 140 298 number of connections;
+#X msg 49 54 print;
+#X floatatom 125 272 5 0 0;
+#X text 183 276 socket number;
+#X msg 103 179 broadcast hallo world!;
+#X text 288 179 send to all clients;
+#X text 143 49 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X obj 49 223 netserver 3000;
+#X text 137 120 send message to client no. 1;
+#X text 256 251 client's IP address;
+#X obj 477 189 netclient;
+#X msg 498 116 connect localhost 3000;
+#X msg 511 143 disconnect;
+#X msg 477 84 send 23;
+#X floatatom 544 218 5 0 0;
+#X msg 83 91 send 380 17.3;
+#X floatatom 477 296 5 0 0;
+#X obj 600 281 print anything;
+#X obj 538 309 print list;
+#X obj 477 245 route float list;
+#X msg 98 142 client 1 23;
+#X text 204 91 "send <socketnumber> <data>";
+#X text 110 70 send message on specified socket;
+#X text 200 143 "client <clientnumber> <data>";
+#X text 48 379 This example demonstrates how to set up a client/server
+connection. Data sent by the client get's received and displayed by
+the server imediately. Or just try it the other way round...;
+#X text 38 15 netclient :: simple client that connects to netserver
+or;
+#X text 142 32 to pd's native netreceive object;
+#X connect 5 0 11 0;
+#X connect 8 0 11 0;
+#X connect 11 0 0 0;
+#X connect 11 1 1 0;
+#X connect 11 2 6 0;
+#X connect 11 3 2 0;
+#X connect 14 0 23 0;
+#X connect 14 1 18 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 14 0;
+#X connect 19 0 11 0;
+#X connect 23 0 20 0;
+#X connect 23 1 22 0;
+#X connect 23 2 21 0;
+#X connect 24 0 11 0;
diff --git a/help/help-netdist.pd b/help/help-netdist.pd
new file mode 100644
index 0000000..84cd2e2
--- /dev/null
+++ b/help/help-netdist.pd
@@ -0,0 +1,37 @@
+#N canvas 374 142 458 370 12;
+#X obj 23 299 netdist;
+#X obj 275 249 netreceive 3000;
+#X floatatom 275 275 5 0 0;
+#X floatatom 390 275 5 0 0;
+#X msg 23 64 connect localhost 3000;
+#X floatatom 276 328 5 0 0;
+#X floatatom 391 328 5 0 0;
+#X obj 276 302 netreceive 3001;
+#X msg 67 120 disconnect localhost 3000;
+#X msg 42 93 connect localhost 3001;
+#X msg 88 147 disconnect localhost 3001;
+#X msg 102 177 print;
+#X msg 113 203 clear;
+#X floatatom 23 326 5 0 0;
+#X msg 120 232 send 23;
+#X msg 146 259 send 17.3;
+#X text 151 178 print list of connections;
+#X text 164 202 disconnect all;
+#X text 189 232 send values;
+#X text 213 64 add connection to list;
+#X text 278 119 remove connection;
+#X text 33 8 netdist :: distribute data to several netreceive;
+#X text 122 24 written by Olaf Matthes;
+#X connect 0 0 13 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 0 0;
+#X connect 7 0 5 0;
+#X connect 7 1 6 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 0 0;
+#X connect 14 0 0 0;
+#X connect 15 0 0 0;
diff --git a/help/help-netrec.pd b/help/help-netrec.pd
new file mode 100644
index 0000000..80be695
--- /dev/null
+++ b/help/help-netrec.pd
@@ -0,0 +1,34 @@
+#N canvas 315 121 600 364 12;
+#X obj 49 189 netrec 3000;
+#X obj 57 130 netsend;
+#X msg 57 18 connect localhost 3000;
+#X msg 78 44 disconnect localhost 3000;
+#X floatatom 49 297 5 0 0;
+#X floatatom 76 270 5 0 0;
+#X floatatom 93 73 5 0 0;
+#X msg 93 99 send \$1;
+#X symbolatom 132 217 10 0 0;
+#X text 224 217 IP address;
+#X text 100 298 received data;
+#X text 129 270 number of connections;
+#X obj 295 128 netsend;
+#X msg 295 16 connect localhost 3000;
+#X msg 316 42 disconnect localhost 3000;
+#X floatatom 331 71 5 0 0;
+#X msg 331 97 send \$1;
+#X msg 49 162 print;
+#X floatatom 104 243 5 0 0;
+#X text 162 247 socket number;
+#X connect 0 0 4 0;
+#X connect 0 1 5 0;
+#X connect 0 2 18 0;
+#X connect 0 3 8 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 13 0 12 0;
+#X connect 14 0 12 0;
+#X connect 15 0 16 0;
+#X connect 16 0 12 0;
+#X connect 17 0 0 0;
diff --git a/help/help-netserver.pd b/help/help-netserver.pd
new file mode 100644
index 0000000..a849bd5
--- /dev/null
+++ b/help/help-netserver.pd
@@ -0,0 +1,50 @@
+#N canvas 246 114 752 474 12;
+#X floatatom 49 333 5 0 0;
+#X floatatom 87 298 5 0 0;
+#X symbolatom 164 251 10 0 0;
+#X text 102 332 received data;
+#X text 140 298 number of connections;
+#X msg 49 54 print;
+#X floatatom 125 272 5 0 0;
+#X text 183 276 socket number;
+#X msg 103 179 broadcast hallo world!;
+#X text 288 179 send to all clients;
+#X text 144 33 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X obj 49 223 netserver 3000;
+#X text 137 120 send message to client no. 1;
+#X text 256 251 client's IP address;
+#X obj 477 189 netclient;
+#X msg 498 116 connect localhost 3000;
+#X msg 511 143 disconnect;
+#X msg 477 84 send 23;
+#X floatatom 544 218 5 0 0;
+#X msg 83 91 send 380 17.3;
+#X floatatom 477 296 5 0 0;
+#X obj 600 281 print anything;
+#X obj 538 309 print list;
+#X obj 477 245 route float list;
+#X msg 98 142 client 1 23;
+#X text 204 91 "send <socketnumber> <data>";
+#X text 110 70 send message on specified socket;
+#X text 200 143 "client <clientnumber> <data>";
+#X text 48 379 This example demonstrates how to set up a client/server
+connection. Data sent by the client get's received and displayed by
+the server imediately. Or just try it the other way round...;
+#X text 38 15 netclient :: simple client that connects to netserver
+;
+#X connect 5 0 11 0;
+#X connect 8 0 11 0;
+#X connect 11 0 0 0;
+#X connect 11 1 1 0;
+#X connect 11 2 6 0;
+#X connect 11 3 2 0;
+#X connect 14 0 23 0;
+#X connect 14 1 18 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 14 0;
+#X connect 19 0 11 0;
+#X connect 23 0 20 0;
+#X connect 23 1 22 0;
+#X connect 23 2 21 0;
+#X connect 24 0 11 0;
diff --git a/help/help-nroute.pd b/help/help-nroute.pd
new file mode 100644
index 0000000..0831363
--- /dev/null
+++ b/help/help-nroute.pd
@@ -0,0 +1,37 @@
+#N canvas 252 37 630 380 12;
+#X floatatom 116 199 5 0 0;
+#X obj 41 290 print matched;
+#X obj 116 256 print failed;
+#X msg 78 151 8;
+#X obj 41 226 nroute 8 2;
+#X msg 41 77 0 8 15;
+#X msg 56 105 17 3 45;
+#X msg 116 153 3;
+#X text 170 197 position to match;
+#X floatatom 427 204 5 0 0;
+#X obj 336 293 print matched;
+#X obj 427 259 print failed;
+#X obj 336 229 nroute fly 2;
+#X msg 381 178 go;
+#X msg 417 178 walk;
+#X msg 336 80 swifts fly high;
+#X msg 351 108 dogs walk slow;
+#X msg 363 141 please go go;
+#X text 153 152 what to match;
+#X text 54 8 nroute :: route if Nth argument is matched;
+#X text 135 24 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X connect 0 0 4 2;
+#X connect 3 0 4 1;
+#X connect 4 0 1 0;
+#X connect 4 1 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 1;
+#X connect 9 0 12 2;
+#X connect 12 0 10 0;
+#X connect 12 1 11 0;
+#X connect 13 0 12 1;
+#X connect 14 0 12 1;
+#X connect 15 0 12 0;
+#X connect 16 0 12 0;
+#X connect 17 0 12 0;
diff --git a/help/help-pitch.pd b/help/help-pitch.pd
new file mode 100644
index 0000000..781fd4c
--- /dev/null
+++ b/help/help-pitch.pd
@@ -0,0 +1,30 @@
+#N canvas 166 313 439 308 12;
+#X floatatom 83 266 5 0 0;
+#X obj 83 35 notein;
+#X floatatom 112 217 5 0 0;
+#X floatatom 127 191 5 0 0;
+#X floatatom 142 166 5 0 0;
+#X floatatom 24 33 5 0 0;
+#X symbolatom 97 242 7 0 0;
+#X text 139 267 MIDI note number;
+#X text 166 217 pitch class;
+#X text 181 191 interval to last note;
+#X text 197 166 register;
+#X text 153 33 pitch :: get info about pitch;
+#X text 169 243 note name (symbol);
+#X text 221 54 use creation argument to;
+#X text 221 71 set assumed first note;
+#X text 227 104 of the first interval );
+#X text 218 89 ( needed for calculation;
+#X obj 83 94 stripnote;
+#X obj 83 137 pitch 72;
+#X connect 1 0 17 0;
+#X connect 1 1 17 1;
+#X connect 5 0 18 0;
+#X connect 17 0 18 0;
+#X connect 17 1 18 1;
+#X connect 18 0 0 0;
+#X connect 18 1 6 0;
+#X connect 18 2 2 0;
+#X connect 18 3 3 0;
+#X connect 18 4 4 0;
diff --git a/help/help-plus.pd b/help/help-plus.pd
new file mode 100644
index 0000000..3a0e442
--- /dev/null
+++ b/help/help-plus.pd
@@ -0,0 +1,17 @@
+#N canvas 328 264 464 316 12;
+#X floatatom 54 217 5 0 0;
+#X floatatom 54 127 5 0 0;
+#X floatatom 107 127 5 0 0;
+#X text 133 204 use creation arguments to set initial;
+#X text 133 220 values for inlets;
+#X text 26 20 plus :: like '+' but calculates result;
+#X msg 23 83 bang;
+#X text 69 82 calculate and output result now;
+#X obj 54 172 plus 8 6 2;
+#X floatatom 161 127 5 0 0;
+#X text 91 40 whenever leftmost or second inlet is changed;
+#X connect 1 0 8 0;
+#X connect 2 0 8 1;
+#X connect 6 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 2;
diff --git a/help/help-poisson.pd b/help/help-poisson.pd
new file mode 100644
index 0000000..ab6fe4b
--- /dev/null
+++ b/help/help-poisson.pd
@@ -0,0 +1,12 @@
+#N canvas 438 222 487 308 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X floatatom 193 112 5 0 0;
+#X text 39 21 poisson :: Poisson distributed random numbers;
+#X obj 70 145 poisson 2.2;
+#X text 246 113 lambda - value that is most;
+#X text 317 132 likely to appear;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 4 0 1 0;
diff --git a/help/help-pulse.pd b/help/help-pulse.pd
new file mode 100644
index 0000000..6d1320a
--- /dev/null
+++ b/help/help-pulse.pd
@@ -0,0 +1,35 @@
+#N canvas 499 150 464 314 12;
+#X obj 23 223 pulse 120 1 4 0;
+#X floatatom 23 265 5 0 0;
+#X obj 138 265 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -258699
+-1;
+#X msg 23 23 0;
+#X msg 48 80 1;
+#X floatatom 51 122 5 0 0;
+#X floatatom 138 197 5 0 0;
+#X floatatom 109 172 5 0 0;
+#X floatatom 80 147 5 0 0;
+#X msg 39 53 bang;
+#X text 55 23 stop;
+#X obj 313 18 metro;
+#X text 80 79 start;
+#X text 242 44 originally written by;
+#X text 240 62 James McCartney for Max;
+#X text 74 267 count;
+#X text 168 18 pulse :: a better;
+#X text 104 123 quarter notes per minute;
+#X text 190 199 number of beats to play;
+#X text 189 214 before turning off;
+#X text 77 54 toggles on/off;
+#X text 131 148 interval at which a bang is output;
+#X text 160 174 notes to count (default = quarter);
+#X text 166 264 pulse turned off automagically;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 1;
+#X connect 6 0 0 4;
+#X connect 7 0 0 3;
+#X connect 8 0 0 2;
+#X connect 9 0 0 0;
diff --git a/help/help-remote.pd b/help/help-remote.pd
new file mode 100644
index 0000000..54a7caf
--- /dev/null
+++ b/help/help-remote.pd
@@ -0,0 +1,18 @@
+#N canvas 472 309 456 306 12;
+#X text 9 9 remote :: send data to any receive object;
+#X obj 32 224 remote;
+#X obj 216 222 receive bla;
+#X obj 321 222 receive foo;
+#X obj 216 250 print bla;
+#X obj 321 250 print foo;
+#X msg 32 104 bla 17.3 23;
+#X msg 76 183 foo 13 \, bla 4;
+#X text 148 75 use message: <name> <data>;
+#X text 253 91 with data of any type;
+#X text 89 26 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X msg 61 147 foo five is 2 more than 3;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X connect 11 0 1 0;
diff --git a/help/help-rhythm.pd b/help/help-rhythm.pd
new file mode 100644
index 0000000..bff970c
--- /dev/null
+++ b/help/help-rhythm.pd
@@ -0,0 +1,35 @@
+#N canvas 262 64 579 413 12;
+#X obj 25 273 rhythm 0;
+#X floatatom 25 356 5 0 0;
+#X obj 25 59 notein;
+#X obj 348 237 makenote 100 100;
+#X msg 348 209 60;
+#X floatatom 54 328 5 0 0;
+#X text 81 360 beats per minute;
+#X text 111 331 beats in milliseconds;
+#X msg 79 113 reset;
+#X msg 90 146 model 0;
+#X msg 96 175 model 1;
+#X text 158 147 Large and Kolen adaptation model;
+#X text 164 174 Toiviainen adaptation model;
+#X text 53 21 rhythm :: detects the beat of rhythmic patterns;
+#X text 134 39 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X text 134 56 based on code written by Rober Rowe and published;
+#X text 133 72 in 'Mashine musicianship' \, Massachusetts \, 2001;
+#X text 115 275 creation: rhythm <adaptation model>;
+#X obj 84 303 bng 20 100 10 0 empty empty empty 0 -6 0 8 -262144 -42246
+-1;
+#X text 115 304 beat pulse;
+#X text 132 114 reset all values \, forget rhythm and stop beat pulse
+;
+#X connect 0 0 1 0;
+#X connect 0 1 5 0;
+#X connect 0 2 18 0;
+#X connect 2 0 0 0;
+#X connect 2 1 0 1;
+#X connect 3 0 0 0;
+#X connect 3 1 0 1;
+#X connect 4 0 3 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
diff --git a/help/help-scale.pd b/help/help-scale.pd
new file mode 100644
index 0000000..816bda5
--- /dev/null
+++ b/help/help-scale.pd
@@ -0,0 +1,31 @@
+#N canvas 381 126 552 355 12;
+#X floatatom 27 277 8 0 0;
+#X floatatom 27 73 5 0 0;
+#X text 213 48 written by <olaf.matthes@gmx.de>;
+#X text 37 306 creation:;
+#X text 141 11 scale :: scale input from a certain input range;
+#X text 212 29 to lie between output boundaries;
+#X floatatom 56 131 5 0 0;
+#X floatatom 85 152 5 0 0;
+#X floatatom 115 173 5 0 0;
+#X floatatom 144 194 5 0 0;
+#X text 84 71 input value;
+#X text 106 278 scaled output value;
+#X text 111 130 in low;
+#X text 137 151 in high;
+#X text 171 172 out low;
+#X text 200 194 out high;
+#X text 57 104 creation arguments can be changed dynamically:;
+#X text 53 323 scale <in low> <in high> <out low> <out high> <log coeff>
+;
+#X obj 27 249 scale 0 9 100 255 0;
+#X floatatom 174 220 5 0 0;
+#X text 227 219 log coefficient;
+#X text 265 237 0 = linear 1 = log;
+#X connect 1 0 18 0;
+#X connect 6 0 18 1;
+#X connect 7 0 18 2;
+#X connect 8 0 18 3;
+#X connect 9 0 18 4;
+#X connect 18 0 0 0;
+#X connect 19 0 18 5;
diff --git a/help/help-score.pd b/help/help-score.pd
new file mode 100644
index 0000000..a049bab
--- /dev/null
+++ b/help/help-score.pd
@@ -0,0 +1,52 @@
+#N canvas 246 86 629 516 12;
+#X floatatom 30 301 5 0 0;
+#X obj 30 12 notein;
+#X obj 193 202 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 95 93 start;
+#X msg 104 118 stop;
+#X text 217 203 reset;
+#X text 145 92 start / stop score following;
+#X msg 111 146 start 4;
+#X text 176 146 start skipping first 4 notes;
+#X obj 193 286 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -258699
+-1;
+#X text 217 287 error;
+#X text 148 24 score :: score follower that tries to match incoming
+;
+#X text 221 41 MIDI data to a score stored in an array;
+#X text 219 57 outputs the index number of current position;
+#X obj 23 423 loadbang;
+#N canvas 0 0 450 300 graph2 0;
+#X array sco_array 25 float 1;
+#A 0 60 61 62 63 64 65 66 67 68 69 70 71 72 71 70 69 68 67 66 65 64
+63 62 61 60;
+#X coords 0 127 24 0 200 140 1;
+#X restore 402 361 graph;
+#X obj 30 235 score sco_array 2 300;
+#X msg 130 173 set sco_array;
+#X msg 23 449 \; sco_array resize 25 \; sco_array read examplescore.txt
+\;;
+#X text 250 174 set to array that contains the score;
+#X text 88 303 position on score;
+#X text 86 322 (x index of array);
+#X obj 30 356 tabread sco_array;
+#X floatatom 30 387 5 0 0;
+#X text 86 388 note from score;
+#X text 291 255 array: name of array containing score;
+#X text 235 234 USAGE: score <array> <skipitems> <skiptime>;
+#X text 292 272 skipitems: max. number of notes to skip;
+#X text 292 289 skip time: max. time [ms] to rewind;
+#X text 378 307 input data;
+#X connect 0 0 22 0;
+#X connect 1 0 16 0;
+#X connect 1 1 16 1;
+#X connect 2 0 16 2;
+#X connect 3 0 16 0;
+#X connect 4 0 16 0;
+#X connect 7 0 16 0;
+#X connect 14 0 18 0;
+#X connect 16 0 0 0;
+#X connect 16 1 9 0;
+#X connect 17 0 16 0;
+#X connect 22 0 23 0;
diff --git a/help/help-speedlim.pd b/help/help-speedlim.pd
new file mode 100644
index 0000000..2ef4f82
--- /dev/null
+++ b/help/help-speedlim.pd
@@ -0,0 +1,30 @@
+#N canvas 445 253 464 314 12;
+#X floatatom 38 54 5 0 0;
+#X floatatom 18 264 5 0 0;
+#X obj 38 141 speedlim 500;
+#X text 126 18 speedlim :: lets information through;
+#X text 222 37 only every N milliseconds;
+#X text 152 171 creation argument = time in ms;
+#X floatatom 129 116 5 0 0;
+#X text 184 116 time between outputs in ms;
+#X msg 49 82 bang;
+#X obj 121 207 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 121 236 timer;
+#X floatatom 121 262 5 0 0;
+#X text 175 262 this should never be less than;
+#X text 175 280 the creation argument of speedlim;
+#X obj 18 194 route f;
+#X obj 47 236 print;
+#X msg 95 82 this is speedlim;
+#X connect 0 0 2 0;
+#X connect 2 0 9 0;
+#X connect 2 0 14 0;
+#X connect 6 0 2 1;
+#X connect 8 0 2 0;
+#X connect 9 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 14 0 1 0;
+#X connect 14 1 15 0;
+#X connect 16 0 2 0;
diff --git a/help/help-step.pd b/help/help-step.pd
new file mode 100644
index 0000000..9197d01
--- /dev/null
+++ b/help/help-step.pd
@@ -0,0 +1,22 @@
+#N canvas 417 206 533 314 12;
+#X floatatom 33 229 5 0 0;
+#X text 72 7 step :: output sequence of numbers (similar to 'line')
+;
+#X text 138 25 written by Olaf Matthes (olaf.matthes@gmx.de);
+#X text 222 250 stepsize :: step between two numbers;
+#X msg 33 76 23 6000 2;
+#X msg 62 119 230;
+#X obj 101 282 line;
+#X text 98 117 send a single number to jump;
+#X text 121 77 send a triplet to step to a new value;
+#X text 22 282 see also:;
+#X msg 80 146 stop;
+#X text 127 147 "stop" message to stop output;
+#X text 121 92 <new value> <time> <step>;
+#X text 123 196 step <value> <stepsize>;
+#X text 221 234 value :: value to start with;
+#X obj 33 195 step 100 3;
+#X connect 4 0 15 0;
+#X connect 5 0 15 0;
+#X connect 10 0 15 0;
+#X connect 15 0 0 0;
diff --git a/help/help-subst.pd b/help/help-subst.pd
new file mode 100644
index 0000000..405ea20
--- /dev/null
+++ b/help/help-subst.pd
@@ -0,0 +1,72 @@
+#N canvas 249 69 784 504 12;
+#X obj 19 346 print;
+#X msg 143 272 bang;
+#X text 190 180 minimum order of substitution;
+#X msg 122 181 order 2;
+#X msg 19 118 72 68 67 64 69 71 77 75 70 73 74 78;
+#X floatatom 98 347 5 0 0;
+#X text 151 348 length of row;
+#X msg 138 241 intervall 4;
+#X obj 541 228 noteout;
+#N canvas 0 0 450 300 graph1 0;
+#X array array01 100 float 0;
+#X coords 0 127 99 0 200 140 1;
+#X restore 564 321 graph;
+#X obj 506 43 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 537 42 << switch playback on/off;
+#X obj 506 93 int 0;
+#X obj 558 93 + 1;
+#X text 27 19 subst :: self-similar substitution / diminuition of rows
+;
+#X text 87 307 [subst <order>];
+#X obj 506 146 sel 0;
+#X obj 98 374 s length;
+#X obj 541 120 r length;
+#X obj 541 173 tabread array01;
+#X msg 506 173 0;
+#X obj 506 67 metro 250;
+#X obj 541 201 makenote 100 250;
+#X obj 19 306 subst 2;
+#X text 99 35 play it and you'll never get a note repetition;
+#X msg 125 212 set array01;
+#N canvas 0 0 450 300 graph1 0;
+#X array array00 12 float 1;
+#A 0 72 68 67 64 69 71 77 75 70 73 74 78;
+#X coords 0 127 11 0 200 140 1;
+#X restore 291 321 graph;
+#X msg 118 146 load array00;
+#X text 222 211 set array for processing and output;
+#X obj 21 417 subst array00 3;
+#X text 295 464 THE INPUT;
+#X text 574 464 THE OUTPUT;
+#X text 315 119 send it a list;
+#X text 226 147 or load values from array;
+#X text 18 444 use creation arguments to set;
+#X text 18 458 name of output array and order;
+#X text 17 472 of substitution;
+#X text 99 55 written by Olaf Matthes <olaf.matthes@gmx.de>;
+#X text 244 241 substitute the Nth interval;
+#X text 187 272 substitute now \, choose interval by chance;
+#X connect 1 0 23 0;
+#X connect 3 0 23 0;
+#X connect 4 0 23 0;
+#X connect 5 0 17 0;
+#X connect 7 0 23 0;
+#X connect 10 0 21 0;
+#X connect 12 0 13 0;
+#X connect 12 0 16 0;
+#X connect 13 0 12 1;
+#X connect 16 0 20 0;
+#X connect 16 1 19 0;
+#X connect 18 0 16 1;
+#X connect 19 0 22 0;
+#X connect 20 0 12 1;
+#X connect 20 0 1 0;
+#X connect 21 0 12 0;
+#X connect 22 0 8 0;
+#X connect 22 1 8 1;
+#X connect 23 0 0 0;
+#X connect 23 1 5 0;
+#X connect 25 0 23 0;
+#X connect 27 0 23 0;
diff --git a/help/help-temperature.pd b/help/help-temperature.pd
new file mode 100644
index 0000000..64db2a7
--- /dev/null
+++ b/help/help-temperature.pd
@@ -0,0 +1,16 @@
+#N canvas 214 144 454 304 12;
+#X obj 45 139 temperature 500;
+#X floatatom 45 193 5 0 0;
+#X floatatom 45 91 5 0 0;
+#X text 11 10 temperature :: oputput number of input changes in N ms
+;
+#X text 132 27 written by <olaf.matthes@gmx.de>;
+#X floatatom 160 104 5 0 0;
+#X text 219 103 set new time interval;
+#X text 104 192 number of changes (i.e. the 'temperature');
+#X text 104 209 of the input during one time interval;
+#X msg 68 112 foo;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 5 0 0 1;
+#X connect 9 0 0 0;
diff --git a/help/help-tilt.pd b/help/help-tilt.pd
new file mode 100644
index 0000000..581f934
--- /dev/null
+++ b/help/help-tilt.pd
@@ -0,0 +1,26 @@
+#N canvas 245 222 562 330 12;
+#X floatatom 24 114 5 0 0;
+#X obj 54 293 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 153 227 5 0 0;
+#X text 210 228 interval;
+#X text 39 20 tilt :: meassure 'tilt' of input;
+#X text 226 186 trip point :: alert when exceeding;
+#X text 339 203 this value;
+#X text 215 128 low limit :: reset 'start tilt' in case;
+#X text 319 143 value is below this for a;
+#X text 319 160 longer time;
+#X text 184 80 high limit :: ignore chnages higher than this;
+#X text 163 56 tilt :: maximum value change within one interval;
+#X obj 54 250 tilt 0.78 100;
+#X msg 126 81 hi 230;
+#X msg 139 127 low 17.3;
+#X msg 139 186 trip 173;
+#X msg 100 55 tilt 25;
+#X connect 0 0 12 0;
+#X connect 2 0 12 1;
+#X connect 12 0 1 0;
+#X connect 13 0 12 0;
+#X connect 14 0 12 0;
+#X connect 15 0 12 0;
+#X connect 16 0 12 0;
diff --git a/help/help-triang.pd b/help/help-triang.pd
new file mode 100644
index 0000000..2a43020
--- /dev/null
+++ b/help/help-triang.pd
@@ -0,0 +1,9 @@
+#N canvas 370 195 483 304 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X obj 70 141 triang;
+#X text 19 20 triang :: triangularly distributed random numbers
+;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/help/help-velocity.pd b/help/help-velocity.pd
new file mode 100644
index 0000000..38f8f0c
--- /dev/null
+++ b/help/help-velocity.pd
@@ -0,0 +1,14 @@
+#N canvas 239 183 454 304 12;
+#X text 30 16 velocity :: get velocity of digits per second;
+#X obj 50 137 velocity;
+#X floatatom 50 72 5 0 0;
+#X floatatom 50 187 8 0 0;
+#X text 150 77 sending a float every second would;
+#X text 151 95 result in a velocity of 1 \, higher;
+#X text 151 114 rates produce higher velocities;
+#X msg 65 102 bang;
+#X text 151 148 originally written for Max by;
+#X text 151 164 Trond Lossius \, BEK;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 7 0 1 0;
diff --git a/help/help-weibull.pd b/help/help-weibull.pd
new file mode 100644
index 0000000..56eb3b1
--- /dev/null
+++ b/help/help-weibull.pd
@@ -0,0 +1,15 @@
+#N canvas 438 222 487 308 12;
+#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 70 192 5 0 0;
+#X floatatom 151 94 5 0 0;
+#X floatatom 233 116 5 0 0;
+#X obj 70 140 weibull 0.78 1.3;
+#X text 286 117 t;
+#X text 204 95 s;
+#X text 123 247 s and t must be greater than zero;
+#X text 39 21 weibull :: Weibull distributed random numbers;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 4 2;
+#X connect 4 0 1 0;