aboutsummaryrefslogtreecommitdiff
path: root/doc/tutorials
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2006-04-13 23:48:34 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2006-04-13 23:48:34 +0000
commit2389091c6bf73e52fd19551f366034a15fdf7d95 (patch)
treec522cfcaf1c2313835b2aff67027c2b47d0eb141 /doc/tutorials
parentbe7f7b94b6e3dd82ac0caa4f05e8be5b94b3b717 (diff)
integrated lots of ideas and content from ggkarman's Tutoriales pd
svn path=/trunk/; revision=4906
Diffstat (limited to 'doc/tutorials')
-rw-r--r--doc/tutorials/intro/24.turning_on_and_off.pd50
-rw-r--r--doc/tutorials/intro/25.properties.pd16
-rw-r--r--doc/tutorials/intro/26.sliders.pd42
-rw-r--r--doc/tutorials/intro/27.guis.pd (renamed from doc/tutorials/intro/24.guis.pd)0
-rw-r--r--doc/tutorials/intro/28.gui_objects.pd (renamed from doc/tutorials/intro/25.gui_objects.pd)0
-rw-r--r--doc/tutorials/intro/29.nervous_guis.pd (renamed from doc/tutorials/intro/26.nervous_guis.pd)18
-rw-r--r--doc/tutorials/intro/Attic/grabbing_keystrokes.pd61
-rw-r--r--doc/tutorials/intro/Attic/sorting_messages_by_type.pd80
-rw-r--r--doc/tutorials/intro/README.txt9
-rw-r--r--doc/tutorials/intro/TODO62
-rw-r--r--doc/tutorials/intro/building_lists.pd31
-rw-r--r--doc/tutorials/intro/comparing_numbers.pd56
-rw-r--r--doc/tutorials/intro/creation_arguments.pd (renamed from doc/tutorials/intro/arguments.pd)0
-rw-r--r--doc/tutorials/intro/grabbing_keystrokes.pd61
-rw-r--r--doc/tutorials/intro/selecting_events.pd27
-rw-r--r--doc/tutorials/intro/sorting_messages_by_selectors.pd7
-rw-r--r--doc/tutorials/intro/sorting_messages_by_type.pd80
-rw-r--r--doc/tutorials/intro/storing_a_number_globally.pd35
-rw-r--r--doc/tutorials/intro/using_lists.pd17
19 files changed, 516 insertions, 136 deletions
diff --git a/doc/tutorials/intro/24.turning_on_and_off.pd b/doc/tutorials/intro/24.turning_on_and_off.pd
new file mode 100644
index 00000000..24323e6e
--- /dev/null
+++ b/doc/tutorials/intro/24.turning_on_and_off.pd
@@ -0,0 +1,50 @@
+#N canvas 100 227 628 453 12;
+#X obj 10 10 cnv 15 400 40 empty empty turning_on_and_off 20 12 0 24
+-228992 -66577 0;
+#X obj 160 145 metro 1000;
+#X obj 160 122 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+;
+#X text 183 122 <-- click here;
+#X obj 160 171 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 186 171 bangs once a second (1000ms);
+#X text 15 371 The object is called [tgl] or you can get it from the
+"Put" menu.;
+#X text 14 63 Many objects can be switched on and off using a toggle.
+A toggle outputs 0 for off \, and an number for on.;
+#X text 11 217 By default \, a toggle outputs 1 for on \, but you can
+change that to any number by selecting the "Properties" dialog.;
+#X obj 33 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+;
+#X floatatom 33 324 5 0 0 0 - - -;
+#X obj 103 290 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 100
+;
+#X 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 connect 1 0 4 0;
+#X connect 2 0 1 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 23 0 24 0;
diff --git a/doc/tutorials/intro/25.properties.pd b/doc/tutorials/intro/25.properties.pd
new file mode 100644
index 00000000..a7bbdb81
--- /dev/null
+++ b/doc/tutorials/intro/25.properties.pd
@@ -0,0 +1,16 @@
+#N canvas 418 177 624 449 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
new file mode 100644
index 00000000..0fb0ff23
--- /dev/null
+++ b/doc/tutorials/intro/26.sliders.pd
@@ -0,0 +1,42 @@
+#N canvas 52 115 624 449 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 230 412 5 0 0 0 - - -;
+#X msg 333 349 1000;
+#X msg 248 349 100;
+#X msg 204 349 60;
+#X msg 290 349 127;
+#X 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 234 389 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X msg 162 349 0;
+#X msg 117 349 -23;
+#X text 16 276 They act very similarly to number boxes \, except they
+show their value graphically rather that with numbers. One difference
+is that sliders always limit the range of numbers that can pass thru:
+;
+#X obj 211 413 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-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/24.guis.pd b/doc/tutorials/intro/27.guis.pd
index ca08bb3a..ca08bb3a 100644
--- a/doc/tutorials/intro/24.guis.pd
+++ b/doc/tutorials/intro/27.guis.pd
diff --git a/doc/tutorials/intro/25.gui_objects.pd b/doc/tutorials/intro/28.gui_objects.pd
index 8a75061f..8a75061f 100644
--- a/doc/tutorials/intro/25.gui_objects.pd
+++ b/doc/tutorials/intro/28.gui_objects.pd
diff --git a/doc/tutorials/intro/26.nervous_guis.pd b/doc/tutorials/intro/29.nervous_guis.pd
index 724fed59..dff9fac2 100644
--- a/doc/tutorials/intro/26.nervous_guis.pd
+++ b/doc/tutorials/intro/29.nervous_guis.pd
@@ -1,16 +1,16 @@
-#N canvas 10 40 624 449 12;
+#N canvas 10 40 632 457 12;
#X obj 10 10 cnv 15 400 40 empty empty nervous_guis 20 12 0 24 -228992
-66577 0;
#X obj 486 20 tgl 20 1 empty start_nervously1 start_it 8 -8 0 10 -24198
-1 -250685 0 1;
-#X obj 127 179 bng 16 1200 50 0 empty nerv_bng bang 8 -8 0 10 -91120
--252939 -113209;
-#X obj 112 346 hsl 116 29 0 127 0 0 empty nerv_hsl h-slider 8 -8 0
-10 -140002 -259981 -172176 2336 1;
-#X obj 400 211 tgl 70 1 empty nerv_tgl toggle 8 -8 0 10 -77819 -177692
--11757 0 1;
-#X obj 370 329 vsl 8 81 0 127 0 0 empty nerv_vsl v-slider 8 -8 0 10
--55101 -168903 -47444 1998 1;
+#X obj 138 200 bng 15 1200 50 0 empty nerv_bng bang 8 -8 0 10 -262144
+-55405 -1;
+#X obj 132 385 hsl 127 15 0 127 0 0 empty nerv_hsl h-slider 8 -8 0
+10 -262144 -1 -1 0 1;
+#X obj 364 184 tgl 15 1 empty nerv_tgl toggle 8 -8 0 10 -262144 -1
+-1 1 1;
+#X obj 359 305 vsl 15 127 0 127 0 0 empty nerv_vsl v-slider 8 -8 0
+10 -262144 -1 -1 0 1;
#N canvas 135 99 386 473 control 0;
#X obj 19 21 inlet;
#X obj 19 50 t b f;
diff --git a/doc/tutorials/intro/Attic/grabbing_keystrokes.pd b/doc/tutorials/intro/Attic/grabbing_keystrokes.pd
new file mode 100644
index 00000000..bf369dc5
--- /dev/null
+++ b/doc/tutorials/intro/Attic/grabbing_keystrokes.pd
@@ -0,0 +1,61 @@
+#N canvas 493 88 628 453 12;
+#X obj 10 10 cnv 15 400 40 empty empty grabbing_keystrokes 20 12 0
+24 -228992 -66577 0;
+#X obj 115 152 key;
+#X floatatom 115 176 5 0 0 0 - - -;
+#X text 284 216 This times how long between each;
+#X text 284 232 press of the 'a' key.;
+#X floatatom 215 176 5 0 0 0 - - -;
+#X obj 215 152 keyup;
+#X floatatom 315 176 5 0 0 0 - - -;
+#X obj 315 152 keyname;
+#X symbolatom 379 176 10 0 0 0 - - -;
+#X text 20 231 't' key as toggle:;
+#X obj 68 303 select 116;
+#X obj 68 272 keyup;
+#N canvas 238 530 478 328 /SUBPATCH/ 0;
+#X obj 101 10 inlet;
+#X obj 100 100 tgl 32 0 empty \$0-tgl empty 0 -6 0 8 -166441 -166441
+-262144 0 1;
+#X obj 156 68 select 1;
+#X msg 172 186 color \$1 \$2 \$3;
+#X msg 268 146 1 1 0;
+#X msg 133 144 -65281 0 -1;
+#X obj 268 85 bang;
+#X obj 176 241 send \$0-tgl;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 1 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 3 0;
+#X connect 6 0 4 0;
+#X coords 0 -1 1 1 32 32 1 100 100;
+#X restore 68 327 pd;
+#X text 13 63 Pd provides a set of objects for getting events from
+the keyboard. [key] outputs on key down \, [keyup] outputs on key up
+\, and [keyname] outputs both key up and key down \, and gives a symbolic
+name for the current key.;
+#X text 21 391 These objects will only grab keys when this window has
+focus. If you click on the Pd window \, this window won't get key events
+anymore.;
+#X obj 376 259 key;
+#X floatatom 376 283 5 0 0 0 - - -;
+#X obj 475 261 keyup;
+#X obj 376 312 select 97;
+#X obj 475 312 select 97;
+#X obj 411 341 timer;
+#X floatatom 411 367 5 0 0 0 - - -;
+#X connect 1 0 2 0;
+#X connect 6 0 5 0;
+#X connect 8 0 7 0;
+#X connect 8 1 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 16 0 17 0;
+#X connect 17 0 19 0;
+#X connect 18 0 20 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 1;
+#X connect 21 0 22 0;
diff --git a/doc/tutorials/intro/Attic/sorting_messages_by_type.pd b/doc/tutorials/intro/Attic/sorting_messages_by_type.pd
index 12e84c05..65f633be 100644
--- a/doc/tutorials/intro/Attic/sorting_messages_by_type.pd
+++ b/doc/tutorials/intro/Attic/sorting_messages_by_type.pd
@@ -1,47 +1,49 @@
-#N canvas 565 106 627 443 12;
-#X obj -60 8 cnv 15 400 40 empty empty sorting_messages_by_type 20
+#N canvas 44 68 635 451 12;
+#X obj 10 10 cnv 15 400 40 empty empty sorting_messages_by_type 20
12 0 24 -228992 -66577 0;
-#X text -50 63 When processing messages \, some operations should only
-be applied to messages of a certain type. [route] allows you to sort
-messages by type:;
-#X floatatom 168 339 5 0 0 0 - - -;
-#X symbolatom 237 338 10 0 0 0 - - -;
-#X obj 100 359 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144
+#X floatatom 282 359 5 0 0 0 - - -;
+#X symbolatom 351 358 10 0 0 0 - - -;
+#X obj 214 379 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144
-1 -1;
-#X obj 100 315 route bang float symbol list;
-#X obj 168 359 bng 15 250 50 0 empty empty float -4 23 1 12 -262144
+#X obj 214 335 route bang float symbol list;
+#X obj 282 379 bng 15 250 50 0 empty empty float -4 23 1 12 -262144
-1 -1;
-#X obj 237 359 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144
+#X obj 351 379 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144
-1 -1;
-#X obj 306 359 bng 15 250 50 0 empty empty list -2 23 1 12 -262144
+#X obj 420 379 bng 15 250 50 0 empty empty list -2 23 1 12 -262144
-1 -1;
-#X obj 375 359 bng 15 250 50 0 empty empty selector_series -18 23 1
+#X obj 489 379 bng 15 250 50 0 empty empty selector_series -18 23 1
12 -262144 -1 -1;
-#X msg -43 173 bang;
-#X msg 34 196 642.3;
-#X msg 109 170 symbol moshimoshi;
-#X msg 129 194 symbol sayonara;
-#X obj -9 198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+#X msg 40 172 bang;
+#X msg 128 183 642.3;
+#X msg 214 159 symbol moshimoshi;
+#X msg 214 183 symbol sayonara;
+#X obj 40 197 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
-#X msg 331 171 1 2 3;
-#X msg 344 194 5 for free!;
-#X msg 345 228 list here we go...;
-#X msg 345 261 not a list? nope...;
-#X msg 11 172 float 5;
+#X msg 411 171 1 2 3;
+#X msg 411 194 5 for free!;
+#X msg 411 218 list here we go...;
+#X msg 423 251 not a list? nope...;
+#X msg 105 159 float 5;
+#X text 10 63 When processing messages \, some operations should only
+be applied to messages of a certain type. [route] allows you to sort
+messages by type:;
+#X msg 423 276 selector data data;
+#X connect 1 0 5 0;
#X connect 2 0 6 0;
-#X connect 3 0 7 0;
-#X connect 5 0 4 0;
-#X connect 5 1 2 0;
-#X connect 5 2 3 0;
-#X connect 5 3 8 0;
-#X connect 5 4 9 0;
-#X connect 10 0 5 0;
-#X connect 11 0 5 0;
-#X connect 12 0 5 0;
-#X connect 13 0 5 0;
-#X connect 14 0 5 0;
-#X connect 15 0 5 0;
-#X connect 16 0 5 0;
-#X connect 17 0 5 0;
-#X connect 18 0 5 0;
-#X connect 19 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 1 0;
+#X connect 4 2 2 0;
+#X connect 4 3 7 0;
+#X connect 4 4 8 0;
+#X connect 9 0 4 0;
+#X connect 10 0 4 0;
+#X connect 11 0 4 0;
+#X connect 12 0 4 0;
+#X connect 13 0 4 0;
+#X connect 14 0 4 0;
+#X connect 15 0 4 0;
+#X connect 16 0 4 0;
+#X connect 17 0 4 0;
+#X connect 18 0 4 0;
+#X connect 20 0 4 0;
diff --git a/doc/tutorials/intro/README.txt b/doc/tutorials/intro/README.txt
index 57090b33..69ab99e5 100644
--- a/doc/tutorials/intro/README.txt
+++ b/doc/tutorials/intro/README.txt
@@ -7,12 +7,13 @@ Contributors include (in alphabetical order):
Alexandre Castonguay
Aymeric Mansoux
-Ben Bogart
+Ben Bogart <ben@ekran.org>
Frank Barknecht
-Hans-Christoph Steiner
+Gregorio GarcĂ­a Karman <ggkarman@airtel.net>
+Hans-Christoph Steiner <hans@at.or.at>
Jerome Abel
Koray Tahiroglu
Malte Steiner
Max Neupert
-Miller Puckette
-Thomas Musil
+Miller Puckette <msp@crca.ucsd.edu>
+Thomas Musil <musil@iem.at>
diff --git a/doc/tutorials/intro/TODO b/doc/tutorials/intro/TODO
index 3f6d0141..009a7d69 100644
--- a/doc/tutorials/intro/TODO
+++ b/doc/tutorials/intro/TODO
@@ -12,59 +12,40 @@
- make looping sequence
-----------
-File Order
-----------
-
-- hello world
-- basic elements
-- getting help
-- edit mode
-- objects
-- connections
-- messages
-- EXERCISE: make your first Pd patch
-- bang
-- event driven processing
-- counters
-- hot and cold inlets
-- right-to-left order
-- ordering messages
-- depth first
-- storage objects
-- atoms
-- atomic messages
-- selectors
-- subpatches
-- inlets and outlets
-- outlet order
-- Example: its all just data
-- guis
-- gui objects
-- nervous guis
-
-
-- EXERCISE
+
---------------
Unsorted topics
---------------
+- math
+- init to 0
+- comparing numbers
+- expr
+- creation arguments
+
+
+- selecting events ([select])
+- sorting_messages_by_selectors ([route])
+- sorting_messages_by_atom ([route])
+
+- storing a number globally ([value])
+
+- building lists (pack and unpack, arguments)
+- list2symbol
+
- trigger conversions
- symbol conversion
-- arguments
-
- keywords
-- init to 0
-- math
-- expr
-
- number limitations
-- timing/metro
+- more on timing
+
+- building lists
+- using lists (unpack, lists replacing inlets)
- writing objects in Pd (abstractions)
@@ -72,7 +53,6 @@ Unsorted topics
- namespaces
- import
-- selectors
- multiple messages
- sends and receives
- sends in a message box
diff --git a/doc/tutorials/intro/building_lists.pd b/doc/tutorials/intro/building_lists.pd
new file mode 100644
index 00000000..c0682d3b
--- /dev/null
+++ b/doc/tutorials/intro/building_lists.pd
@@ -0,0 +1,31 @@
+#N canvas 148 243 628 453 12;
+#X obj 10 10 cnv 15 400 40 empty empty building_lists 20 12 0 24 -228992
+-66577 0;
+#X obj 117 350 pack float float float;
+#X msg 117 381 \$3 \$1 \$2;
+#X floatatom 117 324 5 0 0 0 - - -;
+#X floatatom 224 325 5 0 0 0 - - -;
+#X floatatom 332 326 5 0 0 0 - - -;
+#X text 24 295 You can use arguments to reorder elements:;
+#X obj 19 59 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X floatatom 234 108 5 0 0 0 - - -;
+#X floatatom 126 108 5 0 0 0 - - -;
+#X floatatom 19 108 5 0 0 0 - - -;
+#X obj 19 82 trigger bang bang bang;
+#X obj 19 132 pack float float float;
+#X obj 19 162 pddp/print_long;
+#X obj 117 411 pddp/print_long;
+#X connect 1 0 2 0;
+#X connect 2 0 14 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 1;
+#X connect 5 0 1 2;
+#X connect 7 0 11 0;
+#X connect 8 0 12 2;
+#X connect 9 0 12 1;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 11 1 9 0;
+#X connect 11 2 8 0;
+#X connect 12 0 13 0;
diff --git a/doc/tutorials/intro/comparing_numbers.pd b/doc/tutorials/intro/comparing_numbers.pd
new file mode 100644
index 00000000..c9b2555a
--- /dev/null
+++ b/doc/tutorials/intro/comparing_numbers.pd
@@ -0,0 +1,56 @@
+#N canvas 411 149 624 449 12;
+#X obj 10 10 cnv 15 400 40 empty empty comparing_numbers 20 12 0 24
+-228992 -66577 0;
+#X floatatom 24 160 5 0 0 0 - - -;
+#X msg 24 113 7;
+#X floatatom 97 160 5 0 0 0 - - -;
+#X msg 97 113 4;
+#X obj 97 137 == 4;
+#X floatatom 165 160 5 0 0 0 - - -;
+#X msg 165 113 20;
+#X floatatom 234 160 5 0 0 0 - - -;
+#X msg 234 113 20;
+#X obj 234 137 != 10;
+#X obj 24 137 > 1;
+#X obj 165 137 >= 8;
+#X floatatom 107 212 5 0 0 0 - - -;
+#X obj 15 245 == 5;
+#X obj 82 245 != 5;
+#X obj 147 245 > 5;
+#X obj 209 245 < 5;
+#X floatatom 15 272 5 0 0 0 - - -;
+#X floatatom 82 272 5 0 0 0 - - -;
+#X floatatom 147 272 5 0 0 0 - - -;
+#X floatatom 209 273 5 0 0 0 - - -;
+#X text 162 212 <--haga click y arrastre;
+#X msg 496 115 3;
+#X floatatom 441 116 5 0 0 0 - - -;
+#X floatatom 496 164 5 0 0 0 - - -;
+#X obj 496 140 > 1;
+#X obj 441 142 < 5;
+#X floatatom 441 165 5 0 0 0 - - -;
+#X obj 463 191 &&;
+#X floatatom 463 213 5 0 0 0 - - -;
+#X connect 2 0 11 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 7 0 12 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 1 0;
+#X connect 12 0 6 0;
+#X connect 13 0 14 0;
+#X connect 13 0 15 0;
+#X connect 13 0 16 0;
+#X connect 13 0 17 0;
+#X connect 14 0 18 0;
+#X connect 15 0 19 0;
+#X connect 16 0 20 0;
+#X connect 17 0 21 0;
+#X connect 23 0 26 0;
+#X connect 24 0 27 0;
+#X connect 25 0 29 1;
+#X connect 26 0 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
diff --git a/doc/tutorials/intro/arguments.pd b/doc/tutorials/intro/creation_arguments.pd
index eb26924d..eb26924d 100644
--- a/doc/tutorials/intro/arguments.pd
+++ b/doc/tutorials/intro/creation_arguments.pd
diff --git a/doc/tutorials/intro/grabbing_keystrokes.pd b/doc/tutorials/intro/grabbing_keystrokes.pd
new file mode 100644
index 00000000..bf369dc5
--- /dev/null
+++ b/doc/tutorials/intro/grabbing_keystrokes.pd
@@ -0,0 +1,61 @@
+#N canvas 493 88 628 453 12;
+#X obj 10 10 cnv 15 400 40 empty empty grabbing_keystrokes 20 12 0
+24 -228992 -66577 0;
+#X obj 115 152 key;
+#X floatatom 115 176 5 0 0 0 - - -;
+#X text 284 216 This times how long between each;
+#X text 284 232 press of the 'a' key.;
+#X floatatom 215 176 5 0 0 0 - - -;
+#X obj 215 152 keyup;
+#X floatatom 315 176 5 0 0 0 - - -;
+#X obj 315 152 keyname;
+#X symbolatom 379 176 10 0 0 0 - - -;
+#X text 20 231 't' key as toggle:;
+#X obj 68 303 select 116;
+#X obj 68 272 keyup;
+#N canvas 238 530 478 328 /SUBPATCH/ 0;
+#X obj 101 10 inlet;
+#X obj 100 100 tgl 32 0 empty \$0-tgl empty 0 -6 0 8 -166441 -166441
+-262144 0 1;
+#X obj 156 68 select 1;
+#X msg 172 186 color \$1 \$2 \$3;
+#X msg 268 146 1 1 0;
+#X msg 133 144 -65281 0 -1;
+#X obj 268 85 bang;
+#X obj 176 241 send \$0-tgl;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 1 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 3 0;
+#X connect 6 0 4 0;
+#X coords 0 -1 1 1 32 32 1 100 100;
+#X restore 68 327 pd;
+#X text 13 63 Pd provides a set of objects for getting events from
+the keyboard. [key] outputs on key down \, [keyup] outputs on key up
+\, and [keyname] outputs both key up and key down \, and gives a symbolic
+name for the current key.;
+#X text 21 391 These objects will only grab keys when this window has
+focus. If you click on the Pd window \, this window won't get key events
+anymore.;
+#X obj 376 259 key;
+#X floatatom 376 283 5 0 0 0 - - -;
+#X obj 475 261 keyup;
+#X obj 376 312 select 97;
+#X obj 475 312 select 97;
+#X obj 411 341 timer;
+#X floatatom 411 367 5 0 0 0 - - -;
+#X connect 1 0 2 0;
+#X connect 6 0 5 0;
+#X connect 8 0 7 0;
+#X connect 8 1 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 16 0 17 0;
+#X connect 17 0 19 0;
+#X connect 18 0 20 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 1;
+#X connect 21 0 22 0;
diff --git a/doc/tutorials/intro/selecting_events.pd b/doc/tutorials/intro/selecting_events.pd
new file mode 100644
index 00000000..9e3f1a3c
--- /dev/null
+++ b/doc/tutorials/intro/selecting_events.pd
@@ -0,0 +1,27 @@
+#N canvas 10 40 632 457 12;
+#X obj 10 10 cnv 15 400 40 empty empty selecting_events 20 12 0 24
+-228992 -66577 0;
+#X floatatom 75 138 5 0 0 0 - - -;
+#X text 130 136 <--haga click y arrastre;
+#X obj 75 187 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 105 187 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 75 161 select 2 3 4 5 6 10;
+#X obj 136 187 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 167 187 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 198 187 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 229 187 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 260 187 5 0 0 0 - - -;
+#X connect 1 0 5 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 6 0;
+#X connect 5 3 7 0;
+#X connect 5 4 8 0;
+#X connect 5 5 9 0;
+#X connect 5 6 10 0;
diff --git a/doc/tutorials/intro/sorting_messages_by_selectors.pd b/doc/tutorials/intro/sorting_messages_by_selectors.pd
index 266d0b04..21955ca5 100644
--- a/doc/tutorials/intro/sorting_messages_by_selectors.pd
+++ b/doc/tutorials/intro/sorting_messages_by_selectors.pd
@@ -1,4 +1,3 @@
-#N canvas 282 124 623 439 12;
-#X obj -60 8 cnv 15 400 40 empty empty sorting_messages_by_type 20
-12 0 24 -228992 -66577 0;
-#X text -50 63 comment;
+#N canvas 290 64 632 457 12;
+#X obj 10 10 cnv 15 420 40 empty empty sorting_messages_by_selector
+20 12 0 24 -228992 -66577 0;
diff --git a/doc/tutorials/intro/sorting_messages_by_type.pd b/doc/tutorials/intro/sorting_messages_by_type.pd
index 12e84c05..65f633be 100644
--- a/doc/tutorials/intro/sorting_messages_by_type.pd
+++ b/doc/tutorials/intro/sorting_messages_by_type.pd
@@ -1,47 +1,49 @@
-#N canvas 565 106 627 443 12;
-#X obj -60 8 cnv 15 400 40 empty empty sorting_messages_by_type 20
+#N canvas 44 68 635 451 12;
+#X obj 10 10 cnv 15 400 40 empty empty sorting_messages_by_type 20
12 0 24 -228992 -66577 0;
-#X text -50 63 When processing messages \, some operations should only
-be applied to messages of a certain type. [route] allows you to sort
-messages by type:;
-#X floatatom 168 339 5 0 0 0 - - -;
-#X symbolatom 237 338 10 0 0 0 - - -;
-#X obj 100 359 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144
+#X floatatom 282 359 5 0 0 0 - - -;
+#X symbolatom 351 358 10 0 0 0 - - -;
+#X obj 214 379 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144
-1 -1;
-#X obj 100 315 route bang float symbol list;
-#X obj 168 359 bng 15 250 50 0 empty empty float -4 23 1 12 -262144
+#X obj 214 335 route bang float symbol list;
+#X obj 282 379 bng 15 250 50 0 empty empty float -4 23 1 12 -262144
-1 -1;
-#X obj 237 359 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144
+#X obj 351 379 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144
-1 -1;
-#X obj 306 359 bng 15 250 50 0 empty empty list -2 23 1 12 -262144
+#X obj 420 379 bng 15 250 50 0 empty empty list -2 23 1 12 -262144
-1 -1;
-#X obj 375 359 bng 15 250 50 0 empty empty selector_series -18 23 1
+#X obj 489 379 bng 15 250 50 0 empty empty selector_series -18 23 1
12 -262144 -1 -1;
-#X msg -43 173 bang;
-#X msg 34 196 642.3;
-#X msg 109 170 symbol moshimoshi;
-#X msg 129 194 symbol sayonara;
-#X obj -9 198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+#X msg 40 172 bang;
+#X msg 128 183 642.3;
+#X msg 214 159 symbol moshimoshi;
+#X msg 214 183 symbol sayonara;
+#X obj 40 197 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
-#X msg 331 171 1 2 3;
-#X msg 344 194 5 for free!;
-#X msg 345 228 list here we go...;
-#X msg 345 261 not a list? nope...;
-#X msg 11 172 float 5;
+#X msg 411 171 1 2 3;
+#X msg 411 194 5 for free!;
+#X msg 411 218 list here we go...;
+#X msg 423 251 not a list? nope...;
+#X msg 105 159 float 5;
+#X text 10 63 When processing messages \, some operations should only
+be applied to messages of a certain type. [route] allows you to sort
+messages by type:;
+#X msg 423 276 selector data data;
+#X connect 1 0 5 0;
#X connect 2 0 6 0;
-#X connect 3 0 7 0;
-#X connect 5 0 4 0;
-#X connect 5 1 2 0;
-#X connect 5 2 3 0;
-#X connect 5 3 8 0;
-#X connect 5 4 9 0;
-#X connect 10 0 5 0;
-#X connect 11 0 5 0;
-#X connect 12 0 5 0;
-#X connect 13 0 5 0;
-#X connect 14 0 5 0;
-#X connect 15 0 5 0;
-#X connect 16 0 5 0;
-#X connect 17 0 5 0;
-#X connect 18 0 5 0;
-#X connect 19 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 1 0;
+#X connect 4 2 2 0;
+#X connect 4 3 7 0;
+#X connect 4 4 8 0;
+#X connect 9 0 4 0;
+#X connect 10 0 4 0;
+#X connect 11 0 4 0;
+#X connect 12 0 4 0;
+#X connect 13 0 4 0;
+#X connect 14 0 4 0;
+#X connect 15 0 4 0;
+#X connect 16 0 4 0;
+#X connect 17 0 4 0;
+#X connect 18 0 4 0;
+#X connect 20 0 4 0;
diff --git a/doc/tutorials/intro/storing_a_number_globally.pd b/doc/tutorials/intro/storing_a_number_globally.pd
new file mode 100644
index 00000000..42ceaaf6
--- /dev/null
+++ b/doc/tutorials/intro/storing_a_number_globally.pd
@@ -0,0 +1,35 @@
+#N canvas 326 214 628 453 12;
+#X obj 10 10 cnv 15 400 40 empty empty storing_a_number_globally 20
+12 0 24 -228992 -66577 0;
+#X obj 223 131 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X floatatom 223 180 5 0 0 0 - - -;
+#X obj 223 156 value variable1;
+#X obj 58 133 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X floatatom 58 182 5 0 0 0 - - -;
+#X obj 58 158 value variable1;
+#X floatatom 88 134 5 0 0 0 - - -;
+#X floatatom 252 131 5 0 0 0 - - -;
+#X obj 273 268 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X floatatom 273 317 5 0 0 0 - - -;
+#X obj 58 270 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
+-1;
+#X floatatom 58 319 5 0 0 0 - - -;
+#X floatatom 88 271 5 0 0 0 - - -;
+#X floatatom 302 268 5 0 0 0 - - -;
+#X obj 273 293 value something_else;
+#X obj 58 295 value something_else;
+#X connect 1 0 3 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 3 0;
+#X connect 9 0 15 0;
+#X connect 11 0 16 0;
+#X connect 13 0 16 0;
+#X connect 14 0 15 0;
+#X connect 15 0 10 0;
+#X connect 16 0 12 0;
diff --git a/doc/tutorials/intro/using_lists.pd b/doc/tutorials/intro/using_lists.pd
new file mode 100644
index 00000000..4f40ff58
--- /dev/null
+++ b/doc/tutorials/intro/using_lists.pd
@@ -0,0 +1,17 @@
+#N canvas 10 40 624 449 12;
+#X obj 10 10 cnv 15 400 40 empty empty using_lists 20 12 0 24 -228992
+-66577 0;
+#X msg 49 113 300 240 1;
+#X floatatom 49 187 5 0 0 0 - - -;
+#X floatatom 166 187 5 0 0 0 - - -;
+#X floatatom 284 187 5 0 0 0 - - -;
+#X obj 49 148 unpack float float float;
+#X msg 52 281 1 1;
+#X obj 52 308 +;
+#X floatatom 52 338 5 0 0 0 - - -;
+#X connect 1 0 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 5 2 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;