[PD-cvs] externals/maxlib/help automata.txt,1.3,1.4 examplescore.txt,1.3,1.4 help-allow.pd,1.2,1.3 help-arbran.pd,1.2,1.3 help-arraycopy.pd,1.2,1.3 help-average.pd,1.2,1.3 help-beat.pd,1.2,1.3 help-beta.pd,1.2,1.3 help-bilex.pd,1.2,1.3 help-borax.pd,1.2,1.3 help-cauchy.pd,1.2,1.3 help-chord.pd,1.2,1.3 help-delta.pd,1.2,1.3 help-deny.pd,1.2,1.3 help-dist.pd,1.2,1.3 help-divide.pd,1.2,1.3 help-divmod.pd,1.2,1.3 help-edge.pd,1.2,1.3 help-expo.pd,1.2,1.3 help-fifo.pd,1.2,1.3 help-gauss.pd,1.2,1.3 help-gestalt.pd,1.2,1.3 help-history.pd,1.2,1.3 help-ignore.pd,1.2,1.3 help-iso.pd,1.2,1.3 help-lifo.pd,1.2,1.3 help-limit.pd,1.2,1.3 help-linear.pd,1.2,1.3 help-listfifo.pd,1.2,1.3 help-listfunnel.pd,1.2,1.3 help-match.pd,1.2,1.3 help-maxlib.pd,1.4,1.5 help-minus.pd,1.2,1.3 help-mlife.pd,1.2,1.3 help-multi.pd,1.2,1.3 help-nchange.pd,1.2,1.3 help-netclient.pd,1.2,1.3 help-netdist.pd,1.2,1.3 help-netrec.pd,1.2,1.3 help-netserver.pd,1.2,1.3 help-nroute.pd,1.2,1.3 help-pitch.pd,1.2,1.3 help-plus.pd,1.2,1.3 help-poisson.pd,1.2,1.3 help-pulse.pd,1.2,1.3 help-remote.pd,1.3,1.4 help-rewrap.pd,1.2,1.3 help-rhythm.pd,1.2,1.3 help-scale.pd,1.2,1.3 help-score.pd,1.2,1.3 help-speedlim.pd,1.2,1.3 help-split.pd,1.2,1.3 help-step.pd,1.2,1.3 help-subst.pd,1.2,1.3 help-sync.pd,1.2,1.3 help-temperature.pd,1.2,1.3 help-tilt.pd,1.2,1.3 help-timebang.pd,1.2,1.3 help-triang.pd,1.2,1.3 help-unroute.pd,1.2,1.3 help-urn.pd,1.2,1.3 help-velocity.pd,1.2,1.3 help-weibull.pd,1.2,1.3 help-wrap.pd,1.2,1.3

Hans-Christoph Steiner eighthave at users.sourceforge.net
Sat Mar 20 06:56:31 CET 2004


Update of /cvsroot/pure-data/externals/maxlib/help
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2641/help

Added Files:
	automata.txt examplescore.txt help-allow.pd help-arbran.pd 
	help-arraycopy.pd help-average.pd help-beat.pd help-beta.pd 
	help-bilex.pd help-borax.pd help-cauchy.pd help-chord.pd 
	help-delta.pd help-deny.pd help-dist.pd help-divide.pd 
	help-divmod.pd help-edge.pd help-expo.pd help-fifo.pd 
	help-gauss.pd help-gestalt.pd help-history.pd help-ignore.pd 
	help-iso.pd help-lifo.pd help-limit.pd help-linear.pd 
	help-listfifo.pd help-listfunnel.pd help-match.pd 
	help-maxlib.pd help-minus.pd help-mlife.pd help-multi.pd 
	help-nchange.pd help-netclient.pd help-netdist.pd 
	help-netrec.pd help-netserver.pd help-nroute.pd help-pitch.pd 
	help-plus.pd help-poisson.pd help-pulse.pd help-remote.pd 
	help-rewrap.pd help-rhythm.pd help-scale.pd help-score.pd 
	help-speedlim.pd help-split.pd help-step.pd help-subst.pd 
	help-sync.pd help-temperature.pd help-tilt.pd help-timebang.pd 
	help-triang.pd help-unroute.pd help-urn.pd help-velocity.pd 
	help-weibull.pd help-wrap.pd 
Log Message:
things back to Olaf's 1.5.2

--- NEW FILE: help-divide.pd ---
#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;

--- NEW FILE: help-bilex.pd ---
#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;

--- NEW FILE: help-limit.pd ---
#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 at 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;

--- NEW FILE: help-netserver.pd ---
#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 at 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;

--- NEW FILE: help-lifo.pd ---
#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;

--- NEW FILE: help-delta.pd ---
#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;

--- NEW FILE: help-netclient.pd ---
#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 at 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;

--- NEW FILE: help-expo.pd ---
#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;

--- NEW FILE: help-rewrap.pd ---
#N canvas 328 32 564 467 12;
#X floatatom 27 304 8 0 0 0 - - -;
#X floatatom 27 73 5 0 0 0 - - -;
#X text 202 47 written by <olaf.matthes at gmx.de>;
#X floatatom 60 133 5 0 0 0 - - -;
#X floatatom 94 158 5 0 0 0 - - -;
#X text 84 71 input value;
#X text 57 102 creation arguments can be changed dynamically:;
#X text 35 341 creation arguments:;
#X text 115 132 lower limit;
#X text 146 157 upper limit;
#X floatatom 110 276 5 0 0 0 - - -;
#X text 36 358 wrap <lower limit> <upper limit>;
#X obj 27 249 rewrap 6 40;
#X text 200 27 into a range;
#X text 169 275 wrap period;
#X text 107 305 output;
#X text 122 11 rewrap :: wraps floats back and forth;
#X connect 1 0 12 0;
#X connect 3 0 12 1;
#X connect 4 0 12 2;
#X connect 12 0 0 0;
#X connect 12 1 10 0;

--- NEW FILE: automata.txt ---
[The following note originally appeared on the emusic-l mailing list.  It is
reprinted here with the author's permission]

>From xrjdm at FARSIDE.GSFC.NASA.GOV Wed Nov 23 11:26:39 1994
Date: Tue, 4 Oct 1994 15:09:23 -0500
From: Joe McMahon <xrjdm at FARSIDE.GSFC.NASA.GOV>
Reply to: Electronic Music Discussion List <EMUSIC-L at AMERICAN.EDU>
To: Multiple recipients of list EMUSIC-L <EMUSIC-L at 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)


--- NEW FILE: examplescore.txt ---
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
--- NEW FILE: help-deny.pd ---
#N canvas 358 305 556 310 12;
#X text 97 34 written by Olaf Matthes <olaf.matthes at gmx.de>;
#X msg 125 65 cat;
#X msg 147 97 dog;
#X msg 157 126 bird;
#X floatatom 82 269 5 0 0 0 - - -;
#X symbolatom 151 246 10 0 0 0 - - -;
#X obj 114 156 symbol \$1;
#X floatatom 40 81 5 0 0 0 - - -;
#X obj 82 217 route float symbol;
#X obj 82 189 deny 17 cat dog 23;
#X text 32 18 deny :: blocks 'denyed' floats or symbols;
#X connect 1 0 6 0;
#X connect 2 0 6 0;
#X connect 3 0 6 0;
#X connect 6 0 9 0;
#X connect 7 0 9 0;
#X connect 8 0 4 0;
#X connect 8 1 5 0;
#X connect 9 0 8 0;

--- NEW FILE: help-maxlib.pd ---
#N canvas 75 -12 1161 819 10;
#X obj 307 260 average;
#X obj 18 150 beat;
#X obj 18 175 borax;
#X obj 18 125 chord;
#X obj 14 588 dist;
#X obj 307 155 divide;
#X obj 307 129 divmod;
#X obj 656 148 fifo;
#X obj 307 286 history;
#X obj 403 577 ignore;
#X obj 403 552 iso;
#X obj 655 122 lifo;
#X obj 307 312 match;
#X obj 307 180 minus;
#X obj 660 343 mlife;
#X obj 307 207 multi;
#X obj 14 613 netdist;
#X obj 18 251 pitch;
#X obj 307 234 plus;
#X obj 403 499 pulse;
#X obj 14 637 remote;
#X obj 18 200 rhythm;
#X obj 18 225 score array01;
#X obj 403 525 speedlim;
#X obj 403 603 step;
#X obj 660 318 subst;
#X text 140 44 written by Olaf Matthes <olaf.matthes at gmx.de>;
#X text 71 125 chord detection;
#X text 68 150 beat tracking;
#X text 77 201 beat detection;
#X text 72 176 music analysis;
#X text 135 225 score following;
#X text 72 251 pitch information;
#X text 19 94 MUSIC / MIDI ANALYSIS;
#X text 310 91 MATH;
#X text 374 130 calculate / and %;
#X text 372 155 / for several inputs;
#X text 366 235 + for several inputs;
#X text 366 207 * for several inputs;
#X text 370 181 - for several inputs;
#X text 378 259 average of last N values;
#X text 379 285 average over last N seconds;
#X text 362 312 match input to list of numbers;
#X text 403 473 TIME;
#X text 480 526 lets input through every N milliseconds;
#X text 442 553 play sequence of MIDI notes;
#X text 464 578 ignore too fast changing input;
#X text 62 587 send to list of receive objects;
#X text 83 611 same for netreceive;
#X text 73 636 send to one receive object;
#X text 654 95 BUFFER;
#X text 450 605 a line object that steps;
#X text 659 294 OTHER / EXPERIMENTAL;
#X text 717 317 self-similar substitution;
#X text 716 343 cellular automaton;
#X obj 307 338 scale;
#X text 458 499 a 'better' metro;
#X obj 403 629 history;
#X obj 403 655 velocity;
#X text 472 629 average over last N milliseconds;
#X text 479 655 velocity of input in digits per second;
#X obj 14 661 netrec;
#X text 73 662 netreceive with extra info about sender;
#X obj 307 364 delta;
#X text 139 61 download at http://www.akustische-kunst.org/puredata/maxlib
;
#X obj 656 173 listfifo;
#X text 734 172 first in first out for lists;
#X text 703 147 first in first out for floats;
#X text 700 122 last in first out for floats;
#X obj 402 681 sync;
#X text 447 683 extended trigger object;
#X text 361 338 scale input to output range;
#X text 12 565 (REMOTE)CONTROL;
#X obj 15 686 netserver;
#X obj 15 713 netclient;
#X text 102 691 bidirectional communication;
#X text 111 706 (client / server based);
#X obj 307 392 wrap;
#X obj 307 419 rewrap;
#X text 353 392 warp a number in a range;
#X text 370 420 warp it back and forth;
#X text 361 364 calculate 1st or 2nd order diff.;
#X text 660 374 RANDOM;
#X obj 660 398 gauss;
#X obj 660 423 poisson;
#X obj 726 398 linear;
#X obj 726 423 bilex;
#X obj 796 397 expo;
#X obj 845 397 beta;
#X obj 894 398 cauchy;
#X obj 797 424 arbran array01 array02;
#X obj 18 278 gestalt;
#X obj 18 303 edge;
#X text 66 307 detect rising/falling edge;
#X text 84 278 'gestalt' of music;
#X obj 659 452 urn;
#X text 692 452 urn selection model;
#X obj 403 709 timebang;
#X text 482 709 send a bang at given time of day;
#X obj 15 390 split;
#X obj 15 439 unroute;
#X text 81 440 opposit to route;
#X text 74 392 split according to range;
#X obj 15 463 limit;
#X text 63 464 limiter for floats;
#X obj 15 415 nroute;
#X text 80 414 r. according to Nth elem.;
#X text 24 363 ROUTING / CHECKING;
#X obj 402 735 pong;
#X obj 18 330 tilt;
#X obj 402 760 temperature;
#X text 500 761 amount of input changes per time;
#X text 448 736 a bouncing ball model;
#X text 66 333 meassure tilt of input;
#X obj 16 489 listfunnel;
#X text 107 490 Max's funnel for lists;
#X text 30 26 maxlib 1.5 :: Music Analysis eXtensions LIBrary;
#X obj 656 201 arraycopy;
#X text 741 202 copy from one array to another;
#X obj 17 525 nchange s;
#X text 89 526 change that exepts any kind of input;

--- NEW FILE: help-ignore.pd ---
#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;

--- NEW FILE: help-average.pd ---
#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;

--- NEW FILE: help-beta.pd ---
#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;

--- NEW FILE: help-sync.pd ---
#N canvas 142 53 830 657 12;
#X text 78 16 sync :: extended trigger object based;
#X text 143 35 on sync from jMax;
#X floatatom 18 485 5 0 0 0 - - -;
#X floatatom 39 457 5 0 0 0 - - -;
#X floatatom 61 433 5 0 0 0 - - -;
#X floatatom 18 124 5 0 0 0 - - -;
#X floatatom 39 152 5 0 0 0 - - -;
#X floatatom 61 177 5 0 0 0 - - -;
#X msg 205 143 mode any;
#X msg 187 116 mode all;
#X msg 216 169 mode left;
#X msg 229 198 mode right;
#X msg 243 226 mode none;
#X text 295 142 any input triggers the outputs;
#X text 305 169 trigger output when left inlet changes;
#X text 325 199 trigger output when right inlet changes;
#X text 333 228 never trigger output;
#X obj 18 404 sync 3;
#X text 146 415 the creation argument determines the number of inlets
/ outlets sync will have.;
#X obj 149 462 sync 23 17.3;
#X text 147 490 alternatively it's possible to specify the number of
inlets / outlets by giving initial values for every outlet. these values
will be output in case no input has been received in the corresponding
inlet until the time when the output is triggered.;
#X text 274 116 all inputs have to change to trigger output (default)
;
#X msg 223 270 trigger 2;
#X msg 230 335 require 1;
#X text 324 320 additionally another input can be defined to be required
for the trigger event to take place. i.e. the second inlet (inlet #1)
from the left must have been changed since the last triggering occured.
;
#X text 324 265 use this message to make the n-th input (counting from
0 to <number of inputs - 1>) a triggering input. only one input at
a time can be triggering!;
#X text 212 90 the easy way:;
#X msg 228 299 trigger 1;
#X connect 5 0 17 0;
#X connect 6 0 17 1;
#X connect 7 0 17 2;
#X connect 8 0 17 0;
#X connect 9 0 17 0;
#X connect 10 0 17 0;
#X connect 11 0 17 0;
#X connect 12 0 17 0;
#X connect 17 0 2 0;
#X connect 17 1 3 0;
#X connect 17 2 4 0;
#X connect 22 0 17 0;
#X connect 23 0 17 0;
#X connect 27 0 17 0;

--- NEW FILE: help-urn.pd ---
#N canvas 0 0 462 312 12;
#X obj 99 182 urn 8;
#X msg 157 112 clear;
#X floatatom 99 241 5 0 0 0 - - -;
#X msg 99 85 bang;
#X obj 189 241 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 144 85 choose next number;
#X text 209 113 clear / refill urn;
#X floatatom 149 150 5 0 0 0 - - -;
#X text 201 150 change number of items in urn;
#X text 69 30 urn :: urn selection model;
#X text 221 241 bang if urn is empty;
#X connect 0 0 2 0;
#X connect 0 1 4 0;
#X connect 1 0 0 0;
#X connect 3 0 0 0;
#X connect 7 0 0 1;

--- NEW FILE: help-rhythm.pd ---
#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 at 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;

--- NEW FILE: help-borax.pd ---
#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;

--- NEW FILE: help-score.pd ---
#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;

--- NEW FILE: help-iso.pd ---
#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;

--- NEW FILE: help-speedlim.pd ---
#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;

--- NEW FILE: help-netdist.pd ---
#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;

--- NEW FILE: help-step.pd ---
#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 at 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;

--- NEW FILE: help-unroute.pd ---
#N canvas 413 157 539 407 12;
#X obj 64 343 print;
#X msg 64 89 1 \$1;
#X msg 112 110 2 \$1;
#X msg 163 116 3 \$1;
#X floatatom 64 62 5 0 0;
#X floatatom 112 85 5 0 0;
#X floatatom 163 91 5 0 0;
#X obj 64 232 route 1 2 3 4;
#X obj 64 314 unroute one 2 three 4;
#X text 52 13 unroute :: merges all inputs into one output;
#X text 138 30 and prepends an identifier;
#X text 138 47 written by Olaf Matthes <olaf.matthes at gmx.de>;
#X msg 194 170 4 this came through 4;
#X msg 209 196 3 drei;
#X msg 174 146 4 25 467 23.6;
#X connect 1 0 7 0;
#X connect 2 0 7 0;
#X connect 3 0 7 0;
#X connect 4 0 1 0;
#X connect 5 0 2 0;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 7 1 8 1;
#X connect 7 2 8 2;
#X connect 7 3 8 3;
#X connect 8 0 0 0;
#X connect 12 0 7 0;
#X connect 13 0 7 0;
#X connect 14 0 7 0;

--- NEW FILE: help-subst.pd ---
#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 at 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;

--- NEW FILE: help-velocity.pd ---
#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;

--- NEW FILE: help-dist.pd ---
#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 at 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;

--- NEW FILE: help-weibull.pd ---
#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;

--- NEW FILE: help-listfunnel.pd ---
#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;

--- NEW FILE: help-divmod.pd ---
#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;

--- NEW FILE: help-poisson.pd ---
#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;

--- NEW FILE: help-beat.pd ---
#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;

--- NEW FILE: help-arraycopy.pd ---
#N canvas 140 43 934 584 12;
#N canvas 0 0 450 300 graph1 0;
#X array array1 20 float 1;
#A 0 0 0 0.342857 0.542857 0.6 -0.442857 -0.485714 0.0142858 -0.428571
-0.114286 0.0857143 -0.2 -0.214285 0.314285 -0.157143 -0.314285 -0.142857
-0.0428571 0.114286 -0.685713;
#X coords 0 1 19 -1 200 140 1;
#X restore 680 27 graph;
#N canvas 0 0 450 300 graph2 0;
#X array array2 20 float 1;
#A 0 -0.214286 -0.171429 0.1 0.614286 0.757143 0.757143 0.542857 0.2
-0.0285714 -0.271429 -0.414286 -0.514286 -0.528571 -0.485714 -0.371429
-0.157143 0.214286 0.557143 0.714286 0.757143;
#X coords 0 1 19 -1 200 140 1;
#X restore 681 196 graph;
#N canvas 0 0 450 300 graph3 0;
#X array array3 20 float 1;
#A 0 1.86265e-009 1.86265e-009 1.86265e-009 1.86265e-009 1.86265e-009
-0.0142857 -0.0142857 -0.0142857 -0.0142857 -0.0142857 -0.0142857 -0.0142857
-0.0142857 -0.0285714 -0.0285714 -0.0285714 -0.0285714 -0.0142857 -0.0142857
-0.0142857;
#X coords 0 1 19 -1 200 140 1;
#X restore 680 371 graph;
#X obj 22 500 arraycopy array3;
#X text 339 402 set the destination array;
#X text 41 1 arraycopy :: copy data from one array to another;
#X text 146 22 written by Olaf Matthes <olaf.matthes at gmx.de>;
#X msg 22 109 copy array1;
#X msg 43 139 copy array1 10 15;
#X text 131 109 copy the whole array;
#X text 200 140 copy from value 10 to 15;
#X msg 60 169 copy array1 10 +5;
#X text 217 170 copy from value 10 the next 5 values;
#X msg 85 359 print \$1;
#X obj 85 333 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X text 116 334 switch console printout on/off;
#X text 281 202 copy from value 10 to 15;
#X msg 73 201 copy array1 10 15 array2;
#X text 280 222 into array2 (starting at 0);
#X text 322 251 copy from value 10 to 15;
#X text 321 271 into array2 starting at 4;
#X msg 92 250 copy array1 10 15 array2 4;
#X msg 368 454 array3;
#X msg 86 414 bang;
#X text 137 412 perform last copy;
#X text 137 429 operation again;
#X text 20 537 creation argument: initial destination array to copy
data to;
#X obj 200 502 symbol;
#X msg 339 428 array2;
#X connect 7 0 3 0;
#X connect 8 0 3 0;
#X connect 11 0 3 0;
#X connect 13 0 3 0;
#X connect 14 0 13 0;
#X connect 17 0 3 0;
#X connect 21 0 3 0;
#X connect 22 0 27 0;
#X connect 23 0 3 0;
#X connect 27 0 3 1;
#X connect 28 0 27 0;

--- NEW FILE: help-edge.pd ---
#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 at 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;

--- NEW FILE: help-gestalt.pd ---
#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 at 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;

--- NEW FILE: help-triang.pd ---
#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;

--- NEW FILE: help-pulse.pd ---
#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;

--- NEW FILE: help-cauchy.pd ---
#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;

--- NEW FILE: help-scale.pd ---
#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 at 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;

--- NEW FILE: help-gauss.pd ---
#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;

--- NEW FILE: help-listfifo.pd ---
#N canvas 476 153 456 307 12;
#X floatatom 104 231 5 0 0 0 - - -;
#X msg 38 46 bang;
#X text 146 152 fifo <size>;
#X obj 38 152 listfifo 10;
#X text 42 14 listfifo :: first in first out buffer for lists;
#X obj 104 187 unpack f f;
#X floatatom 179 230 5 0 0 0 - - -;
#X obj 38 263 print listfifo_output;
#X text 204 185 output of listfifo;
#X msg 66 76 17.3 23;
#X obj 166 101 pack f f;
#X floatatom 166 70 5 0 0 0 - - -;
#X floatatom 225 70 5 0 0 0 - - -;
#X msg 84 125 \$1 \$2;
#X text 83 46 hit to get next number out of the fifo;
#X connect 1 0 3 0;
#X connect 3 0 5 0;
#X connect 3 0 7 0;
#X connect 5 0 0 0;
#X connect 5 1 6 0;
#X connect 9 0 3 0;
#X connect 10 0 13 0;
#X connect 11 0 10 0;
#X connect 12 0 10 1;
#X connect 13 0 3 0;

--- NEW FILE: help-minus.pd ---
#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;

--- NEW FILE: help-remote.pd ---
#N canvas 472 309 567 308 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 at gmx.de>;
#X msg 61 147 foo five is 2 more than 3;
#X msg 294 146 \; bla 17.3 23;
#X text 296 168 this does the same...;
#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;

--- NEW FILE: help-allow.pd ---
#N canvas 358 305 554 308 12;
#X text 24 17 allow :: lets only 'allowed' floats or symbols through
;
#X text 97 34 written by Olaf Matthes <olaf.matthes at gmx.de>;
#X msg 125 65 cat;
#X msg 147 97 dog;
#X msg 157 126 bird;
#X floatatom 82 269 5 0 0 0 - - -;
#X symbolatom 151 246 10 0 0 0 - - -;
#X obj 114 156 symbol \$1;
#X floatatom 40 81 5 0 0 0 - - -;
#X obj 82 217 route float symbol;
#X obj 82 189 allow 17 cat dog 23;
#X connect 2 0 7 0;
#X connect 3 0 7 0;
#X connect 4 0 7 0;
#X connect 7 0 10 0;
#X connect 8 0 10 0;
#X connect 9 0 5 0;
#X connect 9 1 6 0;
#X connect 10 0 9 0;

--- NEW FILE: help-temperature.pd ---
#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 at 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;

--- NEW FILE: help-chord.pd ---
#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 at 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;

--- NEW FILE: help-fifo.pd ---
#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;

--- NEW FILE: help-netrec.pd ---
#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;

--- NEW FILE: help-linear.pd ---
#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;

--- NEW FILE: help-plus.pd ---
#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;

--- NEW FILE: help-nchange.pd ---
#N canvas 271 238 519 310 12;
#X obj 30 213 nchange f;
#X obj 371 215 nchange l;
#X msg 367 144 bla foo dog;
#X msg 387 169 bla foo 23;
#X msg 348 121 bla foo dog 17;
#X obj 200 214 nchange s;
#X obj 200 185 symbol;
#X msg 200 126 dog;
#X msg 216 153 cat;
#X obj 162 15 change;
#X obj 371 253 print list;
#X obj 200 255 print symbol;
#X msg 30 152 0;
#X msg 43 180 1;
#X obj 30 257 print float;
#X text 100 34 written by Olaf Matthes <olaf.matthes at gmx.de>;
#X text 12 15 nchange :: a 'new';
#X text 22 77 The creation argument specifies whether nchange works
for floats \, symbols or lists.;
#X connect 0 0 14 0;
#X connect 1 0 10 0;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 11 0;
#X connect 6 0 5 0;
#X connect 7 0 6 0;
#X connect 8 0 6 0;
#X connect 12 0 0 0;
#X connect 13 0 0 0;

--- NEW FILE: help-tilt.pd ---
#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;

--- NEW FILE: help-nroute.pd ---
#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 at 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;

--- NEW FILE: help-mlife.pd ---
#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;

--- NEW FILE: help-match.pd ---
#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;

--- NEW FILE: help-arbran.pd ---
#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;

--- NEW FILE: help-timebang.pd ---
#N canvas 207 138 549 342 12;
#X obj 29 242 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 29 295 print good morning;
#X obj 29 202 timebang 7 10 13 19 47 50;
#X obj 224 235 print good night;
#X text 32 13 timebang :: send out bangs at given times of day;
#X text 130 34 written by Olaf Matthes <olaf.matthes at gmx.de>;
#X text 31 119 creation arguments: triples of hour minute and second
for;
#X text 191 137 the times of day you want a bang to occur;
#X text 191 156 each time will get it's own outlet;
#X text 184 297 this gets banged at 7:10:13 in the morning;
#X text 224 257 this gets banged at 19:47:50;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 2 1 3 0;

--- NEW FILE: help-wrap.pd ---
#N canvas 328 32 562 465 12;
#X floatatom 27 304 8 0 0 0 - - -;
#X floatatom 27 73 5 0 0 0 - - -;
#X text 187 26 written by <olaf.matthes at gmx.de>;
#X floatatom 60 133 5 0 0 0 - - -;
#X floatatom 94 158 5 0 0 0 - - -;
#X text 84 71 input value;
#X text 57 102 creation arguments can be changed dynamically:;
#X text 35 341 creation arguments:;
#X text 115 132 lower limit;
#X text 146 157 upper limit;
#X floatatom 94 277 5 0 0 0 - - -;
#X obj 27 249 wrap 6 40;
#X text 36 358 wrap <lower limit> <upper limit>;
#X text 106 305 floats 'in range';
#X text 122 11 wrap :: wrap floats into a range;
#X text 153 276 wrap periods;
#X connect 1 0 11 0;
#X connect 3 0 11 1;
#X connect 4 0 11 2;
#X connect 11 0 0 0;
#X connect 11 1 10 0;

--- NEW FILE: help-multi.pd ---
#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;

--- NEW FILE: help-pitch.pd ---
#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;

--- NEW FILE: help-split.pd ---
#N canvas 328 32 560 463 12;
#X floatatom 27 304 8 0 0 0 - - -;
#X floatatom 27 73 5 0 0 0 - - -;
#X text 196 28 written by <olaf.matthes at gmx.de>;
#X floatatom 56 131 5 0 0 0 - - -;
#X floatatom 85 152 5 0 0 0 - - -;
#X text 84 71 input value;
#X text 57 104 creation arguments can be changed dynamically:;
#X text 35 341 creation arguments:;
#X obj 27 249 split 6 40;
#X text 111 130 lower limit;
#X text 137 151 upper limit;
#X text 35 378 All floats that fall below the lower limit or above
the upper limit get routed to the 2nd outlet.;
#X text 36 358 split <lower limit> <upper limit>;
#X floatatom 102 276 5 0 0 0 - - -;
#X text 154 276 floats 'out of range';
#X text 122 11 split :: split incoming floats according to value;
#X text 106 305 floats 'in range' (including borders!);
#X connect 1 0 8 0;
#X connect 3 0 8 1;
#X connect 4 0 8 2;
#X connect 8 0 0 0;
#X connect 8 1 13 0;

--- NEW FILE: help-history.pd ---
#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;





More information about the Pd-cvs mailing list