#N canvas 180 33 553 653 10;
#X obj 180 333 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
0;
#X obj 105 279 cnv 15 60 37 empty empty empty 20 12 0 14 -261234 -66577
0;
#X obj -2 1279 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12
0 14 -228856 -66577 0;
#X obj -2 0 cnv 15 552 40 empty \$0-pddp.cnv.header preset_node 3 12
0 18 -204280 -1 0;
#X obj -2 372 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 8 12 0 13
-228856 -1 0;
#N canvas 418 235 482 332 META 0;
#X text 12 125 HELP_PATCH_AUTHORS Jonathan Wilkes revised the patch
to conform to the PDDP template for Pd version 0.42.;
#X text 12 5 KEYWORDS control storage;
#X text 12 25 LICENSE;
#X text 12 45 DESCRIPTION universal preset system for Pd-l2ork;
#X text 12 65 INLET_0 anything;
#X text 12 85 OUTLET_0 anything;
#X text 12 105 AUTHOR Ivica Ico Bukvic (c) 2012 <ico@vt.edu>;
#X restore 498 1281 pd META;
#X obj -2 796 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0
13 -228856 -1 0;
#X obj -2 1000 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8
12 0 13 -228856 -1 0;
#X obj -2 1050 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 8
12 0 13 -228856 -1 0;
#X obj 76 380 cnv 17 3 410 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#N canvas 102 481 428 93 Related_objects 0;
#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
14 -204280 -1 0;
#X text 7 1 [preset_node] Related Objects;
#X obj 22 36 preset_hub default %hidden%;
#X obj 141 36 preset_node_array;
#X restore 99 1281 pd Related_objects;
#X obj 76 805 cnv 17 3 40 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
-162280 0;
#X obj 2 1281 pddp/pddplink all_about_help_patches.pd -text Usage Guide
;
#X text 9 20 universal preset system for pd-l2ork;
#X obj 472 3 preset_node;
#X obj 18 202 preset_hub test %hidden% %node% 1 25 %preset% 1 55.2
%preset% 2 21.4 %preset% 0 123 %node% 2 42 1 %preset% 0 zero %preset%
1 one %preset% 2 two %node% 1 44 %preset% 0 aaa 32 1 %preset% 1 2.24
nlah 1 %preset% 2 1 2 3 4 %node% 2 50 0 %preset% 0 0 %preset% 1 1 %preset%
2 2 %node% 2 98 0;
#X msg 78 74 store \$1;
#X msg 78 124 recall \$1;
#X floatatom 78 50 5 0 0 0 - - -, f 5;
#X floatatom 78 100 5 0 0 0 - - -, f 5;
#X msg 28 73 purge;
#X msg 18 51 reset;
#X msg 79 174 clear \$1;
#X floatatom 79 150 5 0 0 0 - - -, f 5;
#X obj 18 231 print hub_test_says;
#X obj 186 309 preset_node test;
#X floatatom 186 337 5 0 0 0 - - -, f 5;
#X msg 195 255 purge;
#X msg 143 232 reset;
#X msg 246 254 clearall \$1;
#X floatatom 246 233 5 0 0 0 - - -, f 5;
#X obj 377 50 cnv 15 156 279 empty empty empty 20 12 0 14 -233017 -66577
0;
#X msg 448 83 store \$1;
#X msg 448 134 recall \$1;
#X floatatom 448 59 5 0 0 0 - - -, f 5;
#X floatatom 448 110 5 0 0 0 - - -, f 5;
#X msg 396 82 purge;
#X msg 387 60 reset;
#X msg 448 184 clear \$1;
#X floatatom 448 160 5 0 0 0 - - -, f 5;
#X obj 387 217 preset_hub another %hidden% %node% 1 43 %preset% 0 -5.1
%preset% 1 22 %preset% 2 1.001 %node% 2 50 2 %preset% 0 41 %preset%
1 101 %preset% 2 7.13;
#X obj 387 244 print hub_another_says;
#X obj 18 263 hub_node_abs;
#X obj 387 270 preset_node another;
#X obj 145 73 preset_node test;
#X obj 185 181 list;
#X msg 223 117 aaa 32 1;
#X msg 233 137 2.24 nlah 1;
#X obj 185 203 print ----result----;
#X msg 238 157 list 1 2 3 4;
#N canvas 523 458 404 185 sub 0;
#X obj 216 83 preset_node test;
#X floatatom 216 106 5 0 0 0 - - -, f 5;
#X obj 92 83 preset_node another;
#X floatatom 92 105 5 0 0 0 - - -, f 5;
#X text 90 55 a preset in a subpatch;
#X connect 0 0 1 0;
#X connect 2 0 3 0;
#X restore 115 289 pd sub;
#X text 96 399 clearall;
#X text 96 419 purge;
#X text 97 804 anything;
#X text 167 804 - [preset_node] makes an invisible connection from
the object below it back to its inlet. It can recall whatever type
of message the connected object can output.;
#X text 96 1091 Scope- [preset_hub foo] is local to its patch and all
of that patch's children (i.e. \, subpatches and abstractions).;
#X obj 96 1119 pddp/pddplink preset_hub-help.pd;
#N canvas 411 177 428 483 More_info 0;
#X obj 271 378 cnv 15 39 23 empty empty empty 20 12 0 14 -261234 -66577
0;
#X obj 275 382 hradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144
-1 -1 0;
#X obj 52 378 cnv 15 36 25 empty empty empty 20 12 0 14 -261234 -66577
0;
#X msg 58 382 set;
#X obj 30 165 cnv 15 349 98 empty \$0-pddp.cnv.subheading empty 3 12
0 14 -191407 -1 0;
#X obj 31 166 cnv 15 347 96 empty \$0-pddp.cnv.subheading empty 3 12
0 14 -262130 -1 0;
#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
14 -204280 -1 0;
#X text 7 1 [preset_hub] More info on scope;
#X text 19 37 To get a better idea of how [preset_hub] scope works
\, open another copy of this help patch \, and notice that recalling
values in one copy doesn't affect the other one.;
#X text 19 97 Similarly \, if you have [preset_hub foo] inside abstraction
[bar] \, it is guaranteed to apply only to that abstraction instance
(and its children)-- even if you put another [preset_hub foo] on the
same canvas as the abstraction:;
#X text 40 231 [bar] <-- [preset_hub foo] inside here;
#X text 168 187 it has its own [preset_hub foo];
#X text 168 205 inside it.;
#X text 40 171 [preset_hub foo] <-- this won't apply to [bar] because
;
#X obj 52 430 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
0;
#X msg 213 406 store \$1;
#X obj 213 382 hradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144
-1 -1 0;
#X msg 275 406 recall \$1;
#X msg 92 382 set some_scope;
#X obj 58 407 preset_node some_scope;
#X obj 213 433 preset_hub %hidden% %node% 2 60 17 %preset% 0 50 %preset%
1 100 %node% 2 60 19 %preset% 0 50 %preset% 1 100 %node% 1 19 %preset%
0 1 %preset% 1 5;
#X floatatom 58 435 5 0 0 0 - - -, f 5;
#X text 19 275 Setting node scope via "set" message allows for dynamic
scope switching. If you wish to set it to the default (also known as
null or "") scope \, you should use empty "set" message. Notice in
the example below how hub recall does not work until you click on the
"set" message which sets scope node to null as is the case with the
hub.;
#X connect 1 0 17 0;
#X connect 3 0 19 0;
#X connect 15 0 20 0;
#X connect 16 0 15 0;
#X connect 17 0 20 0;
#X connect 18 0 19 0;
#X connect 19 0 21 0;
#X restore 457 1091 pd More_info;
#X text 166 419 - purge all orphaned/unused nodes (forwarded to hub)
;
#X text 96 470 reset;
#X text 96 439 recall;
#X text 96 510 store;
#X text 166 470 - reset all preset node data (forwarded to hub);
#X text 166 510 - store the current state at index n (forwarded to
hub);
#X text 166 399 - clear all node data at preset n (forwarded to hub)
;
#X text 96 379 clear;
#X text 166 379 - clear this node data at preset n (forwarded to hub)
;
#X text 96 490 set;
#X text 166 490 - change context (hub) node is paired with;
#X msg 229 284 set another;
#X msg 308 284 set test;
#X obj 381 293 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
0;
#X floatatom 387 298 5 0 0 0 - - -, f 5;
#X text 169 1017 - OPTIONAL scope for this preset (defaults to null
or "");
#X text 96 658 read;
#X text 96 688 write;
#X text 96 718 readpreset;
#X text 96 758 writepreset;
#X text 166 718 - read one preset (optional 3rd argumemnt \, otherwise
preset 0) from a file named in the second argument (forwarded to hub)
;
#X text 166 758 - write one preset (optional 3rd argumemnt \, otherwise
preset 0) to a file named in the second argument (forwarded to hub)
;
#X text 96 1139 Reading and writing- see preset_hub-help.pd for more
info.;
#X obj 96 1153 pddp/pddplink preset_hub-help.pd;
#X msg 186 232 clear 0;
#X text 96 1214 Presets with Arrays- arrays cannot be accessed directly
as they have no direct inlets and outlets. For this reason we use preset_node_array
abstraction to read/write to/from arrays. For additional info see;
#X obj 288 1253 pddp/pddplink preset_node_array-help.pd;
#X text 79 1017 1) symbol/float;
#X text 166 439 - recall the values stored at index n where n must
be >= 0 (forwarded to hub);
#X text 96 1060 Recall values- only values 0 or greater are valid.
No negative preset numbers are possible.;
#X text 96 1171 Default values- depending on the expected data format
messages when supplied no argument default to null (empty string) or
0;
#X text 96 529 sort;
#X text 166 529 - sort all presets chronologically and assign them
new preset numbers one after another starting with a value n or 0 if
no value provided (forwarded to hub);
#X text 166 688 - write all presets to a file named in the first argument
(forwarded to hub);
#X text 166 658 - reads all presets from a file named in the first
argument (forwarded to hub);
#X obj 76 853 cnv 17 3 142 empty \$0-pddp.cnv.let.0 1 5 9 0 16 -228856
-162280 0;
#X msg 145 51 status;
#X obj 238 94 print node_test_says;
#X text 97 852 list;
#N canvas 433 184 450 243 preset_without_a_hub_example 0;
#X msg 93 108 status;
#X obj 252 151 print node_test_says;
#X obj 93 130 preset_node nonexistent_hub;
#X text 51 66 click on status and note how its status is -1 \, meaning
there is no hub it is compatible with;
#X connect 0 0 2 0;
#X connect 2 1 1 0;
#X restore 167 976 pd preset_without_a_hub_example;
#X text 96 574 status;
#X text 166 574 - outputs status via node's right (status) outlet whether
any of hub's nodes have been altered since the last time a preset was
stored (0=no \, 1=yes) \, effectively reporting if the current hub's
state is saved or not (also referred to as dirty) \; in addition to
reporting hub's state \, if the node is not paired with any hub \,
it will report a -1;
#X text 167 852 - status outlet where [preset_node] outputs status
of the hub it is paired with (if any). Like hubs \, nodes report hub's
two states: 0 for state being clean (as in no nodes have changed values
since last preset was stored) \, and 1 for dirty (meaning one or more
nodes have changed values since last store). In addition \, node can
also report a state of -1 which means it has not been paired with a
hub yet (or in other words \, it did not find a hub it can pair with
based on requested parameters \, namely scope).;
#X connect 15 0 24 0;
#X connect 16 0 15 0;
#X connect 17 0 15 0;
#X connect 18 0 16 0;
#X connect 19 0 17 0;
#X connect 20 0 15 0;
#X connect 21 0 15 0;
#X connect 22 0 15 0;
#X connect 23 0 22 0;
#X connect 25 0 26 0;
#X connect 27 0 25 0;
#X connect 28 0 25 0;
#X connect 29 0 25 0;
#X connect 30 0 29 0;
#X connect 32 0 40 0;
#X connect 33 0 40 0;
#X connect 34 0 32 0;
#X connect 35 0 33 0;
#X connect 36 0 40 0;
#X connect 37 0 40 0;
#X connect 38 0 40 0;
#X connect 39 0 38 0;
#X connect 40 0 41 0;
#X connect 43 0 72 0;
#X connect 44 0 45 0;
#X connect 44 1 95 0;
#X connect 45 0 48 0;
#X connect 46 0 45 0;
#X connect 47 0 45 0;
#X connect 49 0 45 0;
#X connect 69 0 25 0;
#X connect 70 0 25 0;
#X connect 82 0 25 0;
#X connect 94 0 44 0;
