aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--help/argument-help.pd6
-rw-r--r--help/param-abs.pd36
-rw-r--r--help/param-help.pd807
-rw-r--r--help/test-argument.pd (renamed from help/argument-abs.pd)0
-rw-r--r--help/test-param-2.pd (renamed from help/param2-abs.pd)5
-rw-r--r--help/test-param.pd42
6 files changed, 676 insertions, 220 deletions
diff --git a/help/argument-help.pd b/help/argument-help.pd
index a6fbd47..dbfd5cd 100644
--- a/help/argument-help.pd
+++ b/help/argument-help.pd
@@ -14,11 +14,10 @@
#X obj 422 303 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 422 351 print;
-#X text 618 482 <- open it;
+#X text 618 484 <- open it;
#X obj 422 154 tof/argument 1;
#X obj 419 244 tof/argument 1 32;
#X obj 422 325 tof/argument;
-#X obj 496 485 ./argument-abs a b;
#X text 5 176 [argument n default];
#X text -4 17 description: Outputs the patch's creation arguments individually.
;
@@ -47,7 +46,8 @@ type as the default value \, the default value will be outputed instead.
#X text -4 46 tags: initialization patch;
#X text 1 126 see also:;
#X obj 73 129 tof/arguments;
-#X connect 0 0 14 0;
+#X obj 496 485 ./test-argument a b;
+#X connect 0 0 29 0;
#X connect 4 0 11 0;
#X connect 5 0 12 0;
#X connect 8 0 13 0;
diff --git a/help/param-abs.pd b/help/param-abs.pd
deleted file mode 100644
index ec40bed..0000000
--- a/help/param-abs.pd
+++ /dev/null
@@ -1,36 +0,0 @@
-#N canvas 6 0 1018 686 10;
-#X obj 225 477 outlet~;
-#X obj 55 21 inlet;
-#X text 179 26 This abstraction is an example for the param external.
-;
-#X floatatom 223 247 0 0 0 0 - - -;
-#X obj 223 317 +~;
-#X text 153 168 carrier;
-#X text 152 186 frequency;
-#X obj 224 359 osc~;
-#X obj 56 97 print PARAM_NOTFOUND;
-#X obj 223 171 loadbang;
-#X obj 225 428 *~;
-#X obj 315 400 line~;
-#X msg 316 376 \$1 100;
-#X obj 317 325 loadbang;
-#X obj 321 300 param2-abs /id modulation;
-#X obj 317 349 tof/param /volume 0 /g slider 0 1;
-#X obj 660 195 iemguts/propertybang;
-#X obj 660 223 tof/param gui;
-#X obj 55 66 tof/param route;
-#X obj 223 202 tof/param /carrier 800 /g slider 200 2000;
-#X connect 1 0 18 0;
-#X connect 3 0 4 0;
-#X connect 4 0 7 0;
-#X connect 7 0 10 0;
-#X connect 9 0 19 0;
-#X connect 10 0 0 0;
-#X connect 11 0 10 1;
-#X connect 12 0 11 0;
-#X connect 13 0 15 0;
-#X connect 14 0 4 1;
-#X connect 15 0 12 0;
-#X connect 16 0 17 0;
-#X connect 18 0 8 0;
-#X connect 19 0 3 0;
diff --git a/help/param-help.pd b/help/param-help.pd
index abcf5ab..cd4cfff 100644
--- a/help/param-help.pd
+++ b/help/param-help.pd
@@ -1,202 +1,647 @@
-#N canvas 98 175 722 412 10;
-#X obj -23 2 cnv 15 400 100 empty empty empty 20 12 0 14 -249661 -66577
+#N canvas 430 490 403 396 10;
+#N canvas 429 334 525 231 /id 0;
+#X text 26 42 Abstraction /id:;
+#X text 63 67 If an abstraction's arguments contains the "/id" keyword
+\, the symbol following the "/id" keyword \, instead of the abstraction's
+name \, will be used to build the path.;
+#X restore 327 340 pd /id;
+#N canvas 1318 214 933 657 /name 0;
+#X floatatom 459 165 5 0 0 0 - - -;
+#X floatatom 459 215 5 0 0 0 - - -;
+#X obj 503 168 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 454 19 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
0;
-#X text -18 54 author: mrtoftrash@gmail.com;
-#X text -19 75 version: 2009-09-19 (localized release);
-#X text -18 1 description: [param] is a state saving and message routing
-system.;
-#X text -19 33 tags: state routing;
-#X text -17 106 [param] is to state saving what [list] is to lists
-:);
-#X floatatom 144 229 5 0 0 0 - - -;
-#X obj 136 351 dac~;
-#X obj 184 275 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 0 1;
-#X msg 144 251 /modulation/index \$1;
-#X msg 181 297 /volume \$1;
-#N canvas 237 177 542 366 [param 0;
-#X text 210 53 argument 1: param name (must start with a slash);
-#X obj 21 56 tof/param /my_name my_value;
-#X text 210 70 argument 2...: param value (can be anything;
-#X text 210 86 argument ...: special keywords;
-#X text 24 120 A param object creates a storage area for anything.
-This data can be accessed through a unique symbolic path.;
-#X text 24 227 If the param is inside an abstraction (or inside an
-abstraction contained inside another abstraction an so forth) \, the
-path starts at the root and follows every child patch (abstraction)
-until it reaches the param object \, at which point the param's name
-is appended:;
-#X text 85 303 /abstraction's name/.../param's name;
-#X text 147 171 /my_name;
-#X restore -16 164 pd [param /name];
-#N canvas 0 0 975 555 keywords 0;
-#X text 565 152 nbx: creates a numberbox;
-#X text 564 171 slider min max: creates a slider with the indicated
+#X text 450 543 nbx: creates a numberbox;
+#X text 450 561 slider min max: creates a slider with the indicated
minimum and maximum;
-#X text 564 200 bng: creates a bang;
-#X text 564 218 tgl: creates a toggle;
-#X text 566 236 symbolatom: creates a symbol box;
-#X floatatom 509 121 5 0 0 0 - - -;
-#X obj 509 95 tof/param /number 30 /g nbx;
-#X text 506 137 /g options:;
-#X text 509 55 When you create a param \, you can optinally use the
-"/g" keyword to flag the param with gui options.;
-#X floatatom 162 129 5 0 0 0 - - -;
-#X obj 162 106 tof/param /test 50 /nlb;
-#X text 49 63 A param automatically ouputs its value when it is created.
+#X text 450 592 bng: creates a bang;
+#X text 450 610 tgl: creates a toggle;
+#X floatatom 452 510 5 0 0 0 - - -;
+#X text 449 526 /g options:;
+#X text 453 43 A param automatically ouputs its value when it is created.
You can disable this behavior with the "/nlb" (no loadbang) keyword.
;
-#X text 451 38 /g keyword: GUI options;
-#X text 18 41 /nlb keyword: No loadbang;
-#X text 24 155 /wfb keyword: Wait for bang;
-#X text 56 177 This param will only output its contents on a bang.
-;
-#X obj 49 227 tof/param /waiting 50 /wfb;
-#X floatatom 49 200 5 0 0 0 - - -;
-#X floatatom 49 250 5 0 0 0 - - -;
-#X obj 93 203 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X text 36 296 /ns keyword: No save;
-#X text 67 317 This param will never be saved.;
-#X obj 177 298 tof/param /nope 50 /ns;
-#X text 249 449 /nps keyword: No preset save;
-#X text 280 471 This param will never be saved in a preset file.;
-#X obj 448 449 tof/param /noPresets 67 /nps;
-#X text 284 411 Special keywords for [param /name] and [param custom]
+#X text 457 20 /nlb keyword: No loadbang;
+#X obj 453 118 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 455 119 /wfb keyword: Wait for bang;
+#X obj 454 248 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 456 248 /ns keyword: No save;
+#X obj 453 405 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 455 405 /g keyword: GUI options;
+#X obj 455 328 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 457 329 /nps keyword: No preset save;
+#X text 449 268 The param will never be saved.;
+#X text 451 353 The param will never be saved in a preset file.;
+#X text 456 142 The param will only output its contents on a bang.
;
-#X text 350 5 Special keywords for [param /name];
-#X connect 6 0 5 0;
-#X connect 10 0 9 0;
-#X connect 16 0 18 0;
-#X connect 17 0 16 0;
-#X connect 19 0 16 0;
-#X restore 150 164 pd keywords;
-#N canvas 0 0 450 300 [param 0;
-#X text 26 80 outlet 1: bang when a param save is called;
-#X text 29 106 outlet 2: the data to be restored (loaded from the save
-file);
-#X obj 46 228 param custom /cname;
-#X text 30 60 inlet 1: data to be saved (can be multiple messages)
+#X obj 452 484 tof/param /number 30 /g nbx;
+#X obj 460 192 tof/param /waiting 50 /wfb;
+#X obj 11 285 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 13 286 arguments;
+#X text 10 345 argument 1 symbol: name (must start with a slash);
+#X text 11 362 argument 2 variable: optionnal default value (can be
+anything and of any length);
+#X text 11 393 other arguments: special keywords and options;
+#X text 10 42 A param object creates a storage area for anything. This
+data can be accessed and modified through a unique path.;
+#X obj 12 18 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
+0;
+#X obj 13 321 tof/param /name default;
+#X text 12 417 The path to a param starts at the root patch and includes
+the name of each abstraction that was taversed to reach the object.
+The path of the param above is: /name;
+#X text 95 514 <- open me;
+#X obj 536 86 tof/param /not_lb 50 /nlb;
+#X obj 453 293 tof/param /not_saving 50 /ns;
+#X obj 455 377 tof/param /no_presets 67 /nps;
+#X obj 16 548 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 18 549 keywords;
+#X text 19 572 You can use many keywords to configure your params.
+Each keyword starts with a /. You can use as many keywords as you want
+as long at they are not the first argument (that is reserved for the
+name).;
+#X text 452 434 When you create a param \, you can use the "/g" keyword
+to flag the param with gui options that are used by [param gui] to
+automatically build GUIs.;
+#X text 450 628 symbolatom or sym : creates a symbol box;
+#X obj 15 79 cnv 15 300 20 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X text 17 80 inlets/outlets;
+#X text 14 104 inlet 1 bang: outputs the value of the param.;
+#X text 14 121 inlet 1 anything: stores the value received and outputs
+it.;
+#X text 13 138 inlet 2 anything: stores the value received.;
+#X text 13 157 outlet 2 anything: the stored value.;
+#X text 11 477 The path to the param "/carrier" in the middle of the
+following abstraction is: /test-param/carrier;
+#X text 14 18 param /name;
+#X obj 16 516 ./test-param;
+#X obj 16 185 cnv 15 300 20 empty empty empty 20 12 0 14 -4032 -66577
+0;
+#X text 18 186 default value;
+#X connect 0 0 24 0;
+#X connect 2 0 24 0;
+#X connect 23 0 8 0;
+#X connect 24 0 1 0;
+#X restore -16 187 pd /name;
+#N canvas 122 440 837 442 custom 0;
+#X obj 17 211 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 19 212 arguments;
+#X obj 18 19 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
+0;
+#X text 20 43 Saves and restores any type and quantity of data in a
+param file.;
+#X text 16 235 argument 1 symbol: the name. Must start with a '/'.
;
-#X text 31 18 description: allows to save and restore any type of data
-in a state.;
-#X obj 157 252 print custom_restored;
-#X msg 46 196 this will be saved;
-#X msg 205 197 this will also be saved;
-#X obj 106 156 t b b;
-#X connect 2 0 8 0;
-#X connect 2 1 5 0;
-#X connect 6 0 2 0;
-#X connect 7 0 2 0;
-#X connect 8 0 6 0;
-#X connect 8 1 7 0;
-#X restore -16 187 pd [param custom /name];
-#N canvas 43 205 542 321 [param 0;
-#X obj 48 278 print;
-#X obj 49 98 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+#X obj 18 282 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 20 283 keywords;
+#X text 16 307 There is only one keyword: /nps;
+#X obj 17 335 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 19 336 /nps keyword: No preset save;
+#X text 13 360 The param will never be saved in a preset file.;
+#X obj 17 384 tof/param custom /yogourt /nps;
+#X obj 18 83 cnv 15 300 20 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X text 23 83 inlets/outlets;
+#X text 18 109 inlet 1 anything: data to be saved (can be multiple
+messages).;
+#X obj 495 212 list prepend;
+#X text 576 211 Prepend the key to the value;
+#X obj 444 110 t b b;
+#X msg 541 90 clear;
+#X msg 444 139 dump;
+#X text 434 46 In the following example \, [param custom] will save
+and restore the contents of the [cyclone/coll].;
+#X obj 495 185 cyclone/coll;
+#C restore;
+#X text 427 243 When a param save is called \, the [t b b] is banged.
+The message "clear" is stored and "dump" is sent to [cyclone/coll].
+The list builds a "key data" pair out of the dumped data. This pair
+is then also stored.;
+#X text 426 305 When a param load is called \, the stored "clear" message
+is sent to [cyclone/coll] \, clearing its contents. Afterwards. each
+of the stored data pairs is then sent to [cyclone/coll] restoring the
+previous data.;
+#X obj 541 115 param custom /coll;
+#X text 17 160 outlet 2: the data to be restored by a param load.;
+#X text 18 141 outlet 1 bang: bangs when a param save is called.;
+#X text 16 256 other arguments: keywords (see below).;
+#X text 20 19 param custom;
+#X connect 15 0 24 0;
+#X connect 17 0 19 0;
+#X connect 17 1 18 0;
+#X connect 18 0 24 0;
+#X connect 19 0 21 0;
+#X connect 21 0 15 0;
+#X connect 21 1 15 1;
+#X connect 24 0 17 0;
+#X connect 24 1 21 0;
+#X restore -16 208 pd custom;
+#N canvas 222 499 637 424 path 0;
+#X obj 373 67 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 373 115 print;
+#X obj 41 190 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 43 191 arguments;
+#X obj 40 58 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
+0;
+#X obj 40 112 cnv 15 300 20 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X text 45 112 inlets/outlets;
+#X text 41 82 Outputs the current param path.;
+#X obj 375 180 ./test-param-2;
+#X obj 373 91 tof/param path;
+#X obj 375 152 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 392 64 1) Click here;
+#X text 396 150 2) Click here;
+#X text 40 138 inlet 1 bang: outputs the param path.;
+#X text 40 160 outlet 1 symbol: the param path.;
+#X text 40 214 none.;
+#X text 42 58 param path;
+#X connect 0 0 9 0;
+#X connect 9 0 1 0;
+#X connect 10 0 8 0;
+#X restore -16 229 pd path;
+#N canvas 70 415 866 433 dump 0;
+#X obj 420 258 print;
+#X obj 421 78 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
-#X msg 92 170 guis;
-#X text 72 99 A bang will output all the params and their values.;
-#X msg 73 129 symbol /FM_MOD;
-#X text 169 127 A symbol will dump only the params that start with
+#X msg 464 150 guis;
+#X text 444 79 A bang will output all the params and their values.
+;
+#X msg 445 109 symbol /FM_MOD;
+#X text 541 107 A symbol will dump only the params that start with
that path.;
-#X text 129 167 Guis will output all the optional /g values.;
-#X obj 49 244 tof/param dump;
-#X text 35 23 description: dumps the values or the gui options of params
+#X text 501 147 Guis will output all the optional /g values.;
+#X obj 421 224 tof/param dump;
+#X msg 501 175 guis /FM_MOD;
+#X obj 33 257 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 35 258 arguments;
+#X obj 33 45 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
+0;
+#X obj 33 109 cnv 15 300 20 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X text 38 109 inlets/outlets;
+#X text 32 281 none.;
+#X text 32 68 Outputs the params and their values or the params and
+their GUI options.;
+#X text 33 135 inlet 1 bang: outputs the all the params and their values.
;
-#X msg 134 188 guis /FM_MOD;
-#X text 41 6 [param dump];
+#X text 33 152 inlet 1 symbol: outputs the params and their values
+if their names start with this symbol.;
+#X text 33 182 inlet 1 guis: outputs the params and their GUI options
+if their names start with this symbol.;
+#X text 32 216 inlet 1 guis symbol: outputs the params and their GUI
+options if their names start with this symbol.;
+#X text 35 45 param dump;
#X connect 1 0 7 0;
#X connect 2 0 7 0;
#X connect 4 0 7 0;
#X connect 7 0 0 0;
-#X connect 9 0 7 0;
-#X restore -16 235 pd [param dump];
-#N canvas 288 382 637 377 [param 0;
-#X obj 336 180 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
--1 -1 0;
-#X obj 392 230 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
+#X connect 8 0 7 0;
+#X restore -16 250 pd dump;
+#N canvas 20 346 838 409 file 0;
+#X obj 489 38 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj 547 151 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
-1 -1 0;
-#X obj 37 185 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X obj 94 225 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+#X obj 464 17 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
-#X floatatom 336 204 5 0 0 0 - - -;
-#X floatatom 392 252 5 0 0 0 - - -;
-#X text 376 202 Save preset N;
-#X text 430 251 Restore preset N;
-#X text 26 46 description: saves and restores params in individual
-files on the hard disk.;
-#X text 27 27 [param file];
-#X obj 37 266 param file;
-#X obj 336 279 param file;
-#X text 30 110 Data is saved/restored in the same folder as the root
-patch.;
-#X text 116 223 Restore main save file;
-#X text 59 182 Save main save file;
+#X obj 521 127 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X floatatom 489 62 5 0 0 0 - - -;
+#X floatatom 547 173 5 0 0 0 - - -;
+#X obj 464 198 param file;
+#X obj 24 321 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 26 322 arguments;
+#X obj 24 19 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
+0;
+#X obj 24 183 cnv 15 300 20 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X text 29 183 inlets/outlets;
+#X text 23 345 none.;
+#X text 26 40 Saves/restores params in a param file.;
+#X text 25 98 All params that do not have the "/ns" keyword are saved
+in the "main" param file.;
+#X text 24 133 All params that do not have the "/ns" or "/nps" keywords
+are saved in the "preset" param files.;
+#X text 25 61 There are two types of param file. A "main" param file
+and up to 1000 "preset" param files.;
+#X text 529 60 Save to "preset" file n.;
+#X text 585 172 Restore for "preset" file n.;
+#X text 543 125 Restore from "main" param file.;
+#X text 486 13 Save to "main" param file.;
+#X text 24 209 inlet 1 bang: save to "main" param file.;
+#X text 24 263 inlet 2 bang: restore from "main" param file.;
+#X obj 442 247 cnv 15 300 20 empty empty empty 20 12 0 14 -4032 -66577
+0;
+#X text 444 248 param file names;
+#X text 441 271 All param files are always stored and searched for
+in the same folder as the root patch's folder.;
+#X text 443 305 The "main" param file is named as follows:;
+#X text 622 323 "name of root patch.param";
+#X text 26 280 inlet 2 float: restore from "preset" file n where n
+is a number between 0 and 999;
+#X text 26 228 inlet 1 float: save to "preset" file n where n is a
+number between 0 and 999;
+#X text 581 374 "name of root patch-nnnn.param";
+#X text 444 341 The "preset" param files are named as follows \, where
+nnnn is always four digits:;
+#X text 26 19 param file;
#X connect 0 0 4 0;
#X connect 1 0 5 0;
-#X connect 2 0 10 0;
-#X connect 3 0 10 1;
-#X connect 4 0 11 0;
-#X connect 5 0 11 1;
-#X restore -16 257 pd [param file];
-#N canvas 461 363 450 300 [param 0;
-#X text 26 47 description: routes param messages.;
-#X text 26 20 [param route];
-#X text 28 92 [param route] routes messages to params. It relativitize
-target names.;
-#X restore -16 280 pd [param route];
-#N canvas 0 0 517 280 [param 0;
-#X text 19 28 description: builds pd guis for params.;
-#X obj 21 68 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+#X connect 2 0 6 0;
+#X connect 3 0 6 1;
+#X connect 4 0 6 0;
+#X connect 5 0 6 1;
+#X restore -16 271 pd file;
+#N canvas 17 441 981 371 route 0;
+#X obj 33 203 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 35 204 arguments;
+#X obj 33 31 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
+0;
+#X obj 33 85 cnv 15 300 20 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X text 38 85 inlets/outlets;
+#X text 35 228 none.;
+#X text 38 53 Routes messages to params.;
+#X text 35 31 param route;
+#X text 35 112 inlet 1 anything: the first element of the anything
+determines the target. The rest of the elements of the anything are
+sent the target.;
+#X obj 36 257 cnv 15 300 20 empty empty empty 20 12 0 14 -4032 -66577
+0;
+#X text 38 258 targets;
+#X text 35 160 outlet 1 anything: messages that do not have a valid
+target name or whose target was not found.;
+#X text 34 282 [param route] prepends its own path to the target name.
+This allows the targeting of params with a relative path. Even if the
+paths are relative \, they still need to start with a '/'.;
+#X obj 412 225 ./test-param /id routing;
+#X floatatom 482 292 5 0 0 0 - - -;
+#X floatatom 553 261 5 0 0 0 - - -;
+#X text 566 221 <-There is a [param route] connected to the first inlet
+of this abstraction.;
+#X text 594 259 <-This is connected to a [param /b] inside the abstraction.
+;
+#X text 518 293 <-This is connected to a [param /a] inside the abstraction.
+;
+#X msg 470 187 /b \$1;
+#X msg 418 161 /a \$1;
+#X floatatom 417 137 5 0 0 0 - - -;
+#X floatatom 474 159 5 0 0 0 - - -;
+#X connect 13 1 14 0;
+#X connect 13 2 15 0;
+#X connect 19 0 13 0;
+#X connect 20 0 13 0;
+#X connect 21 0 20 0;
+#X connect 22 0 19 0;
+#X restore -16 292 pd route;
+#N canvas 8 378 991 450 gui 0;
+#X obj 431 21 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
-#X obj 90 120 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+#X obj 506 75 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
-#X text 42 65 This inlet creates the guis once. All further bangs only
-display the gui window.;
-#X obj 21 157 tof/param gui;
-#X text 112 117 This inlet creates and displays the window everytime
-it is banged. The content is always up to date \, but a bit slower.
+#X obj 431 110 tof/param gui;
+#X obj 5 219 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 7 220 arguments;
+#X obj 5 7 cnv 15 300 20 empty empty empty 20 12 0 14 -257985 -66577
+0;
+#X obj 5 81 cnv 15 300 20 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X text 10 81 inlets/outlets;
+#X text 7 244 none.;
+#X obj 8 273 cnv 15 300 20 empty empty empty 20 12 0 14 -4032 -66577
+0;
+#X text 10 274 targets;
+#X text 7 7 param gui;
+#X floatatom 383 238 5 0 0 0 - - -;
+#X obj 375 365 dac~;
+#X obj 423 284 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X msg 383 260 /modulation/index \$1;
+#X msg 420 305 /volume \$1;
+#X obj 529 165 cnv 15 200 20 empty empty /FM_MOD/ 2 12 0 8 -258401
+-262144 0;
+#X obj 529 188 nbx 5 14 -1e+37 1e+37 0 0 /FM_MOD/modulation/freq /FM_MOD/modulation/freq_
+modulation/freq 50 8 0 8 -1 -262144 -1 3 256;
+#X obj 529 206 nbx 5 14 -1e+37 1e+37 0 0 /FM_MOD/modulation/index /FM_MOD/modulation/index_
+modulation/index 50 8 0 8 -1 -262144 -1 20 256;
+#X obj 529 224 hsl 100 15 0 1 0 0 /FM_MOD/volume /FM_MOD/volume_ volume
+105 7 0 8 -1 -262144 -1 0 1;
+#X obj 529 242 hsl 100 15 200 2000 0 0 /FM_MOD/carrier /FM_MOD/carrier_
+carrier 105 7 0 8 -1 -262144 -1 3300 1;
+#X obj 383 330 ./test-param /id FM_MOD /carrier 600;
+#X text 5 107 inlet 1 bang: creates the GUI once and then displays
+the window. All further bangs only display the GUI window without recreating
+its contents.;
+#X text 453 10 Creates the GUI once and then displays the window. All
+further bangs only display the GUI window without recreating its contents.
;
-#X connect 1 0 4 0;
-#X connect 2 0 4 1;
-#X restore -15 302 pd [param gui];
-#N canvas 0 0 525 231 /id 0;
-#X text 26 42 Abstraction /id:;
-#X text 63 67 If an abstraction's arguments contains the "/id" keyword
-\, the symbol following the "/id" keyword \, instead of the abstraction's
-name \, will be used to build the path.;
-#X restore -16 323 pd /id;
-#N canvas 0 0 450 300 [param 0;
-#X text 38 36 [param path];
-#X text 37 57 description: outputs the current param path.;
-#X obj 42 105 param path;
-#X obj 46 83 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+#X text 527 72 Creates and displays the window everytime it is banged.
+The content is always up to date \, but this slightly slower.;
+#X text 6 298 [param gui] will build a gui for all the params that
+have GUI options (set with the "/g" keyword) and that are located in
+the same patch or in any of its children.;
+#X text 8 32 Automatically builds a gui for params. The values of the
+GUI elements are always up to date.;
+#X text 1 155 inlet 2 bang: creates and displays the window everytime
+it is banged. This slightly slower \, but it takes into account params
+that were created or destroyed since it was first created.;
+#X text 618 328 <-Click this abstraction's properties menu. The [iemguts/propertybang]
+bangs the [param gui] that creates the GUI window.;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 12 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 22 0;
+#X connect 16 0 22 0;
+#X connect 22 0 13 0;
+#X connect 22 0 13 1;
+#X restore -16 313 pd gui;
+#X text 45 183 Defines a parameter to save/restore/route/display.;
+#X text 48 205 Can save/restore any number of things in a param file.
+;
+#X text 48 226 Outputs the current param path.;
+#X text 48 247 Outputs information about the params.;
+#X text 48 268 Saves/restores params in a param file.;
+#X text 47 289 Routes messages to params.;
+#X text 48 310 Automatically builds a gui for params.;
+#X text -17 151 Open the folowing subpatches for more information on
+each class.;
+#X text -17 112 [param] contains multiple classes. The class is selected
+by the value of the first argument.;
+#N canvas 360 337 548 560 anim 0;
+#X obj 172 493 s \$0c;
+#N canvas 393 451 450 300 rgbToNum 0;
+#X obj 241 358 +;
+#X obj 177 430 +;
+#X obj 90 313 * -65536;
+#X obj 196 319 * -256;
+#X obj 310 327 * -1;
+#X obj 177 461 - 1;
+#X obj 184 496 outlet;
+#X obj 85 281 int 0;
+#X obj 196 270 int 0;
+#X obj 343 272 int 0;
+#X obj 166 126 unpack f f f;
+#X obj 66 233 clip 0 255;
+#X obj 228 230 clip 0 255;
+#X obj 329 230 clip 0 255;
+#X obj 165 87 inlet;
+#X connect 0 0 1 1;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 4 0;
+#X connect 10 0 11 0;
+#X connect 10 1 12 0;
+#X connect 10 2 13 0;
+#X connect 11 0 7 0;
+#X connect 12 0 8 0;
+#X connect 13 0 9 0;
+#X connect 14 0 10 0;
+#X restore 171 434 pd rgbToNum;
+#X msg 171 462 color \$1;
+#X obj 137 65 t b b b;
+#X obj 345 14 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
-#X obj 43 130 print;
-#X connect 2 0 4 0;
-#X connect 3 0 2 0;
-#X restore -16 210 pd [param path];
-#X obj 144 322 ./param-abs /id FM_MOD /carrier 600;
-#X obj 404 243 cnv 15 200 20 empty empty /FM_MOD/ 2 12 0 8 -258401
--262144 0;
-#X obj 404 266 nbx 5 14 -1e+37 1e+37 0 0 /FM_MOD/modulation/freq /FM_MOD/modulation/freq_
-modulation/freq 50 8 0 8 -262144 -1 -1 29 256;
-#X obj 404 284 nbx 5 14 -1e+37 1e+37 0 0 /FM_MOD/modulation/index /FM_MOD/modulation/index_
-modulation/index 50 8 0 8 -262144 -1 -1 20 256;
-#X obj 404 302 hsl 100 15 0 1 0 0 /FM_MOD/volume /FM_MOD/volume_ volume
-105 7 0 8 -262144 -1 -1 0 1;
-#X obj 404 320 hsl 100 15 200 2000 0 0 /FM_MOD/carrier /FM_MOD/carrier_
-carrier 105 7 0 8 -262144 -1 -1 2200 1;
-#X obj 441 129 tof/param route;
-#X msg 440 91 /FM_MOD/modulation/freq \$1;
-#X floatatom 444 44 5 0 0 0 - - -;
-#X connect 6 0 9 0;
-#X connect 8 0 10 0;
-#X connect 9 0 20 0;
-#X connect 10 0 20 0;
-#X connect 20 0 7 0;
-#X connect 20 0 7 1;
-#X connect 27 0 26 0;
-#X connect 28 0 27 0;
+#N canvas 0 0 680 639 hsvToRgb 0;
+#X obj 197 94 route 0;
+#X msg 197 66 \$2 \$3 \$1;
+#X obj 241 121 unpack 0 0 0;
+#X text 260 81 svh;
+#X obj 197 38 inlet hsv;
+#X obj 191 676 outlet rgb;
+#X obj 411 159 * 6;
+#X obj 390 206 % 6;
+#X obj 360 183 t f f;
+#X msg 360 159 0;
+#X text 416 206 i;
+#X obj 360 229 -;
+#X obj 241 227 *;
+#X obj 241 188 - 1;
+#X obj 241 208 * -1;
+#X obj 273 340 *;
+#X obj 273 301 - 1;
+#X obj 273 321 * -1;
+#X obj 273 279 *;
+#X obj 360 250 t f f;
+#X obj 390 272 - 1;
+#X obj 390 293 * -1;
+#X obj 312 366 *;
+#X obj 312 327 - 1;
+#X obj 312 347 * -1;
+#X obj 312 305 *;
+#X obj 241 161 t f f f;
+#X obj 248 421 pack 0 0 0 0;
+#N canvas 388 287 646 315 select 0;
+#X obj 290 37 inlet;
+#X obj 16 247 outlet;
+#X obj 92 104 t b l;
+#X obj 125 128 unpack 0 0 0 0;
+#X obj 89 43 inlet p q t v;
+#X obj 92 128 i;
+#X obj 92 151 select 0 1 2 3 4 5;
+#X obj 16 223 pack 0 0 0;
+#X obj 16 203 f;
+#X obj 96 223 pack 0 0 0;
+#X obj 96 203 f;
+#X obj 176 223 pack 0 0 0;
+#X obj 176 203 f;
+#X obj 256 223 pack 0 0 0;
+#X obj 256 203 f;
+#X obj 336 223 pack 0 0 0;
+#X obj 336 203 f;
+#X obj 416 223 pack 0 0 0;
+#X obj 416 203 f;
+#X connect 0 0 5 1;
+#X connect 2 0 5 0;
+#X connect 2 1 3 0;
+#X connect 3 0 7 2;
+#X connect 3 0 9 2;
+#X connect 3 0 12 1;
+#X connect 3 0 14 1;
+#X connect 3 0 15 1;
+#X connect 3 0 17 1;
+#X connect 3 1 10 1;
+#X connect 3 1 13 1;
+#X connect 3 1 17 2;
+#X connect 3 2 7 1;
+#X connect 3 2 11 2;
+#X connect 3 2 16 1;
+#X connect 3 3 8 1;
+#X connect 3 3 9 1;
+#X connect 3 3 11 1;
+#X connect 3 3 13 2;
+#X connect 3 3 15 2;
+#X connect 3 3 18 1;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 6 1 10 0;
+#X connect 6 2 12 0;
+#X connect 6 3 14 0;
+#X connect 6 4 16 0;
+#X connect 6 5 18 0;
+#X connect 7 0 1 0;
+#X connect 8 0 7 0;
+#X connect 9 0 1 0;
+#X connect 10 0 9 0;
+#X connect 11 0 1 0;
+#X connect 12 0 11 0;
+#X connect 13 0 1 0;
+#X connect 14 0 13 0;
+#X connect 15 0 1 0;
+#X connect 16 0 15 0;
+#X connect 17 0 1 0;
+#X connect 18 0 17 0;
+#X restore 253 466 pd select;
+#X msg 197 488 \$1 \$1 \$1;
+#X obj 136 447 clip 0 1;
+#X obj 241 141 clip 0 1;
+#X obj 280 183 clip 0 1;
+#X obj 360 119 clip 0 1;
+#X obj 360 139 select 1;
+#X msg 149 367 \$1;
+#X obj 199 383 abs;
+#X obj 238 362 abs;
+#X obj 281 396 abs;
+#X obj 194 546 unpack f f f;
+#X obj 191 577 * 255;
+#X obj 239 576 * 255;
+#X obj 306 577 * 255;
+#X obj 235 630 pack f f f;
+#X obj 196 604 int;
+#X obj 244 603 int;
+#X obj 296 608 int;
+#X connect 0 0 35 0;
+#X connect 0 1 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 31 0;
+#X connect 2 1 32 0;
+#X connect 2 2 33 0;
+#X connect 4 0 1 0;
+#X connect 6 0 8 0;
+#X connect 7 0 11 1;
+#X connect 7 0 28 1;
+#X connect 8 0 11 0;
+#X connect 8 1 7 0;
+#X connect 9 0 8 0;
+#X connect 11 0 19 0;
+#X connect 12 0 36 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 15 0 37 0;
+#X connect 16 0 17 0;
+#X connect 17 0 15 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 1;
+#X connect 19 1 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 25 1;
+#X connect 22 0 38 0;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X connect 25 0 23 0;
+#X connect 26 0 13 0;
+#X connect 26 1 18 0;
+#X connect 26 2 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 39 0;
+#X connect 29 0 39 0;
+#X connect 30 0 29 0;
+#X connect 31 0 26 0;
+#X connect 32 0 12 1;
+#X connect 32 0 27 3;
+#X connect 32 0 15 1;
+#X connect 32 0 22 1;
+#X connect 33 0 34 0;
+#X connect 34 0 9 0;
+#X connect 34 1 6 0;
+#X connect 35 0 30 0;
+#X connect 36 0 27 0;
+#X connect 37 0 27 1;
+#X connect 38 0 27 2;
+#X connect 39 0 40 0;
+#X connect 39 1 41 0;
+#X connect 39 2 42 0;
+#X connect 40 0 44 0;
+#X connect 41 0 45 0;
+#X connect 42 0 46 0;
+#X connect 43 0 5 0;
+#X connect 44 0 43 0;
+#X connect 45 0 43 1;
+#X connect 46 0 43 2;
+#X restore 172 413 pd hsvToRgb;
+#X obj 35 132 random 1024;
+#X obj 35 170 / 1024;
+#X obj 315 185 / 1024;
+#X obj 314 131 random 512;
+#X obj 313 158 + 512;
+#X obj 147 209 / 1024;
+#X obj 145 182 + 512;
+#X obj 145 154 random 512;
+#X obj 197 46 metro 5000;
+#X obj 177 12 loadbang;
+#X msg 46 226 \$1 5000;
+#X msg 146 235 \$1 5000;
+#X msg 320 254 \$1 5000;
+#X obj 239 361 pack 0.4423 0.87 0.67;
+#X obj 50 258 line 0.44 150;
+#X obj 148 269 line 0.87 150;
+#X obj 320 291 line 0.67 150;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 3 1 13 0;
+#X connect 3 2 9 0;
+#X connect 4 0 14 0;
+#X connect 5 0 1 0;
+#X connect 6 0 7 0;
+#X connect 7 0 16 0;
+#X connect 8 0 18 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 17 0;
+#X connect 12 0 11 0;
+#X connect 13 0 12 0;
+#X connect 14 0 3 0;
+#X connect 15 0 14 0;
+#X connect 16 0 20 0;
+#X connect 17 0 21 0;
+#X connect 18 0 22 0;
+#X connect 19 0 5 0;
+#X connect 20 0 19 0;
+#X connect 21 0 19 1;
+#X connect 22 0 19 2;
+#X restore 325 80 pd anim;
+#X obj -23 2 cnv 15 400 100 empty \$0c empty 20 12 0 14 -54577 -262144
+0;
+#X text -18 54 author: mrtoftrash@gmail.com;
+#X text -19 33 tags: state routing;
+#X text -17 1 description: [param] is a state saving and message routing
+system.;
+#X text -19 75 version: 2009-10-27 (de localized release);
+#X text -20 341 Keyword for defining the param path inside abstractions:
+;
diff --git a/help/argument-abs.pd b/help/test-argument.pd
index d227c72..d227c72 100644
--- a/help/argument-abs.pd
+++ b/help/test-argument.pd
diff --git a/help/param2-abs.pd b/help/test-param-2.pd
index 867a6e9..b39b6f1 100644
--- a/help/param2-abs.pd
+++ b/help/test-param-2.pd
@@ -14,6 +14,9 @@
#X obj 238 148 loadbang;
#X obj 174 122 tof/param /freq 3 /g nbx;
#X obj 237 172 tof/param /index 20 /g nbx;
+#X obj 477 36 inlet;
+#X obj 478 71 tof/param path;
+#X obj 480 98 print path;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 3 0 1 1;
@@ -22,3 +25,5 @@
#X connect 11 0 13 0;
#X connect 12 0 2 0;
#X connect 13 0 3 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
diff --git a/help/test-param.pd b/help/test-param.pd
new file mode 100644
index 0000000..5b88251
--- /dev/null
+++ b/help/test-param.pd
@@ -0,0 +1,42 @@
+#N canvas 9 299 932 527 10;
+#X obj 285 477 outlet~;
+#X obj 35 117 inlet;
+#X text 575 26 This abstraction is an example for the param external.
+;
+#X floatatom 283 247 0 0 0 0 - - -;
+#X obj 283 317 +~;
+#X text 213 168 carrier;
+#X text 212 186 frequency;
+#X obj 284 359 osc~;
+#X obj 36 193 print PARAM_NOTFOUND;
+#X obj 283 171 loadbang;
+#X obj 285 428 *~;
+#X obj 375 400 line~;
+#X msg 376 376 \$1 100;
+#X obj 377 325 loadbang;
+#X obj 377 349 tof/param /volume 0 /g slider 0 1;
+#X obj 660 195 iemguts/propertybang;
+#X obj 660 223 tof/param gui;
+#X obj 35 162 tof/param route;
+#X obj 283 202 tof/param /carrier 800 /g slider 200 2000;
+#X obj 383 299 test-param-2 /id modulation;
+#X obj 469 442 tof/param /a;
+#X obj 470 471 outlet;
+#X obj 642 476 outlet;
+#X obj 640 448 tof/param /b;
+#X connect 1 0 17 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 7 0 10 0;
+#X connect 9 0 18 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 1;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 15 0 16 0;
+#X connect 17 0 8 0;
+#X connect 18 0 3 0;
+#X connect 19 0 4 1;
+#X connect 20 0 21 0;
+#X connect 23 0 22 0;