Update of /cvsroot/pure-data/externals/gridflow/doc/tutorials
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26107
Added Files:
0-0-intro_page.pd 2-3-4-image-modification-2-remap-image.pd
2-3-5-image-modification-2-convolve.pd
2-3-6-image-modification-2-cross-fade.pd 2nd-part-numop.pd
3-1-0-open-video.pd 3-2-video-manipulation.pd
3-3-record-video.pd 4-0-open-live-stream.pd
4-1-2-simple-motion-detection-absolute-value.pd
4-1-3-motion-detection-more-advanced-and-more-options.pd
4-1-simple-motion-detection.pd PD-GF-Lecture.pd PD-Lecture.pd
colors.pd d_gf_2_0-Intro_to_images_open_image.pd
d_gf_2_2_1-image-modification-1-numop-all-in-one2.pd
d_gf_2_2_2.pd gf_1_0-Introduction_to_grids.pd
gf_2-2-3-resize-image_dec_2005.pd
gf_2-2-4-greyscale_dec_2005.pd
gf_2_0-Intro_to_images_open_image.pd
gf_2_2_1-image-modification-1-numop-all-in-one2.pd gf_2_2_2.pd
grid-intro.pd
probably_not_good_2-3-0-1-image-modification-1-numop-all-in-one.pd
probably_not_good_2-3-0-2.pd pure-data-1.pd pure-data-2.pd
pure-data-3.pd pure-data-4.pd pure-data-5.pd pure-data-6.pd
pure-data-7.pd pure-data-8.pd pure-data-9.pd
randomly-select-an-image.pd title-page-pd-gf-in-one.pd
txt-for-resize-image.pd
Log Message:
0.8.1
--- NEW FILE: pure-data-1.pd ---
#N canvas 221 110 894 498 10;
#N canvas 0 22 450 300 this 0;
#X obj 192 128 inlet;
#X obj 192 171 outlet;
#X text 8 7 If you're looking at this you're just going to confuse
yourself!;
#X connect 0 0 1 0;
#X restore 499 380 pd this is an object;
#X text 509 358 <- This is a connection;
#X msg 499 319 10;
#X text 13 348 Objects are like filters \, they change the way messages
flow through them.;
#X text 13 153 You can think of a patch as plumbing. The way water
flows through the plumbing of your house \, messages flow through the
connections in your patch. Objects change the flow of the messages
to allow different things to happen. Messages always go into objects
at the top \, called the inlet \, and always come out at the bottom
\, called the outlet. In PD messages flow from top to bottom.;
#X text 458 236 This is a very simple example of a patch \, the message
"10" can be sent through the "pd this is an object" and can be seen
being passed out the outlet.;
#X floatatom 499 416 5 0 0 0 - - -;
#X text 539 415 <- This number box shows the float message;
#X text 553 334 and watch the output!;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 252 You can work with PD in two ways \, the first is in
"edit mode". Edit-mode is where you create your patch by adding objects
and the connections between them. "Run mode" is when you're done with
the construction of your patch \, and you wish to send messages through
it. In run-mode your cursor is an arrow (as it is right now since we
are in run-mode) \, in edit-mode your cursor is a pointing hand.;
#X text 458 136 Messages are what allow objects to communicate with
one and other. Messages can change the way an object acts \, and/or
express the work the object is doing. Messages come in different types.
They can contain words \, numbers and groups of these. The main types
of messages we will be dealing with are floats (numbers). You can click
on a message \, when in run-mode \, to send it through your patch.
;
#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 448 290 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 8 447 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 449 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#X text 12 20 DESCRIPTION: What is a patch? An object? A message?;
#N canvas 0 22 466 316 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: metaphor object message GUI introduction;
#X restore 16 453 pd META;
#X text 457 67 GUI objects allow you to interact with your PD patch
as it is running. They allow you to change what your patch is doing
without reconnecting the objects. The simplest GUI object is the "Message"
that simply contains a message you want to send in your patch.;
#X text 453 290 A patch that connects a GUI to an object to a second
GUI.;
#X text 531 320 <- This GUI sends a float message (click on it);
#X text 13 66 When working with PD you are dealing primarily with objects
\, GUI (Graphical User Interface) objects \, connections and messages.
These are the building blocks of PD programming. When you connect objects
\, GUI objects \, and messages you are creating a "patch". Patching
is making something complex out of smaller building blocks.;
#X text 13 46 The "patch" \, "objects" and "connections";
#X text 453 46 "GUI objects" and "messages";
#X text 12 8 1 Introduction to Pure-Data & its Metaphors;
#X connect 0 0 6 0;
#X connect 2 0 0 0;
--- NEW FILE: gf_2_0-Intro_to_images_open_image.pd ---
#N canvas 0 0 894 417 10;
#X obj 4 278 cnv 15 868 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 12 285 GridFlow 0.8.0;
#X obj 5 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 5 -106 cnv 15 868 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 5 -106 cnv 15 780 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -99 2 Introduction to Images;
#X text 556 86 <--- click here;
#N canvas 0 0 450 300 META 0;
#X restore 126 285 pd META;
#X obj 452 191 #out window;
#X msg 452 84 open b001.jpg;
#X obj 473 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X text 13 84 step 3: Add a [bang<.;
#X text 13 105 step 4: Create a [#out window].;
#X text 13 63 step 2: Create [#in] object.;
#X text 14 27 step 1: create message box [open< with the file name
and extension you want to open.;
#X text 506 110 <--- then click here;
#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 450 -67 1.2 How to create a grid.;
#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 8 -68 2.1 Opening an image.;
#X text 456 -66 2.1 Patch example.;
#X obj 452 130 cnv 15 22 15 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 452 129 #in;
#X text 12 150 Tip: In order for GridFlow to be able to find your images
you have to specify the correct path.;
#X obj 14 151 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 12 -33 One of the first things you need to know when working
with GridFlow is how to open an image. GridFlow accepts several image
formats (.jpg \, .png \, .tiff etc.).;
#X text 12 150 Tip: In order for GridFlow to be able to find your images
you have to specify the correct path. Gridflow has an "images" folder
\, put them there to access them by filename only.;
#X obj 451 38 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 450 38 Tip: Sometimes the display window opens behind the patch
\, try moving the patch if the display seems to be missing.;
#X text 447 -45 To view the image you must initialize the patch. This
is done in "run mode" by clicking on the message box \, and then on
the bang. The image will be displayed in a display window \, off to
the side of the patch.;
#X text 476 216 In order to close the parent window displaying your
image \, the [#out window] object must be deleted.;
#X obj 512 133 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 489 132 <--Tip: remember \, as with the rest of PD \, you can
obtain information regarding specific objects by right-clicking on
it. Try this for [#in].;
#X connect 9 0 22 0;
#X connect 10 0 22 0;
#X connect 22 0 8 0;
--- NEW FILE: randomly-select-an-image.pd ---
#N canvas 417 0 446 428 10;
#X text 6 15 You can open multiple images in the same window. To do
so you connect the outputs from the images to the inlet of the out
window.;
#X obj 136 295 #out window;
#X obj 65 198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 28 232 #in;
#X msg 28 160 open b001.jpg;
#X obj 188 197 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 151 231 #in;
#X msg 151 159 open r001.jpg;
#X obj 301 196 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 264 230 #in;
#X msg 264 158 open g001.jpg;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 10 -37 What is a grid?;
#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 16 327 GridFlow 0.8.0;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -73 2 Images;
#X text 14 -59 Description: opening multiple images from one window.
;
#X obj 56 115 random 3;
#X floatatom 195 81 5 0 0 0 - - -;
#X obj 3 55 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1;
#X obj 163 112 sel 0;
#X obj 226 127 sel 1;
#X obj 304 115 sel 2;
#X obj 55 92 metro 1000;
#X connect 2 0 3 0;
#X connect 3 0 1 0;
#X connect 4 0 3 0;
#X connect 5 0 6 0;
#X connect 6 0 1 0;
#X connect 7 0 6 0;
#X connect 8 0 9 0;
#X connect 9 0 1 0;
#X connect 10 0 9 0;
#X connect 18 0 19 0;
#X connect 19 0 21 0;
#X connect 19 0 22 0;
#X connect 19 0 23 0;
#X connect 20 0 24 0;
#X connect 21 0 2 0;
#X connect 22 0 5 0;
#X connect 23 0 8 0;
#X connect 24 0 18 0;
--- NEW FILE: 4-1-2-simple-motion-detection-absolute-value.pd ---
#N canvas 452 202 450 438 10;
#X obj 91 104 #camera;
#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
;
#X obj 91 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
#X obj 91 59 metro 50;
#X obj 100 253 #out window;
#X obj 88 134 trigger anything anything;
#X obj 133 162 # -;
#X obj 133 201 #clip;
#X obj 343 223 @! abs;
#X obj 343 254 # + 50;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 10 -37 What is a grid?;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -73 2 Images;
#X text 14 -59 Description: opening multiple images from one window.
;
#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 16 327 GridFlow 0.8.0;
#X connect 0 0 5 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 5 0 6 1;
#X connect 5 1 6 0;
#X connect 6 0 7 0;
#X connect 7 0 4 0;
--- NEW FILE: 2nd-part-numop.pd ---
#N canvas 66 33 927 601 10;
#X obj 16 -206 cnv 15 200 170 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 38 -178 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 24 -127 #in;
#X obj 82 -114 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
-1 -1 0 1;
#X obj 24 -88 # + \$1;
#X obj 125 -157 metro 33.3;
#X obj 125 -177 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0
1;
#X obj 462 -153 cnv 15 400 350 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 482 -109 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 468 -30 #in;
#X msg 468 -132 open b001.jpg;
#X obj 508 -49 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
-1 -1 0 1;
#X obj 468 84 # + \$1;
#X obj 514 -109 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1
1;
#X obj 468 128 #clip;
#X obj 24 -60 s slider_metro;
#X obj 468 154 s slider_metro_clip;
#X floatatom 79 -86 5 0 0 0 - - -;
#X text 10 210 In all these examples the [# +] numop is used. All the
numeric operators can be found in the numeric operator help patch (right
click on the [# +] and select help to view them). If you want to see
what effects other numops can do \, try replacing the [# +] numop with
another one (either cut and past a different numop from the help file
or create the object in the current canvas.;
#X obj 514 -89 metro 33.3;
#X obj 552 -21 #color;
#X msg 552 44 255 0 0;
#X text 614 44 donner une liste changer couleurs;
#X obj 552 88 #scale_by (8 8);
#X msg 552 66 2 2 3 # 255 0 0 0 255 0 0 0 255 191 191 191;
#X obj 834 211 r slider_metro;
#X obj 843 238 r slider_metro_clip;
#X obj 834 265 #out window;
#X obj 16 -284 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 15 -284 Example #4;
#X text 15 -261 Will demonstrate how to use the metro (see pd_intro
#4) and the slider which allows you to scroll through values and modify
a grid in real-time.;
#X msg 24 -202 open b001.jpg;
#X obj 456 -281 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 455 -281 Example #5;
#X text 457 -260 We introduce the [#clip] object. It is used with numops
in order to set constraints on the pixel to eliminate color wrapping.
Colour wrapping occurs when the individual pixel values in a grid exceed
255 which results in over-saturation of colour. GridFlow reads colours
as values from 0 (black) to 255 (white). Refer to glossary for more
information on colour.;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 3 0 4 1;
#X connect 3 0 17 0;
#X connect 4 0 15 0;
#X connect 5 0 2 0;
#X connect 6 0 5 0;
#X connect 8 0 9 0;
#X connect 9 0 12 0;
#X connect 10 0 9 0;
#X connect 11 0 12 1;
#X connect 12 0 14 0;
#X connect 13 0 19 0;
#X connect 14 0 16 0;
#X connect 19 0 9 0;
#X connect 20 0 12 1;
#X connect 21 0 12 1;
#X connect 23 0 12 1;
#X connect 24 0 23 0;
#X connect 25 0 27 0;
#X connect 26 0 27 0;
#X connect 31 0 2 0;
--- NEW FILE: pure-data-2.pd ---
#N canvas 197 100 899 548 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 8 497 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 499 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 470 320 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: GUI slider toggle number message introduction
;
#X restore 16 503 pd META;
#X text 12 20 DESCRIPTION: Message \, slider \, toggle \, bang and
number;
#X msg 93 145 hello world;
#X obj 93 168 print;
#X text 181 146 <- Click on this message;
#X text 18 74 Messages control the behavior of objects and it is the
objects that change what a patch does. The first object we're going
to learn is "print". All "print" does is print out the messages you
send it to the terminal:;
#X text 19 197 TIP: If you forget what an object does you can always
double-click (on a mac) or right-click (on a PC) and then choose "help".
;
#X text 19 250 In this tutorial we will use two different types of
objects: "objects" (of which "print" is an example) and GUI objects
\, (of which "message" is an example). GUI objects allow you to interact
with your patch \, control PD and change parameters of objects. We
are going to learn four types of GUI objects (but there are many more):
Slider \, Toggle \, Bang \, and Number.;
#X obj 76 355 hsl 300 30 0 127 0 0 empty empty This_is_a_HSlider_(Horizontal)
10 15 1 10 -262144 -1 -1 0 1;
#X obj 73 393 print;
#X text 21 421 This "hslider" is connected to the print object. This
way we can see what messages the "hslider" sends. Try clicking and
dragging in the Slider. You can change the scale (and other properties)
of some GUI Objects by double-clicking (mac) or right-clicking (pc)
and choosing "properties".;
#X text 13 46 The "message" and "hslider" GUI Objects:;
#X text 453 46 "toggle" \, "bang" \, "number";
#X obj 519 176 tgl 30 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 629 176 bng 30 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 629 210 print Bang;
#X obj 519 210 print Toggle;
#X obj 739 210 print Number;
#X floatatom 739 192 5 0 0 0 - - -;
#X text 466 76 "slider" \, "toggle" and "number" all send messages
made up of floats (numbers). "bang" is a special case and it only sends
the message "bang". Below we're using an argument to the print object
that tags each message sent to the terminal. This way when we have
multiple "print" objects in one patch we can differenciate thier output.
;
#X text 465 268 "toggle" sends the message "1" or "0" \, "bang" always
sends "bang" and if you click and drag on the "number" you can see
it acts a lot like a Slider. With "number" you can also click once
\, and then type a number to send.;
#X text 467 335 TIP: You can send floating point numbers by holding
down the SHIFT key as you click and drag on the "number".;
#X text 467 375 There are other types of GUI objects not covered here.
See the guis-about.pd PDDP patch:;
#X text 12 8 2 PD Introduction - Some Useful GUI Objects in Pure-Data
;
#X connect 7 0 8 0;
#X connect 13 0 14 0;
#X connect 18 0 21 0;
#X connect 19 0 20 0;
#X connect 23 0 22 0;
--- NEW FILE: pure-data-3.pd ---
#N canvas 261 121 900 544 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 448 366 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 8 497 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 499 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 474 324 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: patch first connecting placing place connect
;
#X restore 16 503 pd META;
#X text 12 20 DESCRIPTION: Using PD to create your first patch;
#X text 13 46 Adding Objects:;
#X text 19 75 In order to create a patch you need to first place objects
and GUI objects \, and second make connections between these objects.
To place an object you need to be in "edit-mode". You should now be
in run mode \, so please go to the "Edit" pull-down menu and choose
"Edit mode" at the bottom. You should see your cursor change from an
arrow to a pointing hand.;
#X text 19 175 SHORTCUT: You can press "Control" and "e" simultaneously
in order to toggle (switch) between edit and Run modes.;
#X obj 448 386 cnv 15 430 100 empty empty empty 20 12 0 14 -233017
-66577 0;
#X floatatom 506 406 5 0 0 0 - - -;
#X text 19 355 SHORTCUT: You can press "Control" and "3" simultaneously
in order to place a number. All shortcuts are listed next to the items
in the "Put" menu.;
#X text 453 366 Patch work area:;
#X text 19 215 Once you are in "edit-mode" you are now free to place
objects. To place an object go to the "Put" pull-down menu and choose
"Number". Once you have chosen this menu item you will see that a "number"
gui is attached to your mouse pointer. In order to place the number
into the patch move your pointer to the grey area to the right (in
the "Patch work area" -> Click once to release it from your mouse.
Note that the number is coloured blue. The blue colour shows that an
item in your patch is selected. To unselect any item simply click once
on the blank (white) space between items.;
#X obj 520 440 print;
#X obj 448 156 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 156 Connecting Objects:;
#X text 19 411 Next we're going to place the familar "print" object
beneath the "number" GUI. Press "Control" and "1" to place an object
box. Again the object gets attached to your mouse and again click once
to place it in the patch area somewhere under the "number".;
#X text 459 41 While the number box is still selected (coloured blue)
you can see a flashing cursor. Type the word "print" into the object
box. The object will retain a dashed line while you type. In order
to create the object you simply need to unselect \, by clicking somewhere
outside the object. Note that once you have clicked to create the object
the dashed line turns solid and an inlet (small rectangle) gets drawn
around the word "print". The objects have now been created!;
#X text 459 185 All connections between objects in PD are created from
outlet to inlet (top to bottom). To start making a connection move
your hand-pointer over the outlet of the "number" gui. When over the
outlet your pointer will change to a circle. When you see the circle
press and hold the mouse button. As you drag (holding the mouse button
down) the pointer you see a line being drawn from the outlet to your
pointer. To attach this connection to another object drag your mouse
to an inlet of another object. The pointer will again change to a circle
and at this point you can release the mouse button. Once released the
objects are now connected! To play with your patch go back into run-mode
and click and drag on the number-box while watching the terminal.;
#X text 12 8 3 PD Introduction - Creating your first patch;
#X connect 11 0 15 0;
--- NEW FILE: txt-for-resize-image.pd ---
#N canvas 0 0 450 300 10;
#X text 48 29 How to resize an image:;
#X text 39 70 # scale 640 480 pour les images;
--- NEW FILE: pure-data-9.pd ---
#N canvas 291 108 450 562 10;
#X obj 8 6 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 517 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 228 519 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 486 336 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: GOP graph parent abstraction nesting ui interface
;
#X restore 16 523 pd META;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 12 20 DESCRIPTION: Using Graph on Parent abstractions;
#X text 13 46 What is Graph on Parent?;
#X text 13 76 Graph on Parent is a feature of PD that allows you to
show the GUI objects contained in an abstraction on the parent patch.
This means that you can create abstractions that not only include a
collection of objects but can also include a user interface. To use
graph on parent you simply need to create an abstraction the usual
way but before saving it you need should Control-Click (Right-Click)
on the background (white area) in the abstraction and choose "properties".
>From the properties menu check the "graph on parent" option. Now when
you save the patch and embed it in a second patch all GUI objects will
be visible.;
#X obj 154 250 gop_abstraction;
#X text 13 331 In this simple example there is only one GUI object
\, a slider. Inside the abstraction the slider is connected to an inlet
and an outlet. If you move the slider you can see the result in the
outlet. If you set a value in the inlet with the number GUI you can
see the position of the slider change.;
#X floatatom 154 231 5 0 0 0 - - -;
#X floatatom 154 297 5 0 0 0 - - -;
#X text 13 421 Note you can change the size of the abstractions bounding
box by Control-Click (Right-Click) on the abstraction and choose "properties".
The size of the bounding-box is specified by the "screen width" and
"screen height".;
#X text 13 487 For more info see:;
#X text 12 8 9 Intermediate Pure-Data - Using GUI's in abstractions
;
#X connect 8 0 11 0;
#X connect 10 0 8 0;
--- NEW FILE: grid-intro.pd ---
#N canvas 0 0 476 213 10;
#X text 29 30 GridFlow is a plug-in for PureData that introduces the
frid (#) data type into the PD environment. GridFlow allows you to
work with live video \, still images and video files in a rel-time
environment.;
#X text 32 97 This section deals with the particular objects related
to GridFlow. GridFlow uses the usual PD "control" objects \, as well
as a set of GridFlow specific objects. Before we get into the tutorials
we will explain the grid "#" \, the most important concept in GridFlow.
;
--- NEW FILE: 0-0-intro_page.pd ---
#N canvas 226 0 429 638 10;
#X obj -22 -68 cnv 1 430 80 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj -24 49 cnv 1 430 520 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj -24 82 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 57 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -17 49 cnv 1 2 480 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 390 50 cnv 1 2 480 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 144 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 168 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 26 98 1.1 What is a grid?;
#X obj 41 534 cnv 15 300 30 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 53 539 Stephanie Brodeur & Darsha Hewitt 2005;
#X obj -22 7 cnv 15 430 30 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 88 -3 cnv 15 100 17 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 88 -5 GridFlow 0.8.0;
#X obj -22 -68 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X obj -23 37 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X obj 189 11 cnv 15 63 17 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 188 8 Tutorials;
#X obj -24 48 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X obj -24 528 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X text 14 63 1;
#X obj 32 62 Introduction to Grids;
#X text 26 178 2.1 How does GridFlow understand images?;
#X text 15 150 2;
#X obj 36 147 Introduction to Images;
#X text 419 224 2.3 Different options on how to open an image.;
#X text 445 241 2.3.1 Opening different images in one window.;
#X text 445 258 2.3.2 Opening images using send and receive.;
#X obj -24 310 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 334 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 18 317 3;
#X obj 39 315 Introduction to Video;
#X text 482 201 REMOVE 2.3 -- see pd tuts;
#X text 17 405 4;
#X obj 38 405 Introduction to Live Feed;
#X obj 37 481 Putting it all Together;
#X text 20 482 5;
#X text 30 430 4.1 Opening a live video feed;
#X text 30 446 4.2 Motion Detection;
#X text 29 372 3.3 Recording video;
#X obj -24 310 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 334 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 400 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 424 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 400 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 424 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 476 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 500 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 476 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj -24 500 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 26 114 1.2 How to create a grid;
#X text 26 197 2.2 Opening an image;
#X text 26 214 2.3 Image manipulation;
#X text 55 244 2.3.2 Resizing an image;
#X text 55 228 2.3.1 Numop;
#X text 55 273 2.3.4 Remap image;
#X text 55 259 2.3.3 Greyscale;
#X text 55 286 2.3.5 Convolve;
#X text 29 342 3.1 Opening a video;
#X text 29 358 3.2 Video manipulation;
--- NEW FILE: 4-0-open-live-stream.pd ---
#N canvas 286 99 571 305 10;
#X obj 91 104 #camera;
#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
;
#X obj 91 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
#X obj 91 59 metro 50;
#X obj 91 151 #out window;
#X text 162 103 In this case there is no need for the [#in] objec.
Thereis one in the [#camera] object already.;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 10 -37 What is a grid?;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -73 2 Images;
#X text 14 -59 Description: opening multiple images from one window.
;
#X obj 10 197 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 18 204 GridFlow 0.8.0;
#X connect 0 0 4 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
--- NEW FILE: d_gf_2_2_2.pd ---
#N canvas 38 0 687 415 10;
#X obj 31 -223 cnv 15 243 358 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 39 -141 #in;
#X msg 39 -215 open b001.jpg;
#X obj 79 -132 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 39 -18 # + \$1;
#X obj 62 -189 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
;
#X obj 69 76 #clip;
#X obj 28 -322 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 62 -167 metro 33.3;
#X obj 94 -99 #color;
#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 36 168 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 44 175 GridFlow 0.8.0;
#X obj 39 108 #out window;
#X text 35 -671 2.2 Image manipulation \, colour wrapping;
#X obj 12 -518 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 18 -519 Example #1 colour wrapping;
#X msg 74 -491 240 0 0;
#X obj 179 -368 display;
#X obj 74 -457 # + 20;
#X obj 178 -423 #cast uint8;
#X obj 23 -368 display;
#X text 274 -429 <-- This transforms the grid into 8 bit values \,
that corresponds to the way that images are usually shown in images
and video;
#X text 42 -323 Example #2 clipping the values;
#X text 10 -545 Tip: Refer to glossary for more information on colour.
;
#X text 215 -132 <-- add value to all channels at once;
#X obj 39 37 shunt;
#X obj 69 11 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
#X text 93 12 <-- switch to see clip's effect;
#X text 96 38 <-- directs the flow of data;
#X text 7 -643 When an image is represented as a grid every pixel value
will vary between 0 and 255 Color wrapping occurs when the result of
the operation on the pixel value would be higher than 255 Values above
255 are counted from 0 For example: if a pixel has a red value of 240
and 20 is added to it \, you get 5 instead of displaying 260 (240 +
20 - 255 = 5);
#X text 450 -583 aks matju to fix bug in [display]'s display;
#X text 32 -301 The [#clip] object is used with numops in order to
set an lower and upper range to pixel values in order to eliminate
color wrapping (those nifty 60s effects).;
#X text 288 -70 <-- drag to add value to specific channel;
#X text 163 -206 remember to load the image and strat the metro;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 4 1;
#X connect 4 0 26 0;
#X connect 5 0 8 0;
#X connect 6 0 13 0;
#X connect 8 0 1 0;
#X connect 9 0 4 1;
#X connect 17 0 19 0;
#X connect 19 0 20 0;
#X connect 19 0 21 0;
#X connect 20 0 18 0;
#X connect 26 0 13 0;
#X connect 26 1 6 0;
#X connect 27 0 26 1;
--- NEW FILE: gf_2_2_1-image-modification-1-numop-all-in-one2.pd ---
#N canvas 53 0 670 470 10;
#X obj 20 -34 cnv 15 130 150 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 70 2 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
;
#X obj 35 41 #in;
#X msg 35 -28 open b001.jpg;
#X obj 35 91 # +;
#X obj 21 231 cnv 15 185 150 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 29 313 #in;
#X msg 29 239 open b001.jpg;
#X obj 96 323 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 4300 1;
#X obj 29 349 # + \$1;
#X obj 54 287 metro 33.3;
#X obj 54 265 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
;
#X obj 82 64 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 82 42 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 83 86 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X msg 82 64 67;
#X msg 82 42 2;
#X msg 83 86 199;
#X floatatom 93 349 5 0 0 0 - - -;
#X text 21 -501 Numeric Operators (numop): transform an image or video
by applying a mathematical operation to each pixel value in the grid.
;
#X obj 21 -522 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 18 606 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 27 614 GridFlow 0.8.0;
#X obj 339 -267 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 404 -228 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 358 -199 #in;
#X msg 358 -260 open b001.jpg;
#X obj 378 -171 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 20 -352 cnv 15 50 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 23 -86 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 26 -87 Example #2 demonstrates how to send the numop an argument
using a message box. This method allows you to send the numop several
different arguments.;
#X text 35 -671 2.4 Image manipulation;
#X text 57 -523 2.4.1 Numop;
#X text 25 -445 To transform a grid (in this case an image) using numop
\, it must first be given an argument (a number value). That value
will be applied by numop to every value in the grid. The following
examples show you the three methods that can be used to give the numop
an argument.;
#X obj 35 121 s to_out_window;
#X obj 358 -142 s to_out_window;
#X obj 29 382 s to_out_window;
#X obj 246 546 r to_out_window;
#X msg 498 547 close;
#X msg 393 544 open window;
#X obj 30 -294 cnv 15 200 180 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 161 -215 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 199 -318 display;
#X msg 79 -282 1 2 3 4 5 6 7 8 9;
#X obj 79 -253 #import (3 3);
#X obj 179 -479 display;
#X obj 140 -215 # + 42;
#X obj 358 -171 # + 42;
#X text 337 -288 Here is an example with an image.;
#X text 19 -352 Example 1: shows how values in a grid are altered when
an argument is placed directly into the numeric operator object.;
#X text 157 63 1 click on the argument;
#X text 124 6 2 click on the bang to see the updated image;
#X text 94 8 <--;
#X text 116 42 <--;
#X text 116 65 <--;
#X text 116 87 <--;
#X text 194 -221 <-- argument in this case is 42;
#X obj 353 581 #out window;
#X text 22 433 In all these examples the [# +] numop is used. All the
numeric operators can be found in the numeric operator help patch (right
click on the [# +] and select help to view them). If you want to see
what effects other numops can do \, try replacing the [# +] numop with
another one (either cut and paste a different numop from the help file
or create the object in the current canvas.;
#X obj 20 181 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 26 179 Example #3 using the slider and metro.;
#X text 467 -617 split into 3 patches using ben's switch arrange canvases
and colors;
#X text 24 -635 GridFlow performs high level grid processing \; in
other words its main function is the manipulation of images and video.
There are several ways to modify images \, one of the most common is
the numeric operators.;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 35 0;
#X connect 6 0 9 0;
#X connect 7 0 6 0;
#X connect 8 0 9 1;
#X connect 8 0 18 0;
#X connect 9 0 37 0;
#X connect 10 0 6 0;
#X connect 11 0 10 0;
#X connect 15 0 4 1;
#X connect 16 0 4 1;
#X connect 17 0 4 1;
#X connect 25 0 26 0;
#X connect 26 0 48 0;
#X connect 27 0 26 0;
#X connect 38 0 58 0;
#X connect 39 0 58 0;
#X connect 40 0 58 0;
#X connect 44 0 45 0;
#X connect 45 0 46 0;
#X connect 45 0 47 0;
#X connect 47 0 43 0;
#X connect 48 0 36 0;
--- NEW FILE: 3-1-0-open-video.pd ---
#N canvas 48 56 545 431 10;
#X obj 100 156 #in;
#X obj 100 222 #out window;
#X obj 124 33 openpanel;
#X obj 124 9 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 124 58 open \$1;
#X obj 17 11 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
#X obj 17 45 metro 33.33;
#X floatatom 317 190 5 0 0 0 - - -;
#X obj 401 166 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 401 193 print go;
#X msg 201 124 loop 0;
#X msg 201 97 loop 1;
#X msg 283 13 open home/steph/Desktop/PDDP_summer;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 10 -37 What is a grid?;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -73 2 Images;
#X text 14 -59 Description: opening multiple images from one window.
;
#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 16 327 GridFlow 0.8.0;
#X connect 0 0 1 0;
#X connect 0 1 7 0;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 0 0;
#X connect 5 0 6 0;
#X connect 6 0 0 0;
#X connect 8 0 9 0;
#X connect 10 0 0 0;
#X connect 11 0 0 0;
#X connect 12 0 0 0;
--- NEW FILE: 4-1-3-motion-detection-more-advanced-and-more-options.pd ---
#N canvas 476 26 450 542 10;
#X obj 91 104 #camera;
#X obj 248 302 #out window;
#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
;
#X text 167 102 there is an [#in] within [#camera];
#X obj 80 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
#X obj 248 325 fps detailed;
#X obj 248 351 print;
#X obj 108 20 metro 50;
#X obj 248 198 # -;
#X obj 248 269 #clip;
#X obj 248 220 @! abs;
#X obj 248 244 # + 50;
#X obj 164 141 trigger anything anything;
#X text 281 197 230400 (240x320x3);
#X obj 101 303 #rgb_to_greyscale;
#X obj 101 326 #centroid;
#X floatatom 154 404 5 0 0 0 - - -;
#X floatatom 200 403 5 0 0 0 - - -;
#X obj 85 375 display;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 10 -37 What is a grid?;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -73 2 Images;
#X text 14 -59 Description: opening multiple images from one window.
;
#X obj 6 432 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 14 439 GridFlow 0.8.0;
#X connect 0 0 12 0;
#X connect 1 0 5 0;
#X connect 2 0 0 0;
#X connect 4 0 7 0;
#X connect 5 0 6 0;
#X connect 7 0 0 0;
#X connect 8 0 10 0;
#X connect 9 0 1 0;
#X connect 9 0 14 0;
#X connect 10 0 11 0;
#X connect 11 0 9 0;
#X connect 12 0 8 1;
#X connect 12 1 8 0;
#X connect 14 0 15 0;
#X connect 15 0 18 0;
#X connect 15 1 16 0;
#X connect 15 2 17 0;
--- NEW FILE: gf_2-2-3-resize-image_dec_2005.pd ---
#N canvas 127 0 672 603 10;
#X obj 22 160 metro 10;
#X obj 22 118 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
;
#X floatatom 80 298 5 1 4 0 - - -;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 26 478 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 34 485 GridFlow 0.8.0;
#X obj 22 438 #out window;
#X obj 59 248 #in;
#X msg 59 225 load bluemarble.jpg;
#X obj 80 387 #pack 2;
#X floatatom 124 369 5 1 4 0 - - -;
#X obj 22 272 #store;
#X text 21 -67 2.4 Image manipulation;
#X text 46 -37 2.4.1 Resizing an image;
#X obj 22 272 #store;
#X obj 59 202 loadbang;
#N canvas 0 0 450 300 META 0;
#X restore 154 484 pd META;
#X obj 274 226 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X obj 23 414 cnv 15 63 15 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 113 118 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X text 49 117 <-- step #2 : start the metro;
#X obj 22 413 #scale_by;
#X obj 468 344 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X obj 165 379 cnv 15 152 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 167 365 changing this number permits you to change the image's
horizontal parameters.;
#X text 404 344 <-- step #3 : change the parameters;
#X text 11 -10 [#scale_by] resizes grids by multiplying its parameters
(width and height). To resize an image proportionatily a specific scaleing
size must appylied \, ex: [#scale_by 4].;
#X text 11 31 [# pack] lets you resize grids by altering the vertical
and horizontal parameters.;
#X text 88 157 the metro refreshes the display window so you don't
have to reload the grid every time it's altered.;
#X text 210 225 <-- step #1 : load the image;
#X text 132 295 changing this number changes the grid's vertical parameters.
(a slider can be connected to [#pack] instead of a number box.;
#X connect 0 0 12 0;
#X connect 0 0 15 0;
#X connect 1 0 0 0;
#X connect 2 0 10 0;
#X connect 8 0 12 1;
#X connect 8 0 15 1;
#X connect 9 0 8 0;
#X connect 10 0 22 1;
#X connect 11 0 10 1;
#X connect 15 0 22 0;
#X connect 16 0 9 0;
--- NEW FILE: gf_2_2_2.pd ---
#N canvas 38 0 687 415 10;
#X obj 31 -223 cnv 15 243 358 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 39 -141 #in;
#X msg 39 -215 open b001.jpg;
#X obj 79 -132 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 39 -18 # + \$1;
#X obj 62 -189 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1
;
#X obj 69 76 #clip;
#X obj 28 -322 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 62 -167 metro 33.3;
#X obj 94 -99 #color;
#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 36 168 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 44 175 GridFlow 0.8.0;
#X obj 39 108 #out window;
#X text 35 -671 2.2 Image manipulation \, colour wrapping;
#X obj 12 -518 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 18 -519 Example #1 colour wrapping;
#X msg 74 -491 240 0 0;
#X obj 179 -368 display;
#X obj 74 -457 # + 20;
#X obj 178 -423 #cast uint8;
#X obj 23 -368 display;
#X text 274 -429 <-- This transforms the grid into 8 bit values \,
that corresponds to the way that images are usually shown in images
and video;
#X text 42 -323 Example #2 clipping the values;
#X text 10 -545 Tip: Refer to glossary for more information on colour.
;
#X text 215 -132 <-- add value to all channels at once;
#X obj 39 37 shunt;
#X obj 69 11 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1;
#X text 93 12 <-- switch to see clip's effect;
#X text 96 38 <-- directs the flow of data;
#X text 7 -643 When an image is represented as a grid every pixel value
will vary between 0 and 255 Color wrapping occurs when the result of
the operation on the pixel value would be higher than 255 Values above
255 are counted from 0 For example: if a pixel has a red value of 240
and 20 is added to it \, you get 5 instead of displaying 260 (240 +
20 - 255 = 5);
#X text 451 -583 aks matju to fix bug in [display]'s display;
#X text 32 -301 The [#clip] object is used with numops in order to
set an lower and upper range to pixel values in order to eliminate
color wrapping (those nifty 60s effects).;
#X text 288 -70 <-- drag to add value to specific channel;
#X text 163 -206 remember to load the image and strat the metro;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 4 1;
#X connect 4 0 26 0;
#X connect 5 0 8 0;
#X connect 6 0 13 0;
#X connect 8 0 1 0;
#X connect 9 0 4 1;
#X connect 17 0 19 0;
#X connect 19 0 20 0;
#X connect 19 0 21 0;
#X connect 20 0 18 0;
#X connect 26 0 13 0;
#X connect 26 1 6 0;
#X connect 27 0 26 1;
--- NEW FILE: d_gf_2_2_1-image-modification-1-numop-all-in-one2.pd ---
#N canvas 53 0 670 470 10;
#X obj 20 -34 cnv 15 130 150 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 70 2 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
;
#X obj 35 41 #in;
#X msg 35 -28 open b001.jpg;
#X obj 35 91 # +;
#X obj 21 231 cnv 15 185 150 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 29 313 #in;
#X msg 29 239 open b001.jpg;
#X obj 96 323 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 4300 1;
#X obj 29 349 # + \$1;
#X obj 54 287 metro 33.3;
#X obj 54 265 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
;
#X obj 82 64 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 82 42 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 83 86 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X msg 82 64 67;
#X msg 82 42 2;
#X msg 83 86 199;
#X floatatom 93 349 5 0 0 0 - - -;
#X text 21 -501 Numeric Operators (numop): transform an image or video
by applying a mathematical operation to each pixel value in the grid.
;
#X obj 21 -522 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 18 606 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 27 614 GridFlow 0.8.0;
#X obj 339 -267 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 404 -228 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 358 -199 #in;
#X msg 358 -260 open b001.jpg;
#X obj 378 -171 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 20 -352 cnv 15 50 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 23 -86 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 26 -87 Example #2 demonstrates how to send the numop an argument
using a message box. This method allows you to send the numop several
different arguments.;
#X text 35 -671 2.4 Image manipulation;
#X text 57 -523 2.4.1 Numop;
#X text 25 -445 To transform a grid (in this case an image) using numop
\, it must first be given an argument (a number value). That value
will be applied by numop to every value in the grid. The following
examples show you the three methods that can be used to give the numop
an argument.;
#X obj 35 121 s to_out_window;
#X obj 358 -142 s to_out_window;
#X obj 29 382 s to_out_window;
#X obj 246 546 r to_out_window;
#X msg 498 547 close;
#X msg 393 544 open window;
#X obj 30 -294 cnv 15 200 180 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 161 -215 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 199 -318 display;
#X msg 79 -282 1 2 3 4 5 6 7 8 9;
#X obj 79 -253 #import (3 3);
#X obj 179 -479 display;
#X obj 140 -215 # + 42;
#X obj 358 -171 # + 42;
#X text 337 -288 Here is an example with an image.;
#X text 19 -352 Example 1: shows how values in a grid are altered when
an argument is placed directly into the numeric operator object.;
#X text 157 63 1 click on the argument;
#X text 124 6 2 click on the bang to see the updated image;
#X text 94 8 <--;
#X text 116 42 <--;
#X text 116 65 <--;
#X text 116 87 <--;
#X text 194 -221 <-- argument in this case is 42;
#X obj 353 581 #out window;
#X text 22 433 In all these examples the [# +] numop is used. All the
numeric operators can be found in the numeric operator help patch (right
click on the [# +] and select help to view them). If you want to see
what effects other numops can do \, try replacing the [# +] numop with
another one (either cut and paste a different numop from the help file
or create the object in the current canvas.;
#X obj 20 181 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 26 179 Example #3 using the slider and metro.;
#X text 467 -617 split into 3 patches using ben's switch arrange canvases
and colors;
#X text 24 -635 GridFlow performs high level grid processing \; in
other words its main function is the manipulation of images and video.
The numeric operators is one of the most common ways to modify an image.
;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 35 0;
#X connect 6 0 9 0;
#X connect 7 0 6 0;
#X connect 8 0 9 1;
#X connect 8 0 18 0;
#X connect 9 0 37 0;
#X connect 10 0 6 0;
#X connect 11 0 10 0;
#X connect 15 0 4 1;
#X connect 16 0 4 1;
#X connect 17 0 4 1;
#X connect 25 0 26 0;
#X connect 26 0 48 0;
#X connect 27 0 26 0;
#X connect 38 0 58 0;
#X connect 39 0 58 0;
#X connect 40 0 58 0;
#X connect 44 0 45 0;
#X connect 45 0 46 0;
#X connect 45 0 47 0;
#X connect 47 0 43 0;
#X connect 48 0 36 0;
--- NEW FILE: gf_1_0-Introduction_to_grids.pd ---
#N canvas 0 207 762 514 10;
#X obj 470 287 display;
#X obj 7 6 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 7 -29 cnv 15 970 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 7 -29 cnv 15 780 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 12 661 cnv 15 970 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 20 668 GridFlow 0.8.0;
#X text 10 6 1.1 What is a grid?;
#X text 12 -22 1 Introduction to Grids;
#X text 10 333 GridFlow can create a grid from a list of numbers. The
[#import] object permits you to set the desired amount of rows and
columns. A message box permits you to tell the grid which numbers to
display.;
#X msg 473 429 3 3 # 6 1 3 6 3 324 6 3 4;
#X msg 550 169 reset;
#X msg 494 475 3 3 # 1 0 0 0;
#X obj 474 572 display;
#X obj 9 307 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 12 307 1.2 How to create a grid.;
#X obj 9 307 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 13 307 1.2 How to create a grid using the [#import] object.
;
#X text 10 427 1 - Create a list of numbers using a message box. The
numbers must be seperated by a space. The list can have as many numbers
as you want but only the amount defined by [#import] will be displayed.
As you click on the message box the numbers will appear in the grid.
The numbers are positioned in the grid from left to right and from
the top to the bottom.;
#X text 12 605 3 - Connect the objects to a [display] object or a [print]
object to see the resulting grid. You don't have to "see" the grid
in order to manipulate it.;
#X text 558 306 display object;
#N canvas 0 0 450 300 META 0;
#X restore 921 616 pd META;
#X obj 457 6 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 460 6 1.2 How to create a grid.;
#X obj 457 6 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 663 43 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X obj 469 238 cnv 15 92 15 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 469 237 #import (3 3);
#X obj 473 520 cnv 15 37 15 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 473 519 # + 0;
#X text 8 267 The following examples illustrate how grids are interpreted
and represented in GridFlow.;
#X text 3 402 Steps for creating a grid:;
#X text 11 537 2 - Create the [#import] object and indicate the parameters
you want as grid dimensions. By indicating 3 3 in brackets following
[#import] \, you are creating a grid that has 3 rows and 3 columns.
This 3 by 3 grid will display 9 numbers.;
#X text 518 516 works like the [#import] object but allows you to put
your grid parameters and values into one message box;
#X text 10 29 A grid is composed of rows and columns that contain numeric
data. For instance \, a checkerboard is a grid that consists in a series
of rows and columns containing information: a dark square or a light
square.;
#X text 10 91 Computers interpret images as three-dimentional grids:
the rows (height) and columns (width) contain pixel positions. There
are usually three channels (depth) of rows and columns. Channels are
the colours that make up an image. Each channel is a single colour
\, usually red \, green and blue (RGB). Videos are also interpreted
as grids since they are a series of still images.;
#X text 9 194 Because GridFlow uses grids \, images and videos are
represented as such. GridFlow objects that accept or produce grids
are identified by the number sign "#" (think of that symbol as a mini
grid). From now on we will refer to images and videos as grids.;
#X msg 469 44 1 2 3 4 5 6 7 8 9;
#X msg 537 107 1 2 3 4;
#X text 466 6 1.2 Patch example.;
#X text 471 405 Other objects can create grids...;
#X text 601 42 <-- step 1: click here to view the numbers from the
list in a grid.;
#X text 601 104 <-- click here three times to see how import only outputs
a grid once it recieves the number of values iassociated with its dimensions
;
#X text 602 169 <-- resets the grid to only display the numbers from
the list;
#X obj 634 236 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X text 572 236 <-- step 2: This object creates a grid that is 3 rows
by 3 columns;
#X connect 9 0 28 0;
#X connect 10 0 26 0;
#X connect 11 0 28 0;
#X connect 26 0 0 0;
#X connect 28 0 12 0;
#X connect 36 0 26 0;
#X connect 37 0 26 0;
--- NEW FILE: 4-1-simple-motion-detection.pd ---
#N canvas 83 181 707 437 10;
#X obj 91 104 #camera;
#X obj 40 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
;
#X obj 91 12 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
#X obj 91 59 metro 50;
#X obj 100 253 #out window;
#X obj 40 136 trigger anything anything;
#X obj 89 187 # -;
#X obj 89 226 #clip;
#X text 245 235 as a short cut you can use [t a a]. The values of one
frame are substracted from the previous frame only keeps the difference
and gives allows you to see the movement that occured between the first
seconde frame in relation to the first one.;
#X text 242 38 Motion detection is a way to view only the movement
in a space. Movement can be detected in darkness and seen as a video
image. the detection occurs when one frame it substractes the current
frame froom the last frame.;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 10 -37 What is a grid?;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -73 2 Images;
#X text 14 -59 Description: opening multiple images from one window.
;
#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 16 327 GridFlow 0.8.0;
#X connect 0 0 5 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 5 0 6 1;
#X connect 5 1 6 0;
#X connect 6 0 7 0;
#X connect 7 0 4 0;
--- NEW FILE: pure-data-4.pd ---
#N canvas 183 61 890 531 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 96 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 8 487 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 489 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 478 328 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: metro counter random;
#X restore 16 493 pd META;
#X text 12 20 DESCRIPTION: Learning "metro" \, "counter" & "random"
;
#X text 13 96 Using the "metro" object:;
#X text 21 47 In this section we will learn three new objects \, "metro"
\, "counter" \, and "random". Metro sends a bang at regular intervals
\, just like a metronome.;
#X obj 164 142 metro 250;
#X obj 164 123 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 164 163 bng 15 100 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 222 123 5 0 0 0 - - -;
#X text 21 187 You can turn a Metro on and off by sending it a "1"
or "0" message. Because a toggle sends 0/1 messages \, we can simply
connect it directly. Metro also accepts an argument (words or numbers
wirtten after the object name). This argument is how fast the metro
should send out bangs (in milliseconds). You can always change the
speed of the metro by sending it number messages through the rightmost
inlet.;
#X obj 8 306 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 306 Using the "random" object:;
#X text 21 277 For more info see the metro-help.pd patch.;
#X obj 168 385 bng 15 100 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 168 425 print;
#X obj 168 404 random 100;
#X floatatom 233 385 5 0 0 0 - - -;
#X text 20 327 The Random object returns a number between 0 and the
(number) argument when it receives a bang message in the leftmost inlet.
You can also change the upper limit by sending a message to the rightmost
inlet.;
#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 46 Using the "random" object:;
#X obj 559 154 bng 15 100 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 590 154 3 1 3 0 - - -;
#X floatatom 621 174 3 0 0 0 - - -;
#X floatatom 652 194 3 0 0 0 - - -;
#X obj 652 234 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 559 234 8 0 0 0 - - -;
#X obj 559 213 counter 0 10 1;
#X text 21 447 For more info see the random-help.pd patch.;
#X text 461 77 "counter" is simply an object that counts. It can count
up \, count down and count up and then down. Where it starts and where
it stops are all definable. This is the counter that in included with
Gem \, it is not compatible with other counter objects.;
#X text 461 274 The first argument for counter is the lower limit (number
to start counting at). The second is the upper limit to count to. The
third argument is the direction in which to count. "1" means forward
\, "2" means backward and "3" means forward and then backward. You
can also use the three rightmost inlets to change the behaviour of
counter. The rightmost inlet is the upper limit \, the second right-most
the lower limit \, and the third right-most as the direction. The rightmost
outlet sends out a bang message when the counter loops.;
#X text 681 193 Rightmost inlet;
#X text 651 173 Second Rightmost inlet;
#X text 621 153 Third Rightmost inlet;
#X text 461 407 For more info see the counter-help.pd patch.;
#X text 12 8 4 Introduction to PD - More objects;
#X connect 8 0 10 0;
#X connect 9 0 8 0;
#X connect 11 0 8 1;
#X connect 16 0 18 0;
#X connect 18 0 17 0;
#X connect 19 0 18 1;
#X connect 23 0 29 0;
#X connect 24 0 29 1;
#X connect 25 0 29 2;
#X connect 26 0 29 3;
#X connect 29 0 28 0;
#X connect 29 1 27 0;
--- NEW FILE: probably_not_good_2-3-0-2.pd ---
#N canvas 58 0 665 421 10;
#X obj 29 -473 cnv 15 185 190 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 37 -391 #in;
#X msg 37 -465 open b001.jpg;
#X obj 77 -382 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 37 -359 # + \$1;
#X obj 60 -439 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
;
#X obj 37 -315 #clip;
#X obj 27 -634 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 60 -417 metro 33.3;
#X obj 278 -430 #pack 3;
#X obj 326 -455 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 326 -475 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 326 -495 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 286 -391 #color;
#X msg 269 -301 255 0 0;
#X text 336 -304 donner une liste changer couleurs;
#X obj 234 -245 #scale_by (8 8);
#X msg 235 -265 2 2 3 # 255 0 0 0 255 0 0 0 255 191 191 191;
#X obj 37 -273 s to_out_window;
#X text 29 -633 Example #4 the [#clip] object is used with numops in
order to set constraints on pixels to eliminate color wrapping. Colour
wrapping occurs when the individual pixel values in a grid exceed 255
which results in of colour. GridFlow reads colours as values from 0
(black) to 255 (white). Refer to glossary for more information on colour.
;
#X obj 23 -678 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 35 -671 2.4 Image manipulation;
#X obj 25 -102 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 34 -94 GridFlow 0.8.0;
#X obj 253 -162 r to_out_window;
#X msg 505 -161 close;
#X msg 400 -164 open window;
#X obj 360 -127 #out window;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 3 0 4 1;
#X connect 4 0 6 0;
#X connect 5 0 8 0;
#X connect 6 0 18 0;
#X connect 8 0 1 0;
#X connect 9 0 4 1;
#X connect 10 0 9 2;
#X connect 11 0 9 1;
#X connect 12 0 9 0;
#X connect 13 0 4 1;
#X connect 14 0 4 1;
#X connect 16 0 4 1;
#X connect 17 0 16 0;
#X connect 24 0 27 0;
#X connect 25 0 27 0;
#X connect 26 0 27 0;
--- NEW FILE: 3-3-record-video.pd ---
#N canvas 151 21 517 609 10;
#X obj 15 320 #camera;
#X obj 15 260 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
;
#X obj 142 370 #out window;
#X obj 90 260 hsl 128 15 20 300 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 142 395 fps detailed;
#X obj 142 419 print;
#X obj 15 294 metro 100;
#X obj 53 473 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 129 506 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 149 505 stop recording;
#X text 73 471 select filename;
#X text 111 488 start recording;
#X obj 91 489 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 15 528 #record_quicktime;
#X text 21 54 To record a video from a live stream or a video... you
can use this patch.;
#X text 224 315 xinitrc ssh pdrc bach rc export bookmarks;
#X text 11 110 The outside of the patch uses objects seen in previous
patches. The [#record_quicktime] object is an abstraction in which
the settings and the optins are situated. to contruct the patch ...
Do we explain how to do it if it is in an abstraction???;
#X text 86 198 we don't nec have to explain how to build it since its
available to them through the pd_examples and they have been through
enough patvhes to easily understand what's going on.;
#X obj 11 29 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 14 29 What is a grid?;
#X obj 11 -6 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 21 -7 2 Images;
#X text 18 7 Description: opening multiple images from one window.
;
#X obj 13 561 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 21 568 GridFlow 0.8.0;
#X connect 0 0 2 0;
#X connect 0 0 13 0;
#X connect 1 0 6 0;
#X connect 2 0 4 0;
#X connect 3 0 6 1;
#X connect 4 0 5 0;
#X connect 6 0 0 0;
#X connect 7 0 13 1;
#X connect 8 0 13 3;
#X connect 12 0 13 2;
--- NEW FILE: colors.pd ---
#N canvas 50 148 450 206 10;
#X obj -10 -171 #pack 3;
#X obj 46 -203 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
-1 -1 0 1;
#X obj 46 -223 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
-1 -1 0 1;
#X obj 46 -243 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -241291
-1 -1 0 1;
#X obj -6 -132 #color;
#X connect 1 0 0 2;
#X connect 2 0 0 1;
#X connect 3 0 0 0;
--- NEW FILE: d_gf_2_0-Intro_to_images_open_image.pd ---
#N canvas 0 0 887 417 10;
#X obj 4 278 cnv 15 868 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 12 285 GridFlow 0.8.0;
#X obj 5 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 5 -106 cnv 15 868 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 5 -106 cnv 15 780 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 12 -99 2 Introduction to Images;
#X text 556 86 <--- click here;
#N canvas 0 0 450 300 META 0;
#X restore 126 285 pd META;
#X obj 452 191 #out window;
#X msg 452 84 open b001.jpg;
#X obj 473 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X text 13 84 step 3: Add a [bang<.;
#X text 13 105 step 4: Create a [#out window].;
#X text 13 63 step 2: Create [#in] object.;
#X text 14 27 step 1: create message box [open< with the file name
and extension you want to open.;
#X text 506 110 <--- then click here;
#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 450 -67 1.2 How to create a grid.;
#X obj 447 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 8 -68 2.1 Opening an image.;
#X text 456 -66 2.1 Patch example.;
#X obj 452 130 cnv 15 22 15 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 452 129 #in;
#X text 12 150 Tip: In order for GridFlow to be able to find your images
you have to specify the correct path.;
#X obj 14 151 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 12 -33 One of the first things you need to know when working
with GridFlow is how to open an image. GridFlow accepts several image
formats (.jpg \, .png \, .tiff etc.).;
#X text 12 150 Tip: In order for GridFlow to be able to find your images
you have to specify the correct path. Gridflow has an "images" folder
\, put them there to access them by filename only.;
#X obj 451 38 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 450 38 Tip: Sometimes the display window opens behind the patch
\, try moving the patch if the display seems to be missing.;
#X text 447 -45 To view the image you must initialize the patch. This
is done in "run mode" by clicking on the message box \, and then on
the bang. The image will be displayed in a display window \, off to
the side of the patch.;
#X text 476 216 In order to close the parent window displaying your
image \, the [#out window] object must be deleted.;
#X obj 512 133 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 489 132 <--Tip: remember \, as with the rest of PD \, you can
obtain information regarding specific objects by right-clicking on
it. Try this for [#in].;
#X connect 9 0 22 0;
#X connect 10 0 22 0;
#X connect 22 0 8 0;
--- NEW FILE: pure-data-8.pd ---
#N canvas 238 94 891 621 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 577 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 579 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 482 332 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: send receive netsend netreceive cordless communication
network TCP/IP UDP internet;
#X restore 16 583 pd META;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 12 20 DESCRIPTION: nested patches using abstractions & subpatches
;
#X text 13 46 What is an abstraction?;
#X text 23 76 Since objects are very simple in Pure-Data doing complex
tasks often leads to very complex patches. Often it is useful to use
the same bit of patching you do for one project for another. Pure-Data
has a facility to "nest" \, that is to take a number of objects in
a collection and place them into a group that looks like a single object.
This is also handy to make a complex patch look simple and clear by
hiding the nitty-gritty details. There are two types of these collections
\, the subpatch and the abstraction.;
#X obj 8 216 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 216 The subpatch;
#X text 23 246 Subpatches are collections of objects that get "hidden"
inside a container that looks like a normal PD object. Subpatches are
created by creating an object box \, and typing the word "pd" followed
by whatever you want to describe the contents of the subpatch. Subpatches
are saved at the same time as the "parent" patch. Here is a subpatch:
;
#N canvas 0 22 460 310 subpatch 0;
#X obj 30 34 inlet;
#X obj 30 77 outlet;
#X text 99 35 This is inside the subpatch.;
#X connect 0 0 1 0;
#X restore 178 359 pd subpatch;
#X floatatom 178 336 5 0 0 0 - - -;
#X floatatom 178 387 5 0 0 0 - - -;
#X text 23 416 To open a subpatch simply click once on the subpatch
in run-mode or control-click (or right-click) and select open in edit-mode.
Both subpatches and abstractions communicate with the parent patch
through special objects called "inlet" and "outlet" for each "inlet"
in a subpatch or abstraction an inlet is created on the subpatch. This
example has one inlet and one outlet.;
#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 46 The abstraction;
#X text 463 76 Abstractions are very similar to subpatches. They are
collections of objects that are "hidden" inside PD objects \, and they
both use "inlet" and "outlet" objects to communicate with the parent
patch. The difference between subpatches and abstractions is that abstractions
are saved in a separate file from the parent. This means when you save
the parent patch containing abstractions the abstractions are not saved.
The abstractions are saved as separate files so that they can be used
in multiple patches. A second feature that exists in abstractions and
not in subpatches is the ability to use arguments. "send" and "receive"
can be used inside abstractions to send data without connections (patch-cords).
;
#X obj 682 253 r output;
#X obj 682 277 print;
#X obj 564 253 abstraction 1 2;
#X text 463 316 To create an abstraction all you need to do is create
a new PD patch ("File" -> "New"). Create the contents of the abstraction
and then save it in the same directory as the patch you want to use
it in. In this case the abstraction is saved as "abstraction.pd". Once
saved you can easily embed the abstraction simply by typing its name
\, without the .pd extension \, into an object box.;
#X obj 448 416 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 416 Dollarsign in object boxes;
#X text 463 446 If you open the above example you will see that the
familiar "pack" object has a number of "$" arguments. The "$" arguments
in a object box differ entirely from the "$" used in message objects.
When you use a "$" in an object box inside an abstraction the values
get replaced with the arguments to that abstraction. In the case above
the "pack" object's first argument "$1" gets replaced with the first
argument of the abstraction "1" "$2" gets replaced with the second
argument "2".;
#X text 23 536 For more info see: 12.PART2.subpatch.pd 14.dollersign.pd
;
#X text 12 8 8 Intermediate Pure-Data - Using abstractions and subpacthes
;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 18 0 19 0;
--- NEW FILE: pure-data-7.pd ---
#N canvas 280 89 936 678 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 627 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 629 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 482 332 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: send receive netsend netreceive cordless communication
network TCP/IP UDP internet;
#X restore 16 633 pd META;
#X obj 8 266 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 266 "pack" object;
#X msg 96 543 2;
#X msg 45 521 1;
#X obj 45 588 print mylist;
#X text 12 20 DESCRIPTION: Using pack \, unpack and route with lists
;
#X text 19 75 In the Pure-Data introduction we discussed the three
different types of data in PD. These are floats (numbers) \, symbols
(words) and lists (groups of floats and words). Floats and symbols
are known as atoms. Atoms are single elements \, they do not contain
spaces or other special characters. Atoms can be grouped into lists.
;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 46 What is a list?;
#X msg 145 216 list one two three;
#X obj 145 239 print this is a list;
#X text 19 155 Lists can be created in a number of ways \, but we are
going to cover the two most common ways of creating lists. The most
simple way to create a list is to type the list into a message box
starting with the word (symbol) "list":;
#X text 19 295 The "pack" object is the second most common way to create
a list. "pack" allows you to take individual atoms and combine them
into a single list. "pack" accepts a number of arguments. Each argument
defines the type of atom in the resulting list. The "f" argument creates
an inlet that accepts float atoms. The "s" argument creates an inlet
accepts symbol atoms. The number of arguments is the same as the number
of elements in the resultant list.;
#X text 19 405 "pack" is the first object we are going to learn that
has a "cold" inlet. Some control objects in PD have "hot" and "cold"
inlets. When you send a message to a "cold" inlet the object does not
generate any output (it does not send any messages). When "hot" inlets
get messages then the object does generate output. The leftmost inlet
is always the "hot" inlet and all other inlets are "cold" or in some
cases all inlets are "hot";
#X text 75 521 sets the first atom "1" and then sends the list;
#X text 132 543 sets the second atom "2";
#X obj 45 566 pack f f;
#X text 459 45 Note that if you do not set the second and onwards atoms
via thier "cold" inlets and you generate the list by setting the first
atom via the "hot" inlet then all float atoms will be set to "0" and
all symbol atoms will be set to "symbol" in the resultant list.;
#X obj 448 126 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 126 "unpack" object;
#X obj 596 241 unpack f f f;
#X msg 596 219 list 1 2 3;
#X floatatom 596 294 5 0 0 0 - - -;
#X floatatom 635 277 5 0 0 0 - - -;
#X floatatom 675 262 5 0 0 0 - - -;
#X text 639 293 First Atom;
#X text 678 277 Second Atom;
#X text 718 261 Third Atom;
#X text 459 156 The "unpack" object is very similar to the "pack" object
except it works in reverse. "unpack" takes a list and splits it up
into a number of atoms. It uses the same arguments as "pack" but generates
outlets rather than inlets.;
#X obj 448 319 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 319 "route" object;
#X text 459 349 The "route" object sorts lists based on the first atom
of the list. It as a number of float or symbol arguments. For each
argument "route" creates one outlet. "route" also creates one additional
rightmost outlet for rejections. For each list route gets it compares
the first atom to all its arguments. If the first atom matches one
of the arguments it the rest of the list \, without the first atom
\, gets send through the outlet corresponding to that argument. If
the first atom of the list does not match any arguments the entire
list \, including the first atom \, gets sent out the rejection outlet.
;
#X msg 688 493 rejection 1;
#X obj 685 553 print rejection;
#X msg 538 493 o1 2;
#X msg 613 493 o2 3;
#X obj 613 531 route o1 o2;
#X obj 613 593 print o1;
#X obj 649 573 print o2;
#X text 12 8 7 Intermediate Pure-Data - Working with lists;
#X connect 6 0 20 1;
#X connect 7 0 20 0;
#X connect 13 0 14 0;
#X connect 20 0 8 0;
#X connect 24 0 26 0;
#X connect 24 1 27 0;
#X connect 24 2 28 0;
#X connect 25 0 24 0;
#X connect 36 0 40 0;
#X connect 38 0 40 0;
#X connect 39 0 40 0;
#X connect 40 0 41 0;
#X connect 40 1 42 0;
#X connect 40 2 37 0;
--- NEW FILE: gf_2-2-4-greyscale_dec_2005.pd ---
#N canvas 183 58 542 460 10;
#X obj 21 207 #rgb_to_greyscale;
#X obj 7 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 7 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 320 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 16 327 GridFlow 0.8.0;
#X obj 21 178 #in;
#X text 21 -67 2.4 Image manipulation;
#X text 48 -37 2.4.2 Greyscale;
#N canvas 0 0 450 300 META 0;
#X restore 147 327 pd META;
#X text 149 242 This patch and other image modifications can be can
be found in the gridflow help files.;
#X text 159 102 insert your own images to convert it to greyscale.
click on the message to load image.;
#X text 19 4 To convert an image to greyscale use [#rgb_to_greyscale].
It transforms colour information into a black to white gradient.;
#X obj 33 157 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 21 135 open bluemarble.jpg;
#X obj 21 282 #out window;
#X connect 5 0 0 0;
#X connect 12 0 5 0;
#X connect 13 0 5 0;
--- NEW FILE: probably_not_good_2-3-0-1-image-modification-1-numop-all-in-one.pd ---
#N canvas 0 0 977 630 10;
#X obj 17 -114 #out window;
#X obj 43 -174 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 17 -143 #in;
#X msg 17 -205 open b001.jpg;
#X obj 507 -245 cnv 15 185 150 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 529 -205 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 515 -166 #in;
#X msg 515 -238 open b001.jpg;
#X obj 555 -167 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X obj 515 -110 s slider;
#X obj 515 -138 # + 1;
#X text 11 -499 Numeric Operators (numop): transform an image or video
by applying a mathematical operation to each pixel value in the grid.
;
#X text 12 -445 To transform a grid (in this case an image) using numop
\, it must first be given an argument (a number value) in order to
affect a pixel value. The examples here show you the three methods
that can be used to give the numop an argument.;
#X obj 3 -643 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 3 -678 cnv 15 970 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 10 -618 GridFlow performs high level grid processing \; in
other words its main function is the manipulation of images and video.
There are several ways to madify images in GridFlow \, some are very
basic while others are more advanced (and are saved for the intermediate
tutorials.) In this section we will introduce some very basic functions
of the numeric operator \, one of the most common methods used for
image transformation.;
#X obj 155 -220 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 220 -181 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 174 -152 #in;
#X msg 174 -213 open b001.jpg;
#X obj 199 -124 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 174 -124 # + 109;
#X obj 174 -95 s argument;
#X text 235 -125 <--- argument in this case is 109;
#X obj 13 -273 + 1;
#X floatatom 13 -297 5 0 0 0 - - -;
#X floatatom 13 -249 5 0 0 0 - - -;
#X text 54 -282 this is a basic numop. GridFlow has its own set of
numops that are applied to grids \, 3 dimensions \, on each channel.
;
#X obj 14 -357 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 11 -672 2.4 Image manipulation;
#X text 11 -644 2.4.3 Numop;
#X obj 500 -559 cnv 15 130 150 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj 550 -523 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1
-1;
#X obj 515 -484 #in;
#X msg 515 -553 open b001.jpg;
#X obj 515 -434 # +;
#X obj 515 -404 s message;
#X obj 562 -461 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 562 -483 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X obj 563 -439 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577
0;
#X msg 562 -461 67;
#X msg 562 -483 2;
#X msg 563 -439 199;
#X text 596 -461 <--- messages used as arguments;
#X text 596 -486 <---;
#X text 596 -438 <---;
#X obj 764 -116 r argument;
#X obj 891 -91 #out window;
#X obj 842 -115 r message;
#X obj 911 -115 r slider;
#X obj 3 -67 cnv 15 970 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 14 -57 GridFlow 0.8.0;
#N canvas 0 0 450 300 META 0;
#X restore 919 -60 pd META;
#X text 13 -357 Example #1;
#X text 12 -338 Shows you how to put an argument directly into the
numeric operator object.;
#X obj 507 -320 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X obj 497 -629 cnv 15 70 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 496 -628 Example #2;
#X text 506 -320 Example #3;
#X text 497 -608 Demonstrates how to send the numop an argument using
a message box. This method allows you to send the numop several different
arguments.;
#X text 507 -299 Introduces the use of the slider as a method to give
the numop an argument. The slider allows you to easily scroll through
a series of values.;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 3 0 2 0;
#X connect 5 0 6 0;
#X connect 6 0 10 0;
#X connect 7 0 6 0;
#X connect 8 0 10 1;
#X connect 10 0 9 0;
#X connect 17 0 18 0;
#X connect 18 0 21 0;
#X connect 19 0 18 0;
#X connect 21 0 22 0;
#X connect 24 0 26 0;
#X connect 25 0 24 0;
#X connect 32 0 33 0;
#X connect 33 0 35 0;
#X connect 34 0 33 0;
#X connect 35 0 36 0;
#X connect 40 0 35 1;
#X connect 41 0 35 1;
#X connect 42 0 35 1;
#X connect 46 0 47 0;
#X connect 48 0 47 0;
#X connect 49 0 47 0;
--- NEW FILE: 2-3-6-image-modification-2-cross-fade.pd ---
#N canvas 92 129 774 521 10;
#X text 24 355 note: the #layer/#join objects can make the crossfade
process simpler but it's still not faster.;
#X obj 14 95 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1;
#X obj 14 120 metro 33.3667;
#X obj 14 140 float;
#X obj 26 169 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
-262144 -1 -1 0 256;
#X obj 58 139 + 4;
#X obj 14 190 pingpong 256;
#X obj 25 212 hsl 129 15 0 256 0 0 empty empty empty -2 -6 0 8 -260818
-1 -1 0 1;
#X text 25 393 also #draw_image/#join is a possibility;
#X obj 13 40 cnv 15 680 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 27 53 Copyright 2002 Mathieu Bouchard;
#X text 27 37 cross_fade.pd;
#X obj 6 324 cnv 15 680 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 18 326 GridFlow 0.8.0;
#N canvas 515 126 450 300 cross_fade 0;
#X obj 40 198 # *>>8;
#X text 67 242 first picture plus a fraction of the difference;
#X obj 40 240 # +;
#X obj 40 177 #store;
#X obj 264 137 # inv+;
#X obj 95 261 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1
;
#X msg 422 195 open r001.jpg \, cast int16 \, bang;
#X obj 321 156 #in;
#X obj 40 156 #finished;
#X text 116 264 click to clip out-of-range colours;
#X text 89 197 multiply by a N/256 fraction;
#X obj 88 302 # max 0;
#X obj 254 89 #in;
#X obj 88 281 # min 255;
#X obj 44 337 #out window;
#X obj 40 116 #cast int16;
#X text 88 177 keep the difference between both pictures;
#X obj 447 99 t b b;
#X obj 445 74 loadbang;
#X obj 40 260 shunt 2;
#X obj 40 135 t a a;
#X msg 459 137 open g001.jpg \, cast int16 \, bang;
#X obj 30 75 inlet;
#X connect 0 0 2 0;
#X connect 2 0 19 0;
#X connect 3 0 0 0;
#X connect 4 0 3 1;
#X connect 5 0 19 1;
#X connect 6 0 7 0;
#X connect 7 0 4 1;
#X connect 8 0 3 0;
#X connect 11 0 14 0;
#X connect 12 0 4 0;
#X connect 12 0 2 1;
#X connect 13 0 11 0;
#X connect 15 0 20 0;
#X connect 17 0 21 0;
#X connect 17 1 6 0;
#X connect 18 0 17 0;
#X connect 19 0 14 0;
#X connect 19 1 13 0;
#X connect 20 0 8 0;
#X connect 20 1 0 1;
#X connect 21 0 12 0;
#X connect 22 0 15 0;
#X restore 13 261 pd cross_fade;
#X obj 15 11 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 18 11 What is a grid?;
#X obj 15 -24 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 20 -25 2 Images;
#X text 22 -11 Description: opening multiple images from one window.
;
#X obj 11 416 cnv 15 430 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text 19 423 GridFlow 0.8.0;
#X text 219 118 some objects have been created to perform specoific
tasks. One of these is the crossfade patch it permits you to fade from
one image to another. you can chose the images you want to ping pong
between \, to get a nice steady fade between two images.;
#N canvas 0 0 450 300 META 0;
#X restore 146 428 pd META;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 5 0;
#X connect 3 0 6 0;
#X connect 5 0 3 1;
#X connect 6 0 7 0;
#X connect 6 0 14 0;
--- NEW FILE: pure-data-6.pd ---
#N canvas 304 98 891 675 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 627 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 629 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 486 336 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: message comma semicolon dollersign receive
list;
#X restore 16 633 pd META;
#X text 12 20 DESCRIPTION: Advanced uses for the message object;
#X text 19 45 In Pure-Data there are two distinct concepts with the
name "message". Messages are the data that gets send in PD from object
to object. There is also the Messsage object that contains a message
you want to send. The message object is the first GUI object we covered
in this tutorial. The message is not the only way to send messages
in a patch \, since all GUI objects also send messages. So what makes
the message object different? The message object can sent messages
of any type \, where a number for example can only send float (number)
messages. There are a number of powerful features in the message object.
We are familar with the "usual" way of using the message object:;
#X msg 163 208 hello;
#X msg 212 208 bye;
#X obj 196 238 print messages;
#X text 459 556 Note: It is a very common mistake to confuse the message
object with an object box. The object box is framed in a rectangle.
The message object has a notch removed from the right edge.;
#X obj 106 385 print messages;
#X msg 106 358 hello \, bye;
#X text 19 305 You can send multiple messages in succession from a
single message box by using a comma " \, " between the messages. The
messages get send from left to right.;
#X obj 8 276 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 8 416 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 416 Semicolon in message boxes;
#X text 13 276 Comma in message boxes;
#X text 19 445 Just like you can specify receive tags directly in GUI
objects you can also use a message box to send a message directly to
a particular "receive".;
#X obj 34 536 r myreceive;
#X floatatom 34 560 5 0 0 0 - - -;
#X text 189 360 Click to send both messages;
#X text 136 502 send "10" to receive tag "myreceive";
#X text 19 585 For more info see: message-help.pd 04.messages.pd 10.more.messages.pd
;
#X msg 34 498 \; myreceive 10;
#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 46 Dollarsign in message boxes;
#X msg 534 175 \$1 \$1 \$1;
#X msg 534 154 10;
#X text 459 75 In messages there are placeholders that start with "$".
These placeholders are variables that get replaced with messages you
send to the message box. In the example below we have a single message
"10". Each "$1" in the message box gets replaced with the message "10".
;
#X text 601 175 \$1 placeholder gets replaced;
#X text 570 154 message sent to message box;
#X msg 534 304 list 1 2;
#X text 600 304 a list with items "1" and "2";
#X msg 534 325 \$2 \$1;
#X text 584 325 \$1 becomes "1" and \$2 becomes "2";
#X obj 534 347 print reverse-list;
#X text 459 235 The "$1" placeholder refers to the first element of
the list the message box gets from its inlet. We can use this to use
a message box to reverse the order of elements (called atoms) in a
list.;
#X text 459 385 In this case the list "1 2" has two elements (called
atoms) when this list gets sent to the inlet of a message box its atoms
are available to the message box through the $ variables. \$1 gets
replaced with the first element \, \$2 the second and so on.;
#X obj 534 197 print repeated-message;
#X obj 480 511 print complex-message;
#X msg 480 468 list Fred Marcus;
#X text 607 468 a list with two symbol atoms;
#X msg 480 489 Hi \$1. \, Ya know \$2?;
#X text 623 489 Becomes: "Hi Fred \, Ya know Marcus?";
#X text 12 8 6 Intermediate Pure-Data - Using the message object;
#X connect 6 0 8 0;
#X connect 7 0 8 0;
#X connect 11 0 10 0;
#X connect 18 0 19 0;
#X connect 26 0 38 0;
#X connect 27 0 26 0;
#X connect 31 0 33 0;
#X connect 33 0 35 0;
#X connect 40 0 42 0;
#X connect 42 0 39 0;
--- NEW FILE: 2-3-4-image-modification-2-remap-image.pd ---
#N canvas 41 17 876 618 10;
#X obj 10 519 cnv 15 720 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X msg 53 173 open b001.jpg;
#X obj 23 116 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 23 204 #in;
#X obj 23 142 t b b;
#X obj 23 351 #out window;
#X obj 102 323 #print;
#X obj 184 160 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 203 225 5 0 0 0 - - -;
#X obj 173 184 #for (0 0) (240 320) (1 1);
#X obj 173 134 metro 100;
#X obj 173 109 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 23 292 #remap_image;
#X text 18 526 GridFlow 0.8.0;
#X text 243 224 <-- Modify the value to see transformations.;
#X obj 173 257 # / 1;
#X text 227 261 The remap object works with numops.;
#X obj 9 -17 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 9 -52 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 15 -17 2.4 Image Manipulation;
#X text 16 -46 2 Introduction to Images;
#X text 15 2 2.4.4 Remap Image;
#X text 26 408 Remap image permits you to modify an image using numeric
operators. Different numeric Operators have different effects ton the
image and can be changed to give the desired effect. The multiplication
operator multiplies the values and distorts the image. The division
operator does the same but shrinks the operator...;
#X text 467 24 Have the list of operators and what they do in order
to know the various effects.;
#X text 468 77 example:;
#X obj 474 121 # / 2;
#X text 523 114 multiplication multiplies the numbers in the grid and
distorts the image.;
#N canvas 0 0 450 300 META 0;
#X restore 130 527 pd META;
#X connect 1 0 3 0;
#X connect 2 0 4 0;
#X connect 3 0 12 0;
#X connect 4 0 3 0;
#X connect 4 1 1 0;
#X connect 7 0 9 0;
#X connect 8 0 15 1;
#X connect 9 0 15 0;
#X connect 10 0 9 0;
#X connect 11 0 10 0;
#X connect 12 0 5 0;
#X connect 12 1 6 0;
#X connect 15 0 12 1;
--- NEW FILE: title-page-pd-gf-in-one.pd ---
#N canvas 18 0 762 514 10;
#X obj 102 -15 cnv 15 430 50 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 102 66 cnv 1 430 430 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 102 98 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 102 73 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 108 66 cnv 1 2 430 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 516 67 cnv 1 2 430 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 102 158 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 102 182 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 152 114 1.1 What is a grid?;
#X obj 142 456 cnv 15 300 30 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 154 461 Stephanie Brodeur & Darsha Hewitt 2005;
#X obj 102 36 cnv 15 430 30 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 214 -6 cnv 15 100 17 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 214 -6 GridFlow 0.8.0;
#X obj 102 -15 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X obj 102 34 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X obj 315 8 cnv 15 63 17 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 314 8 Tutorials;
#X obj 102 65 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X obj 102 495 cnv 1 430 1 empty empty empty 20 12 0 14 -66577 -66577
0;
#X text 140 79 1;
#X obj 158 78 Introduction to Grids;
#X text 152 130 1.2 How to create grid.;
#X text 152 192 2.1 How does GridFlow understand images?;
#X text 141 164 2;
#X obj 162 161 Introduction to Images;
#X text 152 211 2.2 Opening an image.;
#X text 152 230 2.3 Different options on how to open an image.;
#X text 178 247 2.3.1 Opening different images in one window.;
#X text 178 264 2.3.2 Opening images using send and receive.;
#X obj 102 356 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 102 380 cnv 1 430 2 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text 141 362 3;
#X obj 162 359 Introduction to Video;
#X text 178 300 2.4.1 Resizing an image.;
#X text 151 284 2.4 Image manipulation.;
#X text 178 315 2.4.2 Greyscale.;
#X text 178 330 2.4.3 numop.;
#X text 149 394 4 Introduction to live feed;
#X text 150 422 5 Putting it all together;
#X obj -401 -18 cnv 15 455 30 empty empty empty 20 12 0 14 -233017
-66577 0;
#X obj -398 898 cnv 15 870 30 empty empty empty 20 12 0 14 -233017
-66577 0;
#X text -393 898 Copyright Ben Bogart 2005 \; (See COPYING.TXT for
details);
#X text -397 -11 Welcome to Pure-Data...;
#X obj -401 22 cnv 15 455 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text -396 22 What is Pure-Data (aka PD)?;
#X text -381 50 Pure-Data is an open-source patching environment for
multi-media (audio+image). Pure-Data is a programming language where
you create relationships by connecting visual boxes (rather than typing
complex commands). This lecture is separated into three sections: An
Introduction to Pure-Data \, An introduction to Gem and intermediate
PD and Gem.;
#X obj -381 152 cnv 15 430 120 empty empty empty 20 12 0 14 -179884
-66577 0;
#X obj -367 174 pddp_open pure-data-1;
#X obj -367 197 pddp_open pure-data-2;
#X obj -367 220 pddp_open pure-data-3;
#X obj -367 243 pddp_open pure-data-4;
#X text -192 174 Pure-Data Introduction;
#X text -192 197 GUI Objects for Interaction;
#X text -192 220 Creating your first patch;
#X text -192 243 Control: metro \, random & counter;
#X obj -382 376 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
-66577 0;
#X obj -378 580 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
-66577 0;
#X obj -364 602 pddp_open pure-data-5;
#X obj -364 625 pddp_open pure-data-6;
#X text -189 625 The powerful message object;
#X obj -364 648 pddp_open pure-data-7;
#X text -189 648 More about lists;
#X text -189 671 Nesting collections of objects;
#X text -189 602 Connectionless communications;
#X obj -364 671 pddp_open pure-data-8;
#X text -189 695 Using GUI's in abstractions;
#X obj -364 695 pddp_open pure-data-9;
#X obj -378 787 cnv 15 430 95 empty empty empty 20 12 0 14 -179884
-66577 0;
#X text -194 422 Introduction to Images;
#X text -194 468 Introduction to Live Feeds;
#X obj -401 308 cnv 15 455 15 empty empty empty 20 12 0 14 -179884
-66577 0;
#X text -189 837 Putting it all together;
#X text -190 808 Interfacing with sensors;
#X text -194 399 Introduction to Grids;
#X text -384 331 GridFlow is a multidimentional dataflow processing
library for PureData and Ruby \, designed for interactive multimedia.
;
#X text -377 376 2 Introduction to GridFlow;
#X text -376 152 1 Introduction to Pure-Data;
#X text -373 580 3 Intermediate Pure-Data;
#X text -373 787 4 Intermediate GridFlow;
#X obj -401 542 cnv 15 455 15 empty empty empty 20 12 0 14 -179884
-66577 0;
#X text -396 542 What is GridFLow?;
#X obj -400 751 cnv 15 455 15 empty empty empty 20 12 0 14 -179884
-66577 0;
#X text -395 751 What is GridFLow?;
#X obj -283 400 GridFlow-1;
#X obj -283 423 GridFlow-2;
#X obj -283 446 GridFlow-3;
#X obj -283 469 GridFlow-4;
#X obj -281 809 GridFlow-6;
#X obj -281 832 GridFlow-7;
#X text -395 308 What is GridFlow?;
#X text -194 445 Introduction to Video;
--- NEW FILE: PD-GF-Lecture.pd ---
#N canvas 23 16 880 578 10;
#X obj 5 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 5 550 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 666 549 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#X text 9 13 Welcome to Pure-Data...;
#X obj 6 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 11 46 What is Pure-Data (aka PD)?;
#X obj 4 233 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 25 271 pddp_open pure-data-1;
#X obj 25 294 pddp_open pure-data-2;
#X obj 25 317 pddp_open pure-data-3;
#X obj 25 340 pddp_open pure-data-4;
#X text 200 271 Pure-Data Introduction;
#X text 200 294 GUI Objects for Interaction;
#X text 200 317 Creating your first patch;
#X text 200 340 Control: metro \, random & counter;
#X obj 444 233 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
-66577 0;
#X obj 5 391 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 25 416 pddp_open pure-data-5;
#X obj 25 439 pddp_open pure-data-6;
#X text 200 439 The powerful message object;
#X obj 25 462 pddp_open pure-data-7;
#X text 200 462 More about lists;
#X text 200 485 Nesting collections of objects;
#X text 200 416 Connectionless communications;
#X obj 25 485 pddp_open pure-data-8;
#X text 200 509 Using GUI's in abstractions;
#X obj 25 509 pddp_open pure-data-9;
#X obj 445 391 cnv 15 430 145 empty empty empty 20 12 0 14 -179884
-66577 0;
#X text 642 296 Introduction to Images;
#X obj 468 271 pddp_open GridFlow-1;
#X obj 468 294 pddp_open GridFlow-2;
#X obj 468 317 pddp_open GridFlow-3;
#X obj 468 340 pddp_open GridFlow-4;
#X text 642 319 Introduction to video;
#X text 642 342 Introduction to Live Feeds;
#X obj 446 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 451 46 What is GridFLow?;
#X text 642 457 Putting it all together;
#X text 641 428 Interfacing with sensors;
#X text 642 273 Introduction to Grids;
#X obj 467 429 pddp_open GridFlow-6;
#X obj 467 452 pddp_open GridFlow-7;
#X text 451 236 2 Introduction to GridFlow;
#X text 454 144 This section deals with the particular objects related
to GridFlow. GridFlow uses the usual PD "control" objects \, as well
as a set of GridFlow specific objects. Before we get into the tutorials
we will explain the grid "#" \, the most important concept in GridFlow.
;
#X text 453 84 GridFlow is a plug-in for PureData that introduces the
frid (#) data type into the PD environment. GridFlow allows you to
work with live video \, still images and video files in a real-time
environment.;
#X text 14 85 Pure-Data is an open-source patching environment for
multi-media (audio+image). Pure-Data is a programming language where
you create relationships by connecting visual boxes (rather than typing
complex commands). This lecture is separated into three sections: An
Introduction to Pure-Data \, An introduction to GridFlow and intermediate
PD and GridFlow.;
#X obj 448 236 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
0;
#X text 451 236 2 Introduction to GridFlow;
#X obj 8 395 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
0;
#X obj 449 395 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
0;
#X obj 7 236 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
0;
#X text 452 395 4 Intermediate GridFlow;
#X text 10 236 1 Introduction to Pure-Data;
#X text 11 395 3 Intermediate Pure-Data;
--- NEW FILE: PD-Lecture.pd ---
#N canvas 116 102 890 501 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 457 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 459 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#X text 12 13 Welcome to Pure-Data...;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 46 What is Pure-Data (aka PD)?;
#X text 28 74 Pure-Data is an open-source patching environment for
multi-media (audio+image). Pure-Data is a programming language where
you create relationships by connecting visual boxes (rather than typing
complex commands). This lecture is separated into three sections: An
Introduction to Pure-Data \, An introduction to Gem and intermediate
PD and Gem.;
#X obj 8 176 cnv 15 430 120 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 22 198 pddp_open pure-data-1;
#X obj 22 221 pddp_open pure-data-2;
#X obj 22 244 pddp_open pure-data-3;
#X obj 22 267 pddp_open pure-data-4;
#X text 197 198 Pure-Data Introduction;
#X text 197 221 GUI Objects for Interaction;
#X text 197 244 Creating your first patch;
#X text 197 267 Control: metro \, random & counter;
#X obj 8 306 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 13 176 Introduction to Pure-Data;
#X text 13 306 Introduction to Gem (Graphics Environment for Multimedia)
;
#X obj 22 328 pddp_open gem-1;
#X obj 22 351 pddp_open gem-2;
#X obj 22 374 pddp_open gem-3;
#X obj 22 397 pddp_open gem-4;
#X obj 22 421 pddp_open gem-5;
#X text 197 328 Gem Introduction;
#X text 197 351 What are gemchains?;
#X text 197 374 translate \, rotate and scale;
#X text 197 397 Texturing using pix objects;
#X text 197 421 Video & Free Exploration;
#X obj 448 46 cnv 15 430 145 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 453 46 Intermediate Pure-Data;
#X obj 462 68 pddp_open pure-data-5;
#X obj 462 91 pddp_open pure-data-6;
#X text 637 91 The powerful message object;
#X obj 462 114 pddp_open pure-data-7;
#X text 637 114 More about lists;
#X text 637 137 Nesting collections of objects;
#X text 637 68 Connectionless communications;
#X obj 462 137 pddp_open pure-data-8;
#X text 637 161 Using GUI's in abstractions;
#X obj 462 161 pddp_open pure-data-9;
#X obj 448 200 cnv 15 430 95 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 637 222 Grouping Gem entities;
#X text 637 245 Gem render order;
#X text 453 200 Intermediate Gem;
#X obj 462 222 pddp_open gem-6;
#X obj 462 245 pddp_open gem-7;
#X obj 462 268 pddp_open gem-8;
#X text 637 268 Video Tracking & Pixel Operations;
--- NEW FILE: 2-3-5-image-modification-2-convolve.pd ---
#N canvas 47 0 787 658 10;
#X msg 468 148 3 3 # 0 4 0 4 9 -4 0 -4 0;
#X msg 467 100 3 3 # 4 0 0 0 1 0 0 0 4;
#X obj 80 219 #store;
#X obj 80 270 # / 9;
#X msg 467 75 3 3 # 1 1 1 1 1 1 1 1 1;
#X obj -13 201 #out window;
#X msg 470 263 1 3 # 0 9 -9;
#X obj -21 117 #in;
#X msg 468 124 3 3 # 2 2 2 2 -7 2 2 2 2;
#X obj 80 145 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
;
#X obj 70 325 @! abs;
#X obj -21 77 loadbang;
#X obj 80 182 metro 33.3667;
#X obj -21 139 t a;
#X obj 80 244 #convolve \, seed 4;
#X obj 401 78 loadbang;
#X obj 80 299 shunt 2;
#X obj 124 270 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0
1;
#X msg 170 280 0;
#X obj 124 351 # + 128;
#X msg 170 304 1;
#X obj 469 174 display;
#X obj -13 225 fps;
#X obj -13 250 print;
#X obj -50 466 cnv 15 780 30 empty empty empty 20 12 0 14 -200249 -66577
0;
#X text -42 473 GridFlow 0.8.0;
#X text -42 473 GridFlow 0.8.0;
#X msg 470 242 1 3 # 0 2 -2;
#X msg 470 325 3 3 # 0 -1 0 -1 4 -1 0 -1 0;
#X msg 470 348 3 3 # -1 -1 -1 -1 8 -1 -1 -1 -1;
#X msg 470 416 3 3 # 0 -1 0 -1 13 -1 0 -1 0;
#X obj 124 325 # << 4;
#X msg -21 97 open babbage.jpg \, bang;
#X obj -49 -111 cnv 15 780 15 empty empty empty 20 12 0 14 -228992
-66577 0;
#X obj -49 -146 cnv 15 780 30 empty empty empty 20 12 0 14 -233017
-66577 0;
#X obj 470 218 cnv 15 100 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X obj 468 52 cnv 15 37 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 470 218 Edge detection;
#X obj 470 303 cnv 15 110 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 472 303 Laplacian masks;
#X obj 470 393 cnv 15 50 15 empty empty empty 20 12 0 14 -260818 -66577
0;
#X text 470 393 Sharpen;
#X obj -21 383 #clip;
#X obj 190 118 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X obj 210 97 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X text 146 97 <-- step #1: load image;
#X obj 173 141 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577
0;
#X text 109 141 <-- step #3: start metro;
#X text 154 118 step #2: select transformation -->;
#X text 468 52 Blurs;
#N canvas 0 0 450 300 META 0;
#X restore 69 473 pd META;
#X text -44 -140 2 Introduction to Images;
#X text -44 -112 2.4 Image Manipulation;
#X obj -49 24 cnv 15 780 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text -49 23 (Source convolve.pd : Copyright Mathieu Bouchard 2002)
;
#X text -16 -67 Convolve is an abstraction used for modifying an image.
In this patch you can choose to create a "blur" \, to view "edge detection"
\, to add a "laplacian mask" or to "sharpen" an image. The image must
be loaded \, the transformation selected and the metro started before
seeing the transformation applied to the image.;
#X obj -17 -89 cnv 15 100 15 empty empty empty 20 12 0 14 -228992 -66577
0;
#X text -17 -90 2.4.4 Convolve;
#X connect 0 0 18 0;
#X connect 0 0 14 1;
#X connect 0 0 21 0;
#X connect 1 0 18 0;
#X connect 1 0 14 1;
#X connect 2 0 14 0;
#X connect 3 0 16 0;
#X connect 4 0 18 0;
#X connect 4 0 14 1;
#X connect 5 0 22 0;
#X connect 6 0 14 1;
#X connect 6 0 20 0;
#X connect 7 0 13 0;
#X connect 8 0 18 0;
#X connect 8 0 14 1;
#X connect 9 0 12 0;
#X connect 10 0 42 0;
#X connect 11 0 32 0;
#X connect 12 0 2 0;
#X connect 13 0 2 1;
#X connect 13 0 5 0;
#X connect 14 0 3 0;
#X connect 15 0 4 0;
#X connect 16 0 10 0;
#X connect 16 1 31 0;
#X connect 17 0 16 1;
#X connect 18 0 17 0;
#X connect 19 0 42 0;
#X connect 20 0 17 0;
#X connect 22 0 23 0;
#X connect 27 0 18 0;
#X connect 27 0 14 1;
#X connect 28 0 14 1;
#X connect 28 0 20 0;
#X connect 29 0 20 0;
#X connect 29 0 14 1;
#X connect 30 0 18 0;
#X connect 30 0 14 1;
#X connect 31 0 19 0;
#X connect 32 0 7 0;
#X connect 42 0 13 0;
--- NEW FILE: 3-2-video-manipulation.pd ---
#N canvas 0 0 450 300 10;
--- NEW FILE: pure-data-5.pd ---
#N canvas -235 0 891 673 10;
#X obj 8 6 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 8 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X obj 8 627 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 668 629 Copyright Ben Bogart 2005 \; (See COPYING.TXT for details)
;
#N canvas 0 22 482 332 META 0;
#X text 12 5 CATEGORY: tutorial;
#X text 12 15 KEYWORDS: send receive netsend netreceive cordless communication
network TCP/IP UDP internet;
#X restore 16 633 pd META;
#X obj 448 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577
0;
#X text 12 20 DESCRIPTION: Communicating between objects w/out connections
;
#X text 13 46 "send" & "receive";
#X obj 86 223 send invisible-link;
#X obj 86 248 receive invisible-link;
#X floatatom 86 273 5 0 0 0 - - -;
#X msg 86 198 10;
#X floatatom 266 273 5 0 0 0 - - -;
#X floatatom 266 203 5 0 0 0 - - -;
#X obj 266 223 s invisible-link2;
#X obj 266 248 r invisible-link2;
#X obj 102 483 r send-from-number;
#X floatatom 102 508 5 0 0 0 - - -;
#X floatatom 102 462 5 0 0 0 - - send-from-number;
#X floatatom 242 462 5 0 0 0 - - -;
#X obj 242 483 s send-to-number2;
#X floatatom 242 508 5 0 0 0 - send-to-number2 -;
#X text 19 385 Note: Many GUI objects have built-in send and receive
objects. The tag names are specified in the GUI properties. Remeber
to get the GUI properties Right-Click or Control-Click on the GUI object
and select "Properties".;
#X text 453 46 "netsend" & "netreceive";
#X text 19 575 For more info see: send-help.pd \, receive-help.pd \,
netsend-help.pd and netreceive-help.pd;
#X text 459 75 While "send" and "receive" allow you to send messages
without connecting objects with patch-cords "netsend" and "netreceive"
do the same but communicate between objects using TCP/IP the internet
protocol. This means that you can send messages from a patch running
on one machine to a second patch running on a second machine on the
same network \, or even over the internet.;
#X text 19 545 You can also send messages using UDP rather than TCP/IP.
See "more info" below for details.;
#X obj 589 292 netreceive 8001;
#X text 459 185 The first argument of "netreceive" is the port the
netrecive should listen on. "netsend" can connect to this port from
other machines. "netreceive" has two outlets. The first outlet sends
out the messages it receives over network \, and the second argument
send a "1" when netsend is connected and "0" when netsend disconnects.
;
#X obj 589 318 print;
#X obj 689 318 tgl 16 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X obj 503 563 netsend;
#X text 459 355 "netsend" is controlled using three messages: "connect"
\, "disconnect" and "send". "connect" has two arguments \, the host
or IP and the port number you wish to connect to. There needs to be
a "netreceive" listening on the port you connect to. "disconnect" drops
the current connection. "send" sends any arguments to the "netreceive"
over the network. The single outlet of "netsend" prints "1" when a
connection is made and "0" when the connection is lost.;
#X obj 503 586 tgl 16 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
1;
#X msg 503 486 connect localhost 8001;
#X msg 516 511 disconnect;
#X msg 525 537 send hello from the internet;
#X text 602 510 Close connection;
#X text 673 486 Connect to this machine;
#X text 733 536 Send message;
#X text 19 75 In some cases you will want to send messages without
connecting objects. You may be sending one message to many different
places that would make connections too laborious. "send" and "receive"
both have a single argument. This argument is the tag name for the
communication. "send" will always send any messages it gets in it inlet
to any number of "receive" objects in a patch with the same tag name.
"s" and "r" can be used in the place of "send" and "receive".;
#X obj 86 336 s broadcast;
#X floatatom 86 317 5 0 0 0 - - -;
#X obj 176 316 r broadcast;
#X floatatom 176 339 5 0 0 0 - - -;
#X obj 266 316 r broadcast;
#X floatatom 266 339 5 0 0 0 - - -;
#X text 12 8 5 Intermediate Pure-Data - send and receive;
#X msg 585 598 send \$1;
#X floatatom 584 567 5 0 0 0 - - -;
#X text 651 596 send variables to another computer;
#X connect 9 0 10 0;
#X connect 11 0 8 0;
#X connect 13 0 14 0;
#X connect 15 0 12 0;
#X connect 16 0 17 0;
#X connect 19 0 20 0;
#X connect 27 0 29 0;
#X connect 27 1 30 0;
#X connect 31 0 33 0;
#X connect 34 0 31 0;
#X connect 35 0 31 0;
#X connect 36 0 31 0;
#X connect 42 0 41 0;
#X connect 43 0 44 0;
#X connect 45 0 46 0;
#X connect 48 0 31 0;
#X connect 49 0 48 0;