diff options
author | N.N. <matju@users.sourceforge.net> | 2009-11-06 18:37:00 +0000 |
---|---|---|
committer | N.N. <matju@users.sourceforge.net> | 2009-11-06 18:37:00 +0000 |
commit | 5a6bee4fe076e06514c6e4e538590dd3a2a5cdc3 (patch) | |
tree | ecf543b363457a0c861bfb187080a45fdeffc349 /externals/gridflow/doc | |
parent | 5e6bb4f4786dd39158ffe02913590cc3dea21ebd (diff) |
upgrade gridflow
svn path=/trunk/; revision=12728
Diffstat (limited to 'externals/gridflow/doc')
201 files changed, 11298 insertions, 0 deletions
diff --git a/externals/gridflow/doc/Makefile b/externals/gridflow/doc/Makefile new file mode 100644 index 00000000..865d34e7 --- /dev/null +++ b/externals/gridflow/doc/Makefile @@ -0,0 +1,7 @@ +all:: index.pd numop.pd numtype.pd + +index.pd: make_index.tcl locale/english.tcl + tclsh make_index.tcl > index.pd + +numop.pd numtype.pd: moulinette.tcl + tclsh moulinette.tcl diff --git a/externals/gridflow/doc/about.pd b/externals/gridflow/doc/about.pd new file mode 100644 index 00000000..6ebb5ad4 --- /dev/null +++ b/externals/gridflow/doc/about.pd @@ -0,0 +1,31 @@ +#N canvas 0 0 627 494 10; +#X obj 0 453 doc_f; +#N canvas 0 0 743 313 (subpatch) 0; +#X obj 3 3 cnv 15 608 18 empty \$0-rect empty 2 9 1 13 -1 -262144 0 +; +#X obj 511 3 cnv 15 100 18 empty \$0-rect2 GridFlow 1.0 2 9 1 12 +-1 -262144 0; +#X coords 0 -1 1 1 614 24 1 0 0; +#X restore 0 9 pd; +#X text 96 280 Development of GridFlow 0.3.0 - 0.5.0 was made possible +in part by a grant from the HRDC (DRHC) to Artengine.; +#X text 96 311 Development of... much of GridFlow 0.8.x and 0.9.0 was +made possible in part by a grant from the CSHRC.; +#X text 96 371 Development of GridFlow 0.9.0 was made possible in part +by Alexandre Castonguay's cooking.; +#X text 96 260 GridFlow is sponsored by Artengine.; +#X text 96 73 C++ Programming : Mathieu Bouchard; +#X text 96 100 Pd Programming (abstractions) : Mathieu Bouchard; +#X text 96 160 Pd Help Files (former ones) and Tutorials : Darsha Hewitt +\, Stephanie Brodeur \, Alexandre Castonguay; +#X text 96 130 Pd Help Files (current ones) : Mathieu Bouchard \, Patrick +Boivin; +#X text 19 47 Credits; +#X text 16 231 Sponsors; +#X text 96 195 OSX porting : Mathieu Bouchard \, James Tittle \, Adam +Lindsay \, Patrick Boivin \, and others.; +#X text 96 341 Development of [#from_pix] and [#to_pix] was sponsored +by Videographe PARC; +#X text 96 400 Development of GridFlow 0.9.3 and later has used Videographe +as a meeting place. Since 0.9.6 \, the room is called Departement de +Diagrammologie Algorithmique.; diff --git a/externals/gridflow/doc/find_missing.rb b/externals/gridflow/doc/find_missing.rb new file mode 100644 index 00000000..5ac44da0 --- /dev/null +++ b/externals/gridflow/doc/find_missing.rb @@ -0,0 +1,40 @@ +#!/usr/bin/env ruby + +a=[] +`grep -nriw install ../src/*.[ch]xx ../src/*.m`.each {|line| + m=/install\(\"([^"]+)/.match(line) + a<<m[1] if m +} + +b=Dir["../abstractions/*.pd"].map{|x| + x.gsub(/^\.\.\/abstractions\//,"").gsub(/\.pd$/,"") +} + +c = Dir["flow_classes/*-help.pd" ].map{|x| x.gsub(/^flow_classes\//,"").gsub(/-help\.pd$/,"") } +c.concat Dir["flow_classes/cv/*-help.pd"].map{|x| x.gsub(/^flow_classes\//,"").gsub(/-help\.pd$/,"") } +ab=a+b + +d=[] +File.open("index.pd") {|f| + f.each {|line| + m=/obj \d+ \d+ ([^ ;]+)/.match(line) + d<<m[1] if m + } +} + +puts "missing from help files: " +puts (ab-c).sort.join" " +puts (ab-c).size +puts "" + +puts "orphan help files:" +puts (c-ab).sort.join" " +puts "" + +puts "missing from index:" +puts (ab-d).sort.join" " +puts (ab-d).size +puts "" + +puts "orphan index entries: " +puts (d-ab).sort.join" " diff --git a/externals/gridflow/doc/flow_classes/#-help.pd b/externals/gridflow/doc/flow_classes/#-help.pd new file mode 100644 index 00000000..8a546e31 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#-help.pd @@ -0,0 +1,55 @@ +#N canvas 648 0 632 642 10; +#X obj 139 174 #color; +#X obj 314 174 #color; +#X text 245 135 select values below; +#X text 138 155 A; +#X text 313 155 B; +#X obj 139 240 # +; +#X obj 178 274 #color; +#X obj 140 380 display; +#X obj 139 274 t a a; +#X text 152 342 warning: #color clips value to the 0..255 range; +#X text 152 357 so use this [display] to view the true numbers; +#X text 54 81 click on this object to select a numop to try out:; +#X text 55 64 # applies a simple Numeric Operator (numop).; +#X obj 94 120 doc/numop; +#X obj 0 0 doc_h; +#X obj 14 439 doc_cc 0; +#X obj 3 409 doc_c 1..2; +#X obj 3 534 doc_i 2; +#X obj 14 564 doc_ii 0; +#X obj 14 735 doc_oo 0; +#X obj 14 461 doc_cc 1; +#X obj 14 673 doc_ii 1; +#X obj 3 705 doc_o 1; +#X obj 97 439 doc_m c0 numop; +#X obj 97 463 doc_m c1 grid; +#X obj 97 564 doc_m i0 grid; +#X obj 97 673 doc_m i1 grid; +#X obj 97 651 doc_m i0 numop; +#X text 232 564 on each element of this grid \, perform the operation +together with the corresponding element of inlet 1 in the table of +operators (at the top of this document)elements of inlet 0 are called +"A" and elements of inlet 1are called "B". the resulting grid is the +same size as theone in inlet 0; +#X text 232 439 pick a way to combine the numbers. (see the numop table) +; +#X text 232 673 same as arg 1; +#X text 232 651 same as arg 0; +#X obj 97 735 doc_m o0 grid; +#X text 232 463 any grid \, preferably shaped like the one that will +be put in the left inlet \, or like a subpart of it (anyway the contents +will be redim'ed on-the-fly to fit the grid of inlet-0 \, but the stored +grid will not be modified itself); +#X obj 0 765 doc_f; +#X connect 0 0 5 0; +#X connect 1 0 5 1; +#X connect 5 0 8 0; +#X connect 8 0 7 0; +#X connect 8 1 6 0; +#X connect 13 0 5 0; +#X connect 23 1 29 0; +#X connect 24 1 33 0; +#X connect 25 1 28 0; +#X connect 26 1 30 0; +#X connect 27 1 31 0; diff --git a/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-help.pd b/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-help.pd new file mode 100644 index 00000000..61c29ebf --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#apply_colormap_channelwise-help.pd @@ -0,0 +1,55 @@ +#N canvas 651 0 632 598 10; +#X obj 25 293 #in; +#X obj 25 342 #out window; +#X text 232 537 Outputs the modified data as a grid.; +#X text 12 27 This object is useful for color correction. for each +pixel it takes it apart \, looks up each part separately in the colormap +and constructs a new pixel from that.; +#X obj 213 235 #for 0 256 1; +#X obj 213 305 #outer gamma; +#X msg 25 267 load bluemarble.jpg; +#X obj 25 248 t b b; +#X obj 289 261 #color 0 1024 1; +#X msg 354 209 1024 512 256; +#X obj 354 190 loadbang; +#X obj 25 323 #apply_colormap_channelwise; +#X obj 25 219 metro 100; +#X obj 25 202 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1 +; +#X text 357 244 vary this:; +#X obj 0 0 doc_h; +#X obj 3 383 doc_c 0; +#X obj 3 423 doc_i 2; +#X obj 3 507 doc_o 1; +#X obj 14 453 doc_ii 0; +#X obj 14 475 doc_ii 1; +#X obj 14 537 doc_oo 0; +#X obj 97 453 doc_m i0 grid; +#X text 12 70 currently works only with 3 channels at a time!; +#X text 15 89 it also works on non-images \, for example on colormaps +themselves \, but the last dimension must be channels \, and there +must be three channels.; +#X text 14 136 Note: if you just need to apply a palette on an indexed-color +picture or greyscale picture \, you don't need this. Just use #store +instead.; +#X obj 0 569 doc_f; +#X text 232 453 grid that will be modified by the colormap; +#X text 232 475 Colormap (aka palette) is a grid[intensity \, channels] +; +#X obj 97 475 doc_m i1 grid; +#X obj 97 537 doc_m o0 grid; +#X connect 0 0 11 0; +#X connect 4 0 5 0; +#X connect 5 0 11 1; +#X connect 6 0 0 0; +#X connect 7 0 6 0; +#X connect 7 1 4 0; +#X connect 8 0 5 1; +#X connect 9 0 8 0; +#X connect 10 0 9 0; +#X connect 11 0 1 0; +#X connect 12 0 7 0; +#X connect 13 0 12 0; +#X connect 22 1 27 0; +#X connect 29 1 28 0; +#X connect 30 1 2 0; diff --git a/externals/gridflow/doc/flow_classes/#background_model-help.pd b/externals/gridflow/doc/flow_classes/#background_model-help.pd new file mode 100644 index 00000000..04cc2648 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#background_model-help.pd @@ -0,0 +1,90 @@ +#N canvas 327 0 632 642 10; +#X obj 58 86 #camera; +#X obj 58 50 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 194 115 tgl 15 0 empty empty binaryFlag 0 -6 0 8 -24198 -1 -1 +0 1; +#X obj 126 96 tgl 15 0 empty empty addBackground 0 -6 0 8 -24198 -1 +-1 0 1; +#X obj 266 105 hsl 128 15 0 700 0 0 empty empty outputThreshold -2 +-6 0 8 -260818 -1 -1 0 1; +#X obj 41 86 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X obj 58 286 #greyscale_to_rgb; +#X text 72 224 Arguments : size of buffer \, columns \, rows \, channel +; +#X text 70 242 <-- output is a greyscale image; +#X obj 58 305 #out window \, title backgroundModel; +#X obj 58 324 fps detailed; +#X obj 58 343 print; +#X obj 146 198 #out window \, title variance; +#X obj 235 160 #out window \, title Mean; +#X obj 146 160 # << 2; +#X obj 146 179 #clip; +#X floatatom 280 128 5 0 0 0 - - -; +#X obj 58 267 #clip; +#X obj 58 67 metro 33.33; +#X obj 58 141 #background_model 20 120 160 3; +#X obj 14 658 doc_oo 0; +#X obj 14 680 doc_oo 1; +#X obj 14 702 doc_oo 2; +#X obj 14 532 doc_ii 0; +#X obj 14 552 doc_ii 1; +#X obj 14 574 doc_ii 2; +#X obj 14 596 doc_ii 3; +#X obj 14 404 doc_cc 0; +#X obj 14 426 doc_cc 1; +#X obj 14 448 doc_cc 2; +#X obj 14 470 doc_cc 3; +#X text 232 552 addBackground; +#X text 232 574 binary_flag; +#X text 232 596 output_threshold; +#X text 232 404 frames; +#X text 232 426 height; +#X text 232 448 width; +#X text 232 470 channels; +#X text 232 680 variance; +#X text 232 702 mean; +#X text 232 658 greyscale image; +#X obj 0 0 doc_h; +#X obj 0 734 doc_f; +#X obj 3 374 doc_c 4; +#X obj 3 502 doc_i 4; +#X obj 3 628 doc_o 3; +#X obj 97 596 doc_m i3; +#X obj 97 404 doc_m c0 float; +#X obj 97 426 doc_m c1 float; +#X obj 97 448 doc_m c2 float; +#X obj 97 470 doc_m c3 float; +#X obj 97 552 doc_m i1 grid; +#X obj 97 532 doc_m i0 grid; +#X obj 97 574 doc_m i2 float bool; +#X obj 97 658 doc_m o0 grid; +#X obj 97 680 doc_m o1 grid; +#X obj 97 702 doc_m o2 grid; +#X connect 0 0 19 0; +#X connect 1 0 18 0; +#X connect 2 0 19 2; +#X connect 3 0 19 1; +#X connect 4 0 16 0; +#X connect 4 0 19 3; +#X connect 5 0 0 0; +#X connect 6 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 14 0 15 0; +#X connect 15 0 12 0; +#X connect 17 0 6 0; +#X connect 18 0 0 0; +#X connect 19 0 17 0; +#X connect 19 1 14 0; +#X connect 19 2 13 0; +#X connect 46 1 33 0; +#X connect 47 1 34 0; +#X connect 48 1 35 0; +#X connect 49 1 36 0; +#X connect 50 1 37 0; +#X connect 51 1 31 0; +#X connect 53 1 32 0; +#X connect 54 1 40 0; +#X connect 55 1 38 0; +#X connect 56 1 39 0; diff --git a/externals/gridflow/doc/flow_classes/#border-help.pd b/externals/gridflow/doc/flow_classes/#border-help.pd new file mode 100644 index 00000000..5486c419 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#border-help.pd @@ -0,0 +1,44 @@ +#N canvas 597 51 632 499 10; +#X obj 20 84 #in; +#X obj 20 127 #out window; +#X text 15 28 Creates a black border around an image.; +#X msg 20 62 load working.jpg; +#X text 232 206 top padding and left padding. defaults to (1 1 0). +; +#X text 232 228 bottom and right padding. defaults to (1 1 0).; +#X obj 20 105 #border (5 10 0) (15 20 0); +#X text 209 98 5 at the top; +#X text 208 112 10 at the left; +#X text 208 126 15 at the bottom; +#X text 208 139 20 at the right; +#X text 114 255 both arguments must have 3 elements. The third element +is reserved for future use.; +#X text 232 425 The original image surrounded by zero padding \, which +usually means black pixels.; +#X obj 14 425 doc_oo 0; +#X obj 14 321 doc_ii 0; +#X obj 14 341 doc_ii 1; +#X obj 14 363 doc_ii 2; +#X obj 14 206 doc_cc 0; +#X obj 14 228 doc_cc 1; +#X text 232 341 same as arg 0; +#X text 232 363 same as arg 1; +#X obj 0 0 doc_h; +#X obj 0 470 doc_f; +#X obj 3 176 doc_c 2; +#X obj 3 291 doc_i 3; +#X obj 3 395 doc_o 1; +#X obj 97 206 doc_m c0 grid[3]; +#X obj 97 228 doc_m c1 grid[3]; +#X obj 97 321 doc_m i0 grid; +#X obj 97 341 doc_m i1 list; +#X obj 97 363 doc_m i2 list; +#X obj 97 425 doc_m o0 grid; +#X connect 0 0 6 0; +#X connect 3 0 0 0; +#X connect 6 0 1 0; +#X connect 26 1 4 0; +#X connect 27 1 5 0; +#X connect 29 1 19 0; +#X connect 30 1 20 0; +#X connect 31 1 12 0; diff --git a/externals/gridflow/doc/flow_classes/#camera-help.pd b/externals/gridflow/doc/flow_classes/#camera-help.pd new file mode 100644 index 00000000..403f396f --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#camera-help.pd @@ -0,0 +1,49 @@ +#N canvas 679 40 632 557 10; +#X obj 86 164 #out window; +#X obj 60 45 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X obj 86 45 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 86 183 fps detailed; +#X obj 86 202 print; +#X obj 86 71 metro 20; +#X text 232 496 Returns a grid from the video capture device for every +bang.; +#X obj 86 145 #scale_by; +#X text 151 111 <-- open the abstraction and configure for your camera +before sending it a bang.; +#X obj 86 112 #camera; +#X obj 14 496 doc_oo 0; +#X obj 14 399 doc_ii 0; +#X obj 14 271 doc_cc 0; +#X text 232 399 same as arg 0; +#X text 232 421 same as the class of the camera object being used inside: +see #io.videodev-help.pd for a LONG list of options; +#X text 232 293 8: a linux device using the DC-1394 interface; +#X text 232 315 9: an OSX device using the QuickTime camera interface +; +#X text 232 271 0..7: a linux device using the V4L1 interface (videodev.h) +; +#X text 232 337 -1: none; +#X obj 0 0 doc_h; +#X obj 0 528 doc_f; +#X obj 3 241 doc_c 1; +#X obj 3 369 doc_i 1; +#X obj 3 466 doc_o 1; +#X obj 97 271 doc_m c0 float/int; +#X obj 97 496 doc_m o0 grid; +#X obj 97 399 doc_m i0 device; +#X obj 97 421 doc_m i0 <any>; +#X connect 0 0 3 0; +#X connect 1 0 9 0; +#X connect 2 0 5 0; +#X connect 3 0 4 0; +#X connect 5 0 9 0; +#X connect 7 0 0 0; +#X connect 9 0 7 0; +#X connect 24 1 15 0; +#X connect 24 1 16 0; +#X connect 24 1 17 0; +#X connect 24 1 18 0; +#X connect 25 1 6 0; +#X connect 26 1 13 0; +#X connect 27 1 14 0; diff --git a/externals/gridflow/doc/flow_classes/#cast-help.pd b/externals/gridflow/doc/flow_classes/#cast-help.pd new file mode 100644 index 00000000..970a7647 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#cast-help.pd @@ -0,0 +1,67 @@ +#N canvas 646 0 632 564 10; +#X obj 14 219 #print; +#X obj 14 199 #cast float64; +#X obj 269 218 #print; +#X obj 126 218 #print; +#X obj 269 198 #cast uint8; +#X obj 126 198 #cast int32; +#X floatatom 14 181 5 0 0 0 - - -; +#X msg 126 177 9.8764 9 -32 0.3; +#X obj 269 158 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 306 79 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-262144 -1 -1 2.1416 256; +#X obj 356 96 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-262144 -1 -1 45 256; +#X obj 269 177 #store; +#X obj 306 133 #pack 3 float32; +#X obj 14 161 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 126 157 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X text 12 26 Changes an entity of one data type into another. Returns +a grid of the same dimensions containing all the same values after +type conversion. While casting to a smaller type \, overflowing values +will be truncated.; +#X obj 406 113 nbx 8 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-262144 -1 -1 45 256; +#X text 232 358 Any grid; +#X obj 14 420 doc_oo 0; +#X obj 14 358 doc_ii 0; +#X obj 14 283 doc_cc 0; +#X text 232 420 Produces a grid of the same dimensions containing all +the same values after type conversion.; +#X text 232 455 conversion from float truncates fractional part (rounds +towards zero); +#X text 232 490 conversion to an int type may wrap (same as some # +& or some # %); +#X text 232 283 Number types are: uint8 \, int16 \, int32 \, int64 +\, float32 \, float64. see doc/numtype.pd for more info.; +#X obj 306 154 #redim (2 2); +#X obj 0 0 doc_h; +#X obj 0 535 doc_f; +#X obj 3 253 doc_c 1; +#X obj 3 328 doc_i 1; +#X obj 3 390 doc_o 1; +#X obj 97 283 doc_m c0 symbol/numbertype; +#X obj 97 358 doc_m i0 grid; +#X obj 97 420 doc_m o0 grid; +#X connect 1 0 0 0; +#X connect 4 0 2 0; +#X connect 5 0 3 0; +#X connect 6 0 1 0; +#X connect 7 0 5 0; +#X connect 8 0 11 0; +#X connect 9 0 12 0; +#X connect 10 0 12 1; +#X connect 11 0 4 0; +#X connect 12 0 25 0; +#X connect 13 0 6 0; +#X connect 14 0 7 0; +#X connect 16 0 12 2; +#X connect 25 0 11 1; +#X connect 31 1 24 0; +#X connect 32 1 17 0; +#X connect 33 1 21 0; +#X connect 33 1 22 0; +#X connect 33 1 23 0; diff --git a/externals/gridflow/doc/flow_classes/#centroid-help.pd b/externals/gridflow/doc/flow_classes/#centroid-help.pd new file mode 100644 index 00000000..81a8718f --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#centroid-help.pd @@ -0,0 +1,29 @@ +#N canvas 669 0 632 376 10; +#X obj 43 44 #centroid; +#X obj 14 163 doc_ii 0; +#X obj 14 251 doc_oo 0; +#X obj 14 273 doc_oo 1; +#X obj 14 295 doc_oo 2; +#X text 232 163 will compute the centroid of the given grid \, which +is a weighted average \, namely \, the average position weighted by +the pixel values.; +#X text 138 41 obsolete. please use [#moment] instead.; +#X obj 3 327 doc_also; +#X obj 103 327 #moment; +#X text 232 251 (y x); +#X text 232 273 y; +#X text 232 295 x; +#X obj 0 0 doc_h; +#X obj 0 347 doc_f; +#X obj 3 93 doc_c; +#X obj 3 133 doc_i 1; +#X obj 3 221 doc_o 3; +#X obj 97 163 doc_m i0; +#X obj 97 251 doc_m o0 grid; +#X obj 97 295 doc_m o2 float; +#X obj 97 273 doc_m o1 float; +#X connect 7 1 8 0; +#X connect 17 1 5 0; +#X connect 18 1 9 0; +#X connect 19 1 11 0; +#X connect 20 1 10 0; diff --git a/externals/gridflow/doc/flow_classes/#change-help.pd b/externals/gridflow/doc/flow_classes/#change-help.pd new file mode 100644 index 00000000..cbef68ef --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#change-help.pd @@ -0,0 +1,35 @@ +#N canvas 646 85 632 417 10; +#X obj 38 95 #change; +#X text 234 116 should be to [change] what GridFlow is to PureData. +; +#X obj 14 278 doc_ii 0; +#X obj 14 338 doc_oo 0; +#X obj 14 218 doc_cc 0; +#X obj 3 368 doc_also; +#X obj 103 368 change; +#X obj 38 137 print; +#X obj 44 118 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 38 76 #pack; +#X floatatom 72 58 5 0 0 0 - - -; +#X floatatom 38 58 5 0 0 0 - - -; +#X obj 72 41 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 38 41 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 0 0 doc_h; +#X obj 0 388 doc_f; +#X obj 3 188 doc_c 0..1; +#X obj 3 248 doc_i 1; +#X obj 3 308 doc_o 1; +#X obj 97 218 doc_m c0 grid; +#X obj 97 338 doc_m o0 grid; +#X obj 97 278 doc_m i0 grid; +#X connect 0 0 8 0; +#X connect 0 0 7 0; +#X connect 5 1 6 0; +#X connect 9 0 0 0; +#X connect 10 0 9 1; +#X connect 11 0 9 0; +#X connect 12 0 10 0; +#X connect 13 0 11 0; diff --git a/externals/gridflow/doc/flow_classes/#checkers-help.pd b/externals/gridflow/doc/flow_classes/#checkers-help.pd new file mode 100644 index 00000000..1c737f08 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#checkers-help.pd @@ -0,0 +1,26 @@ +#N canvas 692 0 632 404 10; +#X obj 171 66 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 171 135 #out window \, title checkers; +#X obj 171 112 #checkers; +#X text 232 330 Results in a checkered pattern of 50% / 75% greys in +8 X 8 squares.; +#X text 11 29 Displays a grid with a pattern of checkered squares. +; +#X obj 14 330 doc_oo 0; +#X obj 14 256 doc_ii 0; +#X obj 171 88 #for (0 0) (128 128) (1 1); +#X text 232 256 typically the output of [#for (0 0) (height width) +(1 1)]; +#X obj 0 0 doc_h; +#X obj 0 375 doc_f; +#X obj 3 186 doc_c 0; +#X obj 3 226 doc_i 1; +#X obj 3 300 doc_o 1; +#X obj 97 256 doc_m i0 grid; +#X obj 97 330 doc_m o0 grid; +#X connect 0 0 7 0; +#X connect 2 0 1 0; +#X connect 7 0 2 0; +#X connect 14 1 8 0; +#X connect 15 1 3 0; diff --git a/externals/gridflow/doc/flow_classes/#clip-help.pd b/externals/gridflow/doc/flow_classes/#clip-help.pd new file mode 100644 index 00000000..9e494b44 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#clip-help.pd @@ -0,0 +1,70 @@ +#N canvas 673 6 632 610 10; +#X obj 51 163 #in; +#X obj 51 189 # + 42; +#X floatatom 88 166 5 0 0 0 - - -; +#X obj 51 270 #out window; +#X obj 51 114 t b b; +#X obj 51 90 metro 100; +#X obj 51 68 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X floatatom 127 211 5 0 0 0 - - -; +#X floatatom 87 211 5 0 0 0 - - -; +#X text 6 25 The [#clip] object is used with numops in order to set +a lower and upper range to pixel values. This allows you to avoid over +saturating the colours of your grid.; +#X text 133 165 <-- vary this number; +#X msg 81 138 open working.jpg; +#X text 232 410 Grid values are clipped to the high and low values +stored in the object; +#X text 232 529 Outputs the modified grid; +#X obj 103 561 # min; +#X obj 145 561 # max; +#X obj 187 561 clip; +#X text 223 561 #numop-help.pd; +#X text 319 561 gf_tutorial_image_6.pd; +#X obj 51 240 #clip 0 255; +#X text 139 231 <--if no creation argument is given the default range +is 0-255.; +#X obj 3 561 doc_also; +#X obj 14 410 doc_ii 0; +#X obj 14 445 doc_ii 1; +#X obj 14 467 doc_ii 2; +#X obj 14 529 doc_oo 0; +#X obj 14 326 doc_cc 0; +#X obj 14 348 doc_cc 1; +#X text 232 445 same as arg 0; +#X text 232 467 same as arg 1; +#X text 232 326 minimum value (like [# max]); +#X text 232 348 maximum value (like [# min]); +#X obj 0 0 doc_h; +#X obj 0 581 doc_f; +#X obj 3 296 doc_c 2; +#X obj 3 380 doc_i 3; +#X obj 3 499 doc_o 1; +#X obj 97 410 doc_m i0 grid; +#X obj 97 445 doc_m i1 float int; +#X obj 97 467 doc_m i2 float int; +#X obj 97 529 doc_m o0 grid; +#X obj 97 326 doc_m c0; +#X obj 97 348 doc_m c1; +#X connect 0 0 1 0; +#X connect 1 0 19 0; +#X connect 2 0 1 1; +#X connect 4 0 0 0; +#X connect 4 1 11 0; +#X connect 5 0 4 0; +#X connect 6 0 5 0; +#X connect 7 0 19 2; +#X connect 8 0 19 1; +#X connect 11 0 0 0; +#X connect 19 0 3 0; +#X connect 21 1 14 0; +#X connect 21 1 15 0; +#X connect 21 1 16 0; +#X connect 21 1 17 0; +#X connect 21 1 18 0; +#X connect 37 1 12 0; +#X connect 38 1 28 0; +#X connect 39 1 29 0; +#X connect 40 1 13 0; +#X connect 41 1 30 0; +#X connect 42 1 31 0; diff --git a/externals/gridflow/doc/flow_classes/#cluster_avg-help.pd b/externals/gridflow/doc/flow_classes/#cluster_avg-help.pd new file mode 100644 index 00000000..50e844a0 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#cluster_avg-help.pd @@ -0,0 +1,22 @@ +#N canvas 615 299 632 303 10; +#X obj 14 60 doc_cc 0; +#X obj 14 120 doc_ii 0; +#X text 232 242 counts; +#X text 232 220 sums; +#X obj 14 140 doc_ii 1; +#X obj 14 160 doc_ii 2; +#X obj 14 220 doc_oo 0; +#X obj 14 242 doc_oo 1; +#X obj 0 0 doc_h; +#X obj 0 274 doc_f; +#X obj 3 30 doc_c 1; +#X obj 3 90 doc_i 3; +#X obj 3 190 doc_o 2; +#X obj 97 160 doc_m i2 grid; +#X obj 97 60 doc_m c0 int; +#X obj 97 220 doc_m o0 grid; +#X obj 97 242 doc_m o1 grid; +#X obj 97 140 doc_m i1 float int; +#X obj 97 120 doc_m i0 grid i; +#X connect 15 1 3 0; +#X connect 16 1 2 0; diff --git a/externals/gridflow/doc/flow_classes/#color-help.pd b/externals/gridflow/doc/flow_classes/#color-help.pd new file mode 100644 index 00000000..2fd0b3b7 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#color-help.pd @@ -0,0 +1,44 @@ +#N canvas 653 126 632 519 10; +#X obj 126 114 #color; +#X text 308 126 <-- vary these; +#X text 10 27 The [#color] object contains a triple slider for RGB +value selection on each channel.; +#X text 198 68 <-- click here; +#X msg 126 68 255 0 204; +#X msg 317 79 delegate steady 0; +#X text 103 470 [hsl]; +#X obj 3 470 doc_also; +#X text 232 253 whether to remove the color preview; +#X text 232 209 lower bound; +#X text 232 231 upper bound; +#X obj 14 425 doc_oo 0; +#X obj 14 315 doc_ii 0; +#X obj 14 209 doc_cc 0; +#X obj 14 231 doc_cc 1; +#X obj 14 253 doc_cc 2; +#X text 232 350 sends the rest of the message as a message to each +of the sliders but not each of the numboxes.; +#X text 232 315 replaces the current colour value inside [#color] \, +including sliders and numboxes.; +#X text 232 425 of size (3) representing a rgb colour or any other +rgb-related settings you want to control with [#color].; +#X obj 0 0 doc_h; +#X obj 0 490 doc_f; +#X obj 3 179 doc_c 3; +#X obj 3 285 doc_i 1; +#X obj 3 395 doc_o 1; +#X obj 97 209 doc_m c0 float; +#X obj 97 231 doc_m c1 float; +#X obj 97 253 doc_m c2 bool; +#X obj 97 315 doc_m i0 grid; +#X obj 97 350 doc_m i0 delegate; +#X obj 97 425 doc_m o0 grid; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 7 1 6 0; +#X connect 24 1 9 0; +#X connect 25 1 10 0; +#X connect 26 1 8 0; +#X connect 27 1 17 0; +#X connect 28 1 16 0; +#X connect 29 1 18 0; diff --git a/externals/gridflow/doc/flow_classes/#contrast-help.pd b/externals/gridflow/doc/flow_classes/#contrast-help.pd new file mode 100644 index 00000000..7136bd29 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#contrast-help.pd @@ -0,0 +1,72 @@ +#N canvas 678 0 632 613 10; +#X obj 77 88 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X obj 97 136 metro 100; +#X obj 97 115 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 222 134 hsl 128 15 0 256 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 371 135 hsl 128 15 0 256 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X floatatom 219 154 5 0 0 0 - - -; +#X floatatom 368 157 5 0 0 0 - - -; +#X msg 59 65 open bluemarble.jpg; +#X obj 190 214 #out window; +#X obj 59 162 #in; +#X text 8 28 Adjusts the intensity of an image.; +#X obj 190 189 #contrast; +#X text 232 327 This value corresponds to the master contrast \, it +varies the amount of incoming white. The default value is 256 and it +has no effect.; +#X text 232 279 This value corresponds to the secondary contrast (inverse +whiteness) \, it varies the amount of incoming black into the image. +The default value is 256 and it has no effect.; +#X obj 103 564 #convolve; +#X obj 169 564 #posterize; +#X obj 241 564 #solarize; +#X obj 307 564 #layer; +#X text 366 118 contrast about black; +#X text 216 118 contrast about white; +#X obj 3 564 doc_also; +#X obj 14 534 doc_oo 0; +#X obj 14 415 doc_ii 0; +#X obj 14 450 doc_ii 1; +#X obj 14 472 doc_ii 2; +#X text 232 415 produces a grid like the incoming grid but with different +constrast.; +#X text 7 42 resulting values outside 0-255 are automatically clipped. +; +#X obj 14 279 doc_cc 0; +#X obj 14 327 doc_cc 1; +#X text 232 450 same as arg 0; +#X text 232 472 same as arg 1; +#X obj 0 0 doc_h; +#X obj 0 584 doc_f; +#X obj 3 249 doc_c 0..2; +#X obj 3 385 doc_i 3; +#X obj 3 504 doc_o 1; +#X obj 97 534 doc_m o0 grid; +#X obj 97 415 doc_m i0 grid; +#X obj 97 327 doc_m c1 grid; +#X obj 97 279 doc_m c0 grid; +#X obj 97 450 doc_m i1 grid; +#X obj 97 472 doc_m i2 grid; +#X connect 0 0 9 0; +#X connect 1 0 9 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 11 1; +#X connect 6 0 11 2; +#X connect 7 0 9 0; +#X connect 9 0 11 0; +#X connect 11 0 8 0; +#X connect 20 1 14 0; +#X connect 20 1 15 0; +#X connect 20 1 16 0; +#X connect 20 1 17 0; +#X connect 37 1 25 0; +#X connect 38 1 12 0; +#X connect 39 1 13 0; +#X connect 40 1 29 0; +#X connect 41 1 30 0; diff --git a/externals/gridflow/doc/flow_classes/#convolve-help.pd b/externals/gridflow/doc/flow_classes/#convolve-help.pd new file mode 100644 index 00000000..d644340d --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#convolve-help.pd @@ -0,0 +1,67 @@ +#N canvas 678 0 632 642 10; +#X obj 43 87 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X msg 255 135 1 1 1 1 1 1 1 1 1; +#X obj 255 113 loadbang; +#X obj 255 157 #redim (3 3); +#X obj 43 158 #in; +#X obj 43 241 #out window; +#X obj 103 723 #contrast; +#X obj 169 723 #posterize; +#X obj 241 723 #solarize; +#X obj 307 723 #layer; +#X obj 43 183 #convolve \, op ^ \, fold + \, seed 0; +#X text 14 28 [#convolve] is used to perform various transformations +on images such as blurring \, sharpening \, finding edges \, embossing +\, cellular automata and many others.; +#X text 232 316 This is the convolution grid and it gets stored in +the other object. If rows2 and/or columns 2 are odd numbers \, then +the centre of convolution is the middle of the convolution grid. If +they are even numbers \, then the chosen centre will be slightly more +to the left and/or to the top \, because the actual middle is between +celle of the grid.; +#X obj 3 723 doc_also; +#X obj 14 691 doc_oo 0; +#X obj 14 443 doc_ii 0; +#X obj 14 629 doc_ii 1; +#X text 155 216 here ^ is the parallel operator \, fold is indicated +by + and 0 is its base (seed).; +#X obj 14 316 doc_cc 0; +#X text 232 691 Resulting image.; +#X text 232 443 Splits the incoming grid into dim(rest...) parts \, +for each of those parts at (y \, x). A rectangle of such parts \, centered +around (y \, x) is combined with the convolution grid like a [#] of +operation op_para. Then each such result is folded like [#fold] of +operation op_fold and specified base. The results are assembled into +a grid that is sent to the outlet. Near the borders of the grid \, +coordinates wrap around. this means the whole grid has to be received +before production of the next grid starts.; +#X text 232 629 same as arg 0; +#X msg 43 135 open scissors.jpg \, bang; +#X obj 0 0 doc_h; +#X obj 0 743 doc_f; +#X obj 3 286 doc_c 0..1; +#X obj 3 413 doc_i 2; +#X obj 3 661 doc_o 1; +#X obj 97 443 doc_m i0 grid; +#X obj 97 629 doc_m i1 grid; +#X obj 97 691 doc_m o0 grid; +#X obj 97 589 doc_m i0 op numop; +#X obj 97 569 doc_m i0 fold numop; +#X obj 97 609 doc_m i0 seed grid; +#X obj 97 316 doc_m c0 grid; +#X connect 0 0 22 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 10 1; +#X connect 4 0 10 0; +#X connect 10 0 5 0; +#X connect 13 1 6 0; +#X connect 13 1 7 0; +#X connect 13 1 8 0; +#X connect 13 1 9 0; +#X connect 22 0 4 0; +#X connect 28 1 20 0; +#X connect 29 1 21 0; +#X connect 30 1 19 0; +#X connect 34 1 12 0; diff --git a/externals/gridflow/doc/flow_classes/#dim-help.pd b/externals/gridflow/doc/flow_classes/#dim-help.pd new file mode 100644 index 00000000..d86aaa70 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#dim-help.pd @@ -0,0 +1,39 @@ +#N canvas 647 0 632 473 10; +#X obj 22 178 print number_of_dimensions; +#X obj 22 106 #in; +#X obj 22 130 #dim; +#X obj 22 154 #to_float; +#X text 15 37 Outputs grid dimensions (columns \, row \, channels). +; +#X text 232 353 The received grid is output as a one dimensional grid +representing grid dimensions. For example \, a grid sized like dim(240 +\, 320 \, 4) [#dim] will return a grid like dim(3) whose values are +240 \, 320 \, 4; +#X obj 3 323 doc_o 1; +#X obj 103 424 #print; +#X obj 151 424 #to_float; +#X obj 217 424 #to_list; +#X obj 3 424 doc_also; +#X obj 14 278 doc_ii 0; +#X obj 14 353 doc_oo 0; +#X obj 97 278 doc_m i0 grid; +#X obj 97 353 doc_m o0 grid; +#X text 185 65 Returns list of dimensions as a grid. Given a grid sized +like Dim(240 \, 320 \, 4) \, [#dim] will return a grid like Dim(3) +\, whose values are 240 \, 320 \, 4 .; +#X text 232 278 ignores any data contained within. sends a grid dim(length +of dims) containing dims.; +#X msg 22 66 load working.jpg; +#X obj 0 0 doc_h; +#X obj 0 444 doc_f; +#X obj 3 208 doc_c; +#X obj 3 248 doc_i 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X connect 10 1 7 0; +#X connect 10 1 8 0; +#X connect 10 1 9 0; +#X connect 13 1 16 0; +#X connect 14 1 5 0; +#X connect 17 0 1 0; diff --git a/externals/gridflow/doc/flow_classes/#downscale_by-help.pd b/externals/gridflow/doc/flow_classes/#downscale_by-help.pd new file mode 100644 index 00000000..14f427db --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#downscale_by-help.pd @@ -0,0 +1,63 @@ +#N canvas 676 0 632 699 10; +#X obj 181 115 metro 10; +#X obj 181 96 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X floatatom 251 130 5 0 0 0 - - -; +#X obj 165 144 #in; +#X msg 165 70 open bluemarble.jpg \, bang; +#X floatatom 295 143 5 0 0 0 - - -; +#X obj 251 162 #pack 2; +#X obj 165 186 #downscale_by; +#X obj 165 212 #out window; +#X text 9 24 Scales down a picture by a specified amount.; +#X obj 103 650 #scale_to; +#X obj 169 650 #scale_by; +#X obj 0 0 doc_h; +#X obj 3 650 doc_also; +#X obj 3 588 doc_o 1; +#X obj 14 618 doc_oo 0; +#X obj 3 491 doc_i 2; +#X obj 14 521 doc_ii 0; +#X obj 14 556 doc_ii 1; +#X obj 14 280 doc_cc 0; +#X obj 97 280 doc_m c0 grid; +#X obj 3 250 doc_c 1..2; +#X obj 97 521 doc_m i0 grid; +#X text 232 280 The value defines the scale factor. A pack object allows +you to vary the horizontal and vertical values idenpendently. In the +example above \, inlet 0 of [#pack] varies the image on a vertical +axis \, inlet 1 of [#pack] varies the image on a horizontal axis.; +#X obj 97 556 doc_m i1 grid; +#X text 232 556 same as arg 0; +#X text 232 521 Scales down picture by specified amount. (See scale +factor above); +#X text 232 618 grid((factor/y) (factor/x) channels); +#X text 232 354 factor is optional (default is 2).; +#X obj 97 618 doc_m o0 grid; +#X obj 14 411 doc_cc 1; +#X obj 97 411 doc_m c1 symbol; +#X text 232 411 "smoothly": does the downscale by averaging each block +of pixels.; +#X text 232 446 omitted: does the downscale by keeping only the top +right pixel in the block.; +#X obj 0 670 doc_f; +#X text 232 376 if it's a single value \, then that factor is to be +used for both rows and columns.; +#X connect 0 0 3 0; +#X connect 1 0 0 0; +#X connect 2 0 6 0; +#X connect 3 0 7 0; +#X connect 4 0 3 0; +#X connect 5 0 6 1; +#X connect 6 0 7 1; +#X connect 7 0 8 0; +#X connect 13 1 10 0; +#X connect 13 1 11 0; +#X connect 20 1 23 0; +#X connect 20 1 28 0; +#X connect 20 1 35 0; +#X connect 22 1 26 0; +#X connect 24 1 25 0; +#X connect 29 1 27 0; +#X connect 31 1 32 0; +#X connect 31 1 33 0; diff --git a/externals/gridflow/doc/flow_classes/#draw_hpgl-help.pd b/externals/gridflow/doc/flow_classes/#draw_hpgl-help.pd new file mode 100644 index 00000000..672e4689 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#draw_hpgl-help.pd @@ -0,0 +1,35 @@ +#N canvas 576 129 632 396 10; +#X obj 0 0 doc_h; +#X obj 0 367 doc_f; +#X obj 103 51 #draw_hpgl; +#X obj 3 283 doc_o 2; +#X obj 3 131 doc_i 5; +#X obj 3 91 doc_c 0; +#X obj 14 313 doc_oo 0; +#X obj 14 335 doc_oo 1; +#X obj 14 161 doc_ii 0; +#X obj 14 183 doc_ii 1; +#X obj 14 205 doc_ii 2; +#X obj 14 227 doc_ii 3; +#X obj 14 251 doc_ii 4; +#X obj 97 227 doc_m i3 grid; +#X obj 97 251 doc_m i4 grid; +#X text 232 227 (x y) start; +#X text 232 251 (x y) end; +#X obj 97 161 doc_m i0 grid; +#X obj 97 183 doc_m i1 grid; +#X obj 97 205 doc_m i2 grid; +#X text 232 161 image; +#X text 232 183 color; +#X text 232 205 command; +#X obj 97 335 doc_m o1 bang; +#X obj 97 313 doc_m o0 grid; +#X text 232 335 time to draw; +#X text 232 313 image drawn on; +#X connect 13 1 15 0; +#X connect 14 1 16 0; +#X connect 17 1 20 0; +#X connect 18 1 21 0; +#X connect 19 1 22 0; +#X connect 23 1 25 0; +#X connect 24 1 26 0; diff --git a/externals/gridflow/doc/flow_classes/#draw_image-help.pd b/externals/gridflow/doc/flow_classes/#draw_image-help.pd new file mode 100644 index 00000000..a2fd7df4 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#draw_image-help.pd @@ -0,0 +1,102 @@ +#N canvas 295 0 632 642 10; +#X obj 172 147 #in; +#X obj 135 181 #store; +#X obj 135 46 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 1 +; +#X obj 135 74 metro 40; +#X obj 135 283 #out window \, title #draw_image-help; +#X obj 172 99 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X obj 188 209 #in; +#X obj 188 169 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X text 194 101 2 <-- open background image; +#X text 211 171 1 <-- open foreground image; +#X obj 387 238 #dim; +#X obj 387 257 #to_list; +#X obj 387 276 unpack f f; +#X obj 393 295 pack f f; +#X obj 393 314 # / 2; +#X obj 368 314 # -; +#X obj 135 307 #mouse; +#X text 159 48 3 <-- activate rendering; +#X msg 188 190 load g001.jpg; +#X msg 172 120 load r001.jpg; +#X msg 275 257 0 0; +#X obj 275 238 loadbang; +#X text 135 331 Move mouse cursor to change layer position; +#X obj 0 0 doc_h; +#X obj 3 455 doc_i 3; +#X obj 3 775 doc_o 1; +#X obj 14 805 doc_oo 0; +#X obj 14 485 doc_ii 0; +#X obj 14 708 doc_ii 1; +#X obj 14 730 doc_ii 2; +#X text 232 397 Normally \, you would use the "put" operator \; but +others (like + and ^) can be interesting for color effects.; +#X obj 135 258 #draw_image *>>8; +#X obj 3 367 doc_c 1; +#X obj 14 397 doc_cc 0; +#X text 232 485 Background image.; +#X msg 321 197 tile; +#X text 232 708 Foreground image.; +#X text 232 673 If 1 \, foreground image will be repeated to cover +the background image.; +#X text 232 529 If 1 \, foreground image (inlet 1) will be combined +with background image (inlet 0) \, and then blended with background +image according to transparency of foreground image \, and then inserted +in the result. If 0 \, the blending doesn't occur \, as the transparency +level is considered "opaque". Note that with alpha enabled \, the last +channel of foreground image is cnsidered to represent transparency. +; +#X text 232 730 Initial foreground image position (y x) \, corresponding +to top-left corner of foreground picture.; +#X text 232 805 Resulting image.; +#X obj 97 397 doc_m c0 numop; +#X obj 97 485 doc_m i0 grid; +#X obj 97 651 doc_m i0 tile; +#X obj 97 507 doc_m i0 alpha; +#X text 232 507 \$1=flag; +#X text 232 651 \$1=flag; +#X obj 97 708 doc_m i1 grid; +#X obj 97 730 doc_m i2 (y x); +#X obj 97 805 doc_m o0 grid; +#X obj 0 837 doc_f; +#X obj 97 629 doc_m i0 op; +#X text 232 629 same as arg 0; +#X connect 0 0 1 1; +#X connect 1 0 31 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 16 0; +#X connect 5 0 19 0; +#X connect 6 0 10 0; +#X connect 6 0 31 1; +#X connect 7 0 18 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 12 1 13 1; +#X connect 13 0 14 0; +#X connect 14 0 15 1; +#X connect 15 0 31 2; +#X connect 16 0 15 0; +#X connect 16 1 15 0; +#X connect 16 2 15 0; +#X connect 16 3 15 0; +#X connect 18 0 6 0; +#X connect 19 0 0 0; +#X connect 20 0 31 2; +#X connect 21 0 20 0; +#X connect 31 0 4 0; +#X connect 35 0 31 0; +#X connect 41 1 30 0; +#X connect 42 1 34 0; +#X connect 43 1 46 0; +#X connect 43 1 37 0; +#X connect 44 1 45 0; +#X connect 44 1 38 0; +#X connect 47 1 36 0; +#X connect 48 1 39 0; +#X connect 49 1 40 0; +#X connect 51 1 52 0; diff --git a/externals/gridflow/doc/flow_classes/#draw_points-help.pd b/externals/gridflow/doc/flow_classes/#draw_points-help.pd new file mode 100644 index 00000000..21e2c3d2 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#draw_points-help.pd @@ -0,0 +1,56 @@ +#N canvas 678 62 632 584 10; +#X msg 21 163 240 320 3 #; +#X obj 236 155 #outer + (0 9000); +#X obj 236 174 # cos* 100; +#X obj 236 193 # + 120; +#X obj 236 117 #for 0 12 1; +#X obj 236 100 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 236 136 # * 3000; +#X obj 237 223 display; +#X obj 21 183 #draw_points put (255 255 0); +#X obj 21 203 #out window; +#X text 26 77 [#draw_points] is not yet ready for use.; +#X obj 0 0 doc_h; +#X obj 3 365 doc_i 3; +#X obj 3 493 doc_o 1; +#X obj 14 523 doc_oo 0; +#X obj 14 395 doc_ii 0; +#X obj 14 439 doc_ii 1; +#X obj 14 461 doc_ii 2; +#X obj 3 261 doc_c 0..3; +#X obj 14 291 doc_cc 0; +#X obj 14 311 doc_cc 1; +#X obj 14 333 doc_cc 2; +#X obj 0 555 doc_f; +#X obj 97 333 doc_m c2; +#X obj 97 523 doc_m o0 grid; +#X obj 97 291 doc_m c0 symbol/numop; +#X obj 97 311 doc_m c1 grid; +#X text 232 311 color; +#X text 232 333 points; +#X obj 97 395 doc_m i0 grid; +#X obj 97 439 doc_m i1 grid; +#X obj 97 461 doc_m i2 grid; +#X obj 97 417 doc_m i0 op; +#X text 232 417 same as arg 0; +#X text 232 439 same as arg 1; +#X text 232 461 same as arg 2; +#X text 232 395 image to be drawn on; +#X text 232 523 image that has been drawn on; +#X connect 0 0 8 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 7 0; +#X connect 3 0 8 2; +#X connect 4 0 6 0; +#X connect 5 0 4 0; +#X connect 6 0 1 0; +#X connect 8 0 9 0; +#X connect 23 1 28 0; +#X connect 24 1 37 0; +#X connect 26 1 27 0; +#X connect 29 1 36 0; +#X connect 30 1 34 0; +#X connect 31 1 35 0; +#X connect 32 1 33 0; diff --git a/externals/gridflow/doc/flow_classes/#draw_polygon-help.pd b/externals/gridflow/doc/flow_classes/#draw_polygon-help.pd new file mode 100644 index 00000000..a5afe5e9 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#draw_polygon-help.pd @@ -0,0 +1,116 @@ +#N canvas 628 21 632 642 10; +#X obj 20 349 #out window; +#X obj 383 128 #color; +#X obj 383 72 loadbang; +#X obj 272 107 # rand; +#X obj 20 256 #clip; +#X obj 385 199 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -241291 +-1 -1 0; +#X text 402 200 fill; +#X msg 385 265 draw \$1; +#X obj 385 291 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -241291 +-1 -1 0; +#X text 403 291 none; +#X msg 385 357 omit \$1; +#X text 403 306 last; +#X text 403 320 odd; +#X obj 385 338 listread none last odd; +#X obj 20 37 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 0 1 +; +#X obj 43 169 #checkers; +#X obj 43 150 #for (0 0) (240 320) (1 1); +#X obj 272 50 f; +#X obj 297 50 + 1; +#X obj 272 69 sel 0; +#X obj 235 126 #store; +#X obj 20 75 t b b b; +#X msg 383 109 40 80 100; +#X obj 50 104 loadbang; +#X obj 322 50 % 30; +#X obj 235 164 #fade_lin 4 4; +#X obj 20 56 metro 33.3667; +#X obj 385 246 listread fill line point; +#X text 402 214 line; +#X text 402 228 point; +#X msg 272 88 8 2 # 240 320; +#X msg 459 110 3 # 255; +#X msg 115 169 240 320 3 #; +#X obj 6 188 #store; +#X obj 27 151 bng 15 250 50 0 empty empty empty 17 7 0 10 -241291 -1 +-1; +#X obj 20 287 shunt; +#X obj 57 288 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0 +1; +#X obj 50 306 #fade (16 4 1); +#X obj 0 0 doc_h; +#X obj 3 389 doc_c 0..3; +#X obj 3 508 doc_i 3; +#X obj 3 614 doc_o 1; +#X obj 14 644 doc_oo 0; +#X obj 14 538 doc_ii 0; +#X obj 14 560 doc_ii 1; +#X obj 14 582 doc_ii 2; +#X obj 14 419 doc_cc 0; +#X obj 14 454 doc_cc 1; +#X obj 14 476 doc_cc 2; +#X obj 20 237 #draw_polygon ^ 1; +#X text 232 419 Normally \, you would use the "put" operator \; but +the + and ^ can be interesting for color effects.; +#X text 232 538 Picture on which the polygon will be superimposed. +; +#X text 232 560 Color. (see argument 1); +#X text 232 454 Color of the polygon.; +#X text 232 644 Resulting picture.; +#X text 232 476 Vertices of the polygon.; +#X text 232 582 Vertices. (see argument 2); +#X obj 97 419 doc_m c0 symbol/numop; +#X obj 97 454 doc_m c1 grid; +#X obj 97 476 doc_m c2 grid; +#X obj 97 538 doc_m i0 grid; +#X obj 97 560 doc_m i1 grid; +#X obj 97 582 doc_m i2 grid; +#X obj 97 644 doc_m o0 grid; +#X obj 0 676 doc_f; +#X connect 1 0 49 1; +#X connect 2 0 31 0; +#X connect 3 0 20 1; +#X connect 4 0 35 0; +#X connect 5 0 27 0; +#X connect 7 0 49 0; +#X connect 8 0 13 0; +#X connect 10 0 49 0; +#X connect 13 0 10 0; +#X connect 14 0 26 0; +#X connect 15 0 33 1; +#X connect 16 0 15 0; +#X connect 17 0 18 0; +#X connect 17 0 19 0; +#X connect 18 0 24 0; +#X connect 19 0 30 0; +#X connect 20 0 25 0; +#X connect 21 0 33 0; +#X connect 21 1 20 0; +#X connect 21 2 17 0; +#X connect 22 0 1 0; +#X connect 23 0 32 0; +#X connect 24 0 17 1; +#X connect 25 0 49 2; +#X connect 26 0 21 0; +#X connect 27 0 7 0; +#X connect 30 0 3 0; +#X connect 31 0 1 0; +#X connect 32 0 33 1; +#X connect 33 0 49 0; +#X connect 34 0 16 0; +#X connect 35 0 0 0; +#X connect 35 1 37 0; +#X connect 36 0 35 1; +#X connect 37 0 0 0; +#X connect 49 0 4 0; +#X connect 57 1 50 0; +#X connect 58 1 53 0; +#X connect 59 1 55 0; +#X connect 60 1 51 0; +#X connect 61 1 52 0; +#X connect 62 1 56 0; +#X connect 63 1 54 0; diff --git a/externals/gridflow/doc/flow_classes/#draw_rect-help.pd b/externals/gridflow/doc/flow_classes/#draw_rect-help.pd new file mode 100644 index 00000000..a66a4945 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#draw_rect-help.pd @@ -0,0 +1,40 @@ +#N canvas 335 118 632 443 10; +#X obj 0 0 doc_h; +#X obj 0 414 doc_f; +#X obj 122 57 #draw_rect; +#X obj 14 126 doc_cc 0; +#X obj 14 148 doc_cc 1; +#X obj 14 170 doc_cc 2; +#X obj 3 96 doc_c 2..3; +#X text 232 126 op; +#X text 232 148 color; +#X text 232 170 polygon; +#X obj 97 126 doc_m c0 symbol; +#X obj 97 148 doc_m c1 grid; +#X obj 97 170 doc_m c2 grid; +#X obj 3 202 doc_i 3; +#X obj 3 352 doc_o 1; +#X obj 14 382 doc_oo 0; +#X obj 14 232 doc_ii 0; +#X obj 14 298 doc_ii 1; +#X obj 14 320 doc_ii 2; +#X obj 97 232 doc_m i0 grid; +#X obj 97 254 doc_m i0 outline; +#X obj 97 298 doc_m i1 grid; +#X obj 97 320 doc_m i2 grid; +#X text 232 298 same as arg 1; +#X text 232 232 picture to draw on; +#X text 232 254 0: fill rectangle; +#X text 232 276 1: draw outline only (1 pixel thickness); +#X text 232 382 picture drawn on; +#X obj 97 382 doc_m o0 grid; +#X text 232 320 same as arg 2; +#X connect 10 1 7 0; +#X connect 11 1 8 0; +#X connect 12 1 9 0; +#X connect 19 1 24 0; +#X connect 20 1 26 0; +#X connect 20 1 25 0; +#X connect 21 1 23 0; +#X connect 22 1 29 0; +#X connect 28 1 27 0; diff --git a/externals/gridflow/doc/flow_classes/#draw_slider-help.pd b/externals/gridflow/doc/flow_classes/#draw_slider-help.pd new file mode 100644 index 00000000..fa406625 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#draw_slider-help.pd @@ -0,0 +1,56 @@ +#N canvas 587 8 632 619 10; +#X obj 28 87 metro 100; +#X obj 28 70 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 0 1 +; +#X obj 28 183 #out window; +#X text 232 413 Grid values are clipped to the high and low values +stored in the object; +#X text 232 558 Outputs the modified grid; +#X text 232 448 An integer can be used to vary the minimum value of +the range.; +#X text 232 483 An integer can be used to vary the maximum value of +the range.; +#X obj 28 106 #in scissors.jpg; +#X obj 238 89 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -241291 +-1 -1 0 1; +#X text 378 88 <-- value to be displayed; +#X msg 126 135 255 200 150; +#X text 209 135 <-- colour; +#X obj 28 164 #draw_slider put (0 255 0) (255 0 255) (40 40 80 200) +0 127; +#X text 5 25 Draws a slider-like rectangle on an image.; +#X obj 0 0 doc_h; +#X obj 3 383 doc_i 3; +#X obj 3 528 doc_o 1; +#X obj 14 558 doc_oo 0; +#X obj 14 413 doc_ii 0; +#X obj 14 448 doc_ii 1; +#X obj 14 483 doc_ii 2; +#X obj 14 253 doc_cc 0; +#X obj 14 273 doc_cc 1; +#X obj 14 293 doc_cc 2; +#X obj 14 313 doc_cc 3; +#X obj 14 333 doc_cc 4; +#X obj 97 333 doc_m c4; +#X obj 97 253 doc_m c0 symbol/numop; +#X obj 97 273 doc_m c1 grid[3]; +#X obj 97 293 doc_m c2 grid[3]; +#X obj 97 313 doc_m c3 grid; +#X obj 3 223 doc_c 6; +#X obj 14 353 doc_cc 5; +#X obj 97 353 doc_m c5; +#X obj 97 413 doc_m i0 grid; +#X obj 97 448 doc_m i1 float int; +#X obj 97 483 doc_m i2 float int; +#X obj 97 558 doc_m o0 grid; +#X obj 0 590 doc_f; +#X connect 0 0 7 0; +#X connect 1 0 0 0; +#X connect 7 0 12 0; +#X connect 8 0 12 2; +#X connect 10 0 12 1; +#X connect 12 0 2 0; +#X connect 34 1 3 0; +#X connect 35 1 5 0; +#X connect 36 1 6 0; +#X connect 37 1 4 0; diff --git a/externals/gridflow/doc/flow_classes/#edit_polygon-help.pd b/externals/gridflow/doc/flow_classes/#edit_polygon-help.pd new file mode 100644 index 00000000..8ebd5849 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#edit_polygon-help.pd @@ -0,0 +1,42 @@ +#N canvas 335 118 632 440 10; +#X obj 0 0 doc_h; +#X obj 0 411 doc_f; +#X obj 65 56 #edit_polygon; +#X obj 3 95 doc_c 3; +#X obj 14 125 doc_cc 0; +#X obj 14 147 doc_cc 1; +#X obj 14 169 doc_cc 2; +#X obj 97 125 doc_m c0 symbol; +#X text 232 125 op; +#X text 232 147 color; +#X text 232 169 position; +#X obj 97 147 doc_m c1 grid; +#X obj 97 169 doc_m c2 grid; +#X obj 3 201 doc_i 3; +#X obj 3 327 doc_o 2; +#X obj 14 357 doc_oo 0; +#X obj 14 379 doc_oo 1; +#X obj 14 231 doc_ii 0; +#X obj 14 273 doc_ii 1; +#X obj 14 295 doc_ii 2; +#X obj 97 251 doc_m i0 position; +#X obj 97 231 doc_m i0 grid; +#X obj 97 273 doc_m i1 grid; +#X obj 97 295 doc_m i2 grid; +#X text 232 295 same as arg 2; +#X text 232 273 same as arg 1; +#X text 232 251 from [#out window]; +#X text 201 231 picture to draw on; +#X text 232 357 picture drawn on; +#X obj 97 357 doc_m o0 grid; +#X obj 97 379 doc_m o1 <none>; +#X text 232 379 for future use; +#X text 237 54 probably not finished coding this. (?); +#X connect 7 1 8 0; +#X connect 11 1 9 0; +#X connect 12 1 10 0; +#X connect 20 1 26 0; +#X connect 22 1 25 0; +#X connect 23 1 24 0; +#X connect 29 1 28 0; +#X connect 30 1 31 0; diff --git a/externals/gridflow/doc/flow_classes/#extract_diagonal-help.pd b/externals/gridflow/doc/flow_classes/#extract_diagonal-help.pd new file mode 100644 index 00000000..f21b9272 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#extract_diagonal-help.pd @@ -0,0 +1,32 @@ +#N canvas 0 0 632 547 10; +#X obj 53 82 cv/#SVD; +#X obj 70 104 display; +#X obj 54 174 display; +#X msg 53 63 2 2 f # 30 40 50 60; +#X text 53 43 numbers coming from the equation of an ellipse; +#X text 101 85 eigenvectors show the direction of axes of the ellipse +; +#X text 64 155 eigenvalues show the square of the length of the axes +; +#X obj 23 233 #extract_diagonal; +#X obj 36 257 display; +#X text 130 232 just keep the diagonal of the matrix; +#X obj 24 324 display; +#X text 99 304 just the radiuses; +#X obj 23 304 # sqrt (f #); +#X obj 0 0 doc_h; +#X obj 3 358 doc_c 0; +#X obj 3 398 doc_i 1; +#X obj 3 458 doc_o 1; +#X obj 14 488 doc_oo 0; +#X obj 14 428 doc_ii 0; +#X obj 0 518 doc_f; +#X obj 97 428 doc_m i0 grid; +#X obj 97 488 doc_m o0 grid; +#X connect 0 0 2 0; +#X connect 0 0 7 0; +#X connect 0 1 1 0; +#X connect 3 0 0 0; +#X connect 7 0 8 0; +#X connect 7 0 12 0; +#X connect 12 0 10 0; diff --git a/externals/gridflow/doc/flow_classes/#fade-help.pd b/externals/gridflow/doc/flow_classes/#fade-help.pd new file mode 100644 index 00000000..fe3adfe5 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#fade-help.pd @@ -0,0 +1,57 @@ +#N canvas 676 0 632 596 10; +#X obj 253 236 #out window; +#X obj 131 111 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 131 150 #in; +#X floatatom 295 218 5 0 0 0 - - -; +#X obj 131 89 metro 500; +#X obj 131 70 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 253 113 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 253 152 #in; +#X obj 253 91 metro 500; +#X obj 253 72 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 253 217 #fade; +#X obj 0 0 doc_h; +#X obj 3 390 doc_i 2; +#X obj 3 487 doc_o 1; +#X obj 14 517 doc_oo 0; +#X obj 14 420 doc_ii 0; +#X obj 14 455 doc_ii 1; +#X obj 3 275 doc_c 1; +#X obj 97 420 doc_m i0 grid; +#X obj 97 455 doc_m i1 grid; +#X text 232 332 indicates the amount of one image being blended with +the other. (ex: Integer 5 will take 20% (one fifth) of the first image +and blend it with 80% of the next image.; +#X obj 3 547 doc_also; +#X obj 103 547 lop~; +#X obj 139 547 rzero~; +#X obj 14 332 doc_cc 0; +#X obj 97 332 doc_m c0 grid; +#X text 232 455 same as arg 0; +#X obj 97 517 doc_m o0 grid; +#X obj 0 567 doc_f; +#X text 232 420 grids that are blended into each other over time.; +#X msg 131 131 load b001.jpg; +#X msg 253 133 load r001.jpg; +#X text 11 29 temporal low-pass filter; +#X connect 1 0 30 0; +#X connect 2 0 10 0; +#X connect 3 0 10 1; +#X connect 4 0 1 0; +#X connect 5 0 4 0; +#X connect 6 0 31 0; +#X connect 7 0 10 0; +#X connect 8 0 6 0; +#X connect 9 0 8 0; +#X connect 10 0 0 0; +#X connect 18 1 29 0; +#X connect 19 1 26 0; +#X connect 21 1 22 0; +#X connect 21 1 23 0; +#X connect 25 1 20 0; +#X connect 30 0 2 0; +#X connect 31 0 7 0; diff --git a/externals/gridflow/doc/flow_classes/#fade_lin-help.pd b/externals/gridflow/doc/flow_classes/#fade_lin-help.pd new file mode 100644 index 00000000..189ec0b9 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#fade_lin-help.pd @@ -0,0 +1,36 @@ +#N canvas 684 0 632 543 10; +#X obj 0 0 doc_h; +#X obj 3 212 doc_c 2; +#X obj 77 134 #fade_lin; +#X obj 3 296 doc_i 3; +#X obj 3 454 doc_o 1; +#X obj 14 326 doc_ii 0; +#X obj 14 400 doc_ii 1; +#X obj 14 422 doc_ii 2; +#X obj 14 484 doc_oo 0; +#X obj 14 242 doc_cc 0; +#X obj 14 264 doc_cc 1; +#X obj 97 242 doc_m c0 grid; +#X obj 97 264 doc_m c1 grid; +#X text 232 242 maxraise; +#X text 232 264 maxdrop; +#X obj 97 326 doc_m i0 grid; +#X text 232 326 produces on outlet 0 a piecewise-linear nonrecurrent +fading according to the flow of incoming messages. For example \, if +maxraise=2 and maxdrop=4 \, then with each new message an output is +produced that is at most 2 more or 4 less than the previous output. +; +#X obj 97 400 doc_m i1 grid; +#X obj 97 422 doc_m i2 grid; +#X text 232 400 same as arg 0; +#X text 232 422 same as arg 1; +#X obj 0 514 doc_f; +#X text 16 33 non-linear temporal lowpass filter; +#X text 16 47 (piecewise-constant); +#X text 14 61 it is named "lin" because it has an output similar to +[line] \, though the input is much different.; +#X connect 11 1 13 0; +#X connect 12 1 14 0; +#X connect 15 1 16 0; +#X connect 17 1 19 0; +#X connect 18 1 20 0; diff --git a/externals/gridflow/doc/flow_classes/#fastblur-help.pd b/externals/gridflow/doc/flow_classes/#fastblur-help.pd new file mode 100644 index 00000000..12ce00a6 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#fastblur-help.pd @@ -0,0 +1,90 @@ +#N canvas 310 131 632 598 10; +#N canvas 0 0 450 300 test 0; +#X obj 264 137 # +; +#X obj 23 58 #for (0 0) (5 5) (1 1); +#X obj 23 96 #fold & \, seed 1; +#X obj 23 41 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 23 115 #convolve (3 3 # 1 2 3 4 5 6 7 8 9) \, wrap 0 \, anti +0; +#X obj 22 77 # == 2; +#X obj 23 134 #print; +#X obj 264 156 #print; +#X connect 0 0 7 0; +#X connect 1 0 5 0; +#X connect 2 0 0 0; +#X connect 2 0 4 0; +#X connect 3 0 1 0; +#X connect 4 0 6 0; +#X connect 5 0 2 0; +#X restore 403 28 pd test convolve attr; +#X obj 20 54 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 38 55 metro 33.3667; +#X obj 100 93 loadbang; +#X obj 84 94 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 38 110 #store; +#X obj 38 290 #out window; +#X obj 39 330 display; +#X obj 38 309 fps detailed; +#X obj 84 110 #in teapot.png; +#X obj 248 56 f; +#X obj 274 56 + 1; +#X obj 149 301 #pack; +#X obj 38 85 t b b; +#X obj 38 131 #fastblur; +#X obj 255 96 expr 1+100*pow(sin($f1/25) \, 4); +#X obj 244 76 expr 1+100*pow(sin($f1/20) \, 4); +#X obj 150 167 vsl 15 128 1 128 0 0 empty empty empty 0 -8 0 8 -262144 +-1 -1 0 1; +#X obj 170 167 vsl 15 128 1 128 0 0 empty empty empty 0 -8 0 8 -262144 +-1 -1 0 1; +#X obj 248 37 spigot; +#X obj 294 38 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1 +; +#X obj 38 270 #gamma 700; +#X text 313 38 AUTO; +#X obj 0 0 doc_h; +#X obj 3 423 doc_i 2; +#X obj 3 361 doc_c 1; +#X obj 3 507 doc_o 1; +#X obj 14 537 doc_oo 0; +#X obj 14 453 doc_ii 0; +#X obj 14 475 doc_ii 1; +#X obj 14 391 doc_cc 0; +#X obj 0 569 doc_f; +#X obj 97 537 doc_m o0; +#X obj 97 391 doc_m c0 grid; +#X text 232 391 (y x) kernel size; +#X obj 97 453 doc_m i0 grid; +#X obj 97 475 doc_m i1 grid; +#X text 232 475 same as arg 0; +#X text 232 453 image to be blurred; +#X text 232 537 image blurred; +#X connect 1 0 2 0; +#X connect 2 0 13 0; +#X connect 3 0 9 0; +#X connect 4 0 9 0; +#X connect 5 0 14 0; +#X connect 6 0 8 0; +#X connect 8 0 7 0; +#X connect 9 0 5 1; +#X connect 10 0 11 0; +#X connect 10 0 15 0; +#X connect 10 0 16 0; +#X connect 11 0 10 1; +#X connect 12 0 14 1; +#X connect 13 0 5 0; +#X connect 13 1 19 0; +#X connect 14 0 21 0; +#X connect 15 0 18 0; +#X connect 16 0 17 0; +#X connect 17 0 12 0; +#X connect 18 0 12 1; +#X connect 19 0 10 0; +#X connect 20 0 19 1; +#X connect 21 0 6 0; +#X connect 32 1 39 0; +#X connect 33 1 34 0; +#X connect 35 1 38 0; +#X connect 36 1 37 0; diff --git a/externals/gridflow/doc/flow_classes/#fft-help.pd b/externals/gridflow/doc/flow_classes/#fft-help.pd new file mode 100644 index 00000000..1b240df9 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#fft-help.pd @@ -0,0 +1,73 @@ +#N canvas 653 206 632 642 10; +#X obj 13 144 #cast f; +#X obj 13 236 #cast i; +#X obj 13 86 #in teapot.png; +#X obj 32 64 loadbang; +#X obj 13 65 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X obj 13 106 t a a; +#X obj 13 198 #fft; +#X msg 23 169 help; +#X msg 43 197 skip \$1; +#X obj 64 163 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1 +; +#X obj 52 106 s orig; +#X obj 66 312 r orig; +#X obj 13 331 #out window; +#X obj 13 274 # + 128; +#X obj 13 293 #clip; +#X obj 13 125 #outer * (1 0); +#X obj 13 255 #inner (1 0); +#X text 89 255 convert complex to real (kicking dummy imaginary); +#X text 100 125 convert real to complex (introducing dummy imaginary=0) +; +#X obj 13 217 # / (f # 16); +#X obj 0 0 doc_h; +#X obj 3 355 doc_c 0; +#X obj 3 395 doc_i 1; +#X obj 3 589 doc_o 1; +#X obj 14 619 doc_oo 0; +#X obj 14 425 doc_ii 0; +#X obj 0 651 doc_f; +#X obj 13 312 #join 1; +#X obj 97 619 doc_m o0 grid; +#X obj 97 425 doc_m i0 grid; +#X obj 97 491 doc_m i0 sign; +#X obj 97 535 doc_m i0 skip; +#X text 232 557 1: skip the y dimension (do fft only along x); +#X text 20 35 spatial fft; +#X obj 97 447 doc_m i0 real; +#X text 232 535 0: don't skip the y dimension (do fft along both y +and x); +#X text 232 491 1: forward fft; +#X text 232 513 -1: backward fft; +#X text 232 447 0: complex fft; +#X text 232 469 1: real fft; +#X text 232 425 grid to apply fft on; +#X text 232 619 grid that fft was applied on; +#X connect 0 0 6 0; +#X connect 1 0 16 0; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 4 0 2 0; +#X connect 5 0 15 0; +#X connect 5 1 10 0; +#X connect 6 0 19 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 8 0; +#X connect 11 0 27 1; +#X connect 13 0 14 0; +#X connect 14 0 27 0; +#X connect 15 0 0 0; +#X connect 16 0 13 0; +#X connect 19 0 1 0; +#X connect 27 0 12 0; +#X connect 28 1 41 0; +#X connect 29 1 40 0; +#X connect 30 1 36 0; +#X connect 30 1 37 0; +#X connect 31 1 32 0; +#X connect 31 1 35 0; +#X connect 34 1 39 0; +#X connect 34 1 38 0; diff --git a/externals/gridflow/doc/flow_classes/#finished-help.pd b/externals/gridflow/doc/flow_classes/#finished-help.pd new file mode 100644 index 00000000..46a31bdb --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#finished-help.pd @@ -0,0 +1,54 @@ +#N canvas 648 0 632 642 10; +#X text 21 37 a bang is emitted every time a grid transmission ends +; +#X obj 23 114 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X obj 23 85 #finished; +#X obj 0 0 doc_h; +#X obj 3 568 doc_i 1; +#X obj 3 630 doc_o 1; +#X obj 3 528 doc_c 0; +#X obj 14 660 doc_oo 0; +#X obj 14 598 doc_ii 0; +#X obj 97 598 doc_m i0 grid; +#X obj 97 660 doc_m o0 bang; +#X text 232 598 a bang is emitted every time a grid transmission ends. +; +#X obj 0 710 doc_f; +#X obj 23 66 t a a; +#X obj 89 66 #convolve (1 3 # 1 2 1); +#X text 90 85 this is a pattern where [t b a] doesn't cut it \, because +the bang would be output too early \, as it gets output at GRID_BEGIN +time (the time at which the grid message is sent). But [#convolve] +only outputs its contents after GRID_FLOW time \, which is what [#finished] +ensures. However you still need a [t a a] \, because [#finished]'s +GRID_FINISH time must happen after [#convolve]'s GRID_FINISH \, so +that you can be sure that [#convolve] is really finished with producing +its output.; +#X obj 3 690 doc_also; +#X obj 103 690 #t; +#X text 39 278 the 2nd exception is that it definitely doesn't support +any control-recursion (an object can't start processing a new message +before it has finished processing its message).; +#X obj 410 221 pdp_qt; +#X obj 410 252 print; +#X msg 409 199; +#X text 40 327 the third exception is that the GRID atom type is not +officially recognised by PureData because PureData provides no means +for externals to register new atom types. You can see the effect of +this in how GEM uses the POINTER atom type in an unstable way (which +is also how GridFlow used to do it); +#X text 38 215 this is one of GridFlow's exceptions to how much grid-processing +is like normal pd message passing. there is also the [#t] class that +provides a shortcut for the most common use pattern of [#t].; +#X text 41 416 the fourth exception is that GridInlets support multiple +selectors with quite peculiar autocasts \, meaning that [# +] can't +support the equivalent of the 'list' message in the [+] class.; +#X text 40 479 much of the text of this page should really go somewhere +else \, but there is no place for it yet.; +#X connect 2 0 1 0; +#X connect 9 1 11 0; +#X connect 13 0 2 0; +#X connect 13 1 14 0; +#X connect 16 1 17 0; +#X connect 19 0 20 0; diff --git a/externals/gridflow/doc/flow_classes/#fold-help.pd b/externals/gridflow/doc/flow_classes/#fold-help.pd new file mode 100644 index 00000000..0120aad9 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#fold-help.pd @@ -0,0 +1,80 @@ +#N canvas 678 0 632 661 10; +#X obj 98 184 display; +#X obj 29 252 display; +#X text 26 38 Treats the grid as a grid of one- dimensional grids such +that the same operation (here addition) will be performed on all its +elements together with the base value. the results are combined back. +each #fold operation removes a dimension. syntax: #fold <two-input +operation> <starting value>; +#X obj 143 249 #to_float; +#X obj 143 274 print values; +#X text 6 721 some other forms:; +#X obj 140 722 #fold *; +#X obj 17 695 #fold + \, seed 0; +#X obj 211 722 #fold ^; +#X obj 284 722 #fold &; +#X obj 355 722 #fold |; +#N canvas 0 0 500 313 more 1; +#X obj 98 82 display; +#X obj 28 48 #import (2 2 2); +#X obj 29 170 display; +#X msg 28 27 1 3 1 3 1 3 1 5; +#X text 154 24 <-- clicking here creates a grid through [#import]; +#X obj 122 170 #to_float; +#X obj 122 195 print values; +#X obj 28 137 #fold + \, seed (0 0); +#X connect 1 0 0 0; +#X connect 1 0 7 0; +#X connect 3 0 1 0; +#X connect 5 0 6 0; +#X connect 7 0 2 0; +#X connect 7 0 5 0; +#X restore 160 694 pd more info; +#X msg 28 129 1 3 1 3 1 3 1 3 1 3 1 5; +#X obj 28 153 #import (2 3 2); +#X obj 28 224 #fold +; +#X text 203 129 <-- clicking here creates a grid through [#import] +; +#X obj 3 324 doc_c 1; +#X obj 3 386 doc_i 1; +#X obj 3 570 doc_o 1; +#X obj 0 0 doc_h; +#X obj 14 600 doc_oo 0; +#X obj 14 416 doc_ii 0; +#X obj 14 354 doc_cc 0; +#X text 219 155 [#fold +] computes totals; +#X text 221 176 [#fold inv+] is an alternated sum (+/-); +#X text 225 203 [#fold *] can compute the size of a grid using its +dimension list; +#X text 229 240 [#fold &] can mean "for all"; +#X text 228 260 [#fold |] can mean "there exists (at least one)"; +#X text 224 282 [#fold ^] can mean "there exists an odd number of..." +; +#X obj 97 354 doc_m c0 symbol/numop; +#X text 232 354 the operator to fold with.; +#X obj 97 416 doc_m i0 grid; +#X obj 97 477 doc_m i0 op; +#X obj 97 499 doc_m i0 seed; +#X text 232 477 same as arg 0; +#X text 232 416 replaces every subgrid by the result of a cascade on +that subgrid. Doing that with seed value 0 and operation + on grid +"2 3 5 7" will compute ((((0+2)+3)+5)+7) find the total "17".; +#X text 232 499 the initial value for the folding. (default: whatever +does nothing for the chosen op \; e.g. 0 + \, 0 - \, 1 * \, ...). this +can be a grid of any size \, and this decides the size of the subgrids +we are working on.; +#X obj 97 600 doc_m o0 grid; +#X text 232 600 Outputs a grid that has one less dimension than the +input.; +#X obj 0 632 doc_f; +#X connect 3 0 4 0; +#X connect 12 0 13 0; +#X connect 13 0 0 0; +#X connect 13 0 14 0; +#X connect 14 0 1 0; +#X connect 14 0 3 0; +#X connect 29 1 30 0; +#X connect 31 1 35 0; +#X connect 32 1 34 0; +#X connect 33 1 36 0; +#X connect 37 1 38 0; diff --git a/externals/gridflow/doc/flow_classes/#for-help.pd b/externals/gridflow/doc/flow_classes/#for-help.pd new file mode 100644 index 00000000..28903e51 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#for-help.pd @@ -0,0 +1,83 @@ +#N canvas 661 0 632 642 10; +#X floatatom 13 197 5 0 0 0 - - -; +#X floatatom 45 219 5 0 0 0 - - -; +#X floatatom 78 238 5 0 0 0 - - -; +#X obj 13 329 #print; +#X obj 33 296 display; +#X text 119 238 <-- step value; +#X text 90 217 <-- upper bound; +#X text 60 194 <-- lower bound; +#X obj 13 261 #for 0 8 1; +#X obj 264 328 #print; +#X obj 314 288 display; +#X msg 264 198 0 0; +#X msg 369 244 1 1; +#X msg 326 223 4 4; +#X text 232 484 Upper bound; +#X text 232 506 Step value; +#X text 232 449 Lower bound. As with the other arguments \, they are +overwritten when another value is given.; +#X text 414 244 <-- step value (1); +#X text 373 222 <-- upper bound (2); +#X text 309 197 <-- lower bound (3); +#X text 26 38 When given scalar bounds \, works like a regular [for] +object plugged to a [#import] tuned for a Dim(size) where size is the +number of values produced by a bang to that [for].; +#X text 232 656 Sets the upper bound; +#X text 232 678 Sets the step value; +#X text 232 740 The result of the operation is a single dimension grid +in the case of scalar values and variable dimensions for vectors.; +#X obj 0 0 doc_h; +#X obj 3 538 doc_i 3; +#X obj 3 419 doc_c 3; +#X text 232 568 activate object (send output); +#X text 232 590 Sets the lower bound and activate; +#X text 232 634 Sets the lower bound without activating; +#X text 26 84 When given vector bounds \, will work like any number +of [for] objects producing all possible combinations of their values +in the proper order. (try it below); +#X text 27 132 the formula for knowing the size of the output will +be is floor((to-from)/step).; +#X obj 14 740 doc_oo 0; +#X obj 14 506 doc_cc 2; +#X text 232 612 the three arguments at once; +#X obj 14 449 doc_cc 0; +#X obj 14 484 doc_cc 1; +#X obj 14 568 doc_ii 0; +#X obj 3 710 doc_o 1; +#X obj 14 656 doc_ii 1; +#X obj 14 678 doc_ii 2; +#X text 11 177 With scalar bounds:; +#X text 262 178 With vector bounds:; +#X obj 97 612 doc_m i0 list; +#X obj 97 568 doc_m i0 bang; +#X obj 97 634 doc_m i0 set; +#X obj 97 449 doc_m c0 grid; +#X obj 97 484 doc_m c1 grid; +#X obj 97 506 doc_m c2 grid; +#X obj 97 590 doc_m i0 grid; +#X obj 97 656 doc_m i1 grid; +#X obj 97 678 doc_m i2 grid; +#X obj 0 798 doc_f; +#X obj 264 267 #for (0 0) (8 3) (1 1); +#X obj 97 740 doc_m o0 grid; +#X connect 0 0 8 0; +#X connect 1 0 8 1; +#X connect 2 0 8 2; +#X connect 8 0 4 0; +#X connect 8 0 3 0; +#X connect 11 0 53 0; +#X connect 12 0 53 2; +#X connect 13 0 53 1; +#X connect 43 1 34 0; +#X connect 44 1 27 0; +#X connect 45 1 29 0; +#X connect 46 1 16 0; +#X connect 47 1 14 0; +#X connect 48 1 15 0; +#X connect 49 1 28 0; +#X connect 50 1 21 0; +#X connect 51 1 22 0; +#X connect 53 0 10 0; +#X connect 53 0 9 0; +#X connect 54 1 23 0; diff --git a/externals/gridflow/doc/flow_classes/#from_pix-help.pd b/externals/gridflow/doc/flow_classes/#from_pix-help.pd new file mode 100644 index 00000000..d92aa497 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#from_pix-help.pd @@ -0,0 +1,89 @@ +#N canvas 679 122 632 642 10; +#X text 169 629 \, game_of_life_gem.pd in the examples folder; +#X text 232 575 Grid with 4 channels; +#X text 232 478 With one boolean argument that selects the order in +which the y dimension of the Grid will be read \, defaults to '1'; +#X text 103 629 [#to_pix]; +#X obj 37 128 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 1 +; +#X msg 54 127 yflip \$1; +#X obj 22 39 gemhead; +#X obj 22 107 pix_image; +#X msg 391 55 create \, 1; +#X obj 391 36 loadbang; +#X msg 455 56 destroy; +#X text 36 201 Note : The fps is dependent on the gemwin framerate +; +#X text 101 184 <-- imports gemlist into Grids; +#X text 232 456 Has to be a 'pix' gemlist; +#X text 232 597 Passthrough outlet for gem chain; +#X obj 0 0 doc_h; +#X obj 3 298 doc_c 0; +#X obj 3 545 doc_o 2; +#X obj 3 629 doc_also; +#X obj 14 575 doc_oo 0; +#X obj 14 597 doc_oo 1; +#X obj 3 338 doc_i 2; +#X obj 14 368 doc_ii 0; +#X obj 14 513 doc_ii 1; +#X text 232 513 dummy inlet existing only for weird reasons \, please +ignore.; +#X obj 97 478 doc_m i0 yflip; +#X obj 97 575 doc_m o0 grid; +#X obj 0 649 doc_f; +#X msg 30 82 open images/babbage.jpg; +#X obj 97 513 doc_m i1 <none>; +#X msg 186 90 open \$1; +#X obj 186 71 openpanel; +#X obj 186 54 bng 15 250 50 0 empty empty empty 17 7 0 10 -4034 -1 +-1; +#X obj 30 62 loadbang; +#X obj 22 242 fps; +#X floatatom 22 261 5 0 0 0 - - -; +#X obj 22 223 #out window \, title imported_pix; +#X msg 159 109 cast b; +#X msg 159 147 cast i; +#X obj 22 179 #import_pix; +#X obj 97 368 doc_m i0 cast; +#X text 232 368 numbertype of grid to be output; +#X msg 159 128 cast s; +#X obj 97 390 doc_m i0 colorspace; +#X text 232 412 colorspace rgb: output 3 channels; +#X text 232 390 colorspace rgba: output 4 channels; +#X msg 259 148 colorspace rgb; +#X msg 259 168 colorspace rgba; +#X obj 390 85 gemwin 150; +#X text 232 434 (default: rgba); +#X obj 97 456 doc_m i0 gem_state; +#X obj 97 597 doc_m o1 gem_state; +#X connect 4 0 5 0; +#X connect 5 0 39 0; +#X connect 6 0 7 0; +#X connect 7 0 39 0; +#X connect 8 0 48 0; +#X connect 9 0 8 0; +#X connect 10 0 48 0; +#X connect 18 1 3 0; +#X connect 18 1 0 0; +#X connect 25 1 2 0; +#X connect 26 1 1 0; +#X connect 28 0 7 0; +#X connect 29 1 24 0; +#X connect 30 0 7 0; +#X connect 31 0 30 0; +#X connect 32 0 31 0; +#X connect 33 0 28 0; +#X connect 34 0 35 0; +#X connect 36 0 34 0; +#X connect 37 0 39 0; +#X connect 38 0 39 0; +#X connect 39 0 36 0; +#X connect 40 1 41 0; +#X connect 42 0 39 0; +#X connect 43 1 44 0; +#X connect 43 1 45 0; +#X connect 43 1 49 0; +#X connect 46 0 39 0; +#X connect 47 0 39 0; +#X connect 50 1 13 0; +#X connect 51 1 14 0; diff --git a/externals/gridflow/doc/flow_classes/#gamma-help.pd b/externals/gridflow/doc/flow_classes/#gamma-help.pd new file mode 100644 index 00000000..adbec0dd --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#gamma-help.pd @@ -0,0 +1,29 @@ +#N canvas 535 121 632 375 10; +#X obj 0 0 doc_h; +#X obj 0 346 doc_f; +#X obj 57 63 #gamma; +#X obj 3 118 doc_c 1; +#X obj 3 180 doc_i 2; +#X obj 3 264 doc_o 1; +#X obj 14 148 doc_cc 0; +#X obj 14 210 doc_ii 0; +#X obj 14 232 doc_ii 1; +#X obj 14 294 doc_oo 0; +#X obj 3 326 doc_also; +#X obj 103 326 # gamma; +#X text 175 63 accelerated (cached) version of [# gamma]; +#X obj 97 210 doc_m i0 grid; +#X obj 97 148 doc_m c0 float/int; +#X obj 97 232 doc_m i1 float int; +#X obj 97 294 doc_m o0 grid; +#X text 232 148 positive int; +#X text 175 82 note: this only accepts a single float argument \, whereas +[# gamma] allows a grid argument.; +#X text 232 232 same as arg 0; +#X text 232 210 pixels to apply on; +#X text 232 294 output pixels; +#X connect 10 1 11 0; +#X connect 13 1 20 0; +#X connect 14 1 17 0; +#X connect 15 1 19 0; +#X connect 16 1 21 0; diff --git a/externals/gridflow/doc/flow_classes/#grade-help.pd b/externals/gridflow/doc/flow_classes/#grade-help.pd new file mode 100644 index 00000000..d05aeaea --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#grade-help.pd @@ -0,0 +1,45 @@ +#N canvas 690 0 632 680 10; +#X text 143 55 splits a dim[a... \, b] grid into dim[b] vectors that +each contain numbers from 0 to b-1 indicating the ordering of the values. +the result is a dim[a... \, b] grid.; +#X floatatom 19 114 5 0 0 0 - - -; +#X floatatom 60 114 5 0 0 0 - - -; +#X floatatom 101 114 5 0 0 0 - - -; +#X floatatom 142 114 5 0 0 0 - - -; +#X obj 19 146 #pack 4; +#X obj 19 179 #grade; +#X obj 19 208 #print; +#X obj 0 0 doc_h; +#X obj 3 250 doc_c 0; +#X obj 3 290 doc_i 1; +#X obj 3 350 doc_o 1; +#X obj 14 380 doc_oo 0; +#X obj 14 320 doc_ii 0; +#X obj 97 320 doc_m i0 grid; +#X obj 97 380 doc_m o0 grid; +#X text 232 380 splits a Dim[A... \, B] grid into Dim[B] vectors \, +producing new Dim[B] vectors that each contain numbers from 0 to B-1 +indicating the ordering of the values. The result is a Dim[A... \, +B] grid.; +#X text 232 441 for example \, connecting a [#grade] to a [#outer ignore +0] to a [#store] object \, storing a single vector into [#store] \, +and sending the same vector to [#grade] \, will sort the values of +the vector. however for higher-dimensional grids \, what should go +between [#store] and [#grade] to achieve the same result would be more +complex.; +#X text 232 541 you may achieve different kinds of sorting by applying +various filters before [#grade]. the possibilities are unlimited. if +you plug [#grade] directly into another [#grade] \, you will get the +inverse arrangement \, which allows to take the sorted values and make +them unsorted in the original way. note that this is really not the +same as just listing the values backwards.; +#X obj 0 651 doc_f; +#X connect 1 0 5 0; +#X connect 2 0 5 1; +#X connect 3 0 5 2; +#X connect 4 0 5 3; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 15 1 16 0; +#X connect 15 1 17 0; +#X connect 15 1 18 0; diff --git a/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-help.pd b/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-help.pd new file mode 100644 index 00000000..c98ea289 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#greyscale_to_rgb-help.pd @@ -0,0 +1,26 @@ +#N canvas 693 0 632 471 10; +#X obj 19 161 s xx; +#X obj 19 185 r xx; +#X obj 19 105 #in; +#X obj 19 141 #rgb_to_greyscale; +#X obj 19 205 #greyscale_to_rgb; +#X obj 19 243 #out window; +#X msg 19 74 load bluemarble.jpg; +#X obj 0 0 doc_h; +#X obj 3 278 doc_c 0; +#X obj 3 318 doc_i 1; +#X obj 3 380 doc_o 1; +#X obj 14 348 doc_ii 0; +#X obj 14 410 doc_oo 0; +#X obj 97 348 doc_m i0; +#X obj 97 410 doc_m o0; +#X text 232 410 rgb pixels; +#X text 232 348 greyscale pixels; +#X obj 0 442 doc_f; +#X connect 1 0 4 0; +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X connect 4 0 5 0; +#X connect 6 0 2 0; +#X connect 13 1 16 0; +#X connect 14 1 15 0; diff --git a/externals/gridflow/doc/flow_classes/#hello-help.pd b/externals/gridflow/doc/flow_classes/#hello-help.pd new file mode 100644 index 00000000..d759b412 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#hello-help.pd @@ -0,0 +1,23 @@ +#N canvas 610 97 632 367 10; +#X obj 92 137 #out window; +#X obj 92 117 #hello; +#X obj 92 77 loadbang; +#X obj 0 0 doc_h; +#X obj 3 170 doc_c; +#X obj 0 334 doc_f; +#X obj 3 210 doc_i 1; +#X obj 14 240 doc_ii 0; +#X obj 97 240 doc_m i0 list; +#X text 232 240 Size of the grid.; +#X obj 3 272 doc_o 1; +#X obj 14 302 doc_oo 0; +#X obj 97 302 doc_m o0 grid; +#X text 9 35 Generates a television test pattern of 7 colour bars à +la SMPTE.; +#X text 232 302 Returns a grid representing the 7 colour bars.; +#X msg 92 97 200 200; +#X connect 1 0 0 0; +#X connect 2 0 15 0; +#X connect 8 1 9 0; +#X connect 12 1 14 0; +#X connect 15 0 1 0; diff --git a/externals/gridflow/doc/flow_classes/#hueshift-help.pd b/externals/gridflow/doc/flow_classes/#hueshift-help.pd new file mode 100644 index 00000000..7b5853d7 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#hueshift-help.pd @@ -0,0 +1,20 @@ +#N canvas 692 0 632 364 10; +#X obj 0 0 doc_h; +#X obj 65 74 #hueshift; +#X obj 3 105 doc_c 0..1; +#X obj 3 165 doc_i 2; +#X obj 3 275 doc_o 1; +#X obj 14 195 doc_ii 0; +#X obj 14 243 doc_ii 1; +#X obj 14 135 doc_cc 0; +#X obj 14 305 doc_oo 0; +#X obj 97 135 doc_m c0 float; +#X obj 97 195 doc_m i0 grid; +#X obj 97 243 doc_m i1 float; +#X text 232 243 same as arg 0; +#X obj 97 305 doc_m o0 grid; +#X text 232 195 RGB picture that gets hueshifted by a rotation in the +colorwheel by the specified angle \; it gets sent to outlet 0; +#X obj 0 335 doc_f; +#X connect 10 1 14 0; +#X connect 11 1 12 0; diff --git a/externals/gridflow/doc/flow_classes/#import-help.pd b/externals/gridflow/doc/flow_classes/#import-help.pd new file mode 100644 index 00000000..2620c142 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#import-help.pd @@ -0,0 +1,88 @@ +#N canvas 648 0 632 642 10; +#X msg 55 123 reset; +#X obj 13 59 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X msg 13 123 200; +#X obj 13 100 until; +#X msg 13 79 230400; +#X obj 13 177 #out window; +#X text 232 250 The argument establishes grid dimensions in parentheses +in the order of columns \, rows and grid dimensions.; +#X text 232 456 Symbols are considered as a list of ascii characters. +; +#X text 232 478 Like a sequence of ints sent one after another \, except +in a single message.; +#X text 232 680 The grid resulting from the incoming integers and/or +grids is output from the outlet.; +#X text 99 24 This object allows you to produce grids from non-grid +data \, such as integers and lists of integers. This object also reframes/resyncs +grids so that multiple grids may be joined together \, or single grids +may be split. That kind of operation is already done implicitly in +many cases (e.g. sending an integer or list to a grid-receiving inlet) +but using this object you have greater flexibility on the conversion. +; +#X text 232 421 This equivalent to filtering the grid through an [#to_float] +object. It is over ten times faster.; +#X msg 157 125 per_message; +#X msg 158 147 240 320 3; +#X text 232 347 Begins a new grid if there is no current grid. puts +that integer in the current grid. ends the grid if it is full. the +constructed grid is not stored: it is streamed. the stream is buffered +\, so the output is in packets of about a thousand numbers.; +#X text 232 579 "per message" : the grid will shape itself according +to the incoming data. Almost obsolete as sending a list to any grid +inlet will result in the same except the latter can not be cast to +other than int32.; +#X text 232 535 "to_ascii \$1" converts ints as decimal in ascii codes +; +#X obj 294 166 #import; +#X msg 294 144 to_ascii \$1; +#X floatatom 294 124 5 0 0 0 - - -; +#X obj 294 188 #print; +#X obj 0 0 doc_h; +#X obj 3 317 doc_i 2; +#X obj 13 149 #import (240 320 3); +#X obj 3 650 doc_o 1; +#X obj 3 220 doc_c 2; +#X text 232 285 default: i; +#X obj 14 347 doc_ii 0; +#X obj 14 557 doc_ii 1; +#X obj 14 250 doc_cc 0; +#X obj 14 285 doc_cc 1; +#X obj 97 250 doc_m c0 grid; +#X obj 97 285 doc_m c1 numtype; +#X obj 97 347 doc_m i0 float; +#X obj 97 456 doc_m i0 symbol; +#X obj 97 478 doc_m i0 list; +#X obj 97 513 doc_m i0 reset; +#X text 232 513 aborts the current grid if there is one.; +#X obj 97 535 doc_m i0 to_ascii; +#X obj 97 421 doc_m i0 grid; +#X obj 97 579 doc_m i1 per_message; +#X obj 97 557 doc_m i1 grid; +#X obj 14 680 doc_oo 0; +#X obj 97 680 doc_m o0 grid; +#X obj 0 725 doc_f; +#X text 232 557 same as arg 0; +#X connect 0 0 23 0; +#X connect 1 0 4 0; +#X connect 2 0 23 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 12 0 23 1; +#X connect 13 0 23 1; +#X connect 17 0 20 0; +#X connect 18 0 17 0; +#X connect 19 0 18 0; +#X connect 23 0 5 0; +#X connect 31 1 6 0; +#X connect 32 1 26 0; +#X connect 33 1 14 0; +#X connect 34 1 7 0; +#X connect 35 1 8 0; +#X connect 36 1 37 0; +#X connect 38 1 16 0; +#X connect 39 1 11 0; +#X connect 40 1 15 0; +#X connect 41 1 45 0; +#X connect 43 1 9 0; diff --git a/externals/gridflow/doc/flow_classes/#in-help.pd b/externals/gridflow/doc/flow_classes/#in-help.pd new file mode 100644 index 00000000..cbb4cd46 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#in-help.pd @@ -0,0 +1,236 @@ +#N canvas 679 0 632 642 10; +#X obj 354 172 #out window; +#X text 13 34 This object imports a grid \, usually an image \, video +or live stream.; +#X msg 362 126 open working.jpg; +#X obj 354 106 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X text 55 181 <--click here; +#X text 232 759 "loop 0" - turns off the loop option. The video stops +once it reaches the end.; +#X text 232 1060 Signals the end of a file and when a file is unreadable. +; +#X text 232 1038 Displays the resulting grid when connected to [#out +window]; +#N canvas 82 93 663 454 quicktime 0; +#X text 9 9 The following messages can be used to set parameters for +video (.mov) files.; +#X text 128 283 different versions of LibQuickTime may include support +for different codecs \, and some may also support entirely different +wrapper formats such as AVI.; +#X text 129 367 Codecs must be set before first frame is written.; +#X text 128 330 QuickTime library for Macintosh: Apple QuickTime (some +codecs/features may not be available).; +#X obj 9 272 cnv 15 24 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X msg 38 230 codec jpg; +#X msg 23 116 framerate 33; +#X msg 33 203 colorspace rgb; +#X msg 18 78 size 400 600; +#X obj 10 272 #in; +#X text 145 117 Number of frames per second.; +#X msg 32 171 parameter jpeg_quality 85; +#X text 187 147 Determines window size when reading a video file.; +#X text 129 230 quicktime library for linux accepts LibQuickTime (libquicktime.so). +codecs currently available are: Raw \, jpeg \, png \, mipa \, yuv2 +\, yuv4.; +#X text 134 84 Sets height and width. Must be set before setting the +codec parameters and after setting framerate and codec.; +#X text 107 230 <--; +#X text 108 80 <--; +#X text 119 118 <--; +#X text 108 80 <--; +#X text 108 80 <--; +#X text 162 147 <--; +#X text 212 173 <--; +#X text 139 206 <--; +#X text 237 174 Sets compression quality (100 being the highest quality +\, but a large file. 75-85 is the standard setting).; +#X text 163 209 Other colorspaces include rgba \, bgr \, bgra \, yuv +\, yuva.; +#X msg 10 54 open example.mov; +#X msg 28 145 force_size 480 640; +#X obj 103 427 #record; +#X text 15 427 see also :; +#X connect 5 0 9 0; +#X connect 6 0 9 0; +#X connect 7 0 9 0; +#X connect 8 0 9 0; +#X connect 11 0 9 0; +#X connect 25 0 9 0; +#X connect 26 0 9 0; +#X restore 251 964 pd quicktime file messages; +#X obj 354 150 #in; +#X floatatom 202 195 5 0 0 0 - - -; +#X msg 202 151 set 2; +#X msg 202 107 loop 0; +#X msg 202 129 loop 1; +#X floatatom 32 285 5 0 0 0 - - -; +#X msg 202 173 rewind; +#X obj 41 267 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 17 227 #in; +#X text 39 98 <--click here; +#X obj 17 96 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 17 120 metro 33.3; +#X obj 356 234 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 356 280 #out window; +#X obj 356 258 #in sewing.jpg; +#X text 378 234 <--click here; +#X text 183 947 For info about messages specifically for quickTime +files \, click on:; +#N canvas 150 0 874 560 more 0; +#X msg 191 388 open videodev \$1 \, get; +#X msg 52 147 brightness 1000; +#X msg 41 124 hue 1000; +#X msg 26 101 color 1000; +#X msg 65 171 contrast 1000; +#X msg 14 78 whiteness 1000; +#X msg 80 264 channel 2; +#X msg 80 294 tuner 2; +#X msg 81 324 norm 2; +#X msg 81 352 frequency 2; +#X msg 190 456 transfer mmap 4; +#X msg 191 356 transfer read; +#X msg 190 434 colorspace RGB24; +#X msg 191 411 size 400 600; +#X obj 14 441 #in; +#X obj 192 172 #contrast; +#X text 166 172 or; +#X text 306 411 Sets height and width of the input.; +#X text 322 488 In the case of mmap \, the extra numeric argument sets +the queue length in number of frames \, so you can select an appropriate +tradeoff between efficiency and latency.; +#X text 16 12 Grid Settings; +#X text 322 457 This is the standard and fastest way to receive pictures +from the camera.; +#X text 121 99 Message "get brightness" or "get" followed by any of +the other colour attributes will display its values in the console. +; +#X text 375 390 Opens video device.; +#X text 331 435 Supported values are RGB24 or YUV420P.; +#X text 14 48 Color Adjustments; +#X text 144 75 Values from 0 to 65535; +#X text 283 412 <--; +#X text 309 435 <--; +#X text 345 390 <--; +#X text 300 456 <--; +#X text 287 357 <--; +#X text 310 357 Some cameras/drivers only support "transfer read" and +not mmap.; +#X text 6 520 see also :; +#X obj 92 520 #camera; +#X connect 0 0 14 0; +#X connect 1 0 14 0; +#X connect 2 0 14 0; +#X connect 3 0 14 0; +#X connect 4 0 14 0; +#X connect 5 0 14 0; +#X connect 6 0 14 0; +#X connect 7 0 14 0; +#X connect 8 0 14 0; +#X connect 9 0 14 0; +#X connect 10 0 14 0; +#X connect 11 0 14 0; +#X connect 12 0 14 0; +#X connect 13 0 14 0; +#X restore 251 925 pd more info about video devices; +#X text 183 908 For info about messages specifically for video devices +\, click on:; +#X text 169 213 (and turn off the metro); +#X text 244 195 <-- vary this; +#X text 352 74 IMAGE FILES:; +#X text 12 72 VIDEO FILES:; +#X obj 28 183 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X text 380 106 <-- click here; +#X text 68 265 <-- sends a bang upon reaching; +#X text 97 278 the end of the file; +#X obj 17 305 #out window \, title video; +#X text 232 724 "loop 1" - Restarts a video each time it reaches the +end (default setting).; +#X obj 41 248 route bang; +#X msg 24 147 open violoncelle.mov; +#X obj 0 0 doc_h; +#X obj 3 450 doc_i 1; +#X obj 3 1008 doc_o 2; +#X obj 14 480 doc_ii 0; +#X obj 14 1038 doc_oo 0; +#X obj 14 1060 doc_oo 1; +#X obj 3 332 doc_c 1..2; +#X text 164 389 auto-open with auto-detect of the format-handler; +#X text 207 409 auto-open with manual choice of the format-handler +; +#X obj 97 794 doc_m i0 open; +#X obj 97 851 doc_m i0 set; +#X obj 97 667 doc_m i0 close; +#X obj 97 829 doc_m i0 rewind; +#X obj 97 724 doc_m i0 loop; +#X obj 97 645 doc_m i0 float int; +#X obj 97 1038 doc_m o0 grid; +#X obj 97 1060 doc_m o1 bang; +#X obj 3 1127 doc_also; +#X obj 103 1127 #out; +#X obj 32 370 #in; +#X obj 33 391 #in filename.suffix; +#X obj 34 411 #in handler filename.suffix; +#X text 64 369 nothing opened \, you have to open by yourself; +#X text 232 794 \$1=filename. sends it as a resource to [#in]. For +example: "open sewing.jpg".; +#X obj 97 480 doc_m i0 bang; +#X obj 97 1082 doc_m o1 float int; +#X text 232 1082 frame number of the frame currently being viewed. +Applies to formats that have frame numbers \, i.e. video.; +#X text 232 480 A bang reads a frame and sends it through the outlet. +Since frames from videos and live streams are read as a series of individual +grids \, successive bangs advance through the frames. A bang reads +a frame and sends it through the outlet. Since frames from videos and +live streams are read as a series of individual grids \, successive +bangs advance through the frames. this is format-specific. most formats +produce grids that have dimensions (rows columns rgb). In formats that +read from a file \, reading another picture will continue if there +are several pictures in the same file \, but if the end of file is +reached instead \, it will rewind and send the first picture again. +; +#X obj 0 1147 doc_f; +#X text 232 667 Closes the video input device. Only necessary when +you are using a live capture device.; +#X text 232 829 Will rewind video to the beginning.; +#X text 232 851 select the video frame numbered \$1 \, where 0 is the +first frame. A bang must be sent to [#in] in order to display the frame. +this only works with video file formats.; +#X text 232 645 same as set \$1 \, bang; +#X obj 97 702 doc_m i0 load; +#X text 232 702 shortcut for open \$1 \, bang \, close; +#X connect 2 0 9 0; +#X connect 3 0 9 0; +#X connect 9 0 0 0; +#X connect 10 0 17 0; +#X connect 11 0 17 0; +#X connect 12 0 17 0; +#X connect 13 0 17 0; +#X connect 15 0 17 0; +#X connect 17 0 36 0; +#X connect 17 1 14 0; +#X connect 17 1 38 0; +#X connect 19 0 20 0; +#X connect 20 0 17 0; +#X connect 21 0 23 0; +#X connect 23 0 22 0; +#X connect 32 0 17 0; +#X connect 38 0 16 0; +#X connect 39 0 17 0; +#X connect 49 1 63 0; +#X connect 50 1 71 0; +#X connect 51 1 69 0; +#X connect 52 1 70 0; +#X connect 53 1 37 0; +#X connect 53 1 5 0; +#X connect 54 1 72 0; +#X connect 55 1 7 0; +#X connect 56 1 6 0; +#X connect 57 1 58 0; +#X connect 64 1 67 0; +#X connect 65 1 66 0; +#X connect 73 1 74 0; diff --git a/externals/gridflow/doc/flow_classes/#inner-help.pd b/externals/gridflow/doc/flow_classes/#inner-help.pd new file mode 100644 index 00000000..612a2c6a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#inner-help.pd @@ -0,0 +1,56 @@ +#N canvas 666 0 632 642 10; +#X obj 0 0 doc_h; +#X obj 3 158 doc_c 1; +#X obj 3 218 doc_i 2; +#X obj 3 560 doc_o 1; +#X obj 14 188 doc_cc 0; +#X obj 14 248 doc_ii 0; +#X obj 14 528 doc_ii 1; +#X obj 14 590 doc_oo 0; +#X text 232 248 Splits the Dim(anyA... \, lastA) left-hand grid into +Dim(anyA...) pieces of Dim(lastA) size.; +#X text 232 283 Splits the Dim(firstB \, anyB...) right-hand grid into +Dim(anyB...) pieces of Dim(firstB) size.; +#X text 232 318 On every piece pair \, does [#] using the specified +op_para operation \, followed by a [#fold] using the specified op_fold +operator and base value.; +#X text 232 366 creates a Dim(anyA... \, anyB...) grid by assembling +all the results together.; +#X text 232 401 (note: lastA must be equal to firstB.); +#X text 232 528 same as arg 0; +#X text 232 471 the operation that combines the values from the two +grids together. this defaults to "*" (as in the matrix product); +#X text 232 423 the operation that combines the result of the "op" +operations together. this defaults to "+" (as in the matrix product) +; +#X text 232 506 the base value for the fold; +#X obj 0 640 doc_f; +#X obj 97 248 doc_m i0 grid; +#X obj 97 188 doc_m c0 grid; +#X obj 97 471 doc_m i0 op; +#X obj 97 506 doc_m i0 seed; +#X obj 97 528 doc_m i1 grid; +#X obj 97 590 doc_m o0 grid; +#X obj 97 423 doc_m i0 fold; +#X obj 3 620 doc_also; +#X obj 103 620 #outer *; +#X obj 163 620 #fold +; +#X obj 62 89 #inner; +#X text 160 48 think of this one as a special combination of [#outer] +\, [#] and [#fold]. this is one of the most complex operations. It +is very useful for performing linear transforms like rotations \, scalings +\, shearings \, and some kinds of color remappings. A linear transform +is done by something called matrix multiplication \, which happens +to be [#inner]. [#inner] also does dot product and other funny operations. +; +#X connect 18 1 8 0; +#X connect 18 1 9 0; +#X connect 18 1 10 0; +#X connect 18 1 11 0; +#X connect 18 1 12 0; +#X connect 20 1 14 0; +#X connect 21 1 16 0; +#X connect 22 1 13 0; +#X connect 24 1 15 0; +#X connect 25 1 26 0; +#X connect 25 1 27 0; diff --git a/externals/gridflow/doc/flow_classes/#io.aalib-help.pd b/externals/gridflow/doc/flow_classes/#io.aalib-help.pd new file mode 100644 index 00000000..e97765d1 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#io.aalib-help.pd @@ -0,0 +1,45 @@ +#N canvas 684 0 632 568 10; +#X obj 0 0 doc_h; +#X obj 3 67 doc_c; +#X msg 48 109 open aalib X11; +#X text 161 105 Normally "X11" with uppercase X \; else consult the +AALib manual.; +#X text 161 141 you can pass "commandline options" of AALib here \, +after "X11" or whichever other thing you chose instead of "X11".; +#X obj 3 179 doc_i 1; +#X obj 3 477 doc_o 1; +#X obj 14 209 doc_ii 0; +#X obj 14 507 doc_oo 0; +#X obj 97 507 doc_m o0 grid; +#X obj 97 209 doc_m i0 grid; +#X text 232 209 grid(rows columns 1): converts a greyscale image to +an ascii image and possibly displays it. note that the image is typically +downscaled by a factor of 2 by aalib itself.; +#X text 232 257 grid(rows columns 2): the inverse of "dump". Both together +in a loop allow to post-process aalib's buffer before displaying. Goes +well with "draw" \, "autodraw". the first channel is for the ascii +codes and the second channel is for the attributes (colour \, blink). +; +#X obj 97 432 doc_m i0 print; +#X text 232 432 \$1=y \$2=x \$3=attr \$4=text where text is a symbol +and the rest are ints.; +#X obj 97 331 doc_m i0 autodraw; +#X text 232 331 "autodraw 1" does a "draw" after each incoming grid. +; +#X text 232 353 "autodraw 0" does not.; +#X obj 97 375 doc_m i0 draw; +#X text 232 375 eventually you need to use this if you use "autodraw +0".; +#X obj 97 397 doc_m i0 dump; +#X text 232 397 produces a Dim[y \, x \, 2] grid whose two channels +are ascii character codes and character attributes.; +#X obj 0 539 doc_f; +#X text 232 507 result of 'dump'; +#X connect 9 1 23 0; +#X connect 10 1 11 0; +#X connect 10 1 12 0; +#X connect 13 1 14 0; +#X connect 15 1 16 0; +#X connect 15 1 17 0; +#X connect 18 1 19 0; +#X connect 20 1 21 0; diff --git a/externals/gridflow/doc/flow_classes/#io.grid-help.pd b/externals/gridflow/doc/flow_classes/#io.grid-help.pd new file mode 100644 index 00000000..fc30e0cc --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#io.grid-help.pd @@ -0,0 +1,44 @@ +#N canvas 689 0 632 608 10; +#X obj 0 0 doc_h; +#X obj 3 160 doc_i 1; +#X text 62 37 This is GridFlow's special file format. This is the only +I/O format that can hold nearly anything that the [#store] object can. +; +#X obj 3 92 doc_c ...; +#X msg 62 127 open foo.grid; +#X obj 14 190 doc_ii 0; +#X obj 97 465 doc_m i0 type; +#X text 232 465 type that the output will be written as. (#out only) +; +#X text 232 487 supported: uint8 int32 and perhaps some others; +#X obj 97 369 doc_m i0 headerful; +#X obj 97 404 doc_m i0 headerless; +#X text 232 369 cancels "headerless" (and back to reading the real +.grid format); +#X text 232 404 instead of reading .grid files with header \, will +read raw data \, faking a .grid header to itself. It will use the hereby +specified dimension list \, as well as two other settings: type and +endian.; +#X obj 97 190 doc_m i0 endian; +#X text 232 190 When writing "raw" data \, a file may be considered +a long string of base 256 digits (called bytes) \, but different computers +have different conventions for dealing with them:; +#X text 232 238 big: A number will be written starting with the biggest +digit. This is the natural way on the Macintosh \, Sun \, Amiga \, +and so on.; +#X text 232 286 little: A number will be written starting with the +smallest digit. This is the natural way on the Intel 386/Pentium.; +#X text 232 321 same: A number will be written in whichever way is +more natural on this computer. The natural way is slightly faster to +handle. This is the default setting.; +#X obj 0 579 doc_f; +#X obj 3 519 doc_o 1; +#X obj 14 549 doc_oo 0; +#X connect 6 1 7 0; +#X connect 6 1 8 0; +#X connect 9 1 11 0; +#X connect 10 1 12 0; +#X connect 13 1 14 0; +#X connect 13 1 15 0; +#X connect 13 1 16 0; +#X connect 13 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/#io.jpeg-help.pd b/externals/gridflow/doc/flow_classes/#io.jpeg-help.pd new file mode 100644 index 00000000..363c48a7 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#io.jpeg-help.pd @@ -0,0 +1,16 @@ +#N canvas 666 0 632 245 10; +#X obj 0 0 doc_h; +#X obj 3 70 doc_i 1; +#X obj 3 30 doc_c; +#X obj 3 176 doc_o; +#X obj 0 216 doc_f; +#X obj 14 100 doc_ii 0; +#X obj 97 100 doc_m i0 bang; +#X obj 97 122 doc_m i0 grid; +#X obj 97 144 doc_m i0 quality; +#X text 232 100 read image (when in [#in]); +#X text 232 122 write image (when in [#out]); +#X text 232 144 quality percentage (when in [#out]); +#X connect 6 1 9 0; +#X connect 7 1 10 0; +#X connect 8 1 11 0; diff --git a/externals/gridflow/doc/flow_classes/#io.png-help.pd b/externals/gridflow/doc/flow_classes/#io.png-help.pd new file mode 100644 index 00000000..0a2f1d05 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#io.png-help.pd @@ -0,0 +1,18 @@ +#N canvas 674 0 632 267 10; +#X obj 0 0 doc_h; +#X obj 3 70 doc_i 1; +#X obj 14 100 doc_ii 0; +#X obj 97 100 doc_m i0 grid; +#X text 232 100 1-channel is taken as Y 8 (greyscale); +#X text 232 122 2-channel is taken as YA 8:8 (greyscale and transparency) +; +#X text 232 144 3-channel is taken as RGB 8:8:8; +#X text 232 166 4-channel is taken as RGBA 8:8:8 (colour with transparency) +; +#X obj 3 30 doc_c; +#X obj 3 198 doc_o; +#X obj 0 238 doc_f; +#X connect 3 1 4 0; +#X connect 3 1 5 0; +#X connect 3 1 6 0; +#X connect 3 1 7 0; diff --git a/externals/gridflow/doc/flow_classes/#io.quicktime-help.pd b/externals/gridflow/doc/flow_classes/#io.quicktime-help.pd new file mode 100644 index 00000000..c4cb6713 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#io.quicktime-help.pd @@ -0,0 +1,69 @@ +#N canvas 668 0 632 642 10; +#X obj 0 0 doc_h; +#X obj 3 218 doc_i 1; +#X obj 14 248 doc_ii 0; +#X text 190 43 Support for .mov files. This format supports frame-seek +and frame-tell. Uses the HW-QuickTime library aka QuickTime4Linux (libquicktime.so). +There is also a variant on the same library and that project is just +called LibQuickTime. Some versions of those libraries may include support +for different codecs \, and some also may support entirely different +wrapper formats such as AVI. On Macintosh \, Apple QuickTime is used +instead \, but several of the following messages may not be available. +; +#X obj 97 248 doc_m i0 codec; +#X text 232 248 Allowed values are at least: raw \, jpeg \, png \, +mjpa \, yuv2 \, yuv4. Some other values may allowed \, depending on +the version of the library and which codec plugins are installed. Must +be set before the first frame is written. only applies to [#out]. Choosing +a codec is important because codecs influence greatly the speed of +encoding \, the speed of decoding \, the size of the written file \, +and its fidelity to the original content. Note that there exist other +Apple-QuickTime codecs that are not supported by HW-QuickTime.; +#X obj 97 584 doc_m i0 parameter; +#X text 232 584 \$1=symbol \$2=int; +#X text 232 606 Sets special codec-specific settings. For example: +"parameter jpeg_quality 75"; +#X obj 97 479 doc_m i0 framerate; +#X text 232 479 \$1=int; +#X text 232 501 Sets the framerate of the file. This is not used by +GridFlow when reading a file \, but other programs usually care.; +#X obj 97 387 doc_m i0 colorspace; +#X text 232 387 Allowed values are rgb \, rgba \, bgr \, bgra \, yuv +\, yuva. Normally you don't need this.; +#X obj 97 641 doc_m i0 size; +#X text 232 641 \$1=height \$2=width; +#X obj 3 721 doc_o 1; +#X obj 3 901 doc_also; +#X text 232 663 Forces a window size when writing. Usually this has +to be used _after_ setting the framerate and codec and _before_ setting +the codec-parameters. (Strange. Sorry.); +#X text 232 422 \$1=height \$2=width; +#X text 232 444 forces a window size when reading. this is a workaround +for a problem in HW-QuickTime.; +#X obj 3 178 doc_c; +#X obj 0 921 doc_f; +#X obj 97 422 doc_m i0 force_size; +#X obj 97 549 doc_m i0 get; +#X text 232 549 output various properties of the video that is open +(#in) (see outlet 0); +#X obj 14 751 doc_oo 0; +#X obj 103 901 #io.mpeg; +#X obj 97 751 doc_m o0 grid; +#X obj 97 771 doc_m o0 codec symbol; +#X obj 97 791 doc_m o0 depth float; +#X obj 97 811 doc_m o0 framerate float; +#X obj 97 831 doc_m o0 frames float; +#X obj 97 851 doc_m o0 height float; +#X obj 97 871 doc_m o0 width float; +#X connect 4 1 5 0; +#X connect 6 1 7 0; +#X connect 6 1 8 0; +#X connect 9 1 10 0; +#X connect 9 1 11 0; +#X connect 12 1 13 0; +#X connect 14 1 15 0; +#X connect 14 1 18 0; +#X connect 17 1 27 0; +#X connect 23 1 19 0; +#X connect 23 1 20 0; +#X connect 24 1 25 0; diff --git a/externals/gridflow/doc/flow_classes/#io.videodev-help.pd b/externals/gridflow/doc/flow_classes/#io.videodev-help.pd new file mode 100644 index 00000000..af431363 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#io.videodev-help.pd @@ -0,0 +1,77 @@ +#N canvas 676 0 632 642 10; +#X obj 0 0 doc_h; +#X obj 26 50 #in videodev; +#X obj 3 99 doc_c ...; +#X obj 3 160 doc_i 1; +#X obj 3 898 doc_o 1; +#X obj 3 995 doc_also; +#X obj 103 995 #io:quicktimecamera; +#X msg 28 129 open videodev /dev/video0; +#X obj 14 190 doc_ii 0; +#X obj 97 210 doc_m i0 brightness; +#X obj 97 539 doc_m i0 hue; +#X obj 97 338 doc_m i0 colour; +#X obj 97 378 doc_m i0 contrast; +#X obj 97 868 doc_m i0 whiteness; +#X obj 97 418 doc_m i0 get; +#X obj 97 519 doc_m i0 help; +#X obj 97 230 doc_m i0 channel; +#X obj 97 768 doc_m i0 tuner; +#X obj 97 579 doc_m i0 norm; +#X obj 97 398 doc_m i0 frequency; +#X obj 97 619 doc_m i0 transfer symbol; +#X text 232 619 "read"; +#X text 232 663 "mmap": \$1=nframes (default:2); +#X text 232 685 This is the normal (and fast) way of transferring pictures +from the camera.; +#X text 232 641 Some cameras/drivers only support this instead of mmap. +; +#X obj 97 828 doc_m i0 white_red; +#X obj 97 788 doc_m i0 white_blue; +#X obj 97 848 doc_m i0 white_speed; +#X obj 97 808 doc_m i0 white_delay; +#X obj 97 190 doc_m i0 auto_gain; +#X obj 97 559 doc_m i0 noise_reduction; +#X obj 97 358 doc_m i0 compression; +#X obj 97 250 doc_m i0 colorspace; +#X text 232 250 "y":; +#X text 232 272 "yuv":; +#X text 232 294 "rgb":; +#X text 232 316 "magic":; +#X obj 97 599 doc_m i0 size; +#X text 188 764 \$1=y \$2=x; +#X text 232 453 "min": minimum values for "size"; +#X text 232 475 "max": maximum values for "size"; +#X text 232 497 default: gets all attributes.; +#X text 232 418 gets a specific attribute. a message is sent through +right outlet.; +#X text 232 720 In case of mmap \, the extra numeric argument sets +the queue length in number of frames \, so you can select an appropriate +tradeoff between efficiency and latency.; +#X obj 0 1015 doc_f; +#X obj 229 995 #io.dc1394; +#X obj 14 928 doc_oo 0; +#X obj 97 928 doc_m o0 grid; +#X obj 97 950 doc_m o0 <any>; +#X text 232 928 image coming out; +#X text 232 950 most any inlet 0 message is also an outlet 0 message +whose output can be triggered using 'get'.; +#X text 130 51 get images from a V4L1 camera interface.; +#X text 130 66 this is for Linux only.; +#X connect 5 1 6 0; +#X connect 5 1 45 0; +#X connect 14 1 42 0; +#X connect 14 1 39 0; +#X connect 14 1 40 0; +#X connect 14 1 41 0; +#X connect 20 1 21 0; +#X connect 20 1 24 0; +#X connect 20 1 22 0; +#X connect 20 1 23 0; +#X connect 20 1 43 0; +#X connect 32 1 33 0; +#X connect 32 1 34 0; +#X connect 32 1 35 0; +#X connect 32 1 36 0; +#X connect 47 1 49 0; +#X connect 48 1 50 0; diff --git a/externals/gridflow/doc/flow_classes/#io.x11-help.pd b/externals/gridflow/doc/flow_classes/#io.x11-help.pd new file mode 100644 index 00000000..2ccd9a29 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#io.x11-help.pd @@ -0,0 +1,150 @@ +#N canvas 648 0 632 642 10; +#X obj 0 0 doc_h; +#X obj 3 517 doc_c 0..; +#X msg 40 554 open x11; +#X msg 40 574 open x11 here; +#X msg 40 614 open x11 local 0; +#X text 178 555 synonym of "open x11 here".; +#X text 181 574 connects to the default X11 server \, according to +your environment variable "DISPLAY".; +#X text 182 614 connects to a display server on this machine.; +#X msg 39 645 open x11 remote foo.org 0; +#X text 201 644 connects to a remote X11 display server using TCP. +Port number will be 6000 plus the display number \, because of the +X11 standard.; +#X text 141 38 supports 15 \, 16 \, 24 \, 32-bit truecolor displays +; +#X text 141 57 now also support 8-bit indexed displays \, using a private +colormap configured as 3:3:2 RGB. When using 8-bit you can specify +the "use_stripes" option to use a completely different color scheme +involving R \, G \, B diagonal stripes \, a kind of 6:6:6 RGB spread +over three pixels.; +#X text 141 129 If you are using Windows or MacOS 10: you will have +to install a X11 server. This will emulate Unix display on your OS. +(note: Unix systems also need a X11 server \, but it's built-in and +handles the video driver directly). In the case of MacOS 10 and QNX +that both use non-X11 display technology on top of a basically Unix +OS \, the OS comes with a X11 server \, but it may be on a "bundled +software" CD.; +#X msg 37 700 open x11 display foo.org:0; +#X obj 3 736 doc_i 1; +#X obj 14 766 doc_ii 0; +#X obj 97 788 doc_m i0 grid; +#X text 232 788 with [#out] \, displays a frame; +#X obj 97 766 doc_m i0 bang; +#X text 232 766 with [#in] \, captures a frame; +#X obj 97 852 doc_m i0 out_size; +#X text 232 852 \$1=height \$2=width. changes the window's size \, +just like sending a grid dim(height \, width \, 3) would. this affects +the size of screen captures too.; +#X obj 97 920 doc_m i0 setcursor; +#X text 232 920 \$1=cursor_id. \$1=cursor_id. Selects one of the 64 +predefined cursors of X11. (Note that if your cursor table has them +numbered from 0 to 126 using only even numbers \, then those cursor +numbers are all doubled compared to the ones GridFlow uses.); +#X obj 97 810 doc_m i0 hidecursor; +#X text 232 810 This makes the cursor invisible.; +#X obj 3 1903 doc_also; +#X obj 103 1903 #io.quartz; +#X obj 175 1903 #io.sdl; +#X text 141 227 Destroying the object (or sending "close") should close +the window.; +#X obj 35 65 #out x11; +#X text 140 259 because of the design of Xlib \, or if any of the connections +involved crashes \, then the whole program has to be terminated. (don't +you love xlib). Something similar happens if you close any of the windows +yourself \, but IIRC this could be fixed.; +#X text 140 330 only one window may be used per x11 connection (to +simplify matters \; this doesn't reduce flexibility).; +#X text 140 375 there is an additional argument that may be added to +every "open" message \; if you don't put it \, a new toplevel window +is created. if you put "root" then the screen's wallpaper will be used +instead (it may fail to work with some popular window managers). You +can also put a window number \, e.g. 0x28003ff \, you may connect to +an existing window \; you can find out the number of a window by using +a tool like xwininfo \, part of X11 standard tools.; +#X obj 3 1084 doc_o 1; +#X obj 14 1114 doc_oo 0; +#X obj 97 1114 doc_m o0 grid; +#X text 232 1114 grid(rows columns rgb); +#X text 232 1136 resizes the window to the size of the grid \; encodes +that grid in the display's pixel format \; also displays it if autodraw +> \; 0 the values must be in range 0-255 \, or else they will be +"wrapped".; +#X obj 97 1415 doc_m o0 position; +#X text 232 1415 \$1=y \$2=x \$3=buttons; +#X text 232 1437 This is emitted every time the cursor moves inside +the window connected to this format handler. This is also emitted when +the cursor is dragging from inside to outside the window. This is also +emitted when a mouse button is pressed.; +#X text 232 1511 The y and x coordinates are relative to the upper +right corner of the window. Specific button states may be extracted +from the button value by applying [>> buttonnumber] and then checking +whether the result is odd.; +#X text 232 1572 0: Shift; +#X text 232 1594 1: Caps Lock; +#X text 232 1616 2: Control; +#X text 232 1638 3: Alternate; +#X text 232 1660 4: NumLock; +#X text 232 1682 5: (unknown); +#X text 232 1704 6: Meta or Window Key; +#X text 232 1726 7: Scroll Lock; +#X text 232 1748 8: Left Mouse Button; +#X text 232 1770 9: Middle Mouse Button or Mouse Wheel Click; +#X text 232 1792 10: Right Mouse Button; +#X text 232 1814 11: Wheel Up; +#X text 232 1836 12: Wheel Down; +#X text 232 1858 NOTE: This message form may become longer in the future +\, but the already defined parts will stay the same.; +#X obj 97 1210 doc_m o0 keypress; +#X obj 97 1345 doc_m o0 keyrelease; +#X text 232 1210 \$1=y \$2=x \$3=buttons \$4=keyname; +#X text 232 1345 \$1=y \$2=x \$3=buttons \$4=keyname; +#X text 232 1232 Similar to position above \, but this is emitted when +a keyboard key is pressed while this format handler's window is active. +Keynames follow the X11 standard \, similarly to PureData's [keyname] +object. The only exception is that keynames that are digits get prefixed +by a capital D so that they don't get mistaken for actual numbers. +NOTE: This message form may become longer in the future \, but the +already defined parts will stay the same.; +#X text 232 1367 Same as keypress but when a key gets released instead. +NOTE: This message form may become longer in the future \, but the +already defined parts will stay the same.; +#X obj 0 1923 doc_f; +#X obj 97 832 doc_m i0 move; +#X obj 97 994 doc_m i0 shared_memory; +#X obj 97 1054 doc_m i0 xvideo; +#X obj 97 1014 doc_m i0 title; +#X obj 97 1034 doc_m i0 warp; +#X obj 97 900 doc_m i0 set_geometry; +#X text 208 701 other syntax for 'remote'.; +#X connect 16 1 17 0; +#X connect 18 1 19 0; +#X connect 20 1 21 0; +#X connect 22 1 23 0; +#X connect 24 1 25 0; +#X connect 26 1 27 0; +#X connect 26 1 28 0; +#X connect 36 1 37 0; +#X connect 36 1 38 0; +#X connect 39 1 40 0; +#X connect 39 1 41 0; +#X connect 39 1 42 0; +#X connect 39 1 43 0; +#X connect 39 1 44 0; +#X connect 39 1 45 0; +#X connect 39 1 46 0; +#X connect 39 1 47 0; +#X connect 39 1 48 0; +#X connect 39 1 49 0; +#X connect 39 1 50 0; +#X connect 39 1 51 0; +#X connect 39 1 52 0; +#X connect 39 1 53 0; +#X connect 39 1 54 0; +#X connect 39 1 55 0; +#X connect 39 1 56 0; +#X connect 57 1 59 0; +#X connect 57 1 61 0; +#X connect 58 1 60 0; +#X connect 58 1 62 0; diff --git a/externals/gridflow/doc/flow_classes/#join-help.pd b/externals/gridflow/doc/flow_classes/#join-help.pd new file mode 100644 index 00000000..10e71f1c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#join-help.pd @@ -0,0 +1,72 @@ +#N canvas 648 0 632 642 10; +#X obj 18 42 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X obj 211 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X text 174 228 the left grid and right grid must have the same number +of elements in all dimensions except the one specified \, which will +be the sum of the two corresponding; +#X text 244 39 1 <--; +#X text 45 41 2 <--; +#X obj 18 222 #clip; +#X obj 18 241 #out window; +#X obj 18 106 #in; +#X obj 211 125 #rgb_to_greyscale; +#X obj 211 106 #in; +#X obj 18 188 #perspective 128; +#X text 175 160 creation argument is the index of the dimension by +which the join will occur. for n-dimensional grids \, the dimensions +are numbered from 0 to n-1. in addition \, negative numbers from -n +to -1 may be used \, to which n will be added.; +#X obj 0 0 doc_h; +#X obj 3 666 doc_also; +#X obj 3 288 doc_c 0..2; +#X obj 3 409 doc_i 2; +#X obj 3 606 doc_o 1; +#X obj 18 161 #join 2; +#X obj 14 318 doc_cc 0; +#X obj 14 379 doc_cc 1; +#X obj 14 439 doc_ii 0; +#X obj 14 574 doc_ii 1; +#X obj 14 636 doc_oo 0; +#X obj 97 318 doc_m c0 float; +#X obj 97 379 doc_m c1 grid; +#X obj 97 439 doc_m i0; +#X text 232 318 Which_dim is the number of the dimension by which the +join will occur. For N-dimensional grids \, the dimensions are numbered +from 0 to N-1. In addition \, negative numbers from -N to -1 may be +used \, to which N will be added.; +#X text 232 439 The left grid and right grid must have the same number +of elements in all dimensions except the one specified. The result +will have the same number of elements in all dimensions except the +one specified \, which will be the sum of the two corresponding one. +; +#X text 232 513 For example \, joining a RGB picture Dim[y \, x \, +3] and a greyscale picture Dim[y \, x \, 1] on dimension 2 (or -1) +could make a RGBA picture Dim[y \, x \, 4] in which the greyscale image +becomes the opacity channel.; +#X text 232 574 same as arg 1; +#X obj 97 574 doc_m i1 grid; +#X obj 97 636 doc_m o0 grid; +#X obj 0 686 doc_f; +#X msg 18 83 load r001.jpg; +#X msg 211 78 load b001.jpg; +#X obj 103 666 listappend; +#X obj 175 666 list append; +#X text 234 381 grid to be appended to the left-inlet grid; +#X connect 0 0 33 0; +#X connect 1 0 34 0; +#X connect 5 0 6 0; +#X connect 7 0 17 0; +#X connect 8 0 17 1; +#X connect 9 0 8 0; +#X connect 10 0 5 0; +#X connect 13 1 35 0; +#X connect 13 1 36 0; +#X connect 17 0 10 0; +#X connect 23 1 26 0; +#X connect 25 1 27 0; +#X connect 25 1 28 0; +#X connect 30 1 29 0; +#X connect 33 0 7 0; +#X connect 34 0 9 0; diff --git a/externals/gridflow/doc/flow_classes/#labelling-help.pd b/externals/gridflow/doc/flow_classes/#labelling-help.pd new file mode 100644 index 00000000..053b6ee0 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#labelling-help.pd @@ -0,0 +1,55 @@ +#N canvas 573 85 632 627 10; +#X obj 0 0 doc_h; +#X obj 0 598 doc_f; +#X obj 71 60 #labelling; +#X obj 3 300 doc_o 4; +#X obj 3 190 doc_i 1; +#X obj 14 330 doc_oo 0; +#X obj 14 391 doc_oo 1; +#X obj 14 487 doc_oo 2; +#X obj 14 544 doc_oo 3; +#X obj 14 220 doc_ii 0; +#X obj 97 544 doc_m o3 float; +#X obj 97 487 doc_m o2 grid; +#X obj 97 391 doc_m o1 grid; +#X obj 97 330 doc_m o0 grid; +#X obj 97 220 doc_m i0 grid; +#X obj 3 106 doc_c 0..1; +#X text 232 136 0 : bidimensional form; +#X text 232 158 1 : form for horizontal lines; +#X text 232 220 single-channel picture to analyse. the content must +be made of zeroes and ones (other values are reserved for making the +output); +#X text 232 330 single-channel picture in which every contiguous region +(of ones) is labelled (flood-filled) using a number greater than or +equal to 2 those numbers are sorted according to the smallest pixel +index found in each region.; +#X obj 97 268 doc_m i0 form; +#X text 232 268 same as arg 0; +#X text 232 391 when form=0: a grid[2 \, 2] giving the standard-deviation +([#moment 2]) of each region; +#X text 232 487 when form=0: a grid[2] giving the centre ([#moment +1]) of each region; +#X text 232 544 when form=0: area of each region (in number of pixels) +; +#X obj 97 566 doc_m o3 <gone>; +#X text 232 566 when form=1: not present; +#X text 232 522 when form=1: not present; +#X obj 97 522 doc_m o2 <gone>; +#X text 232 426 when form=1: a grid[2 \, 2] that is a 2-polygon \, +that is \, just a straight line. this line is horizontal \, and its +right-side bound is for the first pixel that is NOT in the region. +; +#X obj 14 136 doc_cc 0; +#X obj 97 136 doc_m c0 float/int; +#X connect 10 1 24 0; +#X connect 11 1 23 0; +#X connect 12 1 22 0; +#X connect 12 1 29 0; +#X connect 13 1 19 0; +#X connect 14 1 18 0; +#X connect 20 1 21 0; +#X connect 25 1 26 0; +#X connect 28 1 27 0; +#X connect 31 1 16 0; +#X connect 31 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/#layer-help.pd b/externals/gridflow/doc/flow_classes/#layer-help.pd new file mode 100644 index 00000000..0cbedf0f --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#layer-help.pd @@ -0,0 +1,47 @@ +#N canvas 686 0 632 512 10; +#X text 176 92 opacity channel file; +#X text 52 62 foreground file; +#X text 383 83 background file; +#X text 157 176 a picture that has an opacity level will be used as +foreground vs a picture that has no opacity channel. the output is +a picture that has no opacity channel; +#X msg 202 40 load b001.jpg; +#X obj 179 67 #in; +#X obj 205 67 #rgb_to_greyscale; +#X obj 351 83 #in; +#X msg 374 58 load g001.jpg; +#X msg 42 38 load r001.jpg; +#X obj 19 63 #in; +#X obj 19 175 #layer; +#X obj 19 206 #out window; +#X obj 0 0 doc_h; +#X obj 3 245 doc_c 0; +#X obj 3 395 doc_o 1; +#X obj 3 285 doc_i 2; +#X obj 14 425 doc_oo 0; +#X obj 14 315 doc_ii 0; +#X obj 14 350 doc_ii 1; +#X text 232 315 An image that has an opacity channel. Will be used +as foreground.; +#X text 232 350 An image that has NO opacity channel. Will be used +as background.; +#X text 232 425 An image that has NO opacity channel. The opacity channel +of the foreground image is used as weighting of how much either picture +is seen in the result.; +#X obj 19 128 #join -1; +#X obj 97 315 doc_m i0 grid; +#X obj 97 350 doc_m i1 grid; +#X obj 97 425 doc_m o0 grid; +#X obj 0 483 doc_f; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 23 1; +#X connect 7 0 11 1; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 10 0 23 0; +#X connect 11 0 12 0; +#X connect 23 0 11 0; +#X connect 24 1 20 0; +#X connect 25 1 21 0; +#X connect 26 1 22 0; diff --git a/externals/gridflow/doc/flow_classes/#line_to_polygon-help.pd b/externals/gridflow/doc/flow_classes/#line_to_polygon-help.pd new file mode 100644 index 00000000..50133629 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#line_to_polygon-help.pd @@ -0,0 +1,40 @@ +#N canvas 623 73 632 537 10; +#X obj 43 180 #draw_polygon put (255 255 255); +#X obj 43 239 #out window; +#X msg 43 161 240 320 3 #; +#X obj 256 167 display; +#X msg 125 102 2 2 # 10 10 229 309; +#X obj 125 121 #line_to_polygon 4; +#X obj 0 0 doc_h; +#X obj 3 286 doc_c 1; +#X obj 3 352 doc_i 2; +#X obj 3 446 doc_o 1; +#X obj 14 476 doc_oo 0; +#X obj 14 382 doc_ii 0; +#X obj 14 414 doc_ii 1; +#X obj 14 316 doc_cc 0; +#X obj 0 508 doc_f; +#X obj 43 73 t b b; +#X obj 43 46 bng 15 250 50 0 empty empty empty 17 7 0 10 -4034 -1 -1 +; +#X obj 97 316 doc_m c0 float; +#X text 232 316 Line width.; +#X obj 97 392 doc_m i0 grid; +#X obj 97 414 doc_m i1 float; +#X text 232 414 Line width (same as argument 0); +#X obj 97 476 doc_m o0; +#X text 232 392 Grid containing a pair of coordinates.; +#X text 232 476 Grid representing the vertices of the resulting polygon. +; +#X connect 0 0 1 0; +#X connect 2 0 0 0; +#X connect 4 0 5 0; +#X connect 5 0 0 2; +#X connect 5 0 3 0; +#X connect 15 0 2 0; +#X connect 15 1 4 0; +#X connect 16 0 15 0; +#X connect 17 1 18 0; +#X connect 19 1 23 0; +#X connect 20 1 21 0; +#X connect 22 1 24 0; diff --git a/externals/gridflow/doc/flow_classes/#make_arrow-help.pd b/externals/gridflow/doc/flow_classes/#make_arrow-help.pd new file mode 100644 index 00000000..4fa076e6 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#make_arrow-help.pd @@ -0,0 +1,20 @@ +#N canvas 623 133 632 373 10; +#X obj 0 0 doc_h; +#X obj 0 344 doc_f; +#X obj 55 53 #make_arrow; +#X obj 3 180 doc_c 0; +#X obj 3 220 doc_i 1; +#X obj 3 282 doc_o 1; +#X obj 14 250 doc_ii 0; +#X obj 14 312 doc_oo 0; +#X obj 97 250 doc_m i0 grid; +#X obj 97 312 doc_m o0 grid; +#X text 232 312 grid[; +#X obj 58 77 display; +#X msg 55 34 4 # 10 20 30 40; +#X text 212 95 can anyone figure out what is this ?; +#X text 232 250 grid[euh]; +#X connect 2 0 11 0; +#X connect 8 1 14 0; +#X connect 9 1 10 0; +#X connect 12 0 2 0; diff --git a/externals/gridflow/doc/flow_classes/#make_cross-help.pd b/externals/gridflow/doc/flow_classes/#make_cross-help.pd new file mode 100644 index 00000000..0e0685be --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#make_cross-help.pd @@ -0,0 +1,47 @@ +#N canvas 444 135 632 419 10; +#X obj 43 57 tgl 15 0 empty empty empty 17 7 0 10 -204786 -1 -1 0 1 +; +#X obj 43 78 metro 100; +#X obj 43 149 #out window; +#X obj 43 130 #draw_polygon put (255 0 0); +#X obj 202 111 #make_cross 120; +#X msg 202 92 240 320; +#X obj 202 57 loadbang; +#X msg 289 92 150; +#X obj 261 66 t b b; +#X obj 261 44 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 43 101 #camera 0; +#X text 319 90 change cross size; +#X obj 0 0 doc_h; +#X obj 3 182 doc_c 1; +#X obj 3 244 doc_i 2; +#X obj 14 274 doc_ii 0; +#X obj 14 296 doc_ii 1; +#X obj 3 328 doc_o 1; +#X obj 14 358 doc_oo 0; +#X obj 14 212 doc_cc 0; +#X obj 0 390 doc_f; +#X obj 97 296 doc_m i1; +#X obj 97 274 doc_m i0; +#X obj 97 212 doc_m c0; +#X obj 97 358 doc_m o0 grid; +#X text 232 358 polygon; +#X text 232 274 position of centre; +#X text 232 212 size (radius); +#X text 232 296 same as arg 0; +#X connect 0 0 1 0; +#X connect 1 0 10 0; +#X connect 3 0 2 0; +#X connect 4 0 3 2; +#X connect 5 0 4 0; +#X connect 6 0 5 0; +#X connect 7 0 4 1; +#X connect 8 0 5 0; +#X connect 8 1 7 0; +#X connect 9 0 8 0; +#X connect 10 0 3 0; +#X connect 21 1 28 0; +#X connect 22 1 26 0; +#X connect 23 1 27 0; +#X connect 24 1 25 0; diff --git a/externals/gridflow/doc/flow_classes/#moment-help.pd b/externals/gridflow/doc/flow_classes/#moment-help.pd new file mode 100644 index 00000000..0d47f338 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#moment-help.pd @@ -0,0 +1,164 @@ +#N canvas 663 46 632 642 10; +#X obj 19 44 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X msg 234 48 4 2 # 1 1 1 -1 -1 -1 -1 1; +#X obj 111 228 display; +#X obj 43 258 display; +#X obj 234 86 #rotate; +#X obj 288 76 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-241291 -1 -1 -1831 256; +#X obj 288 92 * 100; +#X obj 18 497 #out window; +#X obj 67 181 #t; +#X obj 110 207 #moment; +#X msg 41 105 240 320 1 #; +#X obj 41 124 #draw_polygon put (1 # 255); +#X obj 426 123 #pack; +#X obj 234 105 # +; +#X obj 456 107 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-241291 -1 -1 -45 256; +#X obj 426 91 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-241291 -1 -1 12 256; +#X obj 426 72 #pack; +#X obj 456 56 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-241291 -1 -1 32 256; +#X obj 426 40 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-241291 -1 -1 49 256; +#X obj 234 67 # *; +#X obj 245 143 # inv+; +#X obj 245 124 # +; +#X obj 426 174 #pack; +#X obj 456 158 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-241291 -1 -1 149 256; +#X obj 426 142 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -6 0 10 +-241291 -1 -1 128 256; +#X obj 41 143 #draw_polygon put (1 # 255); +#X text 162 460 red filter; +#X text 121 105 draw rectangles; +#X text 238 31 rectangle polygon; +#X obj 42 206 #moment 2; +#X obj 269 192 #moment_polar; +#X obj 356 212 display; +#X obj 270 232 display; +#X obj 5 81 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X text 141 329 this is a fudge factor.; +#X obj 18 516 fps; +#X floatatom 18 535 5 0 0 0 - - -; +#X text 143 341 depending on what you want to do \,; +#X text 140 353 you set it to 2 \, 3 \, 4 \, whatever.; +#X obj 402 314 #outer + (9000 0); +#X obj 448 378 #transpose; +#X obj 20 80 t b b b; +#X obj 402 490 # + (120 160); +#X obj 63 322 #cast f; +#X obj 63 419 #inner \, seed (f #); +#X obj 402 352 #cast f; +#X obj 402 409 #inner \, seed (f #); +#X obj 402 457 #cast i; +#X obj 63 398 #swap; +#X obj 402 276 #for 0 160 1; +#X obj 63 379 # sqrt (f #); +#X obj 63 341 # * (f # 3); +#X obj 402 429 # / (f # 1000); +#X obj 402 333 # cos* 1000; +#X obj 402 295 # * 225; +#X obj 18 459 #inner (1 3 # 1 0 0); +#X obj 18 478 #draw_polygon + (0 255 255) (2 2 #); +#X obj 19 61 metro 20; +#X obj 18 164 #t; +#X obj 63 360 cv/#SVD; +#X obj 0 0 doc_h; +#X obj 3 559 doc_c 0..1; +#X obj 3 708 doc_i 2; +#X obj 3 818 doc_o 1; +#X obj 14 848 doc_oo 0; +#X obj 14 738 doc_ii 0; +#X obj 14 760 doc_ii 1; +#X obj 14 589 doc_cc 0; +#X obj 0 902 doc_f; +#X obj 0 902 doc_f; +#X obj 97 848 doc_m o0 grid; +#X obj 97 760 doc_m i1 grid; +#X obj 97 738 doc_m i0 grid; +#X obj 97 589 doc_m c0 float; +#X text 232 589 1: average index of the values in the grid \, weighted +by the values themselves.; +#X text 232 624 2: average square of index of the values in the grid +\, weighted by the values themselves. this can be used to compute a +variance (covariance) matrix \, which in turn can be fed to [#moment_polar] +to figure out the standard deviation and the direction of the standard +deviation.; +#X text 232 848 mode 1: a grid[2]; +#X text 232 870 mode 2: a grid[2 \, 2]; +#X text 232 738 greyscale image; +#X text 232 760 mode 2: alleged centroid (doesn't have to be the real +centroid \, but when it is \, the output will be the variance matrix +\; else it won't be a centred moment); +#X connect 0 0 57 0; +#X connect 1 0 19 0; +#X connect 4 0 13 0; +#X connect 5 0 6 0; +#X connect 6 0 4 1; +#X connect 7 0 35 0; +#X connect 8 0 29 0; +#X connect 8 1 9 0; +#X connect 9 0 2 0; +#X connect 9 0 29 1; +#X connect 9 0 42 1; +#X connect 10 0 11 0; +#X connect 11 0 25 0; +#X connect 12 0 13 1; +#X connect 13 0 21 0; +#X connect 13 0 20 0; +#X connect 14 0 12 1; +#X connect 15 0 12 0; +#X connect 16 0 19 1; +#X connect 17 0 16 1; +#X connect 18 0 16 0; +#X connect 19 0 4 0; +#X connect 20 0 25 2; +#X connect 21 0 11 2; +#X connect 22 0 21 1; +#X connect 22 0 20 1; +#X connect 23 0 22 1; +#X connect 24 0 22 0; +#X connect 25 0 58 0; +#X connect 29 0 3 0; +#X connect 29 0 30 0; +#X connect 29 0 43 0; +#X connect 30 0 32 0; +#X connect 30 1 31 0; +#X connect 33 0 41 0; +#X connect 35 0 36 0; +#X connect 39 0 53 0; +#X connect 40 0 46 1; +#X connect 41 0 49 0; +#X connect 41 1 10 0; +#X connect 41 2 1 0; +#X connect 42 0 56 2; +#X connect 43 0 51 0; +#X connect 44 0 40 0; +#X connect 45 0 46 0; +#X connect 46 0 52 0; +#X connect 47 0 42 0; +#X connect 48 0 44 0; +#X connect 48 1 44 1; +#X connect 49 0 54 0; +#X connect 50 0 48 0; +#X connect 51 0 59 0; +#X connect 52 0 47 0; +#X connect 53 0 45 0; +#X connect 54 0 39 0; +#X connect 55 0 56 0; +#X connect 56 0 7 0; +#X connect 57 0 41 0; +#X connect 58 0 55 0; +#X connect 58 1 8 0; +#X connect 59 0 50 0; +#X connect 59 1 48 1; +#X connect 70 1 76 0; +#X connect 70 1 77 0; +#X connect 71 1 79 0; +#X connect 72 1 78 0; +#X connect 73 1 74 0; +#X connect 73 1 75 0; diff --git a/externals/gridflow/doc/flow_classes/#moment_polar-help.pd b/externals/gridflow/doc/flow_classes/#moment_polar-help.pd new file mode 100644 index 00000000..d68966a6 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#moment_polar-help.pd @@ -0,0 +1,25 @@ +#N canvas 455 225 632 371 10; +#X text 232 226 must be a 2x2 symmetric matrix.; +#X text 232 288 outlet 0: angle (only makes sense with a 2x2 matrix) +as int; +#X text 232 310 outlet 1: radiuses (from biggest to smallest) as float +grid; +#X text 30 61 please open this other help patch for a demo:; +#X obj 0 0 doc_h; +#X obj 3 121 doc_c 0; +#X obj 3 161 doc_i 1; +#X obj 3 258 doc_o 2; +#X obj 14 288 doc_oo 0; +#X obj 14 310 doc_oo 1; +#X obj 14 191 doc_ii 0; +#X obj 0 342 doc_f; +#X obj 97 191 doc_m i0 grid; +#X obj 97 288 doc_m o0 grid; +#X obj 97 310 doc_m o1 grid; +#X obj 37 77 #moment-help; +#X text 232 191 inlet 0: variance matrix (aka covariance matrix) \, +from [#moment 2] or compatible.; +#X connect 12 1 16 0; +#X connect 12 1 0 0; +#X connect 13 1 1 0; +#X connect 14 1 2 0; diff --git a/externals/gridflow/doc/flow_classes/#motion_detection-help.pd b/externals/gridflow/doc/flow_classes/#motion_detection-help.pd new file mode 100644 index 00000000..4acf4a15 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#motion_detection-help.pd @@ -0,0 +1,83 @@ +#N canvas 536 0 632 642 10; +#X obj 47 40 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 47 315 print; +#X obj 47 292 fps detailed; +#X obj 47 57 metro 33.3667; +#X obj 47 76 #camera; +#X obj 96 132 vradio 15 1 0 2 empty empty empty 0 -6 0 8 -241291 -1 +-1 0; +#X text 115 132 motion; +#X text 116 146 presence; +#X floatatom 223 237 7 0 0 0 - - -; +#X obj 47 268 #out window; +#X obj 209 168 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 +1; +#X obj 74 105 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -260818 +-1 -1 0 1; +#X text 208 104 reduce the noise in the image; +#X obj 156 237 nbx 5 14 -1e+37 1e+37 0 0 empty empty y -10 4 0 10 -24198 +-1 -1 0 256; +#X obj 85 237 nbx 5 14 -1e+37 1e+37 0 0 empty empty x -10 4 0 10 -24198 +-1 -1 0 256; +#X obj 47 183 #motion_detection; +#X text 279 236 total amount of change; +#X obj 177 142 tgl 15 0 empty empty empty 0 -6 0 8 -241291 -1 -1 0 +1; +#X text 195 142 fade; +#X text 227 168 crosshair; +#X obj 0 0 doc_h; +#X obj 0 678 doc_f; +#X obj 3 378 doc_i 5; +#X obj 3 338 doc_c 0; +#X obj 3 550 doc_o 4; +#X obj 14 580 doc_oo 0; +#X obj 14 602 doc_oo 1; +#X obj 14 624 doc_oo 2; +#X obj 14 646 doc_oo 3; +#X obj 14 408 doc_ii 0; +#X obj 14 430 doc_ii 1; +#X obj 14 452 doc_ii 2; +#X obj 14 496 doc_ii 3; +#X obj 14 518 doc_ii 4; +#X obj 97 518 doc_m i4; +#X obj 97 496 doc_m i3; +#X obj 97 452 doc_m i2; +#X obj 97 430 doc_m i1; +#X obj 97 408 doc_m i0; +#X obj 97 646 doc_m o3 float; +#X obj 97 624 doc_m o2 float; +#X obj 97 602 doc_m o1 float; +#X text 232 602 x; +#X text 232 624 y; +#X text 232 646 amount of change; +#X obj 97 580 doc_m o0 grid; +#X text 232 580 image; +#X text 232 518 crosshair; +#X text 232 496 fade; +#X text 232 452 0: motion; +#X text 232 474 1: presence; +#X text 232 430 noise reduction; +#X text 232 408 camera input; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 15 0; +#X connect 5 0 15 2; +#X connect 9 0 2 0; +#X connect 10 0 15 4; +#X connect 11 0 15 1; +#X connect 15 0 9 0; +#X connect 15 1 14 0; +#X connect 15 2 13 0; +#X connect 15 3 8 0; +#X connect 17 0 15 3; +#X connect 34 1 47 0; +#X connect 35 1 48 0; +#X connect 36 1 49 0; +#X connect 36 1 50 0; +#X connect 37 1 51 0; +#X connect 38 1 52 0; +#X connect 39 1 44 0; +#X connect 40 1 43 0; +#X connect 41 1 42 0; +#X connect 45 1 46 0; diff --git a/externals/gridflow/doc/flow_classes/#mouse-help.pd b/externals/gridflow/doc/flow_classes/#mouse-help.pd new file mode 100644 index 00000000..648afc0f --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#mouse-help.pd @@ -0,0 +1,99 @@ +#N canvas 675 0 632 699 10; +#X msg 59 113 setcursor 32; +#X msg 40 90 hidecursor; +#X text 125 88 <-- removes the cursor; +#X text 159 110 <-- accepts 0 - 63; +#X obj 136 148 print xy_clicked; +#X obj 137 194 print xy_unclicked; +#X obj 68 281 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 85 281 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 102 281 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X floatatom 139 292 5 0 0 0 - - -; +#X obj 139 273 +; +#X obj 173 273 t a; +#X obj 137 218 print xy_moved; +#X obj 136 170 print xy_dragged; +#X obj 340 175 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X obj 360 175 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X obj 380 175 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X obj 400 151 loadbang; +#X text 232 422 select buttons to be considered in click/drag/unclick +; +#X obj 40 145 #out window; +#X obj 340 201 #pack 3; +#X obj 0 0 doc_h; +#X obj 3 330 doc_c 0; +#X obj 3 370 doc_i 2; +#X obj 3 454 doc_o 8; +#X obj 14 484 doc_oo 0; +#X obj 14 506 doc_oo 1; +#X obj 14 528 doc_oo 2; +#X obj 14 550 doc_oo 3; +#X obj 14 572 doc_oo 4; +#X obj 14 594 doc_oo 5; +#X obj 14 616 doc_oo 6; +#X obj 14 638 doc_oo 7; +#X obj 14 400 doc_ii 0; +#X obj 14 422 doc_ii 1; +#X text 19 32 How to get the mouse coordinates and hide / change the +cursor; +#X obj 40 247 #mouse \, \, \, \, \,; +#X obj 97 400 doc_m i0 list; +#X text 232 484 (y x) click; +#X text 232 506 (y x) drag; +#X text 232 528 (y x) unclick; +#X text 232 550 (y x) move; +#X text 232 572 0 \, 1 button 1 status; +#X text 232 594 0 \, 1 button 2 status; +#X text 232 616 0 \, 1 button 3 status; +#X text 232 638 mouse wheel difference: -1=up +1=down; +#X obj 340 230 #to_list; +#X text 232 400 what comes out of [#out window]; +#X obj 97 422 doc_m i1 list; +#X obj 97 484 doc_m o0 list; +#X obj 97 506 doc_m o1 list; +#X obj 97 528 doc_m o2 list; +#X obj 97 550 doc_m o3 list; +#X obj 97 572 doc_m o4 float; +#X obj 97 594 doc_m o5 float; +#X obj 97 616 doc_m o6 float; +#X obj 97 638 doc_m o7 float; +#X obj 0 670 doc_f; +#X connect 0 0 19 0; +#X connect 1 0 19 0; +#X connect 10 0 11 0; +#X connect 10 0 9 0; +#X connect 11 0 10 1; +#X connect 14 0 20 0; +#X connect 15 0 20 1; +#X connect 16 0 20 2; +#X connect 17 0 14 0; +#X connect 17 0 15 0; +#X connect 17 0 16 0; +#X connect 19 0 36 0; +#X connect 20 0 46 0; +#X connect 36 0 4 0; +#X connect 36 1 13 0; +#X connect 36 2 5 0; +#X connect 36 3 12 0; +#X connect 36 4 6 0; +#X connect 36 5 7 0; +#X connect 36 6 8 0; +#X connect 36 7 10 0; +#X connect 37 1 47 0; +#X connect 46 0 36 1; +#X connect 48 1 18 0; +#X connect 49 1 38 0; +#X connect 50 1 39 0; +#X connect 51 1 40 0; +#X connect 52 1 41 0; +#X connect 53 1 42 0; +#X connect 54 1 43 0; +#X connect 55 1 44 0; +#X connect 56 1 45 0; diff --git a/externals/gridflow/doc/flow_classes/#noise_gate_yuvs-help.pd b/externals/gridflow/doc/flow_classes/#noise_gate_yuvs-help.pd new file mode 100644 index 00000000..a2003659 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#noise_gate_yuvs-help.pd @@ -0,0 +1,26 @@ +#N canvas 591 265 632 338 10; +#X obj 0 0 doc_h; +#X obj 0 309 doc_f; +#X obj 76 49 #noise_gate_yuvs; +#X obj 3 150 doc_i 2; +#X obj 3 247 doc_o 1; +#X obj 3 88 doc_c 1; +#X obj 14 277 doc_oo 0; +#X obj 14 180 doc_ii 0; +#X obj 14 215 doc_ii 1; +#X obj 14 118 doc_cc 0; +#X obj 97 118 doc_m c0 float/int; +#X obj 97 180 doc_m i0 grid; +#X text 203 44 sets pixels to (0 \, 0 \, 0) if their first component +is lower than a certain threshold.; +#X text 232 180 picture in signed YUV format (or whatever else works +for you); +#X obj 97 215 doc_m i1 float; +#X text 232 215 same as arg 0; +#X obj 97 277 doc_m o0 grid; +#X text 232 118 threshold; +#X text 232 277 filtered picture in signed YUV format; +#X connect 10 1 17 0; +#X connect 11 1 13 0; +#X connect 14 1 15 0; +#X connect 16 1 18 0; diff --git a/externals/gridflow/doc/flow_classes/#out-help.pd b/externals/gridflow/doc/flow_classes/#out-help.pd new file mode 100644 index 00000000..17d9d2e8 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#out-help.pd @@ -0,0 +1,139 @@ +#N canvas 674 0 632 642 10; +#X obj 15 325 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 10 71 Displaying a grid:; +#X text 342 73 Saving a grid:; +#X text 232 689 "rewind" rewinds to the beginning of a video file. +Will overwrite previous data.; +#X obj 15 100 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 15 221 #in; +#X msg 65 227 open window; +#X msg 65 252 close; +#X text 232 597 "close" closes the file and hides the display \, must +be accompanied by message "open window" to reopen the display.; +#X text 232 764 A bang notifies when a complete grid has been received. +; +#X text 12 32 Displays or saves an incoming grid (usually an image +or a video).; +#X obj 15 302 #out window \, title example; +#X obj 127 100 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 133 796 #record; +#X msg 366 228 open somefile.jpg; +#X text 232 654 "open filename.format" (ex: "open somefile.jpg") sets +the filename to write to.; +#X obj 351 96 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 351 190 #in; +#X obj 351 266 #out; +#X msg 127 262 hidecursor; +#X text 196 261 <-- linux only; +#X text 232 632 "hidecursor" (linux only) hides the mouse cursor.; +#X obj 0 0 doc_h; +#X obj 3 371 doc_c n; +#X obj 3 796 doc_also; +#X obj 3 734 doc_o 1; +#N canvas 140 137 570 615 More 1; +#X text 203 143 open default display for screenshot; +#X msg 82 197 open videodev /dev/video0; +#X text 277 196 open a video device; +#X msg 187 388 open x11 here; +#X msg 158 337 open x11 local 10; +#X text 298 390 connect to default display; +#X text 297 338 connect to display #10 on this machine; +#X msg 65 313 open x11 remote.host.bla.net 0; +#X text 297 315 connect to remote machine on display #0; +#X text 202 114 open an image file; +#X msg 242 437 close; +#X msg 83 142 open x11 here; +#X msg 200 413 open window; +#X text 299 413 opens a window x11 \, quartz or sdl; +#X obj 23 223 cnv 15 23 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 23 223 #in; +#X obj 5 13 cnv 15 500 18 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 14 14 #out; +#X obj 23 480 #out; +#X msg 53 114 open sewing.jpg; +#X obj 23 72 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X obj 23 93 t b b; +#X msg 83 170 open lsd.mov; +#X text 203 169 open a quicktime video; +#X obj 97 74 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 165 363 open save_here.jpg; +#X text 298 362 select file to write to in jpg format; +#X text 14 36 #out communicating grids (images) to/from devices \, +sockets \, files; +#X text 37 502 An incoming file is sent through the opened device or +file. In single file format \, a subsequent picture overwrites the +preceeding one. There are many more options.; +#X connect 1 0 15 0; +#X connect 3 0 18 0; +#X connect 4 0 18 0; +#X connect 7 0 18 0; +#X connect 10 0 18 0; +#X connect 11 0 15 0; +#X connect 12 0 18 0; +#X connect 15 0 18 0; +#X connect 19 0 15 0; +#X connect 20 0 21 0; +#X connect 21 0 15 0; +#X connect 21 1 19 0; +#X connect 22 0 15 0; +#X connect 24 0 15 0; +#X connect 25 0 18 0; +#X restore 140 334 pd More info about this object class; +#X obj 3 488 doc_i 1; +#X obj 14 518 doc_ii 0; +#X obj 14 764 doc_oo 0; +#X obj 97 518 doc_m i0 grid; +#X obj 97 654 doc_m i0 open; +#X obj 97 597 doc_m i0 close; +#X obj 97 632 doc_m i0 hidecursor; +#X obj 97 689 doc_m i0 rewind; +#X obj 103 796 #in; +#X text 188 426 auto-open with auto-detect of the format-handler; +#X text 226 451 auto-open with manual choice of the format-handler +; +#X text 88 406 nothing opened \, you have to open by yourself; +#X obj 46 407 #out; +#X obj 46 428 #out filename.suffix; +#X obj 46 449 #out handler filename.suffix; +#X obj 97 553 doc_m i0 autoclose; +#X obj 0 816 doc_f; +#X obj 97 764 doc_m o0 bang; +#X msg 15 117 load working.jpg; +#X msg 127 117 load sewing.jpg; +#X msg 351 113 load sewing.jpg; +#X text 232 553 "autoclose 1": close after incoming image is finished. +; +#X text 232 575 "autoclose 0": doesn't.; +#X text 232 518 write one frame (or in the case of [#out grid] \, one +grid of any kind).; +#X connect 4 0 45 0; +#X connect 5 0 11 0; +#X connect 6 0 11 0; +#X connect 7 0 11 0; +#X connect 11 0 0 0; +#X connect 12 0 46 0; +#X connect 14 0 18 0; +#X connect 16 0 47 0; +#X connect 17 0 18 0; +#X connect 19 0 11 0; +#X connect 24 1 35 0; +#X connect 24 1 13 0; +#X connect 30 1 50 0; +#X connect 31 1 15 0; +#X connect 32 1 8 0; +#X connect 33 1 21 0; +#X connect 34 1 3 0; +#X connect 42 1 48 0; +#X connect 42 1 49 0; +#X connect 44 1 9 0; +#X connect 45 0 5 0; +#X connect 46 0 5 0; +#X connect 47 0 17 0; diff --git a/externals/gridflow/doc/flow_classes/#outer-help.pd b/externals/gridflow/doc/flow_classes/#outer-help.pd new file mode 100644 index 00000000..b56f18f8 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#outer-help.pd @@ -0,0 +1,105 @@ +#N canvas 668 0 632 642 10; +#X obj 19 39 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X obj 19 130 spigot; +#X obj 100 130 spigot; +#X obj 67 130 == 0; +#X obj 67 39 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 1 +; +#X text 88 40 select pattern; +#X text 17 296 combine channelless picture with gamma factors (r \, +g \, b); +#X obj 19 89 until; +#X msg 19 68 128; +#X obj 60 89 float 1; +#X obj 115 89 + 1; +#X obj 171 90 until; +#X obj 212 90 float 1; +#X obj 267 90 + 1; +#X msg 171 69 4; +#X obj 199 622 #finished; +#X obj 103 622 #scan +; +#X obj 265 622 #cast; +#X obj 307 622 #ravel; +#X obj 355 622 #grade; +#X obj 403 622 #perspective; +#X obj 171 111 #import (3); +#X obj 171 132 # * 128; +#X obj 19 109 #import (128); +#X obj 19 162 #outer +; +#X obj 100 161 #outer ^; +#X obj 100 181 # * 2; +#X obj 19 255 #outer gamma; +#X obj 3 622 doc_also; +#X obj 0 0 doc_h; +#X obj 3 320 doc_c 1; +#X obj 3 404 doc_i 2; +#X obj 14 434 doc_ii 0; +#X obj 14 530 doc_ii 1; +#X obj 3 562 doc_o 1; +#X obj 14 592 doc_oo 0; +#X obj 19 277 #out window; +#X obj 14 350 doc_cc 0; +#X obj 97 434 doc_m i0 grid; +#X obj 97 508 doc_m i0 op; +#X obj 97 372 doc_m c0 op; +#X obj 97 530 doc_m i1 grid; +#X obj 97 592 doc_m o0 grid; +#X obj 97 350 doc_m c0 grid; +#X obj 157 622 #join; +#X text 171 250 #outer does the same two-input operation between every +possible pair of the left-side grid and the right side grid.; +#X obj 392 102 display; +#X text 387 32 Multiplication table:; +#X obj 391 79 #outer * (1 2 3 4 5 6 7); +#X msg 391 56 1 2 3 4 5; +#X text 232 434 produces a grid of size Dim(anyA... \, anyB...) \, +where numbers are the results of the operation on every element of +A and every element of B. the resulting array can be very big. Don't +try this on two pictures (the result will have 6 dimensions); +#X text 232 508 same as arg 0; +#X text 232 530 same as arg 1; +#X text 232 350 grid B (see below); +#X obj 0 642 doc_f; +#X text 232 372 numop; +#X connect 0 0 8 0; +#X connect 0 0 14 0; +#X connect 1 0 24 0; +#X connect 1 0 24 1; +#X connect 2 0 25 0; +#X connect 2 0 25 1; +#X connect 3 0 2 1; +#X connect 4 0 1 1; +#X connect 4 0 3 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 9 0 23 0; +#X connect 10 0 9 1; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 12 0 21 0; +#X connect 13 0 12 1; +#X connect 14 0 11 0; +#X connect 21 0 22 0; +#X connect 22 0 27 1; +#X connect 23 0 1 0; +#X connect 23 0 2 0; +#X connect 24 0 27 0; +#X connect 25 0 26 0; +#X connect 26 0 27 0; +#X connect 27 0 36 0; +#X connect 28 1 16 0; +#X connect 28 1 44 0; +#X connect 28 1 15 0; +#X connect 28 1 17 0; +#X connect 28 1 18 0; +#X connect 28 1 19 0; +#X connect 28 1 20 0; +#X connect 38 1 50 0; +#X connect 39 1 51 0; +#X connect 40 1 55 0; +#X connect 41 1 52 0; +#X connect 43 1 53 0; +#X connect 48 0 46 0; +#X connect 49 0 48 0; diff --git a/externals/gridflow/doc/flow_classes/#pack-help.pd b/externals/gridflow/doc/flow_classes/#pack-help.pd new file mode 100644 index 00000000..1f3614f4 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#pack-help.pd @@ -0,0 +1,46 @@ +#N canvas 379 12 632 544 10; +#X obj 23 178 #color; +#X floatatom 85 77 5 0 0 0 - - -; +#X floatatom 107 96 5 0 0 0 - - -; +#X floatatom 129 115 5 0 0 0 - - -; +#X text 162 90 <--click and drag to place numbers in the grid.; +#X text 232 463 Outputs values from each individual inlet into a grid. +; +#X obj 0 0 doc_h; +#X obj 3 349 doc_i n; +#X obj 3 252 doc_c 0..2; +#X text 14 28 Creates a one-dimensional grid (a Dim(N) vector) from +individual integers.; +#X text 232 379 every inlet is hot.; +#X text 232 401 inlet order corresponds to value order in the grid. +; +#X obj 3 433 doc_o 1; +#X obj 14 463 doc_oo 0; +#X obj 14 379 doc_ii any; +#X obj 14 282 doc_cc 0; +#X obj 14 317 doc_cc 1; +#X obj 97 282 doc_m c0 float/int; +#X obj 97 317 doc_m c1 numtype; +#X obj 97 379 doc_m iany float; +#X obj 97 463 doc_m o0 grid[n]; +#X obj 0 515 doc_f; +#X text 232 317 number type (default: int32); +#X obj 85 135 #pack 3 f; +#X obj 3 495 doc_also; +#X obj 103 495 pack; +#X obj 139 495 #unpack; +#X obj 263 180 display; +#X text 232 282 number of elements in the vector to be built (aka number +of dimensions in the vector space) (default: 2); +#X connect 1 0 23 0; +#X connect 2 0 23 1; +#X connect 3 0 23 2; +#X connect 17 1 28 0; +#X connect 18 1 22 0; +#X connect 19 1 10 0; +#X connect 19 1 11 0; +#X connect 20 1 5 0; +#X connect 23 0 0 0; +#X connect 23 0 27 0; +#X connect 24 1 25 0; +#X connect 24 1 26 0; diff --git a/externals/gridflow/doc/flow_classes/#perspective-help.pd b/externals/gridflow/doc/flow_classes/#perspective-help.pd new file mode 100644 index 00000000..d67b92ac --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#perspective-help.pd @@ -0,0 +1,49 @@ +#N canvas 675 0 632 550 10; +#X text 153 55 transforms a dim[a... \, b] grid into a dim[a... \, +b-1] grid. there is a projection plane perpendicular to the last axis +and whose position is given by the creation argument. each vector's +length is adjusted so that it lies onto that plane. then the last dimension +of each vector is dropped; +#X obj 30 127 #pack 3; +#X floatatom 75 82 5 0 0 0 - - -; +#X obj 77 100 max 1; +#X floatatom 12 95 5 0 0 0 - - -; +#X floatatom 52 57 5 0 0 0 - - -; +#X obj 30 190 #print; +#X obj 79 182 #print; +#X obj 79 163 #perspective; +#X obj 103 501 #redim; +#X obj 151 501 #ravel; +#X obj 0 0 doc_h; +#X obj 3 501 doc_also; +#X obj 3 217 doc_c 1; +#X obj 3 279 doc_i 1; +#X obj 3 441 doc_o 1; +#X obj 14 471 doc_oo 0; +#X obj 14 309 doc_ii 0; +#X obj 14 247 doc_cc 0; +#X obj 97 309 doc_m i0 grid; +#X obj 97 471 doc_m o0 grid; +#X text 232 309 transforms a Dim[A... \, B] grid into a Dim[A... \, +B-1] grid. There is a projection plane perpendicular to the last axis +and whose position is given by the "depth" parameter. Each vector's +length is adjusted so that it lies onto that plane. Then the last dimension +of each vector is dropped.; +#X text 232 383 useful for converting from 3-D geometry to 2-D geometry. +Also useful for converting homogeneous 3-D into regular 3-D \, as homogeneous +3-D is really just regular 4-D...(!); +#X obj 97 247 doc_m c0 float; +#X text 232 247 depth; +#X obj 0 521 doc_f; +#X connect 1 0 6 0; +#X connect 1 0 8 0; +#X connect 2 0 3 0; +#X connect 3 0 1 2; +#X connect 4 0 1 0; +#X connect 5 0 1 1; +#X connect 8 0 7 0; +#X connect 12 1 9 0; +#X connect 12 1 10 0; +#X connect 19 1 21 0; +#X connect 19 1 22 0; +#X connect 23 1 24 0; diff --git a/externals/gridflow/doc/flow_classes/#polygon_area-help.pd b/externals/gridflow/doc/flow_classes/#polygon_area-help.pd new file mode 100644 index 00000000..6d7a661c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#polygon_area-help.pd @@ -0,0 +1,28 @@ +#N canvas 628 15 632 522 10; +#X obj 0 0 doc_h; +#X obj 0 493 doc_f; +#X obj 58 239 #polygon_area; +#X obj 59 259 display; +#X msg 58 96 4 2 # 10 10 10 310 230 310 230 10; +#X text 93 116 220 x 300 rectangle; +#X obj 79 146 display; +#X text 11 36 Find area of a polygon in square pixels.; +#X obj 3 309 doc_c 0; +#X obj 3 349 doc_i 1; +#X obj 3 418 doc_o 1; +#X obj 58 77 loadbang; +#X obj 14 379 doc_ii 0; +#X obj 97 379 doc_m i0 grid; +#X text 232 379 Vertices of the polygon.; +#X obj 14 448 doc_oo 0; +#X obj 97 448 doc_m o0 grid; +#X text 232 448 Grid of only one element representing the area of the +polygon received from inlet 0; +#X obj 58 115 # +; +#X connect 2 0 3 0; +#X connect 4 0 18 0; +#X connect 11 0 4 0; +#X connect 13 1 14 0; +#X connect 16 1 17 0; +#X connect 18 0 2 0; +#X connect 18 0 6 0; diff --git a/externals/gridflow/doc/flow_classes/#polygon_comparator-help.pd b/externals/gridflow/doc/flow_classes/#polygon_comparator-help.pd new file mode 100644 index 00000000..5dd99ec8 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#polygon_comparator-help.pd @@ -0,0 +1,85 @@ +#N canvas 566 0 632 642 10; +#X obj 255 129 #outer + (0 9000); +#X text 333 91 make regular triangle; +#X obj 255 227 #rotate; +#X obj 209 53 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 308 227 * 100; +#X floatatom 308 211 5 0 0 0 - - -; +#X obj 268 72 t b b; +#X obj 255 246 #polygon_comparator; +#X obj 209 72 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 255 186 #t; +#X obj 228 53 metro 1000; +#X text 30 254 BUG: first try doesn't work; +#X text 67 265 please bang twice; +#X msg 381 149 4 2 # 1 1 1 -1 -1 -1 -1 1; +#X obj 391 195 display; +#X obj 255 110 # * 12000; +#X obj 255 91 #for 0 3 1; +#X obj 381 169 # * (100 100); +#X obj 255 167 # + (0 0); +#X obj 255 148 # cos* (100 100); +#X obj 215 278 #fold min; +#X obj 295 278 #fold max; +#X obj 215 297 #to_float; +#X obj 295 297 #to_float; +#X obj 381 129 loadbang; +#X obj 215 316 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 9 +-262144 -1 -1 0 256; +#X obj 295 316 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 9 +-262144 -1 -1 0 256; +#X text 232 453 or method "precision" for setting the size of the output +grid.; +#X text 232 510 in which the peak represents the amount of similarity +between the two polygons \, and the position of the peak represents +the optimal rotation for maximum overlapping of the polygons. The rotation +origin is assumed to be the centroid (#moment 1); +#X text 24 239 NOTE: requires [#fft]; +#X text 33 150 translations \, e.g. [# +]; +#X text 33 168 rotations \, e.g. [#rotate]; +#X obj 0 0 doc_h; +#X obj 3 361 doc_c; +#X obj 3 401 doc_i 2; +#X obj 3 594 doc_o 1; +#X text 232 488 a 2-D polygon as N by 2 grid; +#X text 232 431 a 2-D polygon as N by 2 grid; +#X obj 14 431 doc_ii 0; +#X obj 14 488 doc_ii 1; +#X obj 14 624 doc_oo 0; +#X obj 0 654 doc_f; +#X obj 97 431 doc_m i0 grid; +#X obj 97 488 doc_m i1; +#X text 8 114 Comparisons are meant to be invariant; +#X text 8 126 to the following transformations:; +#X text 33 186 scalar scalings \, e.g. [# *] with; +#X text 33 198 only one value.; +#X obj 97 624 doc_m o0 grid; +#X connect 0 0 19 0; +#X connect 2 0 7 0; +#X connect 3 0 10 0; +#X connect 4 0 2 1; +#X connect 5 0 4 0; +#X connect 6 1 16 0; +#X connect 7 0 20 0; +#X connect 7 0 21 0; +#X connect 8 0 6 0; +#X connect 9 0 2 0; +#X connect 10 0 6 0; +#X connect 13 0 17 0; +#X connect 15 0 0 0; +#X connect 16 0 15 0; +#X connect 17 0 14 0; +#X connect 17 0 7 1; +#X connect 18 0 9 0; +#X connect 19 0 18 0; +#X connect 20 0 22 0; +#X connect 21 0 23 0; +#X connect 22 0 25 0; +#X connect 23 0 26 0; +#X connect 24 0 13 0; +#X connect 42 1 37 0; +#X connect 42 1 27 0; +#X connect 43 1 36 0; +#X connect 43 1 28 0; diff --git a/externals/gridflow/doc/flow_classes/#polygon_each_edge-help.pd b/externals/gridflow/doc/flow_classes/#polygon_each_edge-help.pd new file mode 100644 index 00000000..06afba8a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#polygon_each_edge-help.pd @@ -0,0 +1,22 @@ +#N canvas 338 225 632 377 10; +#X obj 51 139 #print; +#X obj 51 83 # +; +#X obj 51 102 #polygon_each_edge; +#X obj 0 0 doc_h; +#X obj 3 170 doc_c; +#X obj 3 210 doc_i 1; +#X obj 3 273 doc_o 1; +#X obj 14 303 doc_oo 0; +#X obj 14 240 doc_ii 0; +#X obj 0 348 doc_f; +#X msg 51 48 4 2 # 0 0 0 20 20 20 20 0; +#X obj 97 240 doc_m i0 grid; +#X obj 97 303 doc_m o0 grid; +#X text 232 240 Vertices of the polygon; +#X text 232 303 Returns a grid contaning a vertex pair for each edge +of the polygon.; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 10 0 1 0; +#X connect 11 1 13 0; +#X connect 12 1 14 0; diff --git a/externals/gridflow/doc/flow_classes/#polygon_moment-help.pd b/externals/gridflow/doc/flow_classes/#polygon_moment-help.pd new file mode 100644 index 00000000..41ee2986 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#polygon_moment-help.pd @@ -0,0 +1,64 @@ +#N canvas 678 0 632 610 10; +#X msg 263 58 4 2 # 1 1 1 5 5 5 5 1; +#X text 413 58 should give 3 3; +#X obj 282 188 display; +#X obj 203 219 #outer + (-4 4); +#X obj 203 238 #transpose; +#X obj 37 64 metro 42; +#X obj 37 47 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X msg 37 83 240 320 3 #; +#X obj 37 256 #out window; +#X obj 37 122 #draw_polygon + (255 0 0); +#X obj 37 219 #draw_rect + (255 255 0); +#X obj 378 188 display; +#X obj 377 168 #polygon_moment 2; +#X obj 281 168 #polygon_moment; +#X obj 263 77 # * (10 20); +#X obj 263 96 #rotate; +#X floatatom 316 98 5 0 0 0 - - -; +#X obj 0 0 doc_h; +#X obj 3 375 doc_i 2; +#X obj 3 291 doc_c 1; +#X obj 3 516 doc_o 1; +#X obj 14 546 doc_oo 0; +#X obj 14 405 doc_ii 0; +#X obj 14 427 doc_ii 1; +#X obj 14 321 doc_cc 0; +#X obj 97 321 doc_m c0 float; +#X text 232 321 1: first-order moment (average); +#X text 232 343 2: second-order moment (standard-deviation); +#X obj 97 546 doc_m o0 grid; +#X obj 97 405 doc_m i0 grid; +#X obj 97 427 doc_m i1 grid; +#X text 232 427 centre to subtract from the input; +#X text 232 449 in the case of an average \, you'd leave this unused +; +#X text 232 471 but in the case of a standard-deviation \, you'd put +the average in here \, unless you want a nonstandard deviation.; +#X text 232 546 polygon. size (N 2); +#X text 232 405 polygon. size (N 2); +#X obj 0 578 doc_f; +#X connect 0 0 14 0; +#X connect 3 0 4 0; +#X connect 4 0 10 2; +#X connect 5 0 7 0; +#X connect 6 0 5 0; +#X connect 7 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 8 0; +#X connect 12 0 11 0; +#X connect 13 0 2 0; +#X connect 13 0 3 0; +#X connect 14 0 15 0; +#X connect 15 0 9 2; +#X connect 15 0 13 0; +#X connect 15 0 12 0; +#X connect 16 0 15 1; +#X connect 25 1 26 0; +#X connect 25 1 27 0; +#X connect 28 1 34 0; +#X connect 29 1 35 0; +#X connect 30 1 31 0; +#X connect 30 1 32 0; +#X connect 30 1 33 0; diff --git a/externals/gridflow/doc/flow_classes/#polygon_perimetre-help.pd b/externals/gridflow/doc/flow_classes/#polygon_perimetre-help.pd new file mode 100644 index 00000000..6409a635 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#polygon_perimetre-help.pd @@ -0,0 +1,23 @@ +#N canvas 335 118 632 342 10; +#X obj 0 0 doc_h; +#X obj 0 313 doc_f; +#X obj 47 64 #polygon_perimetre; +#X obj 3 129 doc_c 0; +#X obj 3 169 doc_i 1; +#X obj 3 231 doc_o 1; +#X obj 14 261 doc_oo 0; +#X obj 14 199 doc_ii 0; +#X obj 97 261 doc_m o0 grid; +#X obj 97 199 doc_m i0 grid; +#X text 232 261 perimetre as grid[]; +#X text 232 199 polygon as grid[N \, 2] or any cyclic path as grid[N +\, M]; +#X text 187 44 finds the perimetre of a sequence of points in which +the last point is assumed to connect back to the first point. this +not need be an actual polygon (because points don't need to be coplanar +for this calculation to work).; +#X obj 3 293 doc_also; +#X obj 103 293 #polygon_area; +#X connect 8 1 10 0; +#X connect 9 1 11 0; +#X connect 13 1 14 0; diff --git a/externals/gridflow/doc/flow_classes/#polygon_radial_map-help.pd b/externals/gridflow/doc/flow_classes/#polygon_radial_map-help.pd new file mode 100644 index 00000000..e08e8017 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#polygon_radial_map-help.pd @@ -0,0 +1,55 @@ +#N canvas 486 64 632 526 10; +#X obj 244 185 #polygon_radial_map; +#X text 70 40 makes a 1-D panoramic (polar) rendering of a polygon. +; +#X text 69 57 if you want to make standardized (translation-independent) +renderings of polygons \, first substract [#polygon_moment] (or a variant +thereof) from the polygon.; +#X obj 244 280 #outer * (255 255 255); +#X obj 244 299 #out window; +#X obj 24 193 t b a; +#X obj 24 240 #draw_polygon put (255 224 200); +#X msg 24 221 240 320 3 # 0 60 90; +#X obj 244 242 #for 128 0 -1; +#X obj 24 259 #out window; +#X obj 244 140 #t; +#X obj 274 141 #polygon_moment; +#X obj 293 162 display; +#X obj 244 166 # -; +#X obj 392 184 display; +#X msg 24 116 4 2 # 30 30 30 250 120 200 170 90; +#X obj 244 204 t a a; +#X obj 244 223 #finished; +#X obj 244 261 #outer <; +#X obj 0 0 doc_h; +#X obj 3 333 doc_c 0; +#X obj 3 373 doc_i 1; +#X obj 3 435 doc_o 1; +#X obj 14 465 doc_oo 0; +#X obj 14 403 doc_ii 0; +#X obj 0 497 doc_f; +#X obj 97 465 doc_m o0 grid; +#X obj 97 403 doc_m i0 grid; +#X text 232 403 polygon; +#X text 232 465 radial map; +#X connect 0 0 16 0; +#X connect 3 0 4 0; +#X connect 5 0 7 0; +#X connect 5 1 6 2; +#X connect 6 0 9 0; +#X connect 7 0 6 0; +#X connect 8 0 18 0; +#X connect 10 0 13 0; +#X connect 10 1 11 0; +#X connect 11 0 12 0; +#X connect 11 0 13 1; +#X connect 13 0 0 0; +#X connect 13 0 14 0; +#X connect 15 0 5 0; +#X connect 15 0 10 0; +#X connect 16 0 17 0; +#X connect 16 1 18 1; +#X connect 17 0 8 0; +#X connect 18 0 3 0; +#X connect 26 1 29 0; +#X connect 27 1 28 0; diff --git a/externals/gridflow/doc/flow_classes/#posterize-help.pd b/externals/gridflow/doc/flow_classes/#posterize-help.pd new file mode 100644 index 00000000..3ca6cba7 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#posterize-help.pd @@ -0,0 +1,63 @@ +#N canvas 674 0 632 625 10; +#X obj 178 114 bng 15 250 50 0 empty empty empty 0 -6 0 8 -4034 -1 +-1; +#X text 274 230 2 - 255; +#X msg 217 157 open bluemarble.jpg; +#X obj 197 179 #in; +#X obj 178 203 #store; +#X obj 178 251 #posterize; +#X obj 103 570 #convolve; +#X obj 169 570 #contrast; +#X obj 235 570 #solarize; +#X obj 301 570 #layer; +#X obj 0 0 doc_h; +#X obj 3 570 doc_also; +#X obj 3 424 doc_i 2; +#X obj 3 508 doc_o 1; +#X obj 14 538 doc_oo 0; +#X obj 14 454 doc_ii 0; +#X obj 14 476 doc_ii 1; +#X text 10 35 Reduces the number of possible intensities in an image: +it rounds the color values. The effect is mostly apparent with a low +number of levels.; +#X obj 202 271 #out window \, title original; +#X obj 178 291 #out window \, title modified; +#X obj 178 136 t b b b; +#X floatatom 235 230 5 0 0 0 - - -; +#X msg 235 210 2; +#X obj 235 190 loadbang; +#X obj 97 454 doc_m i0 grid; +#X obj 97 476 doc_m i1 float int; +#X obj 97 538 doc_m o0 grid; +#X text 232 538 posterised image; +#X obj 3 323 doc_c 1; +#X obj 14 353 doc_cc 0; +#X obj 97 353 doc_m c0 float/int; +#X text 11 75 example: simulate the 216-color "web" palette using 6 +levels. simulate a 15-bit display using 32 levels .; +#X text 232 353 Number of possible levels per channel. The levels are +equally spaced \, with the lowest at 0 and the highest at 255 the minimum +number of levels is 2 and the default value is also 2; +#X obj 0 590 doc_f; +#X text 232 454 original image; +#X text 232 476 same as arg 0; +#X connect 0 0 20 0; +#X connect 2 0 3 0; +#X connect 3 0 4 1; +#X connect 4 0 5 0; +#X connect 4 0 18 0; +#X connect 5 0 19 0; +#X connect 11 1 6 0; +#X connect 11 1 7 0; +#X connect 11 1 8 0; +#X connect 11 1 9 0; +#X connect 20 0 4 0; +#X connect 20 1 3 0; +#X connect 20 2 2 0; +#X connect 21 0 5 1; +#X connect 22 0 21 0; +#X connect 23 0 22 0; +#X connect 24 1 34 0; +#X connect 25 1 35 0; +#X connect 26 1 27 0; +#X connect 30 1 32 0; diff --git a/externals/gridflow/doc/flow_classes/#print-help.pd b/externals/gridflow/doc/flow_classes/#print-help.pd new file mode 100644 index 00000000..b15e8ff4 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#print-help.pd @@ -0,0 +1,73 @@ +#N canvas 408 30 632 632 10; +#X text 15 32 Displays the dimensions of a grid in the console. If +the grid has less than two dimensions it will display all grid data. +; +#X floatatom 213 105 5 0 0 0 - - -; +#X floatatom 235 126 5 0 0 0 - - -; +#X floatatom 257 146 5 0 0 0 - - -; +#X obj 71 116 #in; +#X obj 100 158 #import (3 3 3); +#X msg 100 110 3 3 3 # 27; +#X obj 100 134 # rand; +#X msg 71 88 load sewing.jpg; +#X obj 71 251 #print paprika; +#X text 232 409 Incoming grid.; +#X obj 103 582 #dim; +#X obj 139 582 #to_float; +#X obj 205 582 #to_list; +#X obj 265 582 print; +#X text 232 431 select between base 2 \, 8 \, 10 \, 16; +#X text 232 453 stop printing after that number of rows; +#X text 232 475 stop printing after that number of characters on the +same line; +#X obj 213 165 #pack 3; +#X msg 368 188 base 2; +#X msg 368 208 base 8; +#X msg 368 228 base 10; +#X msg 368 248 base 16; +#X msg 370 159 maxrows 10; +#X msg 370 136 trunc 20; +#X obj 0 0 doc_h; +#X obj 3 379 doc_i 1; +#X obj 3 295 doc_c 0..1; +#X obj 3 582 doc_also; +#X obj 14 550 doc_oo 0; +#X obj 14 409 doc_ii 0; +#X obj 3 520 doc_o 2; +#X obj 14 325 doc_cc 0; +#X obj 97 325 doc_m c0 float|symbol; +#X text 232 325 prefix before the printed element in the console.; +#X text 232 347 default: no prefix; +#X obj 97 409 doc_m i0 grid; +#X obj 97 431 doc_m i0 base int; +#X obj 97 453 doc_m i0 maxrows int; +#X obj 97 475 doc_m i0 trunc int; +#X obj 97 550 doc_m o0 grid; +#X text 232 550 probably unused; +#X obj 0 603 doc_f; +#X connect 1 0 18 0; +#X connect 2 0 18 1; +#X connect 3 0 18 2; +#X connect 4 0 9 0; +#X connect 5 0 9 0; +#X connect 6 0 7 0; +#X connect 7 0 5 0; +#X connect 8 0 4 0; +#X connect 18 0 9 0; +#X connect 19 0 9 0; +#X connect 20 0 9 0; +#X connect 21 0 9 0; +#X connect 22 0 9 0; +#X connect 23 0 9 0; +#X connect 24 0 9 0; +#X connect 28 1 11 0; +#X connect 28 1 12 0; +#X connect 28 1 13 0; +#X connect 28 1 14 0; +#X connect 33 1 34 0; +#X connect 33 1 35 0; +#X connect 36 1 10 0; +#X connect 37 1 15 0; +#X connect 38 1 16 0; +#X connect 39 1 17 0; +#X connect 40 1 41 0; diff --git a/externals/gridflow/doc/flow_classes/#ravel-help.pd b/externals/gridflow/doc/flow_classes/#ravel-help.pd new file mode 100644 index 00000000..2f167e57 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#ravel-help.pd @@ -0,0 +1,42 @@ +#N canvas 691 0 632 493 10; +#X obj 20 80 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X obj 20 231 print before; +#X obj 140 233 print after; +#X obj 20 142 #in; +#X obj 20 188 #dim; +#X obj 103 444 #redim (1); +#X obj 175 444 #perspective; +#X obj 140 190 #dim; +#X obj 140 169 #ravel; +#X obj 0 0 doc_h; +#X obj 3 267 doc_c 0; +#X obj 3 307 doc_i 1; +#X obj 3 444 doc_also; +#X obj 3 382 doc_o 1; +#X obj 14 412 doc_oo 0; +#X obj 14 337 doc_ii 0; +#X obj 97 337 doc_m i0 grid; +#X obj 97 412 doc_m o0 grid; +#X text 232 337 like [#redim] but always produce a 1-D grid with the +same total number of elements.; +#X obj 0 464 doc_f; +#X msg 20 120 load bluemarble.jpg; +#X obj 20 210 #to_list; +#X obj 140 212 #to_list; +#X text 143 55 like #redim but always produces a 1-D grid with the +same total number of elements.; +#X text 232 412 1-D grid; +#X connect 0 0 20 0; +#X connect 3 0 4 0; +#X connect 3 0 8 0; +#X connect 4 0 21 0; +#X connect 7 0 22 0; +#X connect 8 0 7 0; +#X connect 12 1 5 0; +#X connect 12 1 6 0; +#X connect 16 1 18 0; +#X connect 17 1 24 0; +#X connect 20 0 3 0; +#X connect 21 0 1 0; +#X connect 22 0 2 0; diff --git a/externals/gridflow/doc/flow_classes/#record-help.pd b/externals/gridflow/doc/flow_classes/#record-help.pd new file mode 100644 index 00000000..2cbb9721 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#record-help.pd @@ -0,0 +1,53 @@ +#N canvas 525 0 632 584 10; +#X obj 79 121 #camera; +#X obj 79 70 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 105 153 #out window; +#X obj 154 70 hsl 128 15 20 300 0 0 empty empty empty -2 -6 0 8 -260818 +-1 -1 0 1; +#X obj 105 172 fps detailed; +#X obj 105 191 print; +#X obj 79 98 metro 100; +#X obj 93 220 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 123 269 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 108 244 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 79 299 #record; +#X text 232 461 Starts recording to the file.; +#X text 232 483 Stops recording.; +#X text 232 426 Opens a dialog window in which to type the filename +to be recorded \, the defualt encoding is quicktime (raw).; +#X text 22 33 Record a quicktime file with [#out]; +#X text 113 218 <-- 1 select filename; +#X text 128 243 <-- 2 start recording; +#X text 143 269 <-- 3 stop recording; +#X text 142 298 <-- open for more options; +#X obj 0 0 doc_h; +#X obj 3 374 doc_i 4; +#X obj 3 334 doc_c 0; +#X obj 3 515 doc_o 0; +#X obj 14 404 doc_ii 0; +#X obj 14 426 doc_ii 1; +#X obj 14 461 doc_ii 2; +#X obj 14 483 doc_ii 3; +#X obj 97 404 doc_m i0 grid; +#X obj 97 426 doc_m i1 bang; +#X obj 97 461 doc_m i2 bang; +#X obj 97 483 doc_m i3 bang; +#X obj 0 555 doc_f; +#X text 232 404 images to be recorded go here.; +#X connect 0 0 2 0; +#X connect 0 0 10 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 10 1; +#X connect 8 0 10 3; +#X connect 9 0 10 2; +#X connect 27 1 32 0; +#X connect 28 1 13 0; +#X connect 29 1 11 0; +#X connect 30 1 12 0; diff --git a/externals/gridflow/doc/flow_classes/#redim-help.pd b/externals/gridflow/doc/flow_classes/#redim-help.pd new file mode 100644 index 00000000..6ccd005c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#redim-help.pd @@ -0,0 +1,59 @@ +#N canvas 680 0 632 624 10; +#X text 86 37 rearrange a grid's values according to new dimensions +; +#X obj 21 36 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X obj 21 103 #in; +#X obj 111 154 #out window; +#X obj 103 575 #ravel; +#X obj 151 575 #perspective; +#X obj 21 154 #out window; +#X obj 21 127 t a a; +#X obj 111 124 #redim (120 160 3); +#X text 232 443 Outputs the redimensioned data as a grid.; +#X msg 232 131 240 320 3; +#X msg 226 95 400 400 3; +#X obj 0 0 doc_h; +#X obj 3 277 doc_i 2; +#X obj 3 193 doc_c 1; +#X obj 3 575 doc_also; +#X obj 3 413 doc_o 1; +#X obj 14 307 doc_ii 0; +#X obj 14 381 doc_ii 1; +#X obj 14 443 doc_oo 0; +#X obj 14 223 doc_cc 0; +#X obj 97 223 doc_m c0 grid; +#X text 232 223 dimension list \, (120 160 3) in this example.; +#X obj 97 307 doc_m i0 grid; +#X text 232 245 same as the dimension list of #import; +#X text 232 307 the elements of this grid are serialized. if the resulting +grid must be larger \, the sequence is repeated as much as necessary. +if the resulting grid must be smaller \, the sequence is truncated. +then the elements are deserialized to form the resulting grid.; +#X obj 97 381 doc_m i1 grid; +#X text 232 381 same as arg 0; +#X obj 97 443 doc_m o0 grid; +#X text 232 465 example: with a 240 320 RGB image \, [#redim 120 640 +3] will visually separate the even lines (left) from the odd lines +(right). contrary to this \, [#redim 640 120 3] will split every line +and put its left half on a even line and the right half on the following +odd line. [#redim] 480 320 3 will repeat the input image twice in the +output image. [#redim] 240 50 3 will only keep the 50 top lines.; +#X obj 0 595 doc_f; +#X msg 21 81 load working.jpg; +#X connect 1 0 31 0; +#X connect 2 0 7 0; +#X connect 7 0 6 0; +#X connect 7 1 8 0; +#X connect 8 0 3 0; +#X connect 10 0 8 1; +#X connect 11 0 8 1; +#X connect 15 1 4 0; +#X connect 15 1 5 0; +#X connect 21 1 22 0; +#X connect 21 1 24 0; +#X connect 23 1 25 0; +#X connect 26 1 27 0; +#X connect 28 1 9 0; +#X connect 28 1 29 0; +#X connect 31 0 2 0; diff --git a/externals/gridflow/doc/flow_classes/#reinterval-help.pd b/externals/gridflow/doc/flow_classes/#reinterval-help.pd new file mode 100644 index 00000000..7ec9082f --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#reinterval-help.pd @@ -0,0 +1,33 @@ +#N canvas 335 118 632 382 10; +#X obj 0 0 doc_h; +#X obj 0 353 doc_f; +#X obj 98 61 #reinterval; +#X obj 3 101 doc_c 0; +#X obj 3 141 doc_i 5; +#X obj 3 291 doc_o 1; +#X obj 14 171 doc_ii 0; +#X obj 14 193 doc_ii 1; +#X obj 14 215 doc_ii 2; +#X obj 14 237 doc_ii 3; +#X obj 14 259 doc_ii 4; +#X obj 14 321 doc_oo 0; +#X obj 97 171 doc_m i0 grid; +#X obj 97 193 doc_m i1 grid; +#X obj 97 215 doc_m i2 grid; +#X obj 97 237 doc_m i3 grid; +#X obj 97 259 doc_m i4 grid; +#X obj 97 321 doc_m o0 grid; +#X text 232 171 values to be rescaled; +#X text 232 321 rescaled values; +#X text 232 193 old start; +#X text 232 215 old end; +#X text 232 237 new start; +#X text 232 259 new end; +#X text 187 46 multiply and add to values such that the old start becomes +the new start \, and the old end becomes the new end.; +#X connect 12 1 18 0; +#X connect 13 1 20 0; +#X connect 14 1 21 0; +#X connect 15 1 22 0; +#X connect 16 1 23 0; +#X connect 17 1 19 0; diff --git a/externals/gridflow/doc/flow_classes/#remap_image-help.pd b/externals/gridflow/doc/flow_classes/#remap_image-help.pd new file mode 100644 index 00000000..0c704ab6 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#remap_image-help.pd @@ -0,0 +1,53 @@ +#N canvas 690 0 632 578 10; +#X text 19 26 Transforms a grid by displacing pixels.; +#X obj 27 154 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 46 179 #in; +#X floatatom 156 201 5 0 0 0 - - -; +#X obj 140 229 # +; +#X msg 61 153 open sewing.jpg; +#X text 201 199 <-- Modify value to see transformation.; +#X text 178 152 <-- open image; +#X obj 46 261 #out window \, title remapped; +#X obj 46 97 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 46 120 metro 33.3667; +#X text 19 45 If you chain indexmap (coordinate) transformations from +outlet 1 to inlet 1 \, then sending an image in inlet 0 will emit its +deformation out of outlet 0; +#X obj 46 229 #remap_image; +#X text 187 229 <-- change the numop to change the transformation; +#X obj 103 529 #rotate; +#X obj 0 0 doc_h; +#X obj 3 295 doc_c 0; +#X obj 3 335 doc_i 2; +#X obj 3 529 doc_also; +#X obj 3 432 doc_o 2; +#X obj 14 365 doc_ii 0; +#X obj 14 387 doc_ii 1; +#X obj 14 462 doc_oo 0; +#X obj 14 497 doc_oo 1; +#X obj 97 365 doc_m i0 grid; +#X text 232 365 grid to be remapped; +#X obj 97 497 doc_m o1 grid; +#X text 232 497 indexmap of dummy coordinates \, to be deformed; +#X obj 97 387 doc_m i1 grid; +#X text 232 387 modified version of what came out of outlet 1 \, which +will determine the remapping; +#X obj 97 462 doc_m o0 grid; +#X text 232 462 the grid from inlet 0 after being remapped using the +grid from inlet 1; +#X obj 0 549 doc_f; +#X connect 1 0 2 0; +#X connect 2 0 12 0; +#X connect 3 0 4 1; +#X connect 4 0 12 1; +#X connect 5 0 2 0; +#X connect 9 0 10 0; +#X connect 10 0 2 0; +#X connect 12 0 8 0; +#X connect 12 1 4 0; +#X connect 18 1 14 0; +#X connect 24 1 25 0; +#X connect 26 1 27 0; +#X connect 28 1 29 0; +#X connect 30 1 31 0; diff --git a/externals/gridflow/doc/flow_classes/#reverse-help.pd b/externals/gridflow/doc/flow_classes/#reverse-help.pd new file mode 100644 index 00000000..71c6fe6c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#reverse-help.pd @@ -0,0 +1,65 @@ +#N canvas 668 0 632 642 10; +#X obj 258 177 #color; +#X obj 301 320 #color; +#X obj 259 378 display; +#X obj 258 319 t a a; +#X text 15 57 Swaps the values of incoming grids while preserving the +number of Dimensions between incoming and outgoing grids.; +#X obj 22 257 #in; +#X obj 22 176 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 22 371 #out window; +#X obj 87 259 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -260818 -1 +-1 0; +#X obj 87 277 - 3; +#X floatatom 87 297 5 0 0 0 - - -; +#X obj 22 314 #reverse 0; +#X obj 258 300 #reverse 0; +#X obj 323 245 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -260818 -1 +-1 0; +#X obj 323 263 - 3; +#X floatatom 323 283 5 0 0 0 - - -; +#X obj 0 0 doc_h; +#X obj 3 416 doc_c 1; +#X obj 3 517 doc_i 2; +#X obj 3 601 doc_o 1; +#X obj 14 631 doc_oo 0; +#X obj 14 547 doc_ii 0; +#X obj 14 569 doc_ii 1; +#X obj 14 446 doc_cc 0; +#X obj 97 631 doc_m o0 grid; +#X obj 97 547 doc_m i0 grid; +#X obj 97 446 doc_m c0 float; +#X obj 97 569 doc_m i1 float; +#X text 232 569 same as arg 0; +#X text 232 446 dimension number of the dimension by which the reverse +will occur. For N-dimensional grids \, the dimensions are numbered +from 0 to N-1. In addition \, negative numbers from -N to -1 may be +used \, to which N will be added.; +#X obj 0 663 doc_f; +#X text 232 547 grid to be reversed; +#X text 232 631 reversed grid; +#X msg 22 226 load b001.jpg; +#X text 16 92 for an image \, 0 or -3 does vertical flip \, 1 or -2 +does horizontal flip \, and 2 or -1 does channel flip. if you do this +on something else than an image \, you may see why the negative numbers +are supported: if you make a grid of multiple images \, then -1 will +always refer to the channels dimension no matter what.; +#X connect 0 0 12 0; +#X connect 3 0 2 0; +#X connect 3 1 1 0; +#X connect 5 0 11 0; +#X connect 6 0 33 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 11 1; +#X connect 11 0 7 0; +#X connect 12 0 3 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 12 1; +#X connect 24 1 32 0; +#X connect 25 1 31 0; +#X connect 26 1 29 0; +#X connect 27 1 28 0; +#X connect 33 0 5 0; diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-help.pd b/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-help.pd new file mode 100644 index 00000000..c370a754 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#rgb_to_greyscale-help.pd @@ -0,0 +1,27 @@ +#N canvas 689 0 632 401 10; +#X obj 166 183 #out window; +#X obj 166 112 #in; +#X obj 166 137 #rgb_to_greyscale; +#X obj 174 91 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X msg 166 68 open working.jpg; +#X obj 166 160 #greyscale_to_rgb; +#X obj 0 0 doc_h; +#X obj 3 208 doc_c 0; +#X obj 3 248 doc_i 1; +#X obj 3 310 doc_o 1; +#X obj 14 340 doc_oo 0; +#X obj 14 278 doc_ii 0; +#X text 15 27 Creates a greyscale image from a rgb color image.; +#X obj 97 278 doc_m i0 grid; +#X text 232 278 presumed to be an RGB image; +#X obj 97 340 doc_m o0 grid; +#X text 232 340 the image converted to greyscale.; +#X obj 0 372 doc_f; +#X connect 1 0 2 0; +#X connect 2 0 5 0; +#X connect 3 0 1 0; +#X connect 4 0 1 0; +#X connect 5 0 0 0; +#X connect 13 1 14 0; +#X connect 15 1 16 0; diff --git a/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd b/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd new file mode 100644 index 00000000..cbb7ab1f --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#rgb_to_yuv-help.pd @@ -0,0 +1,30 @@ +#N canvas 205 69 632 421 10; +#X obj 324 188 #out window; +#X obj 273 87 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 255 107 #in; +#X msg 255 61 open sewing.jpg; +#X obj 324 150 #rgb_to_yuv; +#X text 5 152 This displays the image as RGB:; +#X text 99 190 This displays the image as YUV:; +#X text 23 26 Converts an RGB color model image to a YUV color model +image.; +#X obj 226 152 #out window; +#X obj 0 0 doc_h; +#X obj 3 268 doc_i 1; +#X obj 3 228 doc_c 0; +#X obj 3 330 doc_o 1; +#X obj 14 360 doc_oo 0; +#X obj 14 298 doc_ii 0; +#X obj 0 392 doc_f; +#X obj 97 298 doc_m i0 grid; +#X obj 97 360 doc_m o0 grid; +#X text 232 298 image in RGB format.; +#X text 232 360 image in YUV format.; +#X connect 1 0 2 0; +#X connect 2 0 4 0; +#X connect 2 0 8 0; +#X connect 3 0 2 0; +#X connect 4 0 0 0; +#X connect 16 1 18 0; +#X connect 17 1 19 0; diff --git a/externals/gridflow/doc/flow_classes/#rotate-help.pd b/externals/gridflow/doc/flow_classes/#rotate-help.pd new file mode 100644 index 00000000..f8167a45 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#rotate-help.pd @@ -0,0 +1,49 @@ +#N canvas 689 0 632 445 10; +#X obj 180 121 #rotate; +#X text 4 26 The [#rotate] performs rotations on indexmaps and polygons +and such objects.; +#X obj 163 83 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 80 98 #in; +#X obj 227 99 hsl 40 15 0 35999 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 80 121 #remap_image; +#X obj 80 142 #out window \, title #rotate; +#X obj 9 57 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 1; +#X obj 9 76 metro 100; +#X text 232 274 The Grid passed in inlet 0 will be the grid on which +the rotation will be performed.; +#X floatatom 243 123 7 0 0 0 - - -; +#X msg 80 57 open b001.jpg; +#X obj 0 0 doc_h; +#X obj 3 244 doc_i 2; +#X obj 3 169 doc_c 1; +#X text 232 371 Outputs the result of the rotation and needs to be +sent to a [#remap_image] to be visualised.; +#X obj 3 341 doc_o 1; +#X obj 14 371 doc_oo 0; +#X obj 14 274 doc_ii 0; +#X obj 14 309 doc_ii 1; +#X obj 14 199 doc_cc 0; +#X obj 97 199 doc_m c0 float; +#X obj 97 274 doc_m i0 grid; +#X obj 97 309 doc_m i1 float; +#X text 232 309 same as arg 0; +#X obj 97 371 doc_m o0 grid; +#X obj 0 416 doc_f; +#X text 232 199 integer number (0 to 35999) as a creation argument +which initializes the first angle of rotation.; +#X connect 0 0 5 1; +#X connect 2 0 3 0; +#X connect 3 0 5 0; +#X connect 4 0 0 1; +#X connect 4 0 10 0; +#X connect 5 0 6 0; +#X connect 5 1 0 0; +#X connect 7 0 8 0; +#X connect 8 0 3 0; +#X connect 11 0 3 0; +#X connect 21 1 27 0; +#X connect 22 1 9 0; +#X connect 23 1 24 0; +#X connect 25 1 15 0; diff --git a/externals/gridflow/doc/flow_classes/#rotatificator-help.pd b/externals/gridflow/doc/flow_classes/#rotatificator-help.pd new file mode 100644 index 00000000..e31066a3 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#rotatificator-help.pd @@ -0,0 +1,50 @@ +#N canvas 604 245 632 581 10; +#X obj 0 0 doc_h; +#X obj 0 552 doc_f; +#X obj 20 64 #rotatificator; +#X text 191 138 named in honour of Laszlo Zlotz (a character from Achille +Talon); +#X obj 3 532 doc_also; +#X obj 103 532 #rotate; +#X obj 3 286 doc_i 2; +#X obj 3 418 doc_o 1; +#X obj 14 448 doc_oo 0; +#X obj 14 316 doc_ii 0; +#X obj 14 386 doc_ii 1; +#X obj 97 316 doc_m i0 float; +#X obj 97 338 doc_m i0 axis; +#X obj 3 180 doc_c 3; +#X obj 14 210 doc_cc 0; +#X obj 14 232 doc_cc 1; +#X obj 14 254 doc_cc 2; +#X obj 97 448 doc_m o0 grid; +#X obj 97 386 doc_m i1; +#X obj 97 210 doc_m c0 float/int; +#X obj 97 232 doc_m c1 float/int; +#X obj 97 254 doc_m c2 float/int; +#X text 232 210 from; +#X text 232 232 to; +#X text 232 254 n; +#X text 232 338 \$1=from (default:0) \; \$2=to (default: 1) \; \$3=n +(default: 2); +#X text 232 386 angle; +#X text 232 316 scale; +#X text 192 44 generates a N by N rotation matrix that rotates through +two dimensions of your choice (from \, to) by a certain angle (in centidegrees). +values produced are integers. the rotation matrix is multiplied by +the given scale factor such that after an eventual [#inner] \, a division +by the same amount would be performed. greater scale factors are more +precise.; +#X text 232 448 rotation matrix such that if rows 'from' and 'to' were +deleted and columns 'from' and 'to' were deleted \, you'd have an identity +matrix. in other words \, the rotation happens in a plane space made +of the two dimensions represented by those two rows and two columns. +; +#X connect 4 1 5 0; +#X connect 11 1 27 0; +#X connect 12 1 25 0; +#X connect 17 1 29 0; +#X connect 18 1 26 0; +#X connect 19 1 22 0; +#X connect 20 1 23 0; +#X connect 21 1 24 0; diff --git a/externals/gridflow/doc/flow_classes/#saturation-help.pd b/externals/gridflow/doc/flow_classes/#saturation-help.pd new file mode 100644 index 00000000..f493dde7 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#saturation-help.pd @@ -0,0 +1,52 @@ +#N canvas 115 0 632 551 10; +#X obj 47 267 print; +#X obj 47 227 #out window; +#X text 313 178 OR; +#X text 295 140 global saturation; +#X obj 47 248 fps detailed; +#X text 260 197 per-channel saturation; +#X msg 251 135 0; +#X obj 251 114 loadbang; +#X obj 254 156 hsl 137 15 -256 512 0 0 empty empty empty -2 -6 0 8 +-260818 -128992 -1 4533 1; +#X floatatom 212 157 5 0 0 0 - - -; +#X obj 47 65 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 47 99 metro 33.3667; +#X msg 204 198 3 # \$1; +#X obj 47 134 #in babbage.jpg; +#X obj 204 224 #color -256 512 1; +#X obj 47 203 #saturation -128; +#X obj 0 0 doc_h; +#X obj 3 376 doc_i 2; +#X obj 3 301 doc_c 1; +#X obj 3 460 doc_o 1; +#X obj 14 406 doc_ii 0; +#X obj 14 428 doc_ii 1; +#X obj 14 490 doc_oo 0; +#X obj 14 331 doc_cc 0; +#X text 232 428 same as arg 0; +#X obj 97 331 doc_m c0 float/int; +#X obj 97 406 doc_m i0 grid; +#X obj 97 428 doc_m i1 grid; +#X obj 97 490 doc_m o0 grid; +#X obj 0 522 doc_f; +#X text 232 406 image to be modified; +#X text 232 331 Saturation multiplier. 256 does nothing. 0 turns to +greyscale. -256 does like [#hueshift 18000].; +#X text 232 490 modified image; +#X connect 1 0 4 0; +#X connect 4 0 0 0; +#X connect 6 0 8 0; +#X connect 7 0 6 0; +#X connect 8 0 9 0; +#X connect 8 0 12 0; +#X connect 10 0 11 0; +#X connect 11 0 13 0; +#X connect 12 0 14 0; +#X connect 13 0 15 0; +#X connect 14 0 15 1; +#X connect 15 0 1 0; +#X connect 25 1 31 0; +#X connect 26 1 30 0; +#X connect 27 1 24 0; +#X connect 28 1 32 0; diff --git a/externals/gridflow/doc/flow_classes/#scale_by-help.pd b/externals/gridflow/doc/flow_classes/#scale_by-help.pd new file mode 100644 index 00000000..5b61d091 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#scale_by-help.pd @@ -0,0 +1,57 @@ +#N canvas 690 0 632 610 10; +#X obj 11 82 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 11 102 metro 100; +#X obj 89 149 #in; +#X obj 103 561 #scale_to; +#X obj 169 561 #downscale_by; +#X text 232 507 Outputs the resulting scaled image.; +#X obj 89 207 #out window \, title #scale_by; +#X msg 89 85 open bluemarble.jpg \, bang; +#X obj 89 183 #scale_by 2; +#X text 7 28 The [#scale_by] scales the image received by the row and +column factors passed. A single value applies the scaling uniformly +on the row and columns.; +#X msg 227 129 2 # 2 1; +#X msg 230 152 2 # 2 3; +#X floatatom 181 131 5 0 0 0 - - -; +#X text 232 362 The Grid on which the scale_to will be performed.; +#X obj 0 0 doc_h; +#X obj 3 332 doc_i 2; +#X obj 3 477 doc_o 1; +#X text 232 265 The scaling factor (defaults to 2).; +#X obj 3 561 doc_also; +#X obj 14 507 doc_oo 0; +#X obj 14 362 doc_ii 0; +#X obj 14 445 doc_ii 1; +#X obj 14 265 doc_cc 0; +#X obj 97 362 doc_m i0 grid; +#X obj 97 265 doc_m c0 grid; +#X obj 97 445 doc_m i1 grid; +#X obj 3 235 doc_c 0..1; +#X text 232 445 same as arg 0; +#X text 232 287 if it's a single value \, then that factor is to be +used for both rows and columns.; +#X text 232 384 duplicates each pixel several times in width and several +times in height \, where the number of times is determined by the factor +described above. twice those of the incoming grid. It is several times +faster.; +#X text 232 529 grid((factor*y) (factor*x) channels); +#X obj 97 507 doc_m o0 grid; +#X obj 0 581 doc_f; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 8 0; +#X connect 7 0 2 0; +#X connect 8 0 6 0; +#X connect 10 0 8 1; +#X connect 11 0 8 1; +#X connect 12 0 8 1; +#X connect 18 1 3 0; +#X connect 18 1 4 0; +#X connect 23 1 13 0; +#X connect 23 1 29 0; +#X connect 24 1 17 0; +#X connect 24 1 28 0; +#X connect 25 1 27 0; +#X connect 31 1 5 0; +#X connect 31 1 30 0; diff --git a/externals/gridflow/doc/flow_classes/#scale_to-help.pd b/externals/gridflow/doc/flow_classes/#scale_to-help.pd new file mode 100644 index 00000000..54adb77a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#scale_to-help.pd @@ -0,0 +1,66 @@ +#N canvas 674 0 632 523 10; +#X obj 11 75 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 11 94 metro 100; +#X obj 89 171 #scale_to (133 133); +#X obj 89 133 #in; +#X obj 284 159 #pack; +#X obj 325 138 hsl 128 15 0 640 0 0 empty empty empty 0 -8 0 8 -260818 +-1 -1 0 1; +#X obj 325 158 hsl 128 15 0 640 0 0 empty empty empty 0 -8 0 8 -260818 +-1 -1 0 1; +#X obj 89 208 #out window \, title #scale_to; +#X obj 169 474 #downscale_by; +#X msg 89 73 open scissors.jpg \, bang; +#X obj 300 183 #print; +#X msg 284 75 2 # 500 500; +#X obj 412 97 #print; +#X msg 284 94 2 # 100 500; +#X msg 285 115 2 # 500 100; +#X text 460 133 height; +#X text 460 155 width; +#X text 232 442 Outputs the resulting scaled image.; +#X text 232 270 A (height width) pair of integers indicating the size +to scale to image to. This initial argument is required.; +#X text 232 345 The Grid passed at inlet 0 will be the image on which +the scale_to will be performed.; +#X text 284 58 2 grid size values y=500 x=500; +#X obj 103 474 #scale_by; +#X text 9 22 The [#scale_to] scales the image received to the x and +y values passed. Initial creation arguments are mandatory (0 0) otherwise. +; +#X obj 0 0 doc_h; +#X obj 3 315 doc_i 2; +#X obj 3 240 doc_c 1; +#X obj 3 474 doc_also; +#X obj 3 412 doc_o 1; +#X obj 14 442 doc_oo 0; +#X obj 14 345 doc_ii 0; +#X obj 14 380 doc_ii 1; +#X obj 14 270 doc_cc 0; +#X obj 97 270 doc_m c0 (int int); +#X obj 97 345 doc_m i0 grid; +#X text 232 380 same as arg 0; +#X obj 97 380 doc_m i1 (int int); +#X obj 97 442 doc_m o0 grid; +#X obj 0 494 doc_f; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 2 0 7 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; +#X connect 4 0 10 0; +#X connect 5 0 4 0; +#X connect 6 0 4 1; +#X connect 9 0 3 0; +#X connect 11 0 2 1; +#X connect 11 0 12 0; +#X connect 13 0 2 1; +#X connect 13 0 12 0; +#X connect 14 0 2 1; +#X connect 14 0 12 0; +#X connect 26 1 21 0; +#X connect 26 1 8 0; +#X connect 32 1 18 0; +#X connect 33 1 19 0; +#X connect 35 1 34 0; +#X connect 36 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/#scan-help.pd b/externals/gridflow/doc/flow_classes/#scan-help.pd new file mode 100644 index 00000000..06bad143 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#scan-help.pd @@ -0,0 +1,48 @@ +#N canvas 664 0 632 547 10; +#X floatatom 17 76 5 0 0 0 - - -; +#X floatatom 62 76 5 0 0 0 - - -; +#X floatatom 109 76 5 0 0 0 - - -; +#X floatatom 17 245 5 0 0 0 - - -; +#X floatatom 56 245 5 0 0 0 - - -; +#X floatatom 96 245 5 0 0 0 - - -; +#X obj 17 116 #pack 3; +#X obj 17 147 #scan +; +#X obj 17 206 #unpack 3; +#X obj 103 498 #fold +; +#X obj 0 0 doc_h; +#X obj 3 498 doc_also; +#X obj 3 274 doc_c 1; +#X obj 3 336 doc_i 1; +#X obj 3 438 doc_o 1; +#X obj 14 468 doc_oo 0; +#X obj 14 304 doc_cc 0; +#X text 69 35 computes subtotals and stuff; +#X text 165 74 replaces every Dim(last) subgrid by all the results +of cascading the operator on that subgrid \, producing a Dim(dims \, +last) grid.; +#X text 165 127 For example \, with base value 0 and operation + on +grid "2 3 5 7" will compute 0+2=2 \, 2+3=5 \, 5+5=10 \, 10+7=17 \, +and give the subtotals "2 5 10 17".; +#X obj 14 366 doc_ii 0; +#X obj 97 366 doc_m i0 grid; +#X obj 97 386 doc_m i0 op; +#X obj 97 408 doc_m i0 seed; +#X text 165 191 [#scan +] computes subtotals \; this can be used \, +for example \, to convert a regular probability distribution into a +cumulative one. (or in general \, discrete integration); +#X obj 0 518 doc_f; +#X obj 97 468 doc_m o0 grid; +#X obj 97 304 doc_m c0 symbol; +#X text 232 304 numop; +#X text 232 386 same as arg 0; +#X connect 0 0 6 0; +#X connect 1 0 6 1; +#X connect 2 0 6 2; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 3 0; +#X connect 8 1 4 0; +#X connect 8 2 5 0; +#X connect 11 1 9 0; +#X connect 22 1 29 0; +#X connect 27 1 28 0; diff --git a/externals/gridflow/doc/flow_classes/#seq_fold-help.pd b/externals/gridflow/doc/flow_classes/#seq_fold-help.pd new file mode 100644 index 00000000..df26fff8 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#seq_fold-help.pd @@ -0,0 +1,55 @@ +#N canvas 677 0 632 548 10; +#X obj 125 63 route end; +#X obj 126 162 display; +#X obj 125 106 #seq_fold; +#X obj 154 130 # +; +#X msg 125 43 2 1 \, 3 2 \, 5 3 \, 7 4 \, end; +#X msg 206 82 0 0; +#X obj 206 63 loadbang; +#X obj 92 193 #print AAA; +#X obj 0 0 doc_h; +#X obj 3 225 doc_c; +#X obj 3 265 doc_i 4; +#X obj 14 423 doc_oo 0; +#X obj 14 445 doc_oo 1; +#X obj 14 467 doc_oo 2; +#X obj 3 393 doc_o 3; +#X obj 14 295 doc_ii 0; +#X obj 14 317 doc_ii 1; +#X obj 14 339 doc_ii 2; +#X obj 14 361 doc_ii 3; +#X obj 0 519 doc_f; +#X obj 97 295 doc_m i0 bang; +#X obj 97 317 doc_m i1 grid; +#X obj 97 339 doc_m i2 grid; +#X obj 97 361 doc_m i3 grid; +#X obj 97 423 doc_m o0 grid; +#X obj 97 445 doc_m o1 grid; +#X obj 97 467 doc_m o2 grid; +#X obj 3 499 doc_also; +#X obj 103 499 seq_fold; +#X text 232 445 to outside left inlet; +#X text 232 467 to outside right inlet; +#X text 232 423 final result; +#X text 232 361 from outside outlet; +#X text 232 339 seed; +#X text 232 295 output the final result; +#X text 232 317 sequence of values to be folded; +#X connect 0 0 2 0; +#X connect 0 1 2 1; +#X connect 2 0 1 0; +#X connect 2 0 7 0; +#X connect 2 1 3 0; +#X connect 2 2 3 1; +#X connect 3 0 2 3; +#X connect 4 0 0 0; +#X connect 5 0 2 2; +#X connect 6 0 5 0; +#X connect 20 1 34 0; +#X connect 21 1 35 0; +#X connect 22 1 33 0; +#X connect 23 1 32 0; +#X connect 24 1 31 0; +#X connect 25 1 29 0; +#X connect 26 1 30 0; +#X connect 27 1 28 1; diff --git a/externals/gridflow/doc/flow_classes/#slice-help.pd b/externals/gridflow/doc/flow_classes/#slice-help.pd new file mode 100644 index 00000000..df793231 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#slice-help.pd @@ -0,0 +1,47 @@ +#N canvas 206 135 632 525 10; +#X obj 38 190 display; +#X text 36 213 should print subgrid: 3 5 8 13 21; +#X msg 37 145 0 1 1 2 3 5 8 13 21 34 55 89; +#X obj 37 170 #slice 4 9; +#X obj 256 109 #slice (1 1) (3 3); +#X obj 257 130 display; +#X obj 256 90 #redim (4 4); +#X obj 256 71 #for 0 16 1; +#X obj 256 54 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 259 177 should print subgrid: 2 2 # 5 6 9 10; +#X obj 0 0 doc_h; +#X obj 3 244 doc_c 2; +#X obj 3 328 doc_i 3; +#X obj 3 434 doc_o 1; +#X obj 14 464 doc_oo 0; +#X obj 14 380 doc_ii 1; +#X obj 14 358 doc_ii 0; +#X obj 14 402 doc_ii 2; +#X obj 14 274 doc_cc 0; +#X obj 14 296 doc_cc 1; +#X obj 0 496 doc_f; +#X obj 97 274 doc_m c0 grid; +#X obj 97 296 doc_m c1 grid; +#X obj 97 358 doc_m i0 grid; +#X obj 97 380 doc_m i1 grid; +#X obj 97 402 doc_m i2 grid; +#X obj 97 464 doc_m o0 grid; +#X text 232 380 same as arg 0; +#X text 232 402 same as arg 1; +#X text 232 464 slice; +#X text 232 358 grid to be sliced; +#X text 232 296 end positions (as in #for); +#X text 232 274 start positions as in #for); +#X connect 2 0 3 0; +#X connect 3 0 0 0; +#X connect 4 0 5 0; +#X connect 6 0 4 0; +#X connect 7 0 6 0; +#X connect 8 0 7 0; +#X connect 21 1 32 0; +#X connect 22 1 31 0; +#X connect 23 1 30 0; +#X connect 24 1 27 0; +#X connect 25 1 28 0; +#X connect 26 1 29 0; diff --git a/externals/gridflow/doc/flow_classes/#solarize-help.pd b/externals/gridflow/doc/flow_classes/#solarize-help.pd new file mode 100644 index 00000000..02240cc0 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#solarize-help.pd @@ -0,0 +1,39 @@ +#N canvas 690 0 632 491 10; +#X obj 170 140 bng 15 250 50 0 empty empty empty 0 -6 0 8 -4034 -1 +-1; +#X obj 170 219 #solarize; +#X obj 170 183 #in; +#X obj 103 442 #convolve; +#X obj 169 442 #contrast; +#X obj 235 442 #posterize; +#X obj 307 442 #layer; +#X obj 0 0 doc_h; +#X obj 3 442 doc_also; +#X obj 3 278 doc_c; +#X obj 3 380 doc_o 1; +#X obj 3 318 doc_i 1; +#X obj 14 410 doc_oo 0; +#X obj 14 348 doc_ii 0; +#X obj 247 215 #out window \, title original; +#X obj 170 240 #out window \, title modified; +#X obj 97 410 doc_m o0 grid; +#X obj 97 348 doc_m i0 grid; +#X obj 0 462 doc_f; +#X msg 170 157 load bluemarble.jpg; +#X text 12 36 Makes medium intensities brightest. Formerly brightest +colors become darkest \, formerly darkest stays darkest. This filter +is non-linear (but piecewise-linear). It's like a 200% contrast \, +except that overflows are mirrored instead of clipped or wrapped.; +#X text 232 348 pixels; +#X text 232 410 pixels; +#X connect 0 0 19 0; +#X connect 1 0 15 0; +#X connect 2 0 1 0; +#X connect 2 0 14 0; +#X connect 8 1 3 0; +#X connect 8 1 4 0; +#X connect 8 1 5 0; +#X connect 8 1 6 0; +#X connect 16 1 22 0; +#X connect 17 1 21 0; +#X connect 19 0 2 0; diff --git a/externals/gridflow/doc/flow_classes/#sort-help.pd b/externals/gridflow/doc/flow_classes/#sort-help.pd new file mode 100644 index 00000000..f2cdc61c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#sort-help.pd @@ -0,0 +1,45 @@ +#N canvas 484 136 632 572 10; +#X obj 28 250 #sort; +#X msg 28 45 0 1 1 2 3 5 8 13 21 34 55 89; +#X msg 28 102 12 # 666; +#X obj 28 121 # rand; +#X obj 28 178 #store; +#X obj 28 140 #grade; +#X obj 28 64 t a a; +#X obj 28 83 #finished; +#X obj 58 204 display; +#X obj 28 159 #outer + (0); +#X text 151 140 shuffle; +#X obj 58 274 display; +#X text 140 252 unshuffle; +#X obj 0 0 doc_h; +#X obj 3 311 doc_c 0; +#X obj 3 351 doc_i 1; +#X obj 3 461 doc_o 1; +#X obj 3 523 doc_also; +#X obj 103 523 #grade; +#X obj 14 491 doc_oo 0; +#X obj 14 381 doc_ii 0; +#X obj 0 543 doc_f; +#X obj 97 381 doc_m i0 grid; +#X obj 97 491 doc_m o0 grid; +#X text 232 491 sorted data; +#X text 232 381 1-D grid to be sorted; +#X text 232 403 this takes an average time proportional to N log N +(a pass on the data takes N time \, and sorting something twice bigger +takes an extra pass); +#X connect 0 0 11 0; +#X connect 1 0 6 0; +#X connect 2 0 3 0; +#X connect 3 0 5 0; +#X connect 4 0 0 0; +#X connect 4 0 8 0; +#X connect 5 0 9 0; +#X connect 6 0 7 0; +#X connect 6 1 4 1; +#X connect 7 0 2 0; +#X connect 9 0 4 0; +#X connect 17 1 18 0; +#X connect 22 1 25 0; +#X connect 22 1 26 0; +#X connect 23 1 24 0; diff --git a/externals/gridflow/doc/flow_classes/#spread-help.pd b/externals/gridflow/doc/flow_classes/#spread-help.pd new file mode 100644 index 00000000..9c6fc31a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#spread-help.pd @@ -0,0 +1,79 @@ +#N canvas 673 0 632 642 10; +#X text 1 25 makes noise; +#X obj 207 42 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X obj 221 134 tgl 15 0 empty empty empty 0 -6 0 8 -233017 -1 -1 0 +1; +#X floatatom 368 241 5 0 0 0 - - -; +#X floatatom 78 163 5 0 0 0 - - -; +#X obj 20 88 until; +#X obj 20 51 bng 15 250 50 0 empty empty empty 0 -6 0 8 -233017 -1 +-1; +#X msg 20 69 65536; +#X obj 61 88 float; +#X obj 101 88 + 1; +#X text 219 308 we limit here \, because the values might go out of +range; +#X obj 149 73 metro 50; +#X obj 149 51 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 20 129 #import (256 256 2); +#X obj 195 269 #store; +#X obj 195 341 #out window; +#X obj 310 341 #out window; +#X obj 310 291 #clip; +#X obj 148 124 #in; +#X obj 249 247 shunt; +#X obj 0 0 doc_h; +#X obj 3 491 doc_c 1; +#X obj 3 633 doc_o 1; +#X obj 3 551 doc_i 2; +#X text 210 147 switch displays \, use this to get an image into the +#store; +#X obj 14 663 doc_oo 0; +#X obj 14 581 doc_ii 0; +#X obj 14 601 doc_ii 1; +#X obj 14 521 doc_cc 0; +#X obj 97 581 doc_m i0 grid; +#X obj 97 663 doc_m o0 grid; +#X text 326 33 typically you plug a [#for] into this object \, and +you plug this object into the left side of a [#store]. it will scatter +pixels around \, giving an "unpolished glass" effec.t; +#X text 326 89 if you put a picture in it \, however \, it will add +noise. The resulting values may be out of range \, so you may need +to clip them using min/max.; +#X text 54 364 [#spread] scatters the pixels in an image. Not all original +pixels will appear \, and some may get duplicated (triplicated \, etc) +randomly. Some wrap-around effect will occur close to the edges.; +#X text 52 425 Sending an integer to inlet 1 sets the amount of spreading +in maximum number of pixels + 1 even values translate the whole image +by half a pixel due to rounding .; +#X obj 0 693 doc_f; +#X obj 97 601 doc_m i1 grid; +#X obj 97 521 doc_m c0 grid; +#X text 232 601 same as arg 0; +#X obj 20 197 #spread 1; +#X obj 310 270 #spread 1; +#X msg 207 89 load r001.jpg; +#X connect 1 0 41 0; +#X connect 2 0 19 1; +#X connect 3 0 40 1; +#X connect 4 0 39 1; +#X connect 5 0 8 0; +#X connect 6 0 7 0; +#X connect 7 0 5 0; +#X connect 8 0 9 0; +#X connect 8 0 13 0; +#X connect 9 0 8 1; +#X connect 11 0 18 0; +#X connect 12 0 11 0; +#X connect 13 0 39 0; +#X connect 14 0 15 0; +#X connect 17 0 16 0; +#X connect 18 0 19 0; +#X connect 19 0 14 1; +#X connect 19 1 40 0; +#X connect 36 1 38 0; +#X connect 39 0 14 0; +#X connect 40 0 17 0; +#X connect 41 0 18 0; diff --git a/externals/gridflow/doc/flow_classes/#store-help.pd b/externals/gridflow/doc/flow_classes/#store-help.pd new file mode 100644 index 00000000..bc4a52c0 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#store-help.pd @@ -0,0 +1,111 @@ +#N canvas 602 0 632 642 10; +#X floatatom 132 89 5 0 0 0 - - -; +#X floatatom 177 89 5 0 0 0 - - -; +#X floatatom 20 160 5 0 0 0 - - -; +#X floatatom 132 200 5 0 0 0 - - -; +#X text 115 201 R:; +#X floatatom 193 200 5 0 0 0 - - -; +#X floatatom 253 200 5 0 0 0 - - -; +#X text 176 201 G:; +#X text 237 201 B:; +#X floatatom 73 161 5 0 0 0 - - -; +#X text 1 161 X:; +#X text 58 162 Y:; +#X obj 132 107 #pack; +#X obj 296 134 #in; +#X msg 296 115 load r001.jpg; +#X obj 20 131 #unpack; +#X obj 132 175 #unpack 3; +#X obj 134 150 #store; +#X text 129 54 this example allows you to select a single pixel from +the loaded picture and view its rgb value.; +#X text 8 24 The [#store] stores exactly one grid \, using the right +inlet. You fetch it back \, or selected subparts using the left inlet. +; +#X obj 296 181 display; +#X obj 86 94 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 296 161 display; +#X obj 296 96 loadbang; +#X obj 3 341 doc_i 2; +#X obj 0 0 doc_h; +#X obj 3 279 doc_c 1; +#X obj 14 371 doc_ii 0; +#X obj 14 571 doc_ii 1; +#X obj 3 882 doc_o 1; +#X obj 14 912 doc_oo 0; +#X obj 14 309 doc_cc 0; +#X obj 97 309 doc_m c0 grid; +#X obj 97 406 doc_m i0 grid; +#X obj 97 371 doc_m i0 bang; +#X text 232 371 A bang at the left inlet will cause [#store] to send +its value to the outlet.; +#X obj 97 571 doc_m i1 grid; +#X text 232 571 when in reassign mode \, this is same as arg 0; +#X text 232 593 when it put_at mode \, it basically keeps the previous +arg 0 or reassignment \, but replaces a selected part inside of it. +; +#X obj 97 824 doc_m i1 reassign; +#X obj 97 663 doc_m i1 put_at; +#X obj 97 912 doc_m o0 grid; +#X text 232 406 in this grid \, the last dimension refers to subparts +of the stored grid. sending a Dim(200 \, 200 \, 2) on a [#store] that +holds a Dim(240 \, 320 \, 3) will cause the [#store] to handle the +incoming grid as a Dim(200 \, 200) of Dim(2)'s \, where each Dim(2) +represents a position in a Dim(240 \, 320) of Dim(3)'s. therefore the +resulting grid will be a Dim(200 \, 200) of Dim(3) which is a Dim(200 +\, 200 \, 3). in practice this example would be used for generating +a 200*200 RGB picture from a 200*200 XY map and a 240*320 RGB picture. +this object can be logically used in the same way for many purposes +including color palettes \, tables of probabilities \, tables of statistics +\, whole animations \, etc.; +#X text 232 824 makes it so that sending a grid to inlet 1 detaches +the old buffer from [#store] and attaches a new one instead. This is +the default.; +#X text 232 663 makes it so that sending a grid to inlet 1 writes into +the existing buffer of [#store].; +#X text 232 698 example: suppose you have [#store 10 240 320 3]. then +"put_at 3" will allow to write a Dim[240 \, 320 \, 3] grid in indices +(3 \, y \, x \, c) where y \, x \, c are indices of the incoming grid. +in other words \, if that's a buffer of 10 RGB frames \, you'd be replacing +frame #3. Furthermore \, it also allows you to write a Dim[n \, 240 +\, 320 \, 3] grid at (3+f \, y \, x \, c) where f \, y \, x \, c are +indices of the incoming grid \, replacing frame #3 \, #4 \, ... up +to #3+n-1. Here n is at most 7 because the last frame in the buffer +is #9.; +#X text 194 227 that way of working extends to other kinds of data +you'd put in Grids \, in any numbers of dimensions. because \, as usual +\, [#store] wouldn't know the difference.; +#X text 232 912 grids as stored \, as indexed \, or as assembled from +multiple indexings.; +#X obj 0 957 doc_f; +#X text 232 309 initial value to be stored; +#X obj 97 628 doc_m i1 op; +#X text 232 628 recombination operator used by put_at \, just like +arg 0 of [#draw_image]; +#X connect 0 0 12 0; +#X connect 1 0 12 1; +#X connect 12 0 15 0; +#X connect 12 0 17 0; +#X connect 12 0 22 0; +#X connect 13 0 17 1; +#X connect 14 0 13 0; +#X connect 15 0 2 0; +#X connect 15 1 9 0; +#X connect 16 0 3 0; +#X connect 16 1 5 0; +#X connect 16 2 6 0; +#X connect 17 0 16 0; +#X connect 17 0 20 0; +#X connect 21 0 17 0; +#X connect 23 0 14 0; +#X connect 32 1 49 0; +#X connect 33 1 42 0; +#X connect 34 1 35 0; +#X connect 36 1 37 0; +#X connect 36 1 38 0; +#X connect 39 1 43 0; +#X connect 40 1 44 0; +#X connect 40 1 45 0; +#X connect 41 1 47 0; +#X connect 50 1 51 0; diff --git a/externals/gridflow/doc/flow_classes/#swap-help.pd b/externals/gridflow/doc/flow_classes/#swap-help.pd new file mode 100644 index 00000000..70263b36 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#swap-help.pd @@ -0,0 +1,25 @@ +#N canvas 335 118 632 379 10; +#X obj 0 0 doc_h; +#X obj 0 350 doc_f; +#X obj 60 55 #swap; +#X text 223 55 grid equivalent of [swap]; +#X obj 3 168 doc_i 2; +#X obj 3 250 doc_o 2; +#X obj 14 198 doc_ii 0; +#X obj 14 218 doc_ii 1; +#X obj 14 280 doc_oo 0; +#X obj 14 300 doc_oo 1; +#X obj 97 198 doc_m i0 grid; +#X obj 97 218 doc_m i1 grid; +#X obj 97 280 doc_m o0 grid; +#X obj 97 300 doc_m o1 grid; +#X obj 3 330 doc_also; +#X obj 103 330 swap; +#X obj 14 136 doc_cc 0; +#X obj 3 106 doc_c 0..1; +#X text 232 136 same as [#store]; +#X text 232 218 same as arg 0; +#X obj 97 136 doc_m c0 grid; +#X connect 11 1 19 0; +#X connect 14 1 15 0; +#X connect 20 1 18 0; diff --git a/externals/gridflow/doc/flow_classes/#t-help.pd b/externals/gridflow/doc/flow_classes/#t-help.pd new file mode 100644 index 00000000..a8c4f064 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#t-help.pd @@ -0,0 +1,58 @@ +#N canvas 78 0 632 554 10; +#X obj 10 134 #in teapot.png; +#X obj 10 161 t a a; +#X obj 40 181 #convolve (1 3 # -1 2 -1); +#X obj 267 181 #convolve (1 3 # -1 2 -1); +#X obj 10 112 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 237 161 #t; +#X obj 237 205 # *>>8; +#X obj 10 205 # *>>8; +#X text 257 112 Works; +#X text 8 64 In some situations \, a grid hasn't finished entering +the right-hand side \, when an object begins receiving on the left-hand +side. in those cases you should use #t.; +#X obj 237 113 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 10 234 #out window \, title doesnt_work; +#X obj 237 233 #out window \, title works; +#X text 8 25 The [#t] trigger object sequences grid operations in a +right-to-left order. It outputs its input from right to left.; +#X text 28 112 Doesn't work (all black); +#X obj 237 134 #in teapot.png; +#X text 232 425 The same grid received in inlet 0 is first sent to +the outlet 0; +#X text 232 460 The same grid received in inlet 0 is sent to the outlet +1 after it was sent to outlet 0; +#X text 232 337 The Grid passed in inlet 0 will be first sent to the +right most outlet and then to the second from the right (the left outlet +in this case).; +#X obj 0 0 doc_h; +#X obj 3 307 doc_i 1; +#X obj 3 395 doc_o 2; +#X obj 3 267 doc_c 0; +#X obj 3 505 doc_also; +#X obj 14 337 doc_ii 0; +#X obj 14 425 doc_oo 0; +#X obj 14 460 doc_oo 1; +#X obj 97 337 doc_m i0 grid; +#X obj 97 425 doc_m o0 grid; +#X obj 97 460 doc_m o1 grid; +#X obj 0 525 doc_f; +#X obj 103 505 t; +#X connect 0 0 1 0; +#X connect 1 0 7 0; +#X connect 1 1 2 0; +#X connect 2 0 7 1; +#X connect 3 0 6 1; +#X connect 4 0 0 0; +#X connect 5 0 6 0; +#X connect 5 1 3 0; +#X connect 6 0 12 0; +#X connect 7 0 11 0; +#X connect 10 0 15 0; +#X connect 15 0 5 0; +#X connect 23 1 31 0; +#X connect 27 1 18 0; +#X connect 28 1 16 0; +#X connect 29 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/#text_to_image-help.pd b/externals/gridflow/doc/flow_classes/#text_to_image-help.pd new file mode 100644 index 00000000..238dab37 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#text_to_image-help.pd @@ -0,0 +1,24 @@ +#N canvas 685 0 632 345 10; +#X obj 0 0 doc_h; +#X obj 33 40 #text_to_image; +#X obj 3 71 doc_c 0; +#X obj 3 111 doc_i 3; +#X obj 3 256 doc_o 1; +#X obj 14 141 doc_ii 0; +#X obj 14 176 doc_ii 1; +#X obj 14 211 doc_ii 2; +#X obj 97 141 doc_m i0 bang; +#X text 232 141 transforming the data into an image suitable for #draw_image. +; +#X obj 14 286 doc_oo 0; +#X obj 97 286 doc_m o0 grid; +#X obj 97 211 doc_m i2 grid; +#X obj 97 176 doc_m i1 grid; +#X text 232 176 2 by 3 matrix representing the colours to use (e.g. +(2 3 # 0 170 0 255 255 0) means yellow on green); +#X obj 0 316 doc_f; +#X text 232 211 font grid \, for example \, from [#in grid lucida-typewriter-12.grid] +; +#X connect 8 1 9 0; +#X connect 12 1 16 0; +#X connect 13 1 14 0; diff --git a/externals/gridflow/doc/flow_classes/#to_float-help.pd b/externals/gridflow/doc/flow_classes/#to_float-help.pd new file mode 100644 index 00000000..16886baf --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#to_float-help.pd @@ -0,0 +1,29 @@ +#N canvas 678 0 632 446 10; +#X obj 15 188 cnv 15 55 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 39 135 display; +#X msg 15 73 1 2 3 4 5 6 7 8; +#X text 138 73 <-- create the grid here; +#X obj 15 188 #to_float; +#X text 12 27 Produces sequences of floats from grid data. Useful for +the integration into the rest of PureData.; +#X obj 15 216 print converted_grid; +#X obj 15 100 #import (2 2 2); +#X obj 0 0 doc_h; +#X obj 3 280 doc_i 1; +#X obj 3 240 doc_c; +#X obj 14 372 doc_oo 0; +#X obj 14 310 doc_ii 0; +#X obj 3 342 doc_o 1; +#X obj 97 310 doc_m i0 grid; +#X obj 97 372 doc_m o0 float; +#X obj 0 417 doc_f; +#X text 232 310 content to be finely chopped; +#X text 232 372 a sequence of floats that the incoming grid is transformed +into. they are output in normal grid order.; +#X connect 2 0 7 0; +#X connect 4 0 6 0; +#X connect 7 0 1 0; +#X connect 7 0 4 0; +#X connect 14 1 17 0; +#X connect 15 1 18 0; diff --git a/externals/gridflow/doc/flow_classes/#to_list-help.pd b/externals/gridflow/doc/flow_classes/#to_list-help.pd new file mode 100644 index 00000000..51a376ea --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#to_list-help.pd @@ -0,0 +1,31 @@ +#N canvas 544 108 632 450 10; +#X obj 15 164 cnv 15 52 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 50 115 display; +#X msg 14 64 1 2 3 4 5 6 7 8; +#X obj 161 217 display; +#X text 12 27 Produces a list from grid data. Useful for the integration +into the rest of PureData.; +#X text 130 63 <-- create the grid here; +#X obj 14 165 #to_list; +#X obj 14 216 print converted_grid; +#X obj 14 91 #import (2 2 2); +#X obj 0 0 doc_h; +#X obj 3 346 doc_o 1; +#X obj 3 284 doc_i 1; +#X obj 3 244 doc_c 0; +#X text 232 376 The grid is transformed into a single message containing +a sequence of floats.; +#X obj 14 314 doc_ii 0; +#X obj 14 376 doc_oo 0; +#X obj 97 314 doc_m i0 grid; +#X obj 97 376 doc_m o0 list; +#X obj 0 421 doc_f; +#X text 232 314 will be transformed into a list.; +#X connect 2 0 8 0; +#X connect 6 0 3 0; +#X connect 6 0 7 0; +#X connect 8 0 1 0; +#X connect 8 0 6 0; +#X connect 16 1 19 0; +#X connect 17 1 13 0; diff --git a/externals/gridflow/doc/flow_classes/#to_literal-help.pd b/externals/gridflow/doc/flow_classes/#to_literal-help.pd new file mode 100644 index 00000000..15f076e8 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#to_literal-help.pd @@ -0,0 +1,34 @@ +#N canvas 556 102 632 540 10; +#X obj 0 0 doc_h; +#X obj 0 511 doc_f; +#X obj 96 289 #to_literal; +#X obj 102 312 display; +#X obj 3 347 doc_c 0; +#X obj 3 387 doc_i 1; +#X obj 3 449 doc_o 1; +#X obj 14 417 doc_ii 0; +#X obj 14 479 doc_oo 0; +#X obj 97 417 doc_m i0 grid; +#X obj 102 146 display; +#X obj 96 165 # +; +#X text 123 166 "do nothing": just convert literal to grid; +#X obj 102 224 display; +#X msg 96 123 3 3 # 2 3 5 7 11 13 17 19 23; +#X obj 97 479 doc_m o0 list; +#X text 232 479 grid literal; +#X msg 118 62 3 2 f # 0.1 0.333333 2.71828 3.14159 1.4142 1.61803; +#X obj 118 103 # + (f #); +#X obj 96 201 t a; +#X obj 124 83 display; +#X text 232 417 any grid; +#X connect 2 0 3 0; +#X connect 9 1 21 0; +#X connect 11 0 19 0; +#X connect 14 0 10 0; +#X connect 14 0 11 0; +#X connect 15 1 16 0; +#X connect 17 0 18 0; +#X connect 17 0 20 0; +#X connect 18 0 19 0; +#X connect 19 0 13 0; +#X connect 19 0 2 0; diff --git a/externals/gridflow/doc/flow_classes/#to_pix-help.pd b/externals/gridflow/doc/flow_classes/#to_pix-help.pd new file mode 100644 index 00000000..199ab591 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#to_pix-help.pd @@ -0,0 +1,107 @@ +#N canvas 661 0 632 665 10; +#X msg 365 61 create \, 1; +#X obj 365 42 loadbang; +#X msg 157 139 open violoncelle.mov; +#X obj 130 72 tgl 15 0 empty empty empty 17 7 0 10 -4034 -1 -1 0 1 +; +#X obj 45 52 gemhead; +#X obj 45 272 pix_texture; +#X obj 13 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 13 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 13 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 13 720 cnv 15 500 17 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 19 721 see also :; +#X text 102 720 [#import_pix]; +#X msg 429 62 destroy; +#X obj 365 93 gemwin 30; +#X obj 157 117 loadbang; +#X text 150 69 <-- start playing the video; +#X text 94 250 <-- imports gridflow grids into GEM; +#X text 181 720 \, game_of_life_gem.pd in the examples folder; +#X obj 45 253 #to_pix; +#X text 232 591 Modified gemstate so that the pix is equal to the Grid +of inlet 1; +#X text 232 472 Something coming from [gemhead]; +#X msg 57 217 yflip \$1; +#X obj 57 197 tgl 15 0 empty empty empty 17 7 0 10 -257985 -1 -1 0 +1; +#X text 232 494 With one boolean argument that selects the order in +which the y dimension of the Grid will be read \, defaults to '1'; +#X obj 45 291 rectangle 4 3; +#X obj 0 0 doc_h; +#X obj 3 442 doc_i 2; +#X obj 3 561 doc_o 1; +#X obj 3 402 doc_c 0; +#X obj 14 472 doc_ii 0; +#X obj 14 529 doc_ii 1; +#X obj 14 591 doc_oo 0; +#X obj 97 472 doc_m i0 gem_state; +#X obj 97 494 doc_m i0 yflip; +#X obj 97 529 doc_m i1 grid; +#X obj 97 591 doc_m o0 gem_state; +#X obj 0 636 doc_f; +#X obj 397 243 b; +#X obj 397 263 fps; +#X floatatom 397 282 5 0 0 0 - - -; +#X obj 130 162 #in; +#X msg 310 134 cast b; +#X msg 310 154 cast s; +#X msg 310 174 cast i; +#X obj 140 195 shunt; +#X obj 176 196 tgl 15 0 empty empty empty 17 7 0 10 -257985 -1 -1 0 +1; +#N canvas 0 22 458 308 to_rgba_if_not_already 0; +#X obj 130 221 #rgb_to_rgba; +#X obj 131 103 #dim; +#X obj 103 173 shunt; +#X obj 131 126 #unpack 3; +#X obj 104 29 inlet; +#X obj 104 56 t a a; +#X obj 103 265 outlet; +#X obj 131 150 == 3; +#X connect 0 0 6 0; +#X connect 1 0 3 0; +#X connect 2 0 6 0; +#X connect 2 1 0 0; +#X connect 3 2 7 0; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X connect 5 1 1 0; +#X connect 7 0 2 1; +#X restore 167 214 pd to_rgba_if_not_already; +#X text 40 353 Note : you can get some timebased 'moire' effects if +the arguments to the [gemwin] and the [metro] are not synched; +#X text 232 529 Grid with 3 or 4 channels (4th channel gets destroyed) +; +#X obj 130 93 metro 33.3667; +#X connect 0 0 13 0; +#X connect 1 0 0 0; +#X connect 2 0 40 0; +#X connect 3 0 49 0; +#X connect 4 0 18 0; +#X connect 5 0 24 0; +#X connect 12 0 13 0; +#X connect 14 0 2 0; +#X connect 18 0 5 0; +#X connect 21 0 18 0; +#X connect 22 0 21 0; +#X connect 32 1 20 0; +#X connect 33 1 23 0; +#X connect 34 1 48 0; +#X connect 35 1 19 0; +#X connect 37 0 38 0; +#X connect 38 0 39 0; +#X connect 40 0 37 0; +#X connect 40 0 44 0; +#X connect 41 0 40 0; +#X connect 42 0 40 0; +#X connect 43 0 40 0; +#X connect 44 0 18 1; +#X connect 44 1 46 0; +#X connect 45 0 44 1; +#X connect 46 0 18 1; +#X connect 49 0 40 0; diff --git a/externals/gridflow/doc/flow_classes/#to_symbol-help.pd b/externals/gridflow/doc/flow_classes/#to_symbol-help.pd new file mode 100644 index 00000000..f991d814 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#to_symbol-help.pd @@ -0,0 +1,52 @@ +#N canvas 648 0 632 642 10; +#X obj 11 498 cnv 15 63 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 176 469 display; +#X obj 174 557 display; +#X symbolatom 353 559 12 0 0 0 - - -; +#X msg 11 409 72 101 108 108 111 32 87 111 114 108 100 33; +#X obj 11 428 #import (3 2 2); +#X text 324 409 <-- create the grid here; +#X obj 11 498 #to_symbol; +#X obj 11 557 print converted_grid; +#X obj 0 0 doc_h; +#X obj 3 691 doc_o 1; +#X obj 3 629 doc_i 1; +#X obj 3 589 doc_c 0; +#X text 11 102 note that a zero value will cause pd to truncate the +symbol there. thus a symbol may have less bytes than the grid it was +made from.; +#X text 10 147 remember that a byte is not necessarily a codepoint +\, a codepoint is not necessarily a character \, and all characters +don't always have the same width. these distinctions don't matter for +all encodings.; +#X text 11 32 Produces a symbol from grid data in its input. The values +are expected to be valid in the character encoding that you are using +\, but no check will be performed for that \, and additionally \, no +check will be made that the generated symbol only contains characters +that can be put in a symbol.; +#X obj 14 659 doc_ii 0; +#X obj 14 721 doc_oo 0; +#X obj 97 659 doc_m i0 grid; +#X obj 97 721 doc_m o0 symbol; +#X obj 0 753 doc_f; +#X text 232 659 will be transformed into a symbol.; +#X text 232 721 symbol made of grid elements as bytes.; +#X text 12 211 in the future \, this might work at the level of codepoints +instead. thus with today's default UTF-8 (compact unicode) encoding +\, é \; has to be written as 195 169 \, you would be able to +write it as just 233 (as with iso-latin-1) and it would get converted +to 195 169 automatically. however there is still another form of this +character that is made as two codepoints \, 101 (e) and the "dead acute" +character \, separately \, on systems that support it.; +#X text 14 342 at this point \, though \, most branches of pd still +can't handle utf-8 properly \, so there isn't much of a hurry in adding +utf-8 support to [#to_symbol]...; +#X connect 4 0 5 0; +#X connect 5 0 1 0; +#X connect 5 0 7 0; +#X connect 7 0 2 0; +#X connect 7 0 3 0; +#X connect 7 0 8 0; +#X connect 18 1 21 0; +#X connect 19 1 22 0; diff --git a/externals/gridflow/doc/flow_classes/#transpose-help.pd b/externals/gridflow/doc/flow_classes/#transpose-help.pd new file mode 100644 index 00000000..9537434a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#transpose-help.pd @@ -0,0 +1,37 @@ +#N canvas 674 0 632 444 10; +#X obj 3 150 doc_c 2; +#X obj 36 65 #transpose; +#X obj 3 234 doc_i 3; +#X obj 3 353 doc_o 1; +#X obj 0 0 doc_h; +#X obj 14 180 doc_cc 0; +#X obj 14 202 doc_cc 1; +#X obj 14 264 doc_ii 0; +#X obj 14 299 doc_ii 1; +#X obj 14 321 doc_ii 2; +#X obj 14 383 doc_oo 0; +#X obj 97 180 doc_m c0 float; +#X obj 97 202 doc_m c1 float; +#X obj 97 264 doc_m i0 grid; +#X obj 97 299 doc_m i1 float; +#X obj 97 321 doc_m i2 float; +#X obj 97 383 doc_m o0 grid; +#X text 232 264 swaps the two specified dimensions \; dimension numbers +are as in [#join].; +#X text 232 180 dimension number; +#X text 232 202 dimension number; +#X text 232 299 same as arg 0; +#X text 232 321 same as arg 1; +#X obj 0 415 doc_f; +#X text 226 58 remaps contents of a grid by swapping dimensions of +indices. for example \, [#transpose 0 1] does the same as [#remap_image]x[#reverse]. +; +#X text 232 383 remapped image; +#X text 228 108 this is like matrix-transposition that you frequently +read about in linear algebra books.; +#X connect 11 1 18 0; +#X connect 12 1 19 0; +#X connect 13 1 17 0; +#X connect 14 1 20 0; +#X connect 15 1 21 0; +#X connect 16 1 24 0; diff --git a/externals/gridflow/doc/flow_classes/#type-help.pd b/externals/gridflow/doc/flow_classes/#type-help.pd new file mode 100644 index 00000000..4f765f5f --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#type-help.pd @@ -0,0 +1,26 @@ +#N canvas 0 0 632 350 10; +#X obj 3 117 doc_c 0; +#X obj 3 157 doc_i 1; +#X obj 3 217 doc_o 1; +#X obj 14 247 doc_oo 0; +#X obj 14 187 doc_ii 0; +#X text 138 34 gives a symbol representing the numeric type of the +grid received.; +#X obj 97 247 doc_m o0 symbol; +#X obj 97 187 doc_m i0 grid; +#X obj 3 301 doc_also; +#X obj 103 301 #dim; +#X obj 139 301 #finished; +#X obj 0 0 doc_h; +#X obj 0 321 doc_f; +#X obj 17 65 #type; +#X symbolatom 17 84 10 0 0 0 - - -; +#X msg 27 38 3 3 f # 10.4; +#X text 232 247 numbertype in long form.; +#X text 232 269 one of: uint8 int16 int32 int64 float32 float64; +#X connect 6 1 16 0; +#X connect 6 1 17 0; +#X connect 8 1 9 0; +#X connect 8 1 10 0; +#X connect 13 0 14 0; +#X connect 15 0 13 0; diff --git a/externals/gridflow/doc/flow_classes/#unpack-help.pd b/externals/gridflow/doc/flow_classes/#unpack-help.pd new file mode 100644 index 00000000..7068382a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#unpack-help.pd @@ -0,0 +1,28 @@ +#N canvas 286 66 632 455 10; +#X obj 17 61 #color; +#X floatatom 17 195 5 0 0 0 - - -; +#X floatatom 46 174 5 0 0 0 - - -; +#X floatatom 75 152 5 0 0 0 - - -; +#X text 196 84 <--click and drag to view grid values.; +#X obj 17 128 #unpack 3; +#X obj 0 0 doc_h; +#X obj 3 304 doc_i 1; +#X obj 3 364 doc_o n; +#X text 12 28 Outputs individual values from a grid.; +#X obj 3 228 doc_c 1; +#X text 232 394 Outputs grid dimensions as individual numbers.; +#X obj 14 334 doc_ii 0; +#X obj 14 394 doc_oo any; +#X obj 14 258 doc_cc 0; +#X obj 97 259 doc_m c0 float/int; +#X obj 97 334 doc_m i0 grid; +#X obj 97 394 doc_m oany float; +#X obj 0 426 doc_f; +#X text 232 259 number of outlets. usually corresponds to the number +of grid dimensions. (default: 2); +#X connect 0 0 5 0; +#X connect 5 0 1 0; +#X connect 5 1 2 0; +#X connect 5 2 3 0; +#X connect 15 1 19 0; +#X connect 17 1 11 0; diff --git a/externals/gridflow/doc/flow_classes/#window-help.pd b/externals/gridflow/doc/flow_classes/#window-help.pd new file mode 100644 index 00000000..aec81f45 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/#window-help.pd @@ -0,0 +1,33 @@ +#N canvas 514 151 632 415 10; +#X obj 0 0 doc_h; +#X obj 0 386 doc_f; +#X obj 149 56 tgl 15 0 empty empty click_me 17 7 0 10 -4034 -1 -1 0 +1; +#X obj 47 55 #window alakazou; +#X obj 14 140 doc_cc 0; +#X obj 3 110 doc_c 0..1; +#X obj 97 140 doc_m c0 symbol; +#X text 232 140 window title; +#X obj 3 172 doc_i 2; +#X obj 14 202 doc_ii 0; +#X obj 14 272 doc_ii 1; +#X obj 97 237 doc_m i0 state; +#X text 232 272 same as 'state'; +#X obj 97 202 doc_m i0 grid; +#X obj 97 272 doc_m i1 bool; +#X obj 3 366 doc_also; +#X obj 103 366 #out; +#X text 232 202 as with #out window when state=1 \; else ignored when +state=0; +#X text 232 237 1 to open the window \; 0 to close it.; +#X obj 3 304 doc_o 1; +#X obj 14 334 doc_oo 0; +#X obj 97 334 doc_m o0 ...; +#X text 232 334 whatever [#out window] outputs.; +#X connect 2 0 3 1; +#X connect 6 1 7 0; +#X connect 11 1 18 0; +#X connect 13 1 17 0; +#X connect 14 1 12 0; +#X connect 15 1 16 0; +#X connect 21 1 22 0; diff --git a/externals/gridflow/doc/flow_classes/0x40complex_sq-help.pd b/externals/gridflow/doc/flow_classes/0x40complex_sq-help.pd new file mode 100644 index 00000000..42ca0f5a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/0x40complex_sq-help.pd @@ -0,0 +1,52 @@ +#N canvas 648 0 632 537 10; +#X obj 21 109 @complex_sq; +#X text 176 59 this object computes the square of complex numbers. +if seeing imaginary as Y and real as X \, then this operation squares +the distance of a point from origin and doubles the angle between it +and the +X half-axis clockwise. :); +#X floatatom 21 58 5 0 0 0 - - -; +#X floatatom 21 188 5 0 0 0 - - -; +#X floatatom 64 58 5 0 0 0 - - -; +#X floatatom 58 188 5 0 0 0 - - -; +#X obj 21 78 #pack; +#X obj 114 185 #print; +#X obj 21 159 #unpack; +#X obj 103 488 # +; +#X obj 133 488 # abs-; +#X obj 3 488 doc_also; +#X obj 181 488 # C.sq-; +#X obj 3 324 doc_c 0; +#X obj 3 364 doc_i 1; +#X obj 3 426 doc_o 1; +#X obj 0 0 doc_h; +#X obj 14 456 doc_oo 0; +#X obj 14 394 doc_ii 0; +#X obj 97 394 doc_m i0 grid; +#X obj 97 456 doc_m o0 grid; +#X text 232 394 grid of size (... \, 2); +#X text 232 456 grid of same size; +#X obj 0 508 doc_f; +#X text 178 128 However \, this (old) object is backwards from the +rest of GridFlow because it puts Imaginary before Real. [#fft] puts +the Real part first. Open this abstraction to discover the new way +to square a complex number. (The extra multiplication is the net result +of swapping components before and after the squaring); +#X text 178 212 used on an indexmap (#remap_image) \, this makes each +thing appear twice \, each appearance spanning half of the original +angle. straight lines become hyperbolic \, etc.; +#X text 179 259 In the original version of GridFlow (aka Video4jmax +0.2) \, the first example patch was feedback_fractal \, which used +this operation with a [#remap_image] \, though it was expressed in +much different terms back then.; +#X connect 0 0 7 0; +#X connect 0 0 8 0; +#X connect 2 0 6 0; +#X connect 4 0 6 1; +#X connect 6 0 0 0; +#X connect 8 0 3 0; +#X connect 8 1 5 0; +#X connect 11 1 9 1; +#X connect 11 1 10 0; +#X connect 11 1 12 0; +#X connect 19 1 21 0; +#X connect 20 1 22 0; diff --git a/externals/gridflow/doc/flow_classes/args-demo.pd b/externals/gridflow/doc/flow_classes/args-demo.pd new file mode 100644 index 00000000..54e3cfe7 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/args-demo.pd @@ -0,0 +1,27 @@ +#N canvas 0 0 613 300 10; +#X obj 152 20 args hello (world a 42) *; +#X obj 43 96 print args; +#X obj 152 3 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1 +-1; +#X obj 18 35 inlet; +#X obj 18 233 outlet; +#X obj 18 54 t a; +#X obj 18 155 route temperature pression etc; +#X obj 266 85 display; +#X obj 209 105 display; +#X text 270 69 rest of arguments (*); +#X text 17 174 do whatever you want with those args; +#X obj 223 230 t a; +#X text 230 211 anything else coming from first inlet or named args +; +#X obj 153 125 display; +#X text 157 106 hello; +#X text 213 86 world; +#X connect 0 0 13 0; +#X connect 0 1 8 0; +#X connect 0 2 7 0; +#X connect 2 0 0 0; +#X connect 3 0 5 0; +#X connect 5 0 6 0; +#X connect 5 0 1 0; +#X connect 6 3 11 0; diff --git a/externals/gridflow/doc/flow_classes/args-help.pd b/externals/gridflow/doc/flow_classes/args-help.pd new file mode 100644 index 00000000..d7f6a345 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/args-help.pd @@ -0,0 +1,50 @@ +#N canvas 648 0 632 631 10; +#X text 354 70 demo default args; +#X text 354 90 demo rest of args; +#X text 354 130 demo missing args; +#X text 354 110 demo comma args; +#X obj 0 0 doc_h; +#X obj 3 352 doc_i 1; +#X obj 3 153 doc_c n; +#X obj 14 382 doc_ii 0; +#X obj 3 518 doc_o 1..; +#X obj 97 382 doc_m i0 bang; +#X obj 14 183 doc_cc any; +#X obj 97 183 doc_m cany symbol; +#X text 232 183 "*" represents the rest of arguments; +#X text 232 205 other symbols represent mandatory arguments; +#X obj 0 602 doc_f; +#X obj 14 548 doc_oo any; +#X obj 97 548 doc_m oany <atom>; +#X text 232 548 output of single argument; +#X text 232 570 output of rest of arguments \, if last arg of [args] +is a "*".; +#X obj 97 570 doc_m oany <list>; +#X text 232 382 sends one message per outlet right-to-left. if there +is a wildcard (*) as the last argument \, any extra arguments go there +as a list message. Then for any missing arguments that have default +values \, the default values are sent \, right to left. Then for each +present argument that is not extra \, that argument will be sent on +its own outlet. Finally \, each init-message (comma-separated) is parsed +from the arguments and sent (magically) to the first inlet of the abstraction +itself.; +#X obj 97 227 doc_m cany nested-list; +#X text 232 227 represent optional arguments as nested-lists; +#X text 232 249 inside the nested-list \, \$1 must be the name of the +argument \, \$2 must be "a" (the single letter) \, and \$3 must be +the default value. the "a" is actually for future use (type-checking). +; +#X text 97 314 the star can only occur once and at the end \, and all +optionals must follow all mandatories.; +#X obj 12 89 args-demo pommes poires ananas biscuits-soda; +#X obj 12 129 args-demo; +#X obj 12 69 args-demo blah; +#X obj 12 109 args-demo dorval \, temperature -18 \, pression 99.5 +; +#X connect 9 1 20 0; +#X connect 11 1 12 0; +#X connect 11 1 13 0; +#X connect 16 1 17 0; +#X connect 19 1 18 0; +#X connect 21 1 22 0; +#X connect 21 1 23 0; diff --git a/externals/gridflow/doc/flow_classes/ascii-help.pd b/externals/gridflow/doc/flow_classes/ascii-help.pd new file mode 100644 index 00000000..b7ae57d5 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/ascii-help.pd @@ -0,0 +1,25 @@ +#N canvas 442 305 632 357 10; +#X obj 39 73 ascii; +#X floatatom 39 41 5 0 0 0 - - -; +#X obj 39 92 print; +#X text 135 74 write integer as decimal in ascii codes; +#X text 232 195 number to be converted into ascii codes; +#X obj 0 0 doc_h; +#X obj 3 227 doc_o 1; +#X obj 3 165 doc_i 1; +#X obj 14 195 doc_ii 0; +#X obj 14 257 doc_oo 0; +#X obj 3 125 doc_c 0; +#X obj 97 195 doc_m i0 float int; +#X obj 97 257 doc_m o0 float; +#X obj 0 328 doc_f; +#X msg 86 40 1e+06; +#X text 232 257 a sequence of floats corresponding to the ascii codes +of the input integer as written in decimal. the sign is written in +the case of negative values. exponential notation is used for large +numbers.; +#X connect 0 0 2 0; +#X connect 1 0 0 0; +#X connect 11 1 4 0; +#X connect 12 1 15 0; +#X connect 14 0 0 0; diff --git a/externals/gridflow/doc/flow_classes/ascii_to_f-help.pd b/externals/gridflow/doc/flow_classes/ascii_to_f-help.pd new file mode 100644 index 00000000..a506c274 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/ascii_to_f-help.pd @@ -0,0 +1,31 @@ +#N canvas 335 118 632 388 10; +#X obj 0 0 doc_h; +#X obj 0 359 doc_f; +#X obj 31 75 ascii_to_f; +#X text 200 74 parser for floats written in ascii as sequences of floats +; +#X obj 3 134 doc_c 0; +#X obj 3 174 doc_i 1; +#X obj 3 236 doc_o 2; +#X obj 14 266 doc_oo 0; +#X obj 14 327 doc_oo 1; +#X obj 14 204 doc_ii 0; +#X obj 97 204 doc_m i0; +#X obj 97 327 doc_m o1 float; +#X obj 97 266 doc_m o0 float; +#X text 232 327 integer coming from inlet 0 but unrecognised; +#X text 232 204 ascii bytes (integer); +#X floatatom 31 100 8 0 0 0 - - -; +#X obj 90 100 display; +#X msg 30 50 51 \, 46 \, 49 \, 52 \, 49 \, 53 \, 57 \, 51 \, 0; +#X text 232 266 float value successfully parsed. note that this is +output only when an unrecognised character is received \, because otherwise +\, it can't be known for sure that the number is finished.; +#X text 201 93 recognises plus \, minus \, period \, but no exponents +\, infinities nor NaN.; +#X connect 2 0 15 0; +#X connect 2 1 16 0; +#X connect 10 1 14 0; +#X connect 11 1 13 0; +#X connect 12 1 18 0; +#X connect 17 0 2 0; diff --git a/externals/gridflow/doc/flow_classes/cv/#CornerHarris-help.pd b/externals/gridflow/doc/flow_classes/cv/#CornerHarris-help.pd new file mode 100644 index 00000000..6d4aaf9d --- /dev/null +++ b/externals/gridflow/doc/flow_classes/cv/#CornerHarris-help.pd @@ -0,0 +1,14 @@ +#N canvas 599 185 568 336 10; +#X obj 0 0 doc_h cv/; +#X obj 0 307 doc_f; +#X obj 73 53 cv/#CornerHarris; +#X obj 3 87 doc_c 0; +#X obj 3 127 doc_i 1; +#X obj 14 157 doc_ii 0; +#X obj 3 247 doc_o 1; +#X obj 14 277 doc_oo 0; +#X obj 97 277 doc_m o0 grid; +#X obj 97 157 doc_m i0 grid; +#X obj 97 197 doc_m i0 block_size; +#X obj 97 177 doc_m i0 aperture_size; +#X obj 97 217 doc_m i0 k; diff --git a/externals/gridflow/doc/flow_classes/cv/#Ellipse-help.pd b/externals/gridflow/doc/flow_classes/cv/#Ellipse-help.pd new file mode 100644 index 00000000..be29f945 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/cv/#Ellipse-help.pd @@ -0,0 +1,24 @@ +#N canvas 580 166 568 551 10; +#X obj 0 0 doc_h cv/; +#X obj 0 443 doc_f; +#X obj 94 47 cv/#Ellipse; +#X obj 3 81 doc_c 0; +#X obj 3 121 doc_i 1; +#X obj 3 361 doc_o 2; +#X obj 14 151 doc_ii 0; +#X obj 14 391 doc_oo 0; +#X obj 14 411 doc_oo 1; +#X obj 97 411 doc_m o1; +#X obj 97 391 doc_m o0 grid; +#X obj 97 151 doc_m i0 grid; +#X obj 97 211 doc_m i0 center; +#X obj 97 191 doc_m i0 axes; +#X obj 97 171 doc_m i0 angle; +#X obj 97 311 doc_m i0 start_angle; +#X obj 97 251 doc_m i0 end_angle; +#X obj 97 231 doc_m i0 color; +#X obj 97 331 doc_m i0 thickness; +#X obj 97 271 doc_m i0 line_type; +#X obj 97 291 doc_m i0 shift; +#X text 200 411 attributes; +#X connect 9 1 21 0; diff --git a/externals/gridflow/doc/flow_classes/cv/#Invert-help.pd b/externals/gridflow/doc/flow_classes/cv/#Invert-help.pd new file mode 100644 index 00000000..095a6b4e --- /dev/null +++ b/externals/gridflow/doc/flow_classes/cv/#Invert-help.pd @@ -0,0 +1,32 @@ +#N canvas 335 118 568 535 10; +#X obj 0 0 doc_h cv/; +#X obj 0 506 doc_f; +#X text 88 75 just convert to grid; +#X obj 55 157 cv/#Invert; +#X obj 61 178 display; +#X obj 22 75 # + (f #); +#X msg 22 56 3 3 f # 1 2 0 3 0 4 5 6 0; +#X obj 29 96 display; +#X obj 3 366 doc_i 1; +#X obj 3 426 doc_o 1; +#X obj 3 486 doc_also; +#X obj 100 486 cv/#SVD; +#X obj 22 157 #t; +#X obj 23 259 display; +#X obj 14 396 doc_ii 0; +#X obj 14 456 doc_oo 0; +#X obj 3 326 doc_c; +#X obj 97 396 doc_m i0 grid; +#X obj 97 456 doc_m o0 grid; +#X obj 22 239 #inner \, seed (f #); +#X text 224 105 finds the float matrix that would cancel a given float +matrix \, if both were to be put in [#inner] together.; +#X connect 3 0 4 0; +#X connect 3 0 19 1; +#X connect 5 0 7 0; +#X connect 5 0 12 0; +#X connect 6 0 5 0; +#X connect 10 1 11 0; +#X connect 12 0 19 0; +#X connect 12 1 3 0; +#X connect 19 0 13 0; diff --git a/externals/gridflow/doc/flow_classes/cv/#KMeans-help.pd b/externals/gridflow/doc/flow_classes/cv/#KMeans-help.pd new file mode 100644 index 00000000..166e0aeb --- /dev/null +++ b/externals/gridflow/doc/flow_classes/cv/#KMeans-help.pd @@ -0,0 +1,29 @@ +#N canvas 642 52 560 437 10; +#X obj 20 190 #out window; +#X obj 20 63 #in babbage.jpg; +#X obj 20 46 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1 +-1; +#X obj 20 102 #cast f; +#X obj 37 44 loadbang; +#X obj 20 171 #inner (1 3 # 85 51 15); +#X obj 42 150 #print; +#X obj 102 93 #out window; +#X msg 225 86 mode channels; +#X obj 20 121 cv/#KMeans 8 \, termcrit (8 nil); +#X obj 0 0 doc_h cv/; +#X obj 3 221 doc_c 1; +#X obj 3 280 doc_i 2; +#X obj 3 369 doc_o 1; +#X obj 14 304 doc_ii 0; +#X obj 14 328 doc_ii 1; +#X obj 14 393 doc_oo 0; +#X obj 14 245 doc_cc 0; +#X connect 1 0 3 0; +#X connect 1 0 7 0; +#X connect 2 0 1 0; +#X connect 3 0 9 0; +#X connect 4 0 1 0; +#X connect 5 0 0 0; +#X connect 8 0 9 0; +#X connect 9 0 5 0; +#X connect 9 0 6 0; diff --git a/externals/gridflow/doc/flow_classes/cv/#SVD-help.pd b/externals/gridflow/doc/flow_classes/cv/#SVD-help.pd new file mode 100644 index 00000000..ba012df1 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/cv/#SVD-help.pd @@ -0,0 +1,44 @@ +#N canvas 335 0 568 576 10; +#X obj 0 0 doc_h cv/; +#X obj 0 547 doc_f; +#X obj 19 160 cv/#SVD; +#X text 200 46 Singular Value Decomposition; +#X obj 3 306 doc_c 0; +#X obj 3 346 doc_i 1; +#X obj 3 408 doc_o 3; +#X obj 14 376 doc_ii 0; +#X obj 14 438 doc_oo 0; +#X obj 14 460 doc_oo 1; +#X obj 14 482 doc_oo 2; +#X obj 97 438 doc_m o0 grid; +#X obj 97 460 doc_m o1 grid; +#X obj 97 482 doc_m o2 grid; +#X obj 28 88 display; +#X text 82 65 just turn into a real grid; +#X obj 210 161 display; +#X obj 210 225 display; +#X obj 20 225 display; +#X msg 19 46 3 3 f # 1 0 0 0 2 3 0 3 -2; +#X obj 19 65 # + (f #); +#X text 287 89 for finding eigenvalues and eigenvectors.; +#X obj 97 376 doc_m i0 grid; +#X text 200 376 N by N matrix to decompose; +#X text 200 438 N by N diagonal matrix containing eigenvalues; +#X text 200 460 N by N matrix containing eigenvectors; +#X text 200 482 N by N matrix containing fudge factors: typically contains +only zeroes \, ones \, and minus ones.; +#X obj 3 527 doc_also; +#X obj 97 527 #extract_diagonal; +#X obj 211 527 cv/#Invert; +#X connect 2 0 18 0; +#X connect 2 1 17 0; +#X connect 2 2 16 0; +#X connect 11 1 24 0; +#X connect 12 1 25 0; +#X connect 13 1 26 0; +#X connect 19 0 20 0; +#X connect 20 0 14 0; +#X connect 20 0 2 0; +#X connect 22 1 23 0; +#X connect 27 1 28 0; +#X connect 27 1 29 0; diff --git a/externals/gridflow/doc/flow_classes/cv/#numop-help.pd b/externals/gridflow/doc/flow_classes/cv/#numop-help.pd new file mode 100644 index 00000000..d8a26a75 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/cv/#numop-help.pd @@ -0,0 +1,60 @@ +#N canvas 683 36 568 668 10; +#X obj 22 114 #print; +#X msg 22 69 2 2 # 0 1 2 3; +#X obj 22 92 cv/#Add (2 2 # 0 1 2 3); +#X obj 22 189 #print; +#X msg 22 144 2 2 # 0 1 2 3; +#X obj 267 114 #print; +#X msg 267 69 2 2 # 0 1 2 3; +#X obj 267 191 #print; +#X obj 22 167 cv/#Sub (2 2 # 0 1 2 3); +#X obj 267 92 cv/#Mul (2 2 # 0 1 2 3); +#X obj 267 169 cv/#Div (2 2 # 0 1 2 3); +#X msg 396 146 2 2 # 0 1 42 666; +#X msg 396 69 2 2 # 0 1 42 666; +#X msg 151 144 2 2 # 0 1 42 666; +#X msg 151 69 2 2 # 0 1 42 666; +#X obj 0 0 doc_h cv/; +#X msg 267 146 2 2 # 0 1 2 -3000; +#X text 424 167 rounds towards zero; +#X obj 3 412 doc_c 1; +#X obj 14 442 doc_cc 0; +#X obj 3 472 doc_i 2; +#X obj 14 502 doc_ii 0; +#X obj 14 522 doc_ii 1; +#X obj 3 552 doc_o 1; +#X obj 14 582 doc_oo 0; +#X obj 0 612 doc_f; +#X obj 22 261 #print; +#X msg 22 213 2 2 # 0 1 2 3; +#X msg 151 213 2 2 # 0 1 42 666; +#X obj 22 237 cv/#And (2 2 # 0 1 2 3); +#X obj 267 261 #print; +#X msg 267 213 2 2 # 0 1 2 3; +#X msg 396 213 2 2 # 0 1 42 666; +#X obj 267 333 #print; +#X msg 267 285 2 2 # 0 1 2 3; +#X msg 396 285 2 2 # 0 1 42 666; +#X obj 267 237 cv/#Or (2 2 # 0 1 2 3); +#X obj 267 309 cv/#Xor (2 2 # 0 1 2 3); +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 4 0 8 0; +#X connect 6 0 9 0; +#X connect 8 0 3 0; +#X connect 9 0 5 0; +#X connect 10 0 7 0; +#X connect 11 0 10 1; +#X connect 12 0 9 1; +#X connect 13 0 8 1; +#X connect 14 0 2 1; +#X connect 16 0 10 0; +#X connect 27 0 29 0; +#X connect 28 0 29 1; +#X connect 29 0 26 0; +#X connect 31 0 36 0; +#X connect 32 0 36 1; +#X connect 34 0 37 0; +#X connect 35 0 37 1; +#X connect 36 0 30 0; +#X connect 37 0 33 0; diff --git a/externals/gridflow/doc/flow_classes/display-help.pd b/externals/gridflow/doc/flow_classes/display-help.pd new file mode 100644 index 00000000..9ed72fec --- /dev/null +++ b/externals/gridflow/doc/flow_classes/display-help.pd @@ -0,0 +1,24 @@ +#N canvas 674 0 632 415 10; +#X obj 90 185 display; +#X msg 319 61 0 1 2 3 5 8 13; +#X floatatom 319 89 5 0 0 0 - - -; +#X obj 89 58 #color; +#X obj 0 0 doc_h; +#X obj 3 211 doc_c 0; +#X obj 3 251 doc_i 1; +#X obj 3 326 doc_o 0; +#X obj 14 281 doc_ii 0; +#X obj 3 366 doc_also; +#X obj 103 366 print; +#X obj 145 366 #print; +#X obj 0 386 doc_f; +#X obj 97 281 doc_m i0 <any>; +#X text 294 142 GUI object equivalent to [print] and [#print].; +#X text 232 281 Displays the received message in the box \, resizing +the box so that the message fits exactly.; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 9 1 10 0; +#X connect 9 1 11 0; +#X connect 13 1 15 0; diff --git a/externals/gridflow/doc/flow_classes/doc_add-help.pd b/externals/gridflow/doc/flow_classes/doc_add-help.pd new file mode 100644 index 00000000..d80f048a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_add-help.pd @@ -0,0 +1,23 @@ +#N canvas 283 161 632 333 10; +#X obj 0 0 doc_h; +#X obj 0 304 doc_f; +#X obj 108 45 doc_add; +#X obj 3 154 doc_i 2; +#X obj 3 264 doc_o 0; +#X obj 14 184 doc_ii 0; +#X obj 14 219 doc_ii 1; +#X obj 97 219 doc_m i1 float; +#X obj 97 184 doc_m i0 bang; +#X obj 3 92 doc_c 1; +#X obj 14 122 doc_cc 0; +#X obj 97 122 doc_m c0 symbol; +#X text 195 37 add one [doc_m] to a given subsection.; +#X text 194 57 for use by [doc_c] [doc_i] [doc_o] only.; +#X text 232 184 add one [doc_m] with a blank \$2 (will show up as "~unspecified~") +; +#X text 232 219 y position of top of the parent (as given by outlet +1 of [doc_layout]); +#X text 232 122 subsection id \, such as "c0" \, "i3" or "oany".; +#X connect 7 1 15 0; +#X connect 8 1 14 0; +#X connect 11 1 16 0; diff --git a/externals/gridflow/doc/flow_classes/doc_also-help.pd b/externals/gridflow/doc/flow_classes/doc_also-help.pd new file mode 100644 index 00000000..c88d7e85 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_also-help.pd @@ -0,0 +1,18 @@ +#N canvas 383 90 632 297 10; +#X obj 0 0 doc_h; +#X obj 0 268 doc_f; +#X obj 3 84 doc_c 0; +#X obj 3 124 doc_i 0; +#X text 173 46 an auto-positioning documentation footer.; +#X obj 3 164 doc_o 2; +#X obj 14 194 doc_oo 0; +#X obj 14 216 doc_oo 1; +#X obj 97 194 doc_m o0 <none>; +#X obj 97 216 doc_m o1 <evil>; +#X text 232 194 this outlet is unused; +#X text 232 216 this outlet is reserved for evil purposes; +#X obj 3 248 doc_also; +#X text 103 248 [doc_f]; +#X connect 8 1 10 0; +#X connect 9 1 11 0; +#X connect 12 1 13 0; diff --git a/externals/gridflow/doc/flow_classes/doc_below-help.pd b/externals/gridflow/doc/flow_classes/doc_below-help.pd new file mode 100644 index 00000000..b4ac21cb --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_below-help.pd @@ -0,0 +1,40 @@ +#N canvas 335 118 632 420 10; +#X obj 0 0 doc_h; +#X obj 0 391 doc_f; +#X obj 102 50 doc_below; +#X obj 3 95 doc_c 3; +#X obj 3 223 doc_i 3; +#X obj 3 329 doc_o 1; +#X obj 14 359 doc_oo 0; +#X obj 14 253 doc_ii 0; +#X obj 14 275 doc_ii 1; +#X obj 14 297 doc_ii 2; +#X obj 14 125 doc_cc 0; +#X obj 14 147 doc_cc 1; +#X obj 14 191 doc_cc 2; +#X obj 97 297 doc_m i2; +#X obj 97 253 doc_m i0 list; +#X obj 97 359 doc_m o0 list; +#X obj 97 125 doc_m c0 symbol; +#X obj 97 275 doc_m i1 symbol; +#X text 232 275 same as arg 0; +#X text 232 297 same as arg 1; +#X obj 97 191 doc_m c2 float; +#X obj 97 147 doc_m c1 float; +#X text 232 147 0: just this node; +#X text 232 169 1: recursively; +#X text 218 41 this is to appear directly in the body of an element +that appears in a help patch (there should be no subpatches involved +in this case \, because of the uplevels); +#X text 232 125 relative name such as c/0 or o/any/float; +#X text 232 191 extra padding in pixels; +#X text 232 253 (x y) to transform; +#X text 232 359 (x y) \, usually the same as what came in.; +#X connect 13 1 19 0; +#X connect 14 1 27 0; +#X connect 15 1 28 0; +#X connect 16 1 25 0; +#X connect 17 1 18 0; +#X connect 20 1 26 0; +#X connect 21 1 22 0; +#X connect 21 1 23 0; diff --git a/externals/gridflow/doc/flow_classes/doc_bottom-help.pd b/externals/gridflow/doc/flow_classes/doc_bottom-help.pd new file mode 100644 index 00000000..b17f8b4a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_bottom-help.pd @@ -0,0 +1,27 @@ +#N canvas 335 118 632 372 10; +#X obj 0 0 doc_h; +#X obj 0 343 doc_f; +#X obj 114 54 doc_bottom; +#X obj 3 162 doc_i 2; +#X obj 3 281 doc_o 1; +#X obj 14 311 doc_oo 0; +#X obj 14 192 doc_ii 0; +#X obj 14 236 doc_ii 1; +#X obj 97 311 doc_m o0 float; +#X text 232 311 y position; +#X obj 97 236 doc_m i1 symbol; +#X obj 97 192 doc_m i0 float; +#X obj 97 214 doc_m i0 before; +#X text 232 192 y position; +#X obj 3 100 doc_c 1; +#X obj 14 130 doc_cc 0; +#X obj 97 130 doc_m c0 float; +#X text 232 130 0 or 1 whether to use the "before" directive.; +#X text 232 214 used for sorting by name (id); +#X text 232 236 node whose direct children should be queried (specified +without the \$0); +#X connect 8 1 9 0; +#X connect 10 1 19 0; +#X connect 11 1 13 0; +#X connect 12 1 18 0; +#X connect 16 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/doc_c-help.pd b/externals/gridflow/doc/flow_classes/doc_c-help.pd new file mode 100644 index 00000000..2362e2e8 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_c-help.pd @@ -0,0 +1,17 @@ +#N canvas 335 118 632 258 10; +#X obj 0 0 doc_h; +#X obj 0 229 doc_f; +#X text 146 38 an auto-positioning documentation header; +#X obj 3 67 doc_c 1; +#X obj 3 129 doc_i 0; +#X obj 3 169 doc_o 0; +#X obj 14 97 doc_cc 0; +#X obj 97 97 doc_m c0 float; +#X text 232 97 number of creation arguments in the class being documented. +; +#X obj 3 209 doc_also; +#X text 103 209 [doc_i]; +#X text 157 209 [doc_o]; +#X connect 7 1 8 0; +#X connect 9 1 10 0; +#X connect 9 1 11 0; diff --git a/externals/gridflow/doc/flow_classes/doc_cc-help.pd b/externals/gridflow/doc/flow_classes/doc_cc-help.pd new file mode 100644 index 00000000..041cf718 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_cc-help.pd @@ -0,0 +1,15 @@ +#N canvas 335 118 632 242 10; +#X obj 0 0 doc_h; +#X obj 3 73 doc_c; +#X obj 3 113 doc_i; +#X obj 3 153 doc_o; +#X obj 0 213 doc_f; +#X text 144 35 auto-positioning documentation subheader for a specific +creation argument.; +#X obj 3 193 doc_also; +#X text 103 193 [doc_c]; +#X text 157 193 [doc_ii]; +#X text 217 193 [doc_oo]; +#X connect 6 1 7 0; +#X connect 6 1 8 0; +#X connect 6 1 9 0; diff --git a/externals/gridflow/doc/flow_classes/doc_editmode-help.pd b/externals/gridflow/doc/flow_classes/doc_editmode-help.pd new file mode 100644 index 00000000..3c69aa5d --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_editmode-help.pd @@ -0,0 +1,16 @@ +#N canvas 451 192 632 304 10; +#X obj 0 0 doc_h; +#X obj 0 275 doc_f; +#X obj 103 51 doc_editmode; +#X obj 3 113 doc_c 0; +#X obj 3 153 doc_i 2; +#X obj 3 235 doc_o 0; +#X obj 14 183 doc_ii 0; +#X obj 14 203 doc_ii 1; +#X obj 97 183 doc_m i0 float; +#X obj 97 203 doc_m i1 float; +#X text 200 182 x position of the button to manage; +#X text 232 203 1: also manage the rectangle; +#X text 226 50 used for handling the changes that happen when switching +from and to edit mode in GridFlow's documentation.; +#X connect 9 1 11 0; diff --git a/externals/gridflow/doc/flow_classes/doc_exist-help.pd b/externals/gridflow/doc/flow_classes/doc_exist-help.pd new file mode 100644 index 00000000..aaf53a39 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_exist-help.pd @@ -0,0 +1,26 @@ +#N canvas 215 276 632 354 10; +#X obj 0 0 doc_h; +#X obj 0 325 doc_f; +#X obj 116 44 doc_exist; +#X obj 3 82 doc_c 1; +#X obj 3 157 doc_i 2; +#X obj 3 241 doc_o 1; +#X obj 14 271 doc_oo 0; +#X obj 14 187 doc_ii 0; +#X obj 14 209 doc_ii 1; +#X obj 14 112 doc_cc 0; +#X obj 97 112 doc_m c0 symbol; +#X text 232 112 relative name of object to be checked for. the \$0 +of the parent will be automatically added (with a slash).; +#X obj 97 187 doc_m i0 bang; +#X obj 97 209 doc_m i1 symbol; +#X text 232 209 same as arg 0; +#X obj 97 271 doc_m o0 float; +#X text 232 187 perform a check and output the result; +#X text 232 271 0: not found; +#X text 232 293 1: found; +#X connect 10 1 11 0; +#X connect 12 1 16 0; +#X connect 13 1 14 0; +#X connect 15 1 17 0; +#X connect 15 1 18 0; diff --git a/externals/gridflow/doc/flow_classes/doc_f-help.pd b/externals/gridflow/doc/flow_classes/doc_f-help.pd new file mode 100644 index 00000000..3c210670 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_f-help.pd @@ -0,0 +1,7 @@ +#N canvas 335 118 632 227 10; +#X obj 0 0 doc_h; +#X obj 0 198 doc_f; +#X obj 3 78 doc_c 0; +#X obj 3 118 doc_i 0; +#X obj 3 158 doc_o 0; +#X text 173 46 an auto-positioning documentation footer.; diff --git a/externals/gridflow/doc/flow_classes/doc_h-help.pd b/externals/gridflow/doc/flow_classes/doc_h-help.pd new file mode 100644 index 00000000..00b71c86 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_h-help.pd @@ -0,0 +1,13 @@ +#N canvas 409 226 632 269 10; +#X obj 0 0 doc_h; +#X obj 0 240 doc_f; +#X text 126 40 an auto-positioning documentation header; +#X obj 3 160 doc_i 0; +#X obj 3 200 doc_o 0; +#X obj 3 72 doc_c 1; +#X obj 14 102 doc_cc 0; +#X obj 97 102 doc_m c0 symbol; +#X text 232 102 namespace prefix (can't be figured out automatically +for now). must include trailing slash. hopefully this is a temporary +measure.; +#X connect 7 1 8 0; diff --git a/externals/gridflow/doc/flow_classes/doc_i-help.pd b/externals/gridflow/doc/flow_classes/doc_i-help.pd new file mode 100644 index 00000000..ba2cbbcb --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_i-help.pd @@ -0,0 +1,10 @@ +#N canvas 454 262 632 251 10; +#X obj 0 0 doc_h; +#X obj 0 222 doc_f; +#X obj 3 80 doc_c 1; +#X obj 3 142 doc_i 0; +#X obj 3 182 doc_o 0; +#X obj 14 110 doc_cc 0; +#X obj 97 110 doc_m c0 float; +#X text 232 110 number of inlets in the class being documented; +#X connect 6 1 7 0; diff --git a/externals/gridflow/doc/flow_classes/doc_ii-help.pd b/externals/gridflow/doc/flow_classes/doc_ii-help.pd new file mode 100644 index 00000000..9858cce7 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_ii-help.pd @@ -0,0 +1,15 @@ +#N canvas 335 118 632 260 10; +#X obj 0 0 doc_h; +#X obj 3 91 doc_c; +#X obj 3 131 doc_i; +#X obj 3 171 doc_o; +#X obj 0 231 doc_f; +#X text 132 41 auto-positioning documentation subheader for a specific +inlet.; +#X text 103 211 doc_i; +#X text 145 211 doc_cc; +#X text 193 211 doc_oo; +#X obj 3 211 doc_also; +#X connect 9 1 6 0; +#X connect 9 1 7 0; +#X connect 9 1 8 0; diff --git a/externals/gridflow/doc/flow_classes/doc_layout-help.pd b/externals/gridflow/doc/flow_classes/doc_layout-help.pd new file mode 100644 index 00000000..6ddf5154 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_layout-help.pd @@ -0,0 +1,46 @@ +#N canvas 335 118 632 473 10; +#X obj 0 0 doc_h; +#X obj 0 444 doc_f; +#X obj 3 91 doc_c 4; +#X obj 14 121 doc_cc 0; +#X obj 14 156 doc_cc 1; +#X obj 14 178 doc_cc 2; +#X obj 14 200 doc_cc 3; +#X obj 97 200 doc_m c3 symbol; +#X text 232 200 parent; +#X text 232 178 height; +#X text 232 156 width; +#X text 232 121 relative id \, such as c0/hello \, to which the parent's +\$0 will be automatically prefixed (with an extra slash); +#X obj 3 232 doc_i 2; +#X obj 3 360 doc_o 2; +#X obj 14 390 doc_oo 0; +#X obj 14 412 doc_oo 1; +#X obj 97 390 doc_m o0 <none>; +#X text 232 412 current (x y) position of the object; +#X obj 97 412 doc_m o1 list; +#X obj 97 328 doc_m i1 list; +#X text 232 328 new (x y) position after processing the output of outlet +1; +#X obj 97 284 doc_m i0 name; +#X obj 97 306 doc_m i0 parent; +#X obj 97 262 doc_m i0 height; +#X text 232 262 same as arg 2; +#X text 232 284 same as arg 0; +#X text 232 306 same as arg 3; +#X obj 14 262 doc_ii 0; +#X obj 14 328 doc_ii 1; +#X obj 97 156 doc_m c1 float; +#X obj 97 178 doc_m c2 float; +#X obj 97 121 doc_m c0 symbol; +#X text 109 49 used by all [doc_...] abstractions for their own positioning +; +#X connect 7 1 8 0; +#X connect 18 1 17 0; +#X connect 19 1 20 0; +#X connect 21 1 25 0; +#X connect 22 1 26 0; +#X connect 23 1 24 0; +#X connect 29 1 10 0; +#X connect 30 1 9 0; +#X connect 31 1 11 0; diff --git a/externals/gridflow/doc/flow_classes/doc_m-help.pd b/externals/gridflow/doc/flow_classes/doc_m-help.pd new file mode 100644 index 00000000..3a955e48 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_m-help.pd @@ -0,0 +1,78 @@ +#N canvas 335 0 632 700 10; +#X obj 0 0 doc_h; +#X obj 0 1031 doc_f; +#X obj 3 347 doc_c 2; +#X obj 3 911 doc_i 0; +#X obj 3 951 doc_o 2; +#X obj 14 981 doc_oo 0; +#X obj 14 1001 doc_oo 1; +#X obj 14 377 doc_cc 0; +#X obj 14 425 doc_cc 1; +#X obj 97 377 doc_m c0 symbol; +#X obj 97 425 doc_m c1 symbol; +#X text 232 377 code for associating to a specific [doc_c] \, [doc_i] +or [doc_o]. for example \, to associate with [doc_c 3] \, the code +is c3; +#X text 232 425 in the case of [doc_i] or [doc_o] \, this is either +a selector or a meta-selector.; +#X text 232 556 the sorting order of [doc_m] elements in a given subsection +is alphabetical except for those five at the beginning: bang \, float +\, grid \, symbol \, pointer \, list. and this one at the very end: +<any>.; +#X text 232 617 a list of meta-selectors:; +#X text 232 639 <any>: represents the anything-method; +#X text 232 661 <none>: is for writing anything of interest (?) about +nothing at all. when present \, this is usually the only entry in the +given subsection \, and it usually just says that the inlet or outlet +is meant to be useless. typically \, no messages are accepted in the +inlet \, or else \, all messages are accepted without doing anything +with them \, or in the case of outlet \, nothing ever comes out of +it.; +#X text 232 796 <evil>: is like <none> \, except that the outlet that +bears it will do weird things to the object it gets connected to. things +that are very different from sending mere messages.; +#X text 232 866 <hpgl>: this stands for a pd message version of the +HPGL protocol.; +#X text 232 460 in the case of [doc_c] \, we're just faking that this +is a selector \, but you better only use atom types here: float \, +grid \, symbol \, pointer \, <atom>.; +#X text 232 844 <atom>: this stands for float \, grid \, symbol \, +or pointer.; +#X obj 97 981 doc_m o0 <none>; +#X obj 97 1001 doc_m o1 <evil>; +#X text 232 761 <gone>: is like none \, except the inlet or outlet +is completely missing.; +#X text 190 37 style guide for comments:; +#X text 190 59 do not say "accepts a grid that will do blah blah" \, +because all methods are accepting messages anyway. but do not say "a +grid that will do blah blah" \, because "grid" is already specified +by the [doc_m]. in some sentence structures it will be clearer to say +"the grid" in some places rather than not.; +#X text 232 508 a meta-selector is a name written within <> marks. +those represent special things that aren't really selectors \, as well +as sets of several selectors (or of many of them).; +#X text 190 142 say "image that will do blah blah" if an image is expected +\, but note that not so many objects really require images as inputs. +; +#X text 192 186 there is also a difference between hard limitations +\, and expected interpretations. for example \, if we say "an rgb image" +and mean it and are right about it \, then only 3-dimensional grids +will be accepted \, and only those with 3 elements in the last dimension +will be accepted \, but it is up to us to think of that last dimension +to represent rgb \, it is up to us to think that this last dimension +is channels \, and that the other dimensions are rows and columns. +however \, to ease the reading \, thinks like "(rows columns 3)" and +"rgb image" will be said even though much of GridFlow itself doesn't +care about it.; +#X connect 9 1 11 0; +#X connect 10 1 12 0; +#X connect 10 1 26 0; +#X connect 10 1 13 0; +#X connect 10 1 14 0; +#X connect 10 1 15 0; +#X connect 10 1 16 0; +#X connect 10 1 17 0; +#X connect 10 1 18 0; +#X connect 10 1 19 0; +#X connect 10 1 20 0; +#X connect 10 1 23 0; diff --git a/externals/gridflow/doc/flow_classes/doc_make-help.pd b/externals/gridflow/doc/flow_classes/doc_make-help.pd new file mode 100644 index 00000000..422e889c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_make-help.pd @@ -0,0 +1,25 @@ +#N canvas 543 148 632 330 10; +#X obj 0 0 doc_h; +#X obj 0 301 doc_f; +#X obj 93 51 doc_make; +#X obj 3 177 doc_i 2; +#X obj 3 261 doc_o 0; +#X obj 14 207 doc_ii 0; +#X obj 14 229 doc_ii 1; +#X obj 14 123 doc_cc 0; +#X obj 97 123 doc_m c0 symbol id; +#X text 232 123 something like c0 \, i0 \, o0 \, just like the \$1 +of [doc_m]; +#X obj 97 207 doc_m i0 bang; +#X obj 97 229 doc_m i1 float; +#X text 232 207 generate subsections; +#X obj 3 93 doc_c 2; +#X obj 14 145 doc_cc 1; +#X obj 97 145 doc_m c1 float; +#X text 232 145 how many subsections; +#X text 232 229 starting position of new subsections; +#X text 169 51 reserved for use by [doc_c] \, [doc_i] and [doc_o]; +#X connect 8 1 9 0; +#X connect 10 1 12 0; +#X connect 11 1 17 0; +#X connect 15 1 16 0; diff --git a/externals/gridflow/doc/flow_classes/doc_o-help.pd b/externals/gridflow/doc/flow_classes/doc_o-help.pd new file mode 100644 index 00000000..4481e7a5 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_o-help.pd @@ -0,0 +1,11 @@ +#N canvas 565 290 632 249 10; +#X obj 0 0 doc_h; +#X obj 0 220 doc_f; +#X text 173 43 an auto-positioning documentation header; +#X obj 3 78 doc_c 1; +#X obj 3 140 doc_i 0; +#X obj 14 108 doc_cc 0; +#X obj 3 180 doc_o 0; +#X obj 97 108 doc_m c0 float; +#X text 232 108 number of outlets in the class being documented; +#X connect 7 1 8 0; diff --git a/externals/gridflow/doc/flow_classes/doc_oo-help.pd b/externals/gridflow/doc/flow_classes/doc_oo-help.pd new file mode 100644 index 00000000..9ad3e905 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/doc_oo-help.pd @@ -0,0 +1,15 @@ +#N canvas 546 210 632 258 10; +#X obj 0 0 doc_h; +#X obj 0 229 doc_f; +#X text 103 209 doc_ii; +#X text 151 209 doc_cc; +#X text 199 209 doc_o; +#X obj 3 89 doc_c 1; +#X obj 3 129 doc_i 0; +#X obj 3 169 doc_o 0; +#X text 129 45 auto-positioning documentation subheader for a specific +outlet.; +#X obj 3 209 doc_also; +#X connect 9 1 2 0; +#X connect 9 1 3 0; +#X connect 9 1 4 0; diff --git a/externals/gridflow/doc/flow_classes/for-help.pd b/externals/gridflow/doc/flow_classes/for-help.pd new file mode 100644 index 00000000..8868e367 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/for-help.pd @@ -0,0 +1,56 @@ +#N canvas 480 175 632 542 10; +#X obj 41 115 print; +#X obj 41 73 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 40 135 should print 10 23 36 49 62 75 88 101; +#X obj 41 91 for 10 114 13; +#X obj 0 0 doc_h; +#X obj 3 179 doc_c 3; +#X obj 3 285 doc_i 3; +#X obj 3 433 doc_o 1; +#X obj 14 315 doc_ii 0; +#X obj 14 379 doc_ii 1; +#X obj 14 401 doc_ii 2; +#X obj 14 463 doc_oo 0; +#X obj 14 209 doc_cc 0; +#X obj 14 231 doc_cc 1; +#X obj 14 253 doc_cc 2; +#X obj 0 513 doc_f; +#X obj 97 463 doc_m o0 float; +#X obj 97 401 doc_m i2 float; +#X obj 97 379 doc_m i1 float; +#X obj 97 335 doc_m i0 float; +#X obj 97 357 doc_m i0 set; +#X obj 97 315 doc_m i0 bang; +#X obj 3 493 doc_also; +#X obj 103 493 #for 0 0 1; +#X obj 175 493 until; +#X obj 97 209 doc_m c0 float; +#X obj 97 231 doc_m c1 float; +#X obj 97 253 doc_m c2 float; +#X text 232 209 from; +#X text 232 231 to; +#X text 232 253 step; +#X text 232 379 same as arg 1; +#X text 232 401 same as arg 2; +#X text 232 357 same as arg 0; +#X text 232 335 same as set \$1 \, bang; +#X text 41 151 note that 114 should not be included!; +#X text 192 42 count from a value to another value. the latter value +is excluded \, such that [for 0 10 1] and for [10 20 1] have no common +outputs.; +#X msg 72 68 set 0; +#X msg 71 42 5; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X connect 17 1 32 0; +#X connect 18 1 31 0; +#X connect 19 1 34 0; +#X connect 20 1 33 0; +#X connect 22 1 23 0; +#X connect 22 1 24 0; +#X connect 25 1 28 0; +#X connect 26 1 29 0; +#X connect 27 1 30 0; +#X connect 37 0 3 0; +#X connect 38 0 3 0; diff --git a/externals/gridflow/doc/flow_classes/foreach-help.pd b/externals/gridflow/doc/flow_classes/foreach-help.pd new file mode 100644 index 00000000..a7f5ff02 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/foreach-help.pd @@ -0,0 +1,19 @@ +#N canvas 635 118 632 307 10; +#X obj 0 0 doc_h; +#X obj 31 51 foreach; +#X obj 3 96 doc_c 0; +#X obj 3 136 doc_i 1; +#X obj 14 166 doc_ii 0; +#X obj 97 166 doc_m i0 list; +#X obj 3 198 doc_o 1; +#X obj 14 228 doc_oo 0; +#X text 232 166 Outputs N messages \, one per list element \, in order. +; +#X obj 0 278 doc_f; +#X obj 97 228 doc_m o0 <atom>; +#X obj 3 258 doc_also; +#X obj 103 258 drip 0; +#X text 183 49 split a message into separate atoms and output them +all.; +#X connect 5 1 8 0; +#X connect 11 1 12 0; diff --git a/externals/gridflow/doc/flow_classes/fps-help.pd b/externals/gridflow/doc/flow_classes/fps-help.pd new file mode 100644 index 00000000..55ab816e --- /dev/null +++ b/externals/gridflow/doc/flow_classes/fps-help.pd @@ -0,0 +1,71 @@ +#N canvas 648 0 632 642 10; +#X obj 0 0 doc_h; +#X obj 27 52 fps; +#X obj 3 94 doc_c 1; +#X obj 14 124 doc_cc 0; +#X obj 97 124 doc_m c0 symbol; +#X obj 3 178 doc_i 1; +#X obj 14 208 doc_ii 0; +#X obj 97 208 doc_m i0 bang; +#X obj 97 291 doc_m i0 detailed; +#X obj 97 335 doc_m i0 mode; +#X obj 97 467 doc_m i0 period; +#X obj 3 521 doc_o 1; +#X obj 14 551 doc_oo 0; +#X obj 97 551 doc_m o0 float; +#X obj 97 573 doc_m o0 list; +#X text 232 423 "logical" uses [timer]; +#X text 232 445 "process" uses [cputime]; +#X text 232 401 "cpu" uses [tsctime]; +#X text 232 335 "real" uses [realtime]; +#X text 232 357 "user" uses [usertime]; +#X text 232 379 "system" uses [systemtime]; +#X obj 3 666 doc_also; +#X obj 103 666 realtime; +#X obj 163 666 usertime; +#X obj 223 666 systemtime; +#X obj 295 666 tsctime; +#X obj 349 666 timer; +#X obj 391 666 cputime; +#X text 232 208 Times at which bangs are received are stored until +a large enough sample of those is accumulated. Large enough is defined +to be whenever the timespan exceeds one second. Then a report is made +through the outlet.; +#X text 232 489 exceptionally \, anything else gets ignored.; +#X text 232 551 (terse) this is the messages-per-second rating.; +#X text 232 573 (detailed) this is: messages-per-second \, followed +by five values of milliseconds-per-message: minimum \, median \, maximum +\, average \, standard deviation.; +#X text 232 621 (the average happens to be simply 1000 divided by the +messages-per-second \, but it is convenient to have it anyway); +#X obj 0 686 doc_f; +#X obj 97 489 doc_m i0 <any>; +#X text 232 146 "detailed": see outlet 0 list; +#X text 232 124 "terse": see outlet 0 float; +#X text 232 313 1: same as arg 0 detailed; +#X text 232 291 0: same as arg 0 terse; +#X text 232 467 minimum time between updates; +#X text 185 52 measures frames per second... or bangs per second in +general; +#X connect 4 1 36 0; +#X connect 4 1 35 0; +#X connect 7 1 28 0; +#X connect 8 1 37 0; +#X connect 8 1 38 0; +#X connect 9 1 18 0; +#X connect 9 1 19 0; +#X connect 9 1 20 0; +#X connect 9 1 17 0; +#X connect 9 1 15 0; +#X connect 9 1 16 0; +#X connect 10 1 39 0; +#X connect 13 1 30 0; +#X connect 14 1 32 0; +#X connect 14 1 31 0; +#X connect 21 1 22 0; +#X connect 21 1 23 0; +#X connect 21 1 24 0; +#X connect 21 1 25 0; +#X connect 21 1 26 0; +#X connect 21 1 27 0; +#X connect 34 1 29 0; diff --git a/externals/gridflow/doc/flow_classes/gf.oneshot-help.pd b/externals/gridflow/doc/flow_classes/gf.oneshot-help.pd new file mode 100644 index 00000000..f207434d --- /dev/null +++ b/externals/gridflow/doc/flow_classes/gf.oneshot-help.pd @@ -0,0 +1,42 @@ +#N canvas 680 22 632 504 10; +#X text 29 34 Like [spigot] \, but turns itself off after each message +\, so you have to turn it on again to making it pass another message. +; +#X msg 195 125 1; +#X obj 171 125 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X msg 127 88 test; +#X obj 127 199 print; +#X floatatom 168 90 5 0 0 0 - - -; +#X floatatom 171 200 5 0 0 0 - - -; +#X text 232 125 <-- both will reset the object; +#X text 232 441 Outputs incoming message.; +#X text 232 366 Resets the object so that the next mesage will be passed +through.; +#X obj 127 159 gf.oneshot; +#X obj 3 301 doc_i 2; +#X obj 0 0 doc_h; +#X obj 14 366 doc_ii 1; +#X obj 14 441 doc_oo 0; +#X obj 3 411 doc_o 1; +#X obj 14 331 doc_ii 0; +#X obj 3 239 doc_c 1; +#X obj 14 269 doc_cc 0; +#X text 232 269 Whether to start open (default: 1); +#X text 232 331 Incoming messages can be Grids \, Symbols \, Integers +\, Lists \, etc.; +#X obj 0 473 doc_f; +#X obj 97 269 doc_m c0 bool; +#X obj 97 366 doc_m i1 bang; +#X obj 97 441 doc_m o0 <any>; +#X obj 97 331 doc_m i0 <any>; +#X connect 1 0 10 1; +#X connect 2 0 10 1; +#X connect 3 0 10 0; +#X connect 5 0 10 0; +#X connect 10 0 4 0; +#X connect 10 0 6 0; +#X connect 22 1 19 0; +#X connect 23 1 9 0; +#X connect 24 1 8 0; +#X connect 25 1 20 0; diff --git a/externals/gridflow/doc/flow_classes/hpgl_find_bbox-help.pd b/externals/gridflow/doc/flow_classes/hpgl_find_bbox-help.pd new file mode 100644 index 00000000..758f6560 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/hpgl_find_bbox-help.pd @@ -0,0 +1,21 @@ +#N canvas 335 118 632 322 10; +#X obj 0 293 doc_f; +#X obj 0 0 doc_h; +#X obj 94 48 hpgl_find_bbox; +#X obj 3 81 doc_c 0; +#X obj 3 121 doc_i 2; +#X obj 3 231 doc_o 1; +#X obj 14 151 doc_ii 0; +#X obj 14 173 doc_ii 1; +#X obj 14 261 doc_oo 0; +#X obj 97 151 doc_m i0 <hpgl>; +#X obj 97 173 doc_m i1 bang; +#X obj 97 261 doc_m o0 grid; +#X text 232 261 (2 2)-grid representing bounding box.; +#X text 232 151 HPGL stream to find the bounding box of.; +#X text 232 173 outputs the bounding box of all coordinates used so +far in PA \, PD \, PU commands. if no such coordinates have been used +so far \, it will output funny nonsense values instead.; +#X connect 9 1 13 0; +#X connect 10 1 14 0; +#X connect 11 1 12 0; diff --git a/externals/gridflow/doc/flow_classes/hpgl_font_render-help.pd b/externals/gridflow/doc/flow_classes/hpgl_font_render-help.pd new file mode 100644 index 00000000..2764f4a5 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/hpgl_font_render-help.pd @@ -0,0 +1,178 @@ +#N canvas 604 0 632 642 10; +#X obj 215 53 until; +#X obj 215 36 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1 +-1; +#X obj 148 36 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 0 1 +; +#X msg 222 77 rewind; +#X obj 312 171 print bogus; +#X obj 112 317 loadbang; +#X obj 220 171 print command; +#X obj 132 256 #store; +#X obj 303 195 loadbang; +#X obj 220 152 spigot; +#X obj 266 153 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0 +1; +#X obj 33 503 fps; +#X obj 306 38 bng 15 250 50 0 empty empty empty 17 7 0 10 -258699 -1 +-1; +#X obj 148 53 metro 1; +#X obj 224 382 #pack; +#X obj 254 366 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 0 256; +#X obj 224 350 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 0 256; +#X obj 280 382 #pack; +#X obj 310 366 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 750 256; +#X obj 280 350 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 1000 256; +#X obj 109 283 gf.oneshot; +#X obj 132 200 t b b; +#X obj 33 522 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-225271 -1 -1 0 256; +#X obj 33 192 gf.oneshot; +#X obj 63 156 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1 +-1; +#X obj 63 173 t b b; +#X obj 98 364 #draw_hpgl; +#X obj 33 484 #out window; +#X obj 130 157 f; +#X obj 155 157 + 1; +#X obj 130 176 sel; +#X text 362 35 TODO: look for bug in [#in grid] code...; +#X obj 215 131 plotter_parser; +#X obj 312 152 spigot; +#X obj 358 153 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0 +1; +#X obj 128 440 # >> 4; +#X msg 112 336 3 # 255 255 255; +#X msg 303 214 480 640 3 #; +#X obj 63 463 #gamma; +#X obj 109 465 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 350 256; +#X obj 128 402 #convolve (3 3 # 0 1 0 1 12 1); +#X obj 128 421 # + 7; +#X obj 98 440 t a; +#X obj 137 384 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0 +1; +#X obj 143 229 t a a; +#X obj 33 444 shunt; +#X obj 72 445 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0 +1; +#X obj 98 383 shunt; +#X obj 221 287 hpgl_find_bbox; +#X obj 311 288 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 221 306 #to_list; +#X msg 221 325 PU \$1 \$2 \, PD \$3 \$2 \$3 \$4 \$1 \$4 \$1 \$2; +#X obj 215 99 #in grid lots_of_text.hpgl \, headerless \, type b; +#X obj 148 72 t b b b b; +#X obj 215 252 hpgl_font_render images/hershey \, spacing 10 \, scaling +0.12 \, rowheight 54 \, wrap 666; +#X obj 155 176 % 16; +#X obj 0 0 doc_h; +#X obj 3 555 doc_c 1; +#X obj 3 617 doc_i 2; +#X obj 3 701 doc_o 1; +#X obj 14 731 doc_oo 0; +#X obj 14 647 doc_ii 0; +#X obj 14 669 doc_ii 1; +#X obj 14 585 doc_cc 0; +#X obj 0 763 doc_f; +#N canvas 0 0 450 300 tests 0; +#X obj 15 242 outlet; +#X msg 53 31 PU 0 10 \, PD 1000 10; +#X msg 64 68 PU 0 0 \, print_from_ascii 116 114 97 98 111 117 108 105 +100 111 110; +#X msg 77 123 PU 50 550 \, print_from_ascii 97 13 10 108 13 10 108 +13 10 244; +#X msg 87 179 PU 0 0 \, LB world; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X restore 241 209 pd tests; +#X obj 97 585 doc_m c0 symbol; +#X text 232 585 font folder; +#X obj 97 647 doc_m i0 <hpgl>; +#X obj 97 731 doc_m o0 <hpgl>; +#X text 232 647 containing LB or print_from_ascii commands; +#X text 232 731 NOT containing LB or print_from_ascii commands anymore +; +#X obj 97 669 doc_m i1 symbol; +#X text 232 669 same as arg 0; +#X connect 0 0 52 0; +#X connect 1 0 0 0; +#X connect 2 0 13 0; +#X connect 3 0 52 0; +#X connect 5 0 36 0; +#X connect 7 0 20 0; +#X connect 8 0 37 0; +#X connect 9 0 6 0; +#X connect 10 0 9 1; +#X connect 11 0 22 0; +#X connect 12 0 3 0; +#X connect 12 0 37 0; +#X connect 13 0 53 0; +#X connect 14 0 26 3; +#X connect 15 0 14 1; +#X connect 16 0 14 0; +#X connect 17 0 26 4; +#X connect 18 0 17 1; +#X connect 19 0 17 0; +#X connect 20 0 26 0; +#X connect 21 0 7 0; +#X connect 21 1 20 1; +#X connect 21 1 28 0; +#X connect 23 0 45 0; +#X connect 24 0 25 0; +#X connect 25 0 7 0; +#X connect 25 1 23 1; +#X connect 26 0 47 0; +#X connect 26 1 21 0; +#X connect 27 0 11 0; +#X connect 28 0 29 0; +#X connect 28 0 30 0; +#X connect 29 0 55 0; +#X connect 30 0 24 0; +#X connect 32 0 9 0; +#X connect 32 0 54 0; +#X connect 32 1 33 0; +#X connect 33 0 4 0; +#X connect 34 0 33 1; +#X connect 35 0 42 0; +#X connect 36 0 26 1; +#X connect 37 0 7 1; +#X connect 38 0 27 0; +#X connect 39 0 38 1; +#X connect 40 0 41 0; +#X connect 41 0 35 0; +#X connect 42 0 44 0; +#X connect 43 0 47 1; +#X connect 44 0 23 0; +#X connect 44 1 7 1; +#X connect 45 0 27 0; +#X connect 45 1 38 0; +#X connect 46 0 45 1; +#X connect 47 0 42 0; +#X connect 47 1 40 0; +#X connect 48 0 50 0; +#X connect 49 0 48 1; +#X connect 50 0 51 0; +#X connect 52 0 32 0; +#X connect 52 1 0 1; +#X connect 52 1 2 0; +#X connect 52 1 24 0; +#X connect 53 0 52 0; +#X connect 53 1 52 0; +#X connect 53 2 52 0; +#X connect 53 3 52 0; +#X connect 54 0 26 2; +#X connect 54 0 48 0; +#X connect 55 0 28 1; +#X connect 65 0 54 0; +#X connect 66 1 67 0; +#X connect 68 1 70 0; +#X connect 69 1 71 0; +#X connect 72 1 73 0; diff --git a/externals/gridflow/doc/flow_classes/hpgl_op-help.pd b/externals/gridflow/doc/flow_classes/hpgl_op-help.pd new file mode 100644 index 00000000..0ed87a04 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/hpgl_op-help.pd @@ -0,0 +1,30 @@ +#N canvas 679 174 632 352 10; +#X obj 0 0 doc_h; +#X obj 0 323 doc_f; +#X obj 93 42 hpgl_op; +#X text 208 40 applies the same numop on all PA \, PD \, PU commands +of the incoming HPGL stream; +#X obj 3 80 doc_c 2; +#X obj 3 164 doc_i 2; +#X obj 3 248 doc_o 1; +#X obj 14 110 doc_cc 0; +#X obj 14 132 doc_cc 1; +#X obj 14 194 doc_ii 0; +#X obj 14 216 doc_ii 1; +#X obj 14 278 doc_oo 0; +#X obj 97 110 doc_m c0 symbol/numop; +#X obj 97 132 doc_m c1 grid; +#X obj 97 194 doc_m i0 <hpgl>; +#X obj 97 278 doc_m o0 <hpgl>; +#X obj 97 216 doc_m i1 grid; +#X text 232 194 incoming HPGL commands; +#X text 232 278 outgoing HPGL commands: same as incoming except coordinates +of PA \, PU \, PD will have been changed.; +#X text 232 216 same as argument 1; +#X text 232 132 same as argument 1 of [#]; +#X text 232 110 same as argument 0 of [#]; +#X connect 12 1 21 0; +#X connect 13 1 20 0; +#X connect 14 1 17 0; +#X connect 15 1 18 0; +#X connect 16 1 19 0; diff --git a/externals/gridflow/doc/flow_classes/hpgl_track_position-help.pd b/externals/gridflow/doc/flow_classes/hpgl_track_position-help.pd new file mode 100644 index 00000000..17e987c6 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/hpgl_track_position-help.pd @@ -0,0 +1,21 @@ +#N canvas 335 118 632 310 10; +#X obj 0 281 doc_f; +#X obj 0 0 doc_h; +#X obj 43 52 hpgl_track_position; +#X obj 3 133 doc_i 2; +#X obj 3 217 doc_o 1; +#X text 188 47 looks at PA \, PD \, PU in a HPGL stream to figure out +what's the current position.; +#X obj 3 93 doc_c 0; +#X obj 14 163 doc_ii 0; +#X obj 14 185 doc_ii 1; +#X obj 14 247 doc_oo 0; +#X obj 97 163 doc_m i0 <hpgl>; +#X obj 97 185 doc_m i1 bang; +#X obj 97 249 doc_m o0 grid; +#X text 232 249 last position in the last PA \, PD or PU.; +#X text 232 185 causes the last position to be output.; +#X text 232 163 a HPGL stream.; +#X connect 10 1 15 0; +#X connect 11 1 14 0; +#X connect 12 1 13 0; diff --git a/externals/gridflow/doc/flow_classes/interval_overlap-help.pd b/externals/gridflow/doc/flow_classes/interval_overlap-help.pd new file mode 100644 index 00000000..8956e701 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/interval_overlap-help.pd @@ -0,0 +1,46 @@ +#N canvas 335 118 632 455 10; +#X obj 0 0 doc_h; +#X obj 0 426 doc_f; +#X obj 77 49 interval_overlap; +#X text 236 45 check whether two 1-D intervals overlap; +#X obj 3 86 doc_c 4; +#X obj 3 214 doc_i 4; +#X obj 3 342 doc_o 1; +#X obj 14 116 doc_cc 0; +#X obj 14 138 doc_cc 1; +#X obj 14 160 doc_cc 2; +#X obj 14 182 doc_cc 3; +#X obj 14 244 doc_ii 0; +#X obj 14 266 doc_ii 1; +#X obj 14 288 doc_ii 2; +#X obj 14 310 doc_ii 3; +#X obj 14 372 doc_oo 0; +#X obj 97 116 doc_m c0 float; +#X obj 97 138 doc_m c1 float; +#X obj 97 160 doc_m c2 float; +#X obj 97 182 doc_m c3 float; +#X obj 97 244 doc_m i0 float; +#X obj 97 266 doc_m i1 float; +#X obj 97 288 doc_m i2 float; +#X obj 97 310 doc_m i3 float; +#X obj 97 372 doc_m o0 float; +#X text 232 372 1: they overlap; +#X text 232 394 0: they don't; +#X text 232 116 start1; +#X text 232 138 end1; +#X text 232 160 start2; +#X text 232 182 end2; +#X text 232 244 same as arg 0; +#X text 232 266 same as arg 1; +#X text 232 310 same as arg 3; +#X text 232 288 same as arg 2; +#X connect 16 1 27 0; +#X connect 17 1 28 0; +#X connect 18 1 29 0; +#X connect 19 1 30 0; +#X connect 20 1 31 0; +#X connect 21 1 32 0; +#X connect 22 1 34 0; +#X connect 23 1 33 0; +#X connect 24 1 25 0; +#X connect 24 1 26 0; diff --git a/externals/gridflow/doc/flow_classes/inv0x2a-help.pd b/externals/gridflow/doc/flow_classes/inv0x2a-help.pd new file mode 100644 index 00000000..c0787d4b --- /dev/null +++ b/externals/gridflow/doc/flow_classes/inv0x2a-help.pd @@ -0,0 +1,78 @@ +#N canvas 584 51 632 545 10; +#X obj 219 121 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 219 163 #in; +#X obj 263 164 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 +1; +#X obj 219 82 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1 +; +#X obj 219 185 shunt 2; +#X text 369 140 image loader; +#X obj 219 101 metro 33.3667; +#X obj 219 238 #out window \, title inv+; +#X text 349 221 Outputs negated image; +#X text 68 221 Outputs initial image; +#X obj 338 188 hsl 128 15 1000 65000 0 0 empty empty empty -2 -6 0 +8 -262144 -1 -1 0 1; +#X obj 187 496 swap; +#X floatatom 34 102 5 0 0 0 - - -; +#X floatatom 57 120 5 0 0 0 - - -; +#X floatatom 34 176 5 0 0 0 - - -; +#X floatatom 105 104 5 0 0 0 - - -; +#X floatatom 149 121 5 0 0 0 - - -; +#X floatatom 105 178 5 0 0 0 - - -; +#X obj 105 147 inv* 10; +#X obj 103 496 inv+; +#X obj 139 496 # inv*; +#X text 8 24 The [inv*] performs an inversion on the data passed to +it. If you consider inlet 0 as the variable "a" and inlet 1 as variable +"b" \, [inv*] performs the operation "b/a" on the values passed to +it.; +#X text 232 464 Outputs the result of the operation "b/a".; +#X obj 263 209 # inv* 4000; +#X text 288 163 inversion; +#X obj 0 0 doc_h; +#X obj 34 145 inv*; +#X obj 3 350 doc_i 2; +#X obj 3 434 doc_o 1; +#X obj 3 288 doc_c 1; +#X obj 3 496 doc_also; +#X obj 14 380 doc_ii 0; +#X obj 14 402 doc_ii 1; +#X obj 14 464 doc_oo 0; +#X obj 14 318 doc_cc 0; +#X text 323 91 numerical operator of the Grid object; +#X obj 97 318 doc_m c0 float; +#X obj 97 380 doc_m i0 float; +#X obj 97 402 doc_m i1 float; +#X obj 97 464 doc_m o0 float; +#X obj 0 516 doc_f; +#X text 232 318 number that the left inlet values will be divided by. +; +#X msg 219 139 load r001.jpg; +#X text 232 380 a: divisor; +#X text 232 402 b: dividend; +#X text 323 78 Another application: inv* as a; +#X connect 0 0 42 0; +#X connect 1 0 4 0; +#X connect 2 0 4 1; +#X connect 3 0 6 0; +#X connect 4 0 7 0; +#X connect 4 1 23 0; +#X connect 6 0 0 0; +#X connect 10 0 23 1; +#X connect 12 0 26 0; +#X connect 13 0 26 1; +#X connect 15 0 18 0; +#X connect 16 0 18 1; +#X connect 18 0 17 0; +#X connect 23 0 7 0; +#X connect 26 0 14 0; +#X connect 30 1 19 1; +#X connect 30 1 20 0; +#X connect 30 1 11 0; +#X connect 36 1 41 0; +#X connect 37 1 43 0; +#X connect 38 1 44 0; +#X connect 39 1 22 0; +#X connect 42 0 1 0; diff --git a/externals/gridflow/doc/flow_classes/inv0x2b-help.pd b/externals/gridflow/doc/flow_classes/inv0x2b-help.pd new file mode 100644 index 00000000..99a05e09 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/inv0x2b-help.pd @@ -0,0 +1,75 @@ +#N canvas 652 22 632 574 10; +#X obj 219 121 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 288 163 negative; +#X obj 219 163 #in; +#X obj 263 164 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 +1; +#X obj 219 82 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1 +; +#X obj 219 185 shunt 2; +#X text 369 140 image loader; +#X msg 219 139 open r001.jpg \, bang; +#X obj 219 101 metro 33.3667; +#X obj 219 238 #out window \, title inv+; +#X text 349 221 Outputs negated image; +#X text 68 221 Outputs initial image; +#X obj 331 192 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X obj 151 525 swap; +#X obj 154 525 swap; +#X text 9 24 The [inv+] performs an inversion on the data passed to +it. If you consider inlet 0 as the variable "a" and inlet 1 as variable +"b" \, [inv+] performs the operation "b-a" on the values passed to +it.; +#X floatatom 34 102 5 0 0 0 - - -; +#X floatatom 57 119 5 0 0 0 - - -; +#X floatatom 34 176 5 0 0 0 - - -; +#X obj 103 525 # inv+; +#X obj 34 146 inv+; +#X obj 263 211 # inv+ 255; +#X text 232 493 Outputs the result of the operation "b-a".; +#X floatatom 105 104 5 0 0 0 - - -; +#X floatatom 149 121 5 0 0 0 - - -; +#X floatatom 105 178 5 0 0 0 - - -; +#X obj 105 145 inv+ 10; +#X obj 3 353 doc_i 2; +#X obj 0 0 doc_h; +#X obj 3 525 doc_also; +#X obj 14 383 doc_ii 0; +#X obj 14 418 doc_ii 1; +#X obj 3 463 doc_o 1; +#X obj 14 493 doc_oo 0; +#X obj 3 278 doc_c 1; +#X obj 14 308 doc_cc 0; +#X obj 97 308 doc_m c0 float; +#X obj 97 383 doc_m i0 float; +#X obj 97 418 doc_m i1 float; +#X obj 97 493 doc_m o0 float; +#X obj 0 545 doc_f; +#X text 232 308 number that the left inlet values will be subtracted +from.; +#X text 232 383 a: the value to subtract; +#X text 232 418 b: the value to subtract from; +#X connect 0 0 7 0; +#X connect 2 0 5 0; +#X connect 3 0 5 1; +#X connect 4 0 8 0; +#X connect 5 0 9 0; +#X connect 5 1 21 0; +#X connect 7 0 2 0; +#X connect 8 0 0 0; +#X connect 12 0 21 1; +#X connect 16 0 20 0; +#X connect 17 0 20 1; +#X connect 20 0 18 0; +#X connect 21 0 9 0; +#X connect 23 0 26 0; +#X connect 24 0 26 1; +#X connect 26 0 25 0; +#X connect 29 1 19 0; +#X connect 29 1 13 0; +#X connect 36 1 41 0; +#X connect 37 1 42 0; +#X connect 38 1 43 0; +#X connect 39 1 22 0; diff --git a/externals/gridflow/doc/flow_classes/list.==-help.pd b/externals/gridflow/doc/flow_classes/list.==-help.pd new file mode 100644 index 00000000..6e38a0a9 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/list.==-help.pd @@ -0,0 +1,23 @@ +#N canvas 653 141 632 343 10; +#X obj 0 0 doc_h; +#X obj 0 314 doc_f; +#X obj 84 56 list.==; +#X text 174 49 compare two lists and tell whether they are exactly +equal to each other.; +#X obj 3 110 doc_c any; +#X obj 14 140 doc_cc any; +#X obj 97 140 doc_m cany <any>; +#X obj 3 172 doc_i 2; +#X obj 3 252 doc_o 1; +#X obj 14 202 doc_ii 0; +#X obj 14 222 doc_ii 1; +#X obj 14 282 doc_oo 0; +#X obj 97 202 doc_m i0 list; +#X obj 97 222 doc_m i1 list; +#X obj 97 282 doc_m o0 float bool; +#X text 232 282 1 if lists are same \, 0 if they are different.; +#X text 206 199 compare this list with the stored list; +#X text 232 140 all arguments together form a list being stored; +#X text 208 223 same as all arguments together; +#X connect 6 1 17 0; +#X connect 14 1 15 0; diff --git a/externals/gridflow/doc/flow_classes/listappend-help.pd b/externals/gridflow/doc/flow_classes/listappend-help.pd new file mode 100644 index 00000000..266738e8 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listappend-help.pd @@ -0,0 +1,49 @@ +#N canvas 624 22 632 469 10; +#X obj 103 420 listappend; +#X obj 175 420 listelement; +#X obj 253 420 listfind; +#X obj 313 420 listflatten; +#X obj 391 420 listprepend; +#X obj 469 420 listreverse; +#X obj 547 420 listsublist; +#X msg 90 110 1 3 hello 8 13; +#X msg 258 107 1 12 a b c d e f g h i j k l; +#X obj 91 184 display; +#X msg 267 128 200 201 202 203 204 205 206; +#X obj 90 152 listappend 1 2 3 4 5 6 7; +#X text 11 35 The [listappend] combines two lists together. It takes +the initial list (List1)(passed as an argument or to inlet 1) and appends +to it the list passed to inlet 0 (List0). [listappend] combines List0 +followed by List1 in a new list.; +#X obj 0 0 doc_h; +#X obj 3 274 doc_i 2; +#X obj 3 358 doc_o 1; +#X obj 3 212 doc_c n; +#X obj 3 420 doc_also; +#X obj 14 304 doc_ii 0; +#X obj 14 326 doc_ii 1; +#X obj 14 388 doc_oo 0; +#X obj 14 242 doc_cc any; +#X obj 97 304 doc_m i0 list; +#X obj 97 326 doc_m i1 list; +#X obj 97 388 doc_m o0 list; +#X obj 0 440 doc_f; +#X obj 97 242 doc_m cany <any>; +#X text 232 242 all arguments together form the list to be appended +; +#X text 232 304 a list that the stored list will be appended to.; +#X text 232 326 same as all args together; +#X connect 7 0 11 0; +#X connect 8 0 11 1; +#X connect 10 0 11 1; +#X connect 11 0 9 0; +#X connect 17 1 0 0; +#X connect 17 1 1 0; +#X connect 17 1 2 0; +#X connect 17 1 3 0; +#X connect 17 1 4 0; +#X connect 17 1 5 0; +#X connect 17 1 6 0; +#X connect 22 1 28 0; +#X connect 23 1 29 0; +#X connect 26 1 27 0; diff --git a/externals/gridflow/doc/flow_classes/listelement-help.pd b/externals/gridflow/doc/flow_classes/listelement-help.pd new file mode 100644 index 00000000..e30f98da --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listelement-help.pd @@ -0,0 +1,39 @@ +#N canvas 604 22 632 523 10; +#X floatatom 262 160 5 0 0 0 - - -; +#X floatatom 281 106 5 0 0 0 - - -; +#X obj 195 158 print; +#X msg 195 81 1 3 hello 8 13; +#X obj 195 129 listelement 0; +#X text 10 32 Outputs one element from a list as selected by an integer. +; +#X text 232 238 An integer acts as an index \, it selects the position +of an element in a list. The selected element is output \, for example: +integer "0" selects and outputs the first element in a list \, integer +"1" selects and outputs the second element in a list \, integers "-1" +selects and outputs the last element in a list.; +#X text 232 387 Changes the value of the argument i.e. changes the +index into the list to get a different element.; +#X obj 0 0 doc_h; +#X obj 3 335 doc_i 2; +#X obj 3 432 doc_o 1; +#X obj 14 365 doc_ii 0; +#X obj 14 387 doc_ii 1; +#X obj 14 462 doc_oo 0; +#X obj 3 208 doc_c 1; +#X obj 14 238 doc_cc 0; +#X obj 97 238 doc_m c0 float/int; +#X obj 97 365 doc_m i0 list; +#X obj 97 387 doc_m i1 float/int; +#X text 232 462 The element selected by the index is sent to the outlet +; +#X obj 0 494 doc_f; +#X text 232 365 a list of numbers or symbols.; +#X obj 97 462 doc_m o0 >any>; +#X connect 1 0 4 1; +#X connect 3 0 4 0; +#X connect 4 0 0 0; +#X connect 4 0 2 0; +#X connect 16 1 6 0; +#X connect 17 1 21 0; +#X connect 18 1 7 0; +#X connect 22 1 19 0; diff --git a/externals/gridflow/doc/flow_classes/listfind-help.pd b/externals/gridflow/doc/flow_classes/listfind-help.pd new file mode 100644 index 00000000..de83d33c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listfind-help.pd @@ -0,0 +1,32 @@ +#N canvas 527 144 632 394 10; +#X obj 0 0 doc_h; +#X obj 0 365 doc_f; +#X obj 44 66 listfind 2 3 5 7 11 13; +#X floatatom 44 48 5 0 0 0 - - -; +#X floatatom 44 85 5 0 0 0 - - -; +#X text 214 54 find the position of an element (float or symbol) in +a list \, or -1 if it is not found. in case of duplicate elements \, +it only tells the position of the first occurrence.; +#X obj 3 113 doc_c any; +#X obj 14 143 doc_cc any; +#X obj 97 143 doc_m cany <any>; +#X obj 3 173 doc_i 1; +#X obj 14 203 doc_ii 0; +#X obj 97 203 doc_m i0 float; +#X obj 97 238 doc_m i0 symbol; +#X text 232 238 look for a symbol.; +#X text 232 203 look for a float. this has the same gotchas as using +[==] and [sel] \, about the precision of numbers.; +#X obj 3 270 doc_o 1; +#X obj 14 300 doc_oo 0; +#X obj 97 300 doc_m o0 float int; +#X text 232 300 nonnegative list index of first occurrence \, or -1 +if not found.; +#X obj 3 345 doc_also; +#X obj 103 345 listread; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 11 1 14 0; +#X connect 12 1 13 0; +#X connect 17 1 18 0; +#X connect 19 1 20 0; diff --git a/externals/gridflow/doc/flow_classes/listflatten-help.pd b/externals/gridflow/doc/flow_classes/listflatten-help.pd new file mode 100644 index 00000000..6f253a92 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listflatten-help.pd @@ -0,0 +1,39 @@ +#N canvas 630 27 632 433 10; +#X obj 103 384 listappend; +#X obj 253 384 listelement; +#X obj 409 384 listfind; +#X obj 547 384 listflatten; +#X obj 175 384 listprepend; +#X obj 331 384 listreverse; +#X obj 469 384 listsublist; +#X obj 225 153 display; +#X obj 224 120 listflatten; +#X msg 209 84 1 (2 (3 4 5) 6 7) 8; +#X obj 210 187 display; +#X obj 0 0 doc_h; +#X obj 3 260 doc_i 1; +#X obj 3 322 doc_o 1; +#X obj 3 220 doc_c 0; +#X obj 3 384 doc_also; +#X obj 14 290 doc_ii 0; +#X obj 14 352 doc_oo 0; +#X obj 97 290 doc_m i0 list; +#X obj 97 352 doc_m o0 list; +#X obj 0 404 doc_f; +#X text 232 290 a (usually) nested list.; +#X text 232 352 Outputs the flattened (not nested) list.; +#X text 7 30 Takes nested lists and places their contents into a single +list in the same order. this is just like removing all parentheses +from the literal and doing nothing else.; +#X connect 8 0 7 0; +#X connect 9 0 8 0; +#X connect 9 0 10 0; +#X connect 15 1 0 0; +#X connect 15 1 4 0; +#X connect 15 1 1 0; +#X connect 15 1 5 0; +#X connect 15 1 2 0; +#X connect 15 1 6 0; +#X connect 15 1 3 0; +#X connect 18 1 21 0; +#X connect 19 1 22 0; diff --git a/externals/gridflow/doc/flow_classes/listlength-help.pd b/externals/gridflow/doc/flow_classes/listlength-help.pd new file mode 100644 index 00000000..32e2512a --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listlength-help.pd @@ -0,0 +1,41 @@ +#N canvas 637 22 632 432 10; +#X text 10 33 The [listlength] outputs the number of elements in the +incoming list.; +#X obj 103 383 listappend; +#X obj 253 383 listelement; +#X obj 409 383 listfind; +#X obj 547 383 listflatten; +#X obj 175 383 listprepend; +#X obj 331 383 listreverse; +#X obj 469 383 listsublist; +#X floatatom 206 160 5 0 0 0 - - -; +#X obj 139 158 print; +#X msg 139 81 1 3 hello 8 13; +#X obj 139 120 listlength; +#X msg 246 96 1 12 a b c d e f g h i j k l; +#X text 232 276 The length of the list passed to the left inlet will +be returned in the outlet.; +#X obj 0 0 doc_h; +#X obj 3 206 doc_c 0; +#X obj 3 246 doc_i 1; +#X obj 3 321 doc_o 1; +#X obj 3 383 doc_also 1; +#X obj 14 276 doc_ii 0; +#X obj 14 351 doc_oo 0; +#X obj 97 276 doc_m i0 list; +#X obj 97 351 doc_m o0 float int; +#X obj 0 403 doc_f; +#X text 232 351 the number of elements in the list.; +#X connect 10 0 11 0; +#X connect 11 0 8 0; +#X connect 11 0 9 0; +#X connect 12 0 11 0; +#X connect 18 1 1 0; +#X connect 18 1 5 0; +#X connect 18 1 2 0; +#X connect 18 1 6 0; +#X connect 18 1 3 0; +#X connect 18 1 7 0; +#X connect 18 1 4 0; +#X connect 21 1 13 0; +#X connect 22 1 24 0; diff --git a/externals/gridflow/doc/flow_classes/listprepend-help.pd b/externals/gridflow/doc/flow_classes/listprepend-help.pd new file mode 100644 index 00000000..c71314af --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listprepend-help.pd @@ -0,0 +1,51 @@ +#N canvas 631 22 632 468 10; +#X obj 103 419 listappend; +#X obj 253 419 listelement; +#X obj 409 419 listfind; +#X obj 547 419 listflatten; +#X obj 175 419 listprepend; +#X obj 331 419 listreverse; +#X obj 469 419 listsublist; +#X msg 92 112 1 3 hello 8 13; +#X msg 260 110 1 12 a b c d e f g h i j k l; +#X obj 93 180 display; +#X msg 269 131 200 201 202 203 204 205 206; +#X obj 92 151 listprepend 1 2 3 4 5 6 7; +#X text 232 387 Outputs the resulting list.; +#X text 232 241 This optional argument can contain the initial list +; +#X text 8 35 The [listprepend] combines two lists together. It takes +the initial list (List1)(passed as an argument or to inlet 1) and appends +the list passed to inlet 0 (List0). [listprepend] combines List1 followed +by List0 in a new list.; +#X obj 0 0 doc_h; +#X obj 3 273 doc_i 2; +#X obj 3 357 doc_o 1; +#X obj 3 211 doc_c n; +#X obj 3 419 doc_also; +#X obj 14 303 doc_ii 0; +#X obj 14 325 doc_ii 1; +#X obj 14 387 doc_oo 0; +#X obj 14 241 doc_cc any; +#X obj 97 303 doc_m i0 list; +#X obj 97 325 doc_m i1 list; +#X obj 97 387 doc_m o0 list; +#X obj 0 439 doc_f; +#X text 232 303 a list to be appended to initial list.; +#X text 232 325 initial list to be appended to.; +#X obj 97 241 doc_m cany <any>; +#X connect 7 0 11 0; +#X connect 8 0 11 1; +#X connect 10 0 11 1; +#X connect 11 0 9 0; +#X connect 19 1 0 0; +#X connect 19 1 4 0; +#X connect 19 1 1 0; +#X connect 19 1 5 0; +#X connect 19 1 2 0; +#X connect 19 1 6 0; +#X connect 19 1 3 0; +#X connect 24 1 28 0; +#X connect 25 1 29 0; +#X connect 26 1 12 0; +#X connect 30 1 13 0; diff --git a/externals/gridflow/doc/flow_classes/listread-help.pd b/externals/gridflow/doc/flow_classes/listread-help.pd new file mode 100644 index 00000000..a970e607 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listread-help.pd @@ -0,0 +1,40 @@ +#N canvas 623 251 632 454 10; +#X obj 0 0 doc_h; +#X obj 0 425 doc_f; +#X floatatom 44 48 5 0 0 0 - - -; +#X floatatom 44 85 5 0 0 0 - - -; +#X obj 3 143 doc_c any; +#X obj 14 173 doc_cc any; +#X obj 97 173 doc_m cany <any>; +#X obj 3 203 doc_i 1; +#X obj 14 233 doc_ii 0; +#X obj 97 233 doc_m i0 float; +#X obj 3 330 doc_o 1; +#X obj 14 360 doc_oo 0; +#X obj 97 360 doc_m o0 float int; +#X text 232 360 nonnegative list index of first occurrence \, or -1 +if not found.; +#X obj 3 405 doc_also; +#X obj 103 405 listread; +#X obj 44 66 listread 2 3 5 7 11 13; +#X text 188 41 like [tabread] \, this outputs an element when given +an index \, but unlike [tabread] \, this uses a list instead of an +array.; +#X obj 44 103 listfind 2 3 5 7 11 13; +#X floatatom 44 122 5 0 0 0 - - -; +#X text 188 88 a [listfind] with the same content cancels the effect +of a [listread] when the input of [listread] is nonnegative and is +smaller than the list's length.; +#X text 232 233 lookup an element. if the index is nonnegative \, then +it must be less than the list length \, else no output will be produced. +if the index is negative \, then it must be greater than or equal to +minus the list length \, and this counts from the end of the list: +-1 will output the last element \, -2 will output the next to last +\, etc.; +#X connect 2 0 16 0; +#X connect 3 0 18 0; +#X connect 9 1 21 0; +#X connect 12 1 13 0; +#X connect 14 1 15 0; +#X connect 16 0 3 0; +#X connect 18 0 19 0; diff --git a/externals/gridflow/doc/flow_classes/listreverse-help.pd b/externals/gridflow/doc/flow_classes/listreverse-help.pd new file mode 100644 index 00000000..f5174d55 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listreverse-help.pd @@ -0,0 +1,13 @@ +#N canvas 659 137 632 262 10; +#X obj 40 40 listreverse; +#X obj 0 0 doc_h; +#X obj 3 73 doc_c 0; +#X obj 3 113 doc_i 1; +#X obj 3 173 doc_o 1; +#X obj 14 143 doc_ii 0; +#X obj 14 203 doc_oo 0; +#X obj 97 143 doc_m i0 list; +#X obj 97 203 doc_m o0 list; +#X text 119 34 Outputs the incoming list \, from last element to first +element.; +#X obj 0 233 doc_f; diff --git a/externals/gridflow/doc/flow_classes/listsublist-help.pd b/externals/gridflow/doc/flow_classes/listsublist-help.pd new file mode 100644 index 00000000..900328f5 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/listsublist-help.pd @@ -0,0 +1,60 @@ +#N canvas 628 22 632 580 10; +#X obj 103 531 listappend; +#X obj 175 531 listelement; +#X obj 253 531 listfind; +#X obj 313 531 listflatten; +#X obj 391 531 listprepend; +#X obj 469 531 listreverse; +#X msg 173 112 1 3 hello 8 13; +#X msg 182 136 1 12 a b c d e f g h i j k l; +#X obj 174 211 display; +#X text 232 486 Outputs the sublist as specified by the inlets or the +arguments.; +#X text 9 33 The [listsublist] outputs consecutive elements of the +list \, as selected by index (inlet 1 or arg 1) and length (inlet 2 +or arg 2). A negative index will start from the end of the list (like +-1 means last element in the list).; +#X floatatom 224 158 5 0 0 0 - - -; +#X obj 0 0 doc_h; +#X obj 3 350 doc_i 3; +#X obj 3 456 doc_o 1; +#X obj 3 253 doc_c 0..2; +#X obj 3 531 doc_also; +#X obj 14 380 doc_ii 0; +#X obj 14 402 doc_ii 1; +#X obj 14 424 doc_ii 2; +#X obj 14 283 doc_cc 0; +#X obj 14 305 doc_cc 1; +#X obj 14 486 doc_oo 0; +#X obj 547 531 listsublist; +#X floatatom 267 158 5 0 0 0 - - -; +#X obj 173 182 listsublist 2 3; +#X text 232 283 The index in the list to start the sublist at.; +#X text 232 305 The number of items wanted from the list starting at +the index specified.; +#X text 232 402 Index (See Argument 0); +#X text 232 424 Number of items (See Argument 1); +#X obj 97 283 doc_m c0 float/int; +#X obj 97 305 doc_m c1 float/int; +#X obj 97 380 doc_m i0 list; +#X obj 97 402 doc_m i1 float int; +#X obj 97 424 doc_m i2 float int; +#X obj 97 486 doc_m o0 list; +#X obj 0 551 doc_f; +#X connect 6 0 25 0; +#X connect 7 0 25 0; +#X connect 11 0 25 1; +#X connect 16 1 0 0; +#X connect 16 1 1 0; +#X connect 16 1 2 0; +#X connect 16 1 3 0; +#X connect 16 1 4 0; +#X connect 16 1 5 0; +#X connect 16 1 23 0; +#X connect 24 0 25 2; +#X connect 25 0 8 0; +#X connect 30 1 26 0; +#X connect 31 1 27 0; +#X connect 33 1 28 0; +#X connect 34 1 29 0; +#X connect 35 1 9 0; diff --git a/externals/gridflow/doc/flow_classes/norecurse-help.pd b/externals/gridflow/doc/flow_classes/norecurse-help.pd new file mode 100644 index 00000000..d0207c97 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/norecurse-help.pd @@ -0,0 +1,16 @@ +#N canvas 335 118 632 297 10; +#X obj 0 0 doc_h; +#X obj 3 80 doc_c; +#X obj 0 268 doc_f; +#X obj 76 48 norecurse; +#X text 237 45 this will stop any control-recursion.; +#X obj 3 120 doc_i 1; +#X obj 3 208 doc_o 1; +#X obj 14 150 doc_ii 0; +#X obj 14 238 doc_oo 0; +#X obj 97 150 doc_m i0 <any>; +#X obj 97 238 doc_m o0 <any>; +#X text 232 150 any incoming message will be copied as-is to the output. +but only if a message is not currently "being sent" by this same object. +thus this prevents any "strange loops".; +#X connect 9 1 11 0; diff --git a/externals/gridflow/doc/flow_classes/parallel_port-help.pd b/externals/gridflow/doc/flow_classes/parallel_port-help.pd new file mode 100644 index 00000000..9cb8916d --- /dev/null +++ b/externals/gridflow/doc/flow_classes/parallel_port-help.pd @@ -0,0 +1,96 @@ +#N canvas 188 22 632 673 10; +#X floatatom 7 380 5 0 0 0 - - -; +#X floatatom 71 348 5 0 0 0 - - -; +#X floatatom 136 323 5 0 0 0 - - -; +#X obj 7 34 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 0 1; +#X text 215 206 * my system resets the owner of the printer port to +'root.lp' so I need to issue as root 'chown myuser.lp'; +#X text 215 50 * you will need : a paper clip (or a 'high tech' solid +core 22-18 awg wire) an led a button; +#X text 215 176 * consult http://en.wikipedia.org/wiki/Parallel_Port +for the pinouts + more; +#X text 215 255 7 6 5 4 3 2 1 0 bit number; +#X text 215 269 9 8 7 6 5 4 3 2 pin number; +#X text 215 237 layout of bit to pin numbers; +#X text 18 32 <-- This will send a 0 or a 1 to the first pin; +#X text 14 243 Will accept values from 0-255; +#X obj 7 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1 +; +#X obj 26 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1 +; +#X obj 45 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1 +; +#X obj 64 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1 +; +#X obj 83 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 1 +; +#X obj 102 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 +1; +#X obj 121 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 +1; +#X obj 140 132 tgl 15 0 empty empty empty 0 -6 0 8 -260818 -1 -1 0 +1; +#X obj 7 229 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-241291 -1 -1 0 256; +#X obj 7 191 #fold +; +#X obj 7 210 #to_float; +#X obj 7 172 # << (0 1 2 3 4 5 6 7); +#X obj 7 153 #pack 8 \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, \, +; +#X text 19 274 takes the port as argument; +#X text 44 -1 The cheapest digital i/o interface; +#X obj 7 293 parallel_port /dev/lp0; +#X obj 7 63 metro 1; +#X text 215 286 Flags : PERRORP (active low) \, PSELECD (active high) +\, POUTPA (active high) \, PACK (active low) \, PBUSY (active high) +; +#X obj 0 0 doc_h; +#X text 215 80 1: break the paper clip in two and connect pin 11 (Busy) +to pin 24 (GND) and pin 12 (Paper-Out) to 25 (GND). Those pins are +normally 1 and grounding them opens the port for messages.; +#X text 215 138 2: connect the led between pins 2 (Data0) and 23 (GND) +; +#X text 215 156 3: connect a button between pin 10 and 22 (GND); +#X obj 3 416 doc_c 1; +#X obj 3 478 doc_i 1; +#X obj 14 508 doc_ii 0; +#X obj 14 446 doc_cc 0; +#X obj 0 644 doc_f; +#X text 177 322 parallel port flags; +#X text 110 348 status (pin 10); +#X text 51 379 reserved for future use; +#X obj 3 540 doc_o 3; +#X obj 14 570 doc_oo 0; +#X obj 14 590 doc_oo 1; +#X obj 14 612 doc_oo 2; +#X obj 97 612 doc_m o2 float; +#X obj 97 590 doc_m o1 float; +#X obj 97 570 doc_m o0 <none>; +#X obj 97 508 doc_m i0 float; +#X obj 97 446 doc_m c0 symbol; +#X text 232 446 device name (Linux parallel port interface); +#X text 232 508 bytes to send; +#X text 232 590 status; +#X text 232 612 flags; +#X connect 3 0 28 0; +#X connect 12 0 24 0; +#X connect 13 0 24 1; +#X connect 14 0 24 2; +#X connect 15 0 24 3; +#X connect 16 0 24 4; +#X connect 17 0 24 5; +#X connect 18 0 24 6; +#X connect 19 0 24 7; +#X connect 20 0 27 0; +#X connect 21 0 22 0; +#X connect 22 0 20 0; +#X connect 23 0 21 0; +#X connect 24 0 23 0; +#X connect 27 0 0 0; +#X connect 27 1 1 0; +#X connect 27 2 2 0; +#X connect 28 0 12 0; +#X connect 46 1 54 0; +#X connect 47 1 53 0; +#X connect 49 1 52 0; +#X connect 50 1 51 0; diff --git a/externals/gridflow/doc/flow_classes/pingpong-help.pd b/externals/gridflow/doc/flow_classes/pingpong-help.pd new file mode 100644 index 00000000..17b44f36 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/pingpong-help.pd @@ -0,0 +1,27 @@ +#N canvas 680 0 632 383 10; +#X obj 0 0 doc_h; +#X obj 3 294 doc_o 1; +#X text 148 44 Transforms linear counting (0 \, 1 \, 2 \, 3 \, 4 \, +...) into a back-and-forth counting (0 \, 1 \, 2 \, 1 \, 0 \, ...) +from 0 to a specified upper bound.; +#X obj 34 47 pingpong; +#X obj 14 324 doc_oo 0; +#X obj 3 109 doc_c 1; +#X obj 3 171 doc_i 2; +#X obj 14 139 doc_cc 0; +#X obj 14 201 doc_ii 0; +#X obj 14 262 doc_ii 1; +#X obj 97 139 doc_m c0 float; +#X obj 97 262 doc_m i1 float; +#X text 232 262 same as arg 0; +#X text 232 139 "top"; +#X obj 97 201 doc_m i0 float; +#X text 232 201 a value to be transformed. If \, for example \, top=10 +\, then values 0 thru 10 are left unchanged \, values 11 thru 19 are +mapped to 9 thru 1 respectively \, and 20 thru 30 are mapped to 0 thru +10 \, and so on.; +#X obj 97 324 doc_m o0 float; +#X obj 0 354 doc_f; +#X connect 10 1 13 0; +#X connect 11 1 12 0; +#X connect 14 1 15 0; diff --git a/externals/gridflow/doc/flow_classes/plotter_control-help.pd b/externals/gridflow/doc/flow_classes/plotter_control-help.pd new file mode 100644 index 00000000..944a0e53 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/plotter_control-help.pd @@ -0,0 +1,79 @@ +#N canvas 576 39 632 605 10; +#X obj 22 162 r foo; +#X msg 427 236 print_from_ascii $*; +#X msg 427 115 print hello_world; +#X msg 154 117 pu; +#X msg 154 165 pd; +#X msg 155 268 sp 0; +#X msg 154 217 pa 120 160; +#X obj 427 187 unix_time; +#X obj 427 167 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 14 318 comport 0 9600; +#X obj 6 192 plotter_control; +#X obj 23 221 print hpgl_commands; +#X obj 427 259 s foo; +#X text 194 117 pen up; +#X text 194 165 pen down; +#X obj 427 137 s foo; +#X text 238 217 move to absolute position; +#N canvas 0 22 450 300 draw_a_rectangle 0; +#X msg 31 156 pu \, sp 0; +#X msg 138 191 pd \, pa \$2 \$1; +#X msg 129 100 sp 5 \, pu \, pa 0 0 \, other si 320 320; +#X obj 115 252 s foo; +#X msg 138 134 0 0 \, 0 1 \, 1 1 \, 1 0 \, 0 0; +#X obj 31 35 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 31 52 t a a a; +#X obj 138 153 # * (110 320); +#X obj 138 172 #to_list; +#X connect 0 0 3 0; +#X connect 1 0 3 0; +#X connect 2 0 3 0; +#X connect 4 0 7 0; +#X connect 5 0 6 0; +#X connect 6 0 0 0; +#X connect 6 1 4 0; +#X connect 6 2 2 0; +#X connect 7 0 8 0; +#X connect 8 0 1 0; +#X restore 427 291 pd draw_a_rectangle; +#X text 74 343 use the comport object to interface to the plotter; +#X obj 155 290 s foo; +#X obj 154 239 s foo; +#X obj 154 187 s foo; +#X obj 154 139 s foo; +#X text 198 270 (0...6) remove/change the pen; +#X obj 0 0 doc_h; +#X obj 3 379 doc_c 0; +#X obj 3 419 doc_i 1; +#X obj 3 494 doc_o 1; +#X obj 14 524 doc_oo 0; +#X obj 14 449 doc_ii 0; +#X text 10 32 This object produces HPGL instructions in ASCII form +that can be sent to the comport object in order to control an HPGL +compatible plotter.; +#X obj 0 576 doc_f; +#X obj 427 211 #to_list; +#X obj 97 449 doc_m i0 <hpgl>; +#X obj 97 524 doc_m o0 float; +#X text 232 524 serialised hpgl (as ascii codes); +#X text 232 449 hpgl stream (note: most other hpgl inlets don't support +lowercase); +#X obj 3 556 doc_also; +#X obj 103 556 plotter_parser; +#X connect 0 0 10 0; +#X connect 1 0 12 0; +#X connect 2 0 15 0; +#X connect 3 0 22 0; +#X connect 4 0 21 0; +#X connect 5 0 19 0; +#X connect 6 0 20 0; +#X connect 7 0 32 0; +#X connect 8 0 7 0; +#X connect 10 0 11 0; +#X connect 32 0 1 0; +#X connect 33 1 36 0; +#X connect 34 1 35 0; +#X connect 37 1 38 0; diff --git a/externals/gridflow/doc/flow_classes/plotter_parser-help.pd b/externals/gridflow/doc/flow_classes/plotter_parser-help.pd new file mode 100644 index 00000000..637d8211 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/plotter_parser-help.pd @@ -0,0 +1,116 @@ +#N canvas 663 22 632 620 10; +#X obj 195 161 plotter_parser; +#X obj 195 63 until; +#X obj 195 46 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1 +-1; +#X obj 128 46 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 0 1 +; +#X msg 202 87 rewind; +#X obj 297 159 print bogus; +#X obj 195 275 loadbang; +#X obj 206 204 print command; +#X obj 127 245 #store; +#X obj 209 233 loadbang; +#X obj 206 185 spigot; +#X obj 252 186 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0 +1; +#X obj 13 330 fps; +#X obj 286 48 bng 15 250 50 0 empty empty empty 17 7 0 10 -258699 -1 +-1; +#X obj 128 63 metro 1; +#X obj 195 109 #in grid plotter_parser_old.pd.hpgl \, headerless \, +type b; +#X obj 326 302 #pack; +#X obj 356 286 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 0 256; +#X obj 326 270 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 -1000 256; +#X obj 326 353 #pack; +#X obj 356 337 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 10333 256; +#X obj 326 321 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 +-241291 -1 -1 7000 256; +#X obj 128 82 t b b; +#X obj 104 282 gf.oneshot; +#X obj 127 226 t b b; +#X obj 13 349 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-225271 -1 -1 0 256; +#X obj 13 282 gf.oneshot; +#X obj 31 149 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1 +-1; +#X obj 31 166 t b b; +#X obj 123 315 #draw_hpgl; +#X obj 13 311 #out window; +#X obj 125 166 f; +#X obj 150 166 + 1; +#X obj 125 185 sel; +#X msg 209 252 600 800 3 b #; +#X msg 195 294 3 b # 255 255 255; +#X obj 150 185 % 8; +#X obj 0 0 doc_h; +#X obj 3 385 doc_c 0; +#X obj 3 425 doc_i 1; +#X obj 3 487 doc_o 2; +#X obj 14 455 doc_ii 0; +#X obj 14 517 doc_oo 0; +#X obj 14 539 doc_oo 1; +#X obj 0 591 doc_f; +#X obj 3 571 doc_also; +#X obj 103 571 plotter_control; +#X obj 97 539 doc_m o1 float; +#X text 232 539 unknown bytes; +#X obj 97 455 doc_m i0 float; +#X obj 97 517 doc_m o0 <hpgl>; +#X text 232 455 bytes that are supposed to form HPGL commands; +#X text 232 517 HPGL commands; +#X connect 0 0 10 0; +#X connect 0 0 29 2; +#X connect 0 1 5 0; +#X connect 1 0 15 0; +#X connect 2 0 1 0; +#X connect 3 0 14 0; +#X connect 4 0 15 0; +#X connect 6 0 35 0; +#X connect 8 0 23 0; +#X connect 8 0 26 0; +#X connect 9 0 34 0; +#X connect 10 0 7 0; +#X connect 11 0 10 1; +#X connect 12 0 25 0; +#X connect 13 0 4 0; +#X connect 13 0 34 0; +#X connect 14 0 22 0; +#X connect 15 0 0 0; +#X connect 15 1 1 1; +#X connect 15 1 3 0; +#X connect 15 1 27 0; +#X connect 16 0 29 3; +#X connect 17 0 16 1; +#X connect 18 0 16 0; +#X connect 19 0 29 4; +#X connect 20 0 19 1; +#X connect 21 0 19 0; +#X connect 22 0 15 0; +#X connect 22 1 15 0; +#X connect 23 0 29 0; +#X connect 24 0 8 0; +#X connect 24 1 23 1; +#X connect 24 1 31 0; +#X connect 26 0 30 0; +#X connect 27 0 28 0; +#X connect 28 0 8 0; +#X connect 28 1 26 1; +#X connect 29 0 8 1; +#X connect 29 1 24 0; +#X connect 30 0 12 0; +#X connect 31 0 32 0; +#X connect 31 0 33 0; +#X connect 32 0 36 0; +#X connect 33 0 27 0; +#X connect 34 0 8 1; +#X connect 35 0 29 1; +#X connect 36 0 31 1; +#X connect 45 1 46 0; +#X connect 47 1 48 0; +#X connect 49 1 51 0; +#X connect 50 1 52 0; diff --git a/externals/gridflow/doc/flow_classes/range-help.pd b/externals/gridflow/doc/flow_classes/range-help.pd new file mode 100644 index 00000000..12415511 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/range-help.pd @@ -0,0 +1,28 @@ +#N canvas 680 0 632 393 10; +#X obj 0 0 doc_h; +#X obj 3 99 doc_c 0..; +#X obj 3 304 doc_o 1..; +#X obj 14 169 doc_ii 0; +#X text 232 169 a value to be sent to one of the outlets. The first +outlet is for values smaller than the first argument \; else the second +outlet is for values smaller than the second argument \; and so on +\; and the last outlet is for values greater or equal to the last argument. +; +#X obj 14 334 doc_oo any; +#X obj 97 334 doc_m oany float; +#X obj 97 169 doc_m i0 float; +#X obj 3 139 doc_i 1..; +#X obj 14 169 doc_ii other; +#X obj 97 270 doc_m iother float; +#X text 232 270 sets the corresponding separator in the separator list. +; +#X obj 0 364 doc_f; +#X obj 256 53 moses 1; +#X obj 164 53 range 1 2 3; +#X text 241 52 =; +#X obj 306 53 moses 2; +#X obj 356 53 moses 3; +#X connect 7 1 4 0; +#X connect 10 1 11 0; +#X connect 13 1 16 0; +#X connect 16 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/receives-help.pd b/externals/gridflow/doc/flow_classes/receives-help.pd new file mode 100644 index 00000000..6284c1f9 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/receives-help.pd @@ -0,0 +1,38 @@ +#N canvas 335 118 632 409 10; +#X obj 0 0 doc_h; +#X obj 0 380 doc_f; +#X obj 3 93 doc_c 0..; +#X obj 14 123 doc_cc 0; +#X obj 14 165 doc_cc other; +#X obj 97 123 doc_m c0 symbol; +#X obj 97 165 doc_m cother symbol; +#X text 232 123 the prefix that is going to be common to all receive-symbols. +if omitted \, the blank symbol will be used (thus no prefix).; +#X text 232 165 the suffix of each receive symbol that will be registered. +; +#X obj 3 195 doc_i 1; +#X obj 3 296 doc_o 2; +#X obj 14 225 doc_ii 0; +#X obj 14 326 doc_oo 0; +#X obj 14 348 doc_oo 1; +#X obj 97 225 doc_m i0 list; +#X text 232 225 list of symbols to register receive-symbols for. they +will be prefixed. sending such a message unregisters all previous receive-symbols +registered by this box (which may be reregistered immediately... if +this is what you're doing); +#X text 232 326 the message received; +#X obj 97 326 doc_m o0 <any>; +#X obj 97 348 doc_m o1 symbol; +#X text 232 348 the receive-symbol that this message was received as. +; +#X obj 85 53 receives \$0- a b c; +#X text 206 52 =; +#X obj 223 54 r \$0-a; +#X obj 265 54 r \$0-b; +#X obj 307 54 r \$0-c; +#X text 356 52 and more; +#X connect 5 1 7 0; +#X connect 6 1 8 0; +#X connect 14 1 15 0; +#X connect 17 1 16 0; +#X connect 18 1 19 0; diff --git a/externals/gridflow/doc/flow_classes/route2-help.pd b/externals/gridflow/doc/flow_classes/route2-help.pd new file mode 100644 index 00000000..c2dceaa5 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/route2-help.pd @@ -0,0 +1,33 @@ +#N canvas 412 190 632 485 10; +#X obj 11 140 route2 blah foo bar; +#X msg 29 39 blah blah blah; +#X msg 29 62 foo 42; +#X msg 29 86 bar 3.14159; +#X obj 140 160 display; +#X obj 97 180 display; +#X obj 54 200 display; +#X obj 12 220 display; +#X msg 29 114 pas rapport; +#X text 176 29 just like [route]; +#X text 177 46 but preserves message as-is; +#X obj 0 0 doc_h; +#X obj 3 253 doc_c n; +#X obj 3 313 doc_i 1; +#X obj 3 373 doc_o n; +#X obj 14 343 doc_ii 0; +#X obj 14 403 doc_oo nonlast; +#X obj 14 426 doc_oo last; +#X obj 14 283 doc_cc any; +#X obj 0 456 doc_f; +#X obj 97 402 doc_m ononlast <any>; +#X obj 97 426 doc_m olast <any>; +#X obj 97 343 doc_m i0 <any>; +#X obj 97 283 doc_m cany symbol; +#X connect 0 0 7 0; +#X connect 0 1 6 0; +#X connect 0 2 5 0; +#X connect 0 3 4 0; +#X connect 1 0 0 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 8 0 0 0; diff --git a/externals/gridflow/doc/flow_classes/seq_fold-help.pd b/externals/gridflow/doc/flow_classes/seq_fold-help.pd new file mode 100644 index 00000000..fd21cebf --- /dev/null +++ b/externals/gridflow/doc/flow_classes/seq_fold-help.pd @@ -0,0 +1,46 @@ +#N canvas 536 114 632 525 10; +#X obj 125 126 seq_fold; +#X msg 125 65 2 \, 3 \, 5 \, 7 \, end; +#X obj 125 93 route end; +#X obj 150 150 +; +#X obj 126 179 display; +#X obj 0 0 doc_h; +#X obj 3 222 doc_c 0; +#X obj 3 262 doc_i 4; +#X obj 14 292 doc_ii 0; +#X obj 14 314 doc_ii 1; +#X obj 14 336 doc_ii 2; +#X obj 14 358 doc_ii 3; +#X obj 3 390 doc_o 3; +#X obj 14 420 doc_oo 0; +#X obj 14 442 doc_oo 1; +#X obj 14 464 doc_oo 2; +#X obj 0 496 doc_f; +#X obj 97 292 doc_m i0 bang; +#X obj 97 314 doc_m i1 <any>; +#X obj 97 336 doc_m i2 <any>; +#X obj 97 358 doc_m i3 <any>; +#X obj 97 420 doc_m o0 <any>; +#X obj 97 442 doc_m o1 <any>; +#X obj 97 464 doc_m o2 <any>; +#X text 232 442 to outside left inlet; +#X text 232 464 to outside right inlet; +#X text 232 420 final result; +#X text 232 358 from outside outlet; +#X text 232 336 seed; +#X text 232 292 output the final result; +#X text 232 314 sequence of values to be folded; +#X connect 0 0 4 0; +#X connect 0 1 3 0; +#X connect 0 2 3 1; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 2 1 0 1; +#X connect 3 0 0 3; +#X connect 17 1 29 0; +#X connect 18 1 30 0; +#X connect 19 1 28 0; +#X connect 20 1 27 0; +#X connect 21 1 26 0; +#X connect 22 1 24 0; +#X connect 23 1 25 0; diff --git a/externals/gridflow/doc/flow_classes/shunt-help.pd b/externals/gridflow/doc/flow_classes/shunt-help.pd new file mode 100644 index 00000000..d2828f23 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/shunt-help.pd @@ -0,0 +1,70 @@ +#N canvas 673 22 632 642 10; +#X floatatom 121 151 5 0 0 0 - - -; +#X floatatom 163 151 5 0 0 0 - - -; +#X floatatom 205 151 5 0 0 0 - - -; +#X floatatom 247 151 5 0 0 0 - - -; +#X floatatom 166 85 5 0 0 0 - - -; +#X obj 210 85 hradio 15 1 0 4 empty empty empty 0 -6 0 8 -260818 -1 +-1 0; +#X text 272 84 <-- select output here; +#X text 65 84 vary this -->; +#X obj 346 119 shunt; +#X text 232 527 The integer passed to inlet 1 determines which outlet +is active.; +#X text 232 602 Outputs incoming message value according to the selector +value.; +#X text 7 29 The [shunt] routes any type of data to its active outlet. +The number of outlets is defined by the argument at creation and the +active outlet is defined by its right most inlet.; +#X obj 0 0 doc_h; +#X obj 3 286 doc_i 2; +#X obj 3 572 doc_o n; +#X obj 14 316 doc_ii 0; +#X obj 14 527 doc_ii 1; +#X obj 14 602 doc_oo any; +#X obj 166 114 shunt 4; +#X text 232 219 Defines the number of outlets desired. If [shunt] is +created without an argument \, it will have 2 outlets.; +#X text 232 254 Defines the initial active outlet.; +#X obj 3 189 doc_c 2; +#X obj 14 254 doc_cc 1; +#X obj 14 219 doc_cc 0; +#X obj 0 647 doc_f; +#X obj 97 219 doc_m c0 float/int; +#X obj 97 254 doc_m c1 float/int; +#X obj 97 527 doc_m i1 float int; +#X obj 97 602 doc_m oany <any>; +#X obj 97 338 doc_m i0 index; +#X obj 97 382 doc_m i0 mode; +#X obj 97 316 doc_m i0 hi; +#X obj 97 360 doc_m i0 lo; +#X text 232 382 -2: going down \, pingpong; +#X text 232 404 -1: going down \, cycling; +#X obj 97 492 doc_m i0 <any>; +#X text 232 426 0: not changing; +#X text 232 448 1: going up \, cycling; +#X text 232 470 2: going up \, pingpong; +#X text 232 338 same as arg 1; +#X text 232 360 min value for cycling and pingpong (default: 0); +#X text 232 316 max value for cycling and pingpong (default: N-1); +#X text 232 492 Incoming message can be Grids \, Symbols \, Floats +\, Lists \, etc.; +#X connect 4 0 18 0; +#X connect 5 0 18 1; +#X connect 18 0 0 0; +#X connect 18 1 1 0; +#X connect 18 2 2 0; +#X connect 18 3 3 0; +#X connect 25 1 19 0; +#X connect 26 1 20 0; +#X connect 27 1 9 0; +#X connect 28 1 10 0; +#X connect 29 1 39 0; +#X connect 30 1 33 0; +#X connect 30 1 34 0; +#X connect 30 1 36 0; +#X connect 30 1 37 0; +#X connect 30 1 38 0; +#X connect 31 1 41 0; +#X connect 32 1 40 0; +#X connect 35 1 42 0; diff --git a/externals/gridflow/doc/flow_classes/systemtime-help.pd b/externals/gridflow/doc/flow_classes/systemtime-help.pd new file mode 100644 index 00000000..7bcdbd51 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/systemtime-help.pd @@ -0,0 +1,33 @@ +#N canvas 463 105 632 422 10; +#X obj 0 0 doc_h; +#X obj 3 187 doc_c; +#X obj 0 393 doc_f; +#X obj 3 373 doc_also; +#X obj 103 373 cputime; +#X obj 157 373 systemtime; +#X text 186 108 What [usertime] and [systemtime] tell you together +should add up to the amount that [cputime] tells you.; +#X obj 3 311 doc_o 1; +#X obj 3 227 doc_i 2; +#X obj 14 257 doc_ii 0; +#X obj 14 279 doc_ii 1; +#X obj 14 341 doc_oo 0; +#X obj 97 257 doc_m i0 bang; +#X obj 97 279 doc_m i1 bang; +#X obj 97 341 doc_m o0 float; +#X text 232 257 reset timer; +#X text 232 279 trigger output; +#X text 232 341 value in milliseconds; +#X text 188 38 While [cputime] gives you the total time spent in the +pd process \, therefore excluding any time spent running any other +programmes \, time spent running pd.tk \, and time spent doing nothing +at all \, [systemtime] also excludes whatever is NOT run in the kernel. +; +#X text 188 142 In C language \, this is the "stime" feature of the +times() command.; +#X obj 61 66 systemtime; +#X connect 3 1 4 0; +#X connect 3 1 5 0; +#X connect 12 1 15 0; +#X connect 13 1 16 0; +#X connect 14 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/tsctime-help.pd b/externals/gridflow/doc/flow_classes/tsctime-help.pd new file mode 100644 index 00000000..e53730a5 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/tsctime-help.pd @@ -0,0 +1,50 @@ +#N canvas 508 124 632 550 10; +#X obj 0 0 doc_h; +#X obj 3 302 doc_c; +#X obj 0 521 doc_f; +#X obj 3 501 doc_also; +#X obj 3 426 doc_o 1; +#X obj 3 342 doc_i 2; +#X obj 14 372 doc_ii 0; +#X obj 14 394 doc_ii 1; +#X obj 14 456 doc_oo 0; +#X obj 97 372 doc_m i0 bang; +#X obj 97 394 doc_m i1 bang; +#X obj 97 456 doc_m o0 float; +#X text 232 372 reset timer; +#X text 232 394 trigger output; +#X obj 103 501 realtime; +#X obj 11 96 tsctime; +#X text 188 38 This is a super-high-resolution version of the [realtime] +class that does not look at the ordinary clock of the operating system +\, and instead uses the clock tick of the CPU itself. However \, if +you have a variable-clock CPU \, this will give you some kind of virtual +time.; +#X msg 50 45 bang; +#X msg 11 45 bang; +#X floatatom 14 122 10 0 0 0 - - -; +#X obj 78 100 realtime; +#X floatatom 78 122 10 0 0 0 - - -; +#X text 190 114 It's also possible that this has some other bugs related +to scaling. However \, even if it gives you really weird values \, +this object will give you very precise values in what is really the +wrong scale.; +#X text 192 171 if you are trying to measure real time with this \, +you should disable any CPU energy saving that may change the CPU's +clock speed. However \, if you want to measure CPU usage \, [tsctime] +is the ONLY of the time-objects to allow you to measure CPU usage reliably +while your clock speed changes.; +#X text 192 255 in assembly language \, [tsctime] is called "RDTSC" +\, and this is where [tsctime] got its name from.; +#X text 232 456 value in "milliseconds" (or lousy imitation thereof... +see intro text above.); +#X connect 3 1 14 0; +#X connect 9 1 12 0; +#X connect 10 1 13 0; +#X connect 11 1 25 0; +#X connect 15 0 19 0; +#X connect 17 0 15 1; +#X connect 17 0 20 1; +#X connect 18 0 15 0; +#X connect 18 0 20 0; +#X connect 20 0 21 0; diff --git a/externals/gridflow/doc/flow_classes/unix_time-help.pd b/externals/gridflow/doc/flow_classes/unix_time-help.pd new file mode 100644 index 00000000..6e499216 --- /dev/null +++ b/externals/gridflow/doc/flow_classes/unix_time-help.pd @@ -0,0 +1,50 @@ +#N canvas 679 22 632 619 10; +#X obj 109 184 unix_time; +#X obj 109 153 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 26 243 #to_list; +#X obj 109 111 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X obj 27 321 display; +#X obj 109 129 metro 500; +#X text 32 302 <-- Ascii format for the date; +#X obj 326 292 display; +#X obj 141 242 display; +#X obj 325 266 display; +#X obj 324 241 sprintf %04d%02d%02d-%02d%02d%02d; +#X obj 0 0 doc_h; +#X obj 3 356 doc_c 0; +#X obj 3 396 doc_i 1; +#X obj 3 471 doc_o 3; +#X obj 14 426 doc_ii 0; +#X obj 14 501 doc_oo 0; +#X obj 14 523 doc_oo 1; +#X obj 14 545 doc_oo 2; +#X text 9 32 This object returns the Unix timestamp. The first outlet +does so with ASCII \, the second in seconds and the third outlet outputs +the fractions of seconds up to 1/100 0 th of a second which is useful +for creating filenames.; +#X text 232 426 A bang at the left inlet will tell [unix_time] to get +the current Unix timestamp and send it to the outlets.; +#X text 232 501 Outputs the time and date in ASCII format.; +#X text 232 523 Outputs the Unix timestamp in seconds.; +#X text 232 545 Outputs the fractions of a second up to 10 microseconds +(?) (actual precision is probably platform-dependent...); +#X obj 97 426 doc_m i0 bang; +#X obj 97 501 doc_m o0 list; +#X obj 97 523 doc_m o1 list; +#X obj 97 545 doc_m o2 list; +#X obj 0 590 doc_f; +#X connect 0 0 2 0; +#X connect 0 1 8 0; +#X connect 0 2 7 0; +#X connect 0 2 10 0; +#X connect 1 0 0 0; +#X connect 2 0 4 0; +#X connect 3 0 5 0; +#X connect 5 0 1 0; +#X connect 10 0 9 0; +#X connect 24 1 20 0; +#X connect 25 1 21 0; +#X connect 26 1 22 0; +#X connect 27 1 23 0; diff --git a/externals/gridflow/doc/flow_classes/usertime-help.pd b/externals/gridflow/doc/flow_classes/usertime-help.pd new file mode 100644 index 00000000..28d52a2c --- /dev/null +++ b/externals/gridflow/doc/flow_classes/usertime-help.pd @@ -0,0 +1,33 @@ +#N canvas 508 124 632 412 10; +#X obj 0 0 doc_h; +#X obj 3 177 doc_c; +#X obj 0 383 doc_f; +#X obj 3 363 doc_also; +#X obj 103 363 cputime; +#X obj 157 363 systemtime; +#X text 186 108 What [usertime] and [systemtime] tell you together +should add up to the amount that [cputime] tells you.; +#X obj 3 301 doc_o 1; +#X obj 3 217 doc_i 2; +#X obj 14 247 doc_ii 0; +#X obj 14 269 doc_ii 1; +#X obj 14 331 doc_oo 0; +#X obj 97 247 doc_m i0 bang; +#X obj 97 269 doc_m i1 bang; +#X obj 97 331 doc_m o0 float; +#X text 232 247 reset timer; +#X text 232 269 trigger output; +#X text 232 331 value in milliseconds; +#X text 188 142 In C language \, this is the "utime" feature of the +times() command.; +#X obj 61 66 usertime; +#X text 188 38 While [cputime] gives you the total time spent in the +pd process \, therefore excluding any time spent running any other +programmes \, time spent running pd.tk \, and time spent doing nothing +at all \, [systemtime] also excludes whatever is run in the kernel. +; +#X connect 3 1 4 0; +#X connect 3 1 5 0; +#X connect 12 1 15 0; +#X connect 13 1 16 0; +#X connect 14 1 17 0; diff --git a/externals/gridflow/doc/flow_classes/var.#-help.pd b/externals/gridflow/doc/flow_classes/var.#-help.pd new file mode 100644 index 00000000..67f921ea --- /dev/null +++ b/externals/gridflow/doc/flow_classes/var.#-help.pd @@ -0,0 +1,21 @@ +#N canvas 335 118 632 407 10; +#X obj 0 0 doc_h; +#X obj 0 378 doc_f; +#X obj 125 58 var.#; +#X text 189 44 somewhat like [#store] but designed to be most especially +to grids what [f] is to floats and [symbol] is to symbols.; +#X obj 3 218 doc_i 2; +#X obj 3 318 doc_o 1; +#X text 191 85 it was named that way because if you alias [f] to [var.f] +\, and [s] to [var.s] \, then [var.\$1] will instantiate an object +of that class-family. (this is related to the PureUnity project); +#X obj 14 348 doc_oo 0; +#X obj 14 288 doc_ii 1; +#X obj 97 348 doc_m o0 grid; +#X obj 97 288 doc_m i1 grid; +#X obj 97 268 doc_m i0 grid; +#X obj 97 248 doc_m i0 bang; +#X obj 14 248 doc_ii 0; +#X obj 14 188 doc_cc 0; +#X obj 3 158 doc_c 0..1; +#X obj 97 188 doc_m c0 grid; diff --git a/externals/gridflow/doc/index.pd b/externals/gridflow/doc/index.pd new file mode 100644 index 00000000..c508cff9 --- /dev/null +++ b/externals/gridflow/doc/index.pd @@ -0,0 +1,329 @@ +#N canvas 0 0 560 480 10 ; +#X obj 140 50 # +; +#X text 180 50 plain numeric operators on grids: + - * / etc; +#X obj -4 82 #apply_colormap_channelwise; +#X text 180 82 ; +#X obj 56 114 #background_model; +#X text 180 114 make mask from learning to distinguish background from foreground; +#X obj 116 146 #border; +#X text 180 146 add padding on sides of a grid; +#X obj 116 178 #camera; +#X text 180 178 control panel for opening cameras; +#X obj 116 210 #cast i; +#X text 180 210 convert grid from one number type to another; +#X obj 104 242 #centroid; +#X text 180 242 find centroid (weighted average) of the coordinates of a grid; +#X obj 116 274 #change; +#X text 180 274 send grid only if different from previous grid; +#X obj 104 306 #checkers; +#X text 180 306 make image of chequered background in two tones of grey; +#X obj 128 338 #clip; +#X text 180 338 min and max; +#X obj 86 370 #cluster_avg; +#X text 180 370 ; +#X obj 4 402 #color; +#X text 180 402 GUI for selecting a colour; +#X obj 104 474 #contrast; +#X text 180 474 adjust contrast in two different ways; +#X obj 104 506 #convolve; +#X text 180 506 compute convolution product of a grid (blur and edge-detection); +#X obj 134 538 #dim; +#X text 180 538 get the size (dimensions) of a grid; +#X obj 80 570 #downscale_by; +#X text 180 570 reduce the size of an image by a whole factor; +#X obj 98 602 #draw_hpgl; +#X text 180 602 ; +#X obj 92 634 #draw_image; +#X text 180 634 picture-in-picture; +#X obj 86 666 #draw_points; +#X text 180 666 (future use); +#X obj 80 698 #draw_polygon; +#X text 180 698 draw polygon in an image; +#X obj 98 730 #draw_rect; +#X text 180 730 draw a rectangle in an image; +#X obj 86 762 #draw_slider; +#X text 180 762 draw a slider in an image; +#X obj 80 794 #edit_polygon; +#X text 180 794 draw a polygon in an image and react to mouse events; +#X obj 56 826 #extract_diagonal; +#X text 180 826 ; +#X obj 128 858 #fade; +#X text 180 858 fade in exponential-decay fashion (linear recurrence); +#X obj 104 890 #fade_lin; +#X text 180 890 fade in piecewise-linear fashion; +#X obj 104 922 #fastblur; +#X text 180 922 speedy shortcut for rectangular blur; +#X obj 134 954 #fft; +#X text 180 954 compute forward or inverse one-or-two-dimensional complex FFT of a grid; +#X obj 104 986 #finished; +#X text 180 986 bang when grid transmission has ended; +#X obj 116 1018 #fold +; +#X text 180 1018 compute the sum of each row \, product of each row, and other similar operations; +#X obj 98 1050 #for 0 4 1; +#X text 180 1050 make a grid from all numbers or coordinates in a certain range; +#X obj 104 1082 #from_pix; +#X text 180 1082 convert pix (GEM) to grid; +#X obj 122 1114 #gamma; +#X text 180 1114 apply gamma correction; +#X obj 122 1146 #grade; +#X text 180 1146 make an index of the sorting of a grid; +#X obj 56 1178 #greyscale_to_rgb; +#X text 180 1178 convert greyscale to RGB; +#X obj 122 1210 #hello; +#X text 180 1210 make 7 colour bars; +#X obj 104 1242 #hueshift; +#X text 180 1242 apply hue shift by rotating the color wheel; +#X obj 116 1274 #import; +#X text 180 1274 convert float \, list, or symbol ASCII codes, to a grid; +#X obj 92 1306 #import_pix; +#X text 180 1306 old name of #from_pix; +#X obj 140 1338 #in; +#X text 180 1338 open file or device for reading or download; +#X obj 122 1370 #inner; +#X text 180 1370 scalar ("dot") product \, matrix product, tensor contraction, image channel remapping, etc.; +#X obj 104 1402 #io.aalib; +#X text 180 1402 open an aalib window; +#X obj 98 1434 #io.dc1394; +#X text 180 1434 open a faiawaia "DC" camera (not DV) using a Linux-compatible OS; +#X obj 110 1466 #io.grid; +#X text 180 1466 read or write a .grid file (GridFlow storage format); +#X obj 110 1498 #io.jpeg; +#X text 180 1498 read or write a .jpeg file; +#X obj 110 1530 #io.mpeg; +#X text 180 1530 read a .mpeg video file; +#X obj 116 1562 #io.png; +#X text 180 1562 read a .png image file; +#X obj 116 1594 #io.ppm; +#X text 180 1594 read or write a .pbm or .pgm or .ppm image file; +#X obj 80 1626 #io.quicktime; +#X text 180 1626 read a .mov video file (or perhaps .avi); +#X obj 116 1658 #io.sdl; +#X text 180 1658 open a SDL window; +#X obj 86 1690 #io.videodev; +#X text 180 1690 open a V4L1 device (Linux interface for video cameras and video digitisers); +#X obj 116 1722 #io.x11; +#X text 180 1722 open a X11 window; +#X obj 128 1754 #join; +#X text 180 1754 join two grids together along any dimension; +#X obj 98 1786 #labelling; +#X text 180 1786 tag connected pixels with region numbers in a two-tone single-channel image; +#X obj 122 1818 #layer; +#X text 180 1818 layer two same-sized images; +#X obj 62 1850 #line_to_polygon; +#X text 180 1850 convert line (as point pair) to polygon (rotated rectangle); +#X obj 92 1882 #make_cross; +#X text 180 1882 make cross-shaped polygon; +#X obj 116 1914 #moment; +#X text 180 1914 find 1st or 2nd order moment (weighted average or variance) of the coordinates of a grid; +#X obj 80 1946 #moment_polar; +#X text 180 1946 convert covariance matrix to the longest and shortest radius of an ellipse and a rotation angle; +#X obj 56 1978 #motion_detection; +#X text 180 1978 frame difference with some options; +#X obj 122 2010 #mouse; +#X text 180 2010 converts mouse events to reports of clicks \, drags, unclicks, motions, and separate buttons and wheel; +#X obj 62 2042 #noise_gate_yuvs; +#X text 180 2042 replaces dark pixels by black pixels in signed YUV images; +#X obj 134 2074 #out; +#X text 180 2074 open file or device for writing or upload; +#X obj 110 2106 #outer +; +#X text 180 2106 apply numeric operator on all possible combinations of elements of one grid with elements of another; +#X obj 128 2138 #pack; +#X text 180 2138 combine floats on separate inlets to make a grid; +#X obj 86 2170 #perspective; +#X text 180 2170 divide each point by its depth; +#X obj 80 2202 #polygon_area; +#X text 180 2202 find area of a polygon in square pixels; +#X obj 44 2234 #polygon_comparator; +#X text 180 2234 find similarity between two polygons independently of rotation \, by radial maps and FFT; +#X obj 50 2266 #polygon_each_edge; +#X text 180 2266 convert a polygon to a sequence of overlapping 2-sided polygons representing edges; +#X obj 68 2298 #polygon_moment; +#X text 180 2298 find average of all points inside of a polygon; +#X obj 50 2330 #polygon_perimetre; +#X text 180 2330 find perimetre of a polygon in pixels (euclidian); +#X obj 44 2362 #polygon_radial_map; +#X text 180 2362 find radius of a polygon from a given origin \, sampled at equally spaced angles; +#X obj 98 2394 #posterize; +#X text 180 2394 quantise pixel values; +#X obj 122 2426 #print; +#X text 180 2426 print to console; +#X obj 122 2458 #ravel; +#X text 180 2458 do #redim so that a grid keeps same number of elements but just one dimension; +#X obj 116 2490 #record; +#X text 180 2490 wrapper around [#in quicktime]; +#X obj 104 2522 #redim (); +#X text 180 2522 change the size of a grid by restreaming contents into a new shape; +#X obj 92 2554 #reinterval; +#X text 180 2554 ; +#X obj 86 2586 #remap_image; +#X text 180 2586 apply object chain on pixel positions to make new image from chosen pixels of the input image; +#X obj 110 2618 #reverse; +#X text 180 2618 mirror image of a grid along a dimension; +#X obj 56 2650 #rgb_to_greyscale; +#X text 180 2650 convert RGB to greyscale; +#X obj 86 2682 #rgb_to_rgba; +#X text 180 2682 convert RGB to RGBA (but setting alpha to 0); +#X obj 92 2714 #rgb_to_yuv; +#X text 180 2714 convert RGB to unsigned YUV; +#X obj 86 2746 #rgba_to_rgb; +#X text 180 2746 convert RGBA to RGB; +#X obj 116 2778 #rotate; +#X text 180 2778 rotate points through two axes (or rotate pixels as points in a colorspace); +#X obj 74 2810 #rotatificator; +#X text 180 2810 make rotation matrix for any two dimensions chosen from a space of any number of dimensions; +#X obj 92 2842 #saturation; +#X text 180 2842 multiply chroma by some value; +#X obj 104 2874 #scale_by; +#X text 180 2874 reduce the size of an image by a whole factor; +#X obj 104 2906 #scale_to; +#X text 180 2906 scale an image from one size to any other size by deleting or duplicating rows and columns; +#X obj 116 2938 #scan +; +#X text 180 2938 compute the cumulative sums of each row \, and other similar operations; +#X obj 104 2970 #seq_fold; +#X text 180 2970 cascade the use of an object on all elements of an incoming grid message sequence; +#X obj 122 3002 #slice; +#X text 180 3002 crop an image using a start point (top left) and end point (bottom right); +#X obj 104 3034 #solarize; +#X text 180 3034 like pingpong but on all pixel values of a grid; +#X obj 128 3066 #sort; +#X text 180 3066 sort each row of a grid; +#X obj 116 3098 #spread; +#X text 180 3098 add noise to each vector (point or pixel); +#X obj 122 3130 #store; +#X text 180 3130 store image in RAM \, in-place picture-in-picture, and make lookups in various ways; +#X obj 128 3162 #swap; +#X text 180 3162 like [swap] for grids; +#X obj 140 3194 #t; +#X text 180 3194 like [t a a] for grids; +#X obj 74 3226 #text_to_image; +#X text 180 3226 use a fixed-width font grid to make a tiling of characters as specified by a text string; +#X obj 104 3258 #to_float; +#X text 180 3258 convert grid to sequence of floats; +#X obj 110 3290 #to_list; +#X text 180 3290 convert grid to list; +#X obj 92 3322 #to_literal; +#X text 180 3322 convert grid to grid-literal (list with a # sign); +#X obj 116 3354 #to_pix; +#X text 180 3354 convert grid to pix (GEM); +#X obj 98 3386 #to_symbol; +#X text 180 3386 convert grid of ASCII codes to symbol; +#X obj 98 3418 #transpose; +#X text 180 3418 swap two dimensions out of any \, in a grid; +#X obj 128 3450 #type; +#X text 180 3450 get a symbol representing the number type of a grid; +#X obj 116 3482 #unpack; +#X text 180 3482 split a grid into floats on separate outlets; +#X obj 116 3514 #window; +#X text 180 3514 a [#out window] that can be toggled to appear and disappear; +#X obj 92 3546 #yuv_to_rgb; +#X text 180 3546 convert unsigned YUV to RGB; +#X obj 134 3578 args; +#X text 180 3578 pick up the arguments of an abstraction instance \, including nested lists and init-messages; +#X obj 128 3610 ascii; +#X text 180 3610 write integer as decimal in ascii codes; +#X obj 98 3642 ascii_to_f; +#X text 180 3642 converts a list of ascii codes to a float; +#X obj 86 3674 class_exists; +#X text 180 3674 figure out whether a class has been loaded by pd; +#X obj 116 3706 cv/#Add; +#X text 180 3706 OpenCV addition; +#X obj 116 3738 cv/#And; +#X text 180 3738 OpenCV bitwise AND; +#X obj 74 3770 cv/#ApproxPoly; +#X text 180 3770 ; +#X obj 62 3802 cv/#CornerHarris; +#X text 180 3802 ; +#X obj 116 3834 cv/#Div; +#X text 180 3834 OpenCV division; +#X obj 92 3866 cv/#Ellipse; +#X text 180 3866 OpenCV draw ellipse; +#X obj 32 3898 cv/#HaarDetectObjects; +#X text 180 3898 OpenCV (future use); +#X obj 98 3930 cv/#Invert; +#X text 180 3930 OpenCV invert matrix; +#X obj 98 3962 cv/#KMeans; +#X text 180 3962 OpenCV K-Means clusteriser; +#X obj 98 3994 cv/#Kalman; +#X text 180 3994 OpenCV (future use); +#X obj 116 4026 cv/#Mul; +#X text 180 4026 OpenCV multiplication; +#X obj 122 4058 cv/#Or; +#X text 180 4058 OpenCV bitwise OR; +#X obj 116 4090 cv/#SVD; +#X text 180 4090 OpenCV singular value decomposition (eigendecomposition); +#X obj 116 4122 cv/#Sub; +#X text 180 4122 OpenCV subtraction; +#X obj 116 4154 cv/#Xor; +#X text 180 4154 OpenCV bitwise XOR; +#X obj 116 4186 display; +#X text 180 4186 print message or grid inside of the patch; +#X obj 122 4218 expect; +#X text 180 4218 currently does like list.== (will do more than that in the future); +#X obj 140 4250 for; +#X text 180 4250 make sequence of float messages for each number in a range with specified stepping; +#X obj 116 4282 foreach; +#X text 180 4282 convert a list to a sequence of atom messages; +#X obj 140 4314 fps; +#X text 180 4314 measure frames per second and make statistics; +#X obj 110 4346 gf.error; +#X text 180 4346 emit error message from the perspective of the current abstraction instance in its parent patch; +#X obj 74 4378 gf.io_generate; +#X text 180 4378 for internal use by #in and #out; +#X obj 98 4410 gf.oneshot; +#X text 180 4410 spigot that shuts itself down after each message; +#X obj 62 4442 gf.suffix_lookup; +#X text 180 4442 find the objectclass corresponding ; +#X obj 74 4474 hpgl_find_bbox; +#X text 180 4474 ; +#X obj 62 4506 hpgl_font_render; +#X text 180 4506 ; +#X obj 116 4538 hpgl_op; +#X text 180 4538 ; +#X obj 44 4570 hpgl_track_position; +#X text 180 4570 ; +#X obj 62 4602 interval_overlap; +#X text 180 4602 ; +#X obj 134 4634 inv*; +#X text 180 4634 swapped /; +#X obj 134 4666 inv+; +#X text 180 4666 swapped -; +#X obj 116 4698 list.==; +#X text 180 4698 test two lists of floats and/or symbols for equality; +#X obj 110 4730 listfind; +#X text 180 4730 find index of an element in a list; +#X obj 92 4762 listflatten; +#X text 180 4762 merge all nested lists together \, depth-first; +#X obj 110 4794 listread; +#X text 180 4794 find element at an index in a list; +#X obj 92 4826 listreverse; +#X text 180 4826 mirror image of a list; +#X obj 104 4858 norecurse; +#X text 180 4858 ; +#X obj 80 4890 parallel_port; +#X text 180 4890 send to and receive from a DB25 parallel port; +#X obj 110 4922 pingpong; +#X text 180 4922 turns value of a counter into a zigzag between 0 and a given value; +#X obj 68 4954 plotter_control; +#X text 180 4954 make HPGL commands; +#X obj 74 4986 plotter_parser; +#X text 180 4986 interprets ascii codes as HPGL commands and output them as messages; +#X obj 128 5018 range; +#X text 180 5018 multiple moses in cascade; +#X obj 86 5050 receives \$0-; +#X text 180 5050 multiple receives with common outlet and other outlet telling the name of intended destination; +#X obj 122 5082 route2; +#X text 180 5082 route messages but keep them intact (does not remove selector); +#X obj 110 5114 seq_fold; +#X text 180 5114 cascade the use of an object on all elements of an incoming message sequence; +#X obj 128 5146 shunt; +#X text 180 5146 demultiplexer: send input to separately specified outlet; +#X obj 98 5178 systemtime; +#X text 180 5178 time spent by process in kernel mode \, as measured by the OS; +#X obj 116 5210 tsctime; +#X text 180 5210 high-resolution real time \, as measured by the CPU; +#X obj 104 5242 unix_time; +#X text 180 5242 real time as measured by the OS \, including date; +#X obj 110 5274 usertime; +#X text 180 5274 time spent by process in non-kernel mode \, as measured by the OS; +#X obj 128 5306 var.#; +#X text 180 5306 like [f] for grids; diff --git a/externals/gridflow/doc/locale/english.tcl b/externals/gridflow/doc/locale/english.tcl new file mode 100644 index 00000000..87324620 --- /dev/null +++ b/externals/gridflow/doc/locale/english.tcl @@ -0,0 +1,210 @@ +# this file will not contain any aliases, just the canonical names + +proc say2 {k v} { + say [lindex $k 0] $v + foreach kk [lrange $k 1 end] {say $k "old name of $k : $v"} +} + +proc say3 {k v} { + set kk [regsub ^# $k @] + say2 [list k kk] $v +} + +category "Stuff" +say # "plain numeric operators on grids: + - * / etc" +say #border "add padding on sides of a grid" +say #cast "convert grid from one number type to another" +say #centroid "find centroid (weighted average) of the coordinates of a grid" +say #convolve "compute convolution product of a grid (blur and edge-detection)" +say #dim "get the size (dimensions) of a grid" +say #downscale_by "reduce the size of an image by a whole factor" +say #draw_image "picture-in-picture" +say #draw_points "(future use)" + +category "Data Conversion" +say #to_literal "convert grid to grid-literal (list with a # sign)" +say #to_float "convert grid to sequence of floats" +say #to_list "convert grid to list" +say #to_pix "convert grid to pix (GEM)" +say #to_symbol "convert grid of ASCII codes to symbol" + +category "Stuff" +say #fft "compute forward or inverse one-or-two-dimensional complex FFT of a grid" +say #finished "bang when grid transmission has ended" +say #fold "compute the sum of each row, product of each row, and other similar operations" +say #for "make a grid from all numbers or coordinates in a certain range" +say #from_pix "convert pix (GEM) to grid" +say #import_pix "old name of #from_pix" +say #grade "make an index of the sorting of a grid" +say #import "convert float, list, or symbol ASCII codes, to a grid" +say #inner "scalar (\"dot\") product, matrix product, tensor contraction, image channel remapping, etc." + +category "Hardware and Files" +say #camera "control panel for opening cameras" +say #io.aalib "open an aalib window" +say #io.dc1394 "open a faiawaia \"DC\" camera (not DV) using a Linux-compatible OS" +say #io.grid "read or write a .grid file (GridFlow storage format)" +say #io.jpeg "read or write a .jpeg file" +say #io.mpeg "read a .mpeg video file" +say #io.png "read a .png image file" +say #io.ppm "read or write a .pbm or .pgm or .ppm image file" +say #io.quicktime "read a .mov video file (or perhaps .avi)" +say #io.sdl "open a SDL window" +say #io.videodev "open a V4L1 device (Linux interface for video cameras and video digitisers)" +say #io.x11 "open a X11 window" +say parallel_port "send to and receive from a DB25 parallel port" +say plotter_control "make HPGL commands" + +category "Stuff" +say #labelling "tag connected pixels with region numbers in a two-tone single-channel image" +say #layer "layer two same-sized images" +say #moment "find 1st or 2nd order moment (weighted average or variance) of the coordinates of a grid" +say #noise_gate_yuvs "replaces dark pixels by black pixels in signed YUV images" +say #outer "apply numeric operator on all possible combinations of elements of one grid with elements of another" +say #pack "combine floats on separate inlets to make a grid" +say #perspective "divide each point by its depth" +say #polygonize "(future use)" +say #print "print to console" +say #redim "change the size of a grid by restreaming contents into a new shape" +say #reverse "mirror image of a grid along a dimension" +say #rotatificator "make rotation matrix for any two dimensions chosen from a space of any number of dimensions" +say #scale_by "reduce the size of an image by a whole factor" +say #scan "compute the cumulative sums of each row, and other similar operations" +say #store "store image in RAM, in-place picture-in-picture, and make lookups in various ways" +say #transpose "swap two dimensions out of any, in a grid" +say #type "get a symbol representing the number type of a grid" +say #unpack "split a grid into floats on separate outlets" +say #join "join two grids together along any dimension" + +category "Lists" +say foreach "convert a list to a sequence of atom messages" +say listfind "find index of an element in a list" +say listread "find element at an index in a list" +say listflatten "merge all nested lists together, depth-first" +say listreverse "mirror image of a list" + +category "Stuff" +say args "pick up the arguments of an abstraction instance, including nested lists and init-messages" +say ascii "write integer as decimal in ascii codes" +say class_exists "figure out whether a class has been loaded by pd" +say display "print message or grid inside of the patch" +say gf.error "emit error message from the perspective of the current abstraction instance in its parent patch" +say gf.suffix_lookup "find the objectclass corresponding " +say range "multiple moses in cascade" +say receives "multiple receives with common outlet and other outlet telling the name of intended destination" +say route2 "route messages but keep them intact (does not remove selector)" +say send39 "backward-compatibility crutch for dynamic patching in pd 0.39" +say shunt "demultiplexer: send input to separately specified outlet" +say systemtime "time spent by process in kernel mode, as measured by the OS" +say tsctime "high-resolution real time, as measured by the CPU" +say unix_time "real time as measured by the OS, including date" +say usertime "time spent by process in non-kernel mode, as measured by the OS" + +category "Stuff" +say #apply_colormap_channelwise "apply color correction tables separately on each channel" +say #background_model "make mask from learning to distinguish background from foreground" +say #change "send grid only if different from previous grid" +say #checkers "make image of chequered background in two tones of grey" +say #clip "min and max" +say #color "GUI for selecting a colour" +say condition "Castonguay rectangle bounds-checking" +say #contrast "adjust contrast in two different ways" +say count "Castonguay counter" +say #fade_lin "fade in piecewise-linear fashion" +say #fade "fade in exponential-decay fashion (linear recurrence)" +say #fastblur "speedy shortcut for rectangular blur" +say for "make sequence of float messages for each number in a range with specified stepping" +say fps "measure frames per second and make statistics" +say #gamma "apply gamma correction" +say gf.io_generate "for internal use by #in and #out" +say #hueshift "apply hue shift by rotating the color wheel" + +say #in "open file or device for reading or download" +say #out "open file or device for writing or upload" + +say inv* "swapped /" +say inv+ "swapped -" + +say #moment_polar "convert covariance matrix to the longest and shortest radius of an ellipse and a rotation angle" +say #motion_detection "frame difference with some options" +say #mouse "converts mouse events to reports of clicks, drags, unclicks, motions, and separate buttons and wheel" +say gf.oneshot "spigot that shuts itself down after each message" +say pingpong "turns value of a counter into a zigzag between 0 and a given value" + +category "Polygons" +say #polygon_area "find area of a polygon in square pixels" +say #polygon_comparator "find similarity between two polygons independently of rotation, by radial maps and FFT" +say #polygon_each_edge "convert a polygon to a sequence of overlapping 2-sided polygons representing edges" +say #polygon_moment "find average of all points inside of a polygon" +say #polygon_perimetre "find perimetre of a polygon in pixels (euclidian)" +say #polygon_radial_map "find radius of a polygon from a given origin, sampled at equally spaced angles" +say #line_to_polygon "convert line (as point pair) to polygon (rotated rectangle)" +say #draw_rect "draw a rectangle in an image" +say #draw_slider "draw a slider in an image" +say #edit_polygon "draw a polygon in an image and react to mouse events" +say #make_cross "make cross-shaped polygon" +say #draw_polygon "draw polygon in an image" + +category "Stuff" +say #posterize "quantise pixel values" +say #ravel "do #redim so that a grid keeps same number of elements but just one dimension" +say #record "wrapper around \[#in quicktime\]" +say #remap_image "apply object chain on pixel positions to make new image from chosen pixels of the input image" +say #rotate "rotate points through two axes (or rotate pixels as points in a colorspace)" +say #saturation "multiply chroma by some value" +say #scale_to "scale an image from one size to any other size by deleting or duplicating rows and columns" +say #seq_fold "cascade the use of an object on all elements of an incoming grid message sequence" +say seq_fold "cascade the use of an object on all elements of an incoming message sequence" +say #slice "crop an image using a start point (top left) and end point (bottom right)" +say #solarize "like pingpong but on all pixel values of a grid" +say #sort "sort each row of a grid" +say #spread "add noise to each vector (point or pixel)" +say #swap "like \[swap\] for grids" +say #text_to_image "use a fixed-width font grid to make a tiling of characters as specified by a text string" +say #t "like \[t a a\] for grids" +say var.# "like \[f\] for grids" + +category "Colorspace Conversion" +say #rgb_to_yuv "convert RGB to unsigned YUV" +say #yuv_to_rgb "convert unsigned YUV to RGB" +say #rgb_to_rgba "convert RGB to RGBA (but setting alpha to 0)" +say #rgba_to_rgb "convert RGBA to RGB" +say #greyscale_to_rgb "convert greyscale to RGB" +say #rgb_to_greyscale "convert RGB to greyscale" + +category "OpenCV" +say cv/#Add "OpenCV addition" +say cv/#Div "OpenCV division" +say cv/#Mul "OpenCV multiplication" +say cv/#Sub "OpenCV subtraction" +say cv/#And "OpenCV bitwise AND" +say cv/#Or "OpenCV bitwise OR" +say cv/#Xor "OpenCV bitwise XOR" +say cv/#Invert "OpenCV invert matrix" +say cv/#SVD "OpenCV singular value decomposition (eigendecomposition)" +say cv/#Ellipse "OpenCV draw ellipse" +say cv/#KMeans "OpenCV K-Means clusteriser" +say cv/#HaarDetectObjects "OpenCV (future use)" +say cv/#Kalman "OpenCV (future use)" +say cv/#ApproxPoly "" +say cv/#CornerHarris "" + +category "Stuff" +say ascii_to_f "converts a list of ascii codes to a float" +say plotter_parser "interprets ascii codes as HPGL commands and output them as messages" +say list.== "test two lists of floats and/or symbols for equality" +say expect "currently does like list.== (will do more than that in the future)" +say #hello "make 7 colour bars" +say #window "a \[#out window\] that can be toggled to appear and disappear" + +say #apply_colormap_channelwise "" +say #cluster_avg "" +say #draw_hpgl "" +say #extract_diagonal "" +say #reinterval "" +say hpgl_find_bbox "" +say hpgl_font_render "" +say hpgl_op "" +say hpgl_track_position "" +say interval_overlap "" +say norecurse "" diff --git a/externals/gridflow/doc/make_index.tcl b/externals/gridflow/doc/make_index.tcl new file mode 100644 index 00000000..8b95003e --- /dev/null +++ b/externals/gridflow/doc/make_index.tcl @@ -0,0 +1,29 @@ +proc say {k v} {set ::say($k) $v} +proc category {k} {} +source locale/english.tcl +puts "#N canvas 0 0 560 480 10 ;" +set y 50 +foreach k [lsort [array names ::say *]] { + set v $::say($k) + if {$k == "#"} {set k "# +"} + if {$k == "#fold"} {set k "#fold +"} + if {$k == "#scan"} {set k "#scan +"} + if {$k == "#outer"} {set k "#outer +"} + if {$k == "#cast"} {set k "#cast i"} + if {$k == "#for"} {set k "#for 0 4 1"} + if {$k == "#redim"} {set k "#redim ()"} + if {$k == "receives"} {set k "receives \$0-"} + if {$k == "send39"} {set k "send39 \$0-patchname"} + set w [string length $k] + regsub "\\$" $k "\\$" k + if {$w<3} {set w 3} + set w [expr {$w*6+2}] + if {$k == "#color"} {set w 156} + puts "#X obj [expr 160-$w] $y $k;" + regsub "," $v " \\, " v + regsub ";" $v " \\; " v + regsub "\\$" $v "\\$" v + puts "#X text 180 $y $v;" + if {$k == "#color"} {incr y 40} + incr y 32 +} diff --git a/externals/gridflow/doc/moulinette.tcl b/externals/gridflow/doc/moulinette.tcl new file mode 100644 index 00000000..952459b3 --- /dev/null +++ b/externals/gridflow/doc/moulinette.tcl @@ -0,0 +1,215 @@ +#!/usr/bin/env tclsh + +proc mset {vars list} {uplevel 1 "foreach {$vars} {$list} {break}"} +proc p {text} {write [list #X text 10 $::y $text]; incr ::y 60} +proc write {list} { + set v [join $list " "] + regsub -all "," $v " \\, " v + regsub -all ";" $v " \\; " v + regsub -all "\\$" $v "\\$" v + puts $::fh "$v;" +} +set oid 0 +proc obj {args} {write [concat [list #X obj ] $args]; incr ::oid} +proc msg {args} {write [concat [list #X msg ] $args]; incr ::oid} +proc text {args} {write [concat [list #X text] $args]; incr ::oid} + +set fh [open numop.pd w] +write [list #N canvas 0 0 1024 768 10] +set y 0 +set row 0 +set msgboxes {} +set col1 96 +set col2 512 +set col3 768 +set col4 1024 +set rowsize 32 + +obj 0 $y cnv 15 $col4 30 empty empty empty 20 12 0 14 20 -66577 0 +text 10 $y op name +text $col1 $y description +text $col2 $y "effect on pixels" +text $col3 $y "effect on coords" +incr y 32 + +# onpixels = meaning in pixel context (pictures, palettes) +# oncoords = meaning in spatial context (indexmaps, polygons) + +# for vecops, the two analogy-columns were labelled: +# meaning in geometric context (indexmaps, polygons, in which each complex number is a point) +# meaning in spectrum context (FFT) in which each number is a (cosine,sine) pair +proc op {op desc {extra1 ""} {extra2 ""}} { + global y + if {$::row&1} {set bg -233280} {set bg -249792} + obj 0 $y cnv 15 $::col4 [expr $::rowsize-2] empty empty empty 20 12 0 14 $bg -66577 0 + lappend ::msgboxes $::oid + msg 10 $y op $op + text $::col1 $y $desc + if {$extra1 != ""} {text $::col2 $y $extra1} + if {$extra2 != ""} {text $::col3 $y $extra2} + incr ::row + incr ::y $::rowsize +} + +proc draw_columns {} { + obj [expr $::col1-1] 0 cnv 0 0 $::y empty empty empty -1 12 0 14 0 -66577 0 + obj [expr $::col2-1] 0 cnv 0 0 $::y empty empty empty -1 12 0 14 0 -66577 0 + obj [expr $::col3-1] 0 cnv 0 0 $::y empty empty empty -1 12 0 14 0 -66577 0 +} + +proc numbertype {op desc {extra1 ""} {extra2 ""}} {op $op $desc $extra1 $extra2} + +set sections {} +proc section {desc} { + lappend ::sections [list $::y $desc] + incr ::y 20 +} + +section {numops} +op {ignore} { A } {no effect} {no effect} +op {put} { B } {replace by} {replace by} +op {+} { A + B } {brightness, crossfade} {move, morph} +op {-} { A - B } {brightness, motion detection} {move, motion detection} +op {inv+} { B - A } {negate then contrast} {180 degree rotate then move} +op {*} { A * B } {contrast} {zoom out} +op {/} { A / B, rounded towards zero } {contrast} {zoom in} +op {div} { A / B, rounded downwards } {contrast} {zoom in} +op {inv*} { B / A, rounded towards zero } +op {swapdiv} { B / A, rounded downwards } +op {%} { A % B, modulo (goes with div) } {--} {tile} +op {swap%} { B % A, modulo (goes with div) } +op {rem} { A % B, remainder (goes with /) } +op {swaprem} { B % A, remainder (goes with /) } +op {gcd} {greatest common divisor} +op {lcm} {least common multiple} +op {|} { A or B, bitwise } {bright munchies} {bottomright munchies} +op {^} { A xor B, bitwise } {symmetric munchies (fractal checkers)} {symmetric munchies (fractal checkers)} +op {&} { A and B, bitwise } {dark munchies} {topleft munchies} +op {<<} { A * (2**(B % 32)), which is left-shifting } {like *} {like *} +op {>>} { A / (2**(B % 32)), which is right-shifting } {like /,div} {like /,div} +op {||} { if A is zero then B else A } +op {&&} { if A is zero then zero else B} +op {min} { the lowest value in A,B } {clipping} {clipping (of individual points)} +op {max} { the highest value in A,B } {clipping} {clipping (of individual points)} +op {cmp} { -1 when A<B; 0 when A=B; 1 when A>B. } +op {==} { is A equal to B ? 1=true, 0=false } +op {!=} { is A not equal to B ? } +op {>} { is A greater than B ? } +op {<=} { is A not greater than B ? } +op {<} { is A less than B ? } +op {>=} {is A not less than B ? } +op {sin*} { B * sin(A) in centidegrees } {--} {waves, rotations} +op {cos*} { B * cos(A) in centidegrees } {--} {waves, rotations} +op {atan} { arctan(A/B) in centidegrees } {--} {find angle to origin (part of polar transform)} +op {tanh*} { B * tanh(A) in centidegrees } {smooth clipping} {smooth clipping (of individual points), neural sigmoid, fuzzy logic} +op {log*} { B * log(A) (in base e) } +op {gamma} { floor(pow(a/256.0,256.0/b)*256.0) } {gamma correction} +op {**} { A**B, that is, A raised to power B } {gamma correction} +op {abs-} { absolute value of (A-B) } +op {rand} { randomly produces a non-negative number below A } +op {sqrt} { square root of A, rounded downwards } +op {sq-} { (A-B) times (A-B) } +op {avg} { (A+B)/2 } +op {hypot} { distance function: square root of (A*A+B*B) } +op {clip+} { like A+B but overflow causes clipping instead of wrapping around (coming soon) } +op {clip-} { like A-B but overflow causes clipping instead of wrapping around (coming soon) } +op {erf*} { integral of e^(-x*x) dx ... (coming soon; what ought to be the scaling factor?) } +op {weight} { number of "1" bits in an integer} +op {sin} {sin(A-B) in radians, float only} +op {cos} {cos(A-B) in radians, float only} +op {atan2} {atan2(A,B) in radians, float only} +op {tanh} {tanh(A-B) in radians, float only} +op {exp} {exp(A-B) in radians, float only} +op {log} {log(A-B) in radians, float only} + +section {vecops for complex numbers} +op {C.* } {A*B} +op {C.*conj} {A*conj(B)} +op {C./ } {A/B} +op {C./conj} {A/conj(B)} +op {C.sq- } {(A-B)*(A-B)} +op {C.abs- } {abs(A-B)} +op {C.sin } {sin(A-B)} +op {C.cos } {cos(A-B)} +op {C.tanh } {tanh(A-B)} +op {C.exp } {exp(A-B)} +op {C.log } {log(A-B)} + +#section {vecops for other things} +#op {cart2pol} +#op {pol2cart} + +incr y 10 +set outletid $oid +obj 10 $y outlet +incr y 20 + +foreach msgbox $msgboxes {write [list #X connect $msgbox 0 $outletid 0]} + +draw_columns + +foreach section $sections { + mset {y1 desc} $section + obj 0 $y1 cnv 15 $::col4 18 empty empty empty 20 12 0 14 -248881 -66577 0 + text 10 $y1 $desc +} + +p { + note: a centidegree is 0.01 degree. There are 36000 centidegrees in a circle. + Some angle operators use centidegrees, while some others use radians. To + convert degrees into centidegrees, multiply by 100. + To convert degrees into radians, divide by 57.2957 . + Thus, to convert centidegrees into radians, divide by 5729.57 . +} + +close $fh +set fh [open numtype.pd w] +write [list #N canvas 0 0 1024 768 10] +set y 0 +set row 0 +set oid 0 +set col1 192 +set col2 384 +set col3 608 +set col4 1024 +set rowsize 64 + +obj 0 $y cnv 15 $col4 30 empty empty empty 20 12 0 14 20 -66577 0 +text 10 $y op names +text $col1 $y range +text $col2 $y precision +text $col3 $y description +incr y 32 + +numbertype {b u8 uint8} {0 to 255} {1} { + unsigned 8-bit integer. this is the usual size of numbers taken from files and cameras, and + written to files and to windows. (however #in converts to int32 unless otherwise specified.)} +numbertype {s i16 int16} {-32768 to 32767} {1} +numbertype {i i32 int32} {-(1<<31) to (1<<31)-1} {1} { + signed 32-bit integer. this is used by default throughout GridFlow. +} +numbertype {l i64 int64} {-(1<<63) to (1<<63)-1} {1} +numbertype {f f32 float32} {-(1<<128) to (1<<128)} {23 bits or 0.000012%} +numbertype {d f64 float64} {-(1<<2048) to (1<<2048)} {52 bits or 0.000000000000022%} + +draw_columns + +p {High-performance computation requires precise and quite peculiar + definitions of numbers and their representation.} +p {Inside most programs, numbers are written down as strings of + bits. A bit is either zero or one. Just like the decimal system + uses units, tens, hundreds, the binary system uses units, twos, + fours, eights, sixteens, and so on, doubling every time.} +p {One notation, called integer allows for only integer values to be + written (no fractions). when it is unsigned, no negative values may + be written. when it is signed, one bit indicates whether the number + is positive or negative. Integer storage is usually fixed-size, so you have + bounds on the size of numbers, and if a result is too big it "wraps around", truncating the biggest + bits.} +p {Another notation, called floating point (or float) stores numbers using + a fixed number of significant digits, and a scale factor that allows for huge numbers + and tiny fractions at once. Note that 1/3 has periodic digits, but even 0.1 has periodic digits, + in binary coding; so expect some slight roundings; the precision offered should be + sufficient for most purposes. Make sure the errors of rounding don't accumulate, though.} + +close $fh diff --git a/externals/gridflow/doc/numop.pd b/externals/gridflow/doc/numop.pd new file mode 100644 index 00000000..c1d8efbf --- /dev/null +++ b/externals/gridflow/doc/numop.pd @@ -0,0 +1,327 @@ +#N canvas 0 0 1024 768 10; +#X obj 0 0 cnv 15 1024 30 empty empty empty 20 12 0 14 20 -66577 0; +#X text 10 0 op name; +#X text 96 0 description; +#X text 512 0 effect on pixels; +#X text 768 0 effect on coords; +#X obj 0 52 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 52 op ignore; +#X text 96 52 A ; +#X text 512 52 no effect; +#X text 768 52 no effect; +#X obj 0 84 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 84 op put; +#X text 96 84 B ; +#X text 512 84 replace by; +#X text 768 84 replace by; +#X obj 0 116 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 116 op +; +#X text 96 116 A + B ; +#X text 512 116 brightness \, crossfade; +#X text 768 116 move \, morph; +#X obj 0 148 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 148 op -; +#X text 96 148 A - B ; +#X text 512 148 brightness \, motion detection; +#X text 768 148 move \, motion detection; +#X obj 0 180 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 180 op inv+; +#X text 96 180 B - A ; +#X text 512 180 negate then contrast; +#X text 768 180 180 degree rotate then move; +#X obj 0 212 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 212 op *; +#X text 96 212 A * B ; +#X text 512 212 contrast; +#X text 768 212 zoom out; +#X obj 0 244 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 244 op /; +#X text 96 244 A / B \, rounded towards zero ; +#X text 512 244 contrast; +#X text 768 244 zoom in; +#X obj 0 276 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 276 op div; +#X text 96 276 A / B \, rounded downwards ; +#X text 512 276 contrast; +#X text 768 276 zoom in; +#X obj 0 308 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 308 op inv*; +#X text 96 308 B / A \, rounded towards zero ; +#X obj 0 340 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 340 op swapdiv; +#X text 96 340 B / A \, rounded downwards ; +#X obj 0 372 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 372 op %; +#X text 96 372 A % B \, modulo (goes with div) ; +#X text 512 372 --; +#X text 768 372 tile; +#X obj 0 404 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 404 op swap%; +#X text 96 404 B % A \, modulo (goes with div) ; +#X obj 0 436 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 436 op rem; +#X text 96 436 A % B \, remainder (goes with /) ; +#X obj 0 468 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 468 op swaprem; +#X text 96 468 B % A \, remainder (goes with /) ; +#X obj 0 500 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 500 op gcd; +#X text 96 500 greatest common divisor; +#X obj 0 532 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 532 op lcm; +#X text 96 532 least common multiple; +#X obj 0 564 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 564 op |; +#X text 96 564 A or B \, bitwise ; +#X text 512 564 bright munchies; +#X text 768 564 bottomright munchies; +#X obj 0 596 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 596 op ^; +#X text 96 596 A xor B \, bitwise ; +#X text 512 596 symmetric munchies (fractal checkers); +#X text 768 596 symmetric munchies (fractal checkers); +#X obj 0 628 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 628 op &; +#X text 96 628 A and B \, bitwise ; +#X text 512 628 dark munchies; +#X text 768 628 topleft munchies; +#X obj 0 660 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 660 op <<; +#X text 96 660 A * (2**(B % 32)) \, which is left-shifting ; +#X text 512 660 like *; +#X text 768 660 like *; +#X obj 0 692 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 692 op >>; +#X text 96 692 A / (2**(B % 32)) \, which is right-shifting ; +#X text 512 692 like / \, div; +#X text 768 692 like / \, div; +#X obj 0 724 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 724 op ||; +#X text 96 724 if A is zero then B else A ; +#X obj 0 756 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 756 op &&; +#X text 96 756 if A is zero then zero else B; +#X obj 0 788 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 788 op min; +#X text 96 788 the lowest value in A \, B ; +#X text 512 788 clipping; +#X text 768 788 clipping (of individual points); +#X obj 0 820 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 820 op max; +#X text 96 820 the highest value in A \, B ; +#X text 512 820 clipping; +#X text 768 820 clipping (of individual points); +#X obj 0 852 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 852 op cmp; +#X text 96 852 -1 when A< \; B \; 0 when A=B \; 1 when A> \; B. ; +#X obj 0 884 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 884 op ==; +#X text 96 884 is A equal to B ? 1=true \, 0=false ; +#X obj 0 916 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 916 op !=; +#X text 96 916 is A not equal to B ? ; +#X obj 0 948 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 948 op >; +#X text 96 948 is A greater than B ? ; +#X obj 0 980 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 980 op <=; +#X text 96 980 is A not greater than B ? ; +#X obj 0 1012 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1012 op <; +#X text 96 1012 is A less than B ? ; +#X obj 0 1044 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1044 op >=; +#X text 96 1044 is A not less than B ? ; +#X obj 0 1076 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1076 op sin*; +#X text 96 1076 B * sin(A) in centidegrees ; +#X text 512 1076 --; +#X text 768 1076 waves \, rotations; +#X obj 0 1108 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1108 op cos*; +#X text 96 1108 B * cos(A) in centidegrees ; +#X text 512 1108 --; +#X text 768 1108 waves \, rotations; +#X obj 0 1140 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1140 op atan; +#X text 96 1140 arctan(A/B) in centidegrees ; +#X text 512 1140 --; +#X text 768 1140 find angle to origin (part of polar transform); +#X obj 0 1172 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1172 op tanh*; +#X text 96 1172 B * tanh(A) in centidegrees ; +#X text 512 1172 smooth clipping; +#X text 768 1172 smooth clipping (of individual points) \, neural sigmoid \, fuzzy logic; +#X obj 0 1204 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1204 op log*; +#X text 96 1204 B * log(A) (in base e) ; +#X obj 0 1236 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1236 op gamma; +#X text 96 1236 floor(pow(a/256.0 \, 256.0/b)*256.0) ; +#X text 512 1236 gamma correction; +#X obj 0 1268 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1268 op **; +#X text 96 1268 A**B \, that is \, A raised to power B ; +#X text 512 1268 gamma correction; +#X obj 0 1300 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1300 op abs-; +#X text 96 1300 absolute value of (A-B) ; +#X obj 0 1332 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1332 op rand; +#X text 96 1332 randomly produces a non-negative number below A ; +#X obj 0 1364 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1364 op sqrt; +#X text 96 1364 square root of A \, rounded downwards ; +#X obj 0 1396 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1396 op sq-; +#X text 96 1396 (A-B) times (A-B) ; +#X obj 0 1428 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1428 op avg; +#X text 96 1428 (A+B)/2 ; +#X obj 0 1460 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1460 op hypot; +#X text 96 1460 distance function: square root of (A*A+B*B) ; +#X obj 0 1492 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1492 op clip+; +#X text 96 1492 like A+B but overflow causes clipping instead of wrapping around (coming soon) ; +#X obj 0 1524 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1524 op clip-; +#X text 96 1524 like A-B but overflow causes clipping instead of wrapping around (coming soon) ; +#X obj 0 1556 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1556 op erf*; +#X text 96 1556 integral of e^(-x*x) dx ... (coming soon \; what ought to be the scaling factor?) ; +#X obj 0 1588 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1588 op weight; +#X text 96 1588 number of "1" bits in an integer; +#X obj 0 1620 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1620 op sin; +#X text 96 1620 sin(A-B) in radians \, float only; +#X obj 0 1652 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1652 op cos; +#X text 96 1652 cos(A-B) in radians \, float only; +#X obj 0 1684 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1684 op atan2; +#X text 96 1684 atan2(A \, B) in radians \, float only; +#X obj 0 1716 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1716 op tanh; +#X text 96 1716 tanh(A-B) in radians \, float only; +#X obj 0 1748 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1748 op exp; +#X text 96 1748 exp(A-B) in radians \, float only; +#X obj 0 1780 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1780 op log; +#X text 96 1780 log(A-B) in radians \, float only; +#X obj 0 1832 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1832 op C.* ; +#X text 96 1832 A*B; +#X obj 0 1864 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1864 op C.*conj; +#X text 96 1864 A*conj(B); +#X obj 0 1896 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1896 op C./ ; +#X text 96 1896 A/B; +#X obj 0 1928 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1928 op C./conj; +#X text 96 1928 A/conj(B); +#X obj 0 1960 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 1960 op C.sq- ; +#X text 96 1960 (A-B)*(A-B); +#X obj 0 1992 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 1992 op C.abs- ; +#X text 96 1992 abs(A-B); +#X obj 0 2024 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 2024 op C.sin ; +#X text 96 2024 sin(A-B); +#X obj 0 2056 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 2056 op C.cos ; +#X text 96 2056 cos(A-B); +#X obj 0 2088 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 2088 op C.tanh ; +#X text 96 2088 tanh(A-B); +#X obj 0 2120 cnv 15 1024 30 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 2120 op C.exp ; +#X text 96 2120 exp(A-B); +#X obj 0 2152 cnv 15 1024 30 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 2152 op C.log ; +#X text 96 2152 log(A-B); +#X obj 10 2194 outlet; +#X connect 6 0 245 0; +#X connect 11 0 245 0; +#X connect 16 0 245 0; +#X connect 21 0 245 0; +#X connect 26 0 245 0; +#X connect 31 0 245 0; +#X connect 36 0 245 0; +#X connect 41 0 245 0; +#X connect 46 0 245 0; +#X connect 49 0 245 0; +#X connect 52 0 245 0; +#X connect 57 0 245 0; +#X connect 60 0 245 0; +#X connect 63 0 245 0; +#X connect 66 0 245 0; +#X connect 69 0 245 0; +#X connect 72 0 245 0; +#X connect 77 0 245 0; +#X connect 82 0 245 0; +#X connect 87 0 245 0; +#X connect 92 0 245 0; +#X connect 97 0 245 0; +#X connect 100 0 245 0; +#X connect 103 0 245 0; +#X connect 108 0 245 0; +#X connect 113 0 245 0; +#X connect 116 0 245 0; +#X connect 119 0 245 0; +#X connect 122 0 245 0; +#X connect 125 0 245 0; +#X connect 128 0 245 0; +#X connect 131 0 245 0; +#X connect 134 0 245 0; +#X connect 139 0 245 0; +#X connect 144 0 245 0; +#X connect 149 0 245 0; +#X connect 154 0 245 0; +#X connect 157 0 245 0; +#X connect 161 0 245 0; +#X connect 165 0 245 0; +#X connect 168 0 245 0; +#X connect 171 0 245 0; +#X connect 174 0 245 0; +#X connect 177 0 245 0; +#X connect 180 0 245 0; +#X connect 183 0 245 0; +#X connect 186 0 245 0; +#X connect 189 0 245 0; +#X connect 192 0 245 0; +#X connect 195 0 245 0; +#X connect 198 0 245 0; +#X connect 201 0 245 0; +#X connect 204 0 245 0; +#X connect 207 0 245 0; +#X connect 210 0 245 0; +#X connect 213 0 245 0; +#X connect 216 0 245 0; +#X connect 219 0 245 0; +#X connect 222 0 245 0; +#X connect 225 0 245 0; +#X connect 228 0 245 0; +#X connect 231 0 245 0; +#X connect 234 0 245 0; +#X connect 237 0 245 0; +#X connect 240 0 245 0; +#X connect 243 0 245 0; +#X obj 95 0 cnv 0 0 2214 empty empty empty -1 12 0 14 0 -66577 0; +#X obj 511 0 cnv 0 0 2214 empty empty empty -1 12 0 14 0 -66577 0; +#X obj 767 0 cnv 0 0 2214 empty empty empty -1 12 0 14 0 -66577 0; +#X obj 0 32 cnv 15 1024 18 empty empty empty 20 12 0 14 -248881 -66577 0; +#X text 10 32 numops; +#X obj 0 1812 cnv 15 1024 18 empty empty empty 20 12 0 14 -248881 -66577 0; +#X text 10 1812 vecops for complex numbers; +#X text 10 2214 + note: a centidegree is 0.01 degree. There are 36000 centidegrees in a circle. + Some angle operators use centidegrees \, while some others use radians. To + convert degrees into centidegrees \, multiply by 100. + To convert degrees into radians \, divide by 57.2957 . + Thus \, to convert centidegrees into radians \, divide by 5729.57 . +; diff --git a/externals/gridflow/doc/numtype.pd b/externals/gridflow/doc/numtype.pd new file mode 100644 index 00000000..ce1cdc2f --- /dev/null +++ b/externals/gridflow/doc/numtype.pd @@ -0,0 +1,56 @@ +#N canvas 0 0 1024 768 10; +#X obj 0 0 cnv 15 1024 30 empty empty empty 20 12 0 14 20 -66577 0; +#X text 10 0 op names; +#X text 192 0 range; +#X text 384 0 precision; +#X text 608 0 description; +#X obj 0 32 cnv 15 1024 62 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 32 op b u8 uint8; +#X text 192 32 0 to 255; +#X text 384 32 1; +#X text 608 32 + unsigned 8-bit integer. this is the usual size of numbers taken from files and cameras \, and + written to files and to windows. (however #in converts to int32 unless otherwise specified.); +#X obj 0 96 cnv 15 1024 62 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 96 op s i16 int16; +#X text 192 96 -32768 to 32767; +#X text 384 96 1; +#X obj 0 160 cnv 15 1024 62 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 160 op i i32 int32; +#X text 192 160 -(1<<31) to (1<<31)-1; +#X text 384 160 1; +#X text 608 160 + signed 32-bit integer. this is used by default throughout GridFlow. +; +#X obj 0 224 cnv 15 1024 62 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 224 op l i64 int64; +#X text 192 224 -(1<<63) to (1<<63)-1; +#X text 384 224 1; +#X obj 0 288 cnv 15 1024 62 empty empty empty 20 12 0 14 -249792 -66577 0; +#X msg 10 288 op f f32 float32; +#X text 192 288 -(1<<128) to (1<<128); +#X text 384 288 23 bits or 0.000012%; +#X obj 0 352 cnv 15 1024 62 empty empty empty 20 12 0 14 -233280 -66577 0; +#X msg 10 352 op d f64 float64; +#X text 192 352 -(1<<2048) to (1<<2048); +#X text 384 352 52 bits or 0.000000000000022%; +#X obj 191 0 cnv 0 0 416 empty empty empty -1 12 0 14 0 -66577 0; +#X obj 383 0 cnv 0 0 416 empty empty empty -1 12 0 14 0 -66577 0; +#X obj 607 0 cnv 0 0 416 empty empty empty -1 12 0 14 0 -66577 0; +#X text 10 416 High-performance computation requires precise and quite peculiar + definitions of numbers and their representation.; +#X text 10 476 Inside most programs \, numbers are written down as strings of + bits. A bit is either zero or one. Just like the decimal system + uses units \, tens \, hundreds \, the binary system uses units \, twos \, + fours \, eights \, sixteens \, and so on \, doubling every time.; +#X text 10 536 One notation \, called integer allows for only integer values to be + written (no fractions). when it is unsigned \, no negative values may + be written. when it is signed \, one bit indicates whether the number + is positive or negative. Integer storage is usually fixed-size \, so you have + bounds on the size of numbers \, and if a result is too big it "wraps around" \, truncating the biggest + bits.; +#X text 10 596 Another notation \, called floating point (or float) stores numbers using + a fixed number of significant digits \, and a scale factor that allows for huge numbers + and tiny fractions at once. Note that 1/3 has periodic digits \, but even 0.1 has periodic digits \, + in binary coding \; so expect some slight roundings \; the precision offered should be + sufficient for most purposes. Make sure the errors of rounding don't accumulate \, though.; diff --git a/externals/gridflow/doc/stuff.txt b/externals/gridflow/doc/stuff.txt new file mode 100644 index 00000000..2a495735 --- /dev/null +++ b/externals/gridflow/doc/stuff.txt @@ -0,0 +1,144 @@ +Grid Literals + In every grid-accepting inlet, a list may be sent instead; if + it consists only of integers, it will be converted to a + one-dimensional grid. Else it may contain a single "#" sign and + integers on both sides of it, where the ones to the left of it are + fed as arguments to an imaginary [#redim] object and the one to the + right of it are fed through that [#redim]. + In every grid-accepting inlet, an integer or float may also be sent; + it will be converted to a zero-dimensional grid (a scalar). + +Grid Protocol + a grid has an associated number type that defines what are the possible values for its elements + (and how much space it takes). the default is int32. + a single-dimensional grid of 3 elements (a triplet) is called dim(3). a + three-dimensional grid of 240 rows of 320 columns of triplets is called + dim(240,320,3). + There is a sequence in which elements of a Grid are stored and + transmitted. Dimension 0 is called "first" and dimension N-1 is + called "last". They are called so because if you select a + position in the first dimension of a grid, the selected part is of the same + shape minus the first dimension; so in dim(240,320,3) if you select + row 51 (or whichever valid row number), you get a dim(320,3). if you select + a subpart two more times you get to a single number. + At each such level, elements are sent/stored in their numeric order, + and are numbered using natural numbers starting at 0. This ordering usually + does not matter, but sometimes it does. Most notably, [#import], [#export] and [#redim] care about it. + On the other hand, order of dimensions usually does matter; this is + what distinguishes rows from columns and channels, for example. + Most objects care about the distinction. + A grid with only 1 element in a given dimension is different from one + lacking that dimension; it won't have the same meaning. You can use this + property to your advantage sometimes. + Zero-dimensional grids exist. They are called dim(). They can only contain + a single number. +Picture Protocol + This section is useful if you want to know what a picture is in terms of a grid. + A picture is a three-dimensional Grid: 0:rows 1:columns 2:channels + +Channels for the RGB color model are: 0:red 1:green 2:blue + Because Grids are made of 32-bit integers, a three-channel picture uses + 96 bpp (bits per pixel), and have to be downscaled to 24 bpp (or 16 bpp) + for display. That huge amount of slack is there because when you create + your own effects you often have intermediate results that need to be of + higher precision than a normal picture. Especially, results of multiplications + are big and should not overflow before you divide them back to normal; + and similarly, you can have negative values all over, as long as you take + care of them before they get to the display. + In the final conversion, high bits are just ignored. This means: black is + 0, maximum is 255, and values wrap like with % 256. If you want to + clip them, you may use [# max 0] and [# min 255] objects. + +The following are called VecOps because each operation happens between more than just two numbers. +A first kind of VecOp are those that arise when a pair of numbers (A0,A1) is considered as a single number A0+A1*sqrt(-1). +If you need complex numbers but don't know yet how they work, learn them using a math tutorial and then those VecOps will begin to seem familiar. +All the complex number operators are only for floats. +TODO: fill the last two columns of this table. + +Synchronisation + +In GridFlow you cannot send two grids in different inlets at the +same time. You have to use [#finished] together with (possibly) [fork] and [#store], +which can be cumbersome. If you don't do this, the result is undefined +behaviour (or crash!). +There are two exceptions: [#store] and # allow right-inlet grids to be buffered if an operation is occuring on left inlet. This +should make many programs simpler. + + +Introduction + + The philosophy that guides PureData is a simple but powerful one: + the software must first provide the user with generic tools + rather than imposing pre-cooked effects. In other words the user + should have total freedom. + + GridFlow follows that philosophy: it first defines elementary + mathematical operations. Those can in turn be used as simple + visual effects or be combined to produce more complex effects. + + The strategy followed by most video plugins for PureData and MAX/MSP, is + to provide the user first with constructs for manipulating video + streams at a fairly high level. The strategy put forward by GridFlow + is different. + + It can be said that in all those video plugins there are three layers: + the first, the low level, is not accessible to non-programmers (and fairly + difficult of access even to programmers); the second, mathematical, where + one needs not to be a C++ programmer, but still requires a good + understanding of how numbers and pixels and colours and geometry work; and + a third level that looks more like the software an artist would like to + use. + + In other video plugins there is a fairly low emphasis on the second + layer. In GridFlow that layer is very strong and opens many possibilities. + Even though the third layer in GridFlow is not as developed as it could, + the second layer may be used to produce third-layer object classes much + more quickly. + + GridFlow provides a unifying view of multimedia information. Several + kinds of data -- raster graphics in any number of channels, coordinate + transforms, matrices, vectors -- may all be represented by Grids + (also known as multi-dimensional arrays). Grids exist in several ways: they + are usually streamed from object to object, but they can also be stored in + memory, stored into a file, sent through the network. + + Here is an example of how things work in GridFlow. (if you want more + information, consult the rest of this manual) + + A picture is a three-dimensional Grid: + 0 : rows + 1 : columns + 2 : channels + + Pictures come in all sorts of heights and widths. The channels, however, + are more limited in number. Usually it's three: Red, Green, Blue. + + A coordinate transform, when specified pixel by pixel, may be a + three-dimensional Grid in which the two "channels" are Y and X, + representing row-and-column positions in a separate picture. + + Other shapes of grids could be designed to represent various things; + for example, configuration for blur effects. Grids could be useful for + things not directly related to raster pictures (e.g. sound recordings). + Those are all kinds of things you could actually develop _within_ the + PureData / GridFlow framework. You don't need to wait for me. + + +GridFlow Release + +dir=gridflow-0.9.6; tag=gridflow_0_9_6 +svn copy svn+ssh://gridflow.ca/home/svn/gridflow/trunk svn+ssh://gridflow.ca/home/svn/gridflow/tags/$tag/ +svn export svn+ssh://gridflow.ca/home/svn/gridflow/tags/$tag/ $dir +chmod -R go=u-w $dir && tar cfzvv $dir.tar.gz $dir && rm -rf $dir +scp $dir.tar.gz gridflow@artengine.ca:public_html/download +mv $dir.tar.gz /home/matju/GridFlow +cd doc/homepage; pico index.html; make install + +download somewhere else and try to compile +pd-announce mlist : post release + +Committed revision 4239. +Warning: 'post-commit' hook failed with error output: +/home/svn/gridflow/hooks/post-commit: line 49: /home/svn/gridflow/hooks/svn-mailer.log: Permission denied + +svn copy svn+ssh://gridflow.ca/home/svn/gridflow/tags/$tag/ https://pure-data.svn.sourceforge.net/svnroot/pure-data/trunk/externals/gridflow/ diff --git a/externals/gridflow/doc/tutorials/gf_sampling_quantization.pd b/externals/gridflow/doc/tutorials/gf_sampling_quantization.pd new file mode 100644 index 00000000..4f60217d --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_sampling_quantization.pd @@ -0,0 +1,57 @@ +#N canvas 740 0 704 805 10; +#X obj 2 5 cnv 15 650 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 2 -30 cnv 15 700 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 0 741 cnv 15 700 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 14 746 GridFlow 0.9.1; +#X text 7 -23 Principles of new media; +#X text 218 152 <-- reduces the size of the image; +#X text 5 3 1.1 sampling; +#X obj 4 314 cnv 15 650 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 7 313 1.2 quantization; +#X text 330 85 <-- change the resampling factor (1 to 8); +#X obj 55 80 #in; +#X obj 55 32 tgl 15 0 empty empty empty 17 7 0 10 -4034 -1 -1 1 1; +#X obj 75 259 #out window \, title sampling; +#X obj 55 204 #scale_by; +#X obj 202 86 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -257985 -1 +-1 0; +#X obj 202 108 + 1; +#X obj 202 130 t a a; +#X text 218 152 <-- reduces the size of the image; +#X msg 123 55 open babbage.jpg; +#X obj 55 419 #out window \, title quantization; +#X text 230 53 <-- open image first; +#X floatatom 124 365 5 0 0 0 - - -; +#X obj 24 449 #downscale_by 32 smoothly; +#X obj 25 518 display; +#X obj 34 470 #out window \, title really_small_window; +#X text 133 385 <-- reduces the number of possible pixel values; +#X text 121 201 <-- increases the image size by the same factor \, +letting us see the loss of information from the original image; +#X obj 55 152 #downscale_by \, smoothly; +#X obj 127 343 hsl 128 15 2 16 0 0 empty empty empty -2 -8 0 10 -257985 +-1 -1 3300 1; +#X obj 55 54 metro 100; +#X obj 55 385 #posterize 2; +#X text 262 342 <-- number of tones per channel; +#X connect 10 0 27 0; +#X connect 11 0 29 0; +#X connect 13 0 12 0; +#X connect 13 0 30 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 27 1; +#X connect 16 1 13 1; +#X connect 18 0 10 0; +#X connect 21 0 30 1; +#X connect 22 0 23 0; +#X connect 22 0 24 0; +#X connect 27 0 13 0; +#X connect 28 0 21 0; +#X connect 29 0 10 0; +#X connect 30 0 19 0; +#X connect 30 0 22 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_grid_1.pd b/externals/gridflow/doc/tutorials/gf_tutorial_grid_1.pd new file mode 100644 index 00000000..e86ff88f --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_grid_1.pd @@ -0,0 +1,25 @@ +#N canvas 363 183 701 242 10; +#X obj 2 5 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 2 -30 cnv 15 700 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 5 5 1.1 What is a grid?; +#X text 7 -23 1 Introduction to Grids; +#X obj 0 178 cnv 15 700 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 523 56 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 537 119 #out window; +#X obj 537 88 #in david.jpg; +#X text 14 183 GridFlow 0.9.0; +#X text 5 28 A grid is composed of rows and columns that contain numeric +data. GridFlow usually interprets images as three-dimensional grids +with rows (height) and columns (width). Each channel is a single colour +\, usually red \, green and blue (RGB). The channels make up the colour +information of an image. Videos are also interpreted as grids since +each frame is a still image.; +#X text 5 125 GridFlow objects that accept or produce grids are identified +by the number sign "#" (a mini grid). From now on \, the term "grid" +is used to identify an image or video.; +#X connect 5 0 7 0; +#X connect 7 0 6 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_grid_2.pd b/externals/gridflow/doc/tutorials/gf_tutorial_grid_2.pd new file mode 100644 index 00000000..59aecb1a --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_grid_2.pd @@ -0,0 +1,64 @@ +#N canvas 376 138 1022 422 10; +#X obj 1 14 cnv 15 460 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 4 14 1.2 How to create a grid.; +#X obj 1 14 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 5 14 1.2 Creating a grid using the [#import] object.; +#X text 5 40 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 must be connected to tell the grid which numbers +to display.; +#X text 6 109 Steps to create a grid:; +#X text 7 134 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. +Note how the numbers are positioned in the grid from left to right +and from the top to the bottom.; +#X text 7 229 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. +A 3 by 3 grid will displays 9 numbers.; +#X text 8 291 3 - Connect the objects to a [display] object or a [print] +object to see the resulting grid. You can alter your grid without actually +seeing the image.; +#X obj 1 -30 cnv 15 1020 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 1 -30 cnv 15 780 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 6 -23 1 Introduction to Grids; +#X obj 1 356 cnv 15 1020 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 479 285 display; +#X msg 547 154 reset; +#X obj 476 15 cnv 15 545 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 476 15 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 673 50 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 478 223 cnv 15 92 15 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 478 222 #import (3 3); +#X msg 478 51 1 2 3 4 5 6 7 8 9; +#X msg 535 99 1 2 3 4; +#X text 483 15 1.2 Patch example.; +#X text 610 155 <-- resets the grid to only display the numbers from +the list; +#X obj 652 217 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 610 97 <-- click here three times to see how [#import] only +outputs a grid once it recieves the number of values associated with +its dimensions; +#X text 590 217 <-- step 2: click here to create a grid that has 3 +rows and 3 columns (try changing these numbers to alter the dimensions +of the grid).; +#X text 592 287 <-- the display object outputs results.; +#X text 611 50 <-- step 1: click here to view the numbers from the +list in a grid.; +#X text 9 363 GridFlow 0.9.0; +#X connect 14 0 19 0; +#X connect 19 0 13 0; +#X connect 20 0 19 0; +#X connect 21 0 19 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_grid_3.pd b/externals/gridflow/doc/tutorials/gf_tutorial_grid_3.pd new file mode 100644 index 00000000..4e5e5778 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_grid_3.pd @@ -0,0 +1,30 @@ +#N canvas 106 132 652 402 10; +#X obj 7 11 cnv 15 640 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 10 11 1.2 How to create a grid.; +#X obj 7 11 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 11 11 1.3 Creating a grid using the [# + 0] object.; +#X obj 7 -29 cnv 15 640 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 12 -22 1 Introduction to Grids; +#X obj 279 117 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 216 255 <-- the display object outputs results.; +#X text 217 116 <-- step 1: click on either message box to view the +numbers from the list in a grid.; +#X text 9 36 The [# + 0] object works like [#import] but allows you +to put your grid parameters and values into one message box instead +of having to insert them into the object box.; +#X obj 5 337 cnv 15 640 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X msg 16 113 3 3 # 6 1 3 6 3 324 6 3 4; +#X msg 37 159 3 3 # 1 0 0 0; +#X obj 17 254 display; +#X obj 16 204 cnv 15 37 15 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 16 203 # + 0; +#X text 14 345 GridFlow 0.8.4; +#X connect 11 0 15 0; +#X connect 12 0 15 0; +#X connect 15 0 13 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_1.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_1.pd new file mode 100644 index 00000000..1c0fa483 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_1.pd @@ -0,0 +1,65 @@ +#N canvas 523 65 902 461 10; +#X obj 4 323 cnv 15 900 30 empty empty empty 20 12 0 14 -233017 -66577 +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 900 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 obj 450 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 453 -67 1.2 How to create a grid.; +#X obj 450 -67 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 112 167 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 621 48 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 621 100 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 557 99 <-- step #2 : click here to update the image; +#X text 556 47 <-- step #1 : click here to load the image; +#X text 8 169 step 3: Add a; +#X text 7 136 step 2: Create [#in] object; +#X text 8 202 step 4: Create a [#out window]; +#X text 6 98 step 1:; +#X obj 450 264 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577 +0; +#X text 449 264 Tip:; +#X text 485 263 Remember \, as with the rest of PD \, you can obtain +information regarding specific objects by right-clicking on it. Try +this for [#in].; +#X text 6 250 GridFlow accepts several image formats including .jpg +\, .png \, .tiff.; +#X text 449 213 The [#out window] object must be deleted in order to +close the display window the image is in.; +#X text 8 -46 The following steps outline the items that you need to +open a grid. Whether it be an image or a video you want to open theses +four steps are necessary.; +#X text 8 2 In order for GridFlow to recognize your media files by +file name you have to put them in the "images" folder (located within +the GridFlow directory). Another way to locate an image is to specify +the path to where it is saved on your hard drive in the message box. +; +#X text 452 -46 To view the image you must initialize the patch. Click +on the message box \, and then on the bang (this must be done in the +run mode). The image will appear in a display window \, off to the +side of the patch. Sometimes the display window opens behind the patch +\, try moving the patch if the display seems to be missing.; +#X text 459 -66 2.1 Patch Example; +#X text 8 -68 2.1 Opening an Image; +#X obj 450 140 cnv 15 22 15 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 450 180 #out window; +#X msg 450 48 open b001.jpg; +#X obj 534 99 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 450 139 #in; +#X text 62 113 extension you want to open; +#X text 63 99 Create message box [open< with the file name and; +#X text 11 329 GridFlow 0.9.0; +#X connect 29 0 31 0; +#X connect 30 0 31 0; +#X connect 31 0 28 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_2.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_2.pd new file mode 100644 index 00000000..affb33b7 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_2.pd @@ -0,0 +1,63 @@ +#N canvas 257 0 660 624 10; +#X obj 3 -37 cnv 15 653 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 3 -72 cnv 15 653 30 empty empty empty 20 12 0 14 -233017 -355 +0; +#X obj 3 517 cnv 15 653 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 268 271 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 152 134 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 88 133 <-- step #2 : start the metro; +#X obj 203 363 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 246 465 cnv 15 20 15 empty empty empty 20 12 0 14 -260818 -66577 +0; +#X text 111 159 the metro refreshes the display window so you don't +have to reload the grid every time it's altered.; +#X text 204 271 <-- step #1 : load the image; +#X text 245 464 Tip: try replacing this number box with a slider.; +#X text 139 363 <-- step #3 : change the grid's vertical parameters +; +#X obj 247 405 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 15 -38 2.2 Resizing an image; +#X text 10 82 [# pack] lets you resize grids by altering the vertical +and horizontal parameters.; +#X text 10 34 If you want to make your image four times its size \, +you would have to insert a 4 into the object \; [#scale_by 4].; +#X text 9 -10 [#scale_by] resizes grids by multiplying its parameters +(width and height). To resize an image proportionatly a specific scaling +size must be identified within the object.; +#X text 183 405 <-- step #4 : change the grid's horizontal parameters +; +#X text 17 -67 2 Introduction to Images; +#X obj 16 177 metro 10; +#X obj 16 135 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1 +; +#X floatatom 74 368 5 1 4 0 - - -; +#X obj 16 482 #out window; +#X obj 53 295 #in; +#X msg 53 272 load bluemarble.jpg; +#X obj 74 431 #pack 2; +#X obj 16 319 #store; +#X obj 16 319 #store; +#X obj 53 249 loadbang; +#X obj 17 458 cnv 15 63 15 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 16 457 #scale_by; +#X floatatom 118 406 5 0 0 0 - - -; +#X text 11 524 GridFlow 0.8.4; +#X connect 19 0 26 0; +#X connect 19 0 27 0; +#X connect 20 0 19 0; +#X connect 21 0 25 0; +#X connect 23 0 26 1; +#X connect 23 0 27 1; +#X connect 24 0 23 0; +#X connect 25 0 30 1; +#X connect 27 0 30 0; +#X connect 28 0 24 0; +#X connect 30 0 22 0; +#X connect 31 0 25 1; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_3.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_3.pd new file mode 100644 index 00000000..03d8c056 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_3.pd @@ -0,0 +1,84 @@ +#N canvas 0 87 993 482 10; +#X obj 6 38 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 6 3 cnv 15 1000 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 5 149 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 530 134 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 484 163 #in; +#X obj 484 191 cnv 15 42 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X text 8 180 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 text 7 69 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 in GridFlow \, some are very basic +while others are more advanced.; +#X text 9 234 Numeric Operators (numop): transform grids by applying +a mathematical operation to each pixel value.; +#X obj 6 455 cnv 15 1000 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 18 37 2.3 Image Manipulation; +#X text 17 148 Image Manipulation Using Numeric Operators; +#X text 8 277 To transform a grid the numop must first be given an +argument. That argument will be applied to every pixel in the grid. +The following three examples show some ways to give the numop an argument. +; +#X obj 460 38 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 465 62 Altering a grid by placing an argument directly into +the numop object.; +#X obj 560 343 cnv 15 42 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 561 382 display; +#X msg 483 278 1 2 3 4 5 6 7 8 9; +#X obj 483 307 #import (3 3); +#X obj 484 382 display; +#X obj 10 38 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 22 37 2.3 Image Manipulation; +#X obj 10 38 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 22 37 2.3 Image Manipulation; +#X obj 672 103 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 11 352 cnv 15 20 15 empty empty empty 20 12 0 14 -260818 -66577 +0; +#X text 422 361 --->; +#X text 608 103 <-- step #1 : click here to load the image; +#X obj 672 133 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 624 189 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 608 133 <-- step #2 : click here to view the image; +#X text 658 201 the value (42); +#X text 560 188 <-- step #3 : try altering the argument by changing +; +#X obj 691 276 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 691 342 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 627 276 <-- step #1 : click here to load the grid; +#X text 20 8 2 Introduction to Images; +#X text 472 37 2.3 Patch Example 1; +#X text 9 352 Tip: To understand how pixels are affected by the numop +test out this numeric grid patch. Each grid value that is output is +multiplied by 42; +#X obj 484 220 #out window; +#X obj 484 191 # * 42; +#X text 727 360 by changing the value (42); +#X text 628 342 <-- step #2 : try altering the argument; +#X obj 560 343 # * 42; +#X text 14 463 GridFlow 0.8.4; +#X msg 484 106 open working.jpg; +#X connect 3 0 4 0; +#X connect 4 0 40 0; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 18 0 43 0; +#X connect 40 0 39 0; +#X connect 43 0 16 0; +#X connect 45 0 4 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_4.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_4.pd new file mode 100644 index 00000000..ca6eae3f --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_4.pd @@ -0,0 +1,49 @@ +#N canvas 240 75 554 435 10; +#X obj 23 -109 #in; +#X obj 95 -59 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 95 -84 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 96 -34 cnv 15 25 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X msg 95 -59 67; +#X msg 95 -84 2; +#X msg 96 -34 199; +#X text 146 -153 <--; +#X text 145 -82 <--; +#X text 145 -59 <--; +#X text 145 -37 <--; +#X obj 58 -148 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 4 -299 cnv 15 550 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 4 -334 cnv 15 550 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 5 69 cnv 15 550 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 18 -329 2 Introduction to Images; +#X text 15 -301 2.3 Patch Example 2; +#X text 12 -269 Altering a grid by sending numop an argument using +a message box. This method allows you to send the numop several different +arguments.; +#X obj 209 -206 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 210 -152 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 145 -206 <-- step #2 : click here to load the image; +#X text 174 -153 Step #3: click on the bang to see the updated image +; +#X obj 215 -59 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 179 -59 step #1 : click on one of the arguments; +#X text 14 77 GridFlow 0.8.4; +#X obj 23 33 #out window; +#X msg 23 -206 open working.jpg; +#X obj 23 -35 # * 1; +#X connect 0 0 27 0; +#X connect 4 0 27 1; +#X connect 5 0 27 1; +#X connect 6 0 27 1; +#X connect 11 0 0 0; +#X connect 26 0 0 0; +#X connect 27 0 25 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_5.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_5.pd new file mode 100644 index 00000000..a0226c88 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_5.pd @@ -0,0 +1,52 @@ +#N canvas 559 20 560 533 10; +#X obj 2 37 cnv 15 550 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 2 2 cnv 15 550 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 2 501 cnv 15 550 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 16 7 2 Introduction to Images; +#X text 14 36 2.3 Patch Example 3; +#X text 2 58 Altering a grid using numop with slider and metro. This +combination allows you to scroll through values and modify a grid in +real time.; +#X obj 19 338 cnv 15 38 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 225 207 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 280 294 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 314 306 the slider; +#X obj 223 122 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 224 162 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 21 252 #in; +#X obj 54 295 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818 +-1 -1 0 1; +#X obj 53 228 metro 33.3; +#X obj 53 206 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1 +; +#X floatatom 72 326 5 0 0 0 - - -; +#X obj 50 165 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X obj 21 398 #out window; +#X msg 21 121 open scissors.jpg; +#X obj 21 338 # + 0; +#X text 159 122 <-- step #1 : click here to load the image; +#X text 161 206 <-- step #2 : start the metro; +#X text 160 162 <-- step #2 : click here to view the image; +#X text 223 184 or; +#X text 216 294 <-- step #3 : try altering the argument by using; +#X text 11 509 GridFlow 0.9.0; +#X text 4 443 These examples use the [# +] numop. There are several +numeric operators \; they can be found in the numeric operator help +patch (right click on the [# + 0] and select help to view them).; +#X connect 12 0 20 0; +#X connect 13 0 16 0; +#X connect 13 0 20 1; +#X connect 14 0 12 0; +#X connect 15 0 14 0; +#X connect 17 0 12 0; +#X connect 19 0 12 0; +#X connect 20 0 18 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_6.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_6.pd new file mode 100644 index 00000000..e595e5b1 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_6.pd @@ -0,0 +1,66 @@ +#N canvas 130 10 767 676 10; +#X obj 7 -69 cnv 15 760 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 2 425 cnv 15 760 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 4 -220 cnv 15 760 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 18 -215 2 Introduction to Images; +#X obj 5 -183 cnv 15 760 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 12 -155 When an image is represented as a grid every pixel +value will vary between 0 and 255 Colour wrapping occurs when the result +of an operation on the pixel value is 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 17 -184 2.4 Colour Wrapping; +#X text 15 -69 2.4 [#clip]; +#X text 11 -44 The [#clip] object is used with numops in order to set +a lower and upper range to pixel values. This allows you to avoid over +saturating the colours of your grid.; +#X obj 163 83 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 19 254 cnv 15 38 17 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 53 161 hsl 128 15 0 255 0 0 empty empty empty -2 -6 0 8 -260818 +-1 -1 0 1; +#X obj 20 56 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1; +#X obj 50 353 #clip; +#X obj 20 78 metro 33.3; +#X obj 75 185 #color; +#X obj 20 385 #out window; +#X obj 20 314 shunt; +#X obj 50 288 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1 +; +#X obj 3 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X text 296 211 channel at a time; +#X text 268 196 <-- use colour specific sliders to add values to one +; +#X obj 147 288 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 179 288 click here to redirect the flow of data using the [shunt] +object and see the effect of [#clip]; +#X text 100 83 <-- step #1 : start the metro; +#X text 199 160 <-- use slider to add values to all channels at once +; +#X text 9 432 GridFlow 0.8.4; +#X obj 20 136 #store; +#X obj 66 136 #in sewing.jpg; +#X obj 20 254 # + 0; +#X obj 66 117 loadbang; +#X text 84 288 <-- step #2 :; +#X connect 11 0 29 1; +#X connect 12 0 14 0; +#X connect 13 0 16 0; +#X connect 14 0 27 0; +#X connect 15 0 29 1; +#X connect 17 0 16 0; +#X connect 17 1 13 0; +#X connect 18 0 17 1; +#X connect 19 0 27 0; +#X connect 27 0 29 0; +#X connect 28 0 27 1; +#X connect 29 0 17 0; +#X connect 30 0 28 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_7.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_7.pd new file mode 100644 index 00000000..d7704291 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_7.pd @@ -0,0 +1,36 @@ +#N canvas 79 206 438 353 10; +#X obj 2 -37 cnv 15 430 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 2 -72 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 3 244 cnv 15 430 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 4 -15 To convert an image to greyscale use [#rgb_to_greyscale]. +It converts a colour information into a black to white gradient.; +#X obj 12 207 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577 +0; +#X text 11 207 Tip:; +#X text 48 201 If you have trouble opening this image refer back to +previous tutorials.; +#X text 16 -67 2 Introduction to Images; +#X text 16 -37 2.5 Greyscale; +#X obj 14 125 cnv 15 110 16 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 15 71 #in; +#X obj 27 51 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X msg 15 27 open working.jpg; +#X text 11 252 GridFlow 0.9.0; +#X obj 15 124 #rgb_to_greyscale; +#X obj 15 145 #greyscale_to_rgb; +#X obj 15 172 #out window \, title greyscale; +#X obj 157 91 #out window \, title original; +#X obj 15 94 t a a; +#X text 124 144 [#out window] still only accepts rgb images; +#X connect 10 0 18 0; +#X connect 11 0 10 0; +#X connect 12 0 10 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 18 0 14 0; +#X connect 18 1 17 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_8.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_8.pd new file mode 100644 index 00000000..1697e73b --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_8.pd @@ -0,0 +1,61 @@ +#N canvas 29 52 836 433 10; +#X obj 3 347 cnv 15 830 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 4 -18 cnv 15 830 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 4 -52 cnv 15 830 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 11 -46 2 Introduction to Images; +#X text 10 -18 2.6 Remap Image; +#X obj 261 229 cnv 15 25 15 empty empty empty 20 12 0 14 -260818 -66577 +0; +#X text 260 229 Tip:; +#X text 290 228 This is a numeric operator. Right click on it for more +information or go back to the tutorial about the numeric operator. +; +#X obj 272 77 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 321 188 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 355 200 number box to transform image; +#X obj 21 267 cnv 15 85 15 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X obj 20 77 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1 +; +#X obj 20 166 #in; +#X obj 20 104 t b b; +#X obj 99 290 #print; +#X obj 191 128 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 +-1; +#X floatatom 210 189 5 0 0 0 - - -; +#X obj 180 152 #for (0 0) (240 320) (1 1); +#X obj 180 102 metro 100; +#X obj 180 77 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 1 1 +; +#X obj 20 266 #remap_image; +#X obj 180 227 # / 1; +#X obj 20 315 #out window; +#X text 231 228 <--; +#X text 11 354 GridFlow 0.8.4; +#X msg 50 135 open working.jpg; +#X obj 110 77 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 12 7 Each numeric operator applies unique effects to a grid. +The standard effect changes when numop is used in combination with +the [#remap_image] object.; +#X text 46 75 <-- step #1; +#X text 207 77 <-- step #2 : start the metro; +#X text 258 188 <-- step #3 : click and drag cursor over; +#X connect 12 0 14 0; +#X connect 13 0 21 0; +#X connect 14 0 13 0; +#X connect 14 1 26 0; +#X connect 16 0 18 0; +#X connect 17 0 22 1; +#X connect 18 0 22 0; +#X connect 19 0 18 0; +#X connect 20 0 19 0; +#X connect 21 0 23 0; +#X connect 21 1 15 0; +#X connect 22 0 21 1; +#X connect 26 0 13 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_image_9.pd b/externals/gridflow/doc/tutorials/gf_tutorial_image_9.pd new file mode 100644 index 00000000..b7684734 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_image_9.pd @@ -0,0 +1,65 @@ +#N canvas 157 13 867 556 10; +#X obj -14 522 cnv 15 862 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj -14 34 cnv 15 865 15 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj -14 -1 cnv 15 870 30 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text -9 5 2 Introduction to Images; +#X text -9 33 2.6 [#convolve]; +#X obj 147 258 #store; +#X obj 147 362 # / 9; +#X msg 297 372 3 3 # 1 1 1 1 1 1 1 1 1; +#X obj -5 353 #out window; +#X obj -5 160 #in; +#X obj 147 177 tgl 15 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1 +; +#X obj -5 119 loadbang; +#X obj 147 206 metro 33.3667; +#X obj -5 218 t a; +#X obj 147 335 #convolve \, seed 4; +#X obj 297 339 loadbang; +#X obj 297 445 display; +#X obj 147 411 #clip; +#X obj 529 390 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 228 141 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X obj 229 175 cnv 15 15 15 empty empty empty 20 12 0 14 -259603 -66577 +0; +#X text 164 140 <-- step #1 : load image; +#X text 166 175 <-- step #3 : start metro; +#X obj 297 316 cnv 15 110 15 empty empty empty 20 12 0 14 -241291 -66577 +0; +#X text 331 316 Blurs; +#X text 562 389 apply effect by selecting a message box; +#X text 202 253 <-- The [#store] object stores the last grid that [#convolve] +was applied to. Everytime time the metro bangs \, [#convolve] is applied +to the grid retained in this object \, therefore applying effect on +top of effect.; +#X text 465 390 <-- step #2 :; +#X text -8 529 GridFlow 0.9.0; +#X text -18 502 ((Source convolve.pd : Copyright Mathieu Bouchard 2002) +; +#X msg 296 415 3 3 # 4 0 -1 3 1 0 0 0 4; +#X text -9 55 [#convolve] allows you to apply preset effects such as +blur \, edge sharpen and emboss onto a grid. In this example you can +create two different kinds of "blurs" on an image.; +#X msg -5 140 load working.jpg; +#X obj 147 387 # abs-; +#X connect 5 0 14 0; +#X connect 6 0 33 0; +#X connect 7 0 14 1; +#X connect 9 0 13 0; +#X connect 10 0 12 0; +#X connect 11 0 32 0; +#X connect 12 0 5 0; +#X connect 13 0 5 1; +#X connect 13 0 8 0; +#X connect 14 0 6 0; +#X connect 15 0 7 0; +#X connect 17 0 13 0; +#X connect 30 0 14 1; +#X connect 30 0 16 0; +#X connect 32 0 9 0; +#X connect 33 0 17 0; diff --git a/externals/gridflow/doc/tutorials/gf_tutorial_intro.pd b/externals/gridflow/doc/tutorials/gf_tutorial_intro.pd new file mode 100644 index 00000000..9113ebb0 --- /dev/null +++ b/externals/gridflow/doc/tutorials/gf_tutorial_intro.pd @@ -0,0 +1,86 @@ +#N canvas 160 16 884 589 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 obj 6 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577 +0; +#X obj 4 232 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 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 obj 446 46 cnv 15 430 15 empty empty empty 20 12 0 14 -179884 -66577 +0; +#X text 645 477 Interfacing with sensors; +#X obj 467 426 pddp_open GridFlow-6; +#X obj 467 452 pddp_open GridFlow-7; +#X text 451 236 2 Introduction to 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 235 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577 +0; +#X text 452 395 4 Intermediate GridFlow; +#X text 10 235 1 Introduction to Pure-Data; +#X text 11 395 3 Intermediate Pure-Data; +#X text 582 563 Stephanie Brodeur and Darsha Hewitt 2006; +#X text 451 46 What is GridFlow?; +#X text 500 550 What is GridFlow? and GridFlow tutorials developed +by; +#X text 453 84 GridFlow is a plug-in for PureData that introduces the +grid (#) 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 11 46 What is PureData (aka PD)?; +#X text 14 85 PureData is an open-source patching environment for multi-media +(audio+image). PureData is a programming language where you create +relationships by connecting visual boxes (rather than typing complex +commands).; +#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.; +#X text 15 141 A basic understanding of PureData is useful when using +GridFlow. If you are new to the PureData programming environment it +is recommended that you follow the Introduction to PureData before +you move onto the GridFlow tutorials.; +#X text 10 13 Welcome to PureData; +#X text 13 551 What is PureData? and PureData tutorials copyright Ben +Bogart 2005 \; (See COPYING.TXT for details); +#X text 642 340 Introduction to live video; +#X text 641 273 Introduction to grids; +#X text 639 296 Introduction to images; +#X text 653 480; +#X obj 467 477 pddp_open GridFlow-8; +#X text 646 451 Motion detection; +#X text 646 426 Advanced video effects; diff --git a/externals/gridflow/doc/tutorials/grid-intro.pd b/externals/gridflow/doc/tutorials/grid-intro.pd new file mode 100644 index 00000000..fdbfdbbf --- /dev/null +++ b/externals/gridflow/doc/tutorials/grid-intro.pd @@ -0,0 +1,10 @@ +#N canvas 0 0 476 213 10; +#X text 29 30 GridFlow is a plug-in for PureData that introduces the +grid (#) 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. +; diff --git a/externals/gridflow/doc/tutorials/pure-data-1.pd b/externals/gridflow/doc/tutorials/pure-data-1.pd new file mode 100644 index 00000000..7be2a91a --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-1.pd @@ -0,0 +1,71 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-2.pd b/externals/gridflow/doc/tutorials/pure-data-2.pd new file mode 100644 index 00000000..151af26f --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-2.pd @@ -0,0 +1,73 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-3.pd b/externals/gridflow/doc/tutorials/pure-data-3.pd new file mode 100644 index 00000000..729b2dc7 --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-3.pd @@ -0,0 +1,70 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-4.pd b/externals/gridflow/doc/tutorials/pure-data-4.pd new file mode 100644 index 00000000..4d38f41d --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-4.pd @@ -0,0 +1,87 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-5.pd b/externals/gridflow/doc/tutorials/pure-data-5.pd new file mode 100644 index 00000000..dc357bb1 --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-5.pd @@ -0,0 +1,108 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-6.pd b/externals/gridflow/doc/tutorials/pure-data-6.pd new file mode 100644 index 00000000..01e6dcd7 --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-6.pd @@ -0,0 +1,92 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-7.pd b/externals/gridflow/doc/tutorials/pure-data-7.pd new file mode 100644 index 00000000..0d8360ec --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-7.pd @@ -0,0 +1,106 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-8.pd b/externals/gridflow/doc/tutorials/pure-data-8.pd new file mode 100644 index 00000000..aa95c087 --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-8.pd @@ -0,0 +1,89 @@ +#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; diff --git a/externals/gridflow/doc/tutorials/pure-data-9.pd b/externals/gridflow/doc/tutorials/pure-data-9.pd new file mode 100644 index 00000000..e5188ee0 --- /dev/null +++ b/externals/gridflow/doc/tutorials/pure-data-9.pd @@ -0,0 +1,43 @@ +#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; |