From 8fed56035ee68e8b1e9b7dc5f98742c87c909b8e Mon Sep 17 00:00:00 2001
From: Ivica Ico Bukvic <ico@vt.edu>
Date: Sun, 4 Aug 2013 13:42:14 -0400
Subject: [PATCH] added preset_node_array abstraction and supporting help files
 (plus improvements to preset_node and preset_hub)

---
 pd/doc/5.reference/preset_hub-help.pd        |  21 ++--
 pd/doc/5.reference/preset_node-help.pd       |  16 +--
 pd/doc/5.reference/preset_node_array-help.pd | 108 +++++++++++++++++++
 pd/doc/5.reference/preset_node_array.pd      |  89 +++++++++++++++
 4 files changed, 220 insertions(+), 14 deletions(-)
 create mode 100644 pd/doc/5.reference/preset_node_array-help.pd
 create mode 100644 pd/doc/5.reference/preset_node_array.pd

diff --git a/pd/doc/5.reference/preset_hub-help.pd b/pd/doc/5.reference/preset_hub-help.pd
index de352cdb6..415dd98fd 100644
--- a/pd/doc/5.reference/preset_hub-help.pd
+++ b/pd/doc/5.reference/preset_hub-help.pd
@@ -1,9 +1,9 @@
-#N canvas 138 24 553 651 10;
+#N canvas 214 51 553 651 10;
 #X obj 109 282 cnv 15 60 37 empty empty empty 20 12 0 14 -261234 -66577
 0;
 #X obj 183 294 cnv 15 44 27 empty empty empty 20 12 0 14 -204280 -66577
 0;
-#X obj 0 1041 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
+#X obj 0 1111 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
 14 -228856 -66577 0;
 #X obj 0 0 cnv 15 552 40 empty \$0-pddp.cnv.header preset_hub 3 12
 0 18 -204280 -1 0;
@@ -18,7 +18,7 @@ to conform to the PDDP template for Pd version 0.42.;
 #X text 12 85 OUTLET_0 anything;
 #X text 12 105 AUTHOR Ivica Ico Bukvic (c) 2012 <ico@vt.edu>;
 #X text 12 65 INLET_0 clear purge recall reset store;
-#X restore 500 1043 pd META;
+#X restore 500 1113 pd META;
 #X obj 0 563 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0
 13 -228856 -1 0;
 #X obj 0 608 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12
@@ -27,15 +27,16 @@ to conform to the PDDP template for Pd version 0.42.;
 0 13 -228856 -1 0;
 #X obj 78 357 cnv 17 3 200 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
 -162280 0;
-#N canvas 102 481 428 108 Related_objects 0;
+#N canvas 102 481 428 97 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 obj 22 36 preset_node;
 #X text 7 1 [preset_hub] Related Objects;
-#X restore 101 1043 pd Related_objects;
+#X obj 98 36 preset_node_array;
+#X restore 101 1113 pd Related_objects;
 #X obj 78 572 cnv 17 3 17 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
 -162280 0;
-#X obj 4 1043 pddp/pddplink all_about_help_patches.pd -text Usage Guide
+#X obj 4 1113 pddp/pddplink all_about_help_patches.pd -text Usage Guide
 ;
 #X text 11 20 universal preset system for pd-l2ork;
 #X obj 20 202 preset_hub test %hidden% %node% 2 31 1 %preset% 1 problems
@@ -104,7 +105,8 @@ of that patch's children (i.e. \, subpatches and abstractions).;
 #X text 168 376 - purge all orphaned/unused nodes;
 #X text 98 356 clear;
 #X text 168 356 - clears preset n for all nodes;
-#X obj 479 3 preset_hub  %hidden% %node% 2 10 1;
+#X obj 479 3 preset_hub  %hidden% %node% 2 10 1 %node% 2 90 37 %node%
+3 10 3 37;
 #X obj 189 271 preset_node test;
 #X floatatom 189 299 5 0 0 0 - - -;
 #X msg 198 211 purge;
@@ -225,6 +227,10 @@ Reading a single preset will automatically recall it as soon as the
 preset has been loaded.;
 #X text 98 1007 Default values- messages when supplied no argument
 default to 0 or empty string;
+#X text 98 1041 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 290 1080 pddp/pddplink preset_node_array-help.pd;
 #X connect 14 0 20 0;
 #X connect 15 0 14 0;
 #X connect 16 0 14 0;
@@ -249,7 +255,6 @@ default to 0 or empty string;
 #X connect 50 0 15 0;
 #X connect 51 0 19 0;
 #X connect 52 0 23 0;
-#X connect 61 0 67 0;
 #X connect 61 0 62 0;
 #X connect 63 0 61 0;
 #X connect 64 0 61 0;
diff --git a/pd/doc/5.reference/preset_node-help.pd b/pd/doc/5.reference/preset_node-help.pd
index e785cd806..4892198a4 100644
--- a/pd/doc/5.reference/preset_node-help.pd
+++ b/pd/doc/5.reference/preset_node-help.pd
@@ -3,7 +3,7 @@
 0;
 #X obj 105 279 cnv 15 60 37 empty empty empty 20 12 0 14 -261234 -66577
 0;
-#X obj -2 865 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
+#X obj -2 930 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;
@@ -18,7 +18,7 @@ to conform to the PDDP template for Pd version 0.42.;
 #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 867 pd META;
+#X restore 498 932 pd META;
 #X obj -2 633 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0
 13 -228856 -1 0;
 #X obj -2 688 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12
@@ -27,15 +27,16 @@ to conform to the PDDP template for Pd version 0.42.;
 12 0 13 -228856 -1 0;
 #X obj 76 347 cnv 17 3 280 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
 -162280 0;
-#N canvas 102 481 428 108 Related_objects 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 restore 99 867 pd Related_objects;
+#X obj 141 36 preset_node_array;
+#X restore 99 932 pd Related_objects;
 #X obj 76 642 cnv 17 3 17 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
 -162280 0;
-#X obj 2 867 pddp/pddplink all_about_help_patches.pd -text Usage Guide
+#X obj 2 932 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;
@@ -199,6 +200,10 @@ info.;
 #X msg 186 190 clear 0;
 #X text 96 827 Default values- messages when supplied no argument default
 to 0 or empty string;
+#X text 96 861 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 900 pddp/pddplink preset_node_array-help.pd;
 #X connect 16 0 25 0;
 #X connect 17 0 16 0;
 #X connect 18 0 16 0;
@@ -209,7 +214,6 @@ to 0 or empty string;
 #X connect 23 0 16 0;
 #X connect 24 0 23 0;
 #X connect 26 0 27 0;
-#X connect 26 0 45 0;
 #X connect 28 0 26 0;
 #X connect 29 0 26 0;
 #X connect 30 0 26 0;
diff --git a/pd/doc/5.reference/preset_node_array-help.pd b/pd/doc/5.reference/preset_node_array-help.pd
new file mode 100644
index 000000000..5c44250ce
--- /dev/null
+++ b/pd/doc/5.reference/preset_node_array-help.pd
@@ -0,0 +1,108 @@
+#N canvas 317 67 553 459 10;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array myarray1 64 float 1;
+#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 1 63 0 201 86 1 0 0;
+#X restore 63 219 graph;
+#X obj 63 171 preset_hub foo %hidden% %node% 2 1 0 %preset% 1 1 1 1
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 %preset%
+3 0 0 0 0.043479 0.0869579 0.130437 0.173916 0.195655 0.217395 0.217395
+0.239134 0.260874 0.347832 0.369571 0.391311 0.391311 0.478269 0.608706
+0.652184 0.782621 0.869579 0.913058 0.608706 0.217395 0.478269 0.608706
+0.739142 0.913058 0.869579 0.391311 0.478269 0.608706 0.739142 0.782621
+0.608706 0.391311 0.173916 0 0 0.0869579 0.347832 0.391311 0.173916
+0 0 0 0 0 0 0.043479 0 0 0 0 0.173916 0.304353 0.130437 0 0 0.217395
+0.391311 0.260874 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0869579 0.130437 0.152176 0.217395
+0 0 0 0 0.043479 0.043479 0.043479 0.043479 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0.043479 0.0869579 0.130437 0.173916 0.195655 0.217395
+0.173916 0.130437 0.130437 0.130437 0.130437 0.0869579 0.0869579 0.0869579
+0.0869579 0.0869579 0.0869579 0.0869579 0.0869579 0.0869579 0.0869579
+0.0869579 0.0869579 0.0869579 0.130437 0.130437 0.130437 0.0869579
+0.0869579 0.0869579 0.130437 0.217395 0.304353 0.391311 0.521748 0.652184
+0.695663 0.8261 0.913058 0.913058 0.913058 0.869579 0.8261 0.695663
+0.478269 0.217395 0.130437 0.0869579 0.043479 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0.043479 0.0869579 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.043479 0 0
+0 0 0.173916 0.304353 0.130437 0 0 0.217395 0.391311 0.260874 0 0 0
+0 0 %preset% 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 %preset% 2 1 1 0.956522 0.78261 0.652176 0 0 0 0 0.0434837
+0.173918 0.304352 0.434786 0.695654 0.826088 1 1 0.0434837 0 0 0 0
+0 0 0 0 0 0 0.0434837 0.304352 0.739132 0.869566 0.891305 0.956522
+0.956522 0.956522 1 1 1 0.739132 5.72205e-06 0 0 0 0 0.0217419 0.0434837
+0.217396 0.478264 0.695654 0.78261 1 1 1 1 1 0.956522 0.34783 0.13044
+0.0869617 0.0434837 5.72205e-06 0 0.78261 0.78261 0.78261 0.78261 %node%
+2 22 33 %node% 2 22 37 %preset% 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %preset% 1 1 1 1 1 1 1 1 1 1 1 1 1
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 %preset% 2 0 0 0.0116279
+0.0348837 0.0697675 0.0930233 0.116279 0.139535 0.162791 0.209302 0.255814
+0.290698 0.348837 0.418605 0.593024 0.709303 0.83721 0.976745 0.941861
+0.895349 0.825582 0.790698 0.755814 0.732558 0.697675 0.662791 0.639535
+0.616279 0.593024 0.55814 0.534884 0.523256 0.511628 0.5 0.5 0.5 0.488372
+0.488372 0.488372 0.488372 0.488372 0.5 0.5 0.5 0.5 0.488372 0.476744
+0.476744 0.465117 0.453489 0.430233 0.406977 0.360465 0.313954 0.27907
+0.232558 0.186047 0.139535 0.104651 0.0581396 0.0232558 0 0 0 0 0 0
+%preset% 3 0 0 0.0232558 0.0465117 0.0930233 0.186047 0.302326 0.372093
+0.325582 0.244186 0.104651 0.139535 0.22093 0.27907 0.325582 0.360465
+0.372093 0.406977 0.453489 0.802326 0.732558 0.651163 0.523256 0.465117
+0.313954 0.232558 0.22093 0.244186 0.290698 0.313954 0.383721 0.418605
+0.476744 0.488372 0.406977 0.360465 0.360465 0.441861 0.488372 0.511628
+0.476744 0.418605 0.383721 0.325582 0.430233 0.360465 0.151163 0.104651
+0.0930233 0.0930233 0.104651 0.139535 0.151163 0.139535 0.104651 0.0930233
+0.0697675 0.0697675 0.0348837 0 0 0 0 0 0 0 0;
+#X msg 81 136 store \$1;
+#X msg 63 83 recall \$1;
+#X obj 63 61 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj 81 114 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj 39 -2 cnv 15 552 40 empty \$0-pddp.cnv.header preset_node_array
+3 12 0 18 -204280 -1 0;
+#X obj 479 3 preset_node_array;
+#X obj 39 435 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
+14 -228856 -66577 0;
+#X obj 39 326 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 8 12 0 13
+-228856 -1 0;
+#N canvas 102 436 482 332 META 0;
+#X text 18 16 KEYWORDS control storage;
+#X text 18 36 LICENSE;
+#X text 18 96 OUTLET_0 anything;
+#X text 18 76 INLET_0 clear purge recall reset store;
+#X text 18 116 AUTHOR András Murányi 2013 based on rc-patches by
+Dan Wilcox;
+#X text 18 136 HELP_PATCH_AUTHORS András Murányi;
+#X text 18 56 DESCRIPTION Experimental Array saving for Pd-l2ork;
+#X restore 539 437 pd META;
+#X obj 39 370 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12
+0 13 -228856 -1 0;
+#X obj 117 334 cnv 17 3 30 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
+-162280 0;
+#N canvas 102 481 427 84 Related_objects 0;
+#X obj 1 0 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
+14 -204280 -1 0;
+#X text 7 1 [preset_node_array] Related Objects;
+#X obj 21 36 preset_node;
+#X obj 97 36 preset_hub  %hidden% %node% 2 13 2;
+#X restore 140 437 pd Related_objects;
+#X obj 43 437 pddp/pddplink all_about_help_patches.pd -text Usage Guide
+;
+#X text 120 387 1) symbol;
+#X text 212 406 - OPTIONAL scope for this preset (defaults to null
+or "");
+#X text 137 333 see;
+#X obj 163 334 preset_node;
+#X text 120 406 2) symbol;
+#X text 211 387 - Array name;
+#X text 50 18 Array preset saving abstraction using preset_node;
+#X obj 337 219 preset_node_array myarray1 foo;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
diff --git a/pd/doc/5.reference/preset_node_array.pd b/pd/doc/5.reference/preset_node_array.pd
new file mode 100644
index 000000000..3b3243046
--- /dev/null
+++ b/pd/doc/5.reference/preset_node_array.pd
@@ -0,0 +1,89 @@
+#N canvas 125 105 456 572 10;
+#X obj -30 451 until;
+#X obj -30 473 list append;
+#X obj -30 495 list split 1;
+#X obj 57 534 f;
+#X obj 87 534 + 1;
+#X msg 72 512 0;
+#X obj -30 517 t f b;
+#X obj -6 410 t b l b;
+#X text 45 409 write incoming list to table;
+#X obj 39 316 list prepend;
+#X obj 39 339 t l;
+#X obj 39 365 list;
+#X obj 138 161 until;
+#X obj 138 208 f;
+#X obj 168 208 + 1;
+#X msg 183 161 0;
+#X obj 138 129 35;
+#X text 161 129 table size;
+#X obj 153 105 + 3;
+#X text 180 105 multiple of 4 + 3;
+#X text 136 245 read out table to list;
+#X obj 153 84 expr size("$s1");
+#X obj 266 154 inlet;
+#X obj 266 177 t b a;
+#X obj 293 200 prepend set;
+#X msg 266 225;
+#X obj 93 41 t 1 b b b b 0;
+#X obj -6 387 gate 1 1;
+#X text 180 13 pd-l2ork only: bang on manual changeOR manually send
+bang on loading a file;
+#X text 219 543 Based on rc-patches by Dan WilcoxCleaned up by Ivica
+Ico Bukvic;
+#X obj 93 18 r \$1_changed;
+#X obj 153 63 symbol \$1;
+#X obj 138 229 tabread \$1;
+#X obj -6 558 tabwrite \$1;
+#X obj 329 134 loadbang;
+#X obj 329 156 symbol \$2;
+#X obj 329 178 route 0;
+#X obj 290 266 preset_node;
+#X msg 368 200 set \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 0;
+#X connect 2 1 1 1;
+#X connect 2 2 0 1;
+#X connect 3 0 4 0;
+#X connect 3 0 33 1;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 33 0;
+#X connect 6 1 3 0;
+#X connect 7 0 0 0;
+#X connect 7 1 1 1;
+#X connect 7 2 5 0;
+#X connect 9 0 10 0;
+#X connect 10 0 9 1;
+#X connect 10 0 11 0;
+#X connect 11 0 27 1;
+#X connect 11 0 37 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 0 32 0;
+#X connect 14 0 13 1;
+#X connect 15 0 13 1;
+#X connect 16 0 12 0;
+#X connect 18 0 16 1;
+#X connect 21 0 18 0;
+#X connect 22 0 23 0;
+#X connect 23 0 25 0;
+#X connect 23 1 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 37 0;
+#X connect 26 0 27 0;
+#X connect 26 1 9 1;
+#X connect 26 2 16 0;
+#X connect 26 3 15 0;
+#X connect 26 4 31 0;
+#X connect 26 5 27 0;
+#X connect 27 0 7 0;
+#X connect 30 0 26 0;
+#X connect 31 0 21 0;
+#X connect 32 0 9 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 1 38 0;
+#X connect 37 0 11 0;
+#X connect 38 0 37 0;
-- 
GitLab