From 7d3731fb32ee97e4fb30a853e6aa9cbcf135e83c Mon Sep 17 00:00:00 2001
From: Hans-Christoph Steiner <eighthave@users.sourceforge.net>
Date: Tue, 18 Apr 2006 10:10:23 +0000
Subject: wrote script to reorder patches by first number in filename

svn path=/trunk/; revision=4933
---
 doc/tutorials/intro/00.hello_world.pd              |  19 -
 doc/tutorials/intro/01.basic_elements.pd           |  16 -
 doc/tutorials/intro/01.hello_world.pd              |  19 +
 doc/tutorials/intro/02.basic_elements.pd           |  16 +
 doc/tutorials/intro/02.getting_help.pd             |  17 -
 doc/tutorials/intro/03.edit_mode.pd                |  13 -
 doc/tutorials/intro/03.getting_help.pd             |  17 +
 doc/tutorials/intro/04.edit_mode.pd                |  13 +
 doc/tutorials/intro/04.objects.pd                  |  31 -
 doc/tutorials/intro/05.connections.pd              |  26 -
 doc/tutorials/intro/05.objects.pd                  |  31 +
 doc/tutorials/intro/06.connections.pd              |  26 +
 doc/tutorials/intro/06.messages.pd                 |  41 --
 .../intro/07.EXERCISE-make_your_first_patch.pd     |  11 -
 doc/tutorials/intro/07.messages.pd                 |  41 ++
 .../intro/08.EXERCISE-make_your_first_patch.pd     |  11 +
 doc/tutorials/intro/08.bang.pd                     |  34 -
 doc/tutorials/intro/09.bang.pd                     |  34 +
 doc/tutorials/intro/09.event_driven_processing.pd  |  72 --
 doc/tutorials/intro/10.counters.pd                 |  44 --
 doc/tutorials/intro/10.event_driven_processing.pd  |  72 ++
 doc/tutorials/intro/11.counters.pd                 |  44 ++
 doc/tutorials/intro/11.hot_and_cold_inlets.pd      |  44 --
 doc/tutorials/intro/12.hot_and_cold_inlets.pd      |  44 ++
 doc/tutorials/intro/12.right_to_left_order.pd      |  26 -
 doc/tutorials/intro/13.ordering_messages.pd        |  46 --
 doc/tutorials/intro/13.right_to_left_order.pd      |  26 +
 doc/tutorials/intro/14.depth_first.pd              |  33 -
 doc/tutorials/intro/14.ordering_messages.pd        |  46 ++
 doc/tutorials/intro/15.depth_first.pd              |  33 +
 doc/tutorials/intro/15.inlets_and_outlets.pd       |  42 --
 doc/tutorials/intro/15.storage_objects.pd          |  57 --
 doc/tutorials/intro/16.atoms.pd                    |  34 -
 doc/tutorials/intro/16.inlets_and_outlets.pd       |  42 ++
 doc/tutorials/intro/17.atomic_messages.pd          |  24 -
 doc/tutorials/intro/17.storage_objects.pd          |  57 ++
 doc/tutorials/intro/18.atoms.pd                    |  34 +
 doc/tutorials/intro/18.selectors.pd                |  31 -
 doc/tutorials/intro/19.atomic_messages.pd          |  24 +
 doc/tutorials/intro/19.subpatches.pd               |  27 -
 doc/tutorials/intro/20.inlets_and_outlets.pd       |  64 --
 doc/tutorials/intro/20.selectors.pd                |  31 +
 doc/tutorials/intro/21.outlet_order.pd             |  32 -
 doc/tutorials/intro/21.subpatches.pd               |  27 +
 doc/tutorials/intro/22.Example-all_just_data.pd    |  99 ---
 doc/tutorials/intro/22.inlets_and_outlets.pd       |  64 ++
 doc/tutorials/intro/23.EXERCISE-hmmm.pd            |  97 ---
 doc/tutorials/intro/23.outlet_order.pd             |  32 +
 doc/tutorials/intro/24.Example-all_just_data.pd    |  99 +++
 doc/tutorials/intro/24.turning_on_and_off.pd       |  50 --
 doc/tutorials/intro/25.EXERCISE-hmmm.pd            |  97 +++
 doc/tutorials/intro/25.properties.pd               |  16 -
 doc/tutorials/intro/26.sliders.pd                  |  42 --
 doc/tutorials/intro/26.turning_on_and_off.pd       |  50 ++
 doc/tutorials/intro/27.guis.pd                     | 813 ---------------------
 doc/tutorials/intro/27.properties.pd               |  16 +
 doc/tutorials/intro/28.gui_objects.pd              |  68 --
 doc/tutorials/intro/28.sliders.pd                  |  42 ++
 doc/tutorials/intro/29.guis.pd                     | 813 +++++++++++++++++++++
 doc/tutorials/intro/30.gui_objects.pd              |  68 ++
 60 files changed, 1969 insertions(+), 1969 deletions(-)
 delete mode 100644 doc/tutorials/intro/00.hello_world.pd
 delete mode 100644 doc/tutorials/intro/01.basic_elements.pd
 create mode 100644 doc/tutorials/intro/01.hello_world.pd
 create mode 100644 doc/tutorials/intro/02.basic_elements.pd
 delete mode 100644 doc/tutorials/intro/02.getting_help.pd
 delete mode 100644 doc/tutorials/intro/03.edit_mode.pd
 create mode 100644 doc/tutorials/intro/03.getting_help.pd
 create mode 100644 doc/tutorials/intro/04.edit_mode.pd
 delete mode 100644 doc/tutorials/intro/04.objects.pd
 delete mode 100644 doc/tutorials/intro/05.connections.pd
 create mode 100644 doc/tutorials/intro/05.objects.pd
 create mode 100644 doc/tutorials/intro/06.connections.pd
 delete mode 100644 doc/tutorials/intro/06.messages.pd
 delete mode 100644 doc/tutorials/intro/07.EXERCISE-make_your_first_patch.pd
 create mode 100644 doc/tutorials/intro/07.messages.pd
 create mode 100644 doc/tutorials/intro/08.EXERCISE-make_your_first_patch.pd
 delete mode 100644 doc/tutorials/intro/08.bang.pd
 create mode 100644 doc/tutorials/intro/09.bang.pd
 delete mode 100644 doc/tutorials/intro/09.event_driven_processing.pd
 delete mode 100644 doc/tutorials/intro/10.counters.pd
 create mode 100644 doc/tutorials/intro/10.event_driven_processing.pd
 create mode 100644 doc/tutorials/intro/11.counters.pd
 delete mode 100644 doc/tutorials/intro/11.hot_and_cold_inlets.pd
 create mode 100644 doc/tutorials/intro/12.hot_and_cold_inlets.pd
 delete mode 100644 doc/tutorials/intro/12.right_to_left_order.pd
 delete mode 100644 doc/tutorials/intro/13.ordering_messages.pd
 create mode 100644 doc/tutorials/intro/13.right_to_left_order.pd
 delete mode 100644 doc/tutorials/intro/14.depth_first.pd
 create mode 100644 doc/tutorials/intro/14.ordering_messages.pd
 create mode 100644 doc/tutorials/intro/15.depth_first.pd
 delete mode 100644 doc/tutorials/intro/15.inlets_and_outlets.pd
 delete mode 100644 doc/tutorials/intro/15.storage_objects.pd
 delete mode 100644 doc/tutorials/intro/16.atoms.pd
 create mode 100644 doc/tutorials/intro/16.inlets_and_outlets.pd
 delete mode 100644 doc/tutorials/intro/17.atomic_messages.pd
 create mode 100644 doc/tutorials/intro/17.storage_objects.pd
 create mode 100644 doc/tutorials/intro/18.atoms.pd
 delete mode 100644 doc/tutorials/intro/18.selectors.pd
 create mode 100644 doc/tutorials/intro/19.atomic_messages.pd
 delete mode 100644 doc/tutorials/intro/19.subpatches.pd
 delete mode 100644 doc/tutorials/intro/20.inlets_and_outlets.pd
 create mode 100644 doc/tutorials/intro/20.selectors.pd
 delete mode 100644 doc/tutorials/intro/21.outlet_order.pd
 create mode 100644 doc/tutorials/intro/21.subpatches.pd
 delete mode 100644 doc/tutorials/intro/22.Example-all_just_data.pd
 create mode 100644 doc/tutorials/intro/22.inlets_and_outlets.pd
 delete mode 100644 doc/tutorials/intro/23.EXERCISE-hmmm.pd
 create mode 100644 doc/tutorials/intro/23.outlet_order.pd
 create mode 100644 doc/tutorials/intro/24.Example-all_just_data.pd
 delete mode 100644 doc/tutorials/intro/24.turning_on_and_off.pd
 create mode 100644 doc/tutorials/intro/25.EXERCISE-hmmm.pd
 delete mode 100644 doc/tutorials/intro/25.properties.pd
 delete mode 100644 doc/tutorials/intro/26.sliders.pd
 create mode 100644 doc/tutorials/intro/26.turning_on_and_off.pd
 delete mode 100644 doc/tutorials/intro/27.guis.pd
 create mode 100644 doc/tutorials/intro/27.properties.pd
 delete mode 100644 doc/tutorials/intro/28.gui_objects.pd
 create mode 100644 doc/tutorials/intro/28.sliders.pd
 create mode 100644 doc/tutorials/intro/29.guis.pd
 create mode 100644 doc/tutorials/intro/30.gui_objects.pd

(limited to 'doc/tutorials/intro')

diff --git a/doc/tutorials/intro/00.hello_world.pd b/doc/tutorials/intro/00.hello_world.pd
deleted file mode 100644
index 0cefdcc8..00000000
--- a/doc/tutorials/intro/00.hello_world.pd
+++ /dev/null
@@ -1,19 +0,0 @@
-#N canvas 10 40 632 472 12;
-#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
-together. The boxes have "inlets" and "outlets" \, where they are connected.
-;
-#X text 153 265 inlet-->;
-#X text 154 158 inlet-->;
-#X text 144 178 outlet-->;
-#X obj 234 265 print;
-#X text 289 266 <-- object box;
-#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 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 0 0 6 0;
diff --git a/doc/tutorials/intro/01.basic_elements.pd b/doc/tutorials/intro/01.basic_elements.pd
deleted file mode 100644
index e58fc949..00000000
--- a/doc/tutorials/intro/01.basic_elements.pd
+++ /dev/null
@@ -1,16 +0,0 @@
-#N canvas 10 40 620 460 12;
-#X obj 36 141;
-#X obj 34 91 float;
-#X msg 34 187 message;
-#X floatatom 34 236 5 0 0 0 - - -;
-#X symbolatom 34 285 10 0 0 0 - - -;
-#X text 33 334 comment;
-#X text 54 28 comment;
-#X obj 12 13 cnv 15 400 40 empty empty Basic_Elements 20 12 0 24 -228992
--66577 0;
-#X text 153 333 comment (like the rest of this text);
-#X text 151 91 object box;
-#X text 151 141 empty object box;
-#X text 152 232 number box (click and drag/type);
-#X text 152 284 symbol box (click and type);
-#X text 152 187 message box (click);
diff --git a/doc/tutorials/intro/01.hello_world.pd b/doc/tutorials/intro/01.hello_world.pd
new file mode 100644
index 00000000..0cefdcc8
--- /dev/null
+++ b/doc/tutorials/intro/01.hello_world.pd
@@ -0,0 +1,19 @@
+#N canvas 10 40 632 472 12;
+#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
+together. The boxes have "inlets" and "outlets" \, where they are connected.
+;
+#X text 153 265 inlet-->;
+#X text 154 158 inlet-->;
+#X text 144 178 outlet-->;
+#X obj 234 265 print;
+#X text 289 266 <-- object box;
+#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 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 0 0 6 0;
diff --git a/doc/tutorials/intro/02.basic_elements.pd b/doc/tutorials/intro/02.basic_elements.pd
new file mode 100644
index 00000000..e58fc949
--- /dev/null
+++ b/doc/tutorials/intro/02.basic_elements.pd
@@ -0,0 +1,16 @@
+#N canvas 10 40 620 460 12;
+#X obj 36 141;
+#X obj 34 91 float;
+#X msg 34 187 message;
+#X floatatom 34 236 5 0 0 0 - - -;
+#X symbolatom 34 285 10 0 0 0 - - -;
+#X text 33 334 comment;
+#X text 54 28 comment;
+#X obj 12 13 cnv 15 400 40 empty empty Basic_Elements 20 12 0 24 -228992
+-66577 0;
+#X text 153 333 comment (like the rest of this text);
+#X text 151 91 object box;
+#X text 151 141 empty object box;
+#X text 152 232 number box (click and drag/type);
+#X text 152 284 symbol box (click and type);
+#X text 152 187 message box (click);
diff --git a/doc/tutorials/intro/02.getting_help.pd b/doc/tutorials/intro/02.getting_help.pd
deleted file mode 100644
index a851ce42..00000000
--- a/doc/tutorials/intro/02.getting_help.pd
+++ /dev/null
@@ -1,17 +0,0 @@
-#N canvas 10 40 620 460 12;
-#X msg 179 150;
-#X obj 61 150 trigger;
-#X text 54 28 comment;
-#X obj 12 13 cnv 15 400 40 empty empty Getting_Help 20 12 0 24 -228992
--66577 0;
-#X text 26 291 You can right-click on the canvas to get a list of the
-core Pd objects. A more complete list is in the Help Browser \, available
-under the Help menu.;
-#X text 58 187 object;
-#X text 179 186 message;
-#X floatatom 275 150 5 0 0 0 - - -;
-#X text 276 182 number box;
-#X symbolatom 403 151 10 0 0 0 - - -;
-#X text 406 182 symbol box;
-#X text 21 75 Right-click on anything and select "Help" \, and a help
-patch will pop up.;
diff --git a/doc/tutorials/intro/03.edit_mode.pd b/doc/tutorials/intro/03.edit_mode.pd
deleted file mode 100644
index b5682d12..00000000
--- a/doc/tutorials/intro/03.edit_mode.pd
+++ /dev/null
@@ -1,13 +0,0 @@
-#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.
-In order to edit an existing patch \, or create new boxes \, you need
-to switch to edit mode.;
-#X text 20 131 To switch to edit mode \, go to the "Edit" menu and
-select "Edit mode". Now try putting down some boxes on this canvas.
-You can select which one from the "Put" menu.;
-#X text 26 347 To stop editing \, go to the "Edit" menu again \, and
-select "Edit mode" again.;
-#X text 26 404 You can also use the key command Ctrl-E (Cmd-E on Mac
-OS X) to switch between edit and play mode.;
diff --git a/doc/tutorials/intro/03.getting_help.pd b/doc/tutorials/intro/03.getting_help.pd
new file mode 100644
index 00000000..a851ce42
--- /dev/null
+++ b/doc/tutorials/intro/03.getting_help.pd
@@ -0,0 +1,17 @@
+#N canvas 10 40 620 460 12;
+#X msg 179 150;
+#X obj 61 150 trigger;
+#X text 54 28 comment;
+#X obj 12 13 cnv 15 400 40 empty empty Getting_Help 20 12 0 24 -228992
+-66577 0;
+#X text 26 291 You can right-click on the canvas to get a list of the
+core Pd objects. A more complete list is in the Help Browser \, available
+under the Help menu.;
+#X text 58 187 object;
+#X text 179 186 message;
+#X floatatom 275 150 5 0 0 0 - - -;
+#X text 276 182 number box;
+#X symbolatom 403 151 10 0 0 0 - - -;
+#X text 406 182 symbol box;
+#X text 21 75 Right-click on anything and select "Help" \, and a help
+patch will pop up.;
diff --git a/doc/tutorials/intro/04.edit_mode.pd b/doc/tutorials/intro/04.edit_mode.pd
new file mode 100644
index 00000000..b5682d12
--- /dev/null
+++ b/doc/tutorials/intro/04.edit_mode.pd
@@ -0,0 +1,13 @@
+#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.
+In order to edit an existing patch \, or create new boxes \, you need
+to switch to edit mode.;
+#X text 20 131 To switch to edit mode \, go to the "Edit" menu and
+select "Edit mode". Now try putting down some boxes on this canvas.
+You can select which one from the "Put" menu.;
+#X text 26 347 To stop editing \, go to the "Edit" menu again \, and
+select "Edit mode" again.;
+#X text 26 404 You can also use the key command Ctrl-E (Cmd-E on Mac
+OS X) to switch between edit and play mode.;
diff --git a/doc/tutorials/intro/04.objects.pd b/doc/tutorials/intro/04.objects.pd
deleted file mode 100644
index c43a5e17..00000000
--- a/doc/tutorials/intro/04.objects.pd
+++ /dev/null
@@ -1,31 +0,0 @@
-#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
-specific thing.;
-#X text 11 124 These are all objects which store data:;
-#X obj 96 151 symbol;
-#X obj 174 151 list;
-#X text 13 188 With most objects \, you can read the name of the object
-in the object box:;
-#X obj 16 230 moses;
-#X obj 92 230 select;
-#X obj 176 230 route;
-#X obj 251 230 trigger;
-#X text 11 264 GUI objects convert themselves into a GUI element \,
-usually some kind of control. In the process \, they often hide the
-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 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
--1 -1 0 1;
-#X obj 393 351 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X text 382 326 [tgl];
-#X obj 8 10 cnv 15 400 40 empty empty objects 20 12 0 24 -228992 -66577
-0;
diff --git a/doc/tutorials/intro/05.connections.pd b/doc/tutorials/intro/05.connections.pd
deleted file mode 100644
index 44666eb0..00000000
--- a/doc/tutorials/intro/05.connections.pd
+++ /dev/null
@@ -1,26 +0,0 @@
-#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 - - -;
-#X floatatom 25 341 5 0 0 0 - - -;
-#X obj 24 179 tgl 30 0 empty empty start 2 15 1 12 -24198 -1 -1 1 1
-;
-#X obj 24 221 metro 100;
-#X obj 24 248 random 100;
-#X text 70 183 <-- click here to start;
-#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 28 299 ^--;
-#X obj 8 10 cnv 15 400 40 empty empty connections 20 12 0 24 -228992
--66577 0;
-#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
-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/05.objects.pd b/doc/tutorials/intro/05.objects.pd
new file mode 100644
index 00000000..c43a5e17
--- /dev/null
+++ b/doc/tutorials/intro/05.objects.pd
@@ -0,0 +1,31 @@
+#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
+specific thing.;
+#X text 11 124 These are all objects which store data:;
+#X obj 96 151 symbol;
+#X obj 174 151 list;
+#X text 13 188 With most objects \, you can read the name of the object
+in the object box:;
+#X obj 16 230 moses;
+#X obj 92 230 select;
+#X obj 176 230 route;
+#X obj 251 230 trigger;
+#X text 11 264 GUI objects convert themselves into a GUI element \,
+usually some kind of control. In the process \, they often hide the
+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 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
+-1 -1 0 1;
+#X obj 393 351 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 382 326 [tgl];
+#X obj 8 10 cnv 15 400 40 empty empty objects 20 12 0 24 -228992 -66577
+0;
diff --git a/doc/tutorials/intro/06.connections.pd b/doc/tutorials/intro/06.connections.pd
new file mode 100644
index 00000000..44666eb0
--- /dev/null
+++ b/doc/tutorials/intro/06.connections.pd
@@ -0,0 +1,26 @@
+#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 - - -;
+#X floatatom 25 341 5 0 0 0 - - -;
+#X obj 24 179 tgl 30 0 empty empty start 2 15 1 12 -24198 -1 -1 1 1
+;
+#X obj 24 221 metro 100;
+#X obj 24 248 random 100;
+#X text 70 183 <-- click here to start;
+#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 28 299 ^--;
+#X obj 8 10 cnv 15 400 40 empty empty connections 20 12 0 24 -228992
+-66577 0;
+#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
+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
deleted file mode 100644
index ea95c05c..00000000
--- a/doc/tutorials/intro/06.messages.pd
+++ /dev/null
@@ -1,41 +0,0 @@
-#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 10 40 620 460 myObject 0;
-#X obj 70 24 inlet;
-#X obj 68 243 outlet;
-#X obj 76 86 route say;
-#X obj 167 125 bang;
-#X obj 57 130 symbol;
-#X msg 167 152 symbol ?#$%!@$^!;
-#X connect 0 0 2 0;
-#X connect 2 0 4 0;
-#X connect 2 1 3 0;
-#X connect 3 0 5 0;
-#X connect 4 0 1 0;
-#X connect 5 0 1 0;
-#X restore 354 250 pd myObject;
-#X symbolatom 355 306 10 0 0 0 - - -;
-#X obj 132 249 + 1;
-#X msg 131 161 1;
-#X floatatom 131 306 5 0 0 0 - - -;
-#X text 183 161 <-- messages -->;
-#X text 187 250 <-- objects -->;
-#X msg 370 197 do as I say!;
-#X obj 51 414 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s3
-;
-#X text 20 64 Objects respond to messages received on their inlets
-\, and output messages on their outlets. These messages can be anything
-from data to commands.;
-#X text 124 128 data;
-#X text 359 127 commands;
-#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;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X connect 4 0 6 0;
-#X connect 5 0 4 0;
-#X connect 9 0 2 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
deleted file mode 100644
index eb4ed1cf..00000000
--- a/doc/tutorials/intro/07.EXERCISE-make_your_first_patch.pd
+++ /dev/null
@@ -1,11 +0,0 @@
-#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 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/07.messages.pd b/doc/tutorials/intro/07.messages.pd
new file mode 100644
index 00000000..ea95c05c
--- /dev/null
+++ b/doc/tutorials/intro/07.messages.pd
@@ -0,0 +1,41 @@
+#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 10 40 620 460 myObject 0;
+#X obj 70 24 inlet;
+#X obj 68 243 outlet;
+#X obj 76 86 route say;
+#X obj 167 125 bang;
+#X obj 57 130 symbol;
+#X msg 167 152 symbol ?#$%!@$^!;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 2 1 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X restore 354 250 pd myObject;
+#X symbolatom 355 306 10 0 0 0 - - -;
+#X obj 132 249 + 1;
+#X msg 131 161 1;
+#X floatatom 131 306 5 0 0 0 - - -;
+#X text 183 161 <-- messages -->;
+#X text 187 250 <-- objects -->;
+#X msg 370 197 do as I say!;
+#X obj 51 414 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s3
+;
+#X text 20 64 Objects respond to messages received on their inlets
+\, and output messages on their outlets. These messages can be anything
+from data to commands.;
+#X text 124 128 data;
+#X text 359 127 commands;
+#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;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 9 0 2 0;
+#X connect 15 0 4 0;
diff --git a/doc/tutorials/intro/08.EXERCISE-make_your_first_patch.pd b/doc/tutorials/intro/08.EXERCISE-make_your_first_patch.pd
new file mode 100644
index 00000000..eb4ed1cf
--- /dev/null
+++ b/doc/tutorials/intro/08.EXERCISE-make_your_first_patch.pd
@@ -0,0 +1,11 @@
+#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 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
deleted file mode 100644
index 37c38f24..00000000
--- a/doc/tutorials/intro/08.bang.pd
+++ /dev/null
@@ -1,34 +0,0 @@
-#N canvas 10 40 636 476 12;
-#X obj 18 191 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 18 269 bang;
-#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 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 msg 394 349 234;
-#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.bang.pd b/doc/tutorials/intro/09.bang.pd
new file mode 100644
index 00000000..37c38f24
--- /dev/null
+++ b/doc/tutorials/intro/09.bang.pd
@@ -0,0 +1,34 @@
+#N canvas 10 40 636 476 12;
+#X obj 18 191 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 18 269 bang;
+#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 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 msg 394 349 234;
+#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
deleted file mode 100644
index e705b58d..00000000
--- a/doc/tutorials/intro/09.event_driven_processing.pd
+++ /dev/null
@@ -1,72 +0,0 @@
-#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 1 1
-;
-#X obj 113 372 float;
-#X obj 170 372 + 1;
-#X floatatom 113 397 5 0 0 0 - - -;
-#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 obj 384 316 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 385 353 float;
-#X obj 442 353 + 1;
-#X floatatom 385 378 5 0 0 0 - - -;
-#X obj 385 399 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 54 145 cnv 15 80 30 empty empty empty 20 12 0 14 -225271 -66577
-0;
-#X obj 236 140 cnv 15 80 30 empty empty empty 20 12 0 14 -225271 -66577
-0;
-#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 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 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 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 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
deleted file mode 100644
index 9e8d4640..00000000
--- a/doc/tutorials/intro/10.counters.pd
+++ /dev/null
@@ -1,44 +0,0 @@
-#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 -261039 -66577
-0;
-#X obj 174 382 f;
-#X obj 209 382 + 1;
-#X obj 157 219 float;
-#X floatatom 120 246 5 0 0 0 - - -;
-#X msg 121 137 1;
-#X obj 120 219 +;
-#X msg 157 189 0;
-#X msg 133 160 -1;
-#X text 167 138 increment;
-#X text 172 161 decrement;
-#X text 195 187 reset;
-#X floatatom 346 244 5 0 0 0 - - -;
-#X msg 404 180 0;
-#X text 395 137 increment;
-#X obj 346 216 float;
-#X obj 404 216 + 1;
-#X msg 347 138 bang;
-#X text 278 377 DANGER! infinite loop!;
-#X text 20 78 Counters are used a lot when programming Pd. Here are
-two examples of simple counters that you will see frequently.;
-#X text 442 180 reset;
-#X text 20 276 Pd is designed to be as flexible and open as possible.
-This means that it will let you crash your computer. For example \,
-never start a counter like this \, it will crash your computer!;
-#X connect 2 0 3 0;
-#X connect 3 0 2 0;
-#X connect 4 0 7 1;
-#X connect 6 0 7 0;
-#X connect 7 0 4 0;
-#X connect 7 0 5 0;
-#X connect 8 0 4 0;
-#X connect 8 0 7 0;
-#X connect 9 0 7 0;
-#X connect 14 0 17 0;
-#X connect 14 0 16 0;
-#X connect 16 0 13 0;
-#X connect 16 0 17 0;
-#X connect 17 0 16 1;
-#X connect 18 0 16 0;
diff --git a/doc/tutorials/intro/10.event_driven_processing.pd b/doc/tutorials/intro/10.event_driven_processing.pd
new file mode 100644
index 00000000..e705b58d
--- /dev/null
+++ b/doc/tutorials/intro/10.event_driven_processing.pd
@@ -0,0 +1,72 @@
+#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 1 1
+;
+#X obj 113 372 float;
+#X obj 170 372 + 1;
+#X floatatom 113 397 5 0 0 0 - - -;
+#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 obj 384 316 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 385 353 float;
+#X obj 442 353 + 1;
+#X floatatom 385 378 5 0 0 0 - - -;
+#X obj 385 399 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 54 145 cnv 15 80 30 empty empty empty 20 12 0 14 -225271 -66577
+0;
+#X obj 236 140 cnv 15 80 30 empty empty empty 20 12 0 14 -225271 -66577
+0;
+#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 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 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 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 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/11.counters.pd b/doc/tutorials/intro/11.counters.pd
new file mode 100644
index 00000000..9e8d4640
--- /dev/null
+++ b/doc/tutorials/intro/11.counters.pd
@@ -0,0 +1,44 @@
+#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 -261039 -66577
+0;
+#X obj 174 382 f;
+#X obj 209 382 + 1;
+#X obj 157 219 float;
+#X floatatom 120 246 5 0 0 0 - - -;
+#X msg 121 137 1;
+#X obj 120 219 +;
+#X msg 157 189 0;
+#X msg 133 160 -1;
+#X text 167 138 increment;
+#X text 172 161 decrement;
+#X text 195 187 reset;
+#X floatatom 346 244 5 0 0 0 - - -;
+#X msg 404 180 0;
+#X text 395 137 increment;
+#X obj 346 216 float;
+#X obj 404 216 + 1;
+#X msg 347 138 bang;
+#X text 278 377 DANGER! infinite loop!;
+#X text 20 78 Counters are used a lot when programming Pd. Here are
+two examples of simple counters that you will see frequently.;
+#X text 442 180 reset;
+#X text 20 276 Pd is designed to be as flexible and open as possible.
+This means that it will let you crash your computer. For example \,
+never start a counter like this \, it will crash your computer!;
+#X connect 2 0 3 0;
+#X connect 3 0 2 0;
+#X connect 4 0 7 1;
+#X connect 6 0 7 0;
+#X connect 7 0 4 0;
+#X connect 7 0 5 0;
+#X connect 8 0 4 0;
+#X connect 8 0 7 0;
+#X connect 9 0 7 0;
+#X connect 14 0 17 0;
+#X connect 14 0 16 0;
+#X connect 16 0 13 0;
+#X connect 16 0 17 0;
+#X connect 17 0 16 1;
+#X connect 18 0 16 0;
diff --git a/doc/tutorials/intro/11.hot_and_cold_inlets.pd b/doc/tutorials/intro/11.hot_and_cold_inlets.pd
deleted file mode 100644
index ab820ade..00000000
--- a/doc/tutorials/intro/11.hot_and_cold_inlets.pd
+++ /dev/null
@@ -1,44 +0,0 @@
-#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 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;
-#X text 15 305 Try a number of different combinations to see for yourself:
-;
-#X text 215 405 <-- "cold" inlet;
-#X text 29 405 "hot" inlet -->;
-#X msg 124 337 2;
-#X msg 164 337 3;
-#X msg 234 337 4;
-#X msg 274 337 5;
-#X msg 314 337 6;
-#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 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 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.hot_and_cold_inlets.pd b/doc/tutorials/intro/12.hot_and_cold_inlets.pd
new file mode 100644
index 00000000..ab820ade
--- /dev/null
+++ b/doc/tutorials/intro/12.hot_and_cold_inlets.pd
@@ -0,0 +1,44 @@
+#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 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;
+#X text 15 305 Try a number of different combinations to see for yourself:
+;
+#X text 215 405 <-- "cold" inlet;
+#X text 29 405 "hot" inlet -->;
+#X msg 124 337 2;
+#X msg 164 337 3;
+#X msg 234 337 4;
+#X msg 274 337 5;
+#X msg 314 337 6;
+#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 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 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
deleted file mode 100644
index 32379786..00000000
--- a/doc/tutorials/intro/12.right_to_left_order.pd
+++ /dev/null
@@ -1,26 +0,0 @@
-#N canvas 10 40 628 468 12;
-#X obj 165 185 bng 25 250 50 0 empty empty empty -2 -8 1 10 -24198
--1 -1;
-#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 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 obj 32 412 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s3.3
-;
-#X text 97 369 then check the Pd window to see the order;
-#X text 11 119 The [trigger] object is used to enforce execution order.
-If you need things to run in a certain sequence \, then use a [trigger].
-;
-#X connect 0 0 1 0;
-#X connect 1 0 4 0;
-#X connect 1 1 3 0;
-#X connect 1 2 2 0;
-#X connect 2 0 5 0;
-#X connect 3 0 5 0;
-#X connect 4 0 5 0;
diff --git a/doc/tutorials/intro/13.ordering_messages.pd b/doc/tutorials/intro/13.ordering_messages.pd
deleted file mode 100644
index e52981a5..00000000
--- a/doc/tutorials/intro/13.ordering_messages.pd
+++ /dev/null
@@ -1,46 +0,0 @@
-#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 obj 157 292 symbol;
-#X msg 159 151 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 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 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/13.right_to_left_order.pd b/doc/tutorials/intro/13.right_to_left_order.pd
new file mode 100644
index 00000000..32379786
--- /dev/null
+++ b/doc/tutorials/intro/13.right_to_left_order.pd
@@ -0,0 +1,26 @@
+#N canvas 10 40 628 468 12;
+#X obj 165 185 bng 25 250 50 0 empty empty empty -2 -8 1 10 -24198
+-1 -1;
+#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 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 obj 32 412 pddp/pddplink http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s3.3
+;
+#X text 97 369 then check the Pd window to see the order;
+#X text 11 119 The [trigger] object is used to enforce execution order.
+If you need things to run in a certain sequence \, then use a [trigger].
+;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 3 0;
+#X connect 1 2 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
diff --git a/doc/tutorials/intro/14.depth_first.pd b/doc/tutorials/intro/14.depth_first.pd
deleted file mode 100644
index c42bbd68..00000000
--- a/doc/tutorials/intro/14.depth_first.pd
+++ /dev/null
@@ -1,33 +0,0 @@
-#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 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 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 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 2 0;
-#X connect 10 0 5 0;
diff --git a/doc/tutorials/intro/14.ordering_messages.pd b/doc/tutorials/intro/14.ordering_messages.pd
new file mode 100644
index 00000000..e52981a5
--- /dev/null
+++ b/doc/tutorials/intro/14.ordering_messages.pd
@@ -0,0 +1,46 @@
+#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 obj 157 292 symbol;
+#X msg 159 151 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 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 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/15.depth_first.pd b/doc/tutorials/intro/15.depth_first.pd
new file mode 100644
index 00000000..c42bbd68
--- /dev/null
+++ b/doc/tutorials/intro/15.depth_first.pd
@@ -0,0 +1,33 @@
+#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 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 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 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 2 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
deleted file mode 100644
index 9e6187d6..00000000
--- a/doc/tutorials/intro/15.inlets_and_outlets.pd
+++ /dev/null
@@ -1,42 +0,0 @@
-#N canvas 14 57 624 464 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 10 40 628 468 another 0;
-#X obj 17 94 inlet;
-#X obj 471 382 outlet;
-#X obj 16 386 print;
-#X msg 16 354 hi from inside [pd another object]!;
-#X obj 16 182 trigger bang anything;
-#X text 9 28 This object first passes the data thru \, then says hi
-in the Pd window.;
-#X connect 0 0 4 0;
-#X connect 3 0 2 0;
-#X connect 4 0 3 0;
-#X connect 4 1 1 0;
-#X restore 365 254 pd another object;
-#X obj 12 13 cnv 15 400 40 empty empty inlets_and_outlets 20 12 0 24
--228992 -66577 0;
-#X text 14 76 When making your own objects \, you can make your own
-inlets and outlets \, whether in a subpatch or an abstraction.;
-#X msg 333 162 bang;
-#X obj 327 297 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 30 154 cnv 15 220 180 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 43 177 inlet;
-#X obj 43 283 outlet;
-#X text 98 177 take in data;
-#X text 60 227 do some stuff here;
-#X text 113 282 output data;
-#X msg 391 161 what's in here?;
-#X obj 373 301 print;
-#X connect 0 0 1 0;
-#X connect 1 0 5 0;
-#X connect 1 0 13 0;
-#X connect 4 0 0 0;
-#X connect 7 0 8 0;
-#X connect 12 0 0 0;
diff --git a/doc/tutorials/intro/15.storage_objects.pd b/doc/tutorials/intro/15.storage_objects.pd
deleted file mode 100644
index 04f171c6..00000000
--- a/doc/tutorials/intro/15.storage_objects.pd
+++ /dev/null
@@ -1,57 +0,0 @@
-#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;
-#X obj 208 89 float;
-#X text 268 89 aka;
-#X text 36 384 If a storage object receives a value on the left inlet
-\, then it outputs that value immediately in addition to storing it.
-;
-#X text 35 254 If a storage object receives a value on the right inlet
-\, then it stores that value.;
-#X text 28 123 If you bang the left inlet of a storage object \, it
-outputs its stored value.;
-#X obj 170 334 float;
-#X msg 195 302 123;
-#X obj 124 478 float;
-#X msg 170 452 123;
-#X msg 124 453 432;
-#X msg 237 301 321;
-#X floatatom 170 358 5 0 0 0 - - -;
-#X floatatom 185 228 5 0 0 0 - - -;
-#X floatatom 124 507 5 0 0 0 - - -;
-#X obj 12 13 cnv 15 400 40 empty empty storage_objects 20 12 0 24 -228992
--66577 0;
-#X obj 185 199 float 5.5;
-#X text 98 58 A storage object stores data.;
-#X obj 362 89 list;
-#X obj 299 198 symbol yoyo;
-#X symbolatom 299 227 10 0 0 0 - - -;
-#X msg 185 171 bang;
-#X msg 299 170 bang;
-#X msg 132 303 bang;
-#X obj 320 329 symbol yoyo;
-#X symbolatom 320 358 10 0 0 0 - - -;
-#X msg 320 301 bang;
-#X msg 70 453 bang;
-#X msg 379 300 symbol one;
-#X msg 492 300 symbol two;
-#X obj 427 89 any;
-#X obj 477 89 pointer;
-#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
deleted file mode 100644
index d0d56010..00000000
--- a/doc/tutorials/intro/16.atoms.pd
+++ /dev/null
@@ -1,34 +0,0 @@
-#N canvas 10 40 624 464 12;
-#X obj 8 192 cnv 15 600 70 empty empty empty 20 12 0 14 -262134 -66577
-0;
-#X obj 10 12 cnv 15 400 40 empty empty atoms 20 12 0 24 -228992 -66577
-0;
-#X text 52 190 1;
-#X text 77 221 0;
-#X text 15 68 The basic data types of Pd are called "atoms". An atom
-is a piece of data that cannot be broken down into smaller parts. There
-are three atom types: "float" \, "symbol" \, and "pointer".;
-#X text 134 194 1.14234e+34;
-#X text 425 225 3.14159;
-#X text 329 192 -999999;
-#X text 331 225 45;
-#X text 191 224 -12;
-#X text 18 147 A numeric atom is any element that can be interpreted
-as a number:;
-#X text 488 192 1824.53;
-#X text 24 218 3;
-#X text 16 259 A symbolic atom is any element that is not a functional
-representation of a number \, usually in the form of words:;
-#X obj 8 306 cnv 15 600 70 empty empty empty 20 12 0 14 -262134 -66577
-0;
-#X text 28 306 word;
-#X text 89 338 number5;
-#X text 199 309 3..2;
-#X text 553 343 --44;
-#X text 235 341 label;
-#X text 481 304 reset;
-#X text 332 304 5++;
-#X text 399 336 trigger;
-#X text 15 381 A pointer is a very specific type of atom. It is only
-used as a reference to a position in a data structure. There is not
-visualization of a pointer.;
diff --git a/doc/tutorials/intro/16.inlets_and_outlets.pd b/doc/tutorials/intro/16.inlets_and_outlets.pd
new file mode 100644
index 00000000..9e6187d6
--- /dev/null
+++ b/doc/tutorials/intro/16.inlets_and_outlets.pd
@@ -0,0 +1,42 @@
+#N canvas 14 57 624 464 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 10 40 628 468 another 0;
+#X obj 17 94 inlet;
+#X obj 471 382 outlet;
+#X obj 16 386 print;
+#X msg 16 354 hi from inside [pd another object]!;
+#X obj 16 182 trigger bang anything;
+#X text 9 28 This object first passes the data thru \, then says hi
+in the Pd window.;
+#X connect 0 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 1 0;
+#X restore 365 254 pd another object;
+#X obj 12 13 cnv 15 400 40 empty empty inlets_and_outlets 20 12 0 24
+-228992 -66577 0;
+#X text 14 76 When making your own objects \, you can make your own
+inlets and outlets \, whether in a subpatch or an abstraction.;
+#X msg 333 162 bang;
+#X obj 327 297 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 30 154 cnv 15 220 180 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 43 177 inlet;
+#X obj 43 283 outlet;
+#X text 98 177 take in data;
+#X text 60 227 do some stuff here;
+#X text 113 282 output data;
+#X msg 391 161 what's in here?;
+#X obj 373 301 print;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 0 13 0;
+#X connect 4 0 0 0;
+#X connect 7 0 8 0;
+#X connect 12 0 0 0;
diff --git a/doc/tutorials/intro/17.atomic_messages.pd b/doc/tutorials/intro/17.atomic_messages.pd
deleted file mode 100644
index 49d64edc..00000000
--- a/doc/tutorials/intro/17.atomic_messages.pd
+++ /dev/null
@@ -1,24 +0,0 @@
-#N canvas 10 40 624 464 12;
-#X obj 10 12 cnv 15 400 40 empty empty atomic_messages 20 12 0 24 -228992
--66577 0;
-#X msg 69 191 symbol atom;
-#X msg 47 343 float 1.234;
-#X text 15 76 To send one piece of data to an object \, send an atomic
-message. There are atomic message to match each of the atom types.
-;
-#X symbolatom 61 233 10 0 0 0 - - -;
-#X msg 54 165 atom;
-#X text 172 232 <-- the symbol box expects a symbol message;
-#X text 106 165 <-- this gives an error (check the Pd window);
-#X text 196 190 <-- this works;
-#X text 14 134 When using symbolic atoms \, the symbol message is essential:
-;
-#X floatatom 74 410 5 0 0 0 - - -;
-#X msg 84 374 362;
-#X text 17 273 When using numeric atoms \, the float message is optional.
-This is because the float message is automatically implied when sending
-a numeric atom:;
-#X connect 1 0 4 0;
-#X connect 2 0 10 0;
-#X connect 5 0 4 0;
-#X connect 11 0 10 0;
diff --git a/doc/tutorials/intro/17.storage_objects.pd b/doc/tutorials/intro/17.storage_objects.pd
new file mode 100644
index 00000000..04f171c6
--- /dev/null
+++ b/doc/tutorials/intro/17.storage_objects.pd
@@ -0,0 +1,57 @@
+#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;
+#X obj 208 89 float;
+#X text 268 89 aka;
+#X text 36 384 If a storage object receives a value on the left inlet
+\, then it outputs that value immediately in addition to storing it.
+;
+#X text 35 254 If a storage object receives a value on the right inlet
+\, then it stores that value.;
+#X text 28 123 If you bang the left inlet of a storage object \, it
+outputs its stored value.;
+#X obj 170 334 float;
+#X msg 195 302 123;
+#X obj 124 478 float;
+#X msg 170 452 123;
+#X msg 124 453 432;
+#X msg 237 301 321;
+#X floatatom 170 358 5 0 0 0 - - -;
+#X floatatom 185 228 5 0 0 0 - - -;
+#X floatatom 124 507 5 0 0 0 - - -;
+#X obj 12 13 cnv 15 400 40 empty empty storage_objects 20 12 0 24 -228992
+-66577 0;
+#X obj 185 199 float 5.5;
+#X text 98 58 A storage object stores data.;
+#X obj 362 89 list;
+#X obj 299 198 symbol yoyo;
+#X symbolatom 299 227 10 0 0 0 - - -;
+#X msg 185 171 bang;
+#X msg 299 170 bang;
+#X msg 132 303 bang;
+#X obj 320 329 symbol yoyo;
+#X symbolatom 320 358 10 0 0 0 - - -;
+#X msg 320 301 bang;
+#X msg 70 453 bang;
+#X msg 379 300 symbol one;
+#X msg 492 300 symbol two;
+#X obj 427 89 any;
+#X obj 477 89 pointer;
+#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/18.atoms.pd b/doc/tutorials/intro/18.atoms.pd
new file mode 100644
index 00000000..d0d56010
--- /dev/null
+++ b/doc/tutorials/intro/18.atoms.pd
@@ -0,0 +1,34 @@
+#N canvas 10 40 624 464 12;
+#X obj 8 192 cnv 15 600 70 empty empty empty 20 12 0 14 -262134 -66577
+0;
+#X obj 10 12 cnv 15 400 40 empty empty atoms 20 12 0 24 -228992 -66577
+0;
+#X text 52 190 1;
+#X text 77 221 0;
+#X text 15 68 The basic data types of Pd are called "atoms". An atom
+is a piece of data that cannot be broken down into smaller parts. There
+are three atom types: "float" \, "symbol" \, and "pointer".;
+#X text 134 194 1.14234e+34;
+#X text 425 225 3.14159;
+#X text 329 192 -999999;
+#X text 331 225 45;
+#X text 191 224 -12;
+#X text 18 147 A numeric atom is any element that can be interpreted
+as a number:;
+#X text 488 192 1824.53;
+#X text 24 218 3;
+#X text 16 259 A symbolic atom is any element that is not a functional
+representation of a number \, usually in the form of words:;
+#X obj 8 306 cnv 15 600 70 empty empty empty 20 12 0 14 -262134 -66577
+0;
+#X text 28 306 word;
+#X text 89 338 number5;
+#X text 199 309 3..2;
+#X text 553 343 --44;
+#X text 235 341 label;
+#X text 481 304 reset;
+#X text 332 304 5++;
+#X text 399 336 trigger;
+#X text 15 381 A pointer is a very specific type of atom. It is only
+used as a reference to a position in a data structure. There is not
+visualization of a pointer.;
diff --git a/doc/tutorials/intro/18.selectors.pd b/doc/tutorials/intro/18.selectors.pd
deleted file mode 100644
index eafd6f32..00000000
--- a/doc/tutorials/intro/18.selectors.pd
+++ /dev/null
@@ -1,31 +0,0 @@
-#N canvas 10 40 628 468 12;
-#X obj 8 -33 cnv 15 400 40 empty empty selectors 20 12 0 24 -228992
--66577 0;
-#N canvas 10 40 620 460 object 0;
-#X obj 79 36 inlet;
-#X obj 86 270 outlet;
-#X obj 308 267 outlet;
-#X obj 71 131 route output-left output-right;
-#X connect 0 0 3 0;
-#X connect 3 0 1 0;
-#X connect 3 1 2 0;
-#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 22 319 Here's the technical definition:;
-#X text 220 129 <-- "output-left" is the selector;
-#X text 250 179 <-- "output-right" is the selector;
-#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 "float" selector
-is implied.;
-#X connect 1 0 2 0;
-#X connect 1 1 3 0;
-#X connect 4 0 1 0;
-#X connect 5 0 1 0;
diff --git a/doc/tutorials/intro/19.atomic_messages.pd b/doc/tutorials/intro/19.atomic_messages.pd
new file mode 100644
index 00000000..49d64edc
--- /dev/null
+++ b/doc/tutorials/intro/19.atomic_messages.pd
@@ -0,0 +1,24 @@
+#N canvas 10 40 624 464 12;
+#X obj 10 12 cnv 15 400 40 empty empty atomic_messages 20 12 0 24 -228992
+-66577 0;
+#X msg 69 191 symbol atom;
+#X msg 47 343 float 1.234;
+#X text 15 76 To send one piece of data to an object \, send an atomic
+message. There are atomic message to match each of the atom types.
+;
+#X symbolatom 61 233 10 0 0 0 - - -;
+#X msg 54 165 atom;
+#X text 172 232 <-- the symbol box expects a symbol message;
+#X text 106 165 <-- this gives an error (check the Pd window);
+#X text 196 190 <-- this works;
+#X text 14 134 When using symbolic atoms \, the symbol message is essential:
+;
+#X floatatom 74 410 5 0 0 0 - - -;
+#X msg 84 374 362;
+#X text 17 273 When using numeric atoms \, the float message is optional.
+This is because the float message is automatically implied when sending
+a numeric atom:;
+#X connect 1 0 4 0;
+#X connect 2 0 10 0;
+#X connect 5 0 4 0;
+#X connect 11 0 10 0;
diff --git a/doc/tutorials/intro/19.subpatches.pd b/doc/tutorials/intro/19.subpatches.pd
deleted file mode 100644
index f7fe424a..00000000
--- a/doc/tutorials/intro/19.subpatches.pd
+++ /dev/null
@@ -1,27 +0,0 @@
-#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 10 40 620 460 what's 0;
-#X obj 140 91 loadbang;
-#X obj 139 149 float;
-#X obj 198 149 + 1;
-#X floatatom 139 221 5 0 0 0 - - -;
-#X obj 30 149 delay 1000;
-#X text 39 39 just counting away in here...;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 1 0 3 0;
-#X connect 1 0 4 0;
-#X connect 2 0 1 1;
-#X connect 4 0 1 0;
-#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.
-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
deleted file mode 100644
index c503c356..00000000
--- a/doc/tutorials/intro/20.inlets_and_outlets.pd
+++ /dev/null
@@ -1,64 +0,0 @@
-#N canvas 10 40 624 464 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 10 40 624 464 look 0;
-#X obj 24 34 inlet;
-#X obj 238 47 inlet;
-#X obj 469 41 inlet;
-#X obj 251 304 outlet;
-#X msg 469 175 I am the third inlet;
-#X msg 242 145 I am the second inlet;
-#X msg 24 94 I am the first inlet;
-#X connect 0 0 6 0;
-#X connect 1 0 5 0;
-#X connect 2 0 4 0;
-#X connect 4 0 3 0;
-#X connect 5 0 3 0;
-#X connect 6 0 3 0;
-#X restore 32 162 pd look inside me;
-#X obj 31 202 pddp/print_long;
-#X obj 32 129 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 114 129 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#X obj 197 129 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
--1;
-#N canvas 10 40 640 480 look 0;
-#X obj 20 34 inlet;
-#X obj 334 33 inlet;
-#X obj 528 35 inlet;
-#X obj 20 120 trigger bang anything;
-#X obj 224 404 outlet;
-#X obj 224 266 mapping/tolist;
-#X connect 0 0 3 0;
-#X connect 1 0 5 0;
-#X connect 2 0 5 0;
-#X connect 3 0 5 1;
-#X connect 3 1 5 0;
-#X connect 5 0 4 0;
-#X restore 199 376 pd look inside me;
-#X obj 198 416 pddp/print_long;
-#X msg 200 327 smokin!;
-#X msg 281 327 are;
-#X msg 363 327 you;
-#X text 17 259 The first inlet should be the hot inlet \, even in your
-own patches. There are times when you need to make other inlets hot
-\, but in general \, its a good rule to stick with.;
-#X obj 332 126 cnv 15 220 120 empty empty empty 20 12 0 14 -233017
--66577 0;
-#X obj 347 132 inlet;
-#X obj 348 218 outlet;
-#X text 402 132 take in data;
-#X text 361 173 do some stuff here;
-#X text 418 217 output data;
-#X connect 2 0 3 0;
-#X connect 4 0 2 0;
-#X connect 5 0 2 1;
-#X connect 6 0 2 2;
-#X connect 7 0 8 0;
-#X connect 9 0 7 0;
-#X connect 10 0 7 1;
-#X connect 11 0 7 2;
-#X connect 14 0 15 0;
diff --git a/doc/tutorials/intro/20.selectors.pd b/doc/tutorials/intro/20.selectors.pd
new file mode 100644
index 00000000..eafd6f32
--- /dev/null
+++ b/doc/tutorials/intro/20.selectors.pd
@@ -0,0 +1,31 @@
+#N canvas 10 40 628 468 12;
+#X obj 8 -33 cnv 15 400 40 empty empty selectors 20 12 0 24 -228992
+-66577 0;
+#N canvas 10 40 620 460 object 0;
+#X obj 79 36 inlet;
+#X obj 86 270 outlet;
+#X obj 308 267 outlet;
+#X obj 71 131 route output-left output-right;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
+#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 22 319 Here's the technical definition:;
+#X text 220 129 <-- "output-left" is the selector;
+#X text 250 179 <-- "output-right" is the selector;
+#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 "float" selector
+is implied.;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
diff --git a/doc/tutorials/intro/21.outlet_order.pd b/doc/tutorials/intro/21.outlet_order.pd
deleted file mode 100644
index 4bfebf41..00000000
--- a/doc/tutorials/intro/21.outlet_order.pd
+++ /dev/null
@@ -1,32 +0,0 @@
-#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;
-#X msg 153 149 3 2 1;
-#X obj 101 234 print �ltimo;
-#X obj 388 234 print first;
-#X obj 240 234 print n�chste;
-#X text 19 374 There are occasional exceptions where it makes sense
-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 10 40 620 460 spread 0;
-#X obj 68 2 inlet;
-#X obj 38 235 outlet;
-#X obj 201 235 outlet;
-#X obj 345 235 outlet;
-#X obj 66 109 unpack float float float;
-#X connect 0 0 4 0;
-#X connect 4 0 1 0;
-#X connect 4 1 2 0;
-#X connect 4 2 3 0;
-#X restore 153 188 pd spread the love;
-#X text 18 310 While there is nothing forcing you to output data to
-the outlets in any order \, Pd has a very strong convention for how
-data should be output from an object.;
-#X text 175 259 now check the Pd window;
-#X connect 2 0 8 0;
-#X connect 8 0 3 0;
-#X connect 8 1 5 0;
-#X connect 8 2 4 0;
diff --git a/doc/tutorials/intro/21.subpatches.pd b/doc/tutorials/intro/21.subpatches.pd
new file mode 100644
index 00000000..f7fe424a
--- /dev/null
+++ b/doc/tutorials/intro/21.subpatches.pd
@@ -0,0 +1,27 @@
+#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 10 40 620 460 what's 0;
+#X obj 140 91 loadbang;
+#X obj 139 149 float;
+#X obj 198 149 + 1;
+#X floatatom 139 221 5 0 0 0 - - -;
+#X obj 30 149 delay 1000;
+#X text 39 39 just counting away in here...;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 4 0 1 0;
+#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.
+Try making one below:;
+#X text 179 214 ^-- right-click here and select "Open";
diff --git a/doc/tutorials/intro/22.Example-all_just_data.pd b/doc/tutorials/intro/22.Example-all_just_data.pd
deleted file mode 100644
index c5e0eec4..00000000
--- a/doc/tutorials/intro/22.Example-all_just_data.pd
+++ /dev/null
@@ -1,99 +0,0 @@
-#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 10 40 620 460 guts 0;
-#X obj 20 10 inlet;
-#X obj 275 14 inlet;
-#X obj 78 108 osc~;
-#X obj 78 137 *~;
-#X obj 115 79 / 200;
-#X obj 76 166 dac~;
-#X obj 444 54 receive pd;
-#X msg 340 154 create;
-#X msg 310 154 1;
-#X obj 482 215 gemwin;
-#X msg 564 154 0;
-#X msg 504 154 destroy;
-#X obj 517 132 t b b;
-#X obj 311 125 trigger bang bang bang;
-#X obj 444 94 select 1;
-#X obj 444 74 route dsp;
-#X obj 89 229 gemhead;
-#X obj 90 375 sphere 1 20;
-#X obj 91 344 translateXYZ;
-#X obj 93 287 colorRGB 1 1 1 1;
-#X obj 90 314 alpha;
-#X msg 289 192 lighting 1;
-#X obj 418 294 gemhead;
-#X obj 419 359 world_light -120;
-#X obj 228 292 / 25;
-#X obj 30 300 / 25;
-#X obj 228 269 - 100;
-#X obj 29 279 - 100;
-#X obj 181 251 / 200;
-#X obj 53 250 / 200;
-#X msg 394 154 dimen 200 200;
-#X obj 77 56 + 250;
-#X obj 115 118 line~;
-#X obj 161 59 bang;
-#X msg 160 98 0 250;
-#X msg 115 98 \$1 25;
-#X obj 161 79 delay 200;
-#X connect 0 0 4 0;
-#X connect 0 0 27 0;
-#X connect 0 0 29 0;
-#X connect 0 0 33 0;
-#X connect 1 0 26 0;
-#X connect 1 0 28 0;
-#X connect 1 0 31 0;
-#X connect 2 0 3 0;
-#X connect 3 0 5 0;
-#X connect 3 0 5 1;
-#X connect 4 0 35 0;
-#X connect 6 0 15 0;
-#X connect 7 0 9 0;
-#X connect 8 0 9 0;
-#X connect 10 0 9 0;
-#X connect 11 0 9 0;
-#X connect 12 0 11 0;
-#X connect 12 1 10 0;
-#X connect 13 0 8 0;
-#X connect 13 0 21 0;
-#X connect 13 1 7 0;
-#X connect 13 2 30 0;
-#X connect 14 0 13 0;
-#X connect 14 1 12 0;
-#X connect 15 0 14 0;
-#X connect 16 0 19 0;
-#X connect 18 0 17 0;
-#X connect 19 0 20 0;
-#X connect 20 0 18 0;
-#X connect 21 0 9 0;
-#X connect 22 0 23 0;
-#X connect 24 0 18 2;
-#X connect 25 0 18 1;
-#X connect 26 0 24 0;
-#X connect 27 0 25 0;
-#X connect 28 0 19 2;
-#X connect 29 0 19 1;
-#X connect 30 0 9 0;
-#X connect 31 0 2 0;
-#X connect 32 0 3 1;
-#X connect 33 0 36 0;
-#X connect 34 0 32 0;
-#X connect 35 0 32 0;
-#X connect 36 0 34 0;
-#X restore 256 320 pd guts;
-#X text 102 9 Its all just data. Use it however you want!;
-#X text 28 61 ^-- click here to turn it on and off;
-#X obj 154 344 nbx 5 24 -1e+37 1e+37 0 0 empty empty X -15 12 1 18
--166441 -1 -1 0 256;
-#X obj 348 343 nbx 5 24 -1e+37 1e+37 0 0 empty empty Y -15 12 1 18
--166441 -1 -1 0 256;
-#X text 14 121 click and drag in;
-#X text 14 137 this box ------->;
-#X connect 1 0 3 0;
-#X connect 1 0 6 0;
-#X connect 1 1 3 1;
-#X connect 1 1 7 0;
diff --git a/doc/tutorials/intro/22.inlets_and_outlets.pd b/doc/tutorials/intro/22.inlets_and_outlets.pd
new file mode 100644
index 00000000..c503c356
--- /dev/null
+++ b/doc/tutorials/intro/22.inlets_and_outlets.pd
@@ -0,0 +1,64 @@
+#N canvas 10 40 624 464 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 10 40 624 464 look 0;
+#X obj 24 34 inlet;
+#X obj 238 47 inlet;
+#X obj 469 41 inlet;
+#X obj 251 304 outlet;
+#X msg 469 175 I am the third inlet;
+#X msg 242 145 I am the second inlet;
+#X msg 24 94 I am the first inlet;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 4 0 3 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X restore 32 162 pd look inside me;
+#X obj 31 202 pddp/print_long;
+#X obj 32 129 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 114 129 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X obj 197 129 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#N canvas 10 40 640 480 look 0;
+#X obj 20 34 inlet;
+#X obj 334 33 inlet;
+#X obj 528 35 inlet;
+#X obj 20 120 trigger bang anything;
+#X obj 224 404 outlet;
+#X obj 224 266 mapping/tolist;
+#X connect 0 0 3 0;
+#X connect 1 0 5 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 1;
+#X connect 3 1 5 0;
+#X connect 5 0 4 0;
+#X restore 199 376 pd look inside me;
+#X obj 198 416 pddp/print_long;
+#X msg 200 327 smokin!;
+#X msg 281 327 are;
+#X msg 363 327 you;
+#X text 17 259 The first inlet should be the hot inlet \, even in your
+own patches. There are times when you need to make other inlets hot
+\, but in general \, its a good rule to stick with.;
+#X obj 332 126 cnv 15 220 120 empty empty empty 20 12 0 14 -233017
+-66577 0;
+#X obj 347 132 inlet;
+#X obj 348 218 outlet;
+#X text 402 132 take in data;
+#X text 361 173 do some stuff here;
+#X text 418 217 output data;
+#X connect 2 0 3 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 1;
+#X connect 6 0 2 2;
+#X connect 7 0 8 0;
+#X connect 9 0 7 0;
+#X connect 10 0 7 1;
+#X connect 11 0 7 2;
+#X connect 14 0 15 0;
diff --git a/doc/tutorials/intro/23.EXERCISE-hmmm.pd b/doc/tutorials/intro/23.EXERCISE-hmmm.pd
deleted file mode 100644
index 3e6b3850..00000000
--- a/doc/tutorials/intro/23.EXERCISE-hmmm.pd
+++ /dev/null
@@ -1,97 +0,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;
-#X msg 329 216 obj 50 103 osc~;
-#X msg 330 240 obj 50 153 dac~;
-#X obj 103 17 inlet;
-#X msg 320 155 clear;
-#X obj 276 7 loadbang;
-#X obj 259 108 delay 1000;
-#X obj 259 129 t b b b b;
-#X msg 52 155 connect 0 0 1 0;
-#X msg 37 216 connect 1 0 2 0;
-#X msg 31 266 connect 1 0 2 1;
-#X msg 292 27 \; pd dsp 1;
-#X obj 112 108 t b b;
-#X msg 87 52 bang;
-#X obj 34 134 delay 2000;
-#X obj 21 187 delay 2000;
-#X obj 10 245 delay 2000;
-#N canvas 10 40 620 460 connection-effect 0;
-#X obj 186 312 dac~;
-#X obj 72 233 osc~ 1000;
-#X obj 138 266 *~;
-#X obj 253 259 *~;
-#X obj 204 236 osc~ 800;
-#X obj 153 236 line~;
-#X obj 183 7 inlet;
-#X msg 184 31 bang;
-#X obj 187 61 t b b;
-#X obj 168 95 delay 10;
-#X msg 201 125 0 10;
-#X obj 276 218 line~;
-#X obj 276 191 pipe 30;
-#X msg 241 125 1 10;
-#X connect 1 0 2 0;
-#X connect 2 0 0 0;
-#X connect 3 0 0 1;
-#X connect 4 0 3 0;
-#X connect 5 0 2 1;
-#X connect 6 0 7 0;
-#X connect 7 0 8 0;
-#X connect 8 0 9 0;
-#X connect 8 1 13 0;
-#X connect 9 0 10 0;
-#X connect 10 0 5 0;
-#X connect 10 0 12 0;
-#X connect 11 0 3 1;
-#X connect 12 0 11 0;
-#X connect 13 0 5 0;
-#X connect 13 0 12 0;
-#X restore 22 365 pd connection-effect;
-#X msg 256 453 floatatom 50 50 5 0 0 0;
-#X msg 327 184 obj 50 50 hsl;
-#X obj 197 18 inlet;
-#X msg 205 50 bang;
-#X connect 2 0 1 0;
-#X connect 3 0 1 0;
-#X connect 4 0 14 0;
-#X connect 5 0 1 0;
-#X connect 6 0 0 0;
-#X connect 6 0 7 0;
-#X connect 6 0 12 0;
-#X connect 7 0 8 0;
-#X connect 8 0 3 0;
-#X connect 8 1 2 0;
-#X connect 8 2 20 0;
-#X connect 8 3 5 0;
-#X connect 9 0 1 0;
-#X connect 10 0 1 0;
-#X connect 11 0 1 0;
-#X connect 13 0 15 0;
-#X connect 13 1 8 0;
-#X connect 14 0 13 0;
-#X connect 15 0 16 0;
-#X connect 15 0 9 0;
-#X connect 15 0 18 0;
-#X connect 16 0 17 0;
-#X connect 16 0 10 0;
-#X connect 16 0 18 0;
-#X connect 17 0 11 0;
-#X connect 17 0 18 0;
-#X connect 20 0 1 0;
-#X connect 21 0 22 0;
-#X connect 22 0 8 0;
-#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 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;
-#X connect 4 0 0 1;
diff --git a/doc/tutorials/intro/23.outlet_order.pd b/doc/tutorials/intro/23.outlet_order.pd
new file mode 100644
index 00000000..4bfebf41
--- /dev/null
+++ b/doc/tutorials/intro/23.outlet_order.pd
@@ -0,0 +1,32 @@
+#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;
+#X msg 153 149 3 2 1;
+#X obj 101 234 print �ltimo;
+#X obj 388 234 print first;
+#X obj 240 234 print n�chste;
+#X text 19 374 There are occasional exceptions where it makes sense
+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 10 40 620 460 spread 0;
+#X obj 68 2 inlet;
+#X obj 38 235 outlet;
+#X obj 201 235 outlet;
+#X obj 345 235 outlet;
+#X obj 66 109 unpack float float float;
+#X connect 0 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 2 0;
+#X connect 4 2 3 0;
+#X restore 153 188 pd spread the love;
+#X text 18 310 While there is nothing forcing you to output data to
+the outlets in any order \, Pd has a very strong convention for how
+data should be output from an object.;
+#X text 175 259 now check the Pd window;
+#X connect 2 0 8 0;
+#X connect 8 0 3 0;
+#X connect 8 1 5 0;
+#X connect 8 2 4 0;
diff --git a/doc/tutorials/intro/24.Example-all_just_data.pd b/doc/tutorials/intro/24.Example-all_just_data.pd
new file mode 100644
index 00000000..c5e0eec4
--- /dev/null
+++ b/doc/tutorials/intro/24.Example-all_just_data.pd
@@ -0,0 +1,99 @@
+#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 10 40 620 460 guts 0;
+#X obj 20 10 inlet;
+#X obj 275 14 inlet;
+#X obj 78 108 osc~;
+#X obj 78 137 *~;
+#X obj 115 79 / 200;
+#X obj 76 166 dac~;
+#X obj 444 54 receive pd;
+#X msg 340 154 create;
+#X msg 310 154 1;
+#X obj 482 215 gemwin;
+#X msg 564 154 0;
+#X msg 504 154 destroy;
+#X obj 517 132 t b b;
+#X obj 311 125 trigger bang bang bang;
+#X obj 444 94 select 1;
+#X obj 444 74 route dsp;
+#X obj 89 229 gemhead;
+#X obj 90 375 sphere 1 20;
+#X obj 91 344 translateXYZ;
+#X obj 93 287 colorRGB 1 1 1 1;
+#X obj 90 314 alpha;
+#X msg 289 192 lighting 1;
+#X obj 418 294 gemhead;
+#X obj 419 359 world_light -120;
+#X obj 228 292 / 25;
+#X obj 30 300 / 25;
+#X obj 228 269 - 100;
+#X obj 29 279 - 100;
+#X obj 181 251 / 200;
+#X obj 53 250 / 200;
+#X msg 394 154 dimen 200 200;
+#X obj 77 56 + 250;
+#X obj 115 118 line~;
+#X obj 161 59 bang;
+#X msg 160 98 0 250;
+#X msg 115 98 \$1 25;
+#X obj 161 79 delay 200;
+#X connect 0 0 4 0;
+#X connect 0 0 27 0;
+#X connect 0 0 29 0;
+#X connect 0 0 33 0;
+#X connect 1 0 26 0;
+#X connect 1 0 28 0;
+#X connect 1 0 31 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 3 0 5 1;
+#X connect 4 0 35 0;
+#X connect 6 0 15 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
+#X connect 10 0 9 0;
+#X connect 11 0 9 0;
+#X connect 12 0 11 0;
+#X connect 12 1 10 0;
+#X connect 13 0 8 0;
+#X connect 13 0 21 0;
+#X connect 13 1 7 0;
+#X connect 13 2 30 0;
+#X connect 14 0 13 0;
+#X connect 14 1 12 0;
+#X connect 15 0 14 0;
+#X connect 16 0 19 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 18 0;
+#X connect 21 0 9 0;
+#X connect 22 0 23 0;
+#X connect 24 0 18 2;
+#X connect 25 0 18 1;
+#X connect 26 0 24 0;
+#X connect 27 0 25 0;
+#X connect 28 0 19 2;
+#X connect 29 0 19 1;
+#X connect 30 0 9 0;
+#X connect 31 0 2 0;
+#X connect 32 0 3 1;
+#X connect 33 0 36 0;
+#X connect 34 0 32 0;
+#X connect 35 0 32 0;
+#X connect 36 0 34 0;
+#X restore 256 320 pd guts;
+#X text 102 9 Its all just data. Use it however you want!;
+#X text 28 61 ^-- click here to turn it on and off;
+#X obj 154 344 nbx 5 24 -1e+37 1e+37 0 0 empty empty X -15 12 1 18
+-166441 -1 -1 0 256;
+#X obj 348 343 nbx 5 24 -1e+37 1e+37 0 0 empty empty Y -15 12 1 18
+-166441 -1 -1 0 256;
+#X text 14 121 click and drag in;
+#X text 14 137 this box ------->;
+#X connect 1 0 3 0;
+#X connect 1 0 6 0;
+#X connect 1 1 3 1;
+#X connect 1 1 7 0;
diff --git a/doc/tutorials/intro/24.turning_on_and_off.pd b/doc/tutorials/intro/24.turning_on_and_off.pd
deleted file mode 100644
index 087b2b70..00000000
--- a/doc/tutorials/intro/24.turning_on_and_off.pd
+++ /dev/null
@@ -1,50 +0,0 @@
-#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 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 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 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 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
-;
-#X floatatom 173 324 5 0 0 0 - - -;
-#X obj 243 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 -0.034
-;
-#X floatatom 243 324 5 0 0 0 - - -;
-#X obj 313 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 23
-;
-#X floatatom 313 324 5 0 0 0 - - -;
-#X obj 383 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 99999
-;
-#X floatatom 383 324 5 0 0 0 - - -;
-#X obj 453 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
-;
-#X floatatom 453 324 5 0 0 0 - - -;
-#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 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;
-#X connect 15 0 16 0;
-#X connect 17 0 18 0;
-#X connect 19 0 20 0;
-#X connect 21 0 22 0;
-#X connect 24 0 3 0;
diff --git a/doc/tutorials/intro/25.EXERCISE-hmmm.pd b/doc/tutorials/intro/25.EXERCISE-hmmm.pd
new file mode 100644
index 00000000..3e6b3850
--- /dev/null
+++ b/doc/tutorials/intro/25.EXERCISE-hmmm.pd
@@ -0,0 +1,97 @@
+#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;
+#X msg 329 216 obj 50 103 osc~;
+#X msg 330 240 obj 50 153 dac~;
+#X obj 103 17 inlet;
+#X msg 320 155 clear;
+#X obj 276 7 loadbang;
+#X obj 259 108 delay 1000;
+#X obj 259 129 t b b b b;
+#X msg 52 155 connect 0 0 1 0;
+#X msg 37 216 connect 1 0 2 0;
+#X msg 31 266 connect 1 0 2 1;
+#X msg 292 27 \; pd dsp 1;
+#X obj 112 108 t b b;
+#X msg 87 52 bang;
+#X obj 34 134 delay 2000;
+#X obj 21 187 delay 2000;
+#X obj 10 245 delay 2000;
+#N canvas 10 40 620 460 connection-effect 0;
+#X obj 186 312 dac~;
+#X obj 72 233 osc~ 1000;
+#X obj 138 266 *~;
+#X obj 253 259 *~;
+#X obj 204 236 osc~ 800;
+#X obj 153 236 line~;
+#X obj 183 7 inlet;
+#X msg 184 31 bang;
+#X obj 187 61 t b b;
+#X obj 168 95 delay 10;
+#X msg 201 125 0 10;
+#X obj 276 218 line~;
+#X obj 276 191 pipe 30;
+#X msg 241 125 1 10;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 3 0;
+#X connect 5 0 2 1;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 13 0;
+#X connect 9 0 10 0;
+#X connect 10 0 5 0;
+#X connect 10 0 12 0;
+#X connect 11 0 3 1;
+#X connect 12 0 11 0;
+#X connect 13 0 5 0;
+#X connect 13 0 12 0;
+#X restore 22 365 pd connection-effect;
+#X msg 256 453 floatatom 50 50 5 0 0 0;
+#X msg 327 184 obj 50 50 hsl;
+#X obj 197 18 inlet;
+#X msg 205 50 bang;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 14 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 6 0 7 0;
+#X connect 6 0 12 0;
+#X connect 7 0 8 0;
+#X connect 8 0 3 0;
+#X connect 8 1 2 0;
+#X connect 8 2 20 0;
+#X connect 8 3 5 0;
+#X connect 9 0 1 0;
+#X connect 10 0 1 0;
+#X connect 11 0 1 0;
+#X connect 13 0 15 0;
+#X connect 13 1 8 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 15 0 9 0;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 16 0 10 0;
+#X connect 16 0 18 0;
+#X connect 17 0 11 0;
+#X connect 17 0 18 0;
+#X connect 20 0 1 0;
+#X connect 21 0 22 0;
+#X connect 22 0 8 0;
+#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 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;
+#X connect 4 0 0 1;
diff --git a/doc/tutorials/intro/25.properties.pd b/doc/tutorials/intro/25.properties.pd
deleted file mode 100644
index aaa3db98..00000000
--- a/doc/tutorials/intro/25.properties.pd
+++ /dev/null
@@ -1,16 +0,0 @@
-#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
-12345;
-#X text 13 65 Many objects have properties that affect how the behave
-and look. You can see and edit these properties by opening the Properties
-panel. Below is a giant toggle. If you right-click on it \, and select
-"Properties" \, you can see the properties.;
-#X floatatom 260 353 5 0 0 0 - - -;
-#X text 18 387 You'll see in the properties panel that "size" is set
-to 200 pixels and "value" is set to 12345 \, so the toggle outputs
-12345 when its turned on.;
-#X text 15 221 right-click on this -->;
-#X text 15 240 and select "Properties";
-#X connect 1 0 3 0;
diff --git a/doc/tutorials/intro/26.sliders.pd b/doc/tutorials/intro/26.sliders.pd
deleted file mode 100644
index 7c9df971..00000000
--- a/doc/tutorials/intro/26.sliders.pd
+++ /dev/null
@@ -1,42 +0,0 @@
-#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
--1 -1 0 1;
-#X floatatom 120 247 5 0 0 0 - - -;
-#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 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 \,;
-#X text 144 152 they range;
-#X text 142 174 from 0 to 127;
-#X text 363 138 0 to 1 is a;
-#X text 361 160 commonly used;
-#X text 361 181 range;
-#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 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 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;
-#X connect 6 0 17 0;
-#X connect 7 0 17 0;
-#X connect 8 0 17 0;
-#X connect 9 0 17 0;
-#X connect 17 0 5 0;
-#X connect 17 0 21 0;
-#X connect 18 0 17 0;
-#X connect 19 0 17 0;
diff --git a/doc/tutorials/intro/26.turning_on_and_off.pd b/doc/tutorials/intro/26.turning_on_and_off.pd
new file mode 100644
index 00000000..087b2b70
--- /dev/null
+++ b/doc/tutorials/intro/26.turning_on_and_off.pd
@@ -0,0 +1,50 @@
+#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 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 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 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 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
+;
+#X floatatom 173 324 5 0 0 0 - - -;
+#X obj 243 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 -0.034
+;
+#X floatatom 243 324 5 0 0 0 - - -;
+#X obj 313 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 23
+;
+#X floatatom 313 324 5 0 0 0 - - -;
+#X obj 383 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 99999
+;
+#X floatatom 383 324 5 0 0 0 - - -;
+#X obj 453 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+;
+#X floatatom 453 324 5 0 0 0 - - -;
+#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 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;
+#X connect 15 0 16 0;
+#X connect 17 0 18 0;
+#X connect 19 0 20 0;
+#X connect 21 0 22 0;
+#X connect 24 0 3 0;
diff --git a/doc/tutorials/intro/27.guis.pd b/doc/tutorials/intro/27.guis.pd
deleted file mode 100644
index fc2f5aa9..00000000
--- a/doc/tutorials/intro/27.guis.pd
+++ /dev/null
@@ -1,813 +0,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/27.properties.pd b/doc/tutorials/intro/27.properties.pd
new file mode 100644
index 00000000..aaa3db98
--- /dev/null
+++ b/doc/tutorials/intro/27.properties.pd
@@ -0,0 +1,16 @@
+#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
+12345;
+#X text 13 65 Many objects have properties that affect how the behave
+and look. You can see and edit these properties by opening the Properties
+panel. Below is a giant toggle. If you right-click on it \, and select
+"Properties" \, you can see the properties.;
+#X floatatom 260 353 5 0 0 0 - - -;
+#X text 18 387 You'll see in the properties panel that "size" is set
+to 200 pixels and "value" is set to 12345 \, so the toggle outputs
+12345 when its turned on.;
+#X text 15 221 right-click on this -->;
+#X text 15 240 and select "Properties";
+#X connect 1 0 3 0;
diff --git a/doc/tutorials/intro/28.gui_objects.pd b/doc/tutorials/intro/28.gui_objects.pd
deleted file mode 100644
index fd39c212..00000000
--- a/doc/tutorials/intro/28.gui_objects.pd
+++ /dev/null
@@ -1,68 +0,0 @@
-#N canvas 10 40 644 484 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 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 318 hsl 128 15 0 127 0 0 empty empty empty 20 8 0 8 -262144
--1 -1 0 1;
-#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 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 189 vdl 15 1 4.79232e+06 8 \$9 \$9 empty 20 8 192 8 -262144
--1 -1 0;
-#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 17 66 Pd comes with a standard \, built-in set of GUI elements
-\, which you can select from the "Put" menu.;
-#X text 17 356 There are also some OS-native GUI elements available
-;
-#X obj 49 404 button OK;
-#X obj 147 408 popup 124 25 #ffffff popup option;
-#X obj 333 404 ticker ;
-#X obj 324 529 envgen 200 140 1 0  ;
-#X obj 491 454 knob 32 32 0 127 0 0 empty empty empty 0 -8 32 8 -262144
--1 -1 0 1;
-#X text 485 428 [knob];
-#X text 316 381 [ticker];
-#X text 390 505 [envgen];
-#X text 449 90 [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 112 Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255 51 135
-135 135 0;
-#X text 337 98 [nbx];
-#X obj 461 299 gcanvas 80 80;
-#X text 472 274 [gcanvas];
-#X obj 51 472 grid grid1 200 0 199 200 0 199 1 1 1 10 10 133 520;
-#X text 71 453 [unauthorized/grid];
-#X floatatom 462 386 5 0 0 0 - - -;
-#X floatatom 534 387 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 244 680 5 0 0 0 - - -;
-#X floatatom 51 679 5 0 0 0 - - -;
-#X floatatom 491 492 5 0 0 0 - - -;
-#X text 422 67 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/28.sliders.pd b/doc/tutorials/intro/28.sliders.pd
new file mode 100644
index 00000000..7c9df971
--- /dev/null
+++ b/doc/tutorials/intro/28.sliders.pd
@@ -0,0 +1,42 @@
+#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
+-1 -1 0 1;
+#X floatatom 120 247 5 0 0 0 - - -;
+#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 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 \,;
+#X text 144 152 they range;
+#X text 142 174 from 0 to 127;
+#X text 363 138 0 to 1 is a;
+#X text 361 160 commonly used;
+#X text 361 181 range;
+#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 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 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;
+#X connect 6 0 17 0;
+#X connect 7 0 17 0;
+#X connect 8 0 17 0;
+#X connect 9 0 17 0;
+#X connect 17 0 5 0;
+#X connect 17 0 21 0;
+#X connect 18 0 17 0;
+#X connect 19 0 17 0;
diff --git a/doc/tutorials/intro/29.guis.pd b/doc/tutorials/intro/29.guis.pd
new file mode 100644
index 00000000..fc2f5aa9
--- /dev/null
+++ b/doc/tutorials/intro/29.guis.pd
@@ -0,0 +1,813 @@
+#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/30.gui_objects.pd b/doc/tutorials/intro/30.gui_objects.pd
new file mode 100644
index 00000000..fd39c212
--- /dev/null
+++ b/doc/tutorials/intro/30.gui_objects.pd
@@ -0,0 +1,68 @@
+#N canvas 10 40 644 484 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 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 318 hsl 128 15 0 127 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 1;
+#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 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 189 vdl 15 1 4.79232e+06 8 \$9 \$9 empty 20 8 192 8 -262144
+-1 -1 0;
+#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 17 66 Pd comes with a standard \, built-in set of GUI elements
+\, which you can select from the "Put" menu.;
+#X text 17 356 There are also some OS-native GUI elements available
+;
+#X obj 49 404 button OK;
+#X obj 147 408 popup 124 25 #ffffff popup option;
+#X obj 333 404 ticker ;
+#X obj 324 529 envgen 200 140 1 0  ;
+#X obj 491 454 knob 32 32 0 127 0 0 empty empty empty 0 -8 32 8 -262144
+-1 -1 0 1;
+#X text 485 428 [knob];
+#X text 316 381 [ticker];
+#X text 390 505 [envgen];
+#X text 449 90 [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 112 Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255 51 135
+135 135 0;
+#X text 337 98 [nbx];
+#X obj 461 299 gcanvas 80 80;
+#X text 472 274 [gcanvas];
+#X obj 51 472 grid grid1 200 0 199 200 0 199 1 1 1 10 10 133 520;
+#X text 71 453 [unauthorized/grid];
+#X floatatom 462 386 5 0 0 0 - - -;
+#X floatatom 534 387 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 244 680 5 0 0 0 - - -;
+#X floatatom 51 679 5 0 0 0 - - -;
+#X floatatom 491 492 5 0 0 0 - - -;
+#X text 422 67 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;
-- 
cgit v1.2.1