aboutsummaryrefslogtreecommitdiff
path: root/doc/pddp
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2004-05-27 16:53:47 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2004-05-27 16:53:47 +0000
commit7686b96d2119d2d70b329a02a8af52792ca2d9f1 (patch)
tree33485502a101517d20fcadb463dc2e3619f4f2ce /doc/pddp
parent62ef0efa7c014cfc248c65cda4cea2a1cbf9fb1e (diff)
added a number of sketches for the help structure; most are not close to completion
svn path=/trunk/; revision=1770
Diffstat (limited to 'doc/pddp')
-rw-r--r--doc/pddp/all_about_cyclone.pd24
-rw-r--r--doc/pddp/all_about_data_structures.pd32
-rw-r--r--doc/pddp/all_about_data_types.pd126
-rw-r--r--doc/pddp/all_about_lists_vs_anythings.pd59
-rw-r--r--doc/pddp/all_about_looping.pd109
-rw-r--r--doc/pddp/all_about_symbol_construction.pd43
-rw-r--r--doc/pddp/dynamic_sends.pd27
-rw-r--r--doc/pddp/netreceive-help.pd13
-rw-r--r--doc/pddp/pddp-style-guide.pd12
-rw-r--r--doc/pddp/pddp.pd65
-rw-r--r--doc/pddp/scalar-help.pd30
-rw-r--r--doc/pddp/select-help.pd83
-rw-r--r--doc/pddp/set-help.pd40
-rw-r--r--doc/pddp/standard_gui_elements.pd24
-rw-r--r--doc/pddp/sublist-help.pd14
15 files changed, 670 insertions, 31 deletions
diff --git a/doc/pddp/all_about_cyclone.pd b/doc/pddp/all_about_cyclone.pd
new file mode 100644
index 00000000..3f19cb47
--- /dev/null
+++ b/doc/pddp/all_about_cyclone.pd
@@ -0,0 +1,24 @@
+#N canvas 588 66 510 630 10;
+#X obj 4 4 cnv 15 500 20 empty empty all_about_cyclone 20 10 1 18 -233017
+-66577 0;
+#X obj 471 5 pddp;
+#X text 293 604 updated for Pd version 0.37.1;
+#X text 49 199 - hammer contains Pd versions of Max objects;
+#X text 49 220 - sickle contains Pd versions of MSP objects;
+#X text 50 240 - optional dummies sub-library \, which contains a large
+set of dummy classes \, serving as substitutions for Max/MSP classes
+not (yet) implemented in the cyclone;
+#X text 51 285 - cyclone sub-library \, taking care of loading the
+other three components \, and which itself contains: a small set of
+operators (!- \, !/ \, ==~ \, !=~ \, <~ \, <=~ \, >~ \, >=~ \, !-~
+\, !/~ \, %~ \, +=~) and an importing mechanism provided by the cyclone
+class;
+#X text 41 63 Cyclone is a library of Pure Data classes \, bringing
+some level of compatibility between Max/MSP and Pd environments. Although
+being itself in the early stage of development \, it is meant to eventually
+become part of a much larger project \, aiming at unification and standardization
+of computer musician's tools. In its current form \, cyclone is mainly
+for people using both Max and Pd \, and thus wanting to develop cross-platform
+patches \, but it also provide many very useful objects for the Pd-only
+user.;
+#X text 7 462 For more info: http://suita.chopin.edu.pl/~czaja/miXed/externs/cyclone.html;
diff --git a/doc/pddp/all_about_data_structures.pd b/doc/pddp/all_about_data_structures.pd
new file mode 100644
index 00000000..1c04a733
--- /dev/null
+++ b/doc/pddp/all_about_data_structures.pd
@@ -0,0 +1,32 @@
+#N canvas 317 126 761 632 10;
+#X text 43 164 see also:;
+#X obj 84 219 template;
+#X obj 161 277 append;
+#X obj 54 187 getsize;
+#X obj 121 187 setsize;
+#X obj 149 219 element;
+#X obj 216 277 sublist;
+#X obj 35 277 pointer;
+#X obj 99 277 get;
+#X obj 37 377 drawnumber;
+#X obj 38 416 plot;
+#X obj 114 376 drawpolygon;
+#X obj 104 414 filledpolygon;
+#X obj 204 378 drawcurve;
+#X obj 203 414 filledcurve;
+#X text 34 339 drawing objects:;
+#X text 9 34 The original idea behind the creation of Pd was to make
+a Max-like environment that also had a means of graphically specifying
+a score. Pd's "data structures" are the system devised for this purpose.
+;
+#X text 33 257 for manipulating data structures:;
+#X obj 4 -3 cnv 15 750 20 empty empty all_about_data_structures 2 10
+1 18 -233017 -66577 0;
+#X obj 719 -1 pddp;
+#X obj 35 219 struct;
+#X obj 129 277 set;
+#N canvas 0 22 454 304 display 0;
+#X restore 321 581 pd display;
+#X text 9 98 "scalar" is the basic graphical component of Pd's data
+structures. When working with data structures \, all of the objects
+pertain to reading and editing "scalars".;
diff --git a/doc/pddp/all_about_data_types.pd b/doc/pddp/all_about_data_types.pd
new file mode 100644
index 00000000..49fbae03
--- /dev/null
+++ b/doc/pddp/all_about_data_types.pd
@@ -0,0 +1,126 @@
+#N canvas 290 43 848 640 10;
+#X obj 434 530 route;
+#X obj 213 411 symbol;
+#X obj 153 432 int;
+#X floatatom 91 286 5 0 0 0 - - -;
+#X text 130 286 float;
+#X symbolatom 182 286 10 0 0 0 - - -;
+#X text 263 287 symbol;
+#X obj 271 411 pointer;
+#X obj 519 109 symbol;
+#X symbolatom 519 156 0 0 0 0 - - -;
+#X msg 528 133 word;
+#X msg 519 91 test;
+#X obj 42 414 bang;
+#X obj 42 434 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 61 434 aka [bng];
+#X msg 502 69 symbol this;
+#X text 576 111 casting as a symbol;
+#X text 593 68 set type directly;
+#X text 567 134 does not work (check console messages);
+#X floatatom 432 131 5 0 0 0 - - -;
+#X msg 437 110 12;
+#X msg 420 90 float 83;
+#X obj 18 556 int;
+#X obj 26 536 / 5.23;
+#X floatatom 26 508 5 0 0 0 - - -;
+#X floatatom 59 576 5 0 0 0 - - -;
+#X floatatom 18 576 5 0 0 0 - - -;
+#X text 5 308 casting and storage objects:;
+#X obj 153 412 float;
+#X text 5 326 There a number of objects which are used for storing
+messages \, or casting messages as a specific data type \, sometimes
+converting from one data type to another. The right inlet on these
+objects is stores that value \, which can be later output using a bang.
+;
+#N canvas 770 126 474 324 Related_Objects 0;
+#X obj 32 54 ftos;
+#X obj 68 54 list2symbol;
+#X text 23 22 data type conversion;
+#X obj 155 55 tosymbol;
+#X obj 219 55 fromsymbol;
+#X obj 36 252 lister;
+#X obj 34 98 atoi;
+#X obj 30 138 list2int;
+#X obj 94 137 l2i;
+#X obj 96 163 a2l;
+#X obj 29 164 any2list;
+#X obj 158 138 list2symbol;
+#X obj 158 159 symbol2list;
+#X obj 247 138 l2s;
+#X obj 247 158 s2l;
+#X restore 680 577 pd Related_Objects;
+#X text 10 240 Data types are known as 'atoms' in Pd. float and symbol
+atoms have 'atom boxes'for realtime display and control from within
+a patch.;
+#X obj 404 19 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 404 594 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 411 279 Many objects cast the data they receive when they output
+it:;
+#X text 530 376 Some objects do not cast the data:;
+#X obj 428 347 trigger anything;
+#X msg 428 322 this is a list without a cast;
+#X obj 428 370 print;
+#X text 414 420 Some objects need to have the data explicitly declared
+in order to handle it. These are mostly symbol handling objects.;
+#X text 414 487 Objects which route data generally can handle explicitly
+or implicitly defined data.;
+#X obj 480 530 trigger;
+#X obj 538 530 niagara;
+#X obj 430 463 select;
+#X text 411 41 symbols need to be declared explicitly \, floats do
+not \, but can be:;
+#X obj 213 434 lister;
+#X obj 4 -3 cnv 15 750 20 empty empty all_about_data_types 20 10 1
+18 -233017 -66577 0;
+#X obj 719 -1 pddp;
+#X text 17 604 by Hans-Christoph Steiner <hans@at.or.at>;
+#X text 12 81 the "anything" data type allows anything to pass through
+unchanged.;
+#X text 17 470 examples of casting:;
+#X text 424 557 click on these for more info:;
+#X text 629 606 updated for Pd version 0.37.1;
+#X text 82 49 anything bang float list pointer scalar symbol;
+#X text 6 34 data types (atoms):;
+#X text 0 68 "anything";
+#X text 0 184 "list";
+#X text 0 170 "float";
+#X text 0 211 "symbol";
+#X text 0 197 "scalar";
+#X text 0 157 "bang";
+#X msg 100 105 anything 1 two three;
+#X msg 251 105 one 2 3;
+#X obj 156 188 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 160 162 t a b f l p s;
+#X obj 190 189 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 253 139 list one 2 3;
+#X msg 292 169 1 2 3;
+#X obj 108 506 tosymbol;
+#X obj 172 507 fromsymbol;
+#X obj 255 506 list2symbol;
+#X obj 259 548 ftos;
+#X obj 445 577 all_about_lists_vs_anythings;
+#X connect 8 0 9 0;
+#X connect 10 0 9 0;
+#X connect 11 0 8 0;
+#X connect 15 0 9 0;
+#X connect 20 0 19 0;
+#X connect 21 0 19 0;
+#X connect 22 0 26 0;
+#X connect 23 0 22 0;
+#X connect 23 0 25 0;
+#X connect 24 0 23 0;
+#X connect 32 0 33 0;
+#X connect 36 0 38 0;
+#X connect 37 0 36 0;
+#X connect 61 0 64 0;
+#X connect 62 0 64 0;
+#X connect 64 0 63 0;
+#X connect 64 3 65 0;
+#X connect 66 0 64 0;
+#X connect 67 0 64 0;
diff --git a/doc/pddp/all_about_lists_vs_anythings.pd b/doc/pddp/all_about_lists_vs_anythings.pd
new file mode 100644
index 00000000..72058805
--- /dev/null
+++ b/doc/pddp/all_about_lists_vs_anythings.pd
@@ -0,0 +1,59 @@
+#N canvas 118 146 866 595 10;
+#X msg 74 245 1 2 3;
+#X obj 134 276 route list;
+#X obj 134 297 print list;
+#X obj 209 297 print NOTlist;
+#X msg 183 224 list this is a list with a cast;
+#X msg 190 243 this is a list withOUT a cast;
+#X msg 41 225 list 1 2 3;
+#X msg 10 63 list;
+#X msg 17 83 list 5;
+#X msg 24 103 list pie;
+#X symbolatom 32 129 10 0 0 0 - - -;
+#X obj 4 2 cnv 15 850 20 empty empty all_about_lists_vs_anythings 20
+10 1 18 -233017 -66577 0;
+#X obj 821 3 pddp;
+#X text 20 558 by Hans-Christoph Steiner <hans@at.or.at>;
+#X obj 65 437 list2int;
+#X obj 129 436 l2i;
+#X obj 131 462 a2l;
+#X obj 64 463 any2list;
+#X obj 65 412 lister;
+#X obj 64 489 list2symbol;
+#X obj 64 510 symbol2list;
+#X obj 153 489 l2s;
+#X obj 153 509 s2l;
+#X obj 197 490 tosymbol;
+#X obj 197 509 fromsymbol;
+#X text 500 259 use [prepend]!!;
+#X obj 617 257 prepend;
+#X obj 680 326 drip;
+#X text 587 326 write about:;
+#X obj 560 460 glue;
+#X obj 621 487 pack;
+#X obj 620 461 list2symbol;
+#X obj 730 460 tosymbol;
+#X text 8 175 More than one "float" in a message is considered a "list".
+More than one "symbol" in a message is not implicitly considered a
+"list" \, only if you cast it.;
+#X text 87 104 A "list" of one "symbol" is translated into a "symbol".
+;
+#X text 72 83 A "list" of one "float" is translated into a "float".
+;
+#X text 50 63 An empty "list" is tranlated into a "bang".;
+#X text 7 39 SPECIAL CASES OF "LISTS".;
+#X text 496 214 working with "lists" and "anythings":;
+#X text 537 434 making "lists" from untyped inputs:;
+#X obj 10 148 print NOT-LISTS;
+#X obj 496 460 repack;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 40 0;
+#X connect 8 0 40 0;
+#X connect 9 0 10 0;
+#X connect 9 0 40 0;
+#X connect 31 0 30 0;
diff --git a/doc/pddp/all_about_looping.pd b/doc/pddp/all_about_looping.pd
new file mode 100644
index 00000000..75668aaa
--- /dev/null
+++ b/doc/pddp/all_about_looping.pd
@@ -0,0 +1,109 @@
+#N canvas 255 95 856 623 10;
+#X text 460 79 looping objects:;
+#X obj 462 101 until;
+#X obj 572 102 loop;
+#X obj 458 504 susloop~;
+#X obj 527 504 loop~;
+#X text 455 483 for looping samples:;
+#X obj 0 2 cnv 15 850 20 empty empty all_about_looping 20 10 1 18 -233017
+-66577 0;
+#X obj 816 3 pddp;
+#X obj 461 127 counter;
+#X obj 519 127 gem_counter;
+#X obj 604 127 cxc.counter;
+#X obj 463 551 pdp_loop;
+#X obj 534 551 pdp_qtloop~;
+#X obj 572 504 loopsampler;
+#X text 480 395 examples:;
+#X obj 480 424 test-loop~;
+#X obj 695 126 for++;
+#X obj 60 167 +;
+#X floatatom 89 170 5 0 0 0 - - -;
+#X msg 59 138 1;
+#X obj 139 186 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 98 138 0;
+#X obj 60 209 t f f;
+#X text 214 302 X;
+#X text 76 306 Y;
+#X obj 60 289 t b f;
+#N canvas 0 22 450 300 graph2 0;
+#X array \$0-array 100 float 1;
+#A 0 0 0.950467 0.973181 0.989041 0.997937 0.999806 0.994635 0.982459
+0.963366 0.937489 0.905011 0.866159 0.821209 0.770476 0.714317 0.653128
+0.587341 0.517417 0.44385 0.367158 0.28788 0.206575 0.123815 0.040184
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274 0.000796274 0.000796274
+0.000796274 0.000796274 0.000796274 0.000796274;
+#X coords 0 1 99 -1 300 100 1;
+#X restore 82 405 graph;
+#X obj 90 314 tabwrite \$0-array;
+#X obj 60 186 moses 100;
+#X obj 59 111 bng 20 250 50 0 empty empty start 0 -6 1 10 -4033 -1
+-1;
+#X text 136 166 <-- counter;
+#X text 158 186 <-- split at array size to stop;
+#X text 186 199 and reset counter to 0;
+#X text 57 336 ^--bang for next step;
+#X obj 39 198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 422 36 inf;
+#X obj 60 249 expr abs(cos( min (1.57 \, ($f1 / $f2 - 0.4)) ) );
+#X obj 263 227 hsl 128 15 1 127 0 1 empty empty change_graph_shape
+-130 8 1 12 -208896 -1 -1 1100 0;
+#X text 7 29 Programming with Pd is a different way of thinking that
+standard procedural or object-oriented programming. Looping illustrates
+this. Instead of setting up a C-like [counter] or [for++] \, set up
+a condition to continue the loop \, and a condition that ends the loop.
+;
+#X text 13 362 In this example \, the "bang" from [t b f] continues
+the loop. The [moses 100] ends the loop.;
+#X text 17 601 by Hans-Christoph Steiner <hans@at.or.at>;
+#X text 629 603 updated for Pd version 0.37.1;
+#X text 125 138 <-- stop;
+#X text 451 466 There are also specific loops for samples and video:
+;
+#X text 458 530 video looping:;
+#X obj 660 504 xgroove~;
+#X obj 619 353 readsf~;
+#X obj 431 338 bng 15 250 50 0 empty empty play_sound 17 7 0 10 -4033
+-1 -1;
+#X obj 619 328 spigot;
+#X obj 656 306 tgl 15 0 empty empty allow_looping 17 7 0 10 -4033 -1
+-1 0 1;
+#X text 429 271 For the most basic looping of samples \, you can use
+[readsf~]:;
+#X msg 430 307 open ../sound/voice.wav;
+#X text 664 373 ^- "bang"ed when complete;
+#X connect 17 0 18 0;
+#X connect 17 0 28 0;
+#X connect 18 0 17 1;
+#X connect 19 0 17 0;
+#X connect 20 0 21 0;
+#X connect 21 0 18 0;
+#X connect 21 0 17 1;
+#X connect 22 0 36 0;
+#X connect 22 1 27 1;
+#X connect 25 0 34 0;
+#X connect 25 1 27 0;
+#X connect 28 0 22 0;
+#X connect 28 1 20 0;
+#X connect 29 0 19 0;
+#X connect 34 0 19 0;
+#X connect 36 0 25 0;
+#X connect 37 0 36 1;
+#X connect 46 1 48 0;
+#X connect 47 0 46 0;
+#X connect 48 0 46 0;
+#X connect 49 0 48 1;
+#X connect 51 0 46 0;
diff --git a/doc/pddp/all_about_symbol_construction.pd b/doc/pddp/all_about_symbol_construction.pd
new file mode 100644
index 00000000..d1144e17
--- /dev/null
+++ b/doc/pddp/all_about_symbol_construction.pd
@@ -0,0 +1,43 @@
+#N canvas 180 74 859 631 10;
+#X obj 0 2 cnv 15 850 20 empty empty all_about_symbol_construction
+20 10 1 18 -233017 -66577 0;
+#X obj 816 3 pddp;
+#X text 17 601 by Hans-Christoph Steiner <hans@at.or.at>;
+#X text 629 603 updated for Pd version 0.37.1;
+#X obj 452 550 sprintf;
+#X obj 751 550 makesymbol;
+#X obj 659 550 makefilename;
+#X obj 574 550 list2symbol;
+#X symbolatom 456 177 55 0 0 0 - - -;
+#X obj 456 151 list2symbol;
+#X symbolatom 528 129 6 0 0 0 - - -;
+#X msg 528 103 symbol -;
+#X msg 456 73 make these into one symbol with no spaces;
+#X text 445 35 By setting a symbol on the right inlet of [list2symbol]
+\, you can create symbols without spaces:;
+#X text 592 102 <- click here to use "-";
+#X text 613 115 instead of spaces;
+#X text 9 85 There are many different ways of constructing symbols
+from various parts. You can turn lists into symbols by replacing the
+spaces with other characters or you can use objects with "format strings"
+that allow you to create symbols with more flexibility;
+#X obj 510 550 tosymbol;
+#X text 442 211 [tosymbol] works in a very similar way:;
+#X text 9 40 Many times you need to dynamically create different symbols.
+For example \, if you are working with many files \, you might want
+to name them with a sequential number.;
+#X symbolatom 455 316 55 0 0 0 - - -;
+#X msg 455 232 make these into one symbol with no spaces;
+#X text 638 274 instead of spaces;
+#X obj 455 292 tosymbol;
+#X text 546 144 ^-- or type here and hit enter;
+#X text 446 523 Related objects:;
+#X msg 517 260 separator -|-;
+#X text 616 261 <- click here to use "-|-";
+#X connect 9 0 8 0;
+#X connect 10 0 9 1;
+#X connect 11 0 10 0;
+#X connect 12 0 9 0;
+#X connect 21 0 23 0;
+#X connect 23 0 20 0;
+#X connect 26 0 23 0;
diff --git a/doc/pddp/dynamic_sends.pd b/doc/pddp/dynamic_sends.pd
new file mode 100644
index 00000000..847ec412
--- /dev/null
+++ b/doc/pddp/dynamic_sends.pd
@@ -0,0 +1,27 @@
+#N canvas 499 325 522 457 10;
+#X obj 310 194 f \$0;
+#X symbolatom 318 235 0 0 0 0 - - -;
+#X obj 310 213 makesymbol pd-%s-controlled;
+#N canvas 0 22 482 332 1024-controlled 0;
+#X restore 319 61 pd \$0-controlled;
+#N canvas 0 22 478 328 controlled 0;
+#X restore 68 61 pd controlled;
+#X msg 46 167 \; pd-controlled vis \$1;
+#X obj 46 123 tgl 40 0 empty empty open_close 0 -6 1 12 -217060 -1
+-1 1 1;
+#X msg 310 285 \; \$1 vis \$2;
+#X obj 310 256 pack symbol float;
+#X obj 310 170 t b f;
+#X obj 310 125 tgl 40 0 empty empty open_close 0 -6 1 12 -217060 -1
+-1 0 1;
+#X text 112 333 Since \$0 is only expanded if it starts the name \,
+it is necessary to use [makesymbol] in order to put the \$0 expansion
+into the middle of the name.;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 0 8 0;
+#X connect 6 0 5 0;
+#X connect 8 0 7 0;
+#X connect 9 0 0 0;
+#X connect 9 1 8 1;
+#X connect 10 0 9 0;
diff --git a/doc/pddp/netreceive-help.pd b/doc/pddp/netreceive-help.pd
new file mode 100644
index 00000000..76b40b04
--- /dev/null
+++ b/doc/pddp/netreceive-help.pd
@@ -0,0 +1,13 @@
+#N canvas 147 52 764 593 10;
+#X obj 94 453 netreceive 4567 0 old;
+#X obj 76 453 tgl 17 0 empty empty empty 0 -6 0 8 -4033 -1 -1 0 1;
+#X text 10 415 sends everything it receives into the global message
+space;
+#X text 12 508 You can send and receive messages to Pd from the command
+line using 'pdsend' and 'pdreceive'.;
+#X obj 4 -3 cnv 15 750 20 empty empty netreceive 20 10 1 18 -233017
+-66577 0;
+#X obj 719 -1 pddp;
+#X obj 612 537 help-netreceive;
+#X text 467 537 Miller's help patch:;
+#X connect 0 0 1 0;
diff --git a/doc/pddp/pddp-style-guide.pd b/doc/pddp/pddp-style-guide.pd
new file mode 100644
index 00000000..fceb72e8
--- /dev/null
+++ b/doc/pddp/pddp-style-guide.pd
@@ -0,0 +1,12 @@
+#N canvas 323 116 596 539 10;
+#X text 33 38 Here are various text conventions for discussing various
+aspects of Pd in text:;
+#X text 36 88 atoms:;
+#X text 52 108 "anything" \, "bang" \, "float" \, "list" \, "pointer"
+\, "symbol";
+#X text 33 138 objects:;
+#X text 50 157 [route] \, [set] \, [float] \, [symbol] \, [trigger]
+\, etc.;
+#X text 34 191 messages:;
+#X text 49 214 [pd dsp 1 ( \, [set 0 ( \,;
+#X obj 37 450 standard_gui_elements;
diff --git a/doc/pddp/pddp.pd b/doc/pddp/pddp.pd
index 787921e6..3d751b58 100644
--- a/doc/pddp/pddp.pd
+++ b/doc/pddp/pddp.pd
@@ -1,31 +1,34 @@
-#N canvas 262 2 490 557 10;
-#X text 14 17 PDDP: Pure Data Documentation Project;
-#X text 25 40 The PDDP was proposed initially in early 2002 by Krzysztof
-Czaja who suggested that Pure Data was in need of comprehensive documentation.
-;
-#X text 45 162 - Michal Seta;
-#X text 45 135 - Miller Puckette;
-#X text 45 148 - Dave Sabine;
-#X text 25 89 The project is now managed un-officially by Dave Sabine
-who acts as primary author and editor. The people involved in this
-project include (alphabetically):;
-#X text 25 184 PDDP will eventually be available in the main PD distribution
-\, but for now is available at Dave's web site: http://www.davesabine.com/media/puredata.asp
-;
-#X text 25 231 All comments \, corrections \, etc. regarding the PDDP
-reference files should be directed to Dave Sabine: dave@davesabine.com
-;
-#X text 14 282 THINGS TO NOTE:;
-#X text 25 308 Authors: If you would like to participate in this project
-\, simply gather together information about objects \, tutorials \,
-examples \, etc. and contact Dave Sabine for info about formatting
-your documents. All documents should then be forwarded to Dave to be
-included in the PDDP download which is available at his web site.;
-#X text 25 396 Externals and other Libraries: Each PDDP document includes
-mention of "related objects from other PD libraries" as well as mention
-of "related native PD objects". The objects from other libraries are
-available only if you download those libraries from their respective
-authors and integrate them properly into your version of PD. We do
-not and cannot maintain a complete list of externals - but we try.
-For more info about externals and other objects \, see http://www.pure-data.org/
-and the Pure Data Base at http://iem.kug.ac.at/pdb/;
+#N canvas 262 22 459 539 10;
+#X text 25 32 The PDDP was proposed initially in early 2002 by Krzysztof
+Czaja who suggested that Pure Data was in need of comprehensive documentation.
+;
+#X text 45 154 - Michal Seta;
+#X text 45 127 - Miller Puckette;
+#X text 45 140 - Dave Sabine;
+#X text 25 81 The project is now managed un-officially by Dave Sabine
+who acts as primary author and editor. The people involved in this
+project include (alphabetically):;
+#X text 14 297 THINGS TO NOTE:;
+#X text 25 315 Authors: If you would like to participate in this project
+\, simply gather together information about objects \, tutorials \,
+examples \, etc. and contact Dave Sabine for info about formatting
+your documents. All documents should then be forwarded to Dave to be
+included in the PDDP download which is available at his web site.;
+#X text 25 403 Externals and other Libraries: Each PDDP document includes
+mention of "related objects from other PD libraries" as well as mention
+of "related native PD objects". The objects from other libraries are
+available only if you download those libraries from their respective
+authors and integrate them properly into your version of PD. We do
+not and cannot maintain a complete list of externals - but we try.
+For more info about externals and other objects \, see http://www.pure-data.org/
+and the Pure Data Base at http://iem.kug.ac.at/pdb/;
+#X text 45 168 - Hans-Christoph Steiner;
+#X text 25 238 All comments \, corrections \, etc. regarding the PDDP
+reference files should be directed to the Pd Developers' list: pd-dev@iem.at
+;
+#X text 26 188 PDDP is now part of the CVS Pd distributions. It was
+originally available at Dave's web site: http://www.davesabine.com/media/puredata.asp
+;
+#X obj 3 2 cnv 15 450 20 empty empty PDDP 2 12 1 18 -233017 -66577
+0;
+#X text 102 5 Pure Data Documentation Project;
diff --git a/doc/pddp/scalar-help.pd b/doc/pddp/scalar-help.pd
new file mode 100644
index 00000000..98e1945f
--- /dev/null
+++ b/doc/pddp/scalar-help.pd
@@ -0,0 +1,30 @@
+#N canvas 351 60 461 532 10;
+#N canvas 0 22 454 304 scalar-window 0;
+#X restore 164 67 pd scalar-window;
+#X obj 2 2 cnv 15 450 20 empty empty "scalar" 2 11 1 18 -233017 -66577
+0;
+#X obj 418 3 pddp;
+#X obj 256 478 all_about_data_structures;
+#X text 221 461 for more info \, click on this:;
+#X text 29 307 - You can cut \, copy \, paste \, and duplicate "scalars".
+;
+#X text 29 212 - You can edit the contents of a "scalar" within the
+Properties panel. When you select 'Properties' \, Pd will open a text
+editor with the contents of that "scalar". When you are done editing
+it \, hit "OK" and your changes will take effect.;
+#X text 18 288 In edit mode:;
+#X text 29 323 - You can move "scalars" by clicking and dragging.;
+#X text 20 196 In any mode:;
+#X text 18 376 In run mode:;
+#X text 30 390 - You can resize breakpoints. The mouse cursor will
+change when you are resizing breakpoints.;
+#X text 30 417 - You can move breakpoints. Click near the breakpoint
+\, but not so close that the mouse cursor changes to the resize cursor.
+;
+#X text 29 338 - The blue rectangle is the "handle" for grabbing and
+moving the "scalar".;
+#X text 20 32 "scalar" is the basic graphical component of Pd's data
+structures.;
+#X text 305 512 updated for Pd 0.37.1;
+#X text 4 174 There are numerous ways to manually edit "scalars":;
+#X text 4 501 by Hans-Christoph Steiner <hans@at.or.at>;
diff --git a/doc/pddp/select-help.pd b/doc/pddp/select-help.pd
new file mode 100644
index 00000000..6c5af823
--- /dev/null
+++ b/doc/pddp/select-help.pd
@@ -0,0 +1,83 @@
+#N canvas 192 92 972 630 10;
+#X floatatom 22 332 0 0 0 0 - - -;
+#X msg 156 120 6;
+#X msg 119 120 234;
+#X floatatom 119 150 0 0 0 0 - - -;
+#X msg 121 301 1;
+#X msg 89 301 54;
+#X obj 22 392 print x1;
+#X obj 100 391 print x2;
+#X msg 58 301 23;
+#X msg 22 302 234;
+#X msg 65 120 6;
+#X obj 28 180 select 6;
+#X msg 28 120 234;
+#X obj 28 210 print x1;
+#X obj 107 211 print x2;
+#X obj 177 391 print x3;
+#X obj 255 392 print x4;
+#X floatatom 28 150 0 0 0 0 - - -;
+#X obj 22 362 select 23 54 1;
+#X text 54 31 abbreviation:;
+#X obj 150 31 sel;
+#X text 20 53 In its simplest form shown below \, Select checks its
+input agains the constant "6". If they match \, the first outlet gives
+"bang" and otherwise the input is copied to the second outlet. If Select
+is used with a single argument \, a second inlet allows you to change
+the test value.;
+#X text 22 239 You can give several arguments. You get an outlet for
+each test value and finally an outlet for values which match none of
+them. In this case you don't get inlets to change the test values:
+;
+#X obj 32 566 print x1;
+#X obj 114 567 print x2;
+#X msg 34 451 symbol cort;
+#X msg 46 476 symbol zack;
+#X msg 178 476 symbol cort;
+#X msg 184 501 symbol zack;
+#X obj 34 539 select cort;
+#X msg 308 462 symbol cort;
+#X msg 415 462 symbol zack;
+#X obj 308 551 print x1;
+#X obj 385 551 print x2;
+#X obj 308 521 select cort zack;
+#X obj 462 551 print x3;
+#X msg 413 487 symbol bill;
+#X text 24 426 Select can also be used to sort symbols:;
+#X text 81 601 see also:;
+#X obj 173 603 route;
+#X obj 32 10 select;
+#X text 92 10 - compare numbers or symbols;
+#X text 329 602 updated for Pd version 0.37;
+#X obj 820 7 pddp;
+#X text 614 589 Miller's help patch:;
+#X obj 759 589 help-select;
+#X connect 0 0 18 0;
+#X connect 1 0 3 0;
+#X connect 2 0 3 0;
+#X connect 3 0 11 1;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 17 0;
+#X connect 11 0 13 0;
+#X connect 11 1 14 0;
+#X connect 12 0 17 0;
+#X connect 17 0 11 0;
+#X connect 18 0 6 0;
+#X connect 18 1 7 0;
+#X connect 18 2 15 0;
+#X connect 18 3 16 0;
+#X connect 25 0 29 0;
+#X connect 26 0 29 0;
+#X connect 27 0 29 1;
+#X connect 28 0 29 1;
+#X connect 29 0 23 0;
+#X connect 29 1 24 0;
+#X connect 30 0 34 0;
+#X connect 31 0 34 0;
+#X connect 34 0 32 0;
+#X connect 34 1 33 0;
+#X connect 34 2 35 0;
+#X connect 36 0 34 0;
diff --git a/doc/pddp/set-help.pd b/doc/pddp/set-help.pd
new file mode 100644
index 00000000..aa991903
--- /dev/null
+++ b/doc/pddp/set-help.pd
@@ -0,0 +1,40 @@
+#N struct help-set-template1 float x float y;
+#N canvas 346 46 655 535 12;
+#X msg 272 235 next;
+#X floatatom 19 265 5 0 0 2 X_value - -;
+#X floatatom 106 265 5 0 0 2 Y_value - -;
+#X obj 258 260 pointer;
+#X text 261 189 output first scalar in list;
+#X text 318 235 output next item;
+#X text 282 332 First argument selects template.;
+#X text 282 347 Remaining args are names of fields.;
+#X msg 258 211 traverse pd-help-set-data \, next;
+#N canvas 0 22 288 134 help-set-data 1;
+#X scalar help-set-template1 44 50 \;;
+#X scalar help-set-template1 99 73 \;;
+#X restore 377 409 pd help-set-data;
+#N canvas 164 72 425 146 help-set-template1 0;
+#X obj 41 87 filledpolygon 9 0 1 0 0 20 0 20 30 0 30;
+#X obj 60 21 template float x float y;
+#X restore 377 431 pd help-set-template1;
+#X text 86 10 -- set values in a scalar;
+#X obj 19 338 set help-set-template1 x y;
+#X text 359 497 updated for Pd version 0.35;
+#X text 6 72 [set] takes a pointer to a scalar in its rightmost inlet
+\; the remaining inlets set numeric values of fields. Only the leftmost
+inlet is "hot". You can't [set] "arrays" or "sublists". Instead \,
+you can get pointers into them using [element] and [sublist] (probably
+not working yet) and set individual items.;
+#X obj 29 432 all_about_data_structures;
+#X text 13 408 for more info \, open this patch:;
+#X obj 106 298 t b f;
+#X text 273 474 Miller's help patch:;
+#X obj 474 474 help-set;
+#X obj 21 10 set;
+#X connect 0 0 3 0;
+#X connect 1 0 12 0;
+#X connect 2 0 17 0;
+#X connect 3 0 12 2;
+#X connect 8 0 3 0;
+#X connect 17 0 1 0;
+#X connect 17 1 12 1;
diff --git a/doc/pddp/standard_gui_elements.pd b/doc/pddp/standard_gui_elements.pd
new file mode 100644
index 00000000..ee04102c
--- /dev/null
+++ b/doc/pddp/standard_gui_elements.pd
@@ -0,0 +1,24 @@
+#N canvas 92 31 460 548 10;
+#X msg 22 148 \; pd dsp \$1;
+#X obj 2 2 cnv 15 450 20 empty empty [object_name] 2 11 1 18 -233017
+-66577 0;
+#X obj 22 107 tgl 35 0 empty empty Start 0 -6 1 12 -114652 -1 -1 0
+1;
+#X obj 340 114 vsl 20 128 0 127 0 0 empty empty master_level 0 -8 1
+10 -237557 -1 -1 0 1;
+#X obj 194 466 grouping patch;
+#X obj 119 218 nbx 5 20 -1e+37 1e+37 0 0 empty empty display_number_box
+0 -6 1 16 -199729 -1 -1 0 256;
+#X text 17 261 The idea behind these objects is to have a color scheme
+which consistently represents various ideas. Also \, having GUI objects
+highlighted by color signals the user that they should play with that
+object \, while plain white objects are part of the implementation.
+;
+#X obj 418 3 pddp;
+#X text 175 447 click on these for more info:;
+#X text 248 523 updated for Pd version 0.37.1;
+#N canvas 0 22 454 304 related_objects 0;
+#X restore 317 466 pd related_objects;
+#X text 5 523 by H-C Steiner <hans@at.or.at>;
+#X text 14 37 [object_name] is an example patch for the PDDP style
+guide.;
diff --git a/doc/pddp/sublist-help.pd b/doc/pddp/sublist-help.pd
new file mode 100644
index 00000000..419db0e0
--- /dev/null
+++ b/doc/pddp/sublist-help.pd
@@ -0,0 +1,14 @@
+#N canvas 28 72 733 292 12;
+#X text 407 254 updated for Pd version 0.32;
+#X obj 21 10 sublist;
+#X text 99 9 -- get a list from a field of a scalar;
+#X text 30 49 Don't try this yet -- it's untested.;
+#X text 37 87 "sublist" will take as creation arguments a template
+name and a field name \; its one input takes a pointer. If you send
+a pointer (which should agree with the template name) \, "sublist"
+will output the field (which should be of type "list".) The output
+is in fact a pointer to the head of the sublist.;
+#X text 27 226 for more info \, open this patch:;
+#X text 363 226 Miller's help patch:;
+#X obj 43 250 all_about_data_structures;
+#X obj 564 226 help-sublist;