aboutsummaryrefslogtreecommitdiff
path: root/doc/tutorials/intro
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tutorials/intro')
-rw-r--r--doc/tutorials/intro/00.hello_world.pd12
-rw-r--r--doc/tutorials/intro/01.basic_elements.pd2
-rw-r--r--doc/tutorials/intro/02.getting_help.pd2
-rw-r--r--doc/tutorials/intro/03.edit_mode.pd2
-rw-r--r--doc/tutorials/intro/04.objects.pd6
-rw-r--r--doc/tutorials/intro/05.connections.pd8
-rw-r--r--doc/tutorials/intro/06.messages.pd7
-rw-r--r--doc/tutorials/intro/07.EXERCISE-make_your_first_patch.pd14
-rw-r--r--doc/tutorials/intro/08.bang.pd34
-rw-r--r--doc/tutorials/intro/09.event_driven_processing.pd58
-rw-r--r--doc/tutorials/intro/10.counters.pd4
-rw-r--r--doc/tutorials/intro/11.hot_and_cold_inlets.pd40
-rw-r--r--doc/tutorials/intro/12.right_to_left_order.pd22
-rw-r--r--doc/tutorials/intro/13.ordering_messages.pd62
-rw-r--r--doc/tutorials/intro/14.depth_first.pd46
-rw-r--r--doc/tutorials/intro/15.inlets_and_outlets.pd6
-rw-r--r--doc/tutorials/intro/15.storage_objects.pd35
-rw-r--r--doc/tutorials/intro/16.atoms.pd2
-rw-r--r--doc/tutorials/intro/17.atomic_messages.pd2
-rw-r--r--doc/tutorials/intro/18.selectors.pd20
-rw-r--r--doc/tutorials/intro/19.subpatches.pd13
-rw-r--r--doc/tutorials/intro/20.inlets_and_outlets.pd6
-rw-r--r--doc/tutorials/intro/21.outlet_order.pd4
-rw-r--r--doc/tutorials/intro/22.Example-all_just_data.pd6
-rw-r--r--doc/tutorials/intro/23.EXERCISE-hmmm.pd16
-rw-r--r--doc/tutorials/intro/24.turning_on_and_off.pd20
-rw-r--r--doc/tutorials/intro/25.properties.pd2
-rw-r--r--doc/tutorials/intro/26.sliders.pd20
-rw-r--r--doc/tutorials/intro/27.guis.pd1626
-rw-r--r--doc/tutorials/intro/28.gui_objects.pd96
-rw-r--r--doc/tutorials/intro/29.nervous_guis.pd93
-rw-r--r--doc/tutorials/intro/TODO7
32 files changed, 1172 insertions, 1121 deletions
diff --git a/doc/tutorials/intro/00.hello_world.pd b/doc/tutorials/intro/00.hello_world.pd
index 1176ea02..be9fb17d 100644
--- a/doc/tutorials/intro/00.hello_world.pd
+++ b/doc/tutorials/intro/00.hello_world.pd
@@ -1,4 +1,6 @@
-#N canvas 228 159 632 444 12;
+#N canvas 10 40 628 468 12;
+#X obj 230 162 cnv 15 140 30 empty empty empty 20 12 0 14 -225271 -66577
+0;
#X msg 235 167 Hello world!;
#X text 238 216 <-- connection \, aka "cord";
#X text 17 32 In Pd \, programming is done with boxes which are connected
@@ -9,7 +11,11 @@ together. The boxes have "inlets" and "outlets" \, where they are connected.
#X text 144 178 outlet-->;
#X obj 234 265 print;
#X text 289 266 <-- object box;
-#X text 89 357 Now look in the Pd window to see the result.;
+#X text 73 319 Now look in the Pd window to see the result.;
#X text 359 168 <-- message box;
#X text 101 111 Click on the box with "Hello world!" in it:;
-#X connect 0 0 6 0;
+#X text 16 363 Whenever you see the [print] box \, that means that
+stuff will be printed to the Pd window.;
+#X obj 133 415 print;
+#X text 198 415 prints to the Pd window.;
+#X connect 1 0 7 0;
diff --git a/doc/tutorials/intro/01.basic_elements.pd b/doc/tutorials/intro/01.basic_elements.pd
index 69796f7c..e58fc949 100644
--- a/doc/tutorials/intro/01.basic_elements.pd
+++ b/doc/tutorials/intro/01.basic_elements.pd
@@ -1,4 +1,4 @@
-#N canvas 513 86 571 407 12;
+#N canvas 10 40 620 460 12;
#X obj 36 141;
#X obj 34 91 float;
#X msg 34 187 message;
diff --git a/doc/tutorials/intro/02.getting_help.pd b/doc/tutorials/intro/02.getting_help.pd
index 62b30923..a851ce42 100644
--- a/doc/tutorials/intro/02.getting_help.pd
+++ b/doc/tutorials/intro/02.getting_help.pd
@@ -1,4 +1,4 @@
-#N canvas 111 50 654 399 12;
+#N canvas 10 40 620 460 12;
#X msg 179 150;
#X obj 61 150 trigger;
#X text 54 28 comment;
diff --git a/doc/tutorials/intro/03.edit_mode.pd b/doc/tutorials/intro/03.edit_mode.pd
index 63b0b0a9..b5682d12 100644
--- a/doc/tutorials/intro/03.edit_mode.pd
+++ b/doc/tutorials/intro/03.edit_mode.pd
@@ -1,4 +1,4 @@
-#N canvas 307 122 640 467 12;
+#N canvas 10 40 620 460 12;
#X obj 8 10 cnv 15 400 40 empty empty edit_mode 20 12 0 24 -228992
-66577 0;
#X text 19 67 There are two modes when editing a patch: play and edit.
diff --git a/doc/tutorials/intro/04.objects.pd b/doc/tutorials/intro/04.objects.pd
index d4b7f381..c43a5e17 100644
--- a/doc/tutorials/intro/04.objects.pd
+++ b/doc/tutorials/intro/04.objects.pd
@@ -1,4 +1,4 @@
-#N canvas 359 93 607 497 12;
+#N canvas 10 40 624 464 12;
#X obj 28 151 float;
#X text 10 61 The fundamental building block of a Pd program is the
object. Each object is itself like a tiny program that does a very
@@ -18,8 +18,8 @@ text name of the object:;
#X obj 27 358 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 15 329 [bng];
-#X obj 108 355 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
--1 -1 10000 1;
+#X obj 108 355 vsl 15 80 0 127 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
#X text 85 329 [vslider];
#X text 227 331 [hslider];
#X obj 197 353 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
diff --git a/doc/tutorials/intro/05.connections.pd b/doc/tutorials/intro/05.connections.pd
index 9401b7cf..44666eb0 100644
--- a/doc/tutorials/intro/05.connections.pd
+++ b/doc/tutorials/intro/05.connections.pd
@@ -1,4 +1,4 @@
-#N canvas 576 160 660 453 12;
+#N canvas 10 40 628 468 12;
#X text 12 132 Pd patches are always running and changes take effect
immediately.;
#X floatatom 25 277 5 0 0 0 - - -;
@@ -8,12 +8,11 @@ immediately.;
#X obj 24 221 metro 100;
#X obj 24 248 random 100;
#X text 70 183 <-- click here to start;
-#X text 66 299 connect by clicking on the outlet of the top number
+#X text 58 299 connect by clicking on the outlet of the top number
box \, then drag and drop on the inlet of the bottom number box;
-#X text 30 299 ^--;
+#X text 28 299 ^--;
#X obj 8 10 cnv 15 400 40 empty empty connections 20 12 0 24 -228992
-66577 0;
-#X text 195 238 next \, make sure you are in edit mode;
#X obj 39 418 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s2.6
;
#X text 34 372 Disconnect the cable by clicking on it to highlight
@@ -21,6 +20,7 @@ it \, then press "backspace" on a PC \, or "delete" on a Mac.;
#X text 11 53 One path for objects to communicate is thru connections
\, called cords or cables. Connections are always made from the inlet
to the outlet since that is the direction data flows in Pd.;
+#X text 195 238 next \, make sure you are in edit mode!;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 0;
diff --git a/doc/tutorials/intro/06.messages.pd b/doc/tutorials/intro/06.messages.pd
index 650f6ded..ea95c05c 100644
--- a/doc/tutorials/intro/06.messages.pd
+++ b/doc/tutorials/intro/06.messages.pd
@@ -1,8 +1,8 @@
-#N canvas 364 149 628 453 12;
+#N canvas 10 40 624 464 12;
#X obj 10 10 cnv 15 400 40 empty empty messages 20 12 0 24 -228992
-66577 0;
#X msg 354 162 say hello;
-#N canvas 0 22 466 316 myObject 0;
+#N canvas 10 40 620 460 myObject 0;
#X obj 70 24 inlet;
#X obj 68 243 outlet;
#X obj 76 86 route say;
@@ -30,7 +30,6 @@
from data to commands.;
#X text 124 128 data;
#X text 359 127 commands;
-#X text 18 394 For more on messages:;
#X text 19 341 All communication within Pd is in the form of messages
\, including when the user is controlling the program.;
#X msg 143 189 2;
@@ -39,4 +38,4 @@ from data to commands.;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 9 0 2 0;
-#X connect 16 0 4 0;
+#X connect 15 0 4 0;
diff --git a/doc/tutorials/intro/07.EXERCISE-make_your_first_patch.pd b/doc/tutorials/intro/07.EXERCISE-make_your_first_patch.pd
index 02cdadcf..eb4ed1cf 100644
--- a/doc/tutorials/intro/07.EXERCISE-make_your_first_patch.pd
+++ b/doc/tutorials/intro/07.EXERCISE-make_your_first_patch.pd
@@ -1,11 +1,11 @@
-#N canvas 359 93 686 506 12;
+#N canvas 10 40 624 464 12;
#X obj 8 10 cnv 15 600 40 empty empty EXERCISE-make_your_first_patch
20 12 0 24 -262131 -66577 0;
#X text 15 71 Its time to make your first patch. Follow the instructions
on the right:;
-#X text 204 196 2- make a new object box \, in it \, type: symbol;
-#X text 204 235 3- make a new symbol box;
-#X text 204 275 4- connect the message box to the object box;
-#X text 204 315 5- connect the object box to the symbol box;
-#X text 203 353 6- click the message box \, and viola!;
-#X text 204 159 1- make a message box \, in it \, type: servus;
+#X text 166 196 2- make a new object box \, in it \, type: symbol;
+#X text 166 235 3- make a new symbol box;
+#X text 166 275 4- connect the message box to the object box;
+#X text 166 315 5- connect the object box to the symbol box;
+#X text 165 353 6- click the message box \, and viola!;
+#X text 166 159 1- make a message box \, in it \, type: servus;
diff --git a/doc/tutorials/intro/08.bang.pd b/doc/tutorials/intro/08.bang.pd
index 1cc8ce8d..e0f259bb 100644
--- a/doc/tutorials/intro/08.bang.pd
+++ b/doc/tutorials/intro/08.bang.pd
@@ -1,18 +1,34 @@
-#N canvas 208 184 605 391 12;
-#X text 13 79 In Pd \, "bang" means "do something". What that "something"
-is depends on the object receiving the bang.;
+#N canvas 10 40 632 472 12;
#X obj 18 191 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
-#X obj 18 220 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
#X msg 18 269 bang;
-#X obj 18 294 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
#X text 40 189 <--bang button;
#X text 62 270 <--you can also send "bang" using a message box;
#X text 14 137 Here \, this toggle changes state when it receives a
bang:;
#X obj 8 10 cnv 15 400 40 empty empty bang 20 12 0 24 -228992 -66577
0;
-#X connect 1 0 2 0;
-#X connect 3 0 4 0;
+#X text 13 79 In Pd \, "bang" means "do it". What that "it" is depends
+on the object receiving the bang.;
+#X msg 73 349 bang;
+#X obj 73 387 print word;
+#X obj 132 352 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 18 299 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 18 221 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 279 324 bang;
+#X obj 289 398 pddp/print_long;
+#X msg 279 350 send me!;
+#X obj 395 320 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 395 352 5 0 0 0 - - -;
+#X connect 0 0 11 0;
+#X connect 1 0 10 0;
+#X connect 7 0 8 0;
+#X connect 9 0 8 0;
+#X connect 12 0 14 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 13 0;
diff --git a/doc/tutorials/intro/09.event_driven_processing.pd b/doc/tutorials/intro/09.event_driven_processing.pd
index 7b892c61..e705b58d 100644
--- a/doc/tutorials/intro/09.event_driven_processing.pd
+++ b/doc/tutorials/intro/09.event_driven_processing.pd
@@ -1,11 +1,11 @@
-#N canvas 352 165 632 457 12;
+#N canvas 10 40 628 468 12;
#X obj 10 10 cnv 15 400 40 empty empty event_driven_processing 20 12
0 24 -228992 -66577 0;
#X text 18 65 Message processing is driven by events \, nothing happens
if there no events. There is nothing happening in the patches below
until you click on the messages (the bangs at the bottom illustrate
that):;
-#X obj 113 324 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+#X obj 113 324 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
;
#X obj 113 372 float;
#X obj 170 372 + 1;
@@ -13,9 +13,6 @@ that):;
#X obj 113 418 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 113 348 metro 1000;
-#X text 18 265 Pd is always ready to process messages \, you don't
-need to tell it to run. You can keep things running by sending a stream
-of events:;
#X obj 384 316 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 385 353 float;
@@ -27,48 +24,49 @@ of events:;
0;
#X obj 236 140 cnv 15 80 30 empty empty empty 20 12 0 14 -225271 -66577
0;
-#X obj 399 132 cnv 15 80 30 empty empty empty 20 12 0 14 -225271 -66577
+#X obj 404 139 cnv 15 80 30 empty empty empty 20 12 0 14 -225271 -66577
0;
#X obj 72 181 + 1;
#X floatatom 72 207 5 0 0 0 - - -;
#X msg 72 149 1;
-#X msg 237 147 convert;
+#X msg 237 145 convert;
#X obj 237 178 symbol;
#X symbolatom 237 206 10 0 0 0 - - -;
#X obj 72 234 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 237 233 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
-#X obj 421 168 until;
-#X msg 421 137 100;
-#X obj 421 198 float;
-#X obj 478 198 + 1;
-#X floatatom 421 226 5 0 0 0 - - -;
-#X obj 421 247 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+#X obj 421 176 float;
+#X obj 478 176 + 1;
+#X floatatom 421 204 5 0 0 0 - - -;
+#X obj 421 229 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 277 364 delay 1000;
+#X msg 421 144 bang;
+#X text 18 265 Pd is always ready to process messages \, you don't
+need to tell it to run. You can keep things moving by sending a stream
+of events:;
#X connect 2 0 7 0;
#X connect 3 0 4 0;
#X connect 3 0 5 0;
#X connect 4 0 3 1;
#X connect 5 0 6 0;
#X connect 7 0 3 0;
+#X connect 8 0 9 0;
#X connect 9 0 10 0;
-#X connect 10 0 11 0;
-#X connect 10 0 12 0;
-#X connect 11 0 10 1;
-#X connect 12 0 13 0;
-#X connect 13 0 31 0;
-#X connect 17 0 18 0;
-#X connect 18 0 23 0;
-#X connect 19 0 17 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 1;
+#X connect 11 0 12 0;
+#X connect 12 0 28 0;
+#X connect 16 0 17 0;
+#X connect 17 0 22 0;
+#X connect 18 0 16 0;
+#X connect 19 0 20 0;
#X connect 20 0 21 0;
-#X connect 21 0 22 0;
-#X connect 22 0 24 0;
-#X connect 25 0 27 0;
-#X connect 26 0 25 0;
-#X connect 27 0 28 0;
-#X connect 27 0 29 0;
-#X connect 28 0 27 1;
-#X connect 29 0 30 0;
-#X connect 31 0 10 0;
+#X connect 21 0 23 0;
+#X connect 24 0 25 0;
+#X connect 24 0 26 0;
+#X connect 25 0 24 1;
+#X connect 26 0 27 0;
+#X connect 28 0 9 0;
+#X connect 29 0 24 0;
diff --git a/doc/tutorials/intro/10.counters.pd b/doc/tutorials/intro/10.counters.pd
index 30d3941a..9e8d4640 100644
--- a/doc/tutorials/intro/10.counters.pd
+++ b/doc/tutorials/intro/10.counters.pd
@@ -1,7 +1,7 @@
-#N canvas 400 118 624 449 12;
+#N canvas 10 40 624 464 12;
#X obj 10 10 cnv 15 400 40 empty empty counters 20 12 0 24 -228992
-66577 0;
-#X obj 156 362 cnv 15 100 60 empty empty empty 20 12 0 14 -261681 -66577
+#X obj 156 362 cnv 15 100 60 empty empty empty 20 12 0 14 -261039 -66577
0;
#X obj 174 382 f;
#X obj 209 382 + 1;
diff --git a/doc/tutorials/intro/11.hot_and_cold_inlets.pd b/doc/tutorials/intro/11.hot_and_cold_inlets.pd
index 9f58000b..ab820ade 100644
--- a/doc/tutorials/intro/11.hot_and_cold_inlets.pd
+++ b/doc/tutorials/intro/11.hot_and_cold_inlets.pd
@@ -1,15 +1,12 @@
-#N canvas 205 66 683 545 12;
-#X obj 19 243 +;
-#X floatatom 19 272 5 0 0 0 - - -;
-#X msg 19 179 1;
-#X msg 36 215 5;
-#X text 11 56 For most objects in Pd \, the leftmost inlet is the "hot"
+#N canvas 10 40 628 468 12;
+#X obj 19 252 +;
+#X floatatom 19 281 5 0 0 0 - - -;
+#X msg 19 188 1;
+#X msg 36 224 5;
+#X text 11 54 For most objects in Pd \, the leftmost inlet is the "hot"
inlet. This means that it will output something whenever it receives
data on the "hot" inlet.;
-#X text 12 116 All other inlets are generally "cold" inlets \, which
-merely store the data they receive until input on the "hot" inlet causes
-the object to do its thing.;
-#X text 85 216 2) click this and there will be no new output;
+#X text 75 224 2) click this and there will be no new output;
#X obj 181 412 +;
#X floatatom 181 441 5 0 0 0 - - -;
#X msg 84 337 1;
@@ -22,23 +19,26 @@ the object to do its thing.;
#X msg 234 337 4;
#X msg 274 337 5;
#X msg 314 337 6;
-#X text 85 248 3) now click the [1( message box \, and you get a new
-output;
#X text 17 462 Notice that the number is stored in the "cold" inlet
until you change it. For example \, if you click [4( \, then click
[1( \, [2( \, and [3( \, you will see that 1 \, 2 \, and 3 are all
added to 4;
-#X text 85 184 1) click this first \, and [+ ] immediately outputs
+#X text 75 192 1) click this first \, and [+ ] immediately outputs
a 1;
#X obj 6 8 cnv 15 400 40 empty empty hot_and_cold_inlets 20 12 0 24
-228992 -66577 0;
+#X text 10 111 All other inlets are generally "cold" inlets \, which
+just store the data. When the object receives input on the "hot" inlet
+\, the object with read the data from all the inlets and do its thing.
+;
+#X text 75 256 3) now click the [1( message box;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 0 1;
-#X connect 7 0 8 0;
-#X connect 9 0 7 0;
-#X connect 13 0 7 0;
-#X connect 14 0 7 0;
-#X connect 15 0 7 1;
-#X connect 16 0 7 1;
-#X connect 17 0 7 1;
+#X connect 6 0 7 0;
+#X connect 8 0 6 0;
+#X connect 12 0 6 0;
+#X connect 13 0 6 0;
+#X connect 14 0 6 1;
+#X connect 15 0 6 1;
+#X connect 16 0 6 1;
diff --git a/doc/tutorials/intro/12.right_to_left_order.pd b/doc/tutorials/intro/12.right_to_left_order.pd
index b746cbdc..bfae4b27 100644
--- a/doc/tutorials/intro/12.right_to_left_order.pd
+++ b/doc/tutorials/intro/12.right_to_left_order.pd
@@ -1,22 +1,22 @@
-#N canvas 406 232 624 424 12;
-#X obj 165 177 bng 25 250 50 0 empty empty empty -2 -8 1 10 -24198
+#N canvas 10 40 624 464 12;
+#X obj 165 185 bng 25 250 50 0 empty empty empty -2 -8 1 10 -24198
-1 -1;
-#X obj 165 217 trigger bang bang bang;
-#X msg 381 256 1;
-#X msg 273 256 2;
-#X msg 165 256 3;
-#X obj 273 332 print ORDER;
+#X obj 165 225 trigger bang bang bang;
+#X msg 381 264 1;
+#X msg 273 264 2;
+#X msg 165 264 3;
+#X obj 273 340 print ORDER;
#X obj 8 10 cnv 15 400 40 empty empty right_to_left_order 20 12 0 24
-228992 -66577 0;
-#X text 212 180 <-- click here \,;
+#X text 212 188 <-- click here \,;
#X text 10 65 In Pd \, you read a patch from right to left \, from
top to bottom. Objects also output from right to left;
-#X text 89 361 then check the Pd window to see the order.;
-#X obj 43 386 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s3.3
+#X obj 32 412 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s3.3
;
-#X text 10 110 The [trigger] object is used to enforce execution order.
+#X text 10 118 The [trigger] object is used to enforce execution order.
If you need things to run in a certain sequence \, then you use a [trigger].
;
+#X text 97 369 then check the Pd window to see the order;
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 1 1 3 0;
diff --git a/doc/tutorials/intro/13.ordering_messages.pd b/doc/tutorials/intro/13.ordering_messages.pd
index cbc193d7..e52981a5 100644
--- a/doc/tutorials/intro/13.ordering_messages.pd
+++ b/doc/tutorials/intro/13.ordering_messages.pd
@@ -1,42 +1,46 @@
-#N canvas 542 117 623 439 12;
+#N canvas 10 40 628 468 12;
#X obj 10 10 cnv 15 400 40 empty empty ordering_messages 20 12 0 24
-228992 -66577 0;
+#X text 10 393 look here for the result -->;
+#X text 10 62 Officially \, the execution order in Pd is undefined.
+;
+#X text 10 88 The [trigger] object allows you to specify the order
+of messages are sent. If you need to make sure that one thing runs
+before another \, use [trigger]:;
+#X obj 3 174 cnv 15 80 25 empty empty empty 20 12 0 14 -225271 -66577
+0;
+#X obj 142 149 cnv 15 80 25 empty empty empty 20 12 0 14 -225271 -66577
+0;
#X msg 395 249 now;
#X msg 316 250 this;
#X msg 237 250 makes;
#X msg 158 250 sense;
#X msg 80 250 !;
-#X msg 276 391 sense now this;
#X obj 157 292 symbol;
#X msg 159 151 bang;
-#X msg 10 177 bang;
+#X msg 19 177 bang;
#X msg 157 316 add2 \$1;
#X msg 478 248 set;
#X obj 160 178 trigger bang bang bang bang bang bang;
-#X text 10 393 look here for the result -->;
-#X text 10 62 Officially \, the execution order in Pd is undefined.
-;
-#X text 10 88 The [trigger] object allows you to specify the order
-of messages are sent. If you need to make sure that one thing runs
-before another \, use [trigger]:;
-#X connect 1 0 7 0;
-#X connect 2 0 7 0;
-#X connect 3 0 7 0;
-#X connect 4 0 7 0;
-#X connect 5 0 7 0;
-#X connect 7 0 10 0;
-#X connect 8 0 12 0;
-#X connect 9 0 3 0;
-#X connect 9 0 5 0;
+#X msg 296 391;
+#X connect 6 0 11 0;
+#X connect 7 0 11 0;
+#X connect 8 0 11 0;
#X connect 9 0 11 0;
-#X connect 9 0 4 0;
-#X connect 9 0 1 0;
-#X connect 9 0 2 0;
-#X connect 10 0 6 0;
-#X connect 11 0 6 0;
-#X connect 12 0 5 0;
-#X connect 12 1 4 0;
-#X connect 12 2 3 0;
-#X connect 12 3 2 0;
-#X connect 12 4 1 0;
-#X connect 12 5 11 0;
+#X connect 10 0 11 0;
+#X connect 11 0 14 0;
+#X connect 12 0 16 0;
+#X connect 13 0 8 0;
+#X connect 13 0 10 0;
+#X connect 13 0 15 0;
+#X connect 13 0 9 0;
+#X connect 13 0 6 0;
+#X connect 13 0 7 0;
+#X connect 14 0 17 0;
+#X connect 15 0 17 0;
+#X connect 16 0 10 0;
+#X connect 16 1 9 0;
+#X connect 16 2 8 0;
+#X connect 16 3 7 0;
+#X connect 16 4 6 0;
+#X connect 16 5 15 0;
diff --git a/doc/tutorials/intro/14.depth_first.pd b/doc/tutorials/intro/14.depth_first.pd
index 14bb4062..c42bbd68 100644
--- a/doc/tutorials/intro/14.depth_first.pd
+++ b/doc/tutorials/intro/14.depth_first.pd
@@ -1,31 +1,33 @@
-#N canvas 21 40 627 443 12;
-#X obj -43 8 cnv 15 400 40 empty empty depth_first 20 12 0 24 -228992
+#N canvas 10 40 632 472 12;
+#X obj 10 10 cnv 15 400 40 empty empty depth_first 20 12 0 24 -228992
-66577 0;
-#X obj 258 249 trigger bang bang;
-#X msg 208 358 add2 \$1;
-#X msg 207 397 1 2 3 4;
-#X msg 77 254 set;
-#X text 11 254 reset:;
-#X msg 257 215 4;
-#X msg 258 282 3;
-#X msg 423 280 2;
-#X msg 423 315 1;
-#X text 8 398 see result here -->;
-#X obj 258 184 bng 25 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+#X obj 265 229 trigger bang bang;
+#X msg 215 338 add2 \$1;
+#X msg 84 234 set;
+#X text 18 234 reset:;
+#X msg 264 195 4;
+#X msg 265 262 3;
+#X msg 430 260 2;
+#X msg 430 295 1;
+#X text 15 378 see result here -->;
+#X obj 265 164 bng 25 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
-#X text -39 66 Pd processes messages in "depth first". This means the
+#X text 12 66 Pd processes messages in "depth first". This means the
bottom-most message in a chain runs first. Everything below a spot
in a chain is run before. As you'll see from the example below \, the
[4( message actually runs last \, since everything below it executed
before it.;
-#X connect 1 0 7 0;
-#X connect 1 1 8 0;
-#X connect 2 0 3 0;
-#X connect 4 0 3 0;
-#X connect 6 0 1 0;
+#X obj 33 430 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s3.2
+;
+#X msg 214 377;
+#X connect 1 0 6 0;
+#X connect 1 1 7 0;
+#X connect 2 0 13 0;
+#X connect 3 0 13 0;
+#X connect 5 0 1 0;
+#X connect 5 0 2 0;
#X connect 6 0 2 0;
+#X connect 7 0 8 0;
#X connect 7 0 2 0;
-#X connect 8 0 9 0;
#X connect 8 0 2 0;
-#X connect 9 0 2 0;
-#X connect 11 0 6 0;
+#X connect 10 0 5 0;
diff --git a/doc/tutorials/intro/15.inlets_and_outlets.pd b/doc/tutorials/intro/15.inlets_and_outlets.pd
index 66a8527b..3ae0828d 100644
--- a/doc/tutorials/intro/15.inlets_and_outlets.pd
+++ b/doc/tutorials/intro/15.inlets_and_outlets.pd
@@ -1,11 +1,11 @@
-#N canvas 520 22 615 396 12;
-#N canvas 0 22 470 320 object 0;
+#N canvas 10 40 620 460 12;
+#N canvas 10 40 620 460 object 0;
#X obj 175 99 inlet;
#X obj 174 206 outlet;
#X text 14 39 this object does nothing but pass data thru;
#X connect 0 0 1 0;
#X restore 366 208 pd object;
-#N canvas 0 22 618 378 another 0;
+#N canvas 10 40 620 460 another 0;
#X obj 17 94 inlet;
#X obj 431 320 outlet;
#X obj 16 324 print;
diff --git a/doc/tutorials/intro/15.storage_objects.pd b/doc/tutorials/intro/15.storage_objects.pd
index d5ca3016..04f171c6 100644
--- a/doc/tutorials/intro/15.storage_objects.pd
+++ b/doc/tutorials/intro/15.storage_objects.pd
@@ -1,4 +1,5 @@
-#N canvas 559 137 638 539 12;
+#N canvas 10 40 624 464 12;
+#X obj 277 25 import iemlib;
#X obj 122 89 symbol;
#X obj 63 89 bang;
#X obj 303 89 f;
@@ -38,19 +39,19 @@ outputs its stored value.;
#X msg 492 300 symbol two;
#X obj 427 89 any;
#X obj 477 89 pointer;
-#X connect 8 0 14 0;
-#X connect 9 0 8 1;
-#X connect 10 0 16 0;
-#X connect 11 0 10 1;
-#X connect 12 0 10 0;
-#X connect 13 0 8 1;
-#X connect 18 0 15 0;
-#X connect 21 0 22 0;
-#X connect 23 0 18 0;
-#X connect 24 0 21 0;
-#X connect 25 0 8 0;
-#X connect 26 0 27 0;
-#X connect 28 0 26 0;
-#X connect 29 0 10 0;
-#X connect 30 0 26 1;
-#X connect 31 0 26 1;
+#X connect 9 0 15 0;
+#X connect 10 0 9 1;
+#X connect 11 0 17 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 0;
+#X connect 14 0 9 1;
+#X connect 19 0 16 0;
+#X connect 22 0 23 0;
+#X connect 24 0 19 0;
+#X connect 25 0 22 0;
+#X connect 26 0 9 0;
+#X connect 27 0 28 0;
+#X connect 29 0 27 0;
+#X connect 30 0 11 0;
+#X connect 31 0 27 1;
+#X connect 32 0 27 1;
diff --git a/doc/tutorials/intro/16.atoms.pd b/doc/tutorials/intro/16.atoms.pd
index 8276758e..7c8f5403 100644
--- a/doc/tutorials/intro/16.atoms.pd
+++ b/doc/tutorials/intro/16.atoms.pd
@@ -1,4 +1,4 @@
-#N canvas 546 135 614 464 12;
+#N canvas 10 40 620 460 12;
#X obj 10 12 cnv 15 400 40 empty empty atoms 20 12 0 24 -228992 -66577
0;
#X text 24 87 The basic data types of Pd are called "atoms". There
diff --git a/doc/tutorials/intro/17.atomic_messages.pd b/doc/tutorials/intro/17.atomic_messages.pd
index b76ee863..451cb3ef 100644
--- a/doc/tutorials/intro/17.atomic_messages.pd
+++ b/doc/tutorials/intro/17.atomic_messages.pd
@@ -1,4 +1,4 @@
-#N canvas 384 167 602 456 12;
+#N canvas 10 40 620 460 12;
#X obj 10 12 cnv 15 400 40 empty empty atomic_messages 20 12 0 24 -228992
-66577 0;
#X msg 27 81 bang;
diff --git a/doc/tutorials/intro/18.selectors.pd b/doc/tutorials/intro/18.selectors.pd
index 363971df..6a589ef4 100644
--- a/doc/tutorials/intro/18.selectors.pd
+++ b/doc/tutorials/intro/18.selectors.pd
@@ -1,7 +1,7 @@
-#N canvas 231 101 638 461 12;
+#N canvas 10 40 624 464 12;
#X obj 8 -33 cnv 15 400 40 empty empty selectors 20 12 0 24 -228992
-66577 0;
-#N canvas 328 337 454 304 object 0;
+#N canvas 10 40 620 460 object 0;
#X obj 79 36 inlet;
#X obj 86 270 outlet;
#X obj 308 267 outlet;
@@ -9,20 +9,22 @@
#X connect 0 0 3 0;
#X connect 3 0 1 0;
#X connect 3 1 2 0;
-#X restore 157 211 pd object;
-#X floatatom 157 264 5 0 0 0 - - -;
-#X floatatom 242 264 5 0 0 0 - - -;
-#X msg 189 165 output-right 309;
-#X msg 156 115 output-left 8675;
+#X restore 51 224 pd object;
+#X floatatom 51 277 5 0 0 0 - - -;
+#X floatatom 136 277 5 0 0 0 - - -;
+#X msg 83 178 output-right 309;
+#X msg 50 128 output-left 8675;
#X text 9 24 Every message has a selector. The selector is the first
element in the message. It tells the object which receives that message
what to do with it. A selector is basically like a command or a function.
;
-#X text 23 304 Here's the technical definition:;
-#X text 23 335 The selector is a symbolic atom \, which is a non-numeric
+#X text 22 319 Here's the technical definition:;
+#X text 22 350 The selector is a symbolic atom \, which is a non-numeric
string with no white space \, semicolons \, or commas. In the case
of messages whose first element is a numeric atom \, the selector is
implied.;
+#X text 220 129 <-- "output-left" is the selector;
+#X text 250 179 <-- "output-right" is the selector;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 4 0 1 0;
diff --git a/doc/tutorials/intro/19.subpatches.pd b/doc/tutorials/intro/19.subpatches.pd
index fe73255c..f7fe424a 100644
--- a/doc/tutorials/intro/19.subpatches.pd
+++ b/doc/tutorials/intro/19.subpatches.pd
@@ -1,11 +1,11 @@
-#N canvas 211 67 624 449 12;
+#N canvas 10 40 624 464 12;
#X obj 10 10 cnv 15 400 40 empty empty subpatches 20 12 0 24 -228992
-66577 0;
#X text 12 69 Encapsulation is a key concept in Pd programming. Each
object is an idea that is bundled up into an easy-to-use package. You
should make encapsulated your ideas. Subpatches are the easiest way
to do this.;
-#N canvas 394 144 474 324 what's 0;
+#N canvas 10 40 620 460 what's 0;
#X obj 140 91 loadbang;
#X obj 139 149 float;
#X obj 198 149 + 1;
@@ -18,9 +18,10 @@ to do this.;
#X connect 1 0 4 0;
#X connect 2 0 1 1;
#X connect 4 0 1 0;
-#X restore 192 193 pd what's in here?;
+#X restore 97 190 pd what's in here?;
+#X text 26 414 A subpatch is part of the same file \, its just a way
+of organizing the logic of a program.;
#X text 19 271 To make a subpatch \, create an object that started
with the word "pd" \, then type anything after that to identify it.
-;
-#X text 17 325 A subpatch is part of the same file \, its just a way
-of organizing the logic of a program.;
+Try making one below:;
+#X text 179 214 ^-- right-click here and select "Open";
diff --git a/doc/tutorials/intro/20.inlets_and_outlets.pd b/doc/tutorials/intro/20.inlets_and_outlets.pd
index 7f633d20..f919eef3 100644
--- a/doc/tutorials/intro/20.inlets_and_outlets.pd
+++ b/doc/tutorials/intro/20.inlets_and_outlets.pd
@@ -1,9 +1,9 @@
-#N canvas 82 134 632 457 12;
+#N canvas 10 40 620 460 12;
#X obj 10 10 cnv 15 400 40 empty empty inlets_and_outlets 20 12 0 24
-228992 -66577 0;
#X text 14 72 When making your own objects and subpatchs \, you can
create inlets and outlets using [inlet] and [outlet].;
-#N canvas 0 22 707 378 look 0;
+#N canvas 10 40 620 460 look 0;
#X obj 24 34 inlet;
#X obj 238 47 inlet;
#X obj 469 41 inlet;
@@ -25,7 +25,7 @@ create inlets and outlets using [inlet] and [outlet].;
-1;
#X obj 197 129 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
-#N canvas 120 60 711 382 look 0;
+#N canvas 10 40 620 460 look 0;
#X obj 24 34 inlet;
#X obj 334 33 inlet;
#X obj 528 35 inlet;
diff --git a/doc/tutorials/intro/21.outlet_order.pd b/doc/tutorials/intro/21.outlet_order.pd
index 5aaf5c8b..4bfebf41 100644
--- a/doc/tutorials/intro/21.outlet_order.pd
+++ b/doc/tutorials/intro/21.outlet_order.pd
@@ -1,4 +1,4 @@
-#N canvas 298 70 632 448 12;
+#N canvas 10 40 620 460 12;
#X text 223 149 <-- click here \,;
#X obj 8 10 cnv 15 400 40 empty empty outlet_order 20 12 0 24 -228992
-66577 0;
@@ -11,7 +11,7 @@ to break this convention. But you shouldn't do it unless it really
is necessary. This will save you in the long run.;
#X text 15 80 Just like the flow of programming in Pd \, the data should
be output from right to left.;
-#N canvas 0 22 454 304 spread 0;
+#N canvas 10 40 620 460 spread 0;
#X obj 68 2 inlet;
#X obj 38 235 outlet;
#X obj 201 235 outlet;
diff --git a/doc/tutorials/intro/22.Example-all_just_data.pd b/doc/tutorials/intro/22.Example-all_just_data.pd
index aeb2c96c..c5e0eec4 100644
--- a/doc/tutorials/intro/22.Example-all_just_data.pd
+++ b/doc/tutorials/intro/22.Example-all_just_data.pd
@@ -1,8 +1,8 @@
-#N canvas 585 87 502 438 10;
-#X obj 180 406 import unauthorized Gem;
+#N canvas 10 40 624 464 10;
+#X obj 177 265 import unauthorized Gem;
#X obj 154 102 grid grid1 200 0 199 200 0 199 1 1 1 10 10 113 347;
#X obj 25 39 pddp/dsp;
-#N canvas 446 285 662 482 guts 0;
+#N canvas 10 40 620 460 guts 0;
#X obj 20 10 inlet;
#X obj 275 14 inlet;
#X obj 78 108 osc~;
diff --git a/doc/tutorials/intro/23.EXERCISE-hmmm.pd b/doc/tutorials/intro/23.EXERCISE-hmmm.pd
index 909899f8..3e6b3850 100644
--- a/doc/tutorials/intro/23.EXERCISE-hmmm.pd
+++ b/doc/tutorials/intro/23.EXERCISE-hmmm.pd
@@ -1,5 +1,5 @@
-#N canvas 333 243 686 482 12;
-#N canvas 414 102 546 555 guts 0;
+#N canvas 10 40 624 464 12;
+#N canvas 10 40 620 460 guts 0;
#X msg 280 45 \; pd filename exercise-patch.pd /tmp \; #N canvas \;
#X pop 1 \;;
#X obj 300 328 s pd-exercise-patch.pd;
@@ -19,7 +19,7 @@
#X obj 34 134 delay 2000;
#X obj 21 187 delay 2000;
#X obj 10 245 delay 2000;
-#N canvas 261 307 459 387 connection-effect 0;
+#N canvas 10 40 620 460 connection-effect 0;
#X obj 186 312 dac~;
#X obj 72 233 osc~ 1000;
#X obj 138 266 *~;
@@ -84,13 +84,13 @@
#X connect 20 0 1 0;
#X connect 21 0 22 0;
#X connect 22 0 8 0;
-#X restore 233 269 pd guts;
-#X msg 233 242 solve;
-#X text 32 64 In the exercise patch \, connect the existing objects
+#X restore 220 269 pd guts;
+#X msg 220 242 solve;
+#X text 19 64 In the exercise patch \, connect the existing objects
so that you can control the frequency of the oscillator and hear the
resulting sound.;
-#X text 35 131 If you want help \, click the solve message below.;
-#X msg 298 242 try again;
+#X text 22 131 If you want help \, click the solve message below.;
+#X msg 285 242 try again;
#X obj 11 10 cnv 15 600 40 empty empty EXERCISE-make_your_first_patch
20 12 0 24 -262131 -66577 0;
#X connect 1 0 0 0;
diff --git a/doc/tutorials/intro/24.turning_on_and_off.pd b/doc/tutorials/intro/24.turning_on_and_off.pd
index 24323e6e..087b2b70 100644
--- a/doc/tutorials/intro/24.turning_on_and_off.pd
+++ b/doc/tutorials/intro/24.turning_on_and_off.pd
@@ -1,24 +1,22 @@
-#N canvas 100 227 628 453 12;
+#N canvas 10 40 624 464 12;
#X obj 10 10 cnv 15 400 40 empty empty turning_on_and_off 20 12 0 24
-228992 -66577 0;
-#X obj 160 145 metro 1000;
-#X obj 160 122 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+#X obj 160 122 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
;
#X text 183 122 <-- click here;
#X obj 160 171 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
-#X text 186 171 bangs once a second (1000ms);
#X text 15 371 The object is called [tgl] or you can get it from the
"Put" menu.;
#X text 14 63 Many objects can be switched on and off using a toggle.
A toggle outputs 0 for off \, and an number for on.;
#X text 11 217 By default \, a toggle outputs 1 for on \, but you can
change that to any number by selecting the "Properties" dialog.;
-#X obj 33 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+#X obj 33 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
;
#X floatatom 33 324 5 0 0 0 - - -;
-#X obj 103 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 100
-;
+#X obj 103 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 100
+100;
#X floatatom 103 324 5 0 0 0 - - -;
#X obj 173 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 9e-22
;
@@ -38,8 +36,10 @@ change that to any number by selecting the "Properties" dialog.;
#X obj 523 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 100
;
#X floatatom 523 324 5 0 0 0 - - -;
-#X connect 1 0 4 0;
-#X connect 2 0 1 0;
+#X text 186 171 bangs once every second (1000ms);
+#X obj 160 145 metro 1000;
+#X connect 1 0 24 0;
+#X connect 7 0 8 0;
#X connect 9 0 10 0;
#X connect 11 0 12 0;
#X connect 13 0 14 0;
@@ -47,4 +47,4 @@ change that to any number by selecting the "Properties" dialog.;
#X connect 17 0 18 0;
#X connect 19 0 20 0;
#X connect 21 0 22 0;
-#X connect 23 0 24 0;
+#X connect 24 0 3 0;
diff --git a/doc/tutorials/intro/25.properties.pd b/doc/tutorials/intro/25.properties.pd
index a7bbdb81..aaa3db98 100644
--- a/doc/tutorials/intro/25.properties.pd
+++ b/doc/tutorials/intro/25.properties.pd
@@ -1,4 +1,4 @@
-#N canvas 418 177 624 449 12;
+#N canvas 10 40 620 460 12;
#X obj 10 10 cnv 15 400 40 empty empty properties 20 12 0 24 -228992
-66577 0;
#X obj 260 148 tgl 200 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0
diff --git a/doc/tutorials/intro/26.sliders.pd b/doc/tutorials/intro/26.sliders.pd
index 0fb0ff23..7c9df971 100644
--- a/doc/tutorials/intro/26.sliders.pd
+++ b/doc/tutorials/intro/26.sliders.pd
@@ -1,4 +1,4 @@
-#N canvas 52 115 624 449 12;
+#N canvas 10 40 624 464 12;
#X obj 10 10 cnv 15 400 40 empty empty sliders 20 12 0 24 -228992 -66577
0;
#X obj 120 105 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
@@ -7,11 +7,11 @@
#X obj 338 106 vsl 15 128 0 1 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X floatatom 338 248 5 0 0 0 - - -;
-#X floatatom 230 412 5 0 0 0 - - -;
-#X msg 333 349 1000;
-#X msg 248 349 100;
-#X msg 204 349 60;
-#X msg 290 349 127;
+#X floatatom 253 423 5 0 0 0 - - -;
+#X msg 356 360 1000;
+#X msg 271 360 100;
+#X msg 227 360 60;
+#X msg 313 360 127;
#X text 9 61 Sliders are generally useful for controlling things over
a range of numbers \, like a color or loudness.;
#X text 144 130 by default \,;
@@ -20,15 +20,15 @@ a range of numbers \, like a color or loudness.;
#X text 363 138 0 to 1 is a;
#X text 361 160 commonly used;
#X text 361 181 range;
-#X obj 234 389 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+#X obj 257 400 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
-#X msg 162 349 0;
-#X msg 117 349 -23;
+#X msg 185 360 0;
+#X msg 140 360 -23;
#X text 16 276 They act very similarly to number boxes \, except they
show their value graphically rather that with numbers. One difference
is that sliders always limit the range of numbers that can pass thru:
;
-#X obj 211 413 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+#X obj 234 424 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
diff --git a/doc/tutorials/intro/27.guis.pd b/doc/tutorials/intro/27.guis.pd
index ca08bb3a..fc2f5aa9 100644
--- a/doc/tutorials/intro/27.guis.pd
+++ b/doc/tutorials/intro/27.guis.pd
@@ -1,813 +1,813 @@
-#N canvas 153 19 568 572 10;
-#X obj -4 -4 cnv 15 600 700 empty empty gui-INTRO 237 20 2 14 -261819
--143491 0;
-#X text 101 4 bng;
-#X obj 456 313 vsl 15 128 0 127 0 0 empty empty default_15x128 8 -8
-0 8 -262144 -1 -1 0 1;
-#X obj 354 42 tgl 100 1 empty empty 100_pix 8 -8 0 8 -250685 -24198
--42246 1 1;
-#X obj 57 251 hsl 128 15 0 127 0 0 empty empty default_128x15 8 -8
-0 8 -262144 -1 -1 0 1;
-#X obj 78 226 hsl 20 8 0 19 0 0 empty empty min_20x8 8 -8 0 8 -262144
--1 -1 0 1;
-#X obj 478 326 vsl 8 20 0 19 0 0 empty empty min_8x20 8 -8 0 8 -262144
--1 -1 0 1;
-#X obj 458 48 tgl 8 0 empty empty min_8 8 -8 0 8 -262144 -1 -1 0 1
-;
-#X obj 458 71 tgl 15 0 empty empty default_15 8 -8 0 8 -262144 -1 -1
-0 1;
-#X obj 459 109 tgl 30 0 empty empty 30_pix 8 -8 0 8 -262144 -1 -1 0
-1;
-#X obj 101 88 bng 30 250 50 0 empty empty 30_pix 8 -8 0 8 -262144 -1
--1;
-#X obj 412 304 vsl 30 250 0 249 0 1 empty empty 30x250 8 -8 0 8 -184301
--42886 -42246 21800 1;
-#X obj 7 271 hsl 251 30 0 250 0 1 empty empty 251x30 8 -8 0 8 -147456
--1109 -66577 12500 1;
-#X text 180 518 (c) musil@iem.kug.ac.at;
-#X text 222 531 IEM KUG;
-#X text 197 543 graz \, austria 2001;
-#X obj 40 343 vu 25 200 empty empty 8 -8 0 8 -1 -99865 1 0;
-#X obj 13 24 bng 75 5000 25 1 empty empty 75pix+init 8 -8 0 8 -262131
--261458 -123526;
-#X obj 100 376 vu 15 120 empty empty 8 -8 0 8 -66577 -1 1 0;
-#X obj 186 375 vu 10 80 empty empty 8 -8 0 8 -66577 -1 1 0;
-#X text 99 313 vu;
-#N canvas 438 180 374 414 animate_vu 0;
-#X obj 40 211 t f f;
-#X obj 65 233 + 6;
-#X obj 40 257 pack 0 0;
-#X obj 78 94 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1
-;
-#X obj 78 115 sel 0 1;
-#X obj 78 74 metro 4000;
-#X msg 100 137 30 3000;
-#X msg 78 167 -130 3000;
-#X obj 40 189 line -130 50;
-#X obj 78 51 inlet;
-#X obj 40 316 outlet;
-#X obj 87 316 outlet;
-#X obj 134 316 outlet;
-#X connect 0 0 2 0;
-#X connect 0 1 1 0;
-#X connect 1 0 2 1;
-#X connect 2 0 10 0;
-#X connect 2 0 11 0;
-#X connect 2 0 12 0;
-#X connect 3 0 4 0;
-#X connect 4 0 7 0;
-#X connect 4 1 6 0;
-#X connect 5 0 3 0;
-#X connect 6 0 8 0;
-#X connect 7 0 8 0;
-#X connect 8 0 0 0;
-#X connect 9 0 5 0;
-#X restore 99 349 pd animate_vu;
-#X obj 99 331 tgl 15 1 empty empty empty 8 -8 0 10 -262144 -1 -1 1
-1;
-#X text 360 8 toggle = tgl;
-#X text 68 198 hslider = hsl;
-#X text 430 271 vslider = vsl;
-#X obj 13 160 print initial_bang;
-#X obj 21 118 bng 15 250 50 0 empty empty default_15 8 -8 0 8 -262144
--1 -1;
-#X obj 104 48 bng 8 250 50 0 empty empty min_8 8 -8 0 10 -262144 -1
--1;
-#X obj 21 137 print no_initial_bang;
-#X obj 283 324 cnv 15 100 30 empty empty empty 20 12 2 20 -225271 -66577
-0;
-#X obj 283 355 cnv 15 100 30 empty empty empty 20 12 2 20 -225280 -66577
-0;
-#X obj 283 386 cnv 15 100 30 empty empty empty 20 12 2 20 -261681 -66577
-0;
-#X obj 283 417 cnv 15 100 30 empty empty empty 20 12 2 20 -257472 -66577
-0;
-#X obj 172 375 vu 10 80 empty empty 8 -8 0 8 -66577 -1 0 0;
-#X obj 310 203 hradio 15 1 1 8 empty empty default_8*15 8 -8 0 8 -262144
--1 -1 2;
-#X obj 254 223 hradio 25 1 1 12 empty empty 12*25 8 -8 0 8 -1433 -225280
--355 1;
-#N canvas 179 78 690 573 nervous 0;
-#X obj 10 23 tgl 55 1 empty start_nervously1 start_it 8 -8 0 10 -260818
--1 -250685 0 1;
-#X obj 131 141 bng 51 1200 50 0 empty nerv_bng bang 8 -8 0 10 -253378
--137031 -222091;
-#X obj 120 418 hsl 22 12 0 127 0 0 empty nerv_hsl h-slider 8 -8 0 10
--71033 -66198 -128091 0 1;
-#X obj 448 140 tgl 11 1 empty nerv_tgl toggle 8 -8 0 10 -141355 -82199
--51488 0 1;
-#X obj 447 383 vsl 15 111 0 127 0 0 empty nerv_vsl v-slider 8 -8 0
-10 -150187 -73940 -248863 0 1;
-#N canvas 135 99 382 469 control 0;
-#X obj 19 21 inlet;
-#X obj 19 50 t b f;
-#X obj 19 153 del 900;
-#X obj 19 212 del 900;
-#X obj 19 93 del 100;
-#X obj 19 283 del 900;
-#X obj 33 125 f;
-#X obj 33 180 f;
-#X obj 33 245 f;
-#X obj 33 309 f;
-#N canvas 280 166 794 432 bng 0;
-#X obj 114 260 - 0;
-#X obj 148 258 f;
-#X obj 147 222 t f b;
-#X obj 79 122 random 56789;
-#X obj 150 165 random 9876;
-#X obj 47 236 - 0;
-#X obj 81 234 f;
-#X obj 80 198 t f b;
-#X obj 150 192 % 50;
-#X obj 79 145 % 50;
-#X obj 64 289 pack 0 0;
-#X obj 85 53 t b b b;
-#X obj 234 368 pack 0 0 0;
-#X obj 250 29 metro 2000;
-#X obj 445 122 random 555666;
-#X obj 445 168 + 8;
-#X obj 445 145 % 120;
-#X obj 84 32 metro 100;
-#X obj 234 261 random 1.67772e+007;
-#X obj 266 283 random 1.67772e+007;
-#X obj 299 315 random 1.67772e+007;
-#X obj 84 11 inlet;
-#X msg 64 312 \; nerv_bng delta \$1 \$2;
-#X msg 234 390 \; nerv_bng color \$1 \$2 \$3;
-#X msg 445 192 \; nerv_bng size \$1;
-#X msg 250 51 \; nerv_bng bang;
-#X obj 234 340 * -1;
-#X obj 266 316 * -1;
-#X obj 299 342 * -1;
-#X connect 0 0 10 1;
-#X connect 1 0 0 1;
-#X connect 2 0 1 1;
-#X connect 2 0 0 0;
-#X connect 2 1 1 0;
-#X connect 3 0 9 0;
-#X connect 4 0 8 0;
-#X connect 5 0 10 0;
-#X connect 6 0 5 1;
-#X connect 7 0 6 1;
-#X connect 7 0 5 0;
-#X connect 7 1 6 0;
-#X connect 8 0 2 0;
-#X connect 9 0 7 0;
-#X connect 10 0 22 0;
-#X connect 11 0 3 0;
-#X connect 11 0 14 0;
-#X connect 11 0 18 0;
-#X connect 11 1 4 0;
-#X connect 11 1 19 0;
-#X connect 11 2 20 0;
-#X connect 12 0 23 0;
-#X connect 13 0 25 0;
-#X connect 14 0 16 0;
-#X connect 15 0 24 0;
-#X connect 16 0 15 0;
-#X connect 17 0 11 0;
-#X connect 18 0 26 0;
-#X connect 19 0 27 0;
-#X connect 20 0 28 0;
-#X connect 21 0 17 0;
-#X connect 21 0 13 0;
-#X connect 26 0 12 0;
-#X connect 27 0 12 1;
-#X connect 28 0 12 2;
-#X restore 114 143 pd bng;
-#N canvas 139 89 794 432 tgl 0;
-#X obj 114 260 - 0;
-#X obj 148 258 f;
-#X obj 147 222 t f b;
-#X obj 79 122 random 56789;
-#X obj 150 165 random 9876;
-#X obj 47 236 - 0;
-#X obj 81 234 f;
-#X obj 80 198 t f b;
-#X obj 150 192 % 50;
-#X obj 79 145 % 50;
-#X obj 64 289 pack 0 0;
-#X obj 85 53 t b b b;
-#X obj 445 122 random 555666;
-#X obj 445 168 + 8;
-#X obj 445 144 % 120;
-#X obj 85 31 metro 100;
-#X obj 264 28 metro 1000;
-#X obj 85 10 inlet;
-#X msg 64 312 \; nerv_tgl delta \$1 \$2;
-#X msg 226 322 \; nerv_tgl color \$1 \$2 \$3;
-#X msg 445 192 \; nerv_tgl size \$1;
-#X msg 264 51 \; nerv_tgl bang;
-#X obj 226 298 pack 0 0 0;
-#X obj 226 191 random 1.67772e+007;
-#X obj 258 213 random 1.67772e+007;
-#X obj 291 245 random 1.67772e+007;
-#X obj 226 270 * -1;
-#X obj 258 246 * -1;
-#X obj 291 272 * -1;
-#X connect 0 0 10 1;
-#X connect 1 0 0 1;
-#X connect 2 0 1 1;
-#X connect 2 0 0 0;
-#X connect 2 1 1 0;
-#X connect 3 0 9 0;
-#X connect 4 0 8 0;
-#X connect 5 0 10 0;
-#X connect 6 0 5 1;
-#X connect 7 0 6 1;
-#X connect 7 0 5 0;
-#X connect 7 1 6 0;
-#X connect 8 0 2 0;
-#X connect 9 0 7 0;
-#X connect 10 0 18 0;
-#X connect 11 0 3 0;
-#X connect 11 0 12 0;
-#X connect 11 0 23 0;
-#X connect 11 1 4 0;
-#X connect 11 1 24 0;
-#X connect 11 2 25 0;
-#X connect 12 0 14 0;
-#X connect 13 0 20 0;
-#X connect 14 0 13 0;
-#X connect 15 0 11 0;
-#X connect 16 0 21 0;
-#X connect 17 0 15 0;
-#X connect 17 0 16 0;
-#X connect 22 0 19 0;
-#X connect 23 0 26 0;
-#X connect 24 0 27 0;
-#X connect 25 0 28 0;
-#X connect 26 0 22 0;
-#X connect 27 0 22 1;
-#X connect 28 0 22 2;
-#X restore 114 198 pd tgl;
-#N canvas 322 99 794 432 hsl 0;
-#X obj 114 260 - 0;
-#X obj 148 258 f;
-#X obj 147 222 t f b;
-#X obj 79 122 random 56789;
-#X obj 150 165 random 9876;
-#X obj 47 236 - 0;
-#X obj 81 234 f;
-#X obj 80 198 t f b;
-#X obj 150 192 % 50;
-#X obj 79 145 % 50;
-#X obj 64 289 pack 0 0;
-#X obj 85 53 t b b b;
-#X obj 445 122 random 555666;
-#X obj 560 188 + 8;
-#X obj 560 128 random 773322;
-#X obj 445 208 pack 0 0;
-#X obj 84 32 metro 100;
-#X obj 561 155 % 30;
-#X obj 445 183 + 20;
-#X obj 446 149 % 110;
-#X obj 254 305 metro 1000;
-#X obj 254 327 random 846352;
-#X obj 254 350 % 130;
-#X obj 84 11 inlet;
-#X msg 64 321 \; nerv_hsl delta \$1 \$2;
-#X msg 254 373 \; nerv_hsl set \$1;
-#X msg 445 231 \; nerv_hsl size \$1 \$2;
-#X obj 245 202 pack 0 0 0;
-#X obj 245 95 random 1.67772e+007;
-#X obj 277 117 random 1.67772e+007;
-#X obj 310 149 random 1.67772e+007;
-#X obj 245 174 * -1;
-#X obj 277 150 * -1;
-#X obj 310 176 * -1;
-#X msg 245 229 \; nerv_hsl color \$1 \$2 \$3;
-#X connect 0 0 10 1;
-#X connect 1 0 0 1;
-#X connect 2 0 1 1;
-#X connect 2 0 0 0;
-#X connect 2 1 1 0;
-#X connect 3 0 9 0;
-#X connect 4 0 8 0;
-#X connect 5 0 10 0;
-#X connect 6 0 5 1;
-#X connect 7 0 6 1;
-#X connect 7 0 5 0;
-#X connect 7 1 6 0;
-#X connect 8 0 2 0;
-#X connect 9 0 7 0;
-#X connect 10 0 24 0;
-#X connect 11 0 3 0;
-#X connect 11 0 12 0;
-#X connect 11 0 28 0;
-#X connect 11 1 4 0;
-#X connect 11 1 14 0;
-#X connect 11 1 29 0;
-#X connect 11 2 30 0;
-#X connect 12 0 19 0;
-#X connect 13 0 15 1;
-#X connect 14 0 17 0;
-#X connect 15 0 26 0;
-#X connect 16 0 11 0;
-#X connect 17 0 13 0;
-#X connect 18 0 15 0;
-#X connect 18 0 22 1;
-#X connect 19 0 18 0;
-#X connect 20 0 21 0;
-#X connect 21 0 22 0;
-#X connect 22 0 25 0;
-#X connect 23 0 16 0;
-#X connect 23 0 20 0;
-#X connect 27 0 34 0;
-#X connect 28 0 31 0;
-#X connect 29 0 32 0;
-#X connect 30 0 33 0;
-#X connect 31 0 27 0;
-#X connect 32 0 27 1;
-#X connect 33 0 27 2;
-#X restore 112 263 pd hsl;
-#N canvas 148 132 794 432 vsl 0;
-#X obj 114 260 - 0;
-#X obj 148 258 f;
-#X obj 147 222 t f b;
-#X obj 79 122 random 56789;
-#X obj 150 165 random 9876;
-#X obj 47 236 - 0;
-#X obj 81 234 f;
-#X obj 80 198 t f b;
-#X obj 150 192 % 50;
-#X obj 79 145 % 50;
-#X obj 64 289 pack 0 0;
-#X obj 85 53 t b b b;
-#X obj 445 122 random 555666;
-#X obj 560 128 random 773322;
-#X obj 445 208 pack 0 0;
-#X obj 84 32 metro 100;
-#X obj 241 299 metro 1000;
-#X obj 240 325 random 846352;
-#X obj 241 352 % 130;
-#X obj 561 155 % 110;
-#X obj 560 188 + 20;
-#X obj 446 149 % 30;
-#X obj 445 183 + 3;
-#X obj 84 11 inlet;
-#X msg 239 227 \; nerv_vsl color \$1 \$2 \$3;
-#X msg 445 231 \; nerv_vsl size \$1 \$2;
-#X msg 64 310 \; nerv_vsl delta \$1 \$2;
-#X msg 241 376 \; nerv_vsl set \$1;
-#X obj 239 203 pack 0 0 0;
-#X obj 239 96 random 1.67772e+007;
-#X obj 271 118 random 1.67772e+007;
-#X obj 304 150 random 1.67772e+007;
-#X obj 239 175 * -1;
-#X obj 271 151 * -1;
-#X obj 304 177 * -1;
-#X connect 0 0 10 1;
-#X connect 1 0 0 1;
-#X connect 2 0 1 1;
-#X connect 2 0 0 0;
-#X connect 2 1 1 0;
-#X connect 3 0 9 0;
-#X connect 4 0 8 0;
-#X connect 5 0 10 0;
-#X connect 6 0 5 1;
-#X connect 7 0 6 1;
-#X connect 7 0 5 0;
-#X connect 7 1 6 0;
-#X connect 8 0 2 0;
-#X connect 9 0 7 0;
-#X connect 10 0 26 0;
-#X connect 11 0 3 0;
-#X connect 11 0 12 0;
-#X connect 11 0 29 0;
-#X connect 11 1 4 0;
-#X connect 11 1 13 0;
-#X connect 11 1 30 0;
-#X connect 11 2 31 0;
-#X connect 12 0 21 0;
-#X connect 13 0 19 0;
-#X connect 14 0 25 0;
-#X connect 15 0 11 0;
-#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 18 0 27 0;
-#X connect 19 0 20 0;
-#X connect 20 0 14 1;
-#X connect 20 0 18 1;
-#X connect 21 0 22 0;
-#X connect 22 0 14 0;
-#X connect 23 0 15 0;
-#X connect 23 0 16 0;
-#X connect 28 0 24 0;
-#X connect 29 0 32 0;
-#X connect 30 0 33 0;
-#X connect 31 0 34 0;
-#X connect 32 0 28 0;
-#X connect 33 0 28 1;
-#X connect 34 0 28 2;
-#X restore 113 327 pd vsl;
-#X connect 0 0 1 0;
-#X connect 1 0 4 0;
-#X connect 1 1 6 1;
-#X connect 1 1 7 1;
-#X connect 1 1 8 1;
-#X connect 1 1 9 1;
-#X connect 2 0 3 0;
-#X connect 2 0 7 0;
-#X connect 3 0 5 0;
-#X connect 3 0 8 0;
-#X connect 4 0 2 0;
-#X connect 4 0 6 0;
-#X connect 5 0 9 0;
-#X connect 6 0 10 0;
-#X connect 7 0 11 0;
-#X connect 8 0 12 0;
-#X connect 9 0 13 0;
-#X restore 10 85 pd control;
-#X connect 0 0 5 0;
-#X restore 295 424 pd nervous;
-#X floatatom 239 84 4 0 0 0 - - -;
-#N canvas 226 38 811 519 properties 0;
-#X obj 2 1 cnv 8 870 590 empty empty about_gui_properties 290 20 2
-18 -225280 -1109 0;
-#X text 12 62 "selectable dimensions(pix): size:" = square-size of
-the;
-#X text 10 35 "dimensions(pix): size:" = square-size of the gui-objects
-;
-#X text 10 48 "dimensions(pix)(pix): width: height:" = width & height
-;
-#X text 11 177 "visible_rectangle(pix)(pix): width: height:" = width
-&;
-#X text 11 104 "flash-time(ms)(ms): intrrpt:" = flash-interrupt-time
-;
-#X text 411 62 selectable top-left corner of my_canvas in pixels.;
-#X text 415 35 in pixels.;
-#X text 11 76 "flash-time(ms)(ms): hold:" = flash-hold-time in msec
-=;
-#X text 405 76 duration of activity \, if a bang-object was activated
-;
-#X text 400 48 of the rectangular gui-object in pixels.;
-#X text 402 177 height of a visible \, deactivated rectangle in pixels.
-;
-#X text 14 224 "new&old" or "new-only" = the radiobutton-object changes
-its;
-#X text 441 224 state in 2 ways:;
-#X text 198 237 "new&old"-mode: output sends previous state off \,
-current;
-#X text 596 237 state on \;;
-#X text 197 250 "new-only"-mode: output sends only current state on.
-;
-#X text 14 280 "steady on click" or "jump on click" = the 2 slider-objects
-;
-#X text 481 322 immediately to new mouse-position \,;
-#X text 12 413 "label: font: fontsize:" = font-properties of label.
-;
-#X text 15 429 "colors:" = a click on radiobuttons "background:" \,
-;
-#X text 370 429 "front-color:" or "label-color:" activates the color-fields
-;
-#X text 174 193 if "init"-mode is selected \, the object displays and
-puts;
-#X text 15 266 "number:" = number of buttons of a radiobutton.;
-#X text 205 89 by any message-event or by a mouse-click.;
-#X text 388 104 in msec = duration of inactivity \, if an already;
-#X text 205 117 activated bang is activated once more.;
-#X text 11 132 "output-range: left: right:" = hslider-bounds;
-#X text 332 132 for input- as well as output-values.;
-#X text 332 146 for input- as well as output-values.;
-#X text 11 146 "output-range: bottom: top:" = vslider-bounds;
-#X text 12 193 "init" or "no init" =;
-#X text 571 193 out its previously saved value.;
-#X text 174 208 if "no init"-mode is selected \, nothing will happen.
-;
-#X text 433 280 react to mouse-click in 2 ways:;
-#X text 201 294 "steady on click"-mode: slider-knob stays in position
-\,;
-#X text 225 307 mouse and knob will move parallel \;;
-#X text 200 322 "jump on click"-mode: slider-knob jumps;
-#X text 224 338 positions of mouse and knob will be identical \;;
-#X text 402 353 receive-object with the same send-symbol-name.;
-#X text 11 368 "receive-symbol:" = a send-object with the same;
-#X text 11 353 "send-symbol:" = an output-message can be received by
-a;
-#X text 347 368 symbol-name can send an input-message to the gui-object.
-;
-#X text 13 383 "label: name:" = visible name of a gui-object \;;
-#X text 343 383 it will be moved together with the gui-object.;
-#X text 12 397 "label: x_off: y_off:" = coordinates of the label in
-;
-#X text 382 397 relation to top-left corner of gui-object.;
-#X text 207 444 on the right side which display the current color of
-the;
-#X text 605 444 item \;;
-#X text 11 161 "non-zero-value: value:" = toggle has 2;
-#X text 292 161 value-states: zero and this value.;
-#X text 208 460 to select a different color \, click on one of the
-30 small;
-#X text 614 459 preset-color-buttons \;;
-#X text 208 475 each color (background \, front \, label) can be tuned
-by its;
-#X text 235 490 RGB-values (0 .. 252 \, step 4) and a click on the
-set-button.;
-#X restore 287 361 pd properties;
-#N canvas 146 190 460 120 move 0;
-#X obj 0 0 cnv 8 460 120 empty empty how_to_move_gui_objects 100 18
-2 20 -225271 -42246 0;
-#X text 11 43 Select a gui-object \, then navigate the object by using
-the 4 direction-keys: UP \, DOWN \, LEFT or RIGHT.;
-#X text 12 70 If you press the SHIFT-Key too \, the object will move
-10 times faster.;
-#X restore 308 331 pd move;
-#N canvas 151 38 522 451 dollar 0;
-#X obj 0 0 cnv 8 560 160 empty empty the_dollar_thing 100 18 2 20 -261681
--123526 0;
-#X text 10 39 if you want to send to \, or to receive from gui-objects
-;
-#X text 394 39 in abstractions \,;
-#X text 36 52 you have to write into the property-entry:;
-#X text 44 67 #1-label (instead of \$1-label).;
-#X text 25 103 type #0-uniquelabel (instead of \$0-uniquelabel).;
-#X text 9 88 if you want a unique send-receive-symbolname:;
-#X restore 299 391 pd dollar;
-#X obj 283 448 cnv 15 100 30 empty empty empty 20 12 2 20 -228992 -66577
-0;
-#N canvas 177 21 730 638 messages 0;
-#X obj 1 1 cnv 8 870 640 empty empty about_gui_messages 200 20 2 18
--228992 -355 0;
-#X text 366 99 in pixels.;
-#X text 9 84 "size 15 128" = change width & height;
-#X text 9 159 "flashtime 50 600" = change flash-interrupt- and flash-hold
-;
-#X text 424 160 -time of bng-object.;
-#X text 9 174 "pos 150 170" = change the x-y-position of the top-left
-;
-#X text 400 173 corner of a gui-object in pixels \;;
-#X text 139 188 "pos 0 0" is the top-left corner of your window \;
-;
-#X text 143 204 the positive directions of x- and y-axes are right
-and down.;
-#X text 12 415 "receive togui" = change receive-name of object.;
-#X text 12 431 "label its_me" = change label-text of object.;
-#X text 12 446 "label_pos 20 8" = change offset-coordinates of label-text.
-;
-#X text 12 461 "label_font 0 10" = change font and fontsize of label-text.
-;
-#X text 12 340 "steady 1" change slider-knob-behaviour on mouse-click.
-;
-#X text 13 522 "lin" = change scale-mode of slider to linear.;
-#X text 14 537 "log" = change scale-mode of slider to logarithmical.
-;
-#X text 333 355 to output only the new state.;
-#X text 273 84 of sliders and vu in pixels.;
-#X text 12 477 "init 1" = change initial loadbang-mode of gui-objects
-;
-#X text 12 400 "send fromgui" = change send-name of gui-objects \,
-;
-#X text 12 325 "number 10" = change number of buttons of radio-button.
-;
-#X text 9 128 "range 0.1 10.0" = change slider-boundaries for;
-#X text 344 128 input- as well as output-values.;
-#X text 13 492 "set 64" = change only the inner state and display of
-gui-;
-#X text 11 33 all gui-objects (bng \, hsl \, vsl \, tgl \, rdb \, cnv
-and vu);
-#X text 9 113 "vis_size 800 600" = change width & height;
-#X text 309 113 of visual rectangle of my_canvas in pixels.;
-#X text 359 400 except vu and my_canvas.;
-#X text 395 477 except vu and cnv.;
-#X text 421 492 objects \, except bng and cnv \;;
-#X text 85 47 understand input-messages which change their properties.
-;
-#X text 11 222 "delta 15 17" = move the gui-object in relation to its
-;
-#X text 397 222 current position (in pixels).;
-#X text 333 371 to first release the previous button \,;
-#X text 144 385 then output the state of the new button.;
-#X text 12 371 "double_change" change radio-button-behaviour;
-#X text 12 355 "single_change" change radio-button-behaviour;
-#X text 147 507 no output will result.;
-#X text 9 99 "size 15" = change square-size of rdb \, bng and tgl;
-#X text 9 143 "nonzero 127.0" = change the nonzero-value of toggle.
-;
-#X text 15 552 "get_pos" = if my_canvas has a receive-name and a send-name
-;
-#X text 434 552 and you send the;
-#X text 272 237 front- and label-color of object with one of 30 presets.
-;
-#X text 277 252 label-color of vu and my_canvas with one of 30 presets.
-;
-#X text 504 282 (0 .. 255);
-#X text 558 568 coordinates.;
-#X text 149 568 message "get_pos" to it \, you receive the current
-x- and y-;
-#X text 85 59 except cnv has no inlet \, so you have to send messages
-;
-#X text 85 71 to its receive-label (edit properties).;
-#X text 11 237 "color 0 22 22" = change background- \,;
-#X text 11 252 "color 0 22" = change background- and;
-#X text 13 268 "color -1.67772e+007 (-1) -1" = change background- \,
-;
-#X text 364 267 (front-) and label-color of object with RGB-values.
-;
-#X text 149 283 the RGB-value will be calculated: -65536*RED-value
-;
-#X text 592 309 - 1;
-#X text 422 309 - BLUE-value (0 .. 255);
-#X text 394 296 - 256*GREEN-value (0 .. 255);
-#X restore 294 453 pd messages;
-#X obj 225 259 cnv 1 350 1 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 4 308 cnv 1 268 1 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 4 186 cnv 1 220 1 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 225 151 cnv 1 350 1 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 271 261 cnv 1 1 48 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 232 308 cnv 1 1 200 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 339 3 cnv 1 1 149 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 398 260 cnv 1 1 310 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X obj 225 3 cnv 1 1 255 empty empty empty 20 12 2 20 -258699 -66577
-0;
-#X floatatom 276 84 4 0 0 0 - - -;
-#X obj 239 43 tgl 15 0 empty dsp_tgl empty 20 8 0 10 -370 -262144 -1
-0 1;
-#N canvas 145 31 380 506 dsp 0;
-#X msg 31 88 \; pd dsp \$1;
-#X obj 20 199 cputime;
-#X obj 20 178 t b b;
-#X text 15 11 dsp;
-#X text 48 439 (c) musil@iem.kug.ac.at;
-#X text 90 452 IEM KUG;
-#X text 59 65 1/0 = ON/OFF;
-#X text 97 313 CPU-load;
-#X obj 62 126 loadbang;
-#X obj 20 126 sel 1;
-#X text 65 464 graz \, austria 2001;
-#X text 64 12 turn dsp-kernel on & off \,;
-#X obj 20 240 t f f;
-#X text 65 408 average;
-#X text 177 405 peak;
-#X obj 211 154 f;
-#X obj 146 179 > -1;
-#X obj 169 155 f -1;
-#X obj 179 91 t f b f;
-#X obj 146 204 sel 1;
-#X obj 192 132 f -1;
-#X obj 20 154 metro 500;
-#X obj 20 220 * 0.2;
-#X text 74 37 -dsp-load in %;
-#X text 65 24 measure average- and peak-;
-#X obj 20 315 * 100;
-#X obj 20 360 int;
-#X obj 20 338 + 0.499;
-#X obj 20 383 * 0.01;
-#X obj 246 207 r pd;
-#X obj 246 231 route dsp;
-#X text 245 318 to toggle input;
-#X msg 246 283 \; dsp_tgl set \$1;
-#X obj 247 341 r dsp_tgl;
-#X obj 246 257 route float;
-#X obj 146 227 del 3990;
-#N canvas 305 120 336 257 once 0;
-#X text 7 204 (c) musil@iem.kug.ac.at;
-#X text 49 214 IEM KUG;
-#X text 24 223 graz \, austria 2001;
-#X text 8 6 once;
-#X obj 19 150 bang;
-#X obj 56 65 f 0;
-#X text 59 7 only the first message passes through;
-#X obj 19 127 t b a;
-#X obj 19 100 spigot;
-#X obj 119 63 f 1;
-#X obj 119 41 loadbang;
-#X obj 19 40 inlet;
-#X obj 49 183 outlet;
-#X connect 4 0 5 0;
-#X connect 5 0 8 1;
-#X connect 7 0 4 0;
-#X connect 7 1 12 0;
-#X connect 8 0 7 0;
-#X connect 9 0 8 1;
-#X connect 10 0 9 0;
-#X connect 11 0 8 0;
-#X restore 111 264 pd once;
-#N canvas 297 130 530 376 1p1z 0;
-#X text 7 315 (c) musil@iem.kug.ac.at;
-#X text 52 325 IEM KUG;
-#X obj 22 231 +;
-#X text 8 6 1p1z;
-#X text 24 334 graz \, austria 2001;
-#X text 104 22 y[n] = a0*x[n] + a1*x[n-1] + b1*y[n-1];
-#X text 169 53 a0;
-#X text 25 34 x[n];
-#X text 24 280 y[n];
-#X text 209 53 a1;
-#X text 249 53 b1;
-#X obj 284 52 loadbang;
-#X text 64 102 x[n-1];
-#X obj 40 205 +;
-#X obj 22 133 *;
-#X obj 40 160 *;
-#X obj 59 182 *;
-#X text 82 143 y[n-1];
-#X obj 284 72 t b b b;
-#X obj 40 98 f;
-#X obj 59 138 f;
-#X obj 22 71 t f b b;
-#X text 350 63 x[n-1]init;
-#X text 429 102 y[n-1]init;
-#X text 147 202 1.arg: <float> a0;
-#X text 147 213 2.arg: <float> a1;
-#X text 147 224 3.arg: <float> b1;
-#X text 63 5 <float> control-IIR-filter 1.order;
-#X obj 162 115 f 0.1;
-#X obj 202 142 f 0;
-#X obj 242 164 f 0.9;
-#X obj 22 49 inlet;
-#X obj 162 71 inlet;
-#X obj 202 71 inlet;
-#X obj 242 71 inlet;
-#X obj 356 80 inlet;
-#X obj 431 120 inlet;
-#X obj 22 264 outlet;
-#X connect 2 0 20 1;
-#X connect 2 0 37 0;
-#X connect 11 0 18 0;
-#X connect 13 0 2 1;
-#X connect 14 0 2 0;
-#X connect 15 0 13 0;
-#X connect 16 0 13 1;
-#X connect 18 0 28 0;
-#X connect 18 1 29 0;
-#X connect 18 2 30 0;
-#X connect 19 0 15 0;
-#X connect 20 0 16 0;
-#X connect 21 0 14 0;
-#X connect 21 0 19 1;
-#X connect 21 1 19 0;
-#X connect 21 2 20 0;
-#X connect 28 0 14 1;
-#X connect 29 0 15 1;
-#X connect 30 0 16 1;
-#X connect 31 0 21 0;
-#X connect 32 0 28 0;
-#X connect 33 0 29 0;
-#X connect 34 0 30 0;
-#X connect 35 0 19 1;
-#X connect 36 0 20 1;
-#X restore 20 289 pd 1p1z 0.1 0 0.9;
-#X obj 20 65 inlet;
-#X obj 20 406 outlet;
-#X obj 211 405 outlet;
-#X connect 1 0 22 0;
-#X connect 2 0 1 0;
-#X connect 2 1 1 1;
-#X connect 8 0 21 0;
-#X connect 9 0 21 0;
-#X connect 12 0 37 0;
-#X connect 15 0 17 1;
-#X connect 15 0 40 0;
-#X connect 16 0 19 0;
-#X connect 17 0 16 1;
-#X connect 18 0 16 0;
-#X connect 18 1 17 0;
-#X connect 18 2 15 1;
-#X connect 19 0 15 0;
-#X connect 19 0 35 0;
-#X connect 20 0 17 1;
-#X connect 21 0 2 0;
-#X connect 22 0 12 0;
-#X connect 22 0 18 0;
-#X connect 25 0 27 0;
-#X connect 26 0 28 0;
-#X connect 27 0 26 0;
-#X connect 28 0 39 0;
-#X connect 29 0 30 0;
-#X connect 30 0 34 0;
-#X connect 34 0 32 0;
-#X connect 35 0 20 0;
-#X connect 37 0 25 0;
-#X connect 38 0 0 0;
-#X connect 38 0 9 0;
-#X restore 239 63 pd dsp;
-#X text 238 99 mean;
-#X text 279 100 peak;
-#X text 289 63 % cpu;
-#X text 283 305 my_canvas = cnv;
-#X text 312 172 radiobutton = rdb;
-#X text 271 350 R;
-#X text 270 370 E;
-#X text 270 389 A;
-#X text 270 409 D;
-#X text 270 428 M;
-#X text 269 447 E;
-#X connect 17 0 26 0;
-#X connect 21 0 18 0;
-#X connect 21 0 16 0;
-#X connect 21 1 34 0;
-#X connect 21 2 19 0;
-#X connect 22 0 21 0;
-#X connect 27 0 29 0;
-#X connect 54 0 55 0;
-#X connect 55 0 38 0;
-#X connect 55 1 53 0;
+#N canvas 10 40 624 464 10;
+#X obj -4 -4 cnv 15 620 700 empty empty gui-INTRO 237 20 2 14 -261819
+-143491 0;
+#X text 101 4 bng;
+#X obj 456 313 vsl 15 128 0 127 0 0 empty empty default_15x128 8 -8
+0 8 -262144 -1 -1 0 1;
+#X obj 354 42 tgl 100 1 empty empty 100_pix 8 -8 0 8 -250685 -24198
+-42246 1 1;
+#X obj 57 251 hsl 128 15 0 127 0 0 empty empty default_128x15 8 -8
+0 8 -262144 -1 -1 0 1;
+#X obj 78 226 hsl 20 8 0 19 0 0 empty empty min_20x8 8 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 478 326 vsl 8 20 0 19 0 0 empty empty min_8x20 8 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 458 48 tgl 8 0 empty empty min_8 8 -8 0 8 -262144 -1 -1 0 1
+;
+#X obj 458 71 tgl 15 0 empty empty default_15 8 -8 0 8 -262144 -1 -1
+0 1;
+#X obj 459 109 tgl 30 0 empty empty 30_pix 8 -8 0 8 -262144 -1 -1 0
+1;
+#X obj 101 88 bng 30 250 50 0 empty empty 30_pix 8 -8 0 8 -262144 -1
+-1;
+#X obj 412 304 vsl 30 250 0 249 0 1 empty empty 30x250 8 -8 0 8 -184301
+-42886 -42246 21800 1;
+#X obj 7 271 hsl 251 30 0 250 0 1 empty empty 251x30 8 -8 0 8 -147456
+-1109 -66577 12500 1;
+#X text 180 518 (c) musil@iem.kug.ac.at;
+#X text 222 531 IEM KUG;
+#X text 197 543 graz \, austria 2001;
+#X obj 40 343 vu 25 200 empty empty 8 -8 0 8 -1 -99865 1 0;
+#X obj 13 24 bng 75 5000 25 1 empty empty 75pix+init 8 -8 0 8 -262131
+-261458 -123526;
+#X obj 100 376 vu 15 120 empty empty 8 -8 0 8 -66577 -1 1 0;
+#X obj 186 375 vu 10 80 empty empty 8 -8 0 8 -66577 -1 1 0;
+#X text 99 313 vu;
+#N canvas 10 40 620 460 animate_vu 0;
+#X obj 40 211 t f f;
+#X obj 65 233 + 6;
+#X obj 40 257 pack 0 0;
+#X obj 78 94 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 1 1
+;
+#X obj 78 115 sel 0 1;
+#X obj 78 74 metro 4000;
+#X msg 100 137 30 3000;
+#X msg 78 167 -130 3000;
+#X obj 40 189 line -130 50;
+#X obj 78 51 inlet;
+#X obj 40 316 outlet;
+#X obj 87 316 outlet;
+#X obj 134 316 outlet;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 1 0 2 1;
+#X connect 2 0 10 0;
+#X connect 2 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 5 0;
+#X restore 99 349 pd animate_vu;
+#X obj 99 331 tgl 15 1 empty empty empty 8 -8 0 10 -262144 -1 -1 1
+1;
+#X text 360 8 toggle = tgl;
+#X text 68 198 hslider = hsl;
+#X text 430 271 vslider = vsl;
+#X obj 13 160 print initial_bang;
+#X obj 21 118 bng 15 250 50 0 empty empty default_15 8 -8 0 8 -262144
+-1 -1;
+#X obj 104 48 bng 8 250 50 0 empty empty min_8 8 -8 0 10 -262144 -1
+-1;
+#X obj 21 137 print no_initial_bang;
+#X obj 283 324 cnv 15 100 30 empty empty empty 20 12 2 20 -225271 -66577
+0;
+#X obj 283 355 cnv 15 100 30 empty empty empty 20 12 2 20 -225280 -66577
+0;
+#X obj 283 386 cnv 15 100 30 empty empty empty 20 12 2 20 -261681 -66577
+0;
+#X obj 283 417 cnv 15 100 30 empty empty empty 20 12 2 20 -257472 -66577
+0;
+#X obj 172 375 vu 10 80 empty empty 8 -8 0 8 -66577 -1 0 0;
+#X obj 310 203 hradio 15 1 1 8 empty empty default_8*15 8 -8 0 8 -262144
+-1 -1 2;
+#X obj 254 223 hradio 25 1 1 12 empty empty 12*25 8 -8 0 8 -1433 -225280
+-355 1;
+#N canvas 10 40 620 460 nervous 0;
+#X obj 10 23 tgl 55 1 empty start_nervously1 start_it 8 -8 0 10 -260818
+-1 -250685 0 1;
+#X obj 131 141 bng 51 1200 50 0 empty nerv_bng bang 8 -8 0 10 -253378
+-137031 -222091;
+#X obj 120 418 hsl 22 12 0 127 0 0 empty nerv_hsl h-slider 8 -8 0 10
+-71033 -66198 -128091 0 1;
+#X obj 448 140 tgl 11 1 empty nerv_tgl toggle 8 -8 0 10 -141355 -82199
+-51488 0 1;
+#X obj 447 383 vsl 15 111 0 127 0 0 empty nerv_vsl v-slider 8 -8 0
+10 -150187 -73940 -248863 0 1;
+#N canvas 10 40 620 460 control 0;
+#X obj 19 21 inlet;
+#X obj 19 50 t b f;
+#X obj 19 153 del 900;
+#X obj 19 212 del 900;
+#X obj 19 93 del 100;
+#X obj 19 283 del 900;
+#X obj 33 125 f;
+#X obj 33 180 f;
+#X obj 33 245 f;
+#X obj 33 309 f;
+#N canvas 10 40 620 460 bng 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 234 368 pack 0 0 0;
+#X obj 250 29 metro 2000;
+#X obj 445 122 random 555666;
+#X obj 445 168 + 8;
+#X obj 445 145 % 120;
+#X obj 84 32 metro 100;
+#X obj 234 261 random 1.67772e+07;
+#X obj 266 283 random 1.67772e+07;
+#X obj 299 315 random 1.67772e+07;
+#X obj 84 11 inlet;
+#X msg 64 312 \; nerv_bng delta \$1 \$2;
+#X msg 234 390 \; nerv_bng color \$1 \$2 \$3;
+#X msg 445 192 \; nerv_bng size \$1;
+#X msg 250 51 \; nerv_bng bang;
+#X obj 234 340 * -1;
+#X obj 266 316 * -1;
+#X obj 299 342 * -1;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 22 0;
+#X connect 11 0 3 0;
+#X connect 11 0 14 0;
+#X connect 11 0 18 0;
+#X connect 11 1 4 0;
+#X connect 11 1 19 0;
+#X connect 11 2 20 0;
+#X connect 12 0 23 0;
+#X connect 13 0 25 0;
+#X connect 14 0 16 0;
+#X connect 15 0 24 0;
+#X connect 16 0 15 0;
+#X connect 17 0 11 0;
+#X connect 18 0 26 0;
+#X connect 19 0 27 0;
+#X connect 20 0 28 0;
+#X connect 21 0 17 0;
+#X connect 21 0 13 0;
+#X connect 26 0 12 0;
+#X connect 27 0 12 1;
+#X connect 28 0 12 2;
+#X restore 114 143 pd bng;
+#N canvas 10 40 620 460 tgl 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 445 122 random 555666;
+#X obj 445 168 + 8;
+#X obj 445 144 % 120;
+#X obj 85 31 metro 100;
+#X obj 264 28 metro 1000;
+#X obj 85 10 inlet;
+#X msg 64 312 \; nerv_tgl delta \$1 \$2;
+#X msg 226 322 \; nerv_tgl color \$1 \$2 \$3;
+#X msg 445 192 \; nerv_tgl size \$1;
+#X msg 264 51 \; nerv_tgl bang;
+#X obj 226 298 pack 0 0 0;
+#X obj 226 191 random 1.67772e+07;
+#X obj 258 213 random 1.67772e+07;
+#X obj 291 245 random 1.67772e+07;
+#X obj 226 270 * -1;
+#X obj 258 246 * -1;
+#X obj 291 272 * -1;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 18 0;
+#X connect 11 0 3 0;
+#X connect 11 0 12 0;
+#X connect 11 0 23 0;
+#X connect 11 1 4 0;
+#X connect 11 1 24 0;
+#X connect 11 2 25 0;
+#X connect 12 0 14 0;
+#X connect 13 0 20 0;
+#X connect 14 0 13 0;
+#X connect 15 0 11 0;
+#X connect 16 0 21 0;
+#X connect 17 0 15 0;
+#X connect 17 0 16 0;
+#X connect 22 0 19 0;
+#X connect 23 0 26 0;
+#X connect 24 0 27 0;
+#X connect 25 0 28 0;
+#X connect 26 0 22 0;
+#X connect 27 0 22 1;
+#X connect 28 0 22 2;
+#X restore 114 198 pd tgl;
+#N canvas 10 40 620 460 hsl 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 445 122 random 555666;
+#X obj 560 188 + 8;
+#X obj 560 128 random 773322;
+#X obj 445 208 pack 0 0;
+#X obj 84 32 metro 100;
+#X obj 561 155 % 30;
+#X obj 445 183 + 20;
+#X obj 446 149 % 110;
+#X obj 254 305 metro 1000;
+#X obj 254 327 random 846352;
+#X obj 254 350 % 130;
+#X obj 84 11 inlet;
+#X msg 64 321 \; nerv_hsl delta \$1 \$2;
+#X msg 254 373 \; nerv_hsl set \$1;
+#X msg 445 231 \; nerv_hsl size \$1 \$2;
+#X obj 245 202 pack 0 0 0;
+#X obj 245 95 random 1.67772e+07;
+#X obj 277 117 random 1.67772e+07;
+#X obj 310 149 random 1.67772e+07;
+#X obj 245 174 * -1;
+#X obj 277 150 * -1;
+#X obj 310 176 * -1;
+#X msg 245 229 \; nerv_hsl color \$1 \$2 \$3;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 24 0;
+#X connect 11 0 3 0;
+#X connect 11 0 12 0;
+#X connect 11 0 28 0;
+#X connect 11 1 4 0;
+#X connect 11 1 14 0;
+#X connect 11 1 29 0;
+#X connect 11 2 30 0;
+#X connect 12 0 19 0;
+#X connect 13 0 15 1;
+#X connect 14 0 17 0;
+#X connect 15 0 26 0;
+#X connect 16 0 11 0;
+#X connect 17 0 13 0;
+#X connect 18 0 15 0;
+#X connect 18 0 22 1;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 0;
+#X connect 23 0 16 0;
+#X connect 23 0 20 0;
+#X connect 27 0 34 0;
+#X connect 28 0 31 0;
+#X connect 29 0 32 0;
+#X connect 30 0 33 0;
+#X connect 31 0 27 0;
+#X connect 32 0 27 1;
+#X connect 33 0 27 2;
+#X restore 112 263 pd hsl;
+#N canvas 10 40 620 460 vsl 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 445 122 random 555666;
+#X obj 560 128 random 773322;
+#X obj 445 208 pack 0 0;
+#X obj 84 32 metro 100;
+#X obj 241 299 metro 1000;
+#X obj 240 325 random 846352;
+#X obj 241 352 % 130;
+#X obj 561 155 % 110;
+#X obj 560 188 + 20;
+#X obj 446 149 % 30;
+#X obj 445 183 + 3;
+#X obj 84 11 inlet;
+#X msg 239 227 \; nerv_vsl color \$1 \$2 \$3;
+#X msg 445 231 \; nerv_vsl size \$1 \$2;
+#X msg 64 310 \; nerv_vsl delta \$1 \$2;
+#X msg 241 376 \; nerv_vsl set \$1;
+#X obj 239 203 pack 0 0 0;
+#X obj 239 96 random 1.67772e+07;
+#X obj 271 118 random 1.67772e+07;
+#X obj 304 150 random 1.67772e+07;
+#X obj 239 175 * -1;
+#X obj 271 151 * -1;
+#X obj 304 177 * -1;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 26 0;
+#X connect 11 0 3 0;
+#X connect 11 0 12 0;
+#X connect 11 0 29 0;
+#X connect 11 1 4 0;
+#X connect 11 1 13 0;
+#X connect 11 1 30 0;
+#X connect 11 2 31 0;
+#X connect 12 0 21 0;
+#X connect 13 0 19 0;
+#X connect 14 0 25 0;
+#X connect 15 0 11 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 27 0;
+#X connect 19 0 20 0;
+#X connect 20 0 14 1;
+#X connect 20 0 18 1;
+#X connect 21 0 22 0;
+#X connect 22 0 14 0;
+#X connect 23 0 15 0;
+#X connect 23 0 16 0;
+#X connect 28 0 24 0;
+#X connect 29 0 32 0;
+#X connect 30 0 33 0;
+#X connect 31 0 34 0;
+#X connect 32 0 28 0;
+#X connect 33 0 28 1;
+#X connect 34 0 28 2;
+#X restore 113 327 pd vsl;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 6 1;
+#X connect 1 1 7 1;
+#X connect 1 1 8 1;
+#X connect 1 1 9 1;
+#X connect 2 0 3 0;
+#X connect 2 0 7 0;
+#X connect 3 0 5 0;
+#X connect 3 0 8 0;
+#X connect 4 0 2 0;
+#X connect 4 0 6 0;
+#X connect 5 0 9 0;
+#X connect 6 0 10 0;
+#X connect 7 0 11 0;
+#X connect 8 0 12 0;
+#X connect 9 0 13 0;
+#X restore 10 85 pd control;
+#X connect 0 0 5 0;
+#X restore 295 424 pd nervous;
+#X floatatom 239 84 4 0 0 0 - - -;
+#N canvas 10 40 620 460 properties 0;
+#X obj 2 1 cnv 8 870 590 empty empty about_gui_properties 290 20 2
+18 -225280 -1109 0;
+#X text 12 62 "selectable dimensions(pix): size:" = square-size of
+the;
+#X text 10 35 "dimensions(pix): size:" = square-size of the gui-objects
+;
+#X text 10 48 "dimensions(pix)(pix): width: height:" = width & height
+;
+#X text 11 177 "visible_rectangle(pix)(pix): width: height:" = width
+&;
+#X text 11 104 "flash-time(ms)(ms): intrrpt:" = flash-interrupt-time
+;
+#X text 411 62 selectable top-left corner of my_canvas in pixels.;
+#X text 415 35 in pixels.;
+#X text 11 76 "flash-time(ms)(ms): hold:" = flash-hold-time in msec
+=;
+#X text 405 76 duration of activity \, if a bang-object was activated
+;
+#X text 400 48 of the rectangular gui-object in pixels.;
+#X text 402 177 height of a visible \, deactivated rectangle in pixels.
+;
+#X text 14 224 "new&old" or "new-only" = the radiobutton-object changes
+its;
+#X text 441 224 state in 2 ways:;
+#X text 198 237 "new&old"-mode: output sends previous state off \,
+current;
+#X text 596 237 state on \;;
+#X text 197 250 "new-only"-mode: output sends only current state on.
+;
+#X text 14 280 "steady on click" or "jump on click" = the 2 slider-objects
+;
+#X text 481 322 immediately to new mouse-position \,;
+#X text 12 413 "label: font: fontsize:" = font-properties of label.
+;
+#X text 15 429 "colors:" = a click on radiobuttons "background:" \,
+;
+#X text 370 429 "front-color:" or "label-color:" activates the color-fields
+;
+#X text 174 193 if "init"-mode is selected \, the object displays and
+puts;
+#X text 15 266 "number:" = number of buttons of a radiobutton.;
+#X text 205 89 by any message-event or by a mouse-click.;
+#X text 388 104 in msec = duration of inactivity \, if an already;
+#X text 205 117 activated bang is activated once more.;
+#X text 11 132 "output-range: left: right:" = hslider-bounds;
+#X text 332 132 for input- as well as output-values.;
+#X text 332 146 for input- as well as output-values.;
+#X text 11 146 "output-range: bottom: top:" = vslider-bounds;
+#X text 12 193 "init" or "no init" =;
+#X text 571 193 out its previously saved value.;
+#X text 174 208 if "no init"-mode is selected \, nothing will happen.
+;
+#X text 433 280 react to mouse-click in 2 ways:;
+#X text 201 294 "steady on click"-mode: slider-knob stays in position
+\,;
+#X text 225 307 mouse and knob will move parallel \;;
+#X text 200 322 "jump on click"-mode: slider-knob jumps;
+#X text 224 338 positions of mouse and knob will be identical \;;
+#X text 402 353 receive-object with the same send-symbol-name.;
+#X text 11 368 "receive-symbol:" = a send-object with the same;
+#X text 11 353 "send-symbol:" = an output-message can be received by
+a;
+#X text 347 368 symbol-name can send an input-message to the gui-object.
+;
+#X text 13 383 "label: name:" = visible name of a gui-object \;;
+#X text 343 383 it will be moved together with the gui-object.;
+#X text 12 397 "label: x_off: y_off:" = coordinates of the label in
+;
+#X text 382 397 relation to top-left corner of gui-object.;
+#X text 207 444 on the right side which display the current color of
+the;
+#X text 605 444 item \;;
+#X text 11 161 "non-zero-value: value:" = toggle has 2;
+#X text 292 161 value-states: zero and this value.;
+#X text 208 460 to select a different color \, click on one of the
+30 small;
+#X text 614 459 preset-color-buttons \;;
+#X text 208 475 each color (background \, front \, label) can be tuned
+by its;
+#X text 235 490 RGB-values (0 .. 252 \, step 4) and a click on the
+set-button.;
+#X restore 287 361 pd properties;
+#N canvas 10 40 620 460 move 0;
+#X obj 0 0 cnv 8 460 120 empty empty how_to_move_gui_objects 100 18
+2 20 -225271 -42246 0;
+#X text 11 43 Select a gui-object \, then navigate the object by using
+the 4 direction-keys: UP \, DOWN \, LEFT or RIGHT.;
+#X text 12 70 If you press the SHIFT-Key too \, the object will move
+10 times faster.;
+#X restore 308 331 pd move;
+#N canvas 10 40 620 460 dollar 0;
+#X obj 0 0 cnv 8 560 160 empty empty the_dollar_thing 100 18 2 20 -261681
+-123526 0;
+#X text 10 39 if you want to send to \, or to receive from gui-objects
+;
+#X text 394 39 in abstractions \,;
+#X text 36 52 you have to write into the property-entry:;
+#X text 44 67 #1-label (instead of \$1-label).;
+#X text 25 103 type #0-uniquelabel (instead of \$0-uniquelabel).;
+#X text 9 88 if you want a unique send-receive-symbolname:;
+#X restore 299 391 pd dollar;
+#X obj 283 448 cnv 15 100 30 empty empty empty 20 12 2 20 -228992 -66577
+0;
+#N canvas 10 40 620 460 messages 0;
+#X obj 1 1 cnv 8 870 640 empty empty about_gui_messages 200 20 2 18
+-228992 -355 0;
+#X text 366 99 in pixels.;
+#X text 9 84 "size 15 128" = change width & height;
+#X text 9 159 "flashtime 50 600" = change flash-interrupt- and flash-hold
+;
+#X text 424 160 -time of bng-object.;
+#X text 9 174 "pos 150 170" = change the x-y-position of the top-left
+;
+#X text 400 173 corner of a gui-object in pixels \;;
+#X text 139 188 "pos 0 0" is the top-left corner of your window \;
+;
+#X text 143 204 the positive directions of x- and y-axes are right
+and down.;
+#X text 12 415 "receive togui" = change receive-name of object.;
+#X text 12 431 "label its_me" = change label-text of object.;
+#X text 12 446 "label_pos 20 8" = change offset-coordinates of label-text.
+;
+#X text 12 461 "label_font 0 10" = change font and fontsize of label-text.
+;
+#X text 12 340 "steady 1" change slider-knob-behaviour on mouse-click.
+;
+#X text 13 522 "lin" = change scale-mode of slider to linear.;
+#X text 14 537 "log" = change scale-mode of slider to logarithmical.
+;
+#X text 333 355 to output only the new state.;
+#X text 273 84 of sliders and vu in pixels.;
+#X text 12 477 "init 1" = change initial loadbang-mode of gui-objects
+;
+#X text 12 400 "send fromgui" = change send-name of gui-objects \,
+;
+#X text 12 325 "number 10" = change number of buttons of radio-button.
+;
+#X text 9 128 "range 0.1 10.0" = change slider-boundaries for;
+#X text 344 128 input- as well as output-values.;
+#X text 13 492 "set 64" = change only the inner state and display of
+gui-;
+#X text 11 33 all gui-objects (bng \, hsl \, vsl \, tgl \, rdb \, cnv
+and vu);
+#X text 9 113 "vis_size 800 600" = change width & height;
+#X text 309 113 of visual rectangle of my_canvas in pixels.;
+#X text 359 400 except vu and my_canvas.;
+#X text 395 477 except vu and cnv.;
+#X text 421 492 objects \, except bng and cnv \;;
+#X text 85 47 understand input-messages which change their properties.
+;
+#X text 11 222 "delta 15 17" = move the gui-object in relation to its
+;
+#X text 397 222 current position (in pixels).;
+#X text 333 371 to first release the previous button \,;
+#X text 144 385 then output the state of the new button.;
+#X text 12 371 "double_change" change radio-button-behaviour;
+#X text 12 355 "single_change" change radio-button-behaviour;
+#X text 147 507 no output will result.;
+#X text 9 99 "size 15" = change square-size of rdb \, bng and tgl;
+#X text 9 143 "nonzero 127.0" = change the nonzero-value of toggle.
+;
+#X text 15 552 "get_pos" = if my_canvas has a receive-name and a send-name
+;
+#X text 434 552 and you send the;
+#X text 272 237 front- and label-color of object with one of 30 presets.
+;
+#X text 277 252 label-color of vu and my_canvas with one of 30 presets.
+;
+#X text 504 282 (0 .. 255);
+#X text 558 568 coordinates.;
+#X text 149 568 message "get_pos" to it \, you receive the current
+x- and y-;
+#X text 85 59 except cnv has no inlet \, so you have to send messages
+;
+#X text 85 71 to its receive-label (edit properties).;
+#X text 11 237 "color 0 22 22" = change background- \,;
+#X text 11 252 "color 0 22" = change background- and;
+#X text 13 268 "color -1.67772e+07 (-1) -1" = change background- \,
+;
+#X text 364 267 (front-) and label-color of object with RGB-values.
+;
+#X text 149 283 the RGB-value will be calculated: -65536*RED-value
+;
+#X text 592 309 - 1;
+#X text 422 309 - BLUE-value (0 .. 255);
+#X text 394 296 - 256*GREEN-value (0 .. 255);
+#X restore 294 453 pd messages;
+#X obj 225 259 cnv 1 350 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 4 308 cnv 1 268 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 4 186 cnv 1 220 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 225 151 cnv 1 350 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 271 261 cnv 1 1 48 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 232 308 cnv 1 1 200 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 339 3 cnv 1 1 149 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 398 260 cnv 1 1 310 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 225 3 cnv 1 1 255 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X floatatom 276 84 4 0 0 0 - - -;
+#X obj 239 43 tgl 15 0 empty dsp_tgl empty 20 8 0 10 -370 -262144 -1
+0 1;
+#N canvas 10 40 620 460 dsp 0;
+#X msg 31 88 \; pd dsp \$1;
+#X obj 20 199 cputime;
+#X obj 20 178 t b b;
+#X text 15 11 dsp;
+#X text 48 439 (c) musil@iem.kug.ac.at;
+#X text 90 452 IEM KUG;
+#X text 59 65 1/0 = ON/OFF;
+#X text 97 313 CPU-load;
+#X obj 62 126 loadbang;
+#X obj 20 126 sel 1;
+#X text 65 464 graz \, austria 2001;
+#X text 64 12 turn dsp-kernel on & off \,;
+#X obj 20 240 t f f;
+#X text 65 408 average;
+#X text 177 405 peak;
+#X obj 211 154 f;
+#X obj 146 179 > -1;
+#X obj 169 155 f -1;
+#X obj 179 91 t f b f;
+#X obj 146 204 sel 1;
+#X obj 192 132 f -1;
+#X obj 20 154 metro 500;
+#X obj 20 220 * 0.2;
+#X text 74 37 -dsp-load in %;
+#X text 65 24 measure average- and peak-;
+#X obj 20 315 * 100;
+#X obj 20 360 int;
+#X obj 20 338 + 0.499;
+#X obj 20 383 * 0.01;
+#X obj 246 207 r pd;
+#X obj 246 231 route dsp;
+#X text 245 318 to toggle input;
+#X msg 246 283 \; dsp_tgl set \$1;
+#X obj 247 341 r dsp_tgl;
+#X obj 246 257 route float;
+#X obj 146 227 del 3990;
+#N canvas 10 40 620 460 once 0;
+#X text 7 204 (c) musil@iem.kug.ac.at;
+#X text 49 214 IEM KUG;
+#X text 24 223 graz \, austria 2001;
+#X text 8 6 once;
+#X obj 19 150 bang;
+#X obj 56 65 f 0;
+#X text 59 7 only the first message passes through;
+#X obj 19 127 t b a;
+#X obj 19 100 spigot;
+#X obj 119 63 f 1;
+#X obj 119 41 loadbang;
+#X obj 19 40 inlet;
+#X obj 49 183 outlet;
+#X connect 4 0 5 0;
+#X connect 5 0 8 1;
+#X connect 7 0 4 0;
+#X connect 7 1 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 1;
+#X connect 10 0 9 0;
+#X connect 11 0 8 0;
+#X restore 111 264 pd once;
+#N canvas 10 40 620 460 1p1z 0;
+#X text 7 315 (c) musil@iem.kug.ac.at;
+#X text 52 325 IEM KUG;
+#X obj 22 231 +;
+#X text 8 6 1p1z;
+#X text 24 334 graz \, austria 2001;
+#X text 104 22 y[n] = a0*x[n] + a1*x[n-1] + b1*y[n-1];
+#X text 169 53 a0;
+#X text 25 34 x[n];
+#X text 24 280 y[n];
+#X text 209 53 a1;
+#X text 249 53 b1;
+#X obj 284 52 loadbang;
+#X text 64 102 x[n-1];
+#X obj 40 205 +;
+#X obj 22 133 *;
+#X obj 40 160 *;
+#X obj 59 182 *;
+#X text 82 143 y[n-1];
+#X obj 284 72 t b b b;
+#X obj 40 98 f;
+#X obj 59 138 f;
+#X obj 22 71 t f b b;
+#X text 350 63 x[n-1]init;
+#X text 429 102 y[n-1]init;
+#X text 147 202 1.arg: <float> a0;
+#X text 147 213 2.arg: <float> a1;
+#X text 147 224 3.arg: <float> b1;
+#X text 63 5 <float> control-IIR-filter 1.order;
+#X obj 162 115 f 0.1;
+#X obj 202 142 f 0;
+#X obj 242 164 f 0.9;
+#X obj 22 49 inlet;
+#X obj 162 71 inlet;
+#X obj 202 71 inlet;
+#X obj 242 71 inlet;
+#X obj 356 80 inlet;
+#X obj 431 120 inlet;
+#X obj 22 264 outlet;
+#X connect 2 0 20 1;
+#X connect 2 0 37 0;
+#X connect 11 0 18 0;
+#X connect 13 0 2 1;
+#X connect 14 0 2 0;
+#X connect 15 0 13 0;
+#X connect 16 0 13 1;
+#X connect 18 0 28 0;
+#X connect 18 1 29 0;
+#X connect 18 2 30 0;
+#X connect 19 0 15 0;
+#X connect 20 0 16 0;
+#X connect 21 0 14 0;
+#X connect 21 0 19 1;
+#X connect 21 1 19 0;
+#X connect 21 2 20 0;
+#X connect 28 0 14 1;
+#X connect 29 0 15 1;
+#X connect 30 0 16 1;
+#X connect 31 0 21 0;
+#X connect 32 0 28 0;
+#X connect 33 0 29 0;
+#X connect 34 0 30 0;
+#X connect 35 0 19 1;
+#X connect 36 0 20 1;
+#X restore 20 289 pd 1p1z 0.1 0 0.9;
+#X obj 20 65 inlet;
+#X obj 20 406 outlet;
+#X obj 211 405 outlet;
+#X connect 1 0 22 0;
+#X connect 2 0 1 0;
+#X connect 2 1 1 1;
+#X connect 8 0 21 0;
+#X connect 9 0 21 0;
+#X connect 12 0 37 0;
+#X connect 15 0 17 1;
+#X connect 15 0 40 0;
+#X connect 16 0 19 0;
+#X connect 17 0 16 1;
+#X connect 18 0 16 0;
+#X connect 18 1 17 0;
+#X connect 18 2 15 1;
+#X connect 19 0 15 0;
+#X connect 19 0 35 0;
+#X connect 20 0 17 1;
+#X connect 21 0 2 0;
+#X connect 22 0 12 0;
+#X connect 22 0 18 0;
+#X connect 25 0 27 0;
+#X connect 26 0 28 0;
+#X connect 27 0 26 0;
+#X connect 28 0 39 0;
+#X connect 29 0 30 0;
+#X connect 30 0 34 0;
+#X connect 34 0 32 0;
+#X connect 35 0 20 0;
+#X connect 37 0 25 0;
+#X connect 38 0 0 0;
+#X connect 38 0 9 0;
+#X restore 239 63 pd dsp;
+#X text 238 99 mean;
+#X text 279 100 peak;
+#X text 289 63 % cpu;
+#X text 283 305 my_canvas = cnv;
+#X text 312 172 radiobutton = rdb;
+#X text 271 350 R;
+#X text 270 370 E;
+#X text 270 389 A;
+#X text 270 409 D;
+#X text 270 428 M;
+#X text 269 447 E;
+#X connect 17 0 26 0;
+#X connect 21 0 18 0;
+#X connect 21 0 16 0;
+#X connect 21 1 34 0;
+#X connect 21 2 19 0;
+#X connect 22 0 21 0;
+#X connect 27 0 29 0;
+#X connect 54 0 55 0;
+#X connect 55 0 38 0;
+#X connect 55 1 53 0;
diff --git a/doc/tutorials/intro/28.gui_objects.pd b/doc/tutorials/intro/28.gui_objects.pd
index 8a75061f..950e5d4f 100644
--- a/doc/tutorials/intro/28.gui_objects.pd
+++ b/doc/tutorials/intro/28.gui_objects.pd
@@ -1,48 +1,68 @@
-#N canvas 312 62 750 592 10;
-#X obj 504 24 import cyclone unauthorized;
-#X obj 30 70 bng 15 250 50 0 \$1 \$1 empty 20 8 0 8 -262144 -1 -1;
-#X obj 30 102 tgl 15 1.04858e+06 empty \$2 empty 20 8 0 8 -262144 -1
+#N canvas 10 40 640 480 10;
+#X obj 420 33 import cyclone unauthorized;
+#X obj 11 57 cnv 15 600 650 empty empty empty 20 12 0 14 -262131 -66577
+0;
+#X obj 11 348 cnv 15 400 100 empty empty empty 20 12 0 14 -261696 -66577
+0;
+#X obj 11 57 cnv 15 400 300 empty empty empty 20 12 0 14 -241657 -66577
+0;
+#X obj 30 110 bng 15 250 50 0 \$1 \$1 empty 20 8 0 8 -262144 -1 -1
+;
+#X obj 30 142 tgl 15 1.04858e+06 empty \$2 empty 20 8 0 8 -262144 -1
-1 0 1;
-#X obj 34 148 vsl 15 128 0 127 0 1.04858e+06 empty \$3 empty 20 8 0
+#X obj 34 188 vsl 15 128 0 127 0 1.04858e+06 empty \$3 empty 20 8 0
8 -262144 -1 -1 0 1;
-#X obj 191 278 hsl 128 15 0 127 0 0 empty empty empty 20 8 0 8 -262144
+#X obj 191 318 hsl 128 15 0 127 0 0 empty empty empty 20 8 0 8 -262144
-1 -1 0 1;
-#X obj 201 249 hdl 15 1 2.6624e+06 8 \$5 \$5 empty 20 8 192 8 -262144
+#X obj 201 289 hdl 15 1 2.6624e+06 8 \$5 \$5 empty 20 8 192 8 -262144
-1 -1 0;
-#X obj 254 87 vu 15 120 \$6 empty 35 8 0 8 -66577 -1 1 0;
-#X obj 111 69 cnv 15 100 60 empty empty [canvas] 20 12 0 14 -233017
+#X obj 254 127 vu 15 120 \$6 empty 35 8 0 8 -66577 -1 1 0;
+#X obj 111 109 cnv 15 100 60 empty empty [canvas] 20 12 0 14 -233017
-66577 1.04858e+06;
-#X obj 126 149 vdl 15 1 4.79232e+06 8 \$9 \$9 empty 20 8 192 8 -262144
+#X obj 126 189 vdl 15 1 4.79232e+06 8 \$9 \$9 empty 20 8 192 8 -262144
-1 -1 0;
-#X obj 341 136 nbx 5 14 -1e+37 1e+37 0 0 \$5 \$5 empty 45 7 0 10 -262144
+#X obj 341 116 nbx 5 14 -1e+37 1e+37 0 0 \$5 \$5 empty 45 7 0 10 -262144
-1 -1 0 256;
-#X text 8 22 Pd comes with a standard \, built-in set of GUI elements
+#X text 17 66 Pd comes with a standard \, built-in set of GUI elements
\, which you can select from the "Put" menu.;
-#X text 16 323 There are also some OS-native GUI elements available
+#X text 17 356 There are also some OS-native GUI elements available
;
-#X obj 44 363 button OK;
-#X obj 142 367 popup 124 25 #ffffff popup option;
-#X obj 298 363 ticker ;
-#X obj 495 419 envgen 200 140 1 0 ;
-#X obj 366 499 knob 32 32 0 127 0 0 empty empty empty 0 -8 32 8 -262144
--1 -1 3100 1;
-#X text 360 473 [knob];
-#X text 281 340 [ticker];
-#X obj 500 71 grid grid1 200 0 199 200 0 199 1 1 1 10 10 570 188;
-#X text 474 51 [unauthorized/grid];
-#X text 475 395 [envgen];
-#X text 112 405 [cyclone/Scope~];
-#X text 23 339 [button];
-#X text 129 341 [popup];
-#X text 250 67 [vu];
-#X text 46 69 [bng];
-#X text 46 101 [tgl];
-#X text 21 280 [vslider];
-#X text 325 248 [hradio];
-#X text 325 278 [hslider];
-#X text 107 277 [vradio];
-#X obj 105 432 Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255 51 135
+#X obj 49 404 button OK;
+#X obj 147 408 popup 124 25 #ffffff popup option;
+#X obj 333 404 ticker ;
+#X obj 397 510 envgen 200 140 1 0 ;
+#X obj 286 544 knob 32 32 0 127 0 0 empty empty empty 0 -8 32 8 -262144
+-1 -1 0 1;
+#X text 280 518 [knob];
+#X text 316 381 [ticker];
+#X text 463 486 [envgen];
+#X text 449 124 [cyclone/Scope~];
+#X text 40 380 [button];
+#X text 134 382 [popup];
+#X text 250 107 [vu];
+#X text 46 109 [bng];
+#X text 46 141 [tgl];
+#X text 21 320 [vslider];
+#X text 325 288 [hradio];
+#X text 325 318 [hslider];
+#X text 107 317 [vradio];
+#X obj 441 146 Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255 51 135
135 135 0;
-#X text 337 118 [nbx];
-#X obj 555 305 gcanvas 80 80;
-#X text 483 294 [gcanvas];
+#X text 337 98 [nbx];
+#X obj 461 333 gcanvas 80 80;
+#X text 472 308 [gcanvas];
+#X obj 21 472 grid grid1 200 0 199 200 0 199 1 1 1 10 10 103 520;
+#X text 41 453 [unauthorized/grid];
+#X floatatom 462 420 5 0 0 0 - - -;
+#X floatatom 534 421 5 0 0 0 - - -;
+#X obj 10 10 cnv 15 400 40 empty empty gui_objects 20 12 0 24 -228992
+-66577 0;
+#X floatatom 214 680 5 0 0 0 - - -;
+#X floatatom 21 679 5 0 0 0 - - -;
+#X floatatom 286 582 5 0 0 0 - - -;
+#X text 422 101 And various others:;
+#X connect 19 0 44 0;
+#X connect 35 0 39 0;
+#X connect 35 1 40 0;
+#X connect 37 0 43 0;
+#X connect 37 1 42 0;
diff --git a/doc/tutorials/intro/29.nervous_guis.pd b/doc/tutorials/intro/29.nervous_guis.pd
index dff9fac2..84f8c66f 100644
--- a/doc/tutorials/intro/29.nervous_guis.pd
+++ b/doc/tutorials/intro/29.nervous_guis.pd
@@ -1,28 +1,19 @@
-#N canvas 10 40 632 457 12;
+#N canvas 10 40 632 472 12;
#X obj 10 10 cnv 15 400 40 empty empty nervous_guis 20 12 0 24 -228992
-66577 0;
-#X obj 486 20 tgl 20 1 empty start_nervously1 start_it 8 -8 0 10 -24198
+#X obj 23 146 tgl 20 1 empty start_nervously1 empty 8 -8 0 10 -24198
-1 -250685 0 1;
-#X obj 138 200 bng 15 1200 50 0 empty nerv_bng bang 8 -8 0 10 -262144
--55405 -1;
-#X obj 132 385 hsl 127 15 0 127 0 0 empty nerv_hsl h-slider 8 -8 0
+#X obj 255 165 bng 15 1200 50 0 empty nerv_bng bang 8 -8 0 10 -262144
+-1 -1;
+#X obj 250 343 hsl 127 15 0 127 0 0 empty nerv_hsl h-slider 8 -8 0
10 -262144 -1 -1 0 1;
-#X obj 364 184 tgl 15 1 empty nerv_tgl toggle 8 -8 0 10 -262144 -1
--1 1 1;
-#X obj 359 305 vsl 15 127 0 127 0 0 empty nerv_vsl v-slider 8 -8 0
+#X obj 443 164 tgl 15 1 empty nerv_tgl toggle 8 -8 0 10 -262144 -1
+-1 0 1;
+#X obj 482 282 vsl 15 127 0 127 0 0 empty nerv_vsl v-slider 8 -8 0
10 -262144 -1 -1 0 1;
-#N canvas 135 99 386 473 control 0;
+#N canvas 13 42 258 427 control 0;
#X obj 19 21 inlet;
-#X obj 19 50 t b f;
-#X obj 19 153 del 900;
-#X obj 19 212 del 900;
-#X obj 19 93 del 100;
-#X obj 19 283 del 900;
-#X obj 33 125 f;
-#X obj 33 180 f;
-#X obj 33 245 f;
-#X obj 33 309 f;
-#N canvas 280 166 794 432 bng 0;
+#N canvas 10 40 632 472 bng 0;
#X obj 114 260 - 0;
#X obj 148 258 f;
#X obj 147 222 t f b;
@@ -34,13 +25,13 @@
#X obj 150 192 % 50;
#X obj 79 145 % 50;
#X obj 64 289 pack 0 0;
-#X obj 85 53 t b b b;
+#X obj 84 60 t b b b;
#X obj 234 368 pack 0 0 0;
#X obj 250 29 metro 2000;
#X obj 445 122 random 555666;
#X obj 445 168 + 8;
#X obj 445 145 % 120;
-#X obj 84 32 metro 100;
+#X obj 84 35 metro 100;
#X obj 234 261 random 1.67772e+07;
#X obj 266 283 random 1.67772e+07;
#X obj 299 315 random 1.67772e+07;
@@ -87,8 +78,8 @@
#X connect 26 0 12 0;
#X connect 27 0 12 1;
#X connect 28 0 12 2;
-#X restore 114 143 pd bng;
-#N canvas 139 89 794 432 tgl 0;
+#X restore 52 130 pd bng;
+#N canvas 10 40 620 460 tgl 0;
#X obj 114 260 - 0;
#X obj 148 258 f;
#X obj 147 222 t f b;
@@ -153,8 +144,8 @@
#X connect 26 0 22 0;
#X connect 27 0 22 1;
#X connect 28 0 22 2;
-#X restore 114 198 pd tgl;
-#N canvas 322 99 794 432 hsl 0;
+#X restore 33 217 pd tgl;
+#N canvas 10 40 620 460 hsl 0;
#X obj 114 260 - 0;
#X obj 148 258 f;
#X obj 147 222 t f b;
@@ -233,8 +224,8 @@
#X connect 31 0 27 0;
#X connect 32 0 27 1;
#X connect 33 0 27 2;
-#X restore 112 263 pd hsl;
-#N canvas 148 132 794 432 vsl 0;
+#X restore 33 312 pd hsl;
+#N canvas 10 40 620 460 vsl 0;
#X obj 114 260 - 0;
#X obj 148 258 f;
#X obj 147 222 t f b;
@@ -313,25 +304,35 @@
#X connect 32 0 28 0;
#X connect 33 0 28 1;
#X connect 34 0 28 2;
-#X restore 113 327 pd vsl;
-#X connect 0 0 1 0;
-#X connect 1 0 4 0;
-#X connect 1 1 6 1;
-#X connect 1 1 7 1;
-#X connect 1 1 8 1;
-#X connect 1 1 9 1;
-#X connect 2 0 3 0;
-#X connect 2 0 7 0;
-#X connect 3 0 5 0;
-#X connect 3 0 8 0;
-#X connect 4 0 2 0;
-#X connect 4 0 6 0;
-#X connect 5 0 9 0;
+#X restore 32 395 pd vsl;
+#X obj 19 80 delay 100;
+#X obj 19 163 delay 900;
+#X obj 19 252 delay 900;
+#X obj 19 343 delay 900;
+#X obj 33 285 float;
+#X obj 33 190 float;
+#X obj 52 107 float;
+#X obj 32 369 float;
+#X obj 19 50 trigger bang float;
+#X connect 0 0 13 0;
+#X connect 5 0 6 0;
+#X connect 5 0 11 0;
+#X connect 6 0 7 0;
#X connect 6 0 10 0;
-#X connect 7 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 0 9 0;
#X connect 8 0 12 0;
-#X connect 9 0 13 0;
-#X restore 486 46 pd control;
-#X text 17 88 You can dynamically control just about everything about
-most GUI objects.;
+#X connect 9 0 3 0;
+#X connect 10 0 2 0;
+#X connect 11 0 1 0;
+#X connect 12 0 4 0;
+#X connect 13 0 5 0;
+#X connect 13 1 9 1;
+#X connect 13 1 10 1;
+#X connect 13 1 11 1;
+#X connect 13 1 12 1;
+#X restore 23 172 pd control;
+#X text 49 146 <-- start!;
+#X text 17 88 You can programmatically control just about every property
+and behavior of most GUI objects.;
#X connect 1 0 6 0;
diff --git a/doc/tutorials/intro/TODO b/doc/tutorials/intro/TODO
index 009a7d69..02c605df 100644
--- a/doc/tutorials/intro/TODO
+++ b/doc/tutorials/intro/TODO
@@ -1,8 +1,9 @@
-- make object which outputs previous and next files
+- finish up content in 16.atoms.pd
-- make patch close itself, otherwise:
- - upon [loadbang], wait, then close previous patch
+- finish up 17.atomic_messages.pd
+
+- make new exercise in 23.EXERCISE.hmmmm
- in pure_data_files.pd, make the patch create [pd clone] dynamically,
probably like how send_messages_to_pd.pd does it.