aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/fractal-tools.pd27
-rw-r--r--examples/loop.pd43
-rw-r--r--examples/martin-test-help.pd92
-rw-r--r--examples/popcorn-test-help.pd62
-rw-r--r--examples/quaruptwo-test-help.pd69
-rw-r--r--examples/readme-frac-format.pd22
-rw-r--r--examples/readme-fractals.pd54
-rw-r--r--examples/readme-gen-fractal.pd6
-rw-r--r--examples/readme-lyapunov.pd16
-rw-r--r--examples/readme-operation.pd34
-rw-r--r--examples/readme-parameter-ranges.pd23
-rw-r--r--examples/readme-searching.pd101
-rw-r--r--examples/search-tools.pd186
13 files changed, 735 insertions, 0 deletions
diff --git a/examples/fractal-tools.pd b/examples/fractal-tools.pd
new file mode 100644
index 0000000..2170d6a
--- /dev/null
+++ b/examples/fractal-tools.pd
@@ -0,0 +1,27 @@
+#N canvas 0 22 454 304 10;
+#X obj 27 252 outlet;
+#X msg 149 80 reset;
+#X msg 158 101 show;
+#X msg 167 122 param;
+#X msg 175 143 lyapunov -100 100 1000;
+#X msg 183 164 elyapunov;
+#X msg 192 186 constrain;
+#X msg 198 208 search;
+#X obj 27 23 inlet;
+#N canvas 0 22 454 304 iterator-tools 0;
+#X obj 17 264 outlet;
+#X text 17 19 This abstraction is intended to be used to iterate over
+the parameter space. Repeatedly performs the following:;
+#X text 46 65 1 'param' to set a centerpoint around which to search
+;
+#X text 46 80 2 'constrain <percent>' to limit the search area;
+#X text 46 95 3 'search' to find a fractal within the area;
+#X restore 48 53 pd iterator-tools;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
diff --git a/examples/loop.pd b/examples/loop.pd
new file mode 100644
index 0000000..19896ab
--- /dev/null
+++ b/examples/loop.pd
@@ -0,0 +1,43 @@
+#N canvas 640 438 490 340 10;
+#X obj 52 26 inlet;
+#X obj 93 26 inlet;
+#X obj 134 26 inlet;
+#X obj 52 262 outlet;
+#X obj 52 44 route bang float;
+#X obj 74 118 f;
+#X obj 74 136 -;
+#X obj 74 154 /;
+#X obj 74 172 i;
+#X obj 74 190 + 1;
+#X obj 52 208 f;
+#X obj 52 226 until;
+#X obj 52 244 f;
+#X obj 79 244 +;
+#X obj 96 99 f;
+#X obj 52 62 t b b b;
+#X obj 130 262 outlet;
+#X obj 74 81 t b f;
+#X connect 0 0 4 0;
+#X connect 1 0 5 1;
+#X connect 2 0 13 1;
+#X connect 2 0 7 1;
+#X connect 4 0 15 0;
+#X connect 4 1 17 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 1;
+#X connect 9 0 16 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 12 0 3 0;
+#X connect 13 0 12 1;
+#X connect 14 0 12 1;
+#X connect 15 0 10 0;
+#X connect 15 1 5 0;
+#X connect 15 2 14 0;
+#X connect 17 0 5 0;
+#X connect 17 1 14 1;
+#X connect 17 1 6 1;
diff --git a/examples/martin-test-help.pd b/examples/martin-test-help.pd
new file mode 100644
index 0000000..b8f294a
--- /dev/null
+++ b/examples/martin-test-help.pd
@@ -0,0 +1,92 @@
+#N canvas 437 54 668 669 10;
+#X obj 35 179 tgl 15 0 empty empty empty 0 -6 32 8 -262144 -1 -1 0
+1;
+#X floatatom 86 180 5 0 0 0 - - -;
+#X text 81 219 Reset To Initial Conditions;
+#X text 94 261 Modify Parameters;
+#X msg 80 236 reset 0.1 0.1;
+#X floatatom 59 444 10 0 0 0 Y - -;
+#X floatatom 32 464 10 0 0 0 X - -;
+#X text 19 50 (This attractor is not continuous);
+#X text 21 19 Latoocarfian Attractor (from Cliff Pickover);
+#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003
+;
+#X obj 35 196 metro 50;
+#X obj 14 197 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X obj 25 83 readme-fractals;
+#X msg 98 307 search;
+#X obj 34 392 martin;
+#X msg 89 282 param 1;
+#X msg 113 330 show;
+#X msg 380 144 1000;
+#X obj 336 202 until;
+#X obj 279 384 route show search invalid;
+#X obj 335 441 print search;
+#X obj 279 460 print show;
+#X obj 392 422 print invalid;
+#X obj 449 403 print somethingelse;
+#X msg 346 115 100;
+#X msg 311 141 10;
+#X msg 309 169 1;
+#X obj 474 625 qlist;
+#X msg 491 567 print;
+#X msg 484 547 clear;
+#X msg 474 527 rewind;
+#N canvas 0 22 458 308 search 1;
+#X floatatom 187 89 5 0 0 0 - - -;
+#X obj 142 50 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X obj 147 73 loop;
+#X floatatom 186 15 5 0 0 0 - - -;
+#X floatatom 192 31 5 0 0 0 - - -;
+#X floatatom 198 47 5 0 0 0 - - -;
+#X obj 31 259 outlet;
+#X msg 48 167 param \$1;
+#X msg 65 192 constrain 0.01;
+#X obj 77 121 t b b f;
+#X msg 82 218 search;
+#X connect 1 0 2 0;
+#X connect 2 0 9 0;
+#X connect 2 1 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
+#X connect 5 0 2 2;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X connect 9 0 10 0;
+#X connect 9 1 8 0;
+#X connect 9 2 7 0;
+#X connect 10 0 6 0;
+#X restore 45 119 pd search;
+#X obj 52 146 print sit;
+#X msg 136 357 lyapunov 0 10 100;
+#X msg 465 504 add martin \$1 \$3 \$6;
+#X connect 0 0 10 0;
+#X connect 1 0 10 1;
+#X connect 4 0 14 0;
+#X connect 10 0 14 0;
+#X connect 11 0 14 0;
+#X connect 13 0 14 0;
+#X connect 14 0 6 0;
+#X connect 14 1 5 0;
+#X connect 14 2 19 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 13 0;
+#X connect 19 0 21 0;
+#X connect 19 1 20 0;
+#X connect 19 1 34 0;
+#X connect 19 2 22 0;
+#X connect 19 3 23 0;
+#X connect 24 0 18 0;
+#X connect 25 0 18 0;
+#X connect 26 0 18 0;
+#X connect 28 0 27 0;
+#X connect 29 0 27 0;
+#X connect 30 0 27 0;
+#X connect 31 0 32 0;
+#X connect 31 0 14 0;
+#X connect 33 0 14 0;
+#X connect 34 0 27 0;
diff --git a/examples/popcorn-test-help.pd b/examples/popcorn-test-help.pd
new file mode 100644
index 0000000..cbfdc4b
--- /dev/null
+++ b/examples/popcorn-test-help.pd
@@ -0,0 +1,62 @@
+#N canvas 575 260 589 492 10;
+#X obj 43 134 tgl 15 0 empty empty empty 0 -6 160 8 -262144 -1 -1 0
+1;
+#X floatatom 94 135 5 0 0 0 - - -;
+#X text 79 201 Reset To Initial Conditions;
+#X text 99 246 Modify Parameters;
+#X msg 76 184 reset 0.1 0.1;
+#X floatatom 131 384 10 0 0 0 Y - -;
+#X floatatom 43 384 10 0 0 0 X - -;
+#X text 19 50 (This attractor is not continuous);
+#X text 21 19 Latoocarfian Attractor (from Cliff Pickover);
+#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003
+;
+#X obj 43 151 metro 50;
+#X obj 13 150 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X obj 25 83 readme-fractals;
+#X msg 101 266 search;
+#X obj 212 381 print;
+#X msg 113 294 show;
+#X msg 95 226 param 2.35155;
+#X obj 43 347 popcorn 0.1 0 2.35155;
+#N canvas 83 103 466 316 search 1;
+#X floatatom 187 89 5 0 0 0 - - -;
+#X obj 142 50 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X obj 147 73 loop;
+#X floatatom 186 15 5 0 0 0 - - -;
+#X floatatom 192 31 5 0 0 0 - - -;
+#X floatatom 198 47 5 0 0 0 - - -;
+#X obj 31 259 outlet;
+#X msg 48 167 param \$1;
+#X obj 77 121 t b b f;
+#X msg 82 218 search;
+#X msg 65 192 constrain 0.001;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
+#X connect 5 0 2 2;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 8 1 10 0;
+#X connect 8 2 7 0;
+#X connect 9 0 6 0;
+#X connect 10 0 6 0;
+#X restore 229 286 pd search;
+#X obj 236 313 print sit;
+#X connect 0 0 10 0;
+#X connect 1 0 10 1;
+#X connect 4 0 17 0;
+#X connect 10 0 17 0;
+#X connect 11 0 17 0;
+#X connect 13 0 17 0;
+#X connect 15 0 17 0;
+#X connect 16 0 17 0;
+#X connect 17 0 6 0;
+#X connect 17 1 5 0;
+#X connect 17 2 14 0;
+#X connect 18 0 19 0;
+#X connect 18 0 17 0;
diff --git a/examples/quaruptwo-test-help.pd b/examples/quaruptwo-test-help.pd
new file mode 100644
index 0000000..4fcc159
--- /dev/null
+++ b/examples/quaruptwo-test-help.pd
@@ -0,0 +1,69 @@
+#N canvas 559 82 589 492 10;
+#X obj 43 134 tgl 15 0 empty empty empty 0 -6 160 8 -262144 -1 -1 0
+1;
+#X floatatom 94 135 5 0 0 0 - - -;
+#X text 91 208 Reset To Initial Conditions;
+#X text 114 281 Modify Parameters;
+#X floatatom 197 399 10 0 0 0 Y - -;
+#X floatatom 43 399 10 0 0 0 X - -;
+#X text 19 50 (This attractor is not continuous);
+#X text 20 34 Chaos PD Externals - Copyright Michael McGonagle 2003
+;
+#X obj 43 151 metro 50;
+#X obj 18 150 bng 15 250 50 0 empty empty empty 0 -6 160 8 -262144
+-1 -1;
+#X obj 25 83 readme-fractals;
+#X msg 117 303 search;
+#X obj 327 394 print;
+#X text 21 19 QuadrupTwo Attractor;
+#X msg 111 243 param 0 1 2;
+#X msg 177 335 show;
+#X msg 88 191 reset;
+#N canvas 0 22 470 320 search 0;
+#X floatatom 187 89 5 0 0 0 - - -;
+#X obj 142 50 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X obj 147 73 loop;
+#X floatatom 186 15 5 0 0 0 - - -;
+#X floatatom 192 31 5 0 0 0 - - -;
+#X floatatom 198 47 5 0 0 0 - - -;
+#X obj 31 259 outlet;
+#X obj 77 121 t b b f;
+#X msg 82 218 search;
+#X msg 48 167 param 34 1 \$1;
+#X msg 65 192 constrain 0.05;
+#X msg 190 149 constrain;
+#X msg 238 268 elyapunov;
+#X msg 198 198 constrain 0 100 0 2 0 100;
+#X msg 218 228 lyapunov 0 10 1000;
+#X connect 1 0 2 0;
+#X connect 2 0 7 0;
+#X connect 2 1 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
+#X connect 5 0 2 2;
+#X connect 7 0 8 0;
+#X connect 7 2 9 0;
+#X connect 8 0 6 0;
+#X connect 9 0 6 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X connect 12 0 6 0;
+#X connect 13 0 6 0;
+#X connect 14 0 6 0;
+#X restore 165 96 pd search;
+#X obj 172 123 print sit;
+#X obj 43 363 quadruptwo 0.1 0.1 34 1 5;
+#X connect 0 0 8 0;
+#X connect 1 0 8 1;
+#X connect 8 0 19 0;
+#X connect 9 0 19 0;
+#X connect 11 0 19 0;
+#X connect 14 0 19 0;
+#X connect 15 0 19 0;
+#X connect 16 0 19 0;
+#X connect 17 0 18 0;
+#X connect 17 0 19 0;
+#X connect 19 0 5 0;
+#X connect 19 1 4 0;
+#X connect 19 2 12 0;
diff --git a/examples/readme-frac-format.pd b/examples/readme-frac-format.pd
new file mode 100644
index 0000000..950f56c
--- /dev/null
+++ b/examples/readme-frac-format.pd
@@ -0,0 +1,22 @@
+#N canvas 171 208 685 432 10;
+#X text 31 36 The format of this file is pretty simple (or tries to
+be).;
+#X text 55 69 Line 1: name - this is used as the 'c' identifier;
+#X text 55 81 Line 2: <var_count> <param_count> - integer for each
+;
+#X text 55 93 Line 3-x: <name> <init> - var name and start state;
+#X text 55 105 Line y-z: <name> <low> <high> <init> - param data;
+#X text 55 131 Line c: '.' - file must end with a single period '.'
+;
+#X text 33 180 This file is used by 'gen_fractal_framework' to produce
+the 'C' source for the external.;
+#X text 62 225 ** - The pseudo-code must not have any spaces. Each
+line in the pseudo-code is considered to be a single "assignment" statement.
+There is no need to worry about creating storage for any intermediate
+(calculated) variables \, as that is done by the translation program.
+The pseudo-code represents variables and parameters with a '$' before
+the variable name. Locals are allowed \, but are preceded with a '#'.
+(Locals are used as 'intermediate' \, computed values that are not
+retained from iteration to iteration.);
+#X text 55 118 Line a-b: <code_fragment> - line(s) of frac 'pseudo-code'
+**;
diff --git a/examples/readme-fractals.pd b/examples/readme-fractals.pd
new file mode 100644
index 0000000..2281c6a
--- /dev/null
+++ b/examples/readme-fractals.pd
@@ -0,0 +1,54 @@
+#N canvas 495 74 487 362 10;
+#X obj 56 202 readme-frac-format;
+#X obj 56 221 readme-gen-fractal;
+#X text 37 183 if you want to add new fractals:;
+#X obj 56 144 readme-operation;
+#X obj 56 164 readme-searching;
+#X text 22 107 Additional Reading \,;
+#X text 41 126 if you want to us existing fractals:;
+#X obj 56 240 readme-parameter-ranges;
+#X text 270 269 Developed using PD 0.36;
+#X text 93 295 Copyright 2003 \, Ben Bogart and Michael McGonagle;
+#X text 276 282 Released under GNU GPL;
+#N canvas 302 96 575 579 available_fractals 0;
+#X obj 157 264 henon;
+#X obj 157 302 ikeda;
+#X obj 157 321 latoocarfian;
+#X obj 157 340 latoomutalpha;
+#X obj 157 359 latoomutbeta;
+#X obj 157 378 latoomutgamma;
+#X obj 69 208 logistic;
+#X obj 277 208 lorenz;
+#X obj 69 227 mlogistic;
+#X obj 277 246 rossler;
+#X obj 157 473 standardmap;
+#X obj 69 246 tent;
+#X obj 277 265 three_d;
+#X text 57 187 1 variable;
+#X text 157 187 2 variables;
+#X text 273 187 3 variables;
+#X text 24 136 The remaining outputs represent the variables \, corresponding
+from left to right as the variables from the '*.frac' data file.;
+#X text 24 16 Below \, there is an object for each of the fractals
+currently available in the ChaosII collection.;
+#X text 23 55 All fractals share the same common structure \, in that
+the right-most outlet is used as the "results" outlet. This is used
+during the "Searching" operations to return the results of the search
+to the user. see 'readme-searching' file for more info on the results
+of a search.;
+#X obj 157 207 attract1;
+#X obj 157 226 dejong;
+#X obj 157 245 gingerbreadman;
+#X obj 157 283 hopalong;
+#X obj 157 416 martin;
+#X obj 277 227 pickover;
+#X obj 157 435 popcorn;
+#X obj 157 454 quadruptwo;
+#X obj 157 492 strange1;
+#X obj 157 511 tinkerbell;
+#X obj 157 530 unity;
+#X obj 157 397 lotkavolterra;
+#X restore 43 78 pd available_fractals;
+#X text 27 28 The Chaos Library provides a means to generate multiple
+chaotic datastreams \, as well as the ability to search for new attractor
+sets that produce other chaotic datastreams.;
diff --git a/examples/readme-gen-fractal.pd b/examples/readme-gen-fractal.pd
new file mode 100644
index 0000000..2af4657
--- /dev/null
+++ b/examples/readme-gen-fractal.pd
@@ -0,0 +1,6 @@
+#N canvas 0 22 478 328 10;
+#X text 25 23 This will explain the usage of 'gen_fractal_framework'
+\, once the program has become more "stable" and generates what would
+be unique to each fractal. Currently \, there is still some redundancy
+in the code.;
+#X text 282 136 more later...;
diff --git a/examples/readme-lyapunov.pd b/examples/readme-lyapunov.pd
new file mode 100644
index 0000000..056e6bd
--- /dev/null
+++ b/examples/readme-lyapunov.pd
@@ -0,0 +1,16 @@
+#N canvas 0 22 565 389 10;
+#X text 74 61 Lyapunov Exponent;
+#X text 25 82 This value is an estimate of the attractors potential
+for chaos. It will not necessarily be the same for any given run using
+any arbitrary fractal. The description below attempts to put "attractors"
+into three catagories.;
+#X text 48 262 Don't forget \, just because an "attractor" is not chaotic
+\, it does not mean that it will not generate an interesting stream
+of number \, if only until they converge.;
+#X text 40 151 < 0;
+#X text 78 151 These are not chaotic \, may produce a "short-term"
+stream of intrest;
+#X text 39 179 == 0;
+#X text 80 179 Attractors converge to one or more points;
+#X text 40 197 > 0;
+#X text 80 198 Chaos begins. Higher values indicate "more" chaos.;
diff --git a/examples/readme-operation.pd b/examples/readme-operation.pd
new file mode 100644
index 0000000..be93969
--- /dev/null
+++ b/examples/readme-operation.pd
@@ -0,0 +1,34 @@
+#N canvas 159 133 675 651 10;
+#X msg 56 219 reset <var-init>;
+#X msg 56 240 param <param-data>;
+#X text 36 280 As to the exact variable and parameter ranges to use
+\, you will have to consult each fractals help file. You can also use
+the "Searching" functions to randomly find a new attractor set \, and
+then use those values in either a set of messages to the fractal \,
+or in its creation arguments.;
+#X msg 56 198 reset;
+#X text 98 199 sets the variables back to their initial state **;
+#X text 181 221 sets the variables to an explicit state ***;
+#X text 195 242 sets parameters to explicit state ****;
+#X text 34 26 Create a fractal with or without a set of variables and
+parameters \, passed as creation arguments. Without the creation arguments
+\, the class defaults will be used for the fractal. With the arguments
+\, a new fractal is created using the arguments as the defaults.;
+#X text 35 104 To use a fractal \, create the instance \, and optionally
+pass it an initial state of variables and a set of parameters. Then
+repeatedly 'bang' on the input to iterate thru the fractals variable
+states. Using a 'reset' message will return the variables to their
+initial state \, or to the explicit values passed.;
+#X text 38 369 ** - The initial state can be explicitly set by passing
+the arguments at creation time for the fractal \, or (without creation
+arguments) the class default value will be used.;
+#X text 37 414 *** - When setting the variables to an arbitrary state
+\, the stream may not be in a "stable" state. You may need to iterate
+the fractal several hundred (or thousand) times to obtain a "stable"
+state. If you pass a set of variables that were taken from the 'search'
+(or 'show') results \, the values most likely will be in a "stable"
+condition.;
+#X text 38 500 **** - Do remember that not all combinations of parameters
+result in an attractor set.;
+#X text 234 577 chaos \, version 2 by Ben Bogart and Michael McGonagle.
+Copyright 2003;
diff --git a/examples/readme-parameter-ranges.pd b/examples/readme-parameter-ranges.pd
new file mode 100644
index 0000000..27fe5f0
--- /dev/null
+++ b/examples/readme-parameter-ranges.pd
@@ -0,0 +1,23 @@
+#N canvas 0 22 499 399 10;
+#X text 33 275 The "classification" of an attractor set uses the full
+range of the fractals acceptable parameter ranges. As this method of
+"classification" is relative \, it will not describe each fractal uniquely
+\, but rather can be used to compare attractor sets that have similar
+(closely related) parameter values. NOTE: there needs to be a way to
+increase the granularity of the classification system...;
+#X text 35 21 Parameter Ranges - Once you have an operational fractal
+external \, it is important to make sure that the assigned ranges for
+each of the parameters are "optimized" to limit the random number generator
+to those ranges. This is important when a variable can only range between
+(-1 .. 1) and you have declared that it can range from (-100 .. 100).
+Because of the much wider search space \, there is less likelyhood
+of finding anything useful \, or at least make the search times longer
+due to higher failure rates.;
+#X text 35 147 If you are unsure of what the ranges are \, you can
+either figure them out mathematically \, or use the "brute-force" method
+and iterate over ranges of the defined parameters. The points that
+return a fractal (even ones that converge) will give an indication
+as to the acceptable ranges for each param. Once you have determined
+those ranges \, adjust them in your '*.frac' file and re-make the external
+for your fractal. (Or you can just edit the Macros in the C code \,
+if you are comfortable with that.);
diff --git a/examples/readme-searching.pd b/examples/readme-searching.pd
new file mode 100644
index 0000000..0135779
--- /dev/null
+++ b/examples/readme-searching.pd
@@ -0,0 +1,101 @@
+#N canvas 39 41 1031 669 10;
+#X msg 471 344 show;
+#X msg 470 295 seed;
+#X msg 470 314 seed number;
+#X msg 469 234 elyapunov;
+#X msg 467 118 constrain;
+#X text 601 76 random search for an attractor;
+#X text 508 345 displays info on attractor to console;
+#X text 543 119 restores full param search area;
+#X text 632 138 based on current params \, limits to percentage of
+range;
+#X msg 465 76 search <var-inits>;
+#X msg 467 137 constrain <percentage>;
+#X msg 467 156 constrain <param-limits>;
+#X msg 468 200 lyapunov <low> <high> <failure>;
+#X msg 465 57 search;
+#X text 516 57 random search for an attractor \, variables use defaults
+;
+#X text 17 403 The search method implemented performs the following:
+;
+#X text 41 418 1 Set the params randomly based on allowed ranges;
+#X text 41 432 2 Calculate the Lyapunov Exponent;
+#X text 41 447 3 If the Lyapunov Exponent is within allowed range \,
+return the attractor set;
+#X text 19 39 Searching for an attractor set can be as simple as sending
+a 'search' message to a fractal. This will search the fractals allowable
+parameter limits for an attractor set.;
+#X text 39 183 arg[1] = Lyapunov Exponent;
+#X msg 469 265 classify <units>;
+#X text 591 266 Used to set the "granularity" of the classification
+;
+#X text 17 323 The Lyapunov Exponent for the attractor set will indicates
+one of three states \, (1) Convergence [a negative value] \, (2) Stability
+[0 \, of values close to 0] \, and (3) Chaos [a positive value]. Each
+class will have different ranges of Lyapunov Exponent.;
+#X text 39 196 arg[2] = Classification String ****;
+#X text 16 513 **** - The classification method was adopted from Julian
+Sprott's method of classification. While it is an arbitrary system
+\, and does not "uniquely" identify an attractor set \, it is used
+to show a relationship with other attractor sets with similar values.
+;
+#X text 558 313 seeds search random number generator with number *
+;
+#X text 507 296 seeds search random number generator with time *;
+#X text 543 235 calculates an extended Lyapunov Exponent **;
+#X text 648 157 params are limited to explicit ranges ***;
+#X text 473 419 * - all fractals of all classes currently share the
+same random number generator.;
+#X text 473 452 ** - this performs a Lyapunov Exponent calculation
+for each variable in the attractor. Ideally \, all results should be
+approximately the same. This is an experimental function.;
+#X text 473 502 *** - expects there to be a low and high range limit
+for each param in the fractal equation.;
+#X text 483 217 sets search limits and failure count for Lyapunov Exponent
+;
+#X text 37 15 Searching - the art of chaos.;
+#N canvas 0 22 464 316 simple_example 0;
+#X obj 166 106 latoocarfian;
+#X msg 173 38 search;
+#X text 32 238 This example creates a 'latoocarfian' fractal with the
+class defaults. When a search is performed \, the initial state for
+the variables are set to the class defaults.;
+#X obj 131 14 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1
+-1;
+#X floatatom 166 211 10 0 0 0 X - -;
+#X floatatom 185 194 10 0 0 1 Y - -;
+#X msg 166 16 reset;
+#X msg 183 61 show;
+#X obj 205 173 print results;
+#X obj 225 152 print vars;
+#X obj 245 132 print params;
+#X connect 0 0 4 0;
+#X connect 0 1 5 0;
+#X connect 0 2 8 0;
+#X connect 0 3 9 0;
+#X connect 0 4 10 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X restore 286 18 pd simple_example;
+#X text 39 210 arg[3] = failure rate before solution *****;
+#X text 16 581 ***** - the failure rate is a percentage of the actual
+number of failures until a solution is found over the total number
+of times the search algorithm will be executed before giving up. This
+limit is set via the 'lyapunov' message. This number will also be influenced
+by the 'low' and 'high' ranges set.;
+#X text 19 93 The values returned from a 'search' message use the 'search'
+outlets. These three outlets encapsulate that three pieces of data
+of interest. The first of the 'search' outlets holds a list of the
+results. This includes:;
+#X text 39 170 arg[0] = 'show' \, 'search' \, or 'invalid';
+#X text 18 269 Most likely \, you won't see any failures ('invalid')
+\, unless you mess with the 'constrain' or 'lyapunov' messages. 'show'
+is returned when you use the 'show' message.;
+#X obj 153 376 readme-lyapunov;
+#X text 43 475 4 If the Limit Count has been exceeded \, return 'invalid'
+\, else goto 1;
+#X text 18 154 Search Outlet 0:;
+#X text 18 227 Search Outlet 1: list of current variables;
+#X text 18 243 Search Outlet 2: list of parameter set;
diff --git a/examples/search-tools.pd b/examples/search-tools.pd
new file mode 100644
index 0000000..f00a011
--- /dev/null
+++ b/examples/search-tools.pd
@@ -0,0 +1,186 @@
+#N canvas 619 310 464 533 10;
+#X obj -97 556 outlet;
+#X obj -97 2 cnv 15 450 220 empty empty Searching_Commands 2 9 1 10
+-233017 -66577 0;
+#X msg 104 83 constrain;
+#X msg 104 104 constrain \$1;
+#X text -77 104 % Constraint;
+#X text -77 82 No Constraint;
+#X msg 104 30 search;
+#X obj 221 52 nbx 5 17 -1e+37 1e+37 0 0 \$0-search_v2 empty empty 0
+-6 1153 10 -262144 -1 -1 0 256;
+#X obj 172 52 nbx 5 17 -1e+37 1e+37 0 0 \$0-search_v1 empty empty 0
+-6 1153 10 -262144 -1 -1 0 256;
+#X text -78 48 Search w/ inits;
+#X text -78 29 Search w/ default inits;
+#X obj 86 143 bng 17 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text -76 142 Set Lyapunov Limits;
+#X obj 287 143 nbx 5 17 -1e+37 1e+37 0 0 \$0-lyapunov_v3 empty failure
+0 -6 1153 10 -262144 -1 -1 0 256;
+#X obj 238 143 nbx 5 17 -1e+37 1e+37 0 0 \$0-lyapunov_v2 empty high
+0 -6 1153 10 -262144 -1 -1 0 256;
+#X obj 189 143 nbx 5 17 -1e+37 1e+37 0 0 \$0-lyapunov_v1 empty low
+0 -6 1153 10 -262144 -1 -1 0 256;
+#N canvas 0 22 509 236 lyapunov 0;
+#X obj 42 26 inlet;
+#X obj 83 26 r \$0-lyapunov_v1;
+#X obj 101 61 pack f f f;
+#X obj 203 27 r \$0-lyapunov_v2;
+#X obj 320 27 r \$0-lyapunov_v3;
+#X msg 101 84 lyapunov \$1 \$2 \$3;
+#X obj 101 108 s \$0-outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 2;
+#X connect 5 0 6 0;
+#X restore 106 143 pd lyapunov;
+#X obj 86 52 bng 17 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 0 22 374 205 search 0;
+#X obj 104 104 pack f f;
+#X msg 104 127 search \$1 \$2;
+#X obj 83 26 r \$0-search_v1;
+#X obj 186 26 r \$0-search_v2;
+#X obj 94 63 f;
+#X obj 104 151 s \$0-outlet;
+#X obj 18 26 inlet;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 2 0 4 1;
+#X connect 3 0 0 1;
+#X connect 4 0 0 0;
+#X connect 6 0 4 0;
+#X restore 104 52 pd search;
+#X text -76 164 Extended Lyapunov;
+#X msg 104 165 elyapunov;
+#X msg 104 186 show;
+#X text -75 198 Get Attractor Info;
+#X obj 104 226 s \$0-outlet;
+#X obj -97 535 r \$0-outlet;
+#X obj -14 535 inlet;
+#X obj -14 556 s \$0-inlet;
+#X obj -97 226 cnv 15 450 300 empty empty Search_Results 2 9 1 10 -233017
+-66577 0;
+#N canvas 48 644 700 296 get_results 0;
+#X msg 5 39 set \$1;
+#X obj 5 17 symbol;
+#X obj 5 61 outlet;
+#X obj 150 38 s \$0-lyapunov;
+#X obj 190 89 s \$0-failure_rate;
+#X obj 319 32 s \$0-v1;
+#X obj 343 53 s \$0-v2;
+#X obj 367 75 s \$0-v3;
+#X obj 473 31 s \$0-p1;
+#X obj 497 52 s \$0-p2;
+#X obj 521 74 s \$0-p3;
+#X obj 170 62 s \$0-classification;
+#X obj 44 222 r \$0-classification;
+#X msg 44 243 set \$1;
+#X obj 44 264 outlet;
+#X obj 5 -6 r \$0-inlet;
+#X obj 80 117 print debug;
+#X obj 131 11 unpack s 0 s 0;
+#X obj 319 9 unpack 0 0 0 0 0 0;
+#X obj 391 96 s \$0-v4;
+#X obj 415 117 s \$0-v5;
+#X obj 440 138 s \$0-v6;
+#X obj 473 9 unpack 0 0 0 0 0 0;
+#X obj 545 96 s \$0-p4;
+#X obj 569 117 s \$0-p5;
+#X obj 594 137 s \$0-p6;
+#X obj 318 -12 r \$0-inlet_var;
+#X obj 473 -11 r \$0-inlet_param;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 15 0 1 0;
+#X connect 15 0 17 0;
+#X connect 17 1 3 0;
+#X connect 17 2 11 0;
+#X connect 17 3 4 0;
+#X connect 18 0 5 0;
+#X connect 18 1 6 0;
+#X connect 18 2 7 0;
+#X connect 18 3 19 0;
+#X connect 18 4 20 0;
+#X connect 18 5 21 0;
+#X connect 22 0 8 0;
+#X connect 22 1 9 0;
+#X connect 22 2 10 0;
+#X connect 22 3 23 0;
+#X connect 22 4 24 0;
+#X connect 22 5 25 0;
+#X connect 26 0 18 0;
+#X connect 27 0 22 0;
+#X restore -14 267 pd get_results;
+#X msg -14 288 search;
+#X msg 79 288 NOCBNS;
+#X text 184 290 Classification;
+#X obj 79 309 nbx 10 17 -1e+37 1e+37 0 0 empty \$0-lyapunov empty 0
+-6 577 10 -262144 -1 -1 -0.482697 256;
+#X obj 79 330 nbx 10 17 -1e+37 1e+37 0 0 empty \$0-failure_rate empty
+0 -6 577 10 -262144 -1 -1 0.005 256;
+#X obj -14 371 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v1 empty 0 -6 577
+10 -262144 -1 -1 0 256;
+#X obj -14 391 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v2 empty 0 -6 577
+10 -262144 -1 -1 0 256;
+#X obj -14 411 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v3 empty 0 -6 577
+10 -262144 -1 -1 0 256;
+#X obj 111 371 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p1 empty 0 -6 577
+10 -262144 -1 -1 0.17869 256;
+#X obj 111 391 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p2 empty 0 -6 577
+10 -262144 -1 -1 0.437724 256;
+#X obj 111 411 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p3 empty 0 -6 577
+10 -262144 -1 -1 -2.31304 256;
+#X text 183 331 Failure Rate;
+#X text 184 309 Lyapunov Exponent;
+#X text 48 372 Var 1;
+#X text 48 392 Var 2;
+#X text 48 412 Var 3;
+#X text 174 373 Param 1;
+#X text 174 393 Param 2;
+#X text 174 413 Param 3;
+#X obj 188 164 readme-lyapunov;
+#X obj 171 29 readme-searching;
+#X obj -14 431 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v4 empty 0 -6 577
+10 -262144 -1 -1 0 256;
+#X obj -14 451 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v5 empty 0 -6 577
+10 -262144 -1 -1 0 256;
+#X obj -14 471 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-v6 empty 0 -6 577
+10 -262144 -1 -1 0 256;
+#X obj 111 431 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p4 empty 0 -6 577
+10 -262144 -1 -1 -2.74459 256;
+#X obj 111 451 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p5 empty 0 -6 577
+10 -262144 -1 -1 0.00541449 256;
+#X obj 111 471 nbx 5 17 -1e+37 1e+37 0 0 empty \$0-p6 empty 0 -6 577
+10 -262144 -1 -1 1.3485 256;
+#X text 48 432 Var 4;
+#X text 48 452 Var 5;
+#X text 48 472 Var 6;
+#X text 174 433 Param 4;
+#X text 174 453 Param 5;
+#X text 174 473 Param 6;
+#X obj 62 535 inlet;
+#X obj 166 535 inlet;
+#X obj 62 556 s \$0-inlet_var;
+#X obj 166 556 s \$0-inlet_param;
+#X obj 198 104 nbx 5 17 -1e+37 1e+37 0 0 empty empty % 0 -6 1 10 -262144
+-1 -1 0 256;
+#X connect 2 0 23 0;
+#X connect 3 0 23 0;
+#X connect 6 0 23 0;
+#X connect 11 0 16 0;
+#X connect 17 0 18 0;
+#X connect 20 0 23 0;
+#X connect 21 0 23 0;
+#X connect 24 0 0 0;
+#X connect 25 0 26 0;
+#X connect 28 0 29 0;
+#X connect 28 1 30 0;
+#X connect 62 0 64 0;
+#X connect 63 0 65 0;
+#X connect 66 0 3 0;