[PD-cvs] doc/pddp adc~-help.pd, NONE, 1.1 adc~_dac~-help.pd, NONE, 1.1 all_about_atom_conversion.pd, NONE, 1.1 bang-help.pd, NONE, 1.1 bendin-help.pd, NONE, 1.1 bendout-help.pd, NONE, 1.1 bng-help.pd, NONE, 1.1 change-help.pd, NONE, 1.1 clip-help.pd, NONE, 1.1 cputime-help.pd, NONE, 1.1 ctlin-help.pd, NONE, 1.1 ctlout-help.pd, NONE, 1.1 dac~-help.pd, NONE, 1.1 delay-help.pd, NONE, 1.1 float-help.pd, NONE, 1.1 glossary.pd, NONE, 1.1 int-help.pd, NONE, 1.1 key-help.pd, NONE, 1.1 line-help.pd, NONE, 1.1 loadbang-help.pd, NONE, 1.1 makefilename-help.pd, NONE, 1.1 math-help.pd, NONE, 1.1 metro-help.pd, NONE, 1.1 midi-help.pd, NONE, 1.1 moses-help.pd, NONE, 1.1 notein-help.pd, NONE, 1.1 noteout-help.pd, NONE, 1.1 operators-help.pd, NONE, 1.1 otherbinops-help.pd, NONE, 1.1 pack-help.pd, NONE, 1.1 pgmin-help.pd, NONE, 1.1 pgmout-help.pd, NONE, 1.1 pipe-help.pd, NONE, 1.1 print-help.pd, NONE, 1.1 random-help.pd, NONE, 1.1 realtime-help.pd, NONE, 1.1 receive-help.pd, NONE, 1.1 route-help.pd, NONE, 1.1 select-help.pd, 1.2, 1.3 send-help.pd, NONE, 1.1 spigot-help.pd, NONE, 1.1 swap-help.pd, NONE, 1.1 symbol-help.pd, NONE, 1.1 tabread-help.pd, NONE, 1.1 tabread4-help.pd, NONE, 1.1 tabwrite-help.pd, NONE, 1.1 timer-help.pd, NONE, 1.1 trigger-help.pd, NONE, 1.1 unpack-help.pd, NONE, 1.1 until-help.pd, NONE, 1.1 value-help.pd, NONE, 1.1 all_about_acoustic_conversions.pd, 1.1, 1.2 all_about_arrays.pd, 1.1, 1.2 all_about_lists_vs_anythings.pd, 1.3, 1.4 all_about_midi_flags.pd, 1.1, 1.2 all_about_scope_and_locality.pd, 1.3, 1.4 all_about_send_n_receive.pd, 1.3, 1.4 pddp-style-guide.pd, 1.3, 1.4 pddp.pd, 1.6, 1.7 pddp_open.pd, 1.3, 1.4 table_of_contents.pd, 1.3, 1.4 help-adc~.pd, 1.1, NONE help-adc~_dac~.pd, 1.1, NONE help-bang.pd, 1.2, NONE help-bendin.pd, 1.1, NONE help-bendout.pd, 1.1, NONE help-bng.pd, 1.1, NONE help-change.pd, 1.1, NONE help-clip.pd, 1.1, NONE help-cputime.pd, 1.2, NONE help-ctlin.pd, 1.1, NONE help-ctlout.pd, 1.1, NONE help-dac~.pd, 1.1, NONE help-delay.pd, 1.2, NONE help-float.pd, 1.1, NONE help-int.pd, 1.2, NONE help-key.pd, 1.4, NONE help-line.pd, 1.3, NONE help-loadbang.pd, 1.1, NONE help-makefilename.pd, 1.2, NONE help-math.pd, 1.1, NONE help-metro.pd, 1.2, NONE help-midi.pd, 1.1, NONE help-moses.pd, 1.2, NONE help-notein.pd, 1.1, NONE help-noteout.pd, 1.1, NONE help-operators.pd, 1.3, NONE help-otherbinops.pd, 1.3, NONE help-pack.pd, 1.2, NONE help-pgmin.pd, 1.1, NONE help-pgmout.pd, 1.1, NONE help-pipe.pd, 1.2, NONE help-print.pd, 1.1, NONE help-random.pd, 1.2, NONE help-realtime.pd, 1.2, NONE help-receive.pd, 1.3, NONE help-route.pd, 1.5, NONE help-select.pd, 1.3, NONE help-send.pd, 1.3, NONE help-spigot.pd, 1.3, NONE help-swap.pd, 1.1, NONE help-symbol.pd, 1.3, NONE help-tabread.pd, 1.2, NONE help-tabread4.pd, 1.2, NONE help-tabwrite.pd, 1.2, NONE help-timer.pd, 1.2, NONE help-trigger.pd, 1.4, NONE help-unpack.pd, 1.2, NONE help-until.pd, 1.4, NONE help-value.pd, 1.2, NONE

Hans-Christoph Steiner eighthave at users.sourceforge.net
Thu Apr 28 02:25:07 CEST 2005


Update of /cvsroot/pure-data/doc/pddp
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4643

Modified Files:
	all_about_acoustic_conversions.pd all_about_arrays.pd 
	all_about_lists_vs_anythings.pd all_about_midi_flags.pd 
	all_about_scope_and_locality.pd all_about_send_n_receive.pd 
	pddp-style-guide.pd pddp.pd pddp_open.pd table_of_contents.pd 
Added Files:
	adc~-help.pd adc~_dac~-help.pd all_about_atom_conversion.pd 
	bang-help.pd bendin-help.pd bendout-help.pd bng-help.pd 
	change-help.pd clip-help.pd cputime-help.pd ctlin-help.pd 
	ctlout-help.pd dac~-help.pd delay-help.pd float-help.pd 
	glossary.pd int-help.pd key-help.pd line-help.pd 
	loadbang-help.pd makefilename-help.pd math-help.pd 
	metro-help.pd midi-help.pd moses-help.pd notein-help.pd 
	noteout-help.pd operators-help.pd otherbinops-help.pd 
	pack-help.pd pgmin-help.pd pgmout-help.pd pipe-help.pd 
	print-help.pd random-help.pd realtime-help.pd receive-help.pd 
	route-help.pd select-help.pd send-help.pd spigot-help.pd 
	swap-help.pd symbol-help.pd tabread-help.pd tabread4-help.pd 
	tabwrite-help.pd timer-help.pd trigger-help.pd unpack-help.pd 
	until-help.pd value-help.pd 
Removed Files:
	help-adc~.pd help-adc~_dac~.pd help-bang.pd help-bendin.pd 
	help-bendout.pd help-bng.pd help-change.pd help-clip.pd 
	help-cputime.pd help-ctlin.pd help-ctlout.pd help-dac~.pd 
	help-delay.pd help-float.pd help-int.pd help-key.pd 
	help-line.pd help-loadbang.pd help-makefilename.pd 
	help-math.pd help-metro.pd help-midi.pd help-moses.pd 
	help-notein.pd help-noteout.pd help-operators.pd 
	help-otherbinops.pd help-pack.pd help-pgmin.pd help-pgmout.pd 
	help-pipe.pd help-print.pd help-random.pd help-realtime.pd 
	help-receive.pd help-route.pd help-select.pd help-send.pd 
	help-spigot.pd help-swap.pd help-symbol.pd help-tabread.pd 
	help-tabread4.pd help-tabwrite.pd help-timer.pd 
	help-trigger.pd help-unpack.pd help-until.pd help-value.pd 
Log Message:
cleaned up a number of patches; renamed all to the standard -help.pd format; added some more ideas to the style guide; finished up lists_vs_anythings

--- NEW FILE: bendin-help.pd ---
#N canvas 244 81 496 558 10;
#X text 118 123 outlets:;
#X floatatom 16 149 5 0 0 0 - - -;
#X floatatom 59 149 5 0 0 0 - - -;
#N canvas 240 135 476 472 other_midi_objects 0;
#X obj 7 29 ctlin;
#X obj 49 29 pgmin;
#X obj 92 28 bendin;
#X obj 143 27 touchin;
#X obj 204 27 polytouchin;
#X obj 289 27 midiin;
#X obj 340 26 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 160 84 bendout;
#X obj 217 83 touchout;
#X obj 281 82 polytouchout;
#X obj 370 82 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X restore 20 401 pd other_midi_objects;
#X text 18 346 related object;
#X obj 104 447 pddp_open all_about_midi_flags;
#X text 18 421 for an explanation of MIDI usage in Pd see:;
#X obj 33 18 bendin;
#X text 119 103 inlets : none (reads directly from the MIDI port);
#X obj 23 107 bendin;
#X text 9 49 The [bendin] object reads incoming pitch bend values and
reports them. If started with no arguments it reports the channel number
through the right outlet.;
#X text 14 192 Arguments: the MIDI channel number from which to read.
If the argument is present \, the [bendin] object does not show the
second (right) outlet:;
#X obj 25 256 bendin 2;
#X floatatom 25 278 5 0 0 0 - - -;
#X obj 21 361 bendout;
#X text 76 279 <-- pitch bend values on channel 2;
#X text 16 312 Output (int) is a 14-bit pitchbend value;
#X text 130 142 left: pitchbend value;
#X text 129 159 right: MIDI channel number (if no argument);
#X text 81 19 - read incoming pitch bend values.;
#X text 19 482 This document was updated for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 9 0 1 0;
#X connect 9 1 2 0;
#X connect 12 0 13 0;

Index: all_about_lists_vs_anythings.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/all_about_lists_vs_anythings.pd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** all_about_lists_vs_anythings.pd	27 Nov 2004 20:05:39 -0000	1.3
--- all_about_lists_vs_anythings.pd	28 Apr 2005 00:25:04 -0000	1.4
***************
*** 1,89 ****
! #N canvas 197 93 874 603 10;
! #X msg 74 278 1 2 3;
! #X obj 134 309 route list;
! #X msg 41 258 list 1 2 3;
  #X msg 10 63 list;
- #X msg 17 83 list 5;
- #X msg 24 103 list pie;
  #X symbolatom 32 129 10 0 0 0 - - -;
  #X obj 4 2 cnv 15 850 20 empty empty all_about_lists_vs_anythings 20
  10 1 18 -233017 -66577 0;
! #X obj 821 3 pddp;
! #X text 20 558 by Hans-Christoph Steiner <hans at at.or.at>;
! #X obj 65 437 list2int;
! #X obj 129 436 l2i;
! #X obj 131 462 a2l;
! #X obj 64 463 any2list;
! #X obj 64 413 lister;
! #X obj 64 489 list2symbol;
! #X obj 64 510 symbol2list;
! #X obj 153 489 l2s;
! #X obj 153 509 s2l;
! #X obj 197 490 tosymbol;
! #X obj 197 509 fromsymbol;
! #X text 501 288 use [prepend]!!;
! #X obj 618 286 prepend;
! #X obj 661 331 drip;
! #X text 568 331 write about:;
! #X obj 539 411 glue;
! #X obj 600 438 pack;
! #X obj 599 412 list2symbol;
! #X obj 709 411 tosymbol;
! #X text 8 208 More than one "float" in a message is considered a "list".
  More than one "symbol" in a message is not implicitly considered a
  "list" \, only if you cast it.;
- #X text 87 104 A "list" of one "symbol" is translated into a "symbol".
- ;
- #X text 72 83 A "list" of one "float" is translated into a "float".
- ;
- #X text 50 63 An empty "list" is tranlated into a "bang".;
  #X text 7 39 SPECIAL CASES OF "LISTS".;
! #X text 497 243 working with "lists" and "anythings":;
! #X text 516 385 making "lists" from untyped inputs:;
! #X obj 10 148 print NOT-LISTS;
! #X obj 475 411 repack;
! #X obj 134 332 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X obj 198 333 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X text 478 138 Miller's list explanation;
! #X obj 65 391 list;
! #X obj 64 366 any;
! #X obj 93 366 pipe;
! #X text 509 190 - anything is not a atom type;
! #X text 506 162 - lists map to inlets \, non-lists don't;
! #X obj 55 166 route b f s;
! #X msg 183 257 list this is a set with a cast;
! #X msg 190 276 this is a set withOUT a cast;
! #X text 370 475 a set that is not a "list" has an undefined type:;
! #X obj 469 568 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X obj 516 567 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X obj 564 566 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X msg 468 501 list this is a set with a cast;
! #X msg 475 520 this is a set withOUT a cast;
! #X obj 469 545 route bang float symbol list;
! #X obj 612 567 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X obj 660 566 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
  #X connect 0 0 1 0;
! #X connect 1 0 38 0;
! #X connect 1 1 39 0;
  #X connect 2 0 1 0;
! #X connect 3 0 36 0;
! #X connect 4 0 36 0;
! #X connect 5 0 6 0;
! #X connect 5 0 36 0;
! #X connect 27 0 26 0;
! #X connect 47 0 1 0;
! #X connect 48 0 1 0;
! #X connect 53 0 55 0;
! #X connect 54 0 55 0;
! #X connect 55 0 50 0;
! #X connect 55 1 51 0;
! #X connect 55 2 52 0;
! #X connect 55 3 56 0;
! #X connect 55 4 57 0;
--- 1,122 ----
! #N canvas 330 124 865 611 10;
! #X msg 95 288 1 2 3;
! #X obj 125 319 route list;
! #X msg 62 268 list 1 2 3;
  #X msg 10 63 list;
  #X symbolatom 32 129 10 0 0 0 - - -;
  #X obj 4 2 cnv 15 850 20 empty empty all_about_lists_vs_anythings 20
  10 1 18 -233017 -66577 0;
! #X text 9 218 More than one "float" in a message is considered a "list".
  More than one "symbol" in a message is not implicitly considered a
  "list" \, only if you cast it.;
  #X text 7 39 SPECIAL CASES OF "LISTS".;
! #X obj 125 342 bng 15 250 50 0 empty empty list -20 7 1 10 -262144
! -1 -1;
! #X obj 189 343 bng 15 250 50 0 empty empty non-list 19 7 1 10 -262144
! -1 -1;
! #X msg 184 267 list this is a set with a cast;
! #X msg 191 286 this is a set withOUT a cast;
! #X obj 488 138 bng 15 250 50 0 empty empty bang 0 20 1 9 -262144 -1
  -1;
! #X obj 535 138 bng 15 250 50 0 empty empty float 0 21 1 9 -262144 -1
  -1;
! #X obj 684 138 bng 15 250 50 0 empty empty symbol 0 21 1 9 -262144
! -1 -1;
! #X msg 486 73 list this is a set with a cast;
! #X msg 493 92 this is a set withOUT a cast;
! #X obj 585 138 bng 15 250 50 0 empty empty list 0 21 1 9 -262144 -1
  -1;
! #X obj 100 528 route list;
! #X obj 100 551 bng 15 250 50 0 empty empty list -20 7 1 10 -262144
! -1 -1;
! #X obj 164 552 bng 15 250 50 0 empty empty non-list 19 7 1 10 -262144
! -1 -1;
! #X msg 20 491 one 2 three 4 five;
! #X msg 20 469 1 two 3 four 5;
! #X text 8 198 IMPLICIT LISTS;
! #X msg 179 469 list 1 two 3 four 5;
! #X msg 179 491 list one 2 three 4 five;
! #X msg 17 83 list 25;
! #X msg 24 103 list foo;
! #X obj 10 171 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X obj 57 170 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X obj 105 169 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X obj 153 170 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
! -1;
! #X obj 201 169 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
+ #X obj 10 148 route bang float symbol list;
+ #X text 87 104 A "list" of one "symbol" is converted to a "symbol"
+ ;
+ #X text 72 83 A "list" of one "float" is converted to a "float";
+ #X text 50 63 An empty "list" is converted to a "bang";
+ #X obj 520 514 pddp_open all_about_atom_conversion;
+ #X obj 821 3 pddp;
+ #X text 11 392 Sets of mixed atoms are defined based on what the "selector"
+ (the first element of a set). If the "selector" is a "float" \, then
+ the set is a "list". If the "selector" is the word "list" \, then the
+ set is a "list". If the "selector" is a "symbol" \, then the set is
+ NOT a "list":;
+ #X text 22 575 (C) Copyright 2004 Hans-Christoph Steiner <hans at at.or.at>
+ ;
+ #X text 239 589 released under the GNU GPL;
+ #X text 445 576 $Revision$$Date$;
+ #X text 446 589 $Author$;
+ #X text 673 551 updated for Pd 0.38-2;
+ #X obj 487 117 route bang float list pointer symbol;
+ #X obj 635 138 bng 15 250 50 0 empty empty pointer 0 21 1 9 -262144
+ -1 -1;
+ #X obj 734 138 bng 15 250 50 0 empty empty UNDEFINED 0 21 1 9 -262144
+ -1 -1;
+ #X msg 502 286 1 1;
+ #X obj 495 312 +;
+ #X floatatom 495 334 5 0 0 0 - - -;
+ #X msg 467 286 1 3;
+ #X text 459 46 A set that is not a "list" has an undefined type:;
+ #X msg 494 267 list 1 2;
+ #X text 445 208 If you send a "list" of arguments to the first inlet
+ of an object \, the elements of that "list" will be applied to the
+ respective inlet. This does not apply to sets that are NOT "lists".
+ ;
+ #X text 443 192 "LISTS" MAP TO INLETS;
+ #X text 450 389 When working with sets that might be either "lists"
+ or undefined \, use [prepend]. Most of the "list" handling objects
+ in Pd are not general enough to handle this situation.;
+ #X text 450 367 WORKING WITH MIXED SETS;
+ #X text 11 373 SETS OF MIXED "ATOMS";
  #X connect 0 0 1 0;
! #X connect 1 0 8 0;
! #X connect 1 1 9 0;
  #X connect 2 0 1 0;
! #X connect 3 0 33 0;
! #X connect 10 0 1 0;
! #X connect 11 0 1 0;
! #X connect 15 0 45 0;
! #X connect 16 0 45 0;
! #X connect 18 0 19 0;
! #X connect 18 1 20 0;
! #X connect 21 0 18 0;
! #X connect 22 0 18 0;
! #X connect 24 0 18 0;
! #X connect 25 0 18 0;
! #X connect 26 0 33 0;
! #X connect 27 0 4 0;
! #X connect 27 0 33 0;
! #X connect 33 0 28 0;
! #X connect 33 1 29 0;
! #X connect 33 2 30 0;
! #X connect 33 3 31 0;
! #X connect 33 4 32 0;
! #X connect 45 0 12 0;
! #X connect 45 1 13 0;
! #X connect 45 2 17 0;
! #X connect 45 3 46 0;
! #X connect 45 4 14 0;
! #X connect 45 5 47 0;
! #X connect 48 0 49 0;
! #X connect 49 0 50 0;
! #X connect 51 0 49 0;
! #X connect 53 0 49 0;

--- NEW FILE: trigger-help.pd ---
#N canvas 145 60 985 628 10;
#X obj 26 16 trigger;
#X text 24 230 As I see it \, the [trigger] object serves two great
purposes which aren't really related - but they might be on some level
that I don't fully understand yet.;
#X text 22 278 1 Sequence a series of bangs - or triggers for symbols
and/or other messages. In the example below \, you should see that
it is important that it is important that [metro] gets a tempo setting
before it is started - but let's assume for a moment that you wanted
to start the [metro] with only a single click.;
#X obj 26 481 metro;
#X msg 51 462 1000;
#X obj 26 501 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 26 404 tgl 15 0 empty empty On/Off 0 -6 0 7 -262144 -1 -1 0
1;
#X text 24 104 The [trigger] object can be abbreviated as "t" and the
creation arguments can be abbreviated as follows:;
#X obj 114 150 trigger float bang symbol list pointer anything;
#X text 215 169 is the same as;
#X obj 218 189 t f b s l p a;
#X obj 26 422 t f b;
#X text 27 526 This example is simple \, and may not be very practicle
in most situations \, but it clearly shows how [trigger] can be used
to create a simple sequence of events. It is important to note however
that the messages sent from [trigger]'s outlets occur in ZERO time
with no delay between the events...more at the top right of the page...
;
#X obj 484 94 t b b;
#X msg 484 75 bang;
#X obj 484 124 timer;
#X floatatom 484 144 5 0 0 0 - - -;
#X obj 456 34 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 456 600 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 518 75 Click here.;
#X text 524 141 Watch here.;
#X text 476 163 Now \, to prove that I'm not crazy...click here >;
#X obj 822 203 timer;
#X floatatom 822 222 5 0 0 0 - - -;
#X obj 847 182 delay 2000;
#X text 597 89 any delay between the first bang and the second bang
;
#X text 598 105 from the trigger.;
#X text 476 198 object to force a 2 second delay between the;
#X text 599 75 In this case \, the [timer] object does not perceive
;
#X text 471 290 2 Click this subpatch to read about [trigger]'s second
great purpose...;
#N canvas 148 22 927 612 trigger_can_convert_data_types 0;
#X msg 425 103 2.5;
#X msg 523 103 bang;
#X msg 465 103 23 64;
#X msg 569 103 symbol dog;
#X obj 425 228 trigger float bang symbol list anything;
#X text 24 24 All sophisticated programming environments provide tools
to convert data types. For instance \, Visual Basic has:;
#X text 24 55 - VarType: to check the data type.;
#X text 24 70 - CStr: to convert a variable to a string.;
#X text 23 84 - CDate: to convert a variable to a date.;
#X text 24 99 - isNumeric: to test whether the variable is a number.
;
#X text 22 113 - etc.;
#X text 19 137 [trigger] is one object in Pd which can convert an incoming
atom to a different type of atom.;
#X text 422 30 In the example below \, you can see that this [trigger]
has creation arguments which specify what data type the object should
output through each outlet. Messages which are sent to the first outlet
will be floats \; the second outlet will send bangs \; the third \,
symbols \; etc.;
#X text 19 172 To prove this \, click on each of the messages below
and watch your terminal window for the output.;
#X obj 20 239 t b;
#X msg 20 210 bang;
#X msg 57 210 1;
#X floatatom 90 212 5 0 0 0 - - -;
#X msg 132 211 symbol cat;
#X msg 204 211 this is anything;
#X obj 20 259 print all_messages_are_converted_to_bangs;
#X text 20 292 Another example showing floats and symbols.;
#X msg 20 308 bang;
#X floatatom 90 310 5 0 0 0 - - -;
#X msg 132 309 symbol cat;
#X msg 206 319 this is anything;
#X obj 20 337 t f s;
#X msg 57 308 1 0;
#X obj 45 387 print converted_to_symbols;
#X obj 20 407 print converted_to_floats;
#X text 62 338 Note that "this is anything" causes an error. That is
because 'anythings' don't conform to floats \, symbols \, lists \,
pointers. They can only be converted to "bang".;
#X text 18 430 In the example above \, note that the trigger object
does not split a list among the outlets like [unpack] does. Instead
it sends all list elements through all outlets and converts them as
necessary.;
#X text 20 486 Also note that some messages don't convert as nicely
as others. Hence \, the symbol "cat" converts to a ZERO when [trigger]
converts that symbol into a float. Likewise \, all numbers will convert
to a symbol called "float" when sent through [trigger]'s right-most
outlet.;
#X floatatom 425 248 5 0 0 0 - - -;
#X obj 482 248 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X symbolatom 539 286 10 0 0 0 - - -;
#X floatatom 594 162 5 0 0 0 - - -;
#X obj 594 200 pack f s;
#X msg 637 161 symbol earth;
#X msg 652 181 symbol jupiter;
#X obj 596 267 print a_list;
#X floatatom 426 403 5 0 0 0 - - -;
#X symbolatom 470 403 10 0 0 0 - - -;
#X obj 514 421 print another_list;
#X text 630 131 Click on all these.;
#X obj 426 363 r anythings;
#X text 425 303 Note how each of the messages sent to this trigger
are converted appropriately for their receiving atoms boxes. Also note
that "anythings" are sent to the example below.;
#X text 430 447 I'e used the [route] object to show how "anythings"
are converted as they pass through the above [trigger]. Note that all
messages converted to floats are displayed here in the number box \,
all symbols are displayed in the symbol box \, and all lists are printed
to the terminal window.;
#X obj 654 247 s anythings;
#X obj 426 383 route float symbol list;
#X msg 642 103 symbol cat;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 4 0;
#X connect 3 0 4 0;
#X connect 4 0 33 0;
#X connect 4 1 34 0;
#X connect 4 2 35 0;
#X connect 4 3 40 0;
#X connect 4 4 48 0;
#X connect 14 0 20 0;
#X connect 15 0 14 0;
#X connect 16 0 14 0;
#X connect 17 0 14 0;
#X connect 18 0 14 0;
#X connect 19 0 14 0;
#X connect 22 0 26 0;
#X connect 23 0 26 0;
#X connect 24 0 26 0;
#X connect 25 0 26 0;
#X connect 26 0 29 0;
#X connect 26 1 28 0;
#X connect 27 0 26 0;
#X connect 36 0 37 0;
#X connect 37 0 4 0;
#X connect 38 0 37 1;
#X connect 39 0 37 1;
#X connect 45 0 49 0;
#X connect 49 0 41 0;
#X connect 49 1 42 0;
#X connect 49 2 43 0;
#X connect 50 0 4 0;
#X restore 475 325 pd trigger_can_convert_data_types;
#X obj 822 238 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 902 164 5 0 0 0 - - -;
#X text 477 246 at the top-right to clearly see "logical time";
#X text 477 259 as measured by [timer].;
#X text 509 554 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X text 472 378 RELATED OBJECTS;
#X obj 557 404 route;
#X obj 477 404 unpack;
#X obj 523 404 pack;
#X obj 598 404 delay;
#X obj 640 404 pipe;
#X obj 675 404 float;
#X obj 715 404 int;
#X obj 744 404 symbol;
#N canvas 0 22 456 306 related_objects_from_other_libraries 0;
#X obj 31 36 exciter 200 200 8 0.1 1 1;
#X text 26 77 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 25 126 The best places to find information about Pd's libraries
is:;
#X text 22 148 www.puredata.org and click on "Downloads" then "Software"
;
#X text 24 163 or;
#X text 24 178 iem.kug.ac.at/pdb/;
#X restore 477 435 pd related_objects_from_other_libraries;
#X obj 940 5 pddp;
#X text 472 463 MORE INFO;
#X obj 479 490 pddp_open all_about_data_types;
#X obj 480 516 pddp_open all_about_lists_vs_anythings;
#X obj 822 157 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 17 138 "float" = f;
#X text 17 150 "bang" = b;
#X text 16 162 "symbol" = s;
#X text 17 176 "list" = l;
#X text 17 204 "anything" = a;
#X text 17 190 "pointer" = p;
#X text 26 45 The [trigger] object outputs its input from right to
left \, converting to the types indicated by its creation arguments.
There is also a "pointer" argument type (see the [pointer] object.)
;
#X text 20 364 Click the toggle to set the tempo and start the [metro]
simultaneously.;
#X text 67 413 Triggers are sent from right to left...so our tempo
messages gets sent to [metro] immediately before the numbers from the
toggle to start and stop the [metro].;
#X text 482 40 Below is a simple structure which will measure the "logical
time" between "bangs" from the [trigger] object.;
#X text 477 184 In this case \, I've simply patched a [delay];
#X text 476 212 first and second "bangs" sent to the [timer].;
#X text 477 232 You can reset the [delay] with the number box;
#X text 86 15 - sequence messages in right-to-left order and convert
data;
#X text 503 15 types;
#X connect 3 0 5 0;
#X connect 4 0 3 1;
#X connect 6 0 11 0;
#X connect 11 0 3 0;
#X connect 11 1 4 0;
#X connect 13 0 15 1;
#X connect 13 1 15 0;
#X connect 14 0 13 0;
#X connect 15 0 16 0;
#X connect 17 0 18 0;
#X connect 22 0 23 0;
#X connect 23 0 31 0;
#X connect 24 0 22 1;
#X connect 32 0 24 1;
#X connect 50 0 24 0;
#X connect 50 0 22 0;

--- help-ctlout.pd DELETED ---

--- help-bendout.pd DELETED ---

--- help-moses.pd DELETED ---

--- NEW FILE: noteout-help.pd ---
#N canvas 233 2 471 650 10;
#X obj 40 15 noteout;
#X obj 41 343 noteout;
#X obj 287 506 pddp_open all_about_midi_flags;
#X text 18 505 for an explanation of MIDI usage in Pd see:;
#X text 13 43 The [noteout] objects writes a note-on MIDI message to
the output port.;
#X text 13 79 inlets:;
#X text 65 106 list - 1st number is interpreted as MIDI note number
\,;
#X text 108 118 the second as velocity and the third (if present);
#X text 110 129 as channel number;
#X text 19 157 right:;
#X text 13 141 middle:;
#X text 66 141 int - velocity;
#X text 21 96 left:;
#X text 64 94 int - MIDI note number (0-127);
#X text 66 155 int - channel number;
#X text 6 175 outlets:;
#X text 65 175 none;
#X text 16 205 Arguments:;
#X text 21 228 MIDI channel number to which a note-on message is to
be sent. If no argument is provided [noteout] transmits on channel
1 (default).;
#X text 12 280 examples:;
#X msg 42 322 60 100 2;
#X text 20 372 (all three above) middle-c with velocity 100 sent to
channel 2;
#X obj 133 343 noteout 2;
#X msg 134 322 60 100;
#X obj 245 287 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 244 326 60;
#X msg 278 324 100;
#X obj 243 305 t b b b;
#X obj 257 345 noteout;
#X msg 308 325 2;
#X text 22 406 See also:;
#X obj 23 427 makenote;
#X text 92 426 -- format a MIDI note (with a note-off message);
#X text 21 452 related object;
#X obj 24 467 notein;
#N canvas 240 135 476 472 other_midi_objects 0;
#X obj 7 29 ctlin;
#X obj 49 29 pgmin;
#X obj 92 28 bendin;
#X obj 143 27 touchin;
#X obj 204 27 polytouchin;
#X obj 289 27 midiin;
#X obj 340 26 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 160 84 bendout;
#X obj 217 83 touchout;
#X obj 281 82 polytouchout;
#X obj 370 82 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X restore 119 467 pd other_midi_objects;
#X text 93 15 - transmit MIDI notes;
#X text 19 543 This document was updated for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 20 0 1 0;
#X connect 23 0 22 0;
#X connect 24 0 27 0;
#X connect 25 0 28 0;
#X connect 26 0 28 1;
#X connect 27 0 25 0;
#X connect 27 1 26 0;
#X connect 27 2 29 0;
#X connect 29 0 28 2;

--- NEW FILE: pgmout-help.pd ---
#N canvas 293 25 488 486 10;
#X obj 19 12 pgmout;
#X obj 19 134 pgmout;
#X floatatom 19 100 5 0 0;
#X floatatom 55 116 5 0 0;
#X text 93 96 Inlets:;
#X text 105 113 Left: int \, program change value;
#X text 105 135 Right: int \, MIDI channel to send the program change
message on.;
#X obj 25 233 pgmout 2;
#X text 30 289 See also:;
#N canvas 240 135 476 472 other_midi_objects 0;
#X obj 7 29 ctlin;
#X obj 49 29 pgmin;
#X obj 92 28 bendin;
#X obj 143 27 touchin;
#X obj 204 27 polytouchin;
#X obj 289 27 midiin;
#X obj 340 26 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 160 84 bendout;
#X obj 217 83 touchout;
#X obj 281 82 polytouchout;
#X obj 370 82 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X restore 109 316 pd other_midi_objects;
#X obj 295 354 pddp_open all_about_midi_flags;
#X text 25 353 for an explanation of MIDI usage in Pd see:;
#X text 92 166 Outlets: None. Sends directly to the MIDI port;
#X floatatom 25 205 5 0 0;
#X obj 31 316 pgmin;
#X text 16 40 Arguments: (optional) and int representing the MIDI channel
to which the program change should be sent. Without an argument it
will send on channel 1 by default.;
#X text 24 262 Send program change message on MIDI channel 2;
#X floatatom 193 205 5 0 0;
#X msg 238 204 2;
#X obj 193 233 pgmout;
#X text 70 12 - send program change messages to the MIDI port;
#X text 23 393 This document was updated for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 2 0 1 0;
#X connect 3 0 1 1;
#X connect 13 0 7 0;
#X connect 17 0 19 0;
#X connect 18 0 19 1;

--- help-clip.pd DELETED ---

--- help-bang.pd DELETED ---

--- help-trigger.pd DELETED ---

Index: all_about_midi_flags.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/all_about_midi_flags.pd,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** all_about_midi_flags.pd	26 Apr 2005 05:34:40 -0000	1.1
--- all_about_midi_flags.pd	28 Apr 2005 00:25:04 -0000	1.2
***************
*** 1,6 ****
  #N canvas 224 22 513 695 10;
! #X text 11 34 MIDI in PD is handled through the 'raw' midi devices
! (such as /dev/midi*). One could specify which MIDI port PD is supposed
! to use through a command line switch when starting PD \, i.e.:;
  #X text 35 95 pd -midiindev 1 -midioutdev 2;
  #X text 43 236 pd -mididev 1;
--- 1,6 ----
  #N canvas 224 22 513 695 10;
! #X text 11 34 MIDI in Pd is handled through the 'raw' midi devices
! (such as /dev/midi*). One could specify which MIDI port Pd is supposed
! to use through a command line switch when starting Pd \, i.e.:;
  #X text 35 95 pd -midiindev 1 -midioutdev 2;
  #X text 43 236 pd -mididev 1;
***************
*** 18,29 ****
  input (it could be a MIDI controller such as a keyboard \, midi-guitar
  \, midi knob box etc) and the device #2 will be used for outputting
! the MIDI (re)generated or sent by PD.;
  #X text 13 181 For using the same device for MIDI input AND output
  (i.e. when one uses a MIDI keyboard which is also a synthesizer) the
  following command line switch will do:;
! #X text 19 470 MIDI objects in PD (the ones that read and write to
  MIDI ports) take a MIDI channel as an argument. Channels 1-16 use the
  first MIDI device \, 17-32 use the second MIDI device and so on. For
! this to work one must specify which devices PD is supposed to use:
  ;
  #X text 39 548 -midiindev 1 \, 2 -- use devices 1 and 2 for input;
--- 18,29 ----
  input (it could be a MIDI controller such as a keyboard \, midi-guitar
  \, midi knob box etc) and the device #2 will be used for outputting
! the MIDI (re)generated or sent by Pd.;
  #X text 13 181 For using the same device for MIDI input AND output
  (i.e. when one uses a MIDI keyboard which is also a synthesizer) the
  following command line switch will do:;
! #X text 19 470 MIDI objects in Pd (the ones that read and write to
  MIDI ports) take a MIDI channel as an argument. Channels 1-16 use the
  first MIDI device \, 17-32 use the second MIDI device and so on. For
! this to work one must specify which devices Pd is supposed to use:
  ;
  #X text 39 548 -midiindev 1 \, 2 -- use devices 1 and 2 for input;
***************
*** 32,38 ****
  #X text 39 580 -mididev 1 \, 2 -- use devices 1 and 2 for input and
  output;
! #X text 17 292 NOTE (Linux): PD counts the MIDI devices starting from
  1 Usually \, the operating system counts them starting with 0 (zero)
! so if you want to use /dev/midi00 \, PD has to be started with -mididev
  1 Always add 1 to the device number.;
  #X text 21 600 NOTE (Windows): -listdev command line option lists all
--- 32,38 ----
  #X text 39 580 -mididev 1 \, 2 -- use devices 1 and 2 for input and
  output;
! #X text 17 292 NOTE (Linux): Pd counts the MIDI devices starting from
  1 Usually \, the operating system counts them starting with 0 (zero)
! so if you want to use /dev/midi00 \, Pd has to be started with -mididev
  1 Always add 1 to the device number.;
  #X text 21 600 NOTE (Windows): -listdev command line option lists all

--- help-tabread.pd DELETED ---

Index: pddp.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/pddp.pd,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** pddp.pd	26 Apr 2005 20:28:55 -0000	1.6
--- pddp.pd	28 Apr 2005 00:25:05 -0000	1.7
***************
*** 1,23 ****
! #N canvas 298 124 488 624 10;
! #X text 25 69 The PDDP was proposed initially in early 2002 by Krzysztof
  Czaja who suggested that Pure Data was in need of comprehensive documentation.
  ;
! #X text 45 181 - Michal Seta;
! #X text 45 154 - Miller Puckette;
! #X text 45 167 - Dave Sabine;
! #X text 14 324 THINGS TO NOTE:;
! #X text 25 430 Externals and other Libraries: Each PDDP document includes
! mention of "related objects from other PD libraries" as well as mention
! of "related native PD objects". The objects from other libraries are
  available only if you download those libraries from their respective
! authors and integrate them properly into your version of PD. We do
  not and cannot maintain a complete list of externals - but we try.
  For more info about externals and other objects \, see http://www.puredata.org/
  and the Pure Data Base at http://iem.kug.ac.at/pdb/;
! #X text 45 195 - Hans-Christoph Steiner;
! #X text 25 265 All comments \, corrections \, etc. regarding the PDDP
  reference files should be directed to the Pd Developers' list: pd-dev at iem.at
  ;
! #X text 26 215 PDDP is now part of the CVS Pd distributions. It was
  originally available at Dave's web site: http://www.davesabine.com/media/puredata.asp
  ;
--- 1,23 ----
! #N canvas 298 124 492 628 10;
! #X text 25 119 The PDDP was proposed initially in early 2002 by Krzysztof
  Czaja who suggested that Pure Data was in need of comprehensive documentation.
  ;
! #X text 45 231 - Michal Seta;
! #X text 45 204 - Miller Puckette;
! #X text 45 217 - Dave Sabine;
! #X text 14 374 THINGS TO NOTE:;
! #X text 25 480 Externals and other Libraries: Each PDDP document includes
! mention of "related objects from other Pd libraries" as well as mention
! of "related native Pd objects". The objects from other libraries are
  available only if you download those libraries from their respective
! authors and integrate them properly into your version of Pd. We do
  not and cannot maintain a complete list of externals - but we try.
  For more info about externals and other objects \, see http://www.puredata.org/
  and the Pure Data Base at http://iem.kug.ac.at/pdb/;
! #X text 45 245 - Hans-Christoph Steiner;
! #X text 25 315 All comments \, corrections \, etc. regarding the PDDP
  reference files should be directed to the Pd Developers' list: pd-dev at iem.at
  ;
! #X text 26 265 PDDP is now part of the CVS Pd distributions. It was
  originally available at Dave's web site: http://www.davesabine.com/media/puredata.asp
  ;
***************
*** 26,34 ****
  #X text 102 5 Pure Data Documentation Project;
  #X obj 25 38 pddp_open table_of_contents;
! #X text 25 342 Authors: If you would like to participate in this project
  \, simply gather together information about objects \, tutorials \,
  examples \, etc. and email pd-dev at iem.at for info about formatting
  your documents. All documents should be committed to the CVS so that
  they will be included in future releases.;
! #X text 25 118 The project was originally managed by Dave Sabine. The
  people involved in this project include (alphabetically):;
--- 26,35 ----
  #X text 102 5 Pure Data Documentation Project;
  #X obj 25 38 pddp_open table_of_contents;
! #X text 25 392 Authors: If you would like to participate in this project
  \, simply gather together information about objects \, tutorials \,
  examples \, etc. and email pd-dev at iem.at for info about formatting
  your documents. All documents should be committed to the CVS so that
  they will be included in future releases.;
! #X text 25 168 The project was originally managed by Dave Sabine. The
  people involved in this project include (alphabetically):;
+ #X obj 25 67 pddp_open glossary;

--- NEW FILE: select-help.pd ---
#N canvas 69 230 1009 667 10;
#X floatatom 19 530 0 0 0 0 - - -;
#X msg 83 488 1;
#X msg 49 488 54;
#X msg 19 488 23;
#X msg 52 126 6;
#X obj 19 165 select 6;
#X msg 19 125 234;
#X floatatom 19 147 0 0 0 0 - - -;
#X obj 19 560 select 23 54 1;
#X obj 46 10 select;
#X text 91 9 - compare numbers or symbols;
#X text 19 38 This object can be abbreviated as;
#X obj 271 37 sel;
#X text 19 55 In its simplest form shown below \, [select] checks its
input agains the constant "6" (which is defined by the creation argument).
If they match \, the first outlet gives "bang" \; otherwise the input
is simply sent through to the second outlet.;
#X obj 19 187 print match;
#X obj 98 187 print NO_match;
#X text 21 217 Note that when the input to [select] matches one of
its creation arguments \, then a "bang" is sent to the outlet \, NOT
the original message.;
#X obj 19 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 45 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 71 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 98 579 5 0 0 0 - - -;
#X text 53 516 If you click-n-drag this number box \, you'll notice
how all numbers except "23" \, "54" \, and "1" are simply sent through
to the rightmost outlet.;
#X text 23 416 Several creation arguments can be defined. In effect
you can use [select] to test the input for many different values. You
will see an outlet for each test value and finally an outlet for values
which match none of them (the rightmost outlet).;
#X obj 635 303 print NO_match;
#X obj 508 302 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 539 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 571 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 603 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 511 92 symbol dog;
#X msg 516 111 symbol cat;
#X msg 524 129 symbol foo;
#X msg 531 149 symbol earth;
#X msg 540 168 symbol 400;
#X obj 508 282 select dog cat foo 400;
#X msg 536 218 400;
#X obj 639 580 print NO_match;
#X obj 512 579 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 543 580 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 575 580 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 607 580 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 508 377 symbol dog;
#X msg 520 404 symbol cat;
#X msg 528 423 symbol foo;
#X msg 535 442 symbol earth;
#X msg 543 463 symbol 400;
#X msg 564 496 400;
#X obj 512 560 select 400 dog cat foo;
#X text 612 160 Notice that "400" here is defined as a symbol data
type and the [select] object can successfully match it to the creation
argment.;
#X text 563 206 Notice that "400" here is a number and the [select]
object cannot successfully match it to the creation argument. That
is because this [select] expects symbols - not numbers.;
#X obj 486 631 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 486 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 508 320 However \, in this case below \, you'll notice that
the FIRST creation argument is a number. Therefore \, this [select]
object expects numbers and will ignore the "symbol" data type.;
#X text 547 264 FIRST CREATION ARGUMENT IS A SYMBOL;
#X text 555 543 FIRST CREATION ARGUMENT IS A NUMBER;
#X text 511 9 [select] can also be used to match symbols like the example
in the upper-right of this patch. It important to note that the FIRST
creation argument indicates to the [select] object which data type
to expect. If your first creation argument is a symbol \, like "dog"
\, then the object will test only symbols and numbers will be ignored!
;
#X text 592 490 Notice that "400" here is a number and the [select]
object can successfully match it to the creation argument.;
#X text 612 457 Notice that "400" here is a symbol and the [select]
object cannot successfully match it to the creation argument.;
#X obj 23 373 sel 42;
#X msg 23 330 42;
#X obj 23 392 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 54 392 5 0 0 0 - - -;
#X floatatom 31 349 5 0 0 0 - - -;
#X floatatom 80 351 5 0 0 0 - - -;
#X text 325 686 This document was updated for Pd version 0.35 test
24 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X obj 514 639 route;
#X text 513 618 RELATED OBJECTS;
#X text 22 614 A WORD ABOUT CONDITIONAL OBJECTS;
#N canvas 245 41 580 582 more 0;
#X text 22 16 Using the [select] object \, and others listed below
\, Pd users can emulate the "conditional" statements of other programming
environments.;
#X text 21 62 Consider the following: (Visual Basic Script);
#X text 60 80 IF input = 1 THEN;
#X text 59 91 response.write("Hello");
#X text 59 104 ELSEIF input = 2 THEN;
#X text 59 116 response.write("GoodBye");
#X text 59 130 ELSEIF (input = 3 AND input < 10) THEN;
#X text 59 153 ELSE;
#X text 58 177 END IF;
#X text 23 195 Now the Pd equivalent:;
#X msg 37 218 1;
#X msg 67 218 2;
#X floatatom 123 221 5 0 0 0 - - -;
#X obj 37 286 sel 1 2;
#X msg 27 418 symbol Hello;
#X msg 48 388 symbol GoodBye;
#X symbolatom 288 428 20 0 0 0 - - -;
#X obj 33 505 ==;
#X obj 61 505 !=;
#X obj 88 505 >;
#X obj 114 505 <;
#X obj 141 505 >=;
#X obj 168 505 <=;
#X text 28 482 OTHER CONDITIONAL/RELATIONAL OBJECTS IN Pd;
#X text 58 164 response.write("No_match_for_me..."& input);
#X text 59 142 response.write("This_is_cool.");
#X obj 74 309 moses 3;
#X msg 84 351 symbol This_is_cool.;
#X obj 111 328 moses 10;
#X obj 220 349 makefilename No_match_for_me...%d;
#X connect 10 0 13 0;
#X connect 11 0 13 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 13 1 15 0;
#X connect 13 2 26 0;
#X connect 14 0 16 0;
#X connect 15 0 16 0;
#X connect 26 1 28 0;
#X connect 27 0 16 0;
#X connect 28 0 27 0;
#X connect 28 1 29 0;
#X connect 29 0 16 0;
#X restore 24 632 pd more;
#N canvas 0 22 456 306 related_objects_from_other_libraries 0;
#X obj 28 15 multiselect;
#X text 19 53 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 18 102 The best places to find information about Pd's libraries
is:;
#X text 15 124 www.puredata.org and click on "Downloads" then "Software"
;
#X text 16 140 or;
#X text 17 154 iem.kug.ac.at/pdb/;
#X restore 555 639 pd related_objects_from_other_libraries;
#X obj 233 397 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 196 332 symbol word;
#X msg 196 351 symbol other;
#X msg 313 350 symbol other;
#X obj 233 377 select word;
#X obj 305 397 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 305 332 symbol word;
#X obj -316 311;
#X text 21 260 Also note that in the example above \, there is a second
inlet. This is used to reset the argument's value like below. This
feature is available only on [select] objects with only ONE creation
argument -- in other example in this patch you'll notice that this
second inlet is absent.;
#X connect 0 0 8 0;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X connect 4 0 7 0;
#X connect 5 0 14 0;
#X connect 5 1 15 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X connect 8 0 17 0;
#X connect 8 1 18 0;
#X connect 8 2 19 0;
#X connect 8 3 20 0;
#X connect 28 0 33 0;
#X connect 29 0 33 0;
#X connect 30 0 33 0;
#X connect 31 0 33 0;
#X connect 32 0 33 0;
#X connect 33 0 24 0;
#X connect 33 1 25 0;
#X connect 33 2 26 0;
#X connect 33 3 27 0;
#X connect 33 4 23 0;
#X connect 34 0 33 0;
#X connect 40 0 46 0;
#X connect 41 0 46 0;
#X connect 42 0 46 0;
#X connect 43 0 46 0;
#X connect 44 0 46 0;
#X connect 45 0 46 0;
#X connect 46 0 36 0;
#X connect 46 1 37 0;
#X connect 46 2 38 0;
#X connect 46 3 39 0;
#X connect 46 4 35 0;
#X connect 50 0 49 0;
#X connect 57 0 59 0;
#X connect 57 1 60 0;
#X connect 58 0 57 0;
#X connect 61 0 57 0;
#X connect 62 0 57 1;
#X connect 70 0 73 0;
#X connect 71 0 73 0;
#X connect 72 0 73 1;
#X connect 73 0 69 0;
#X connect 73 1 74 0;
#X connect 75 0 73 1;

--- NEW FILE: operators-help.pd ---
#N canvas 23 29 924 644 10;
#X obj 637 350 +~;
#X obj 641 499 trigger;
#X text 25 8 ARITHMETIC;
#X text 30 29 Pd's arithmetic objects include:;
#X obj 231 30 +;
#X obj 256 30 -;
#X obj 282 30 *;
#X obj 308 30 /;
#X obj 334 30 pow;
#X obj 359 30 max;
#X obj 385 30 min;
#X obj 32 276 +;
#X floatatom 32 205 0 0 0 0 - - -;
#X floatatom 32 297 0 0 0 0 - - -;
#X floatatom 45 228 0 0 0 0 - - -;
#X msg 63 254 bang;
#X text 98 255 Bang outputs sum;
#X text 70 204 Numbers in left inlet add and output sum;
#X text 87 227 Numbers in right inlet only change the inlet's value
;
#X text 29 171 The example below performs basic addition with two numbers:
i.e. a + b = c;
#X text 28 54 All of these objects operate the same way. The right
inlet sets or changes the numeric value of the object. Sending a number
to the left inlet forces the object to perform the operation with the
current numeric value of the object and output the result. A "bang"
will output the result without changing the numeric values at either
inlet. A creation argument can be used to define the initial numeric
value of the right inlet.;
#X text 29 325 The example below incorporates a creation argument:
i.e. a + 42 = b;
#X floatatom 29 357 0 0 0 0 - - -;
#X floatatom 29 400 0 0 0 0 - - -;
#X obj 29 379 + 42;
#N canvas 38 134 637 241 basic_examples 0;
#X obj 44 129 +;
#X obj 113 129 -;
#X obj 179 129 *;
#X obj 244 129 /;
#X obj 316 129 pow;
#X obj 394 129 max;
#X obj 482 129 min;
#X floatatom 44 32 5 0 0 0 - - -;
#X floatatom 44 150 0 0 0 0 - - -;
#X floatatom 113 149 0 0 0 0 - - -;
#X floatatom 179 149 0 0 0 0 - - -;
#X floatatom 244 149 0 0 0 0 - - -;
#X floatatom 316 149 0 0 0 0 - - -;
#X floatatom 394 150 0 0 0 0 - - -;
#X floatatom 482 149 0 0 0 0 - - -;
#X floatatom 495 32 5 0 0 0 - - -;
#X msg 360 32 bang;
#X connect 0 0 8 0;
#X connect 1 0 9 0;
#X connect 2 0 10 0;
#X connect 3 0 11 0;
#X connect 4 0 12 0;
#X connect 5 0 13 0;
#X connect 6 0 14 0;
#X connect 7 0 0 0;
#X connect 7 0 1 0;
#X connect 7 0 2 0;
#X connect 7 0 3 0;
#X connect 7 0 4 0;
#X connect 7 0 5 0;
#X connect 7 0 6 0;
#X connect 15 0 6 1;
#X connect 15 0 5 1;
#X connect 15 0 4 1;
#X connect 15 0 3 1;
#X connect 15 0 2 1;
#X connect 15 0 1 1;
#X connect 15 0 0 1;
#X connect 16 0 0 0;
#X connect 16 0 1 0;
#X connect 16 0 2 0;
#X connect 16 0 3 0;
#X connect 16 0 4 0;
#X connect 16 0 5 0;
#X connect 16 0 6 0;
#X restore 28 542 pd basic_examples;
#X text 29 425 + - * / are probably self-explanatory...if you are using
PD \, then it is safe to say that you have passed third grade.;
#X text 27 463 However \, [pow] \, [max] \, and [min] objects may need
some explanation.;
#N canvas 0 22 452 302 understanding_POW 0;
#X text 12 25 [POW];
#X obj 17 66 pow 2;
#X floatatom 17 86 2 0 0 0 - - -;
#X msg 17 46 2;
#X text 61 115 - it is important to note that [pow] only works with
NON-negative mantissas. That is to say that negative floating point
fractions will be ignored.;
#X obj 18 153 pow 2;
#X floatatom 18 173 2 0 0 0 - - -;
#X msg 13 111 -2;
#X msg 24 132 -1.5;
#X text 65 202 - however \, [pow] is capable of computing negative
exponents!;
#X floatatom 19 201 0 0 0 0 - - -;
#X obj 19 221 pow -2;
#X floatatom 19 242 0 0 0 0 - - -;
#X text 57 39 - this object is used to exponentiate a number. The object
returns the value at the left inlet to the power of the right inlet
where the left inlet is the base and the right inlet is the exponent.
For example: 2 to the power of 2 = 4 (i.e. 2 Squared);
#X connect 1 0 2 0;
#X connect 3 0 1 0;
#X connect 5 0 6 0;
#X connect 7 0 5 0;
#X connect 8 0 5 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X restore 28 497 pd understanding_POW;
#N canvas 0 22 474 341 understanding_MAX_and_MIN 0;
#X text 34 9 [MAX];
#X obj 32 51 max 10;
#X floatatom 32 29 5 0 0 0 - - -;
#X floatatom 32 76 5 0 0 0 - - -;
#X text 87 26 - [max] returns the greater of the two numbers passed
to its inlets. For example \, if the creation argument (or right inlet)
is equal to 10 \, and you send 9 to the left inlet then the object
will return 10 If you pass it an 11 \, then object returns 11;
#X floatatom 33 116 5 0 0 0 - - -;
#X floatatom 33 163 5 0 0 0 - - -;
#X text 35 96 [MIN];
#X text 88 113 - [min] returns the lesser of the two numbers passed
to its inlets. For example \, if the creation argument (or right inlet)
is equal to 10 \, and you send 9 to the left inlet then the object
will return 9 If you pass it an 11 \, then object returns 10;
#X obj 33 138 min 10;
#X text 32 185 - It is important to note that [max] and [min] output
a number with every number or "bang" that is sent to the left inlet.
;
#X floatatom 35 234 5 0 0 0 - - -;
#X floatatom 35 282 5 0 0 0 - - -;
#X obj 35 256 min 10;
#X obj 76 281 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 80 232 Move this number box above 10;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 5 0 9 0;
#X connect 9 0 6 0;
#X connect 11 0 13 0;
#X connect 13 0 12 0;
#X connect 13 0 14 0;
#X restore 28 519 pd understanding_MAX_and_MIN;
#X obj 430 568 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 430 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 469 20 THE SUM OF MANY NUMBERS;
#X text 473 40 Pd has wonderful object called [expr] which allows you
to write mathematical expressions. I would suggest that you investigate
the [expr] object to process basic mathematical equations with more
than 2 separate values.;
#X msg 481 151 bang;
#X obj 481 203 random 10;
#X obj 543 203 random 10;
#X obj 605 203 random 10;
#X text 509 222 a;
#X text 571 223 b;
#X text 632 222 c;
#X text 512 288 d;
#X floatatom 481 288 0 0 0 0 - - -;
#X obj 481 172 t b b b;
#X obj 481 245 +;
#X obj 481 266 +;
#X floatatom 481 223 0 0 0 0 - - -;
#X floatatom 543 223 0 0 0 0 - - -;
#X floatatom 605 223 0 0 0 0 - - -;
#X text 474 102 Having said that \, it IS possible to build equations
with multiple elements using these basic math objects \, as in the
example below: (i.e. a + b + c = d);
#X text 469 324 RELATED OBJECTS;
#X obj 666 350 -~;
#X obj 695 350 *~;
#X obj 723 350 /~;
#X obj 751 350 max~;
#X obj 781 350 min~;
#X text 540 350 Audio Math;
#X obj 637 374 ==;
#X obj 695 374 >;
#X obj 751 374 <;
#X obj 723 374 >=;
#X obj 781 373 <=;
#X obj 667 374 !=;
#X text 504 375 Relational Tests;
#X text 498 398 Logical Operators;
#X obj 638 398 &;
#X obj 667 398 |;
#X obj 695 398 &&;
#X obj 723 398 ||;
#X obj 751 398 <<;
#X obj 781 398 >>;
#X obj 695 499 expr;
#X obj 637 422 mtof;
#X obj 668 422 ftom;
#X obj 699 422 powtodb;
#X obj 749 422 rmstodb;
#X obj 799 422 dbtopow;
#X obj 849 422 dbtorms;
#X text 445 423 Acoustical Unit Conversion;
#X text 537 450 Higher Math;
#X obj 808 374 mod;
#X obj 835 374 div;
#X obj 641 449 sin;
#X obj 667 449 cos;
#X obj 694 449 tan;
#X obj 721 449 atan;
#X obj 640 473 atan2;
#X obj 731 499 random;
#X obj 678 473 sqrt;
#X obj 709 473 log;
#X obj 735 473 exp;
#X obj 761 473 abs;
#X text 570 499 Other;
#N canvas 181 122 454 304 related_objects_from_other_libraries 0;
#X obj 37 25 vector+;
#X obj 37 45 vector-;
#X obj 37 65 vector*;
#X obj 85 25 vector/;
#X obj 85 45 rgb2hsv;
#X obj 85 65 hsv2rgb;
#X obj 133 25 abs~;
#X obj 133 45 db2v;
#X obj 133 65 v2db;
#X obj 163 25 avg~;
#X obj 164 45 tavg~;
#X obj 164 65 pdf~;
#X obj 201 24 <~;
#X obj 201 45 ==~;
#X obj 201 67 >~;
#X obj 228 25 &&~;
#X obj 228 46 ||~;
#X obj 228 67 matrix~;
#X obj 280 25 mavg;
#X obj 280 46 mean;
#X obj 280 68 divide;
#X obj 323 27 divmod;
#X obj 324 47 minus;
#X obj 324 67 plus;
#X text 29 104 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 28 153 The best places to find information about Pd's libraries
is:;
#X text 25 175 www.puredata.org and click on "Downloads" then "Software"
;
#X text 27 190 or;
#X text 27 205 iem.kug.ac.at/pdb/;
#X obj 370 27 q8_rsqrt~;
#X obj 370 51 q8_sqrt~;
#X restore 520 537 pd related_objects_from_other_libraries;
#X obj 778 499 f;
#X obj 806 499 int;
#X obj 809 398 %;
#X obj 251 539 timer;
#X text 292 584 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X obj 754 449 pow;
#X connect 11 0 13 0;
#X connect 12 0 11 0;
#X connect 14 0 11 1;
#X connect 15 0 11 0;
#X connect 22 0 24 0;
#X connect 24 0 23 0;
#X connect 31 0 30 0;
#X connect 34 0 43 0;
#X connect 35 0 46 0;
#X connect 36 0 47 0;
#X connect 37 0 48 0;
#X connect 43 0 35 0;
#X connect 43 1 36 0;
#X connect 43 2 37 0;
#X connect 44 0 45 0;
#X connect 45 0 42 0;
#X connect 46 0 44 0;
#X connect 47 0 44 1;
#X connect 48 0 45 1;

--- NEW FILE: receive-help.pd ---
#N canvas 1 2 636 634 12;
#X obj 117 554 pddp;
#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 37 44 INLETS:;
#X text 29 170 OUTLETS:;
#X text 14 115 ARGUMENTS:;
#X text 19 213 EXAMPLES:;
#X text 23 369 SEE ALSO:;
#N canvas 109 3 415 264 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 22 148 Externals and other object libraries;
#X obj 25 53 receive~;
#X obj 109 54 send~;
#X obj 171 54 send;
#X obj 220 54 throw~;
#X obj 285 54 catch~;
#X obj 21 103 tabreceive~;
#X obj 129 103 tabsend~;
#X obj 211 103 netsend;
#X obj 287 103 netreceive;
#X text 28 175 [streamin~];
#X text 29 197 [receivelocal];
#X text 29 219 [shoutamp~];
#X text 188 177 [receive13~];
#X text 189 199 [dist];
#X text 191 221 [netdist];
#X text 309 177 [remote];
#X text 287 200 [receiveOSC];
#X obj 350 54 value;
#X restore 117 499 pd Related_Objects;
#N canvas 57 0 649 630 More_Info 0;
#X obj 44 576 pddp_open all_about_send_n_receive;
#X text 25 18 MESSAGES AND DATA TYPES;
#X text 40 41 Pd's [send] and [receive] objects can communicate any
data type that is supported by Pd: floats \, anythings \, lists \,
symbols \, and bangs. However \, you will need to plan ahead in your
patch to ensure that a symbol doesn't accidently arrive at a [float]
object \, or that a list doesn't arrive at a [symbol] object. Consider
the following I have been very careful to keep [send] and [receive]
groups isolated to specific data types - and in the last case \, I
have incorporated a [route] object to properly receive the various
data types at a single [receive] object.;
#X floatatom 32 221 5 0 0 0 - - -;
#X floatatom 73 332 5 0 0 0 - - -;
#X obj 74 278 s a_float;
#X obj 73 306 r a_float;
#X obj 74 249 s whatever;
#X obj 263 248 s whatever;
#X obj 264 277 s a_symbol;
#X obj 264 311 r a_symbol;
#X symbolatom 197 220 10 0 0 0 - - -;
#X text 75 220 click-n-drag;
#X text 282 220 type something;
#X text 473 217 click this;
#X obj 475 324 s whatever;
#X obj 452 294 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 476 353 s a_bang;
#X text 494 296 click this too;
#X obj 476 387 r a_bang;
#X obj 476 415 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 153 345 r whatever;
#X floatatom 153 481 5 0 0 0 - - -;
#X symbolatom 207 459 10 0 0 0 - - -;
#X obj 269 416 print;
#X obj 317 398 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X symbolatom 264 340 10 0 0 0 - - -;
#X obj 262 439 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 27 511 There is a lot of information available about [send]
and [receive] \, but that means there's lots to know! Open the abstraction
below to learn more...;
#X msg 450 234 \; whatever 1 2 3 4 \;;
#X obj 153 370 route float symbol list bang;
#X connect 3 0 5 0;
#X connect 3 0 7 0;
#X connect 6 0 4 0;
#X connect 10 0 26 0;
#X connect 11 0 9 0;
#X connect 11 0 8 0;
#X connect 16 0 15 0;
#X connect 16 0 17 0;
#X connect 19 0 20 0;
#X connect 21 0 30 0;
#X connect 30 0 22 0;
#X connect 30 1 23 0;
#X connect 30 2 24 0;
#X connect 30 2 27 0;
#X connect 30 3 25 0;
#X restore 117 528 pd More_Info;
#X obj 30 18 receive;
#X obj 551 18 r;
#X obj 116 250 s;
#X floatatom 116 226 5 0 0 0 - - -;
#X floatatom 218 255 5 0 0 0 - - -;
#X obj 218 226 r;
#X floatatom 273 255 5 0 0 0 - - -;
#X obj 273 226 r;
#X floatatom 324 255 5 0 0 0 - - -;
#X obj 324 226 r;
#X floatatom 120 309 5 0 0 0 - - -;
#X floatatom 375 335 5 0 0 0 - - -;
#X floatatom 446 335 5 0 0 0 - - -;
#X floatatom 521 335 5 0 0 0 - - -;
#X text 119 289 with creation argument;
#X obj 120 333 s dave;
#X obj 375 306 r dave;
#X obj 446 306 r dave;
#X text 105 115 One - [receive] accepts a single argument (text \,
not numbers) which is a 'name'. All [receive]s of the same name correspond
to a [send] object of that name.;
#X floatatom 220 310 5 0 0 0 - - -;
#X text 107 171 One - outputs the message(s) that are sent from a corresponding
[send] of the same name.;
#X text 109 18 - RECEIVE MESSAGES WITHOUT PATCH CORDS - abbreviation:
;
#X text 104 45 None. Data can be inputted to the [receive] object using
the [send] object or by creating a Pd 'send' command in a message box.
The [receive] object accepts any atom type as input.;
#X floatatom 442 235 5 0 0 0 - - -;
#X msg 442 258 \; dave \$1;
#X floatatom 520 233 5 0 0 0 - - -;
#X msg 520 258 \; hans \$1;
#X obj 521 306 r hans;
#X obj 220 334 s hans;
#X text 114 386 doc/1.manual/x5.htm;
#X text 114 369 doc/1.manual/x2.htm;
#X text 114 403 doc/2.control.examples/09.send_receive.pd;
#X text 114 419 doc/2.control.examples/10.more.messages.pd;
#X text 115 435 doc/2.control.examples/11.review.pd;
#X text 115 452 doc/2.control.examples/13.locality.pd;
#X text 115 470 doc/5.reference/help-message.pd;
#X text 161 555 - Dave Sabine \, September 9 \, 2003;
#X connect 12 0 11 0;
#X connect 14 0 13 0;
#X connect 16 0 15 0;
#X connect 18 0 17 0;
#X connect 19 0 24 0;
#X connect 25 0 20 0;
#X connect 26 0 21 0;
#X connect 28 0 37 0;
#X connect 32 0 33 0;
#X connect 34 0 35 0;
#X connect 36 0 22 0;

--- NEW FILE: otherbinops-help.pd ---
#N canvas 16 22 895 663 10;
#X floatatom 217 438 0 0 0 0 - - -;
#X floatatom 267 517 0 0 0 0 - - -;
#X obj 466 28 &;
#X obj 494 28 |;
#X obj 574 28 &&;
#X obj 601 28 ||;
#X obj 7 25 >;
#X obj 36 25 >=;
#X obj 67 24 ==;
#X obj 125 24 <=;
#X obj 153 24 <;
#X obj 217 417 >;
#X obj 267 496 ==;
#X obj 96 24 !=;
#X obj 521 28 <<;
#X obj 548 28 >>;
#X obj 627 28 %;
#X text 464 5 THE LOGICAL OPERATORS -- A.K.A. "Bit Twiddling";
#X text 6 6 THE RELATIONAL OPERATORS;
#N canvas 0 22 454 304 understanding_%_modulus 0;
#X text 24 23 MODULUS - [%];
#X floatatom 28 187 0 0 0 0 - - -;
#X text 22 40 - this object has nothing to do with percentage!;
#X text 20 54 - a modulus is a number by which two given numbers can
be divided and produce the same remainder.;
#X text 21 81 - in the example below: 9 / 2 = 4.5 \, and 7 / 2 = 3.5.
Hence if 7 and 9 are divided by 2 \, then the remainder of both equations
is .5. Therefore \, the modulus of 7 and 9 is "2".;
#X msg 28 138 9;
#X obj 28 166 % 7;
#X floatatom 62 142 5 0 0 0 - - -;
#X text 20 222 Note that the modulus operator is not a "bitwise" operator
\, but a math function.;
#X connect 5 0 6 0;
#X connect 6 0 1 0;
#X connect 7 0 6 0;
#X restore 476 418 pd understanding_%_modulus;
#X text 478 252 Below is a brief explanation of each of these logical
operators.;
#X text 473 53 These objects are adopted from the mother of all object
oriented languages: C. They are "bitwise" operators which perform logical
and shift operations on 32-bit numbers.;
#X text 467 100 WHAT DOES "BITWISE" MEAN?;
#X text 478 208 Hence \, performing "bitwise" relational tests means
that Pd can compare "1101" to "1001" instead of operating with the
integers that are represented by those binary codes.;
#N canvas 81 197 456 306 understanding_&_AND 0;
#X obj 33 216 &;
#X floatatom 87 182 5 0 0 0 - - -;
#X floatatom 129 183 5 0 0 0 - - -;
#X msg 33 154 13;
#X msg 62 155 9;
#X text 18 18 [&] -- This is the bitwise AND operator which returns
a "1" for each bit position where the corresponding bits of both its
operands are "1". For example:;
#X text 22 67 13 = "1101";
#X text 28 79 9 = "1001";
#X text 15 92 Hence:"1001";
#X obj 33 114 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 33 132 t b b;
#X text 101 66 When comparing the binary codes for 13 and 9 \, we can
see that the first and fourth digits of both codes are 1 Hence the
result will be "1001" -- in other words "9".;
#X floatatom 33 238 0 0 0 0 - - -;
#X connect 0 0 12 0;
#X connect 1 0 0 0;
#X connect 2 0 0 1;
#X connect 3 0 0 0;
#X connect 4 0 0 1;
#X connect 9 0 10 0;
#X connect 10 0 3 0;
#X connect 10 1 4 0;
#X restore 478 286 pd understanding_&_AND;
#N canvas 190 317 454 304 understanding_|_OR 0;
#X floatatom 32 247 0 0 0 0 - - -;
#X floatatom 86 191 5 0 0 0 - - -;
#X floatatom 128 192 5 0 0 0 - - -;
#X msg 32 163 13;
#X msg 61 164 9;
#X text 21 76 13 = "1101";
#X text 27 88 9 = "1001";
#X obj 32 123 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 32 141 t b b;
#X text 18 18 [|] -- This is the bitwise OR operator which returns
a "1" for each bit position where one OR both of the corresponding
bits of both its operands is a "1". For example:;
#X text 14 101 Hence:"1101";
#X text 98 76 When comparing the binary codes for 13 and 9 \, we can
see that the first and fourth digits of both codes are both 1 and the
second position of 13 is a one. Hence the result will be "1101" --
in other words "13".;
#X obj 32 225 |;
#X connect 1 0 12 0;
#X connect 2 0 12 1;
#X connect 3 0 12 0;
#X connect 4 0 12 1;
#X connect 7 0 8 0;
#X connect 8 0 3 0;
#X connect 8 1 4 0;
#X connect 12 0 0 0;
#X restore 478 307 pd understanding_|_OR;
#N canvas 0 22 454 304 understanding_<<_LEFT-SHIFT 0;
#X obj 46 142 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 46 160 t b b;
#X msg 46 181 13;
#X obj 46 222 <<;
#X floatatom 46 244 5 0 0 0 - - -;
#X msg 74 181 2;
#X floatatom 112 193 5 0 0 0 - - -;
#X floatatom 160 193 5 0 0 0 - - -;
#X text 29 25 [<<] -- This is the left shift operator and it works
by shifting the digits of the binary representation of the first operand
(left inlet) to the left by the number of places specified by the second
operand (right inlet). The spaces created to the right are filled by
zeros \, and any digits falling off the left are discarded. The following
code returns 52 as the binary of 13 ("1101") is shifted two places
to the left giving "110100":;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 5 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 5 0 3 1;
#X connect 6 0 3 0;
#X connect 7 0 3 1;
#X restore 477 328 pd understanding_<<_LEFT-SHIFT;
#N canvas 0 22 456 380 understanding_>>_RIGHT-SHIFT 0;
#X obj 41 155 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 41 173 t b b;
#X floatatom 41 257 5 0 0 0 - - -;
#X floatatom 107 206 5 0 0 0 - - -;
#X floatatom 155 206 5 0 0 0 - - -;
#X msg 41 194 13;
#X obj 41 235 >>;
#X msg 69 194 2;
#X text 33 21 [>>] -- This is the sign-propagating right shift operator
which shifts the digits of the binary representation of the first operand
(left inlet) to the right by the number of places specified by the
second operand (right inlet) \, discarding any shifted off to the right.
The copies of the leftmost bit are added on from the left \, thereby
preserving the sign of the number. This next examples returns 3 ("11")
as the two right-most bits of 13 ("1101") are shifted off to the right
and discarded.;
#X text 33 284 Note that this object preserves negative values for
negative operands. ("sign-propagating").;
#X connect 0 0 1 0;
#X connect 1 0 5 0;
#X connect 1 1 7 0;
#X connect 3 0 6 0;
#X connect 4 0 6 1;
#X connect 5 0 6 0;
#X connect 6 0 2 0;
#X connect 7 0 6 1;
#X restore 477 350 pd understanding_>>_RIGHT-SHIFT;
#N canvas 56 51 528 425 understanding_&&_LOGICAL-AND 0;
#X msg 56 269 5;
#X obj 25 319 &&;
#X floatatom 25 339 5 0 0 0 - - -;
#X floatatom 194 277 5 0 0 0 - - -;
#X text 12 26 [&&] - This is the logical AND operator \, which returns
a Boolean true (a one) if both operands are true. Logically it follows
that if the first operand is false \, then the whole expression is
false \, and this is how the objects works: It first evaluates the
left hand operand (left inlet) and if this returns false (zero) then
\, without going any further \, it returns a false (a zero). Otherwise
it returns the value of the second operand (right inlet).;
#X floatatom 237 277 5 0 0 0 - - -;
#X text 25 364 Note that this is not a bitwise operator. It compares
floats.;
#X obj 25 227 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 25 245 t b b;
#X msg 25 269 17;
#X text 12 145 In other words \, IF the left inlet is zero \, THEN
output zero. ELSEIF the left inlet is non-zero AND the right inlet
is zero \, then output zero. ELSEIF the left inlet is non-zero AND
the right inlet is non-zero \, THEN output non-zero!;
#X obj 91 227 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 91 245 t b b;
#X msg 91 269 17;
#X msg 122 269 0;
#X connect 0 0 1 1;
#X connect 1 0 2 0;
#X connect 3 0 1 0;
#X connect 5 0 1 1;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 8 1 0 0;
#X connect 9 0 1 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 12 1 14 0;
#X connect 13 0 1 0;
#X connect 14 0 1 1;
#X restore 477 373 pd understanding_&&_LOGICAL-AND;
#N canvas 244 51 530 427 understanding_||_LOGICAL-OR 0;
#X msg 56 269 5;
#X floatatom 25 339 5 0 0 0 - - -;
#X floatatom 196 280 5 0 0 0 - - -;
#X floatatom 239 280 5 0 0 0 - - -;
#X text 25 364 Note that this is not a bitwise operator. It compares
floats.;
#X obj 25 227 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 25 245 t b b;
#X msg 25 269 17;
#X text 17 21 [||] -- This is the logical OR operator and it returns
a value of true (non-zero) if one or both of the operands is true.
It works by first evaluating the left-hand operand (left inlet) and
\, if this is true \, diregarding the right-hand operand (right inlet)
and returning a non-zero. If \, however \, the left-hand operand (left
inlet) is false \, then it returns the value of the right-hand operand
(right inlet).;
#X text 12 145 In other words \, IF the left inlet is non-zero \, THEN
output non-zero. ELSEIF the left inlet is zero AND the right inlet
is zero \, then output zero. ELSEIF the left inlet is zero AND the
right inlet is non-zero \, THEN output non-zero!;
#X obj 25 319 ||;
#X obj 96 226 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 96 244 t b b;
#X msg 96 268 0;
#X msg 127 268 0;
#X connect 0 0 10 1;
#X connect 2 0 10 0;
#X connect 3 0 10 1;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 6 1 0 0;
#X connect 7 0 10 0;
#X connect 10 0 1 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 12 1 14 0;
#X connect 13 0 10 0;
#X connect 14 0 10 1;
#X restore 477 395 pd understanding_||_LOGICAL-OR;
#X obj 432 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 432 607 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 54 186 == 42;
#X floatatom 54 165 5 0 0 0 - - -;
#X floatatom 28 212 2 0 0 0 - - -;
#X obj 53 211 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 24 161 42;
#X text 9 143 For example: IF 42 is equal to x \, then "1" (True);
#X text 73 203 Note that the object outputs 1 or 0 with every incoming
message.;
#X text 10 233 All of these objects operate the same way. The right
inlet or creation argument sets the "condition" to which the incoming
messages are compared. The left inlet accepts numbers or a "bang" --
a number will reset the value and output a true or false (1 or 0) depending
on whether or not the incoming value meets the necessary condition.
A "bang" will force the object to output a true or false (1 or 0) based
on the value that is already stored in the left inlet.;
#X floatatom 25 378 5 0 0 0 - - -;
#X floatatom 98 345 5 0 0 0 - - -;
#X text 10 376 a;
#X text 138 344 b;
#X text 63 439 Is a greater than b?;
#X floatatom 242 478 0 0 0 0 - - -;
#X text 17 478 Is a greater than or equal to b?;
#X obj 242 457 >=;
#X text 136 517 Is a equal to b?;
#X obj 295 534 !=;
#X floatatom 295 554 0 0 0 0 - - -;
#X obj 325 367 r a_b;
#X obj 325 386 unpack f f;
#X obj 25 395 pack f f;
#X obj 25 415 s a_b;
#X obj 98 361 bang;
#X text 142 555 Is a NOT equal to b?;
#X floatatom 321 592 0 0 0 0 - - -;
#X text 185 592 Is a less than b?;
#X obj 321 572 <;
#X floatatom 346 631 0 0 0 0 - - -;
#X obj 346 611 <;
#X text 138 631 Is a less than or equal to b?;
#X text 464 583 This document was updated for Pd version 0.35 test
29 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X text 461 460 RELATED OBJECTS;
#X obj 853 477 +;
#X text 460 477 Visit the Help document for MATH for more math objects:
;
#N canvas 0 22 452 302 related_objects_from_other_libraries 0;
#X obj 47 34 strcomp;
#X text 102 33 Relational tests for strings.;
#X text 29 104 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 28 153 The best places to find information about Pd's libraries
is:;
#X text 25 175 www.puredata.org and click on "Downloads" then "Software"
;
#X text 27 190 or;
#X text 27 205 iem.kug.ac.at/pdb/;
#X restore 482 501 pd related_objects_from_other_libraries;
#X text 478 120 Well \, these objects perform "relational" tests on
the binary forms of 32-bit numbers. For example \, the number 13 is
represented in your computer's operating system in binary code by "1101"
and the number 9 is "1001". Each of those binary digits is an 8-bit
word: 8 bits * 4 digits = 32-bits!;
#X obj 179 24 mod;
#X obj 206 24 div;
#X text 8 84 Most relational operators output a boolean value: true
or false (1 or 0) depending on the relation between the input (left
inlet) and the condition (right inlet or creation argument).;
#N canvas 7 22 514 656 understanding_MOD_and_DIV 0;
#X text 24 5 [mod] and [div] are helpful objects to determine whether
or not a fraction produces a remainder \, or to determine the value
of the remainder.;
#X text 24 80 while \, 4 / 3 = 1 with a remainder of 1;
#X text 25 51 For example \, 3 / 3 = 1 with a remainder of zero (i.e.
no remainder).;
#X floatatom 26 190 0 0 0 0 - - -;
#X floatatom 26 232 0 0 0 0 - - -;
#X floatatom 138 192 0 0 0 0 - - -;
#X text 58 191 divided by;
#X text 173 193 has a remainder of;
#X floatatom 300 193 0 0 0 0 - - -;
#X obj 26 211 mod;
#X text 22 103 [mod] takes a number in its left inlet and will divide
that number by either the creation argument or the number given at
its left inlet and will produce the value of the remainder at its outlet.
If no creation argument is given \, then the default value is 1;
#X obj 78 173 loadbang;
#X msg 138 173 1;
#X text 23 255 [div] takes a number in its left inlet and will divide
that number by either the creation argument or the number given at
its left inlet and will produce the result without a remainder. If
no creation argument is given \, then the default value is 1;
#X floatatom 28 341 0 0 0 0 - - -;
#X floatatom 28 383 0 0 0 0 - - -;
#X floatatom 140 343 0 0 0 0 - - -;
#X text 60 342 divided by;
#X floatatom 256 344 0 0 0 0 - - -;
#X obj 80 324 loadbang;
#X msg 140 324 1;
#X obj 28 362 div;
#X text 176 343 is equal to;
#X text 294 343 with no remainder.;
#X obj 257 371 /;
#X floatatom 257 391 0 0 0 0 - - -;
#X text 227 389 or;
#X text 297 392 with a remainder.;
#X text 23 408 In the following example \, I've built a metronome which
counts bar numbers and beat numbers: default time signature is 4/4
(Common Time).;
#X obj 23 489 metro 500;
#X obj 23 470 tgl 15 0 empty empty Start-Stop 0 -6 0 8 -262144 -1 -1
0 1;
#X obj 48 510 + 1;
#X floatatom 23 530 0 0 0 0 - - -;
#X text 52 532 Total Beat Count;
#X obj 23 559 div 4;
#X obj 134 560 mod 4;
#X floatatom 219 601 0 0 0 0 - - -;
#X floatatom 108 600 0 0 0 0 - - -;
#X obj 23 510 f 1;
#X msg 107 468 1;
#X obj 23 579 + 1;
#X obj 134 579 + 1;
#X text 131 468 Reset;
#X text 34 599 Bar number;
#X text 147 601 Beat Count;
#X floatatom 339 511 0 0 0 0 - - -;
#X text 176 511 How many beats per bar?;
#X connect 3 0 9 0;
#X connect 4 0 8 0;
#X connect 5 0 9 1;
#X connect 9 0 4 0;
#X connect 11 0 12 0;
#X connect 12 0 5 0;
#X connect 14 0 21 0;
#X connect 14 0 24 0;
#X connect 15 0 18 0;
#X connect 16 0 21 1;
#X connect 16 0 24 1;
#X connect 19 0 20 0;
#X connect 20 0 16 0;
#X connect 21 0 15 0;
#X connect 24 0 25 0;
#X connect 29 0 38 0;
#X connect 30 0 29 0;
#X connect 31 0 38 1;
#X connect 32 0 34 0;
#X connect 32 0 35 0;
#X connect 34 0 40 0;
#X connect 35 0 41 0;
#X connect 38 0 31 0;
#X connect 38 0 32 0;
#X connect 39 0 38 1;
#X connect 40 0 37 0;
#X connect 41 0 36 0;
#X connect 45 0 35 1;
#X connect 45 0 34 1;
#X restore 9 58 pd understanding_MOD_and_DIV;
#X connect 11 0 0 0;
#X connect 12 0 1 0;
#X connect 30 0 31 0;
#X connect 32 0 34 0;
#X connect 32 0 35 0;
#X connect 33 0 32 0;
#X connect 36 0 32 0;
#X connect 40 0 53 0;
#X connect 41 0 53 1;
#X connect 41 0 55 0;
#X connect 47 0 45 0;
#X connect 49 0 50 0;
#X connect 51 0 52 0;
#X connect 52 0 11 0;
#X connect 52 0 47 0;
#X connect 52 0 12 0;
#X connect 52 0 49 0;
#X connect 52 0 59 0;
#X connect 52 0 61 0;
#X connect 52 1 11 1;
#X connect 52 1 47 1;
#X connect 52 1 12 1;
#X connect 52 1 49 1;
#X connect 52 1 59 1;
#X connect 52 1 61 1;
#X connect 53 0 54 0;
#X connect 55 0 40 0;
#X connect 59 0 57 0;
#X connect 61 0 60 0;

--- help-float.pd DELETED ---

--- NEW FILE: realtime-help.pd ---
#N canvas 64 358 939 645 10;
#X msg 43 113 bang;
#X msg 18 91 bang;
#X floatatom 18 157 0 0 0;
#X text 90 159 Output is in milliseconds;
#X text 53 91 Click here to start or reset;
#X obj 52 545 time_measurements;
#X obj 52 441 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 17 572 0 0 0;
#X floatatom 108 585 0 0 0;
#X floatatom 175 573 0 0 0;
#X text 9 357 In the example below \, I've created an abstraction which
will force each of Pd's stop-watches \, [timer] [cputime] and [realtime]
to measure various processes and report the elapsed time. Click on
each [bng] to begin the process and wait for the results. Notice the
discrepancies in the results.;
#X text 15 587 Logical Time;
#X text 173 587 Real Time;
#X text 107 601 CPU Time;
#X obj 67 477 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 72 435 1 Measures elapsed time between two "bangs" from a [trigger]
object.;
#X text 87 469 2 Measures the amount of time Pd requires to turn on
DSP and start an oscillator.;
#X obj 445 484 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 445 17 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 472 36 WHY THE DISCREPANCIES BETWEEN CLOCKS?;
#X text 475 59 In a fantasy world \, computers could exist somehow
beyond the restrictions of time and digital computation could be performed
in ZERO time. However \, that is not the case. Instead \, every process
within Pd and within your operating system requires at least a few
nanoseconds of your CPU's time.;
#X obj 111 509 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 476 144 The [timer] object is like a clock that is not constrained
to the regular laws of physics and the universal space-time continuum.
It reports "time" measurements as only Pd can see them!;
#X text 477 204 The [cputime] object is like a clock that measures
how much time your CPU actually required to carry out your request.
Keep in mind however that your CPU is busy doing many things simoultaneously
\, so even though a process might take 5 minutes to complete \, your
CPU does not pay full attention to that process for the entire 5 minutes.
Instead \, it simply begins the process \, then refers back to that
process from time to time until the it is complete. In other cases
\, your CPU might require a full 5 minutes while Pd might report that
merely a few milliseconds have passed. This type of discrepancy depends
heavily on your computer's hardware and the type of processing it is
performing.;
#X text 478 368 The [realtime] object is as much like your own wrist
watch as Pd can possibly manage. It measures time according to your
operating system's internal clock.;
#N canvas 0 0 454 304 related_objects_from_other_libraries 0;
#X text 27 63 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 26 112 The best places to find information about Pd's libraries
is:;
#X text 23 134 www.puredata.org and click on "Downloads" then "Software"
;
#X text 25 149 or;
#X text 25 164 iem.kug.ac.at/pdb/;
#X obj 44 24 t3_timer;
#X text 469 589 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X restore 505 476 pd related_objects_from_other_libraries;
#X text 309 580 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X obj 607 445 metro;
#X text 504 422 RELATED OBJECTS;
#X obj 504 446 cputime;
#X text 132 501 3 Measures the amount of time Pd requires count to
three...please wait for approximately 3 seconds.;
#X obj 25 15 realtime;
#X text 83 15 -- ask Operating System for elasped real time;
#X text 13 44 The [realtime] object measures elapsed "real" time as
measured by your operating system.;
#X obj 18 135 realtime;
#X text 81 114 Click here to get elapsed real time. Click again...and
again...to see periodic measurements from the start or reset time.
;
#X text 11 185 [realtime] works like essentially like a stop-watch.
Once it starts \, you can continue to "poll" [realtime] to view the
elapsed time.;
#X text 11 232 The odd aspect about comparing [realtime] to a stop-watch
is that a stop-watch can be stopped! [realtime] can only be started
or reset. It cannot be stopped.;
#X text 9 282 As stated above \, [realtime] measures "real" or actual
time. This value may be slightly different that CPU time or "logical"
time. Pd offers two objects which measure CPU time and "logical" time.
See the reference documents for those objects for more information.
;
#X obj 562 445 timer;
#X connect 0 0 34 1;
#X connect 1 0 34 0;
#X connect 5 0 7 0;
#X connect 5 1 8 0;
#X connect 5 2 9 0;
#X connect 6 0 5 0;
#X connect 14 0 5 1;
#X connect 18 0 17 0;
#X connect 21 0 5 2;
#X connect 34 0 2 0;

--- help-pgmout.pd DELETED ---

Index: pddp-style-guide.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/pddp-style-guide.pd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** pddp-style-guide.pd	27 Nov 2004 20:05:39 -0000	1.3
--- pddp-style-guide.pd	28 Apr 2005 00:25:05 -0000	1.4
***************
*** 1,28 ****
! #N canvas 196 180 459 553 10;
! #X text 15 38 Here are various text conventions for discussing various
! aspects of Pd in text:;
! #X text 30 108 "anything" \, "bang" \, "float" \, "list" \, "pointer"
! \, "symbol";
! #X text 15 138 objects:;
! #X text 30 157 [route] \, [set] \, [float] \, [symbol] \, [trigger]
! \, etc.;
! #X text 15 191 messages:;
! #X text 30 214 [send 1( \, [set 0( \,;
! #X text 15 270 design principles;
! #X text 50 300 - Make states visible and visibly distinguished;
! #X text 50 315 - Teach by example \, not by formalism;
! #X text 50 330 - Communicate visually;
! #X text 50 345 - Offer informative feedback;
! #X text 50 360 - Strive for consistency;
! #X text 50 375 - Avoid arbitrary syntax;
! #X text 50 390 - Use standard language;
! #X text 50 405 - Use the application's terminology;
! #X text 50 420 - Support clear conceptual models for documentation
  ;
! #X text 50 435 - Respect the rules of human conversation;
! #X text 50 450 - Respond with an appropriate amount of information
  ;
- #X text 17 88 reserved words:;
  #X obj 2 2 cnv 15 450 20 empty empty pddp-style-guide 2 11 1 18 -233017
  -66577 0;
  #X obj 418 3 pddp;
--- 1,33 ----
! #N canvas 102 76 462 561 10;
! #X text 15 30 design principles;
! #X text 50 50 - Make states visible and visibly distinguished;
! #X text 50 65 - Teach by example \, not by formalism;
! #X text 50 80 - Communicate visually;
! #X text 50 95 - Offer informative feedback;
! #X text 50 110 - Strive for consistency;
! #X text 50 125 - Avoid arbitrary syntax;
! #X text 50 140 - Use standard language;
! #X text 50 155 - Use the application's terminology;
! #X text 50 170 - Support clear conceptual models for documentation
  ;
! #X text 50 185 - Respect the rules of human conversation;
! #X text 50 200 - Respond with an appropriate amount of information
  ;
  #X obj 2 2 cnv 15 450 20 empty empty pddp-style-guide 2 11 1 18 -233017
  -66577 0;
  #X obj 418 3 pddp;
+ #X obj 14 529 pddp_open standard_gui_elements;
+ #X text 15 230 Here are various text conventions for discussing various
+ aspects of Pd in text:;
+ #X text 30 300 "anything" \, "bang" \, "float" \, "list" \, "pointer"
+ \, "symbol";
+ #X text 15 330 objects:;
+ #X text 30 349 [route] \, [set] \, [float] \, [symbol] \, [trigger]
+ \, etc.;
+ #X text 15 383 messages:;
+ #X text 30 406 [send 1( \, [set 0( \,;
+ #X text 17 280 reserved words:;
+ #X text 15 441 Though an old term in the realm of the Max family of
+ languages \, "abstraction" is a misleading term. Pd patches are either
+ applications or objects. If a Pd patch is meant to be reused in other
+ patches \, it is an object just like any other.;

--- NEW FILE: adc~-help.pd ---
#N canvas 2 1 611 606 12;
#X obj 104 540 pddp;
#X obj 8 8 cnv 15 90 553 empty empty empty 20 12 0 14 -233017 -66577
0;
#N canvas 85 2 593 609 More_Info 0;
#X text 16 13 MULTI-CHANNEL AUDIO;
#X text 32 40 All sound cards are capable of at least two channels
of audio. Pd supports these two channels by default and uses your system's
generic audio drivers to communicate with your hardware. However \,
for faster input/output and for more than two channels of audio \,
PD incorporates the use of "PortAudio" which uses ASIO drivers to communicate
with your hardware. So \, to instruct Pd to use more than two channels
of audio \, your command line should read like below:;
#X text 93 182 c:/pd/bin/pd.exe -pa -inchannels 8 -outchannels 8;
#X text 32 211 The "-pa" switch means "PortAudio". This switch is new
as of Pd version 0.37 TEST 4 and replaces the old "-asio" switch.;
#X text 32 271 The "-inchannels" and "-outchannels" switches can be
summarized by using "-channels 8" because currently PortAudio requires
that the number of incoming and outgoing channels must be equal. This
may change in the Pd's future...;
#X text 32 361 To further optimize Pd's usage of your audio hardware
\, you can explore the following:;
#X text 42 402 - audiobuf;
#X text 43 420 - blocksize;
#X text 42 436 - audioindev;
#X text 42 454 - audiooutdev;
#X text 38 480 With the right hardware \, Pd can manage audio input
and output with lower than 10 milliseconds of latency.;
#X restore 104 514 pd More_Info;
#N canvas 85 2 395 244 Related_Objects 0;
#X text 25 8 Native Pd Objects;
#X text 25 92 Externals and other object libraries;
#X obj 45 46 dac~;
#X obj 98 46 switch~;
#X obj 171 46 block~;
#X restore 104 488 pd Related_Objects;
#X text 16 107 ARGUMENTS:;
#X text 32 188 OUTLETS:;
#X text 23 344 EXAMPLES:;
#X text 20 487 SEE ALSO:;
#X obj 33 20 adc~;
#X text 30 53 PURPOSE:;
#X text 108 18 - AUDIO INPUT: ANALOG/DIGITAL CONVERTER SIGNAL;
#X text 152 541 - Dave Sabine \, May 6 \, 2003;
#X text 104 53 [adc~] is an acronym meaning "Analog/Digital Converter
Signal" and is Pd's interface to access the audio information arriving
at your soundcard(s).;
#X text 106 106 The object defaults to 2 incoming audio channels (usually
a left and right stereo pair). Any number of arguments (integers) can
be used to define multiple input channels - each integer corresponds
to an input channel on your audio hardware.;
#X text 107 188 Signal: the number of outlets correspond with the number
of arguments - each outlet represents an input channel on your audio
hardware which corresponds to the argument you provide. If no arguments
are provided \, then there are two outlets which represent audio channels
1 and 2 on your computers sound card.;
#X text 107 290 The information at each outlet is an audio signal (i.e.
the object operates at 'audio-rate') and therefore must be connected
to an audio inlet on a related object.;
#X obj 109 346 adc~;
#X text 153 346 default stereo signals: same as;
#X obj 411 348 adc~ 1 2;
#X obj 109 373 adc~ 5;
#X text 167 374 a mono signal from channel 5;
#X obj 109 404 adc~ 1 3 8 6 11 15 19 22 23 24 36;
#X text 383 405 11 channels of audio;
#X obj 109 434 adc~ 1 2 3 4 5 6 7 8;
#X text 280 435 all channels on an 8-channel device;

--- NEW FILE: pack-help.pd ---
#N canvas 13 -7 937 656 10;
#X obj 25 11 pack;
#X text 60 11 - combine several atoms into one message;
#X msg 24 190 bang;
#X obj 24 210 pack 100 0 s 42;
#X text 24 249 In the same example \, this [pack] object will recognize
floats in the first \, second \, and fourth inlet \; it will recognize
symbols in the third inlet. If it receives anything else \, then you'll
see the "no method for ___" error message in the terminal window.;
#X obj 25 366 pack 100 0 s 42;
#X msg 25 328 400 1 cat 38;
#X text 110 328 This works.;
#X msg 37 347 cat dog 42 earth;
#X obj 30 534 pack cat;
#X text 24 419 So \, if [pack] understands that "100" is a float and
can therefore understand all incoming numbers to that inlet...then
you might assume that the word "cat" could be written as a creation
argument and [pack] should understand all incoming symbols. But that's
NOT the case. If you try to define a [pack] symbol with the word "cat"
in a creation argument \, you'll get a "bad type" error.;
#X text 38 516 WRONG;
#X obj 142 538 pack symbol;
#X text 222 528 CORRECT;
#X obj 142 559 print this_package;
#X msg 142 517 cat;
#X text 40 382 Note that the "s" above is an abbreviation for "symbol".
;
#X obj 30 611 pack bang;
#X text 29 578 Same problem with bangs! This [pack] object creates
an error.;
#X obj 416 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 416 604 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 448 106 [pack] can be created with any number of creation arguments.
There will be one inlet created for each argument and the values of
each [pack]ed element can be updated at any time using the separate
inlets \; or they can be updated simoultaneously with a LIST of messages
to its first inlet.;
#X text 609 75 is the same as;
#X obj 24 231 print package_1;
#X obj 25 399 print package_2;
#X obj 444 489 print my_package;
#X msg 467 271 1 2 dog;
#X text 518 266 This list doesn't contain enough elements \; so it
resets only the first three elements and then outputs the entire package
- the undefined elements will simply output their previous values.
;
#X obj 444 197 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 476 376 5 0 0;
#X floatatom 474 329 5 0 0;
#X msg 537 423 100 earth me 42;
#X text 548 441 Lists can only be sent to the first inlet -- this list
will cause an error.;
#X text 520 326 A new value for the first element will reset the first
element and force [pack] to output the entire package of stored values.
;
#X text 451 16 Perhaps the best way to build creation arguments is
to define the data types that [pack] should expect at each inlet: (i.e.
floats \, symbols \, or pointers -- or their abbreviations f \, s \,
or p);
#X obj 450 75 pack float symbol pointer;
#X obj 704 76 pack f s p;
#X msg 457 247 42 24 dog cat 1 2;
#X obj 444 469 pack f f s s f f;
#X text 572 247 This list contains new values for each element.;
#X text 19 127 In the example below \, the creation arguments are "100
\, 0 \, a symbol \, 42". Hence \, when [pack] receives a bang \, it
will send that information to its outlet as a list - or 'package' -
which will be printed in your terminal window.;
#X text 144 348 This doesn't work - the data types;
#X text 143 362 don't correspond with the arguments.;
#X text 17 33 The pack object takes a series of inputs and then outputs
a concatenated list. The number of creation arguments determines the
number of inlets while the type of creation arguments determines the
types of messages that [pack] should expect to receive at each inlet
- although with some peculiarities described below.;
#X text 463 191 Any message to the first inlet will force [pack] to
output its package - its list of values. A bang to the first inlet
will force [pack] to output the current values without resetting any
of them.;
#X text 522 366 This number box will update each of the 'float' values
and will NOT output the package - because the first inlet is not receiving
a message - to change this behavior \, you should explore the [trigger]
object.;
#X text 443 523 RELATED OBJECTS;
#X obj 442 546 trigger;
#X obj 495 546 unpack;
#N canvas 0 0 452 302 related_objects_from_other_libraries 0;
#X obj 21 16 pack~;
#X obj 61 16 unpack~;
#X obj 113 16 tabdump;
#X obj 169 16 niagara;
#X obj 224 16 packel;
#X obj 21 42 repack;
#X obj 70 42 drip;
#X obj 107 42 sort;
#X text 18 86 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 135 The best places to find information about Pd's libraries
is:;
#X text 14 157 www.puredata.org and click on "Downloads" then "Software"
;
#X text 15 173 or;
#X text 16 187 iem.kug.ac.at/pdb/;
#X restore 440 571 pd related_objects_from_other_libraries;
#X text 443 601 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 2 0 3 0;
#X connect 3 0 23 0;
#X connect 5 0 24 0;
#X connect 6 0 5 0;
#X connect 8 0 5 0;
#X connect 12 0 14 0;
#X connect 15 0 12 0;
#X connect 19 0 20 0;
#X connect 26 0 38 0;
#X connect 28 0 38 0;
#X connect 29 0 38 1;
#X connect 29 0 38 4;
#X connect 29 0 38 5;
#X connect 30 0 38 0;
#X connect 31 0 38 1;
#X connect 37 0 38 0;
#X connect 38 0 25 0;

--- NEW FILE: timer-help.pd ---
#N canvas 11 8 937 643 10;
#X msg 43 113 bang;
#X msg 18 91 bang;
#X obj 18 135 timer;
#X obj 25 15 timer;
#X floatatom 18 157 0 0 0;
#X text 90 159 Output is in milliseconds;
#X text 65 16 -- measure logical time;
#X text 53 91 Click here to start or reset;
#X text 13 44 The [timer] object measures elapsed logical time. Logical
time moves forward as if all computation were instantaneous and as
if all [delay] and [metro] objects were exact.;
#X text 11 185 [timer] works like essentially like a stop-watch. Once
it starts \, you can continue to "poll" the [timer] to view the elapsed
time.;
#X text 81 114 Click here to get elapsed logical time. Click again...and
again...to see periodic measurements from the start or reset time.
;
#X text 10 282 As stated above \, [timer] measures "logical" time.
This value may be slightly different that CPU time or "real" time.
PD offers two objects which measure CPU time and "real" time. See the
reference documents for those objects for more information.;
#X obj 52 545 time_measurements;
#X obj 52 441 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 17 572 0 0 0;
#X floatatom 108 585 0 0 0;
#X floatatom 175 573 0 0 0;
#X text 11 358 In the example below \, I've created an abstraction
which will force each of Pd's stop-watches \, [timer] [cputime] and
[realtime] to measure various processes and report the elapsed time.
Click on each [bng] to begin the process and wait for the results.
Notice the discrepancies in the results.;
#X text 15 587 Logical Time;
#X text 173 587 Real Time;
#X text 107 601 CPU Time;
#X obj 67 477 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 72 435 1 Measures elapsed time between two "bangs" from a [trigger]
object.;
#X text 87 469 2 Measures the amount of time Pd requires to turn on
DSP and start an oscillator.;
#X obj 445 484 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 445 17 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 472 36 WHY THE DISCREPANCIES BETWEEN CLOCKS?;
#X text 475 59 In a fantasy world \, computers could exist somehow
beyond the restrictions of time and digital computation could be performed
in ZERO time. However \, that is not the case. Instead \, every process
within Pd and within your operating system requires at least a few
nanoseconds of your CPU's time.;
#X obj 111 509 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 476 144 The [timer] object is like a clock that is not constrained
to the regular laws of physics and the universal space-time continuum.
It reports "time" measurements as only Pd can see them!;
#X text 477 204 The [cputime] object is like a clock that measures
how much time your CPU actually required to carry out your request.
Keep in mind however that your CPU is busy doing many things simoultaneously
\, so even though a process might take 5 minutes to complete \, your
CPU does not pay full attention to that process for the entire 5 minutes.
Instead \, it simply begins the process \, then refers back to that
process from time to time until the it is complete. In other cases
\, your CPU might require a full 5 minutes while Pd might report that
merely a few milliseconds have passed. This type of discrepancy depends
heavily on your computer's hardware and the type of processing it is
performing.;
#X text 478 368 The [realtime] object is as much like your own wrist
watch as Pd can possibly manage. It measures time according to your
operating system's internal clock.;
#N canvas 0 0 454 304 related_objects_from_other_libraries 0;
#X text 27 63 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 26 112 The best places to find information about Pd's libraries
is:;
#X text 23 134 www.puredata.org and click on "Downloads" then "Software"
;
#X text 25 149 or;
#X text 25 164 iem.kug.ac.at/pdb/;
#X obj 44 24 t3_timer;
#X text 469 589 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X restore 505 476 pd related_objects_from_other_libraries;
#X text 309 580 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X text 11 232 The odd aspect about comparing [timer] to a stop-watch
is that a stop-watch can be stopped! [timer] can only be started or
reset. It cannot be stopped.;
#X obj 625 445 metro;
#X text 504 422 RELATED OBJECTS;
#X obj 504 446 cputime;
#X obj 562 445 realtime;
#X text 132 501 3 Measures the amount of time Pd requires count to
three...please wait for approximately 3 seconds.;
#X connect 0 0 2 1;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 12 0 14 0;
#X connect 12 1 15 0;
#X connect 12 2 16 0;
#X connect 13 0 12 0;
#X connect 21 0 12 1;
#X connect 25 0 24 0;
#X connect 28 0 12 2;

Index: all_about_send_n_receive.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/all_about_send_n_receive.pd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** all_about_send_n_receive.pd	9 Oct 2004 05:01:05 -0000	1.3
--- all_about_send_n_receive.pd	28 Apr 2005 00:25:04 -0000	1.4
***************
*** 11,15 ****
  far beyond the scope of a single patch.;
  #X text 10 385 A [send] object is a little like a radio station...it
! broadcasts information throughout PD \, for all the [receives] to hear!
  A [receive] object is a little like your own AM/FM tuner...it will
  receive messages from all the [send] objects that it is 'tuned' to.
--- 11,15 ----
  far beyond the scope of a single patch.;
  #X text 10 385 A [send] object is a little like a radio station...it
! broadcasts information throughout Pd \, for all the [receives] to hear!
  A [receive] object is a little like your own AM/FM tuner...it will
  receive messages from all the [send] objects that it is 'tuned' to.
***************
*** 76,80 ****
  #X text 310 360 These number boxes are linked together via their 'send'
  or 'receive' property.;
! #X text 298 8 Some objects in PD contain their own internal send and
  receive functionality.;
  #X connect 23 0 25 0;
--- 76,80 ----
  #X text 310 360 These number boxes are linked together via their 'send'
  or 'receive' property.;
! #X text 298 8 Some objects in Pd contain their own internal send and
  receive functionality.;
  #X connect 23 0 25 0;

--- NEW FILE: pgmin-help.pd ---
#N canvas 290 -2 492 552 10;
#X obj 27 16 pgmin;
#X text 26 47 The [pgmin] object reads incoming program change messages.
;
#X text 26 69 Arguments: (optional) int represents the channel number
to ilsten to. With no argument \, [pgmin] accepts all channels.;
#X text 26 105 Inlets: none. Receives directly from the MIDI port.
;
#X obj 27 142 pgmin;
#X floatatom 27 182 5 0 0;
#X floatatom 57 164 5 0 0;
#X text 101 139 Outlets:;
#X text 119 156 Right - channel number;
#X text 28 308 See also:;
#X obj 29 335 pgmout;
#X obj 26 215 pgmin 2;
#X floatatom 26 237 5 0 0;
#X text 25 258 With one argument (the MIDI channel number) [pgmin]
creates only one outlet (for program change number received). The channel
cannot be changed dynamically.;
#N canvas 240 135 476 472 other_midi_objects 0;
#X obj 7 29 ctlin;
#X obj 49 29 pgmin;
#X obj 92 28 bendin;
#X obj 143 27 touchin;
#X obj 204 27 polytouchin;
#X obj 289 27 midiin;
#X obj 340 26 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 160 84 bendout;
#X obj 217 83 touchout;
#X obj 281 82 polytouchout;
#X obj 370 82 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X restore 105 333 pd other_midi_objects;
#X obj 298 380 pddp_open all_about_midi_flags;
#X text 25 379 for an explanation of MIDI usage in Pd see:;
#X text 120 180 Left - program change number;
#X text 66 17 - read incoming program change messages from the MIDI
port;
#X text 22 453 This document was updated for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 11 0 12 0;

--- NEW FILE: spigot-help.pd ---
#N canvas 94 22 874 659 10;
#X msg 8 96 0.5 1000;
#X floatatom 38 160 1 0 0 0 - - -;
#X obj 8 177 spigot;
#X obj 7 198 print;
#X msg 20 136 walk the cat;
#X msg 13 116 bang;
#X obj 27 11 spigot;
#X text 75 11 - pass or block messages;
#X text 51 160 control: nonzero to pass messages \, zero to stop them
;
#X text 4 294 USING [SPIGOT] TO CREATE A GATE.;
#X text 14 312 Unlike its closest cousin MAX \, Pd does not have a
native [gate] object. There are other Pd libraries which include gates
for both audio and numerical data \, but similar routines can be built
in Pd using [spigot]. The example below shows a two-way gate using
two [spigots] and the [expr] object.;
#X obj 87 505 spigot;
#X floatatom 88 459 1 0 0 0 - - -;
#X text 105 458 controls: open and close the gates.;
#X floatatom 23 527 5 0 0 0 - - -;
#X floatatom 87 527 5 0 0 0 - - -;
#X obj 4 400 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 7 418 metro 200;
#X obj 4 439 f;
#X obj 31 439 + 1;
#X obj 118 484 expr 1-$f1;
#X text 24 398 Click to start sending info through the gates.;
#X obj 88 439 loadbang;
#X text 8 38 [spigot] passes messages from its left inlet to its outlet
\, as long as a nonzero number is sent to its right inlet. When its
right inlet gets zero \, incoming messages are "blocked" (i.e. ignored).
;
#X text 6 231 [spigot] works essentially like a doorway. When the door
is open \, messages can pass through. When the door is closed \, messages
are ignored. By default \, the door is always closed!;
#X obj 23 505 spigot;
#X text 5 547 In the example above \, the magic is created by the [expr]
object which performs a simple calculation using the incoming number
(1 or 0). Note that the figure "$f1" is a variable which assumes the
value of the incoming number.;
#X text 447 17 CREATION ARGUMENTS?;
#X obj 567 98 spigot 0;
#X text 434 216 [SPIGOT] FOR AUDIO SIGNALS?;
#X text 447 233 [spigot] does not work with audio signals. The data
types which are accepted by this object are floats \, symbols \, lists
\, bangs \, anythings and pointers. However \, audio signals require
a completely different treatment.;
#X text 444 285 Pd does not have a [spigot] for audio signals \, but
the same effect can be created using the following structure:;
#X obj 458 332 osc~ 800;
#X obj 426 15 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 426 596 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 458 389 *~;
#X floatatom 471 372 1 0 0 0 - - -;
#X obj 440 467 env~;
#X floatatom 440 488 5 0 0 0 - - -;
#X msg 598 342 \; pd dsp \$1 \;;
#X obj 598 323 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 485 486 dac~;
#X obj 485 466 *~ 0.05;
#X text 615 324 Turn on audio computation first.;
#X text 489 377 Here is the [spigot].;
#X text 488 390 When "0" \, audio signal;
#X text 487 406 is effectively blocked.;
#X text 488 420 When "1" \, audio signal is;
#X text 488 435 not effected in any way.;
#X text 446 518 RELATED OBJECTS;
#N canvas 0 22 454 304 related_objects_from_other_libraries 0;
#X obj 40 36 gate;
#X text 18 86 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 135 The best places to find information about Pd's libraries
is:;
#X text 14 157 www.puredata.org and click on "Downloads" then "Software"
;
#X text 15 173 or;
#X text 16 187 iem.kug.ac.at/pdb/;
#X restore 459 539 pd related_objects_from_other_libraries;
#X obj 456 188 spigot cat;
#X obj 534 188 spigot dog;
#X text 454 33 [spigot] only accepts one numerical creation argument:
a one or a zero. At creation time the [spigot] is "closed". With a
one \, its defaults to open.;
#X obj 635 98 spigot 1;
#X obj 579 71 bng 15 250 50 0 empty empty empty 0 -6 0 8 -225271 -1
-1;
#X obj 511 98 spigot;
#X obj 511 116 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 567 117 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 635 117 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 451 576 This document was updated for Pd version 0.38-4. It
was edited by Dave Sabine and Hans-Christoph Steiner as part of a project
called pddp proposed by Krzysztof Czaja to build comprehensive documentation
for Pd.;
#X text 455 143 [spigot] used to accept any symbol \, but all of these
are meaningless and have no effect on the operation of the object.
This was removed in Pd 0.38-3;
#X connect 0 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 4 0 2 0;
#X connect 5 0 2 0;
#X connect 11 0 15 0;
#X connect 12 0 20 0;
#X connect 12 0 25 1;
#X connect 16 0 17 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 0 11 0;
#X connect 18 0 25 0;
#X connect 19 0 18 1;
#X connect 20 0 11 1;
#X connect 22 0 12 0;
#X connect 25 0 14 0;
#X connect 28 0 58 0;
#X connect 32 0 35 0;
#X connect 33 0 34 0;
#X connect 35 0 37 0;
#X connect 35 0 42 0;
#X connect 36 0 35 1;
#X connect 37 0 38 0;
#X connect 40 0 39 0;
#X connect 42 0 41 0;
#X connect 54 0 59 0;
#X connect 55 0 28 0;
#X connect 55 0 56 0;
#X connect 55 0 54 0;
#X connect 56 0 57 0;

--- NEW FILE: tabread-help.pd ---
#N canvas 2 1 648 608 12;
#X obj 114 560 pddp;
#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 14 223 ARGUMENTS:;
#X text 19 323 EXAMPLES:;
#X text 22 471 SEE ALSO:;
#N canvas 58 0 405 254 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 16 166 Externals and other object libraries;
#X obj 16 41 tabread~;
#X obj 90 41 tabread4;
#X obj 165 41 tabwrite;
#X obj 240 41 tabwrite~;
#X obj 16 67 tabsend~;
#X obj 92 67 tabreceive~;
#X obj 192 67 tabplay~;
#X obj 269 67 table;
#X text 15 124 [array];
#X obj 16 94 soundfiler;
#X text 78 124 and fft objects.;
#X text 21 187 [tabdump];
#X obj 112 94 tabread4~;
#X text 20 207 [tabenv];
#X obj 203 94 getsize;
#X obj 274 94 setsize;
#X text 238 207 [arraysize];
#X text 238 186 [score];
#X text 114 186 [linear_path];
#X text 114 207 [plot];
#X restore 114 508 pd Related_Objects;
#N canvas 80 0 655 534 More_Info 0;
#X text 25 16 WHAT IS THE DIFFERENCE BETWEEN A TABLE AND AN ARRAY AND
A GRAPH AND A TEMPLATE AND A LIST AND A SCALAR AND A WIDGET?;
#X text 43 56 That question isn't relevant yet \, but I know you're
probably asking it. Let's just set aside these terms and their uses
and say the following:;
#X text 67 114 1 In Pd \, the terms "graph" and "table" are almost
synonymous.;
#X text 66 164 2 A table in Pd is a convenient place to store an array.
;
#X text 65 392 5 For more discussion about arrays and tables \, please
see the help documentation in: doc/2.control.examples/15.arrays.pd
and doc/5.reference/table.pd;
#X text 44 487 Also See:;
#X obj 123 487 pddp_open all_about_arrays;
#X text 66 195 3 When you create a table \, an array of 100 elements
is automatically created inside that table. The name of the table and
the name of the array are stored separately. This means \, that although
the table has the same name as the default array \, you can rename
one or the other individually.;
#X text 66 307 4 [tabread] is designed to read the numbers from arrays
- whether they're stored in tables or not! Perhaps we can think of
this object as [arrayread] instead? Keep in mind that arrays can be
created separately from tables.;
#X restore 114 534 pd More_Info;
#X obj 32 10 tabread;
#X text 111 10 - READ NUMBERS FROM A TABLE;
#X text 104 277 One - outputs a floating point number which corresponds
to the index you query using the inlet.;
#X obj 161 416 tabread davids_table;
#X floatatom 161 443 0 0 0 3 - - -;
#X floatatom 116 364 0 0 99 1 index - -;
#X msg 241 391 set another_table;
#X msg 203 366 set davids_table;
#X text 105 168 Set - the "set <arrayname>" message allows you to read
from dynamic sources. You can change the source at any time using the
"set" message.;
#X text 105 223 One - the argument informs [tabread] which array to
read. The array must exist in an open Pd patch/canvas or an error message
will appear in the terminal window.;
#X text 29 278 OUTLETS:;
#X text 410 433 tables which store \; arrays of the same name.;
#X obj 413 384 table davids_table;
#X obj 413 410 table another_table;
#X text 113 443 value;
#X text 158 561 - Dave Sabine \, April 25 \, 2003;
#X text 106 323 Open the tables and use your mouse to draw new values
in the arrays - otherwise [tabread] will always output "0".;
#X text 39 34 INLETS:;
#X text 107 34 Float - A float at the left inlet will move to the corresponding
index in the table's array. The lowest valid number is "0" which represents
the first element of the array. The highest valid number is the size
of the array minus 1 By default \, the size of an array in a table
is 100 - or 0 to 99 The actual size of the array can be altered using
the array's dialog box or the resize command. More about arrays can
be found below.;
#X text 112 470 doc/2.control.examples/15.arrays.pd;
#X text 113 489 doc/2.control.examples/16.more.arrays.pd;
#X connect 10 0 11 0;
#X connect 12 0 10 0;
#X connect 13 0 10 0;
#X connect 14 0 10 0;

--- help-pgmin.pd DELETED ---

--- NEW FILE: glossary.pd ---
#N canvas 38 95 466 565 10;
#X obj 2 2 cnv 15 450 20 empty empty glossary 2 11 1 18 -233017 -66577
0;
#X obj 418 3 pddp;
#X text 6 63 "atom";
#X text 9 88 "bang";
#X text 15 111 "float";
#X text 11 223 "symbol";
#X text 11 210 "selector";
#X text 11 153 "list";
#X text 8 45 "anything";
#X text 11 190 "pointer";
#X text 8 131 "inlet";
#X text 12 171 "outlet";

--- help-pipe.pd DELETED ---

--- NEW FILE: until-help.pd ---
#N canvas 272 105 879 604 10;
#X obj 13 49 until;
#X text 7 78 Every modern programming language will have various "looping"
mechanisms: either in the form of an object \, or as a data structure.
For example in Visual Basic:;
#X text 18 145 DO UNTIL i = 100;
#X text 18 159 i = i + 1;
#X text 19 130 i = 0;
#X text 18 174 LOOP;
#X text 3 285 And now Pd's version of the above programming structures:
;
#X obj 12 332 until;
#X msg 12 312 100;
#X obj 12 352 print i;
#X text 5 379 If you start [until] with a "bang" \, it will begin an
infinite loop! Please plan ahead in this case so that there is a mechanism
in place to stop the loop - otherwise Pd will effectively freeze.;
#X text 5 446 HOW TO FREEZE Pd;
#X msg 13 469 bang;
#X obj 13 489 until;
#X obj 13 509 print;
#X text 51 469 DO NOT CLICK. DO NOT CLICK. DO NOT CLICK.;
#X text 5 200 OR:;
#X text 17 226 FOR i = 0 TO 100;
#X text 16 252 NEXT;
#X text 17 240 ' do something;
#X text 439 240 If you start [until] with a number \, it iterates that
number of times. The [uzi] object in MAX works the same way.;
#X obj 496 328 until;
#X msg 496 281 100;
#X obj 496 348 print i;
#X msg 524 288 3;
#X msg 552 295 42;
#X text 14 536 The [until] object's left inlet starts a loop in which
it outputs "bang" until its right inlet gets a "bang" which stops it.
;
#X obj 418 44 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 418 571 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 55 49 - LOOPing mechanism;
#X text 441 381 RELATED OBJECTS;
#X text 446 400 ?? This author does not know of any other native looping
mechanisms in Pd.;
#N canvas 0 22 452 302 related_objects_from_other_libraries 0;
#X text 27 63 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 26 112 The best places to find information about Pd's libraries
is:;
#X text 23 134 www.puredata.org and click on "Downloads" then "Software"
;
#X text 25 149 or;
#X text 25 164 iem.kug.ac.at/pdb/;
#X obj 43 32 for++;
#X obj 90 32 counter;
#X obj 150 32 gem_counter;
#X obj 250 32 modulo_counter;
#X restore 454 440 pd related_objects_from_other_libraries;
#X obj 486 513 pddp_open all_about_looping;
#X text 450 490 For more info:;
#X msg 496 110 bang;
#X obj 496 131 until;
#X text 527 110 start;
#X obj 496 153 f;
#X obj 525 153 + 1;
#X obj 571 155 sel 0;
#X obj 496 197 print;
#X obj 525 175 mod 10;
#X text 444 58 The example below includes a method to stop the loop
to prevent Pd from looping infinitely.;
#X text 54 489 If you click \, kill Pd or reboot the computer.;
#X text 447 546 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X obj 2 2 cnv 15 870 20 empty empty [until] 20 10 1 18 -233017 -66577
0;
#X obj 821 3 pddp;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 21 0 23 0;
#X connect 22 0 21 0;
#X connect 24 0 21 0;
#X connect 25 0 21 0;
#X connect 27 0 28 0;
#X connect 35 0 36 0;
#X connect 36 0 38 0;
#X connect 38 0 39 0;
#X connect 38 0 41 0;
#X connect 39 0 42 0;
#X connect 40 0 36 1;
#X connect 42 0 38 1;
#X connect 42 0 40 0;

--- help-operators.pd DELETED ---

--- NEW FILE: float-help.pd ---
#N canvas 0 0 626 624 12;
#X obj 114 560 pddp;
#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
0;
#X floatatom 325 358 5 0 0 0 - - -;
#X floatatom 484 395 5 0 0 0 - - -;
#X floatatom 369 462 5 0 0 0 - - -;
#X msg 304 402 42 7;
#X obj 366 396 bng 15 250 50 0 empty empty "bang" 0 -6 0 8 -262144
-1 -1;
#X floatatom 128 422 5 0 0 0 - - -;
#X msg 128 373 bang;
#X obj 46 18 float;
#X obj 492 17 f;
#X text 111 18 - STORE A FLOATING POINT NUMBER - abbreviation:;
#X msg 249 402 7 3 4;
#X obj 369 436 f;
#X obj 128 397 float 7;
#X text 113 484 doc/2.control.examples/sendnumber.pd;
#X text 371 358 Tip: Shift+drag;
#X text 37 44 INLETS:;
#X text 37 59 - LEFT:;
#X text 104 59 Float - A float at the left inlet will update the stored
value of the object and will send the number immediately to the outlet.
;
#X text 104 114 Bang - A bang at the left inlet will force [float]
to send its value to the outlet.;
#X text 104 152 List - A list at the left inlet will be truncated to
include only the first element. The first element in the list will
update the stored value of the object and will send the number immediately
to the outlet.;
#X text 29 220 - RIGHT:;
#X text 105 220 Float - A float at the right inlet is stored for later
use. It will be sent to the left outlet when a float or bang is received
in the left inlet.;
#X text 29 324 OUTLETS:;
#X text 13 272 ARGUMENTS:;
#X text 20 354 EXAMPLES:;
#X text 22 484 SEE ALSO:;
#X text 104 272 One - [float] accepts a single float as a creation
argument which initializes the first value to be sent out the left
outlet.;
#X text 104 325 One - outputs the stored floating point value of the
object.;
#X text 249 384 lists;
#X text 106 355 creation argument;
#N canvas 58 0 401 250 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 23 92 Externals and other object libraries;
#X obj 42 48 int;
#X obj 109 48 symbol;
#X text 36 126 [randomF];
#X restore 114 508 pd Related_Objects;
#N canvas 57 0 637 618 More_Info 0;
#X text 43 24 All numbers in Pd are kept in 32-bit floating point and
can represent real numbers between -8 \, 388608 and 8.388.608.00;
#X text 11 78 WHAT IS A FLOATING POINT NUMBER?;
#X text 41 267 The following are examples of floating point numbers:
;
#X text 61 293 3;
#X text 62 334 -111.5;
#X text 61 313 0.5;
#X text 40 387 3e-005 : This example is a computer shorthand for scientific
notation. It means 3*10-5 (or 10 to the negative 5th power multiplied
by 3).;
#X text 41 108 According to Webopedia.com \, "computers are integer
machines and are capable of representing real numbers only by using
complex codes." Hence \, real numbers must be 'approximated' by computers
using the "floating point standard". In such a number \, the decimal
point can "float" meaning that there is no fixed number of digits preceding
or following the decimal. A floating point number is therefore a computer's
approximation of a real number.;
#X text 43 453 Interesting side-note: In the early 1990's \, the Intel
80486 was shipped with a math coprocessor to help accelerate the process
of computing floating point numbers (which previously required a considerable
amount of CPU power.) Math coprocessors have since found there way
into nearly every graphics card and CPU available today.;
#X text 62 358 10000 to 1e-016;
#X restore 114 534 pd More_Info;
#X text 158 561 - Dave Sabine \, November 18 \, 2002;
#X connect 2 0 13 0;
#X connect 3 0 13 1;
#X connect 5 0 13 0;
#X connect 6 0 13 0;
#X connect 8 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 4 0;
#X connect 14 0 7 0;

--- help-midi.pd DELETED ---

Index: table_of_contents.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/table_of_contents.pd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** table_of_contents.pd	27 Apr 2005 20:22:20 -0000	1.3
--- table_of_contents.pd	28 Apr 2005 00:25:05 -0000	1.4
***************
*** 1,3 ****
! #N canvas 282 141 518 637 10;
  #X obj 3 2 cnv 15 500 20 empty empty pddp 2 12 1 18 -233017 -66577
  0;
--- 1,3 ----
! #N canvas 282 141 522 641 10;
  #X obj 3 2 cnv 15 500 20 empty empty pddp 2 12 1 18 -233017 -66577
  0;
***************
*** 20,24 ****
  #X msg 10 520 time_measurements;
  #X text 170 121 comment;
- #X text 170 141 comment;
  #X text 170 181 comment;
  #X text 170 321 comment;
--- 20,23 ----
***************
*** 54,73 ****
  #X text 7 56 pddp provides a number of overview patches called "all_about_"
  patches. Here is a listing of them:;
! #X connect 2 0 24 0;
! #X connect 3 0 24 0;
! #X connect 4 0 24 0;
! #X connect 5 0 24 0;
! #X connect 6 0 24 0;
! #X connect 7 0 24 0;
! #X connect 8 0 24 0;
! #X connect 9 0 24 0;
! #X connect 10 0 24 0;
! #X connect 11 0 24 0;
! #X connect 12 0 24 0;
! #X connect 13 0 24 0;
! #X connect 14 0 24 0;
  #X connect 15 0 1 0;
  #X connect 16 0 1 0;
  #X connect 17 0 1 0;
! #X connect 24 0 1 0;
! #X connect 30 0 24 0;
--- 53,73 ----
  #X text 7 56 pddp provides a number of overview patches called "all_about_"
  patches. Here is a listing of them:;
! #X text 170 141 cyclone is the Max/MSP compatibility library;
! #X connect 2 0 23 0;
! #X connect 3 0 23 0;
! #X connect 4 0 23 0;
! #X connect 5 0 23 0;
! #X connect 6 0 23 0;
! #X connect 7 0 23 0;
! #X connect 8 0 23 0;
! #X connect 9 0 23 0;
! #X connect 10 0 23 0;
! #X connect 11 0 23 0;
! #X connect 12 0 23 0;
! #X connect 13 0 23 0;
! #X connect 14 0 23 0;
  #X connect 15 0 1 0;
  #X connect 16 0 1 0;
  #X connect 17 0 1 0;
! #X connect 23 0 1 0;
! #X connect 29 0 23 0;

Index: all_about_arrays.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/all_about_arrays.pd,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** all_about_arrays.pd	22 Aug 2003 00:20:54 -0000	1.1
--- all_about_arrays.pd	28 Apr 2005 00:25:04 -0000	1.2
***************
*** 7,11 ****
  in a row 0 \, 1 \, 2 \, 3 \, etc. These numbers are called indices.
  Each index holds a corresponding value.;
! #X text 46 222 Arrays in PD look like this:;
  #N canvas 0 0 450 300 graph18 0;
  #X array example_array 100 float 0;
--- 7,11 ----
  in a row 0 \, 1 \, 2 \, 3 \, etc. These numbers are called indices.
  Each index holds a corresponding value.;
! #X text 46 222 Arrays in Pd look like this:;
  #N canvas 0 0 450 300 graph18 0;
  #X array example_array 100 float 0;
***************
*** 18,33 ****
  from the menu. The window that opens is the table.pd help document.
  ;
! #X text 45 148 All of this is true in PD \, except that arrays in PD
! can only hold floating point data. (other data types in PD are called
  "lists" or "anythings" and require different tools to manipulate them.)
  ;
  #X text 45 378 The array above is actually only the horizontal line!
  The rectangle surrounding the array is called a "graph". These two
! objects are separate \, but PD creates both simoultaneously for purposes
  of convenience. These two objects together are called a "table". To
  see what I mean by all of this:;
  #X restore 43 42 pd What_is_an_array_in_PD;
  #N canvas 118 1 608 615 How_to_manipulate_arrays_in_PD 0;
! #X text 13 5 HOW TO MANIPULATE ARRAYS IN PD;
  #N canvas 0 0 452 302 graph28 0;
  #X array exampleArray 67 float 0;
--- 18,33 ----
  from the menu. The window that opens is the table.pd help document.
  ;
! #X text 45 148 All of this is true in Pd \, except that arrays in Pd
! can only hold floating point data. (other data types in Pd are called
  "lists" or "anythings" and require different tools to manipulate them.)
  ;
  #X text 45 378 The array above is actually only the horizontal line!
  The rectangle surrounding the array is called a "graph". These two
! objects are separate \, but Pd creates both simoultaneously for purposes
  of convenience. These two objects together are called a "table". To
  see what I mean by all of this:;
  #X restore 43 42 pd What_is_an_array_in_PD;
  #N canvas 118 1 608 615 How_to_manipulate_arrays_in_PD 0;
! #X text 13 5 HOW TO MANIPULATE ARRAYS IN Pd;
  #N canvas 0 0 452 302 graph28 0;
  #X array exampleArray 67 float 0;
***************
*** 150,154 ****
  Basic and Java (among others) \, there are functions which join all
  elements of an array into a list. This example shows how this functionality
! can be duplicated in PD. This example uses the elements of exampleArray
  from the previous help window. The list can either be printed to the
  terminal window \, or it can be saved to a text file.;
--- 150,154 ----
  Basic and Java (among others) \, there are functions which join all
  elements of an array into a list. This example shows how this functionality
! can be duplicated in Pd. This example uses the elements of exampleArray
  from the previous help window. The list can either be printed to the
  terminal window \, or it can be saved to a text file.;
***************
*** 183,189 ****
  #X text 15 11 GETTING THE SIZE OF AN ARRAY;
  #X text 34 34 If you deal with arrays often \, you will want to download
! the [arraysize] external written by PIX. PD lacks a native object for
  this purpose and I'm afraid that without this external this functionality
! is impossible in PD.;
  #X obj 38 127 arraysize exampleArray;
  #X obj 38 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--- 183,189 ----
  #X text 15 11 GETTING THE SIZE OF AN ARRAY;
  #X text 34 34 If you deal with arrays often \, you will want to download
! the [arraysize] external written by PIX. Pd lacks a native object for
  this purpose and I'm afraid that without this external this functionality
! is impossible in Pd.;
  #X obj 38 127 arraysize exampleArray;
  #X obj 38 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
***************
*** 426,434 ****
  #X connect 46 0 9 1;
  #X restore 24 449 pd Shifting_an_array;
! #X text 25 32 Arrays in PD are different than the arrays in other languages
! primarily because \, in PD \, they are designed to be displayed graphically
  on screen. This is due to the nature of audio synthesis - we want to
  see our wave forms and visually understand the data. That's why arrays
! in PD are complicated by other objects like tables \, graphs and widgets.
  PD uses these objects to provide a graphic representation of the array
  data. If you're not interested in seeing the array data within your
--- 426,434 ----
  #X connect 46 0 9 1;
  #X restore 24 449 pd Shifting_an_array;
! #X text 25 32 Arrays in Pd are different than the arrays in other languages
! primarily because \, in Pd \, they are designed to be displayed graphically
  on screen. This is due to the nature of audio synthesis - we want to
  see our wave forms and visually understand the data. That's why arrays
! in Pd are complicated by other objects like tables \, graphs and widgets.
  PD uses these objects to provide a graphic representation of the array
  data. If you're not interested in seeing the array data within your
***************
*** 436,440 ****
  table in a sub-window. Note that [table]s are more CPU friendly than
  their graphical counterpart.;
! #X text 26 230 Like all programming languages \, PD provides numerous
  tools to manipulate arrays and their data.;
  #N canvas 3 32 718 310 Setting_a_constant_array_value 0;
--- 436,440 ----
  table in a sub-window. Note that [table]s are more CPU friendly than
  their graphical counterpart.;
! #X text 26 230 Like all programming languages \, Pd provides numerous
  tools to manipulate arrays and their data.;
  #N canvas 3 32 718 310 Setting_a_constant_array_value 0;
***************
*** 444,448 ****
  #X text 18 16 SETTING A CONSTANT ARRAY VALUE;
  #X text 27 46 By default \, all array element values are zero. However
! \, PD allows you to change that using the "CONST" message.;
  #X text 26 88 This feature is useful to reset all values in an array
  \, or with a little creativity can be used to "delete" a slice \, or
--- 444,448 ----
  #X text 18 16 SETTING A CONSTANT ARRAY VALUE;
  #X text 27 46 By default \, all array element values are zero. However
! \, Pd allows you to change that using the "CONST" message.;
  #X text 26 88 This feature is useful to reset all values in an array
  \, or with a little creativity can be used to "delete" a slice \, or
***************
*** 468,472 ****
  #X text 26 7 SINE WAVES;
  #X text 29 30 comment;
! #X text 45 29 When the "sinesum" message is sent to the array \, PD
  will want to know two things:;
  #X text 58 65 1 How many samples (array elements) should be used? The
--- 468,472 ----
  #X text 26 7 SINE WAVES;
  #X text 29 30 comment;
! #X text 45 29 When the "sinesum" message is sent to the array \, Pd
  will want to know two things:;
  #X text 58 65 1 How many samples (array elements) should be used? The
***************
*** 485,494 ****
  #X text 141 26 Audio signals in a digital realm are created using a
  series of samples. It is digitally possible to create extremely angular
! wave forms using PD arrays \, but the aural result is sometimes distorted
  and unpleasant. Hence \, higher math functions help our digital tools
  to produce data which can effectively be converted to analog signals
  similar to those of our electronic and mechanical predecessors. The
  first and one of the most important mathematic functions in digital
! synthesis is undoubtebly "sinesum". PD provides an easy method for
  us to integrate these higher math functions in our arrays.;
  #N canvas 0 195 750 302 cosine_waves 0;
--- 485,494 ----
  #X text 141 26 Audio signals in a digital realm are created using a
  series of samples. It is digitally possible to create extremely angular
! wave forms using Pd arrays \, but the aural result is sometimes distorted
  and unpleasant. Hence \, higher math functions help our digital tools
  to produce data which can effectively be converted to analog signals
  similar to those of our electronic and mechanical predecessors. The
  first and one of the most important mathematic functions in digital
! synthesis is undoubtebly "sinesum". Pd provides an easy method for
  us to integrate these higher math functions in our arrays.;
  #N canvas 0 195 750 302 cosine_waves 0;
***************
*** 504,508 ****
  #X text 222 257 To normalize an audio signal means to alter the average
  amplitude of the signal. For the sake of clear \, undistored sounds
! \, PD would like all of your audio signals to never exceed 1 or -1
  The first step in achieving this is "normalization" \, but can be assisted
  by more drastic tools like compressors \, limiters \, gain multipliers
--- 504,508 ----
  #X text 222 257 To normalize an audio signal means to alter the average
  amplitude of the signal. For the sake of clear \, undistored sounds
! \, Pd would like all of your audio signals to never exceed 1 or -1
  The first step in achieving this is "normalization" \, but can be assisted
  by more drastic tools like compressors \, limiters \, gain multipliers
***************
*** 521,528 ****
  #X msg 475 113 \; exampleArray read \$1;
  #X text 26 29 Using text files can be helpful in saving or loading
! arrays in PD. Note that the "read" message does not resize your array
  automatically.;
  #X text 29 160 Audio files can be treated in similar ways by incorporating
! the [soundfiler] object. The soundfiler object provides PD with tools
  to automatically resize arrays \, and read/write audio files in a variety
  of formats.;
--- 521,528 ----
  #X msg 475 113 \; exampleArray read \$1;
  #X text 26 29 Using text files can be helpful in saving or loading
! arrays in Pd. Note that the "read" message does not resize your array
  automatically.;
  #X text 29 160 Audio files can be treated in similar ways by incorporating
! the [soundfiler] object. The soundfiler object provides Pd with tools
  to automatically resize arrays \, and read/write audio files in a variety
  of formats.;
***************
*** 576,580 ****
  #N canvas 0 0 719 423 Additional_tools 0;
  #X text 18 14 ADDITIONAL TOOLS;
! #X text 29 38 The "array" object in PD accepts special messages to
  alter the appearance of the array on screen.;
  #X text 19 81 Arrays can be renamed:;
--- 576,580 ----
  #N canvas 0 0 719 423 Additional_tools 0;
  #X text 18 14 ADDITIONAL TOOLS;
! #X text 29 38 The "array" object in Pd accepts special messages to
  alter the appearance of the array on screen.;
  #X text 19 81 Arrays can be renamed:;
***************
*** 600,604 ****
  #N canvas 4 29 717 375 Populating_an_array 0;
  #X text 27 12 POPULATING AN ARRAY;
! #X text 41 37 An array in PD is primarily a storage device for numbers.
  The result is a series of numbers that you can do with whatever you
  wish...but how does one populate an array?;
--- 600,604 ----
  #N canvas 4 29 717 375 Populating_an_array 0;
  #X text 27 12 POPULATING AN ARRAY;
! #X text 41 37 An array in Pd is primarily a storage device for numbers.
  The result is a series of numbers that you can do with whatever you
  wish...but how does one populate an array?;
***************
*** 619,623 ****
  #N canvas 132 0 587 609 How_to_create_an_array_in_PD 0;
  #X text 22 9 1 Select "array" from the "Put" menu above.;
! #X text 21 288 4 If you want PD to create a new graph for this array
  \, then select "in new graph". If you have another location in mind
  -- for example if you want to overlap two arrays in a single graph
--- 619,623 ----
  #N canvas 132 0 587 609 How_to_create_an_array_in_PD 0;
  #X text 22 9 1 Select "array" from the "Put" menu above.;
! #X text 21 288 4 If you want Pd to create a new graph for this array
  \, then select "in new graph". If you have another location in mind
  -- for example if you want to overlap two arrays in a single graph
***************
*** 644,648 ****
  #X restore 42 106 pd How_to_create_an_array_in_PD;
  #N canvas 133 1 646 607 Common_uses_for_arrays_in_PD 0;
! #X text 27 26 COMMON USES FOR ARRAYS IN PD;
  #X text 49 60 Arrays are versatile. Their simple structure make them
  useful in countless situations. This page discusses perhaps the most
--- 644,648 ----
  #X restore 42 106 pd How_to_create_an_array_in_PD;
  #N canvas 133 1 646 607 Common_uses_for_arrays_in_PD 0;
! #X text 27 26 COMMON USES FOR ARRAYS IN Pd;
  #X text 49 60 Arrays are versatile. Their simple structure make them
  useful in countless situations. This page discusses perhaps the most
***************
*** 654,663 ****
  #X text 50 306 3 Envelopes: an array with four elements can be used
  effectively as an ADSR enveloper. There are numerous examples of this
! in other PD help documents.;
  #X text 53 377 4 Math and conversion tables: arrays are an excellent
  visual tool when performing fourier analysis and other higher mathematic
  functions.;
  #X text 54 450 5 Wave editing: with proper manipulation of array data
! \, PD can be fully functional wave editor \, complete with mouse-clickable
  cut-n-paste \, pitch-shift \, time expansion \, down/upsampling \,
  and other tools typically found in commercial wave editors.;
--- 654,663 ----
  #X text 50 306 3 Envelopes: an array with four elements can be used
  effectively as an ADSR enveloper. There are numerous examples of this
! in other Pd help documents.;
  #X text 53 377 4 Math and conversion tables: arrays are an excellent
  visual tool when performing fourier analysis and other higher mathematic
  functions.;
  #X text 54 450 5 Wave editing: with proper manipulation of array data
! \, Pd can be fully functional wave editor \, complete with mouse-clickable
  cut-n-paste \, pitch-shift \, time expansion \, down/upsampling \,
  and other tools typically found in commercial wave editors.;
***************
*** 671,675 ****
  external to your "pd/extra" folder before continuing. Some of these
  examples are impossible without it -- I personally feel that [arraysize]
! should be considered for permanent inclusion in future PD distributions.
  Check the CVS Repository or Pure-data.org for [arraysize].;
  #X text 40 459 This document is meant to supplement the help documentation
--- 671,675 ----
  external to your "pd/extra" folder before continuing. Some of these
  examples are impossible without it -- I personally feel that [arraysize]
! should be considered for permanent inclusion in future Pd distributions.
  Check the CVS Repository or Pure-data.org for [arraysize].;
  #X text 40 459 This document is meant to supplement the help documentation

--- help-symbol.pd DELETED ---

--- help-noteout.pd DELETED ---

--- NEW FILE: key-help.pd ---
#N canvas 274 90 707 580 12;
#X obj 107 541 pddp;
#X obj 8 8 cnv 15 90 553 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 104 74 This object does not accept arguments of any type.;
#N canvas 85 22 597 608 More_Info 0;
#X text 31 23 OBJECT OUTLETS;
#N canvas 176 22 575 461 reacting_to_user_input 0;
#X text 27 18 REACTING TO USER INPUT;
#X text 41 49 Most \, if not all \, programming environments provide
us with tools to capture 'user initiated' events from the operating
system. Keyboard input \, mouse clicks \, and mouse movements are the
most common events in this 'user event' category.;
#X text 41 125 Pd's [key] \, [keyup] \, and [keyname] are complimented
by the externals such as [gemmouse] and [nimouse] to provide us with
a full range of tools to gleen a user's activities at the computer.
;
#X text 42 201 It's interesting to note that \, with these tools \,
PD can mimic some of the functions in other languages - Javascript
for example has:;
#X text 55 272 onKeyUp;
#X text 55 253 onKeyDown;
#X text 55 291 onKeyPress;
#X text 42 322 hmmm...wouldn't it be great if Pd also gave us onChange
\, onBlur \, onFocus \, onClick \, onDblClick \, onDragDrop \, onLoad
\, onMouseDown \, onMouseOver \, onMouseOut \, onMouseMove \, onUnload...?
;
#X restore 47 506 pd reacting_to_user_input;
#X obj 37 61 key;
#X obj 16 135 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 37 118 5 0 0 0 - - -;
#X obj 31 268 keyup;
#X obj 18 323 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 39 306 5 0 0 0 - - -;
#X text 88 208 Also note that key combinations \, such as SHIFT+7 produce
a different result than SHIFT or 7 alone.;
#X text 88 323 The [key] and [keyup] objects can mimic the functionality
of the [noteon] and [noteoff] objects. A key combination such as SHIFT+7
could be considered a 'chord'!;
#X text 89 54 The number at this outlet represents the numeric "ID"
of a key on the computer's keyboard. This event occurs when the key
is pressed down. Only one event is captured at a time.;
#X text 88 267 The number at this outlets represents the numeric "ID"
of a key on the computer's keyboard. This even occurs when the key
is released. Only one event is captured at a time.;
#X text 89 119 Some keys \, such as SHIFT or the F1-F12 series all
produce a zero \, but we can see by the [bng] that the event is not
ignored completely...but the numeric "ID" of the key is not captured
successfully. (This may produce different results on different systems.)
;
#X obj 21 392 keyname;
#X obj 21 449 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 70 480 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X symbolatom 76 458 10 0 0 0 - - -;
#X floatatom 18 421 5 0 0 0 - - -;
#X text 90 388 This object captures both the "keydown" and "keyup"
events. The left inlet produces a 1 when a key goes down \, and a zero
when the key goes up. The right outlet produces a symbol which represents
the name of the key.;
#N canvas 174 22 571 511 some_keyboard_fun 0;
#X obj 52 75 loadbang;
#X msg 23 16 bang;
#X obj 33 158 qlist;
#X floatatom 33 185 5 0 0 0 - - -;
#X obj 388 30 r keyboard_fun;
#X msg 52 105 read keyboard_fun.txt;
#X msg 45 51 rewind;
#X obj 388 112 symbol add2;
#X obj 388 83 t b s;
#X obj 388 138 pack s s;
#X obj 388 164 route list;
#X msg 47 245 set;
#X msg 47 278;
#X obj 388 57 symbol;
#X text 71 17 Click here to start...;
#X msg 62 131 tempo 0.8;
#X obj 47 217 loadbang;
#X connect 0 0 5 0;
#X connect 0 0 15 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 4 0 13 0;
#X connect 5 0 2 0;
#X connect 6 0 2 0;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 8 1 9 1;
#X connect 9 0 10 0;
#X connect 10 0 12 0;
#X connect 11 0 12 0;
#X connect 13 0 8 0;
#X connect 15 0 2 0;
#X connect 16 0 11 0;
#X restore 47 532 pd some_keyboard_fun;
#X connect 2 0 3 0;
#X connect 2 0 4 0;
#X connect 5 0 7 0;
#X connect 5 0 6 0;
#X connect 13 0 17 0;
#X connect 13 1 16 0;
#X connect 16 0 15 0;
#X connect 17 0 14 0;
#X restore 107 491 pd More_Info;
#N canvas 85 22 397 246 Related_Objects 0;
#X text 25 8 Native Pd Objects;
#X text 25 92 Externals and other object libraries;
#X obj 61 129 gemkeyboard;
#X obj 62 159 gemkeyname;
#X restore 107 465 pd Related_Objects;
#X text 35 53 INLETS:;
#X text 6 75 ARGUMENTS:;
#X text 26 94 OUTLETS:;
#X text 17 170 EXAMPLES:;
#X text 18 463 SEE ALSO:;
#X obj 8 8 cnv 15 180 30 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 28 14 key;
#X obj 63 14 keyup;
#X obj 114 14 keyname;
#X text 195 15 - GRAB KEYBOARD;
#X text 104 53 None;
#X text 104 94 Please see the following sub-patch called "More_Info"
for detailed information about the objects' outlets. The outlets of
this 'object group' provide Pd with information about keystrokes on
your computer's keyboard.;
#X obj 108 174 key;
#X floatatom 108 201 3 0 0 0 - - -;
#X floatatom 147 200 3 0 0 0 - - -;
#X obj 147 174 keyup;
#X floatatom 201 200 3 0 0 0 - - -;
#X obj 201 174 keyname;
#X symbolatom 252 199 10 0 0 0 - - -;
#X text 109 248 To see this example in action \, simply type something
on your keyboard.;
#X obj 108 225 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 147 225 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 201 225 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 110 291 [key] and [keyup] report the (system dependent) numbers
of "printing" keys of the keyboard. [keyname] gives the symbolic name
of the key \, with a 1 if it's up or 0 if it's down \, and works with
non-printing keys like shift or "F1".;
#X text 111 362 Caveat -- this only works if Pd actually gets the key
events which can depend on the stacking order of windows and/or the
pointer location. This is dependent on the system.;
#X text 155 542 - Dave Sabine \, July 11 \, 2003;
#X obj 281 514 pddp_open all_about_hid;
#X text 105 515 for more on HIDs:;
#X connect 17 0 18 0;
#X connect 18 0 25 0;
#X connect 19 0 26 0;
#X connect 20 0 19 0;
#X connect 21 0 27 0;
#X connect 22 0 21 0;
#X connect 22 1 23 0;

--- NEW FILE: midi-help.pd ---
#N canvas 14 15 880 473 10;
#X text 718 77 off;
#X floatatom 683 127 0 0 0 0 - - -;
#X obj 683 232 noteout;
#X obj 683 206 makenote 64 250;
#X obj 683 153 metro 500;
#X msg 683 100 1;
#X msg 715 100 0;
#X text 683 77 on;
#X msg 683 180 60;
#X text 31 14 MIDI I/O objects;
#X floatatom 463 129 0 0 0 0 - - -;
#X floatatom 426 129 0 0 0 0 - - -;
#X floatatom 536 131 0 0 0 0 - - -;
#X floatatom 497 129 0 0 0 0 - - -;
#X floatatom 574 132 0 0 0 0 - - -;
#X obj 426 102 touchin;
#X obj 497 103 polytouchin;
#X text 425 79 channel and poly aftertouch;
#X floatatom 427 156 0 0 0 0 - - -;
#X floatatom 498 156 0 0 0 0 - - -;
#X obj 427 182 touchout;
#X obj 498 182 polytouchout;
#X floatatom 537 157 0 0 0 0 - - -;
#X floatatom 575 157 0 0 0 0 - - -;
#X obj 428 283 midiin;
#X floatatom 428 314 0 0 0 0 - - -;
#X floatatom 459 314 0 0 0 0 - - -;
#X floatatom 501 312 0 0 0 0 - - -;
#X floatatom 537 312 0 0 0 0 - - -;
#X text 424 220 These two are always omni and;
#X text 423 236 output the port number instead;
#X obj 503 281 sysexin;
#X obj 430 404 midiout;
#X text 428 338 use this to output raw MIDI;
#X text 423 358 (the second inlet is the port;
#X text 676 424 updated for Pd release 0.35;
#X obj 393 23 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 393 426 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 20 46 This document is currently under revision by the PDDP
(Pure Data Documentation Project). Please stay posted for available
updates.;
#X text 20 101 DOCUMENTED MIDI OBJECTS;
#X text 430 44 MIDI OBJECTS NOT YET DOCUMENTED;
#X text 424 254 of the channel (Linux only):;
#X text 426 376 number.) (Linux Only):;
#X obj 647 23 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 647 426 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 676 44 THE [MAKENOTE] APPARATUS;
#N canvas 0 0 458 308 window_controls 0;
#X obj 149 59 inlet;
#X obj 192 119 inlet;
#X msg 149 233 \; pd open \$1 \$2;
#X obj 149 79 pack s;
#X obj 149 99 makefilename %s.pd;
#X obj 149 213 pack s s;
#X obj 192 193 pack s;
#X obj 251 150 loadbang;
#X msg 192 173 C:/pd/doc/5.reference;
#X obj 198 139 delay 20;
#X connect 0 0 3 0;
#X connect 1 0 8 0;
#X connect 1 0 9 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 2 0;
#X connect 6 0 5 1;
#X connect 7 0 8 0;
#X connect 8 0 6 0;
#X connect 9 0 8 0;
#X restore 40 433 pd window_controls;
#X text 144 346 If you have installed Pd into;
#X text 143 361 a unique location \, type the path;
#X text 144 377 here to your 5.reference folder;
#X text 141 394 and then save this patch.;
#X text 244 119 Click the object's name;
#X text 243 135 to view its help document.;
#X msg 143 413 set C:/pd/doc/5.reference;
#X msg 161 120 help-bendin;
#X msg 161 144 help-bendout;
#X msg 161 169 help-ctlin;
#X msg 162 194 help-ctlout;
#X msg 162 219 help-notein;
#X msg 162 244 help-noteout;
#X msg 162 269 help-pgmin;
#X msg 163 295 help-pgmout;
#X connect 1 0 4 0;
#X connect 3 0 2 0;
#X connect 3 1 2 1;
#X connect 4 0 8 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 8 0 3 0;
#X connect 15 0 11 0;
#X connect 15 1 10 0;
#X connect 16 0 13 0;
#X connect 16 1 12 0;
#X connect 16 2 14 0;
#X connect 18 0 20 0;
#X connect 19 0 21 0;
#X connect 22 0 21 1;
#X connect 23 0 21 2;
#X connect 24 0 25 0;
#X connect 24 1 26 0;
#X connect 31 0 27 0;
#X connect 31 1 28 0;
#X connect 36 0 37 0;
#X connect 43 0 44 0;
#X connect 53 0 46 1;
#X connect 54 0 46 0;
#X connect 55 0 46 0;
#X connect 56 0 46 0;
#X connect 57 0 46 0;
#X connect 58 0 46 0;
#X connect 59 0 46 0;
#X connect 60 0 46 0;
#X connect 61 0 46 0;

--- NEW FILE: bendout-help.pd ---
#N canvas 249 47 492 554 10;
#X floatatom 17 124 5 0 0;
#X floatatom 61 141 5 0 0;
#N canvas 240 135 476 472 other_midi_objects 0;
#X obj 55 31 ctlin;
#X obj 97 31 pgmin;
#X obj 140 30 bendin;
#X obj 191 29 touchin;
#X obj 252 29 polytouchin;
#X obj 337 29 midiin;
#X obj 388 28 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 161 85 touchout;
#X obj 225 84 polytouchout;
#X obj 314 84 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X obj 8 31 midiin;
#X restore 20 392 pd other_midi_objects;
#X text 18 337 related object;
#X obj 282 412 pddp_open all_about_midi_flags;
#X text 18 412 for an explanation of MIDI usage in Pd see:;
#X floatatom 20 266 5 0 0;
#X text 111 263 <-- pitch bend values on channel 2;
#X obj 39 21 bendout;
#X obj 17 165 bendout;
#X text 120 114 inlets:;
#X text 119 165 outlets : none (writes directly to the MIDI port);
#X text 128 132 left: 14-bit pitchbend value;
#X text 127 148 right: MIDI channel number;
#X text 14 198 Arguments: the MIDI channel number to which to write
to. If no argument is given [bendout] defaults to channel 1 The channel
can be then chaned byy sending an int to the right inlet:;
#X obj 20 284 bendout 2;
#X text 16 314 Output: the output is direct to the MIDI port.;
#X obj 21 352 bendin;
#X text 12 51 The [bendout] object takes a pitchbend value (0-127)
and formats it into a pitchbend MIDI message and sends out the MIDI
port on the appropriate channel. If no argument is given it defaults
to channel 1;
#X text 87 22 - send pitchbend value to the MIDI port;
#X text 18 482 This document was updated for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 0 0 9 0;
#X connect 1 0 9 1;
#X connect 6 0 15 0;

--- help-otherbinops.pd DELETED ---

--- NEW FILE: route-help.pd ---
#N canvas 103 43 1019 657 10;
#X obj 7 331 print x1;
#X obj 69 331 print x2;
#X obj 131 331 print x3;
#X obj 194 331 print x4;
#X obj 82 273 route 23 54 1;
#X msg 170 239 54 43;
#X msg 212 239 1 foo bar;
#X obj 141 418 route big apple;
#X msg 351 386 1 2 3;
#X msg 248 376 big apple pie;
#X msg 320 238 walk the dog;
#X text 8 217 numeric arguments:;
#X text 16 356 symbolic arguments:;
#X msg 590 287 bang;
#X msg 621 380 list;
#X msg 622 413 list 5;
#X msg 593 307 symbol pie;
#X msg 596 327 pie;
#X msg 584 248 1 2 3;
#X obj 26 13 route;
#X text 67 13 - route messages according to their first element;
#X text 25 108 If a match is found \, and the message contains only
ONE element \, then a bang is sent out the corresponding outlet. If
a match if found \, and the message contains multiple elements (a list)
\, then all the list elements except the first element is sent out
the corresponding outlet. If no match is found \, then the entire message
is sent out the right-most outlet - the "rejection" outlet. The number
of outlets is the number of arguments plus one.;
#X text 176 265 In this case \, the creation arguments are all numbers
and [route] will therefore assume that it should attempt to match messages
that are data type 'number'. All messages that are not numbers will
be output through the right-most outlet.;
#X msg 18 239 23 345 456;
#X msg 96 239 420 34 45;
#X msg 32 376 apple pie;
#X msg 105 376 impeach ringo starr;
#X text 34 490 In this case \, the data type 'symbol' is implied by
the creation arguments and therefore this [route] object will match
symbols only. Symbolic messages that do not match any of the arguments
\, and all numbers \, will be output through the right-most outlet.
;
#X text 565 21 If necessary \, messages of different data types can
be matched by the [route] object if the data type is explictly defined
in the creation arguments.;
#X text 564 71 In the example below \, instead of matching the 'value'
of a message \, the [route] object will match 'data type': i.e. lists
will be sent through the first outlet \, floats will be sent through
the second outlet \, symbols through the third outlet \, bangs through
the fourth outlet. The fifth outlet will then output anything that
does not match one of the previously defined data types (i.e. the "pie"
message below is a text message that hasn't been defined as a 'symbol'
- hence \, Pd cannot determine which data type it is and it will be
output through the right-most outlet).;
#X text 608 208 a float;
#X text 632 247 a list (of floats);
#X text 627 287 a bang;
#X text 672 307 a symbol;
#X text 630 328 none of the above!;
#X text 702 268 a list of symbols;
#X text 599 349 SPECIAL CASES OF LISTS.;
#X text 18 563 RELATED OBJECTS;
#X obj 22 584 select;
#X obj 67 584 trigger;
#X obj 119 584 moses;
#X text 588 603 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X text 26 36 Route checks the first element of a message against each
of its creation arguments \, which may be numbers or symbols (but not
a mixture of the two unless the data types are defined explicitly)
\, then sends the messages through the appropriate outlets.;
#N canvas 0 22 466 316 related_objects_from_other_libraries 0;
#X obj 26 33 segregate;
#X obj 104 34 multiselect;
#X text 18 86 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 135 The best places to find information about Pd's libraries
is:;
#X text 14 157 www.pure-data.org and click on "Downloads" then "Software"
;
#X text 15 173 or;
#X text 16 187 iem.kug.ac.at/pdb/;
#X obj 193 34 demux;
#X obj 245 34 gate;
#X restore 22 607 pd related_objects_from_other_libraries;
#X floatatom 625 498 5 0 0 0 - - -;
#X symbolatom 673 497 10 0 0 0 - - -;
#X obj 578 518 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144
-1 -1;
#X msg 622 450 list not-a-list;
#X msg 578 208 89;
#X msg 581 228 float 7;
#X obj 578 474 route bang float symbol list;
#X obj 625 518 bng 15 250 50 0 empty empty float -4 23 1 12 -262144
-1 -1;
#X obj 673 518 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144
-1 -1;
#X obj 721 518 bng 15 250 50 0 empty empty list -2 23 1 12 -262144
-1 -1;
#X obj 769 518 bng 15 250 50 0 empty empty undefined -18 23 1 12 -262144
-1 -1;
#X msg 587 268 list moon earth;
#X text 636 228 definitely a float!;
#X text 620 366 An empty list is translated into a bang;
#X text 620 399 A list with only one float is translated to a float
;
#X text 620 435 A list with only one symbol is translated to a symbol
;
#X obj 141 439 bng 15 250 50 0 empty empty big -4 23 1 12 -262144 -1
-1;
#X obj 189 439 bng 15 250 50 0 empty empty apple -7 23 1 12 -262144
-1 -1;
#X obj 237 439 bng 15 250 50 0 empty empty everything_else -2 23 1
12 -262144 -1 -1;
#X obj 286 326 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144
-1 -1;
#X obj 333 326 bng 15 250 50 0 empty empty float -4 23 1 12 -262144
-1 -1;
#X obj 381 326 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144
-1 -1;
#X obj 429 326 bng 15 250 50 0 empty empty everything_else -2 23 1
12 -262144 -1 -1;
#X obj 129 469 print x1;
#X obj 189 469 print x2;
#X obj 249 469 print x3;
#X text 526 557 [trigger]-style shortcuts don't work:;
#X obj 538 577 route a b f l p s;
#X text 667 576 !=;
#X obj 689 577 route anything bang float list pointer symbol;
#X connect 4 0 0 0;
#X connect 4 1 1 0;
#X connect 4 2 2 0;
#X connect 4 3 3 0;
#X connect 5 0 4 0;
#X connect 6 0 4 0;
#X connect 7 0 60 0;
#X connect 7 0 67 0;
#X connect 7 1 61 0;
#X connect 7 1 68 0;
#X connect 7 2 62 0;
#X connect 7 2 69 0;
#X connect 8 0 7 0;
#X connect 9 0 7 0;
#X connect 10 0 4 0;
#X connect 13 0 50 0;
#X connect 14 0 50 0;
#X connect 15 0 50 0;
#X connect 16 0 50 0;
#X connect 17 0 50 0;
#X connect 18 0 50 0;
#X connect 23 0 4 0;
#X connect 24 0 4 0;
#X connect 25 0 7 0;
#X connect 26 0 7 0;
#X connect 44 0 51 0;
#X connect 45 0 52 0;
#X connect 47 0 50 0;
#X connect 48 0 50 0;
#X connect 49 0 50 0;
#X connect 50 0 46 0;
#X connect 50 1 44 0;
#X connect 50 2 45 0;
#X connect 50 3 53 0;
#X connect 50 4 54 0;
#X connect 55 0 50 0;

--- help-line.pd DELETED ---

--- help-receive.pd DELETED ---

--- help-send.pd DELETED ---

--- help-math.pd DELETED ---

--- NEW FILE: makefilename-help.pd ---
#N canvas 22 93 613 608 12;
#X obj 104 539 pddp;
#X obj 8 8 cnv 15 90 553 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 104 463 Pd Documentation Chapter 3.6 - doc/1.manual/x3.htm
;
#N canvas 523 37 597 612 More_Info 0;
#X text 17 24 COMMON USES;
#X text 15 417 INNOVATIVE USES;
#X text 47 47 I believe that this object was developed first to allow
PD to generate sequential file names - perhaps to be used in conjunction
with [soundfiler] or [openpanel]. For example \, an audio loop recorder
might generate a continuous series of sound files to be saved on a
hard drive...like below:;
#X obj 54 136 bng 15 250 50 0 empty empty Bang_me 18 7 0 8 -262144
-1 -1;
#X obj 54 160 f;
#X symbolatom 54 215 0 0 0 0 - - -;
#X text 53 238 This file name could be used when saving the audio data
to disk.;
#X obj 87 161 + 1;
#X obj 54 187 makefilename file-%d.aif;
#X text 20 280 LIMITATIONS;
#N canvas 175 22 583 599 spaces_and_multiple_variables 0;
#X text 25 19 Instead of using spaces \, an underscore will often produce
a tolerable compromise.;
#X obj 210 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 210 64 f;
#X symbolatom 210 119 0 0 0 0 - - -;
#X obj 243 64 + 1;
#X obj 210 91 makefilename I_am_%d_years_old.;
#X text 28 143 With careful planning \, multiple variables can be incorporated
using a stack of [makefilename]s. In the example below \, let's assume
that this tool is used to generate file names for an audio loop recorder
which operates 24 hours per day \, every day.;
#X obj 31 235 loadbang;
#X obj 31 280 metro 200;
#X obj 31 261 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
;
#X obj 64 305 + 1;
#X obj 209 349 route 0 1 2 3 4 5 6;
#X obj 31 354 mod 24;
#X floatatom 31 379 5 0 0 0 - - -;
#X floatatom 31 329 0 0 0 0 - - -;
#X obj 31 305 f;
#X obj 53 405 sel 0;
#X obj 218 269 f;
#X obj 250 269 + 1;
#X obj 218 294 mod 7;
#X obj 218 322 pack f f;
#X obj 230 498 makefilename Monday_%d.wav;
#X symbolatom 65 548 0 0 0 0 - - -;
#X obj 334 374 makefilename Saturday_%d.wav;
#X obj 314 399 makefilename Friday_%d.wav;
#X obj 290 326 t b f;
#X obj 293 424 makefilename Thursday_%d.wav;
#X obj 272 449 makefilename Wednesday_%d.wav;
#X obj 251 474 makefilename Tuesday_%d.wav;
#X obj 209 522 makefilename Sunday_%d.wav;
#X text 81 377 hour of day;
#X text 79 330 total hours;
#X text 199 549 Crude...but effective.;
#X obj 31 455 s dayHour;
#X obj 53 430 s weekDay;
#X obj 218 236 r weekDay;
#X obj 290 300 r dayHour;
#X text 284 271 loop through weekdays;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 2 0 5 0;
#X connect 4 0 2 1;
#X connect 5 0 3 0;
#X connect 7 0 9 0;
#X connect 8 0 15 0;
#X connect 9 0 8 0;
#X connect 10 0 15 1;
#X connect 11 0 29 0;
#X connect 11 1 21 0;
#X connect 11 2 28 0;
#X connect 11 3 27 0;
#X connect 11 4 26 0;
#X connect 11 5 24 0;
#X connect 11 6 23 0;
#X connect 12 0 13 0;
#X connect 13 0 16 0;
#X connect 13 0 33 0;
#X connect 14 0 12 0;
#X connect 15 0 10 0;
#X connect 15 0 14 0;
#X connect 16 0 34 0;
#X connect 17 0 18 0;
#X connect 17 0 19 0;
#X connect 18 0 17 1;
#X connect 19 0 20 0;
#X connect 20 0 11 0;
#X connect 21 0 22 0;
#X connect 23 0 22 0;
#X connect 24 0 22 0;
#X connect 25 0 20 0;
#X connect 25 1 20 1;
#X connect 26 0 22 0;
#X connect 27 0 22 0;
#X connect 28 0 22 0;
#X connect 29 0 22 0;
#X connect 35 0 17 0;
#X connect 36 0 25 0;
#X restore 47 445 pd spaces_and_multiple_variables;
#N canvas 175 22 507 609 help_with_interfaces 0;
#X text 17 16 Building user interfaces in Pd is a difficult balance
between usability and performance. Pd is not winning any awards for
usability - let's face it: it's powerful \, it's cool \, and that's
the way we like it. You're not here because you want a colourful \,
bevelled interface...you want the raw power that object oriented languages
provide mixed with a few of the conveniences that a graphic environment
affords.;
#X obj 17 269 cnv 15 450 300 empty empty empty 20 12 0 14 -261681 -66577
0;
#X obj 45 379 tgl 15 0 s_dsp empty DSP 18 7 0 8 -262144 -1 -1 0 1;
#X obj 45 424 vsl 15 128 0 127 0 0 v_slider empty Volume 18 7 0 8 -262144
-1 -1 0 1;
#X obj 45 401 bng 15 250 50 0 b_panel empty Open_File 18 7 0 8 -262144
-1 -1;
#X obj 40 280 cnv 15 400 20 empty d_canvas DSP 20 12 0 8 -233017 -66577
0;
#X obj 40 302 cnv 15 400 20 empty f_canvas FILE_OPEN 20 12 0 8 -233017
-66577 0;
#X obj 40 324 cnv 15 400 20 empty v_canvas VOLUME 20 12 0 8 -233017
-66577 0;
#X text 187 361 The grey canvases above could;
#X text 189 383 be used like "status bars" to;
#X text 189 404 write relevant information to;
#X text 186 460 [makefilename] helps to format;
#X text 188 484 the information in a meaningful;
#X text 189 505 way.;
#X text 187 426 the screen.;
#N canvas 217 22 470 320 look_inside 0;
#X obj 199 14 r b_panel;
#X obj 235 166 r v_slider;
#X obj 36 236 s d_canvas;
#X obj 199 114 s f_canvas;
#X obj 235 263 s v_canvas;
#X obj 36 80 sel 0;
#X obj 71 152 symbol ON;
#X obj 36 128 symbol OFF;
#X obj 71 103 bang;
#X msg 36 210 label \$1;
#X obj 36 184 makefilename DSP:%s;
#X obj 36 13 r s_dsp;
#X msg 45 38 \; pd dsp \$1;
#X obj 199 40 openpanel;
#X obj 199 65 makefilename FILE_OPEN:%s;
#X msg 199 90 label \$1;
#X msg 235 240 label \$1;
#X obj 235 192 expr ($f1/128)*100;
#X obj 235 217 makefilename VOLUME:%d/100;
#X connect 0 0 13 0;
#X connect 1 0 17 0;
#X connect 5 0 7 0;
#X connect 5 1 8 0;
#X connect 6 0 10 0;
#X connect 7 0 10 0;
#X connect 8 0 6 0;
#X connect 9 0 2 0;
#X connect 10 0 9 0;
#X connect 11 0 5 0;
#X connect 11 0 12 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 3 0;
#X connect 16 0 4 0;
#X connect 17 0 18 0;
#X connect 18 0 16 0;
#X restore 40 350 pd look_inside;
#X text 18 156 However \, there are times when sacrifices must be made
in the area of performance to provide users with on-screen reporting
\, record keeping \, and sometimes even a few 'pleasantries'. Consider
the following examples - but always weight the pros and cons when incorporating
these types of interfaces. Performance vs. Usability.;
#X restore 47 477 pd help_with_interfaces;
#X text 45 304 This object does not provide advanced formatting and
parsing abilities. For example \, you cannot use spaces or odd characters
in the argument - also the argument can only include ONE variable.
Although \, these limitations can be easily overcome with a little
ingenuity and compromise -- see below.;
#X connect 3 0 4 0;
#X connect 4 0 7 0;
#X connect 4 0 8 0;
#X connect 7 0 4 1;
#X connect 8 0 5 0;
#X restore 104 513 pd More_Info;
#N canvas 85 22 397 246 Related_Objects 0;
#X text 25 8 Native Pd Objects;
#X text 25 92 Externals and other object libraries;
#X obj 42 46 symbol;
#X obj 112 46 int;
#X obj 156 46 openpanel;
#X obj 31 126 strcat;
#X obj 32 155 makesymbol;
#X restore 104 487 pd Related_Objects;
#X text 38 53 INLETS:;
#X text 15 197 ARGUMENTS:;
#X text 29 316 OUTLETS:;
#X text 22 342 EXAMPLES:;
#X text 21 462 SEE ALSO:;
#X obj 5 18 makefilename;
#X text 115 18 - FORMAT A STRING WITH A VARIABLE FIELD.;
#X text 104 316 Symbol - The output is formatted like "symbol YOURSTRING".
;
#X floatatom 114 346 0 0 0 0 - - -;
#X obj 114 400 print;
#X obj 114 373 makefilename soundfile%d.aif;
#X text 170 400 numbered filenames;
#X obj 353 431 print;
#X text 406 433 text examples;
#X obj 353 380 symbol;
#X msg 353 343 dave;
#X msg 412 341 drums;
#X msg 479 344 Pd;
#X msg 526 355 cool;
#X obj 353 404 makefilename %s_PD.aif;
#X text 107 198 This object generates symbols according to a format
string (the argument) \, for use as a series of filenames \, table
names \, or whatnot. You can plug in a variable number or symbol by
putting "%d" or "%s" in the string. If you put "%s" in the string \,
be sure to send it a symbol and vice versa... there' no checking. Each
[makefilename] object can have only one variable.;
#X text 152 540 - Dave Sabine \, April 25 \, 2003;
#X text 108 53 Integer - If a number is sent to the inlet \, the argument
should be written with a "%d" which represents the location of the
incoming variable number in the outgoing symbol. Floats will be converted
to integers.;
#X text 107 126 Symbol - If a symbol is sent to the inlet \, the argument
should be written with a "%s" which represent the location of the incoming
variable symbol in the outgoing symbol. Lists will be truncated.;
#X connect 13 0 15 0;
#X connect 15 0 14 0;
#X connect 19 0 24 0;
#X connect 20 0 19 0;
#X connect 21 0 19 0;
#X connect 22 0 19 0;
#X connect 23 0 19 0;
#X connect 24 0 17 0;

--- help-realtime.pd DELETED ---

--- NEW FILE: swap-help.pd ---
#N canvas 0 0 625 631 12;
#X obj 104 572 pddp;
#X obj 8 8 cnv 15 90 586 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 37 47 INLETS:;
#X obj 54 18 swap;
#X text 108 18 - SWAP TWO NUMBERS \, RESPECTING RIGHT-TO-LEFT ORDER
;
#X obj 285 470 swap;
#X floatatom 175 429 5 0 0 0 - - -;
#X floatatom 372 437 5 0 0 0 - - -;
#X floatatom 312 497 5 0 0 0 - - -;
#X floatatom 263 497 5 0 0 0 - - -;
#X msg 243 427 42 7;
#X obj 119 438 bng 15 250 50 0 empty empty "bang" 0 -6 0 8 -262144
-1 -1;
#X msg 290 415 42 7 3 4;
#X floatatom 506 491 5 0 0 0 - - -;
#X floatatom 454 490 5 0 0 0 - - -;
#X msg 454 436 bang;
#X obj 454 460 swap 12;
#X text 37 62 - LEFT:;
#X text 28 263 - RIGHT:;
#X text 104 63 Float - A float at the left inlet will send the number
to the right outlet and then send the number at the right inlet to
the left outlet.;
#X text 104 117 Bang - A bang at the left inlet will force [swap] to
send its values to the outlets \, in reverse order. The value from
the left inlet will be sent to the right outlet then the value at the
right inlet will be sent out the left outlet.;
#X text 104 188 List - A list at the left inlet will update the values
of both of [swap]'s inlets and send the numbers to the outlets in reverse
order. Note that lists of 3 or more elements will be truncated.;
#X text 104 264 Float - A float at the right inlet is stored for later
use. It will be sent to the left outlet when a float or bang is received
in the left inlet.;
#X text 104 317 One - [swap] accepts a single float as a creation argument
which initializes the first value to be sent out the left outlet.;
#X text 104 370 Two - outputs the float values of the two inlets in
reverse order when a float \, list \, or bang is received at the left
inlet.;
#X text 371 418 float;
#X text 174 410 float;
#X text 244 409 list;
#X text 428 510 creation argument;
#N canvas 59 0 397 246 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 23 92 Externals and other object libraries;
#X obj 42 48 pack;
#X obj 104 48 unpack;
#X text 30 126 [split];
#X restore 104 522 pd Related_Objects;
#N canvas 60 0 581 620 More_Info 0;
#X msg 38 54 42 7;
#X obj 38 79 swap;
#X floatatom 38 105 5 0 0 0 - - -;
#X floatatom 97 105 5 0 0 0 - - -;
#X obj 38 129 pack f f;
#X obj 38 153 print;
#N canvas 154 0 649 595 millers_note-off_parser 0;
#X obj 27 18 notein;
#X text 103 14 [notein] is an object which receives incoming MIDI data
from a MIDI instrument. The three outlets are PITCH \, VELOCITY \,
and MIDI CHANNEL from left to right. It is important to note however
that the data is outputted from right to left. Which means that the
first piece of information to be sent out the object is the MIDI CHANNEL.
;
#X obj 26 117 swap;
#X obj 26 156 pack;
#X obj 26 200 route 0;
#X floatatom 26 228 5 0 0 0 - - -;
#X text 102 117 Here \, [swap] is used to store the VELOCITY until
the PITCH information comes from [notein]. The next step will pack
the two together...but we have to ensure that [pack] receives the two
numbers in the correct order: PITCH first \, then VELOCITY. This way
\, using [route] we can determine whether or not this incoming MIDI
data is a "note-off" signal (i.e. VELOCITY = 0).;
#X obj 26 250 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 46 312 notein;
#X obj 47 352 pack;
#X obj 47 377 route 0;
#X floatatom 47 402 5 0 0 0 - - -;
#X obj 47 420 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 122 308 The goal of the Miller's example at the bottom left
\, is to retrieve "note-off" signals from [notein]. To do that \, we
have to test the incoming data for pitches with a velocity of zero.
To do that \, we are packing up the incoming PITCH and VELOCITY data
and sending them to [route]...in effect we achieve the following:;
#X text 98 420 IF velocity = 0 THEN "bang";
#X text 127 445 In the example above \, the [pack] object will output
a list as soon as the VELOCITY information comes from [notein]. As
a result \, the list will be outputted from pack BEFORE the PITCH information
is retrieved. [swap] is used to solve this problem by making sure that
the VELOCITY and PITCH are both received before packing them up and
sending them to the [route] object.;
#X text 50 248 This will "bang" only when velocity = 0;
#X text 22 282 THIS IS WHY THE ALTERNATIVE DOESN'T WORK?;
#X connect 0 0 2 0;
#X connect 0 1 2 1;
#X connect 2 0 3 0;
#X connect 2 1 3 1;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 7 0;
#X connect 8 0 9 1;
#X connect 8 1 9 0;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X restore 28 569 pd millers_note-off_parser;
#X floatatom 44 319 5 0 0 0 - - -;
#X floatatom 94 319 5 0 0 0 - - -;
#X floatatom 143 319 5 0 0 0 - - -;
#X floatatom 112 440 5 0 0 0 - - -;
#X floatatom 161 440 5 0 0 0 - - -;
#X floatatom 211 440 5 0 0 0 - - -;
#X msg 37 243 2 2500 9 420;
#X obj 43 289 unpack f f f f;
#X floatatom 193 319 5 0 0 0 - - -;
#X text 14 10 [swap] is most commonly used to change the order of a
list. This trick is best suited for a PAIR of numbers.;
#X obj 166 345 swap;
#X obj 139 370 swap;
#X obj 112 394 swap;
#X obj 196 378 swap;
#X obj 169 403 swap;
#X obj 228 408 swap;
#X floatatom 262 440 5 0 0 0 - - -;
#X text 230 345 This could quickly become ridiculous!;
#X msg 165 245 1 2 3 4;
#X msg 254 258 0 200 3333 1111;
#X text 14 477 In other settings \, the [swap] object is useful as
a timing mechanism to ensure that two numbers arrive at their destination
in a particular order. Miller Puckette provided an excellent example
of [swap] used to build a 'note-off parser'.;
#X text 14 185 Lists that are longer than two elements could be sorted
this way \, but the structure quickly becomes unmanageable. It's probably
better to find an alternative method.;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 2 0 4 0;
#X connect 3 0 4 1;
#X connect 4 0 5 0;
#X connect 7 0 19 0;
#X connect 8 0 18 0;
#X connect 9 0 17 0;
#X connect 13 0 14 0;
#X connect 14 0 7 0;
#X connect 14 1 8 0;
#X connect 14 2 9 0;
#X connect 14 3 15 0;
#X connect 15 0 17 1;
#X connect 17 0 18 1;
#X connect 17 1 20 1;
#X connect 18 0 19 1;
#X connect 18 1 20 0;
#X connect 19 0 10 0;
#X connect 19 1 21 0;
#X connect 20 0 21 1;
#X connect 20 1 22 1;
#X connect 21 0 11 0;
#X connect 21 1 22 0;
#X connect 22 0 12 0;
#X connect 22 1 23 0;
#X connect 25 0 14 0;
#X connect 26 0 14 0;
#X restore 104 547 pd More_Info;
#X text 152 573 - Dave Sabine \, November 12 \, 2002;
#X text 13 317 ARGUMENTS:;
#X text 29 369 OUTLETS:;
#X text 20 427 EXAMPLES:;
#X text 21 522 SEE ALSO:;
#X connect 5 0 9 0;
#X connect 5 1 8 0;
#X connect 6 0 5 0;
#X connect 7 0 5 1;
#X connect 10 0 5 0;
#X connect 11 0 5 0;
#X connect 12 0 5 0;
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 16 1 13 0;

--- NEW FILE: bang-help.pd ---
#N canvas 12 2 916 656 10;
#X obj 502 191 print;
#X obj 22 14 bang;
#X msg 514 133 walk the cat;
#X msg 501 112 45;
#X obj 502 166 bang;
#X text 110 13 - SEND "BANG" MESSAGE;
#X obj 76 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 22 38 The bang object is one of the basic building blocks of
PD and are normally used to activate events. The bang object can be
created in two different ways.;
#X obj 45 83 bang;
#X text 22 82 1;
#X text 21 141 2;
#X obj 45 142 bng 15 250 50 0 empty empty empty 18 7 0 8 -262144 -1
-1;
#X text 45 107 This version uses minimal CPU but serves essentially
the same purpose as the GUI version.;
#X text 43 286 1 Size;
#X obj 122 289 bng 8 250 50 0 empty empty 8 10 4 0 8 -262144 -1 -1
;
#X obj 147 282 bng 15 250 50 0 empty empty 15 17 9 0 8 -262144 -1 -1
;
#X obj 182 272 bng 25 250 50 0 empty empty 25 27 20 0 8 -262144 -1
-1;
#X text 69 304 Default size is 15 pixels. The minimum size is 8 and
it does not have a maximum size.;
#X text 41 465 3 Hold;
#X obj 111 465 bng 15 50 10 0 empty empty 50 17 8 0 8 -262144 -1 -1
;
#X obj 146 465 bng 15 750 50 0 empty empty 750 17 8 0 8 -262144 -1
-1;
#X text 41 538 4 Receive Symbol/Send Symbol;
#X text 67 553 This object can act as its own send or receive object.
;
#X obj 69 575 bng 15 250 50 0 link_this_bang empty This_one_sends_a_bang
17 8 128 8 -262144 -1 -1;
#X obj 69 596 bng 15 250 50 0 empty link_this_bang This_one_receives_it.
17 8 64 8 -262144 -1 -1;
#X text 280 567 Here is the alternative method.;
#X text 44 644 5 GUI Options;
#X obj 506 368 bng 8 250 50 0 empty empty empty 0 -6 0 12 -262144 -1
-1;
#X msg 679 359 label Name_that_bang;
#X msg 692 383 label Rename_that_bang;
#X msg 719 405 size 8;
#X text 67 666 The other properties are 'name' \, 'x/y offset' \, 'font
size' \, and colours (for the background \, front \, and labels [name])
;
#X obj 471 19 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 471 659 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 495 55 WHAT CAN IT DO?;
#X text 495 67 The bang object outputs "bang" when it receives something
in its inlet or its 'internal' receive symbol (GUI version only).;
#X text 547 190 The output window will print "bang" to demonstrate.
;
#X obj 647 162 print;
#X msg 647 116 walk the cat;
#X obj 647 141 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 502 215 It is important to note that "bang" is not boolean.
It's neither a zero or a one \; it's not true or false \; it's just
"bang". For a boolean object \, you should check out the toggle.;
#X obj 502 487 loadbang;
#X obj 643 487 tgl 15 0 empty empty Toggle 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 557 487 trigger;
#X obj 606 487 bang~;
#X text 502 290 OTHER HELPFUL INFO;
#X msg 735 427 size 25;
#X text 502 312 The label and size properties of the bng object (from
IEM library) can be updated dynamically by sending messages to its
inlet.;
#X text 512 461 RELATED OBJECTS;
#X text 44 165 This version uses a little more CPU than its cousin
because it lights-up when it receives a message or is clicked on and
can be coloured \, resized \, or renamed. It is sometimes 'friendlier'
as well because it can act as its own send and receive object (see
properties...). This object can be put in a Pd patch either by keyboard
shortcut: ALT+B or by creating and object (CTRL+1) called "bng".;
#X text 66 482 The default hold is 250 milliseconds. The hold value
controls the length of time that the bng object stays "lit". Note that
bng sends its message immediately regardless of the hold value.;
#X obj 261 621 s linked_bngs;
#X obj 370 583 r linked_bngs;
#X text 40 334 2 Interrupt (milliseconds);
#X text 66 348 If the bng object is "lit" and holding (see "hold" below)
\, then receives another message before the hold time has passed \,
the bng will quickly flash again for the duration you set in this interrupt
property.;
#X obj 42 421 bng 15 1000 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 65 405 This bng will hold for 1000 milliseconds \, but interrupt
for 50 milliseconds if it gets a second message during its "hold".
Click it once...wait. Then click it multiple times rather quickly to
see the effect.;
#X obj 261 603 bang;
#X obj 370 602 bang;
#X msg 261 584 send a message;
#X obj 370 620 print;
#X text 69 143 a.k.a. "bng";
#X text 43 264 PROPERTIES OF BNG;
#X text 497 548 This document was updated for Pd version 0.35 test
24 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#N canvas 4 24 432 275 related_objects_from_other_libraries 0;
#X obj 266 48 oneshot;
#X obj 259 28 toddle;
#X obj 18 48 render_trigger;
#X obj 18 28 metroplus;
#X obj 78 28 exciter;
#X obj 127 28 bangfilter1+2;
#X obj 211 28 counter;
#X obj 108 48 countund;
#X obj 163 48 kalashnikov;
#X obj 236 48 init;
#X text 18 86 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 135 The best places to find information about Pd's libraries
is:;
#X text 14 157 www.puredata.org and click on "Downloads" then "Software"
;
#X text 15 173 or;
#X text 16 187 iem.kug.ac.at/pdb/;
#X restore 501 513 pd related_objects_from_other_libraries;
#X connect 2 0 4 0;
#X connect 3 0 4 0;
#X connect 4 0 0 0;
#X connect 28 0 27 0;
#X connect 29 0 27 0;
#X connect 30 0 27 0;
#X connect 32 0 33 0;
#X connect 38 0 39 0;
#X connect 39 0 37 0;
#X connect 46 0 27 0;
#X connect 52 0 58 0;
#X connect 57 0 51 0;
#X connect 58 0 60 0;
#X connect 59 0 57 0;

--- help-select.pd DELETED ---

--- NEW FILE: notein-help.pd ---
#N canvas 255 1 494 655 10;
#X obj 32 12 notein;
#X text 133 97 inlets : none;
#X text 134 122 outlets:;
#X text 134 142 left: MIDI note number;
#X text 135 163 middle: velocity;
#X text 133 187 right: MIDI channel number;
#X obj 34 96 notein;
#X floatatom 35 145 5 0 0;
#X floatatom 52 166 5 0 0;
#X floatatom 72 188 5 0 0;
#X floatatom 42 383 5 0 0;
#X floatatom 91 383 5 0 0;
#X obj 42 350 notein 1;
#X text 105 349 notein listening only to channel 1;
#X text 7 396 note number;
#X text 101 396 velocity;
#N canvas 240 135 478 474 other_midi_objects 0;
#X obj 7 29 ctlin;
#X obj 49 29 pgmin;
#X obj 92 28 bendin;
#X obj 143 27 touchin;
#X obj 204 27 polytouchin;
#X obj 289 27 midiin;
#X obj 340 26 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 160 84 bendout;
#X obj 217 83 touchout;
#X obj 281 82 polytouchout;
#X obj 370 82 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X restore 144 497 pd other_midi_objects;
#X obj 17 497 noteout;
#X obj 13 286 stripnote;
#X text 78 287 is one of the ways to deal with this situation;
#X text 11 41 The [notein] object reads incoming MIDI notes and reports
their note number \, velocity and channel number. Without the argument
it reads from all MIDI channels (omni).;
#X obj 280 526 pddp_open all_about_midi_flags;
#X text 14 526 for an explanation of MIDI usage in Pd see:;
#X text 13 312 Arguments: the MIDI channel number from which to read
(with no argument it listens to all channels):;
#X text 80 13 - read incoming stream of MIDI notes.;
#X text 11 207 Note: remember that a 'note-off' is a note with velocity=0.
Therefore [notein] reports each note twice (note-on when a key on your
keyboard is pressed and note-off when the key is released). This could
be sometimes misleading when tracking notes.;
#X text 14 480 related objects;
#X floatatom 44 449 5 0 0;
#X floatatom 93 449 5 0 0;
#X text 9 462 note number;
#X text 103 462 velocity;
#X obj 44 416 notein 17;
#X text 107 415 notein listening only to channel 1 on port 2;
#X text 13 582 This document was created for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 6 0 7 0;
#X connect 6 1 8 0;
#X connect 6 2 9 0;
#X connect 12 0 10 0;
#X connect 12 1 11 0;
#X connect 31 0 27 0;
#X connect 31 1 28 0;

--- NEW FILE: math-help.pd ---
#N canvas 3 1 906 656 10;
#X floatatom 517 224 0 0 0;
#X floatatom 440 309 0 0 0;
#X floatatom 440 223 0 0 0;
#X floatatom 559 464 0 0 0;
#X floatatom 616 464 0 0 0;
#X floatatom 710 464 0 0 0;
#X floatatom 249 242 0 0 0;
#X floatatom 249 203 0 0 0;
#X floatatom 478 464 0 0 0;
#X floatatom 478 414 0 0 0;
#X floatatom 741 133 0 0 0;
#X floatatom 648 134 0 0 0;
#X obj 555 99 sin;
#X floatatom 432 54 0 0 0;
#X floatatom 555 133 0 0 0;
#X obj 432 94 * 6.28319;
#X obj 432 74 / 360;
#X obj 648 100 cos;
#X obj 741 99 tan;
#X obj 478 444 sqrt;
#X obj 249 222 atan;
#X obj 710 445 log;
#X obj 616 444 exp;
#X obj 559 444 abs;
#X obj 440 261 float;
#X obj 517 261 t b f;
#X obj 440 289 atan2;
#X text 32 14 Higher math in Pd --;
#X obj 162 14 sin;
#X obj 188 14 cos;
#X obj 214 14 tan;
#X obj 241 14 atan;
#X obj 274 14 atan2;
#X obj 314 14 exp;
#X obj 342 14 log;
#X obj 369 14 abs;
#X obj 397 14 sqrt;
#X obj 432 14 pow;
#X text 495 94 2 x Pi;
#X text 21 46 Trigonometry functions take input in Radians. To find
a radian \, simply divide a number by 360 (to make it a fraction of
a circle) and multiply it by 2(Pi) where Pi is equal to approximately
3.14159265.;
#X floatatom 432 114 0 0 0;
#X text 495 114 Radian;
#X obj 432 134 s radians;
#X obj 555 73 r radians;
#X text 20 139 [tan] will produce a number which represents the tangent
of an angle.;
#X text 20 105 [sin] and [cos] will return numbers between -1 and 1:
the sine and cosine of a number repectively.;
#X text 20 186 The [atan] object produces the arctangent of a number
as a numeric value between -Pi/2 and Pi/2.;
#X text 71 284 The [atan2] object produces the arctangent of the quotient
of its two arguments. The number produced is a value between Pi and
-Pi and represents the counterclockwise angle in radians (not degrees)
between the positive X axis and the point (x \, y). Note that the X
coordinate is passed to the right inlet and the Y coordinate is passed
to the left inlet.;
#X text 425 223 Y;
#X text 506 223 X;
#X floatatom 759 329 0 0 0;
#X obj 759 289 /;
#X obj 759 309 atan;
#X obj 759 209 r X_Y;
#X obj 517 309 s X_Y;
#X obj 517 288 pack f f;
#X obj 759 228 unpack f f;
#X obj 759 247 swap;
#X text 585 223 This example on the;
#X text 584 239 right is an alternative;
#X text 584 257 of finding the arctangent;
#X text 584 274 of two coordinates \, but;
#X text 585 291 it runs slightly slower;
#X text 585 307 than [atan2].;
#X text 782 290 Y;
#X text 746 290 X;
#X floatatom 795 268 0 0 0;
#X floatatom 759 268 0 0 0;
#X obj 6 169 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 846 184 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 8 368 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 848 383 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 782 463 0 0 0;
#X text 19 392 [sqrt] will output the square root of a number. Negative
numbers are ignored.;
#X text 416 391 [abs] will output the absolute value of a number.;
#X text 611 488 i;
#X text 418 491 [exp] will output the value of E where E is Euler's
constant and i is the value of the inlet.;
#X text 18 427 [log] will output the natural logarithm (base E) of
a number. The value of zero will produce "-1000" which represents "negative
infinity".;
#X obj 782 443 pow 2;
#X floatatom 807 423 0 0 0;
#X text 17 474 [pow] is used to exponentiate a number. 2 to the power
of 2 = 4 The right inlet or creation argument is the exponent while
the left inlet is the base.;
#X obj 10 515 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 850 530 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 16 537 RELATED OBJECTS;
#X obj 18 557 cos~;
#X obj 50 557 osc~;
#X obj 18 577 +;
#X text 40 577 Other Math Objects;
#X obj 18 597 <;
#X text 41 597 Math/Binary operators;
#X obj 84 557 expr;
#X text 420 563 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 0 0 25 0;
#X connect 2 0 24 0;
#X connect 7 0 20 0;
#X connect 9 0 19 0;
#X connect 9 0 23 0;
#X connect 9 0 22 0;
#X connect 9 0 21 0;
#X connect 9 0 78 0;
#X connect 12 0 14 0;
#X connect 13 0 16 0;
#X connect 15 0 40 0;
#X connect 16 0 15 0;
#X connect 17 0 11 0;
#X connect 18 0 10 0;
#X connect 19 0 8 0;
#X connect 20 0 6 0;
#X connect 21 0 5 0;
#X connect 22 0 4 0;
#X connect 23 0 3 0;
#X connect 24 0 26 0;
#X connect 24 0 55 0;
#X connect 25 0 24 0;
#X connect 25 1 26 1;
#X connect 25 1 55 1;
#X connect 26 0 1 0;
#X connect 40 0 42 0;
#X connect 43 0 12 0;
#X connect 43 0 17 0;
#X connect 43 0 18 0;
#X connect 51 0 52 0;
#X connect 52 0 50 0;
#X connect 53 0 56 0;
#X connect 55 0 54 0;
#X connect 56 0 57 0;
#X connect 56 1 57 1;
#X connect 57 0 67 0;
#X connect 57 1 66 0;
#X connect 66 0 51 1;
#X connect 67 0 51 0;
#X connect 68 0 69 0;
#X connect 70 0 71 0;
#X connect 78 0 72 0;
#X connect 79 0 78 1;
#X connect 81 0 82 0;

--- NEW FILE: tabread4-help.pd ---
#N canvas 2 1 658 618 12;
#X obj 114 560 pddp;
#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 14 213 ARGUMENTS:;
#X text 19 323 EXAMPLES:;
#X text 22 471 SEE ALSO:;
#N canvas 58 0 407 256 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 16 166 Externals and other object libraries;
#X obj 16 41 tabread~;
#X obj 165 41 tabwrite;
#X obj 240 41 tabwrite~;
#X obj 16 67 tabsend~;
#X obj 92 67 tabreceive~;
#X obj 192 67 tabplay~;
#X obj 269 67 table;
#X text 15 124 [array];
#X obj 16 94 soundfiler;
#X text 78 124 and fft objects.;
#X text 21 187 [tabdump];
#X obj 112 94 tabread4~;
#X text 20 207 [tabenv];
#X obj 203 94 getsize;
#X obj 274 94 setsize;
#X text 238 207 [arraysize];
#X text 238 186 [score];
#X text 114 186 [linear_path];
#X text 114 207 [plot];
#X obj 90 41 tabread;
#X restore 114 508 pd Related_Objects;
#N canvas 80 0 659 614 More_Info 0;
#X text 46 564 Also See:;
#X obj 125 564 pddp_open all_about_arrays;
#X text 21 8 WHAT IS INTERPOLATION?;
#X text 38 34 "Interpolation" is a word which described a sophisticated
way to "connect-the-dots". (This is over simplified \, but effective
for the time being.);
#X text 17 85 Let's say for example that we have an array whose values
are: 0 \, 6 \, 5;
#X text 36 120 There are 3 elements in this array \, right? Well \,
using [tabread] we could successfully read only 3 numbers. But interpolation
allows us to fill in the gaps between those values in a meaningful
way. For example \, we can assume that between 0 and 6 \, we might
find 4.5! We can also assume that the slope from 0 to 6 will be sharper
than the slope from 6 to 5 In this way \, using [tabread4] will allow
us to create much smoother lines and curves between our "dots".;
#X text 35 254 However \, this process is much more complicated than
mere "smoothing". 4-point interpolation incorporates a sophisticated
formula to intelligently create meaningful increments between values
in an array. For example: we could draw a few points on a baseball
diamond between the pitcher's mound and home plate. Those points could
represent the path a ball travels after a pitch. Using 4-point interpolation
\, we might be able to assume the positions of the ball between our
"known" points and determine whether the pitch was a fastball or a
curve ball.;
#X text 35 419 There are different formulas used to interpolate arrays.
Each method has a sort of niche where it is most comfortable and most
effective. Pd \, like most contemporary audio software \, uses 4-point
interpolation which is also known as "Hermite" interpolation. It is
the most "intelligent" 2-dimensional method of interpolation.;
#N canvas 167 0 570 613 What_does_it_really_do? 0;
#X text 20 10 Let's see [tabread4] at work...;
#N canvas 0 0 450 300 graph36 0;
#X array original_array 10 float 1;
#A 0 -0.324999 -0.274999 -0.0749997 0.174999 -0.624998 0.649998 0.599998
0.524998 -0.749997 -0.774996;
#X coords 0 1 9 -1 200 140 1;
#X restore 292 9 graph;
#X text 37 158 The array above has only 10 elements. You can draw new
shapes with your mouse.;
#X obj 14 202 bng 15 250 50 0 empty empty Bang_me 18 7 0 8 -24198 -1
-1;
#X obj 88 246 until;
#N canvas 0 0 450 300 graph37 0;
#X array interpolation 1000 float 0;
#X coords 0 1 999 -1 200 140 1;
#X restore 304 445 graph;
#X obj 84 341 tabread4 original_array;
#X obj 88 270 f;
#X obj 118 270 + 1;
#X obj 84 368 tabwrite interpolation;
#X obj 87 295 t f f;
#X obj 14 222 t b b;
#X msg 48 250 0;
#X obj 86 318 / 100;
#X msg 88 222 1000;
#X text 36 395 The array below has 1000 elements. At this resolution
\, you will see the overall effect of 4-point interpolation.;
#X connect 3 0 11 0;
#X connect 4 0 7 0;
#X connect 6 0 9 0;
#X connect 7 0 8 0;
#X connect 7 0 10 0;
#X connect 8 0 7 1;
#X connect 10 0 13 0;
#X connect 10 1 9 1;
#X connect 11 0 14 0;
#X connect 11 1 12 0;
#X connect 12 0 7 1;
#X connect 13 0 6 0;
#X connect 14 0 4 0;
#X restore 36 526 pd What_does_it_really_do?;
#X restore 114 534 pd More_Info;
#X floatatom 161 443 0 0 0 3 - - -;
#X floatatom 116 364 0 0 1000 1 location - -;
#X msg 286 389 set another_table;
#X text 106 162 Set - the "set <arrayname>" message allows you to read
from dynamic sources. You can change the source at any time using the
"set" message.;
#X text 29 266 OUTLETS:;
#X obj 486 442 table another_table;
#X text 106 323 Open the tables and use your mouse to draw new values
in the arrays - otherwise [tabread] will always output "0".;
#X text 39 34 INLETS:;
#X text 112 470 doc/2.control.examples/15.arrays.pd;
#X text 113 489 doc/2.control.examples/16.more.arrays.pd;
#X obj 21 10 tabread4;
#X text 111 10 - READ NUMBERS FROM A TABLE WITH 4-POINT INTERPOLATION
;
#X text 105 213 One - the argument informs [tabread4] which array to
read. The array must exist in an open Pd patch/canvas or an error message
will appear in the terminal window.;
#X text 104 265 One - outputs a floating point number representing
an interpolation of the array value corresponding to the location described
at the inlet.;
#X text 107 34 Float - A float at the left inlet will move to the corresponding
location in the table's array. The lowest valid number is "0" which
represents the first element of the array. The highest valid number
is a fraction below the actual length of the array. Each fractional
increment between the lower and upper bounds of the array will produce
an interpolation of the actual array values at the outlet.;
#X msg 248 364 set davids_array;
#N canvas 0 0 450 300 graph27 0;
#X array davids_array 10 float 1;
#A 0 0 0.749989 0 -0.849987 0 -0.349995 0.949986 0 -0.699989 -0.399994
;
#X coords 0 1 9 -1 100 40 1;
#X restore 526 380 graph;
#X text 249 444 interpolation;
#X obj 121 390 / 100;
#X obj 161 416 tabread4 davids_array;
#X text 158 561 - Dave Sabine \, May 2 \, 2003;
#X connect 8 0 25 0;
#X connect 9 0 26 0;
#X connect 22 0 26 0;
#X connect 25 0 26 0;
#X connect 26 0 7 0;

--- help-loadbang.pd DELETED ---

--- help-bendin.pd DELETED ---

--- help-timer.pd DELETED ---

--- help-dac~.pd DELETED ---

--- help-adc~.pd DELETED ---

--- help-random.pd DELETED ---

--- help-tabwrite.pd DELETED ---

--- help-spigot.pd DELETED ---

--- NEW FILE: loadbang-help.pd ---
#N canvas 2 1 603 598 12;
#X text 108 18 - SEND "bang" AUTOMATICALLY WHEN PATCH LOADS.;
#X obj 126 218 loadbang;
#X obj 126 385 loadbang;
#X obj 126 410 metro 1000;
#X obj 126 434 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 126 266 f 1;
#X obj 169 266 f 4;
#X obj 126 291 +;
#X floatatom 126 315 5 0 0 0 - - -;
#X obj 126 241 t b b;
#X obj 104 540 pddp;
#X obj 8 8 cnv 15 90 553 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 21 18 loadbang;
#X text 104 464 Pd Documentation Chapter 3.6 - doc/1.manual/x3.htm
;
#X text 104 53 The inlet is inactive and serves no purpose.;
#X text 104 81 This object does not accept arguments of any type.;
#X text 104 112 A "bang" message is sent automatically when the containing
patch is loaded.;
#X text 104 161 In this example \, [loadbang] was used to process a
simple mathematic equation when this patch was loaded. In this case:
1 + 4 = 5;
#X text 104 344 In this example \, [loadbang] was used simply to start
a process automatically when this patch was loaded.;
#X text 152 541 - Dave Sabine \, November 12 \, 2002;
#N canvas 85 2 579 656 More_Info 0;
#X obj 25 152 print foo;
#X obj 25 104 loadbang;
#X text 14 188 As well \, the following [float]s were set with a group
of numbers. Click the [bng] below to verify that the numbers were stored
in the [float] objects.;
#X obj 26 355 f;
#X floatatom 26 380 2 0 0 0 - - -;
#X obj 65 355 f;
#X floatatom 65 380 2 0 0 0 - - -;
#X obj 105 355 f;
#X floatatom 104 380 2 0 0 0 - - -;
#X obj 26 263 bng 15 250 50 0 empty empty Click_here_to_see_the_numbers_stored_in_the_float_objects.
0 -6 0 8 -262144 -1 -1;
#X obj 195 316 random 10;
#X obj 104 317 random 10;
#X text 14 415 IMPORTANT;
#X text 44 600 c:/pd/pd.exe -noloadbang;
#X text 14 10 The loadbang object will send a "bang" message when a
canvas/patch loads and is used most often to 'initialize' or set default
values in a patch. For example \, when you opened this patch \, the
message below was immediately printed in the terminal window.;
#X obj 104 283 loadbang;
#X obj 288 317 random 10;
#X text 14 438 Loadbangs are a useful tool to set initial values in
a patch - however \, there are times when it might be necessary to
debug a patch and "turn off" all the loadbang objects. This can be
accomplished by opening Pd with the -noloadbang flag.;
#X text 14 523 For example \, to suppress all loadbangs \, your command
line might look something like this: (more info about Pd's command
line can be found in Chapter 3.6 of the HTML documentation.;
#X msg 25 127 you have opened the [loadbang] help document;
#X connect 1 0 19 0;
#X connect 3 0 4 0;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 9 0 3 0;
#X connect 9 0 5 0;
#X connect 9 0 7 0;
#X connect 10 0 5 1;
#X connect 11 0 3 1;
#X connect 15 0 11 0;
#X connect 15 0 10 0;
#X connect 15 0 16 0;
#X connect 16 0 7 1;
#X connect 19 0 0 0;
#X restore 104 514 pd More_Info;
#N canvas 85 2 389 238 Related_Objects 0;
#X obj 44 49 bang;
#X obj 102 51 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 143 48 trigger;
#X text 25 8 Native Pd Objects;
#X text 25 92 Externals and other object libraries;
#X text 36 126 [init];
#X restore 104 488 pd Related_Objects;
#X text 38 53 INLETS:;
#X text 14 82 ARGUMENTS:;
#X text 29 112 OUTLETS:;
#X text 20 161 EXAMPLES:;
#X text 21 463 SEE ALSO:;
#X connect 1 0 9 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 5 0 7 0;
#X connect 6 0 7 1;
#X connect 7 0 8 0;
#X connect 9 0 5 0;
#X connect 9 1 6 0;

--- NEW FILE: delay-help.pd ---
#N canvas 9 3 918 652 10;
#X obj 22 14 delay;
#X msg 10 418 bang;
#X floatatom 75 486 0 0 0;
#X text 98 511 <-- creation argument initializes delay time;
#X obj 20 511 delay 1000;
#X text 56 440 Click here to CANCEL delay's action;
#X msg 20 440 stop;
#X msg 31 462 2000;
#X text 67 462 Number in right inlet sets time and schedules the action.
;
#X text 104 486 <-- scroll to change delay time in milliseconds;
#X text 60 14 - BANG AFTER TIME DELAY;
#X obj 20 90 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 20 110 delay 2000;
#X obj 20 133 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 12 42 The [delay] object sends a bang to its outlet after a
delay in milliseconds specified by its right inlet or its creation
argument.;
#X text 15 157 [delay]'s left inlet accepts a number \, or one of two
messages: "bang" or "stop".;
#X text 14 238 The "bang" method will inform [delay] to send a "bang"
to its outlet after the prescribed time (which is set either at its
right inlet \, or in the creation argument). In the above example \,
you should notice a delay of 2 seconds \, then a "bang" at the outlet.
;
#X text 13 314 [delay] accepts only ONE "bang" at a time. It cannot
process multiple delays. In other words \, sending a "bang" to a [delay]
which is already set will reschedule its output \, cancelling the old
one.;
#X text 15 379 The "stop" method will inform [delay] to cancel its
scheduled output.;
#X text 14 191 If a number is sent to its inlet \, [delay] will set
the delay time equal to that number and schedule the outgoing "bang".
;
#X obj 20 536 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 43 419 "bang" to schedule the action;
#X obj 414 9 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 414 613 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 445 15 A MAKESHIFT [METRO];
#X text 433 35 Let's assume for a moment that Miller had forgotten
to build the [metro] object. (I know that sounds absurd \, but for
the sake of example...);
#X text 433 84 [delay] could be used to create a metronome as follows.
;
#X obj 463 175 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 463 155 delay 1000;
#X msg 427 115 bang;
#X msg 463 115 stop;
#X obj 671 154 metro 1000;
#X obj 671 175 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 671 135 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X floatatom 726 135 5 0 0;
#X floatatom 518 137 5 0 0;
#X text 557 155 is the same as;
#X text 448 206 A RANDOM IMPULSE GENERATOR;
#X text 433 223 Some users might be familiar with SC (SuperCollider)
by James McCartney. For more info about SC \, visit www.audiosynth.com.
Anyways...SC has a unit generator called "DUST". Dust will produce
random impulses at a specified "density". I believe that Dust was given
its name because it creates a sound that is similar to actual dust
on old vinyl LP's -- you know that old crackling sound like Rice Krispies.
;
#X text 432 331 The idea is quite simple. If you want a "very dusty"
sound \, you make the density quite high...if you want a "slightly
dusty" sound \, you make the density quite low.;
#X obj 434 484 delay;
#X obj 434 506 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 434 423 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X text 432 376 Dust.ar(2) in SC will produce 2 dusty impulses randomly
per second. In the example below \, you'll see a version of this process
created using Pd's delay object.;
#X obj 434 463 random 500;
#X obj 434 442 metro 500;
#X text 13 563 It is important to realize that [delay] only outputs
a "bang". It cannot be used like an "echo" or to delay messages other
than "bang". For that purpose \, you should explore;
#X obj 63 605 pipe;
#X text 431 528 RELATED OBJECTS;
#X obj 466 548 timer;
#X obj 432 548 pipe;
#X obj 504 548 metro;
#N canvas 0 0 452 302 related_objects_from_other_libraries 0;
#X obj 27 25 nop~;
#X obj 63 25 z~;
#X obj 93 25 t3_delay;
#X obj 153 25 idelay~;
#X text 18 59 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 108 The best places to find information about Pd's libraries
is:;
#X text 14 130 www.puredata.org and click on "Downloads" then "Software"
;
#X text 16 160 iem.kug.ac.at/pdb/;
#X restore 432 569 pd related_objects_from_other_libraries;
#X obj 543 548 makenote;
#X obj 603 548 delwrite~;
#X text 445 594 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X floatatom 504 428 5 0 0;
#X text 546 421 low numbers will produce a very "dusty" output.;
#X text 546 433 high numbers will produce a slightly "dusty" output.
;
#X text 546 448 Also note that this example merely approximates the
output of SC's "Dust" object.;
#X connect 1 0 4 0;
#X connect 2 0 4 1;
#X connect 4 0 20 0;
#X connect 6 0 4 0;
#X connect 7 0 4 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 22 0 23 0;
#X connect 27 0 29 0;
#X connect 28 0 27 0;
#X connect 29 0 28 0;
#X connect 30 0 28 0;
#X connect 31 0 32 0;
#X connect 33 0 31 0;
#X connect 34 0 31 1;
#X connect 35 0 28 1;
#X connect 40 0 41 0;
#X connect 42 0 45 0;
#X connect 44 0 40 0;
#X connect 45 0 44 0;
#X connect 56 0 45 1;
#X connect 56 0 44 1;

Index: pddp_open.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/pddp_open.pd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** pddp_open.pd	27 Apr 2005 20:22:20 -0000	1.3
--- pddp_open.pd	28 Apr 2005 00:25:05 -0000	1.4
***************
*** 5,9 ****
  #X obj 86 137 symbol;
  #X obj 108 111 t a b;
! #X obj 0 0 bng 18 250 50 0 \$0- \$0- empty 0 -6 0 8 -44926 -1 -1;
  #X obj 0 61 symbol \$1;
  #X obj 58 40 symbol;
--- 5,9 ----
  #X obj 86 137 symbol;
  #X obj 108 111 t a b;
! #X obj 46 0 bng 18 250 50 0 \$0- \$0- empty 0 -6 0 8 -44926 -1 -1;
  #X obj 0 61 symbol \$1;
  #X obj 58 40 symbol;
***************
*** 15,19 ****
  #X text 20 287 This patch opens a patch either from the first argument
  or sent in as a message.;
! #X obj 19 0 cnv 16 45 18 empty empty open: 6 9 0 14 -233017 -1 0;
  #X text 279 176 GOP: 168x18;
  #X obj 137 166 getdir;
--- 15,19 ----
  #X text 20 287 This patch opens a patch either from the first argument
  or sent in as a message.;
! #X obj 0 0 cnv 16 45 18 empty empty open: 6 9 0 14 -233017 -1 0;
  #X text 279 176 GOP: 168x18;
  #X obj 137 166 getdir;

--- NEW FILE: unpack-help.pd ---
#N canvas 18 16 471 443 10;
#X floatatom 61 204 0 0 0;
#X floatatom 186 204 0 0 0;
#X floatatom 224 204 0 0 0;
#X floatatom 27 204 0 0 0;
#X obj 24 294 pack;
#X obj 41 11 unpack;
#X msg 27 126 1 2;
#X msg 65 126 3 4 shut;
#X msg 145 126 5 6 pick 7 8;
#X text 90 11 - split a message into atoms;
#X text 20 41 [unpack] takes lists of atoms and distributes them to
its outlets. The creation arguments are used to specify the types of
atoms expected in the incoming list and specify float (any number or
the symbol 'f') \, pointer (symbol 'p') or symbol (symbol 's').;
#X symbolatom 103 207 10 0 0;
#X obj 27 163 unpack 0 0 s f f;
#X text 23 268 RELATED OBJECTS;
#X obj 61 294 trigger;
#N canvas 0 0 452 302 related_objects_from_other_libraries 0;
#X obj 21 16 pack~;
#X obj 61 16 unpack~;
#X obj 113 16 tabdump;
#X obj 169 16 niagara;
#X obj 224 16 packel;
#X obj 21 42 repack;
#X obj 70 42 drip;
#X obj 107 42 sort;
#X text 18 86 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 135 The best places to find information about Pd's libraries
is:;
#X text 14 157 www.puredata.org and click on "Downloads" then "Software"
;
#X text 15 173 or;
#X text 16 187 iem.kug.ac.at/pdb/;
#X restore 24 333 pd related_objects_from_other_libraries;
#X text 27 363 This document was updated for Pd version 0.35 test 26
by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 6 0 12 0;
#X connect 7 0 12 0;
#X connect 8 0 12 0;
#X connect 12 0 3 0;
#X connect 12 1 0 0;
#X connect 12 2 11 0;
#X connect 12 3 1 0;
#X connect 12 4 2 0;

--- NEW FILE: cputime-help.pd ---
#N canvas 11 8 939 645 10;
#X msg 43 113 bang;
#X msg 18 91 bang;
#X floatatom 18 157 0 0 0;
#X text 90 159 Output is in milliseconds;
#X text 53 91 Click here to start or reset;
#X obj 52 545 time_measurements;
#X obj 52 441 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 17 572 0 0 0;
#X floatatom 108 585 0 0 0;
#X floatatom 175 573 0 0 0;
#X text 11 358 In the example below \, I've created an abstraction
which will force each of Pd's stop-watches \, [timer] [cputime] and
[realtime] to measure various processes and report the elapsed time.
Click on each [bng] to begin the process and wait for the results.
Notice the discrepancies in the results.;
#X text 15 587 Logical Time;
#X text 173 587 Real Time;
#X text 107 601 CPU Time;
#X obj 67 477 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 72 435 1 Measures elapsed time between two "bangs" from a [trigger]
object.;
#X text 87 469 2 Measures the amount of time Pd requires to turn on
DSP and start an oscillator.;
#X obj 445 484 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 445 17 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 472 36 WHY THE DISCREPANCIES BETWEEN CLOCKS?;
#X text 475 59 In a fantasy world \, computers could exist somehow
beyond the restrictions of time and digital computation could be performed
in ZERO time. However \, that is not the case. Instead \, every process
within Pd and within your operating system requires at least a few
nanoseconds of your CPU's time.;
#X obj 111 509 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 476 144 The [timer] object is like a clock that is not constrained
to the regular laws of physics and the universal space-time continuum.
It reports "time" measurements as only Pd can see them!;
#X text 477 203 The [cputime] object is like a clock that measures
how much time your CPU actually required to carry out your request.
Keep in mind however that your CPU is busy doing many things simoultaneously
\, so even though a process might take 5 minutes to complete \, your
CPU does not pay full attention to that process for the entire 5 minutes.
Instead \, it simply begins the process \, then refers back to that
process from time to time until the it is complete. In other cases
\, your CPU might require a full 5 minutes while Pd might report that
merely a few milliseconds have passed. This type of discrepancy depends
heavily on your computer's hardware and the type of processing it is
performing.;
#X text 478 368 The [realtime] object is as much like your own wrist
watch as Pd can possibly manage. It measures time according to your
operating system's internal clock.;
#N canvas 0 0 456 306 related_objects_from_other_libraries 0;
#X text 27 63 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 26 112 The best places to find information about Pd's libraries
is:;
#X text 23 134 www.puredata.org and click on "Downloads" then "Software"
;
#X text 25 149 or;
#X text 25 164 iem.kug.ac.at/pdb/;
#X obj 44 24 t3_timer;
#X text 469 589 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X restore 482 539 pd related_objects_from_other_libraries;
#X text 309 580 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X obj 602 508 metro;
#X text 481 485 RELATED OBJECTS;
#X obj 539 508 realtime;
#X text 132 501 3 Measures the amount of time Pd requires count to
three...please wait for approximately 3 seconds.;
#X obj 25 15 cputime;
#X text 80 14 -- measure CPU time;
#X text 13 44 The [cputime] object measures elapsed CPU time. CPU time
is the amount of time your computer's CPU requires to perform a task
-- that's a short definition.;
#X obj 18 135 cputime;
#X text 81 114 Click here to get elapsed CPU time. Click again...and
again...to see periodic measurements from the start or reset time.
Be patient.;
#X text 11 185 [cputime] works like essentially like a stop-watch.
Once it starts \, you can continue to "poll" [cputime] to view the
elapsed time.;
#X text 11 232 The odd aspect about comparing [cputime] to a stop-watch
is that a stop-watch can be stopped! [cputime] can only be started
or reset. It cannot be stopped.;
#X text 10 282 As stated above \, [cputime] measures "CPU" time. This
value may be slightly different than "logical" time or "real" time.
PD offers two objects which measure "logical" time and "real" time.
See the reference documents for those objects for more information.
;
#X obj 481 509 timer;
#X text 472 419 MORE INFORMATION;
#X text 477 438 More information about [cputime] can be found in the
Pure Documentation reference folder 7.stuff/load-meter.pd;
#X connect 0 0 34 1;
#X connect 1 0 34 0;
#X connect 5 0 7 0;
#X connect 5 1 8 0;
#X connect 5 2 9 0;
#X connect 6 0 5 0;
#X connect 14 0 5 1;
#X connect 18 0 17 0;
#X connect 21 0 5 2;
#X connect 34 0 2 0;

--- help-delay.pd DELETED ---

--- help-route.pd DELETED ---

--- help-bng.pd DELETED ---

--- NEW FILE: send-help.pd ---
#N canvas 1 2 640 638 12;
#X obj 117 554 pddp;
#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 37 44 INLETS:;
#X text 29 170 OUTLETS:;
#X text 14 115 ARGUMENTS:;
#X text 19 213 EXAMPLES:;
#X text 23 369 SEE ALSO:;
#N canvas 109 3 419 268 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 22 148 Externals and other object libraries;
#X obj 11 53 receive~;
#X obj 95 54 send~;
#X obj 220 54 throw~;
#X obj 285 54 catch~;
#X obj 21 103 tabreceive~;
#X obj 129 103 tabsend~;
#X obj 211 103 netsend;
#X obj 287 103 netreceive;
#X text 189 199 [dist];
#X text 191 221 [netdist];
#X text 309 177 [remote];
#X obj 350 54 value;
#X obj 150 53 receive;
#X text 28 175 [streamout~];
#X text 29 197 [sendlocal];
#X text 290 227 [system];
#X text 29 219 [shoutcast~];
#X text 287 200 [sendOSC];
#X text 188 177 [send13~];
#X restore 117 499 pd Related_Objects;
#N canvas 90 1 655 636 More_Info 0;
#X obj 44 576 pddp_open all_about_send_n_receive;
#X text 27 511 There is a lot of information available about [send]
and [receive] \, but that means there's lots to know! Open the abstraction
below to learn more...;
#X text 34 18 SEND USING [SEND] OR MESSAGE? DYNAMIC SEND?;
#X text 42 52 Consider this:;
#X floatatom 172 53 5 0 0 0 - - -;
#X floatatom 237 53 5 0 0 0 - - -;
#X obj 172 79 s dave;
#X obj 237 79 s hans;
#X obj 371 57 r dave;
#X obj 447 56 r hans;
#X floatatom 371 84 5 0 0 0 - - -;
#X floatatom 447 85 5 0 0 0 - - -;
#X text 41 136 Now consider this:;
#X floatatom 200 138 5 0 0 0 - - -;
#X floatatom 269 139 5 0 0 0 - - -;
#X msg 200 166 \; dave \$1;
#X msg 269 166 \; hans \$1;
#X text 43 278 And to complicate things a little more \, and offer
some interesting functionality \, consider the following:;
#X obj 371 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 447 107 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 64 322 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 188 321 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 64 346 symbol dave;
#X obj 188 345 symbol hans;
#X msg 67 394 \; \$1 42;
#X text 143 384 In this example \, I have created a single routine
which acts as a 'dynamic' send object. The variable ($1) in this message
box is replaced by the incoming 'symbol'.;
#X text 135 213 In this example \, the message box contains a Pd command
which effectively sends the value of the variable ($1) to either 'dave'
or 'hans'.;
#X connect 4 0 6 0;
#X connect 5 0 7 0;
#X connect 8 0 10 0;
#X connect 9 0 11 0;
#X connect 10 0 18 0;
#X connect 11 0 19 0;
#X connect 13 0 15 0;
#X connect 14 0 16 0;
#X connect 20 0 22 0;
#X connect 21 0 23 0;
#X connect 22 0 24 0;
#X connect 23 0 24 0;
#X restore 117 528 pd More_Info;
#X obj 116 250 s;
#X floatatom 116 226 5 0 0 0 - - -;
#X floatatom 218 255 5 0 0 0 - - -;
#X obj 218 226 r;
#X floatatom 273 255 5 0 0 0 - - -;
#X obj 273 226 r;
#X floatatom 324 255 5 0 0 0 - - -;
#X obj 324 226 r;
#X floatatom 120 309 5 0 0 0 - - -;
#X floatatom 375 335 5 0 0 0 - - -;
#X floatatom 446 335 5 0 0 0 - - -;
#X floatatom 521 335 5 0 0 0 - - -;
#X text 119 289 with creation argument;
#X obj 120 333 s dave;
#X obj 375 306 r dave;
#X obj 446 306 r dave;
#X floatatom 220 310 5 0 0 0 - - -;
#X text 104 45 None. Data can be inputted to the [receive] object using
the [send] object or by creating a Pd 'send' command in a message box.
The [receive] object accepts any atom type as input.;
#X obj 521 306 r hans;
#X obj 220 334 s hans;
#X text 114 386 doc/1.manual/x5.htm;
#X text 114 369 doc/1.manual/x2.htm;
#X text 114 403 doc/2.control.examples/09.send_receive.pd;
#X text 114 419 doc/2.control.examples/10.more.messages.pd;
#X text 115 435 doc/2.control.examples/11.review.pd;
#X text 115 452 doc/2.control.examples/13.locality.pd;
#X text 115 470 doc/5.reference/help-message.pd;
#X obj 56 18 send;
#X text 109 18 - SEND MESSAGES WITHOUT PATCH CORDS - abbreviation:
;
#X obj 551 18 s;
#X text 107 171 None - sends messages to a corresponding [receive]
of the same name.;
#X text 105 115 One - [send] accepts a single argument (text \, not
numbers) which is a 'name'. A [send] object corresponds to all [receive]
objects of the same name.;
#X text 161 555 - Dave Sabine \, September 12 \, 2003;
#X connect 10 0 9 0;
#X connect 12 0 11 0;
#X connect 14 0 13 0;
#X connect 16 0 15 0;
#X connect 17 0 22 0;
#X connect 23 0 18 0;
#X connect 24 0 19 0;
#X connect 25 0 28 0;
#X connect 27 0 20 0;

--- NEW FILE: value-help.pd ---
#N canvas 1 1 889 657 10;
#X text 62 10 -- nonlocal shared value (named variable);
#X obj 21 10 value;
#X text 17 46 [value] is a container. It holds a global variable numeric
value and can be "polled" at any time with a "bang" message. In other
words \, [value] is a place where numbers can be stored and then accessed
by all active Pd windows.;
#X text 16 109 SCOPE;
#X text 18 127 Understanding "scope" is important while developing
programmatic applications. In Pd there are three levels of "scope":
;
#X text 29 170 1 Local Scope: all objects \, subroutines \, data \,
and variables which exist within a single patch on a single computer
and do not communicate with other active Pd patches.;
#X text 27 226 2 Global Scope: all objects \, subroutines \, data and
variables which exist within single or multiple patches on a single
computer which communicate with other active Pd patches.;
#X text 17 354 As a general rule \, all things are considered "local"
in Pd and if communication between Pd windows is necessary \, then
[send]/[receive] \, or [throw]/[catch] objects are used. Likewise \,
if communication is necessary between many computers running Pd \,
then objects such as [netsend]/[netreceive] are used.;
#X text 16 441 The exception to the above rule is [value]. This object
is a container which makes its data known to all [value] objects of
the same name in all active Pd windows on a single computer: hence
\, GLOBAL scope.;
#X text 28 288 3 Network (Universal) Scope: all objects \, subroutines
\, data and variables which exist within single or multiple patches
on two or more computers which communicate with other active Pd patches
via a network.;
#X text 419 15 To create a [value] object \, a name should be defined
for the variable that it will contain. For example:;
#X obj 422 54 value my_variable;
#X text 419 110 To assign a numeric value to that variable \, a number
box or message can be used \, as follows:;
#X obj 420 190 value my_variable;
#X msg 438 167 42;
#X text 12 523 The [value] object can be abbreviated as follows:;
#X obj 19 550 v;
#X text 48 550 is the same as;
#X obj 142 552 value;
#X obj 384 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 384 583 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 417 77 If no name is given \, then the object will communicate
with all other [value] objects with no name.;
#X floatatom 420 214 5 0 0;
#X floatatom 420 147 5 0 0;
#X obj 417 304 value my_variable;
#X floatatom 417 328 5 0 0;
#X obj 417 284 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 464 146 play with me;
#X text 463 166 or click me;
#X text 416 237 Notice that the number is not outputted to the outlet
\; it is merely stored. To retreive the number \, send a "bang" \,
like below:;
#X text 414 354 Now \, to show how global scope works \, click the
sub-patch below and then "bang" the [value] object to retreive the
current number. While you're in the sub-patch \, change the number
and then return to this window and click the above "bang". You'll quickly
see how this variable can be retreived or reset in any active Pd window.
;
#N canvas 0 0 452 302 global_values 0;
#X obj 43 127 v my_variable;
#X floatatom 43 149 5 0 0;
#X obj 43 86 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 61 104 5 0 0;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X restore 415 442 pd global_values;
#X text 414 474;
#X text 409 490 RELATED OBJECTS;
#N canvas 73 229 452 302 related_objects_from_other_libraries 0;
#X obj 28 37 getenv;
#X text 18 86 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 135 The best places to find information about Pd's libraries
is:;
#X text 14 157 www.puredata.org and click on "Downloads" then "Software"
;
#X text 15 173 or;
#X text 16 187 iem.kug.ac.at/pdb/;
#X restore 413 551 pd related_objects_from_other_libraries;
#X obj 408 517 send;
#X obj 441 517 receive;
#X text 492 504 These objects are actually quite different than [value]
but it's important to understand that difference in relation to [value].
;
#X text 252 603 This document was updated for Pd version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 13 0 22 0;
#X connect 14 0 13 0;
#X connect 19 0 20 0;
#X connect 23 0 13 0;
#X connect 24 0 25 0;
#X connect 26 0 24 0;

--- NEW FILE: ctlout-help.pd ---
#N canvas 251 9 495 634 10;
#N canvas 240 135 476 472 other_midi_objects 0;
#X obj 55 31 ctlin;
#X obj 97 31 pgmin;
#X obj 140 30 bendin;
#X obj 191 29 touchin;
#X obj 252 29 polytouchin;
#X obj 337 29 midiin;
#X obj 388 28 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 161 85 touchout;
#X obj 225 84 polytouchout;
#X obj 314 84 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X obj 8 31 midiin;
#X restore 89 430 pd other_midi_objects;
#X obj 285 469 pddp_open all_about_midi_flags;
#X text 21 469 for an explanation of MIDI usage in Pd see:;
#X obj 18 16 ctlout;
#X text 14 43 The [ctlout] objects sends control messages to the MIDI
port. See a MIDI specification chart for various controller numbers/values
descriptions.;
#X text 15 89 Arguments (optional):;
#X text 24 105 1st (or only one) argument represents the controller
number to transmit to.;
#X text 24 137 2nd argument designates the channel number to transmit
on. If no channel is specified it transmits on channel 1;
#X floatatom 21 181 5 0 0;
#X obj 21 231 ctlout;
#X floatatom 39 197 5 0 0;
#X floatatom 57 213 5 0 0;
#X text 108 175 Inlets:;
#X text 107 240 Outlets: none. Transmits directly to the MIDI port.
;
#X text 120 192 Left: (int) control value (0-127).;
#X text 120 207 Middle: (int) controller number.;
#X text 120 223 Right: (int) channel number.;
#X text 21 264 NOTE: the left inlet accepts also a list of (2 or 3)
integers where the first item is controller value \, second controller
number and third the channel number.;
#X obj 24 356 ctlout;
#X obj 116 356 ctlout 64;
#X obj 218 356 ctlout 64 2;
#X obj 320 355 ctlout;
#X msg 43 337 64;
#X msg 73 337 2;
#X msg 317 320 67 64 2;
#X floatatom 218 318 5 0 0;
#X floatatom 116 316 5 0 0;
#X floatatom 24 316 5 0 0;
#X msg 173 333 2;
#X text 23 379 All these examples will transmit control no 64 on channel
2 (remember to click the message boxes to initialize).;
#X text 22 411 See also:;
#X obj 25 430 ctlin;
#X text 66 17 - send MIDI control messages to the MIDI port;
#X text 19 515 This document was updated for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 8 0 9 0;
#X connect 10 0 9 1;
#X connect 11 0 9 2;
#X connect 22 0 18 1;
#X connect 23 0 18 2;
#X connect 24 0 21 0;
#X connect 25 0 20 0;
#X connect 26 0 19 0;
#X connect 27 0 18 0;
#X connect 28 0 19 2;

--- NEW FILE: clip-help.pd ---
#N canvas 3 22 569 590 10;
#X obj 114 540 pddp;
#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 38 36 INLETS:;
#X text 38 51 - LEFT:;
#X text 32 230 - RIGHT:;
#X text 29 346 OUTLETS:;
#X text 13 281 ARGUMENTS:;
#X text 20 392 EXAMPLES:;
#X text 20 488 SEE ALSO:;
#N canvas 58 22 423 272 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 23 92 Externals and other object libraries;
#X obj 45 54 int;
#X obj 85 53 f;
#X obj 123 53 min;
#X obj 166 53 max;
#X obj 206 53 clip~;
#X obj 260 53 min~;
#X obj 308 53 max~;
#X text 44 125 - none that I am aware of;
#X restore 114 488 pd Related_Objects;
#N canvas 57 22 651 632 More_Info 0;
#X text 40 187 LOW AND HIGH VALUES;
#X text 304 34 Consider the following:;
#X floatatom 101 66 5 0 0 0 - - -;
#X floatatom 83 147 5 0 0 0 - - -;
#X obj 83 121 min 50;
#X obj 83 95 max -50;
#X text 170 106 same as;
#X obj 271 104 clip -50 50;
#X floatatom 271 133 5 0 0 0 - - -;
#X text 43 18 [clip] is a tool which combines the functionality of
[min] and [max] into a single object.;
#X text 56 208 [clip] always assumes that the first argument (second
inlet) is the low extreme of the range and the second argument (third
inlet) is the high extreme. However \, strange behaviour should be
expected if you mix these arguments up.;
#X obj 64 331 clip -50 50;
#X obj 190 325 clip 72 -104;
#X floatatom 64 298 5 0 0 0 - - -;
#X floatatom 64 360 5 0 0 0 - - -;
#X floatatom 190 357 5 0 0 0 - - -;
#X text 195 284 Numbers below 72 are clipped to 72;
#X text 195 304 Numbers above -104 are clipped to -104;
#X text 72 405 This could be used effectively to toggle between two
numbers.;
#X floatatom 401 383 5 0 0 0 - - -;
#X obj 370 360 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
#X obj 402 352 clip 1 -1024;
#X connect 2 0 5 0;
#X connect 2 0 7 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 7 0 8 0;
#X connect 11 0 14 0;
#X connect 12 0 15 0;
#X connect 13 0 11 0;
#X connect 13 0 12 0;
#X connect 20 0 21 0;
#X connect 21 0 19 0;
#X restore 114 514 pd More_Info;
#X obj 57 11 clip;
#X text 105 51 Float - A float at the left inlet will be clipped to
the low and high values stored in the object.;
#X text 105 82 List - A list at the left inlet will be truncated to
include only the first three elements. The first element in the list
is the number which will be clipped. The second element will update
the value stored at the second inlet. The third element will update
the value stored at the third inlet.;
#X text 25 180 - CENTER:;
#X text 105 180 Float - A float at the second inlet is stored for later
use. It will be used as either the low or high value at which to clip
incoming floats at that left inlet.;
#X text 105 231 Float - A float at the third inlet is stored for later
use. It will be used as either the low or high value at which to clip
incoming floats at that left inlet.;
#X text 104 281 Two - [float] accepts two floats as creation arguments
which initializes the first values to be stored in the object and duplicate
the functions of the second and third inlet.;
#X text 108 12 - FORCE A NUMBER INTO A RANGE;
#X obj 122 428 clip -50 50;
#X floatatom 122 455 5 0 0 0 - - -;
#X floatatom 122 404 5 0 0 0 - - -;
#X text 181 405 creation arguments;
#X obj 411 466 clip;
#X floatatom 410 437 5 0 0 0 - - -;
#X floatatom 460 437 5 0 0 0 - - -;
#X floatatom 510 437 5 0 0 0 - - -;
#X floatatom 411 492 5 0 0 0 - - -;
#X text 464 468 no arguments;
#X text 450 405 list;
#X text 158 541 - Dave Sabine \, April 25 \, 2003;
#X msg 373 405 42 100 500;
#X text 344 565 updated for Pd version 0.38-2;
#X text 102 346 One - outputs a float which is limited to a range within
the high and low values of the second and third inlet.;
#X connect 19 0 20 0;
#X connect 21 0 19 0;
#X connect 23 0 27 0;
#X connect 24 0 23 0;
#X connect 25 0 23 1;
#X connect 26 0 23 2;
#X connect 31 0 23 0;

--- NEW FILE: metro-help.pd ---
#N canvas 39 7 462 531 10;
#X obj 22 294 metro 500;
#X obj 37 13 metro;
#X floatatom 71 271 4 0 0;
#X msg 22 176 1;
#X text 67 185 nonzero number or "bang" to start;
#X msg 39 223 0;
#X msg 28 199 bang;
#X msg 39 245 stop;
#X text 111 270 right inlet sets the rate in msec per tick.;
#X text 76 13 -- send "bang" periodically ala metronome.;
#X text 19 89 [metro]'s left inlet accepts four different messages:
;
#X text 22 105 - "bang": starts the metro/turns it on.;
#X text 22 118 - "stop": stops the metro/turns it off.;
#X obj 22 317 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 21 45 The metro object sends a series of bangs at a constant
rate which is defined in milliseconds at the right inlet or in the
creation argument.;
#X text 22 131 - Non-Zero number: starts the metro/turns it on.;
#X text 22 143 - 0 (zero): stops the metro/turns it off.;
#X text 78 233 zero or "stop" to stop;
#X text 90 293 optional creation argument initializes rate in msec
;
#X text 19 348 RELATED OBJECTS;
#N canvas 0 0 454 304 related_objects_from_other_libraries 0;
#X obj 35 27 metroplus;
#X obj 102 27 t3_metro;
#X obj 164 27 pulse;
#X text 18 56 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 105 The best places to find information about Pd's libraries
is:;
#X text 14 127 www.puredata.org and click on "Downloads" then "Software"
;
#X text 15 143 or;
#X text 16 157 iem.kug.ac.at/pdb/;
#X obj 210 25 exciter;
#X restore 23 372 pd related_objects_from_other_libraries;
#X text 18 402 This document was updated for Pd version 0.35 test 28
by Dave Sabine as part of a project called pddp proposed to build comprehensive
documentation for Pd.;
#X connect 0 0 13 0;
#X connect 2 0 0 1;
#X connect 3 0 0 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 7 0 0 0;

--- NEW FILE: all_about_atom_conversion.pd ---
#N canvas 91 99 882 611 10;
#X obj 4 2 cnv 15 850 20 empty empty all_about_atom_conversion 20 10
1 18 -233017 -66577 0;
#X obj 821 3 pddp;
#X obj 47 364 list2int;
#X obj 111 363 l2i;
#X obj 113 389 a2l;
#X obj 46 390 any2list;
#X obj 46 340 lister;
#X obj 46 416 list2symbol;
#X obj 46 437 symbol2list;
#X obj 135 416 l2s;
#X obj 135 436 s2l;
#X obj 179 417 tosymbol;
#X obj 179 436 fromsymbol;
#X obj 548 410 glue;
#X obj 609 437 pack;
#X obj 608 411 list2symbol;
#X obj 718 410 tosymbol;
#X text 525 384 making "lists" from untyped inputs:;
#X obj 484 410 repack;
#X obj 47 318 list;
#X obj 46 293 any;
#X obj 75 293 pipe;
#X text 499 46 a set that is not a "list" has an undefined type:;
#X obj 528 138 bng 15 250 50 0 empty empty bang 0 20 1 9 -262144 -1
-1;
#X obj 574 138 bng 15 250 50 0 empty empty float 0 21 1 9 -262144 -1
-1;
#X obj 622 138 bng 15 250 50 0 empty empty symbol 0 21 1 9 -262144
-1 -1;
#X msg 526 73 list this is a set with a cast;
#X msg 533 92 this is a set withOUT a cast;
#X obj 527 117 route bang float symbol list;
#X obj 670 138 bng 15 250 50 0 empty empty list 0 21 1 9 -262144 -1
-1;
#X obj 718 138 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 10 63 list;
#X symbolatom 32 129 10 0 0 0 - - -;
#X text 7 39 SPECIAL CASES OF "LISTS".;
#X msg 17 83 list 25;
#X msg 24 103 list foo;
#X obj 10 171 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 57 170 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 105 169 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 153 170 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 201 169 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 10 148 route bang float symbol list;
#X text 87 104 A "list" of one "symbol" is converted to a "symbol"
;
#X text 72 83 A "list" of one "float" is converted to a "float";
#X text 50 63 An empty "list" is converted to a "bang";
#X obj 513 560 pddp_open all_about_data_types;
#X obj 513 517 pddp_open all_about_lists_vs_anythings;
#X connect 15 0 14 0;
#X connect 26 0 28 0;
#X connect 27 0 28 0;
#X connect 28 0 23 0;
#X connect 28 1 24 0;
#X connect 28 2 25 0;
#X connect 28 3 29 0;
#X connect 28 4 30 0;
#X connect 31 0 41 0;
#X connect 34 0 41 0;
#X connect 35 0 32 0;
#X connect 35 0 41 0;
#X connect 41 0 36 0;
#X connect 41 1 37 0;
#X connect 41 2 38 0;
#X connect 41 3 39 0;
#X connect 41 4 40 0;

--- help-tabread4.pd DELETED ---

--- NEW FILE: pipe-help.pd ---
#N canvas 1 2 924 627 10;
#X floatatom 435 307 0 0 0;
#X floatatom 432 68 0 0 0;
#X floatatom 432 176 0 0 0;
#X obj 432 94 t f f f;
#X obj 460 125 + 1;
#X obj 488 125 + 2;
#X floatatom 474 175 0 0 0;
#X floatatom 517 176 0 0 0;
#X obj 435 400 pipe 2000;
#X text 474 305 numbers to store and output later;
#X text 500 328 output all stored messages immediately;
#X msg 446 332 flush;
#X msg 463 378 clear;
#X text 511 378 forget all stored messages;
#X obj 436 538 delay;
#X obj 473 538 timer;
#X text 81 13 -- delay a message -- a message "delay line";
#X obj 49 13 pipe;
#X text 21 40 The Pipe object stores a sequence of messages and outputs
them after a specified delay time in milliseconds. You can change the
delay time as you wish. The outputs are sorted automatically.;
#X text 20 102 BASIC USAGE;
#X text 20 161 Like water running through a pipe \, it goes in one
end...runs the length of the pipe...then comes out the other end.;
#X floatatom 27 206 5 0 0;
#X obj 27 227 pipe 20;
#X floatatom 27 249 5 0 0;
#X text 21 116 The left inlet accepts numbers \, symbols \, pointers
\, messages \, and lists. The right inlet adjusts the delay time (the
length of the pipe).;
#X floatatom 93 210 5 0 0;
#X text 135 209 Adjust the length of the pipe.;
#X text 435 192 METHODS OF CONTROL;
#X text 19 270 Creation arguments can be used to define the data type
to be expected at the left inlet and to define the initial length of
delay.;
#X text 17 314 1 If only one creation argument is used \, it must be
a number and it defines the initial length of delay.;
#X obj 22 345 pipe 1000;
#X text 16 366 2 If a second or third creation argument is used \,
then they will define the data type to be expected at the inlet. Multiple
messages can be sent to [pipe] (similar to [pack] in this case) and
the delay time is the LAST creation argument and can be changed by
the last inlet.;
#X obj 19 468 pipe s 1000;
#X text 92 468 A pipe for symbols.;
#X obj 19 568 pipe f s 1000;
#X text 104 568 A pipe for one float \, and one symbol.;
#X msg 18 438 symbol cat;
#X msg 90 438 symbol dog;
#X symbolatom 19 489 10 0 0;
#X symbolatom 92 589 10 0 0;
#X floatatom 19 589 5 0 0;
#X msg 30 547 100 dog;
#X msg 20 526 42 cat;
#X text 72 523 messages can be sent as lists like this example.;
#X obj 432 151 pipe f f f 1000;
#X text 431 218 [pipe] accepts two very important methods.;
#X text 434 238 1 "flush": forces [pipe] to output all stored messages
immediately.;
#X text 434 267 2 "clear": forces [pipe] to forget all stored messages.
;
#X obj 435 421 print;
#X msg 456 353 bang;
#X text 492 353 output the most recently stored message;
#X text 434 286 3 "bang": repeat the most recently stored message again.
;
#X text 431 443 RESCHEDULING;
#X text 437 458 [pipe] schedules its output immediately after storing
the incoming messages. This means that the delay time can be changed
at runtime without effecting the messages that have already been scheduled
for output.;
#X text 430 11 Miller's original example shows how a list of floats
can be delayed by [pipe]. Note that the [trigger] object is used to
ensure that [pipe] receives the messages from right to left order.
;
#X text 432 518 RELATED OBJECTS;
#N canvas 0 0 454 304 related_objects_from_other_libraries 0;
#X obj 45 31 t3_delay;
#X text 26 77 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 25 126 The best places to find information about Pd's libraries
is:;
#X text 22 148 www.puredata.org and click on "Downloads" then "Software"
;
#X text 24 163 or;
#X text 24 178 iem.kug.ac.at/pdb/;
#X restore 437 561 pd related_objects_from_other_libraries;
#X text 439 579 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 0 0 8 0;
#X connect 1 0 3 0;
#X connect 3 0 44 0;
#X connect 3 1 4 0;
#X connect 3 2 5 0;
#X connect 4 0 44 1;
#X connect 5 0 44 2;
#X connect 8 0 48 0;
#X connect 11 0 8 0;
#X connect 12 0 8 0;
#X connect 21 0 22 0;
#X connect 22 0 23 0;
#X connect 25 0 22 1;
#X connect 32 0 38 0;
#X connect 34 0 40 0;
#X connect 34 1 39 0;
#X connect 36 0 32 0;
#X connect 37 0 32 0;
#X connect 41 0 34 0;
#X connect 42 0 34 0;
#X connect 44 0 2 0;
#X connect 44 1 6 0;
#X connect 44 2 7 0;
#X connect 49 0 8 0;

--- NEW FILE: symbol-help.pd ---
#N canvas 353 86 570 640 10;
#X text 31 576 This document was updated for Pd version 0.35 test 24
by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X obj 55 12 symbol;
#X obj 28 259 symbol;
#X msg 28 112 bang;
#X text 60 112 "Bang" will force the object to output its value.;
#X symbolatom 28 310 10 0 0 0 - - -;
#X obj 28 329 print;
#X text 22 41 The symbol object stores a symbol (which is set either
by its creation argument or by the right inlet) and then outputs that
symbol when it receives a "bang" message or a new symbol in its left
inlet.;
#X text 23 381 IMPORTANT NOTE;
#X obj 71 410 symbol;
#X symbolatom 63 449 10 0 0 0 - - -;
#X text 75 328 For this example \, I have used the symbol atom to display
the value that was stored in the symbol object and also printed the
value to the terminal window.;
#X text 74 253 The symbols are stored here. When banged \, the symbol
is outputted through the outlet. Note that a creation argument is optional.
;
#X msg 40 137 dog;
#X msg 48 155 cat;
#X msg 59 181 symbol horse;
#X msg 73 199 symbol wolf;
#X msg 82 217 symbol pig;
#X text 75 139 Sending a symbol to its left inlet will store AND output
the value.;
#X text 23 490 RELATED OBJECTS;
#X obj 26 513 int;
#X obj 58 513 float;
#X obj 102 513 f;
#X obj 134 513 select;
#X obj 188 513 makefilename;
#X text 153 179 Sending new symbols to its right inlet will store the
values. These values can later be sent via "bang" to its left inlet.
Note that these symbols are preceded by the word "symbol" to indicate
the appropriate data type.;
#N canvas 0 22 462 238 related_objects_from_other_libraries 0;
#X obj 160 28 makesymbol;
#X obj 118 28 index;
#X obj 16 27 ftos;
#X obj 52 27 unsymbol;
#X text 10 129 The best places to find information about Pd's libraries
is:;
#X text 13 159 www.puredata.org and click on "Downloads" then "Software"
;
#X text 14 172 or;
#X text 15 186 iem.kug.ac.at/pdb/;
#X obj 243 28 lister;
#X text 17 58 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library. These objects usually included in
the installers.;
#X restore 25 536 pd related_objects_from_other_libraries;
#X text 31 395 Symbol - the OBJECT:;
#X text 31 431 is very different than symbol - the ATOM:;
#X text 29 466 Careful not to get them confused.;
#X text 109 13 STORE A SYMBOL;
#X connect 2 0 5 0;
#X connect 3 0 2 0;
#X connect 5 0 6 0;
#X connect 13 0 2 0;
#X connect 14 0 2 0;
#X connect 15 0 2 1;
#X connect 16 0 2 1;
#X connect 17 0 2 1;

Index: all_about_acoustic_conversions.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/all_about_acoustic_conversions.pd,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** all_about_acoustic_conversions.pd	26 Apr 2005 05:34:40 -0000	1.1
--- all_about_acoustic_conversions.pd	28 Apr 2005 00:25:03 -0000	1.2
***************
*** 7,11 ****
  #N canvas 37 22 899 659 understanding_mtof 0;
  #X text 20 13 [mtof] will convert MIDI note numbers to Wave Freqeuency.
! This object exists in PD for the sake of convenience and speed of processing.
  ;
  #X obj 37 165 mtof;
--- 7,11 ----
  #N canvas 37 22 899 659 understanding_mtof 0;
  #X text 20 13 [mtof] will convert MIDI note numbers to Wave Freqeuency.
! This object exists in Pd for the sake of convenience and speed of processing.
  ;
  #X obj 37 165 mtof;
***************
*** 114,121 ****
  #X obj 477 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X text 496 123 The examples at the botton left are PD structures which
  emulate the source code of the [mtof] object. In one case \, I have
  used the [expr] object to perform the necessary calculation. In the
! other case \, I used PD's Arithmetic objects to perform the calculation.
  ;
  #X text 498 291 Secondly \, the incoming MIDI note number is translated
--- 114,121 ----
  #X obj 477 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
! #X text 496 123 The examples at the botton left are Pd structures which
  emulate the source code of the [mtof] object. In one case \, I have
  used the [expr] object to perform the necessary calculation. In the
! other case \, I used Pd's Arithmetic objects to perform the calculation.
  ;
  #X text 498 291 Secondly \, the incoming MIDI note number is translated
***************
*** 136,144 ****
  #X text 504 12 THE ALTERNATIVE EXPLAINED;
  #X text 499 33 The [mtof] object is really just a function defined
! in PD's source code - which is programmed in "C".;
  #X text 497 67 As such \, it operates very quickly. If a similar function
! were to be created using PD's arithmetic objects \, the process would
  be quite a bit slower. How much slower?;
! #X text 498 409 As well \, notice that RESULT C (the output from PD's
  basic arithmetic objects) is not as accurate as the other two methods:
  [mtof] and/or [expr]. This is because the message boxes and the [*]
--- 136,144 ----
  #X text 504 12 THE ALTERNATIVE EXPLAINED;
  #X text 499 33 The [mtof] object is really just a function defined
! in Pd's source code - which is programmed in "C".;
  #X text 497 67 As such \, it operates very quickly. If a similar function
! were to be created using Pd's arithmetic objects \, the process would
  be quite a bit slower. How much slower?;
! #X text 498 409 As well \, notice that RESULT C (the output from Pd's
  basic arithmetic objects) is not as accurate as the other two methods:
  [mtof] and/or [expr]. This is because the message boxes and the [*]
***************
*** 151,155 ****
  documentation for this object.;
  #X text 22 62 MIDI notes usually range between 0 and 127 from an incoming
! MIDI controller. However \, in PD negative numbers to -1500 and positive
  numbers to 1499 are also supported and decimal places can be used to
  achive microtonal pitches.;
--- 151,155 ----
  documentation for this object.;
  #X text 22 62 MIDI notes usually range between 0 and 127 from an incoming
! MIDI controller. However \, in Pd negative numbers to -1500 and positive
  numbers to 1499 are also supported and decimal places can be used to
  achive microtonal pitches.;
***************
*** 209,217 ****
  #X text 534 12 THE ALTERNATIVE EXPLAINED;
  #X text 527 67 As such \, it operates very quickly. If a similar function
! were to be created using PD's arithmetic objects \, the process would
  be quite a bit slower. How much slower?;
  #X text 12 68 CONVENIENT? YES!;
  #X text 22 14 [ftom] will convert Wave/Signal Frequency to MIDI note
! numbers. This object exists in PD for the sake of convenience and speed
  of processing.;
  #X text 78 85 Select a Frequency: (i.e. 440 hz is an "A" above middle
--- 209,217 ----
  #X text 534 12 THE ALTERNATIVE EXPLAINED;
  #X text 527 67 As such \, it operates very quickly. If a similar function
! were to be created using Pd's arithmetic objects \, the process would
  be quite a bit slower. How much slower?;
  #X text 12 68 CONVENIENT? YES!;
  #X text 22 14 [ftom] will convert Wave/Signal Frequency to MIDI note
! numbers. This object exists in Pd for the sake of convenience and speed
  of processing.;
  #X text 78 85 Select a Frequency: (i.e. 440 hz is an "A" above middle
***************
*** 223,231 ****
  #X obj 33 276 ftom;
  #X text 529 33 The [ftom] object is really just a function defined
! in PD's source code - which is programmed in "C".;
! #X text 526 123 The examples at the botton left are PD structures which
  emulate the source code of the [ftom] object. In one case \, I have
  used the [expr] object to perform the necessary calculation. In the
! other case \, I used PD's Arithmetic objects to perform the calculation.
  ;
  #X obj 64 256 moses 0;
--- 223,231 ----
  #X obj 33 276 ftom;
  #X text 529 33 The [ftom] object is really just a function defined
! in Pd's source code - which is programmed in "C".;
! #X text 526 123 The examples at the botton left are Pd structures which
  emulate the source code of the [ftom] object. In one case \, I have
  used the [expr] object to perform the necessary calculation. In the
! other case \, I used Pd's Arithmetic objects to perform the calculation.
  ;
  #X obj 64 256 moses 0;
***************
*** 250,254 ****
  ;
  #X text 156 556 [expr] is __?__ milliseconds slower than [mtof].;
! #X text 528 200 Firstly \, the PD source code "clips" overflows and
  underflows. This means simply that frequencies LESS THAN zero cannot
  be tranlated into a MIDI note value - so they're ignored completely
--- 250,254 ----
  ;
  #X text 156 556 [expr] is __?__ milliseconds slower than [mtof].;
! #X text 528 200 Firstly \, the Pd source code "clips" overflows and
  underflows. This means simply that frequencies LESS THAN zero cannot
  be tranlated into a MIDI note value - so they're ignored completely
***************
*** 261,265 ****
  how much faster the [ftom] object is compared to the two alternative
  methods.;
! #X text 528 409 As well \, notice that RESULT C (the output from PD's
  basic arithmetic objects) is not as accurate as the other two methods:
  [ftom] and/or [expr]. This is because the message boxes and the [*]
--- 261,265 ----
  how much faster the [ftom] object is compared to the two alternative
  methods.;
! #X text 528 409 As well \, notice that RESULT C (the output from Pd's
  basic arithmetic objects) is not as accurate as the other two methods:
  [ftom] and/or [expr]. This is because the message boxes and the [*]
***************
*** 329,338 ****
  It's also important to recognize that our ears perceive changes in
  amplitude (decibels) more than we perceive changes in RMS levels.;
! #X text 23 133 In the digital realm \, i.e. PD! \, RMS is better defined
  as "a measurement of a signal taken by squaring data points along the
  curve \, finding the mean \, and then determining the square root of
  that mean value.;
  #X restore 39 47 pd What_does_RMS_mean?;
! #X text 19 80 [dbtorms] in PD performs the following equation to convert
  the data: Note that incoming values less than 0 or greater than 485
  are considered overflow or underflow and are clipped/ignored.;
--- 329,338 ----
  It's also important to recognize that our ears perceive changes in
  amplitude (decibels) more than we perceive changes in RMS levels.;
! #X text 23 133 In the digital realm \, i.e. Pd! \, RMS is better defined
  as "a measurement of a signal taken by squaring data points along the
  curve \, finding the mean \, and then determining the square root of
  that mean value.;
  #X restore 39 47 pd What_does_RMS_mean?;
! #X text 19 80 [dbtorms] in Pd performs the following equation to convert
  the data: Note that incoming values less than 0 or greater than 485
  are considered overflow or underflow and are clipped/ignored.;
***************
*** 397,401 ****
  It's also important to recognize that our ears perceive changes in
  amplitude (decibels) more than we perceive changes in RMS levels.;
! #X text 23 133 In the digital realm \, i.e. PD! \, RMS is better defined
  as "a measurement of a signal taken by squaring data points along the
  curve \, finding the mean \, and then determining the square root of
--- 397,401 ----
  It's also important to recognize that our ears perceive changes in
  amplitude (decibels) more than we perceive changes in RMS levels.;
! #X text 23 133 In the digital realm \, i.e. Pd! \, RMS is better defined
  as "a measurement of a signal taken by squaring data points along the
  curve \, finding the mean \, and then determining the square root of
***************
*** 407,411 ****
  #X floatatom 151 354 0 0 0 0 - - -;
  #X msg 68 278 0;
! #X text 19 80 [rmstodb] in PD performs the following equation to convert
  the data: Note that incoming values less than 0 is consider underflow
  and is clipped/ignored.;
--- 407,411 ----
  #X floatatom 151 354 0 0 0 0 - - -;
  #X msg 68 278 0;
! #X text 19 80 [rmstodb] in Pd performs the following equation to convert
  the data: Note that incoming values less than 0 is consider underflow
  and is clipped/ignored.;
***************
*** 456,461 ****
  #N canvas 0 22 442 244 What_does_power_mean? 0;
  #X text 30 25 What does power mean? I really don't know? I can't determine
! from my own research or from PD's documentation why or how this data
! is used. All that I do know \, is that PD provides these objects for
  a good reason -- I just don't know the reason.;
  #X text 27 103 Having said that \, I would enjoy learning from somebody
--- 456,461 ----
  #N canvas 0 22 442 244 What_does_power_mean? 0;
  #X text 30 25 What does power mean? I really don't know? I can't determine
! from my own research or from Pd's documentation why or how this data
! is used. All that I do know \, is that Pd provides these objects for
  a good reason -- I just don't know the reason.;
  #X text 27 103 Having said that \, I would enjoy learning from somebody
***************
*** 464,468 ****
  ;
  #X restore 39 47 pd What_does_power_mean?;
! #X text 18 80 [dbtopow] in PD performs the following equation to convert
  the data: Note that incoming values less than 0 or greater than 870
  are considered overflow or underflow and are clipped/ignored.;
--- 464,468 ----
  ;
  #X restore 39 47 pd What_does_power_mean?;
! #X text 18 80 [dbtopow] in Pd performs the following equation to convert
  the data: Note that incoming values less than 0 or greater than 870
  are considered overflow or underflow and are clipped/ignored.;
***************
*** 503,508 ****
  #N canvas 0 22 442 244 What_does_power_mean? 0;
  #X text 30 25 What does power mean? I really don't know? I can't determine
! from my own research or from PD's documentation why or how this data
! is used. All that I do know \, is that PD provides these objects for
  a good reason -- I just don't know the reason.;
  #X text 27 103 Having said that \, I would enjoy learning from somebody
--- 503,508 ----
  #N canvas 0 22 442 244 What_does_power_mean? 0;
  #X text 30 25 What does power mean? I really don't know? I can't determine
! from my own research or from Pd's documentation why or how this data
! is used. All that I do know \, is that Pd provides these objects for
  a good reason -- I just don't know the reason.;
  #X text 27 103 Having said that \, I would enjoy learning from somebody
***************
*** 511,515 ****
  ;
  #X restore 39 47 pd What_does_power_mean?;
! #X text 17 81 [powtodb] in PD performs the following equation to convert
  the data: Note that incoming values less than 0 are considered underflow
  and are clipped/ignored.;
--- 511,515 ----
  ;
  #X restore 39 47 pd What_does_power_mean?;
! #X text 17 81 [powtodb] in Pd performs the following equation to convert
  the data: Note that incoming values less than 0 are considered underflow
  and are clipped/ignored.;
***************
*** 543,550 ****
  #X obj 205 40 m2f~;
  #X obj 249 41 tmtof;
! #X text 18 96 These objects are offered in PD only if you have downloaded
  and properly installed the appropriate library. These objects may or
  may not exist in a single library.;
! #X text 17 145 The best places to find information about PD's libraries
  is:;
  #X text 14 167 www.puredata.org and click on "Downloads" then "Software"
--- 543,550 ----
  #X obj 205 40 m2f~;
  #X obj 249 41 tmtof;
! #X text 18 96 These objects are offered in Pd only if you have downloaded
  and properly installed the appropriate library. These objects may or
  may not exist in a single library.;
! #X text 17 145 The best places to find information about Pd's libraries
  is:;
  #X text 14 167 www.puredata.org and click on "Downloads" then "Software"

--- help-value.pd DELETED ---

--- NEW FILE: random-help.pd ---
#N canvas 14 -1 978 651 10;
#X obj 20 11 random;
#X text 70 11 - pseudorandom integer generator;
#X text 20 47 [random] outputs pseudorandom integers between 0 and
N-1 where N is the creation argument or the value of the right inlet.
;
#X obj 28 117 random 100;
#X obj 28 98 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 28 138 3 0 0;
#X text 98 117 Generates random numbers between 0 and 99;
#X obj 28 178 random 100;
#X obj 28 159 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 28 199 3 0 0;
#X floatatom 83 161 5 0 0;
#X text 124 159 Changes the 'range' of random numbers.;
#X text 17 223 SEEDS;
#X text 21 240 Random numbers are generated via a complex equation
which produces a pseudo-predictable sequence of numbers. Each [random]
object's equation is provided with a "seed" which is really just one
of the variables in the equation which produces the sequence. The "seed"
is generated by Pd based on specific parameters in each patch which
contains a [random] object. If more than one [random] objects are contained
within a single patch \, they each get a different "seed".;
#X text 21 363 However \, "seeds" can be inputted into [random] by
sending a message \, like below:;
#X msg 13 420 seed 42;
#X obj 67 427 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 67 445 random 1000;
#X floatatom 67 465 3 0 0;
#X obj 13 400 loadbang;
#X text 22 490 Seeds are kept locally so that if two [random]s are
seeded the same \, they will have the same output - as demonstrated
below. Furthermore \, you can seed the same one twice to repeat the
output.;
#X msg 162 556 seed 42;
#X obj 76 559 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 76 591 random 1000;
#X floatatom 76 611 3 0 0;
#X obj 162 536 loadbang;
#X obj 150 591 random 1000;
#X floatatom 150 611 3 0 0;
#X obj 385 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 385 620 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 425 18 FERTILE SEEDS!;
#X text 416 39 While the "default" seed for each [random] is usually
very effective \, it may be necessary to find better - more unpredictable
- more indeterminate ways to seed the object to produce a more pleasing
result.;
#X text 415 144 Here are some ideas that may improve the implementation
of [random]:;
#X floatatom 593 241 0 0 0;
#X obj 435 182 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 593 221 / 100;
#X floatatom 435 238 0 0 0;
#X text 455 181 Both methods here produce random numbers between 0
and 5;
#X obj 593 201 random 501;
#X obj 435 218 random 6;
#X text 660 201 0 - 500;
#X text 631 221 divide by 100 to keep output within range.;
#X text 631 242 produces fractional results between 0 and 5;
#X text 432 269 between 0 and 5;
#X text 432 256 Produces whole numbers;
#X text 401 179 1;
#X text 405 306 2;
#X text 416 94 As well \, there are many ways that [random] can be
incorporated into other structures that change the qualities of the
results.;
#X obj 436 315 loadbang;
#X obj 436 337 timer;
#X obj 518 318 bng 15 250 50 0 empty empty Click_to_seed 0 -6 0 7 -262144
-1 -1;
#X msg 436 357 seed \$1;
#X obj 497 360 bng 15 250 50 0 empty empty Click_for_output 0 -6 0
7 -262144 -1 -1;
#X floatatom 497 400 5 0 0;
#X obj 497 379 random 42;
#X text 598 317 "Time is on your side". Using the [timer] object here
(which is started via loadbang) is an interesting trick.;
#X text 407 432 3;
#N canvas 0 0 462 404 weighted_random_numbers 0;
#X msg 38 77 bang;
#X text 24 20 You can generate weighted random numbers from uniformly
distributed ones. If you just want two possible outcomes with a varying
probability for each one \, you can do as shown:;
#X obj 38 103 random 100;
#X obj 37 156 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 104 156 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 140 130 3 0 100;
#X text 185 130 <-- change probablilty;
#X obj 38 131 moses 80;
#X text 87 75 <-- click to test;
#X text 35 184 This outputs a number at left 80% of the time \, otherwise
at right \, unless you override the "80" using the number box. You
may extend this to more than two possible outcomes \, for instance
like this:;
#X msg 42 247 bang;
#X obj 42 273 random 100;
#X obj 42 326 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 132 327 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 91 245 <-- click to test;
#X obj 42 301 moses 10;
#X obj 132 302 moses 30;
#X obj 200 327 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 40 342 10%;
#X text 130 343 20%;
#X text 202 342 70%;
#X connect 0 0 2 0;
#X connect 2 0 7 0;
#X connect 5 0 7 1;
#X connect 7 0 3 0;
#X connect 7 1 4 0;
#X connect 10 0 11 0;
#X connect 11 0 15 0;
#X connect 15 0 12 0;
#X connect 15 1 16 0;
#X connect 16 0 13 0;
#X connect 16 1 17 0;
#X restore 443 432 pd weighted_random_numbers;
#X text 215 556 Click again to repeat output.;
#X text 409 474 RELATED OBJECTS;
#N canvas 0 0 454 304 related_objects_from_other_libraries 0;
#X obj 25 23 randomF;
#X obj 77 23 tripleRand;
#X obj 146 23 shuffle;
#X obj 197 23 mtx_rand;
#X obj 149 47 pin~;
#X obj 25 47 randomblock~;
#X obj 109 47 utime;
#X text 29 104 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 28 153 The best places to find information about Pd's libraries
is:;
#X text 25 175 www.puredata.org and click on "Downloads" then "Software"
;
#X text 27 190 or;
#X text 27 205 iem.kug.ac.at/pdb/;
#X restore 408 494 pd related_objects_from_other_libraries;
#X text 416 592 This document was updated for Pd version 0.35 test
29 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 10 0 7 1;
#X connect 15 0 17 0;
#X connect 16 0 17 0;
#X connect 17 0 18 0;
#X connect 19 0 15 0;
#X connect 21 0 23 0;
#X connect 21 0 26 0;
#X connect 22 0 23 0;
#X connect 22 0 26 0;
#X connect 23 0 24 0;
#X connect 25 0 21 0;
#X connect 26 0 27 0;
#X connect 28 0 29 0;
#X connect 34 0 38 0;
#X connect 34 0 39 0;
#X connect 35 0 33 0;
#X connect 38 0 35 0;
#X connect 39 0 36 0;
#X connect 48 0 49 0;
#X connect 49 0 51 0;
#X connect 50 0 49 1;
#X connect 51 0 54 0;
#X connect 52 0 54 0;
#X connect 54 0 53 0;

--- help-pack.pd DELETED ---

--- help-cputime.pd DELETED ---

--- help-metro.pd DELETED ---

--- NEW FILE: adc~_dac~-help.pd ---
#N canvas 3 0 619 592 12;
#X obj 104 540 pddp;
#X obj 8 8 cnv 15 90 553 empty empty empty 20 12 0 14 -233017 -66577
0;
#N canvas 129 0 415 237 More_Info 0;
#N canvas 131 29 532 435 sample_rate 0;
#X text 12 24 SAMPLE RATE;
#X text 29 46 [adc~] and [dac~] always operate at the sample rate that
is specified in Pd's command line. By default \, the sample rate is
44100 hz. But Pd operates any sample rate supported by standard audio
hardware. Sample rates cannot be changed at run-time in Pd \, but must
be stated in the command line when Pd is instantiated. As well \, two
or more instances of Pd running simoultaneously can each be using different
sample rates! Having said that \, Pd can easily upsample or downsample
by using the [block~] object. Here are some example of the common sample
rates:;
#X text 85 232 c:/pd/bin/pd.exe -r 11025;
#X text 85 262 c:/pd/bin/pd.exe -r 22050;
#X text 86 329 c:/pd/bin/pd.exe -r 88200;
#X text 85 217 c:/pd/bin/pd.exe -r 8000;
#X text 85 247 c:/pd/bin/pd.exe -r 16000;
#X text 86 278 c:/pd/bin/pd.exe -r 32000;
#X text 86 294 c:/pd/bin/pd.exe -r 44100 CD Quality;
#X text 86 311 c:/pd/bin/pd.exe -r 48000 DAT Quality;
#X text 87 366 c:/pd/bin/pd.exe -r 192000 DVD-Audio Quality;
#X text 86 347 c:/pd/bin/pd.exe -r 96000 DVD-Video/Audio Quality;
#X restore 40 75 pd sample_rate;
#N canvas 131 31 564 558 multi-channel_audio 0;
#X text 16 13 MULTI-CHANNEL AUDIO;
#X text 32 40 All sound cards are capable of at least two channels
of audio. Pd supports these two channels by default and uses your system's
generic audio drivers to communicate with your hardware. However \,
for faster input/output and for more than two channels of audio \,
PD incorporates the use of "PortAudio" which uses ASIO drivers to communicate
with your hardware. So \, to instruct Pd to use more than two channels
of audio \, your command line should read like below:;
#X text 93 182 c:/pd/bin/pd.exe -pa -inchannels 8 -outchannels 8;
#X text 32 211 The "-pa" switch means "PortAudio". This switch is new
as of Pd version 0.37 TEST 4 and replaces the old "-asio" switch.;
#X text 32 271 The "-inchannels" and "-outchannels" switches can be
summarized by using "-channels 8" because currently PortAudio requires
that the number of incoming and outgoing channels must be equal. This
may change in the Pd's future...;
#X text 32 361 To further optimize Pd's usage of your audio hardware
\, you can explore the following:;
#X text 42 402 - audiobuf;
#X text 43 420 - blocksize;
#X text 42 436 - audioindev;
#X text 42 454 - audiooutdev;
#X text 38 480 With the right hardware \, Pd can manage audio input
and output with lower than 10 milliseconds of latency.;
#X restore 40 112 pd multi-channel_audio;
#N canvas 132 30 528 211 defeating_audio_computation 0;
#X text 21 15 -NODAC and -NOADC;
#X text 26 37 There may be cases when you do not want Pd to send or
receive audio signal with your soundcard. You can manually disable
the [dac~] and [adc~] objects separately using the "-nodac" and "-noadc"
switch \, or disable both using the "-nosound" switch.;
#X restore 41 152 pd defeating_audio_computation;
#X restore 104 514 pd More_Info;
#N canvas 85 2 399 248 Related_Objects 0;
#X text 25 8 Native Pd Objects;
#X text 25 118 Externals and other object libraries;
#X obj 57 35 bilge;
#X text 35 143 [shoutcast~];
#X text 35 166 [oggcast~];
#X obj 115 35 send~;
#X obj 169 35 receive~;
#X obj 58 66 throw~;
#X obj 121 66 catch~;
#X obj 185 66 block~;
#X obj 249 66 switch~;
#X restore 104 488 pd Related_Objects;
#X text 14 84 ARGUMENTS:;
#X text 22 219 EXAMPLES:;
#X text 21 463 SEE ALSO:;
#X obj 12 19 adc~;
#X obj 61 19 dac~;
#X text 108 18 - AUDIO INPUT/OUTPUT;
#X text 30 47 PURPOSE:;
#X text 104 47 [adc~] and [dac~] provide real-time audio input and
output for Pd \, respectively \, whether analog or digital.;
#X text 152 541 - Dave Sabine \, May 5 \, 2003;
#X text 104 83 Both of these objects accept arguments (numbers) which
indicate which audio channels are to be used by Pd. By default \, these
objects are stereo and communicate on audio channels 1 and 2 (left
and right respectively) but by using arguments \, other channel numbers
can be specified. These objects can communicate with hundreds of audio
channels \, but you are likely limited by your audio hardware to 2
\, 4 \, 6 \, 8 \, 12 \, 16 \, 32 \, 64 \, etc.;
#X obj 114 222 adc~;
#X text 162 222 incoming stereo signals;
#X obj 114 251 dac~;
#X text 162 252 outgoing stereo signals;
#X obj 114 280 adc~ 1 2 3 4 5 6 7 8;
#X text 290 281 eight incoming audio signals;
#X text 210 314 three outgoing signals on channels 1 \, 5 \, and 6
;
#X obj 115 314 dac~ 1 5 6;
#X text 107 345 The actual number of Pd inputs and outputs are set
on Pd's command line. You can open patches that want to use more channels
\, but channel numbers that out of range will be dropped by [dac~]
or appears as zero by [adc~].;
#X text 14 344 IMPORTANT:;
#X text 108 419 Also \, these objects do not operate unless Pd is instructed
to "Compute Audio".;
#X obj 104 464 help-adc~;
#X obj 190 464 help-dac~;

--- help-notein.pd DELETED ---

--- help-ctlin.pd DELETED ---

--- help-key.pd DELETED ---

--- help-change.pd DELETED ---

--- NEW FILE: line-help.pd ---
#N canvas 190 248 862 534 10;
#X obj 3 29 line;
#X text 38 29 -- ramp generator;
#X text 5 59 [line]'s left inlet defines the "target" value. The right
inlet defines the "time" value. The "target \, time" pair of numbers
inform [line] to produce a numeric "ramp" from its current value (whatever
that might be at any given moment) to the new value within the alloted
time which is defined at the right inlet.;
#X text 5 147 It is important to realize that [line] stores only the
current value...it does not remember the defined "time" (duration of
the ramp). Hence \, the following works:;
#X obj 10 262 line;
#X msg 44 238 1000;
#X msg 10 238 1000;
#X obj 10 195 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 10 215 t b b;
#X floatatom 10 284 5 0 0 0 - - -;
#X obj 151 270 line;
#X msg 151 246 1000;
#X obj 151 226 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 151 292 5 0 0 0 - - -;
#X text 5 309 If [line] receives a new target value without an accompanying
"time" \, it simply jumps to the new value...as in the example above
on the right. In the example above on the left \, you'll see that [line]
will create a numeric ramp from 0 to 1000 over 1000 milliseconds. You
should also note that if you click that [bng] again a second time \,
nothing happens. This is because [line] is already at 1000 \, so sending
it new instructions to ramp to 1000 is meaningless and has no effect.
;
#X text 5 435 Having said all of that \, let's just reiterate that
it's important to send a "time" value to [line] before sending it a
new "target" value...unless of course you WANT it to jump immediately
to the new target.;
#X text 430 41 [line] will accept a list of two numbers. The first
in the list will be assigned as the new target \, the second in the
list will be the new time (duration of the ramp) as below:;
#X obj 416 7 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 416 501 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 449 215 line;
#X msg 449 127 1000 1000;
#X floatatom 449 236 5 0 0 0 - - -;
#X text 515 126 ramp up.;
#X msg 458 150 0 1000;
#X text 505 150 ramp down.;
#X msg 470 194 stop;
#X text 430 86 [line] will also accept the "stop" message which effectively
halt the current ramp.;
#N canvas 51 105 536 509 continuous_ramps 0;
#X text 29 44 [line] does not schedule its incoming messages. What
this means is that if you send [line] a new target value mid-way through
a ramp \, a new ramp is immediatly created to the new target value
starting from the "current" value.;
#X text 27 105 In other words \, if [line] receives a message specifying
some new target and time before reaching the previous target \, it
takes off from its current value.;
#X obj 34 254 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X msg 64 212 stop;
#X msg 57 192 42;
#X obj 31 233 line;
#X msg 31 151 127 5000;
#X msg 49 172 0 5000;
#X text 18 23 CONTINUOUS RAMPS;
#X text 24 278 Due to this unique behavior \, a common construct found
in Pd patches includes the [pack] object as follows:;
#X obj 38 399 line;
#X floatatom 38 420 10 0 0 0 - - -;
#X floatatom 38 313 5 0 0 0 - - -;
#X obj 38 379 pack f 500;
#X msg 49 332 50;
#X msg 57 353 2000;
#X connect 3 0 5 0;
#X connect 4 0 5 0;
#X connect 5 0 2 0;
#X connect 6 0 5 0;
#X connect 7 0 5 0;
#X connect 10 0 11 0;
#X connect 12 0 13 0;
#X connect 13 0 10 0;
#X connect 14 0 13 0;
#X connect 15 0 13 0;
#X restore 443 290 pd continuous_ramps;
#X text 152 196 While this does NOT work unless;
#X text 150 206 you click "500" first.;
#X msg 185 246 500;
#X msg 466 173 42;
#X text 492 174 jumps to this value immediately.;
#X text 507 194 stops the current ramp.;
#X text 428 316 More information about [line] can be found in the Pure
Documentation folder doc/3.audio.examples.;
#X text 431 478 This document was updated for Pd version 0.35 test
28 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X text 423 354 RELATED OBJECTS;
#X obj 443 373 line~;
#N canvas 0 22 456 306 related_objects_from_other_libraries 0;
#X obj 23 21 tripleline;
#X obj 105 20 t3_line~;
#X obj 171 20 fade~;
#X obj 219 21 step;
#X text 17 54 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 16 103 The best places to find information about Pd's libraries
is:;
#X text 13 125 www.puredata.org and click on "Downloads" then "Software"
;
#X text 14 141 or;
#X text 15 155 iem.kug.ac.at/pdb/;
#X restore 444 397 pd related_objects_from_other_libraries;
#N canvas 0 22 462 536 grain_rate_and_creation_arguments 0;
#X text 20 18 GRAIN RATE;
#X text 32 38 The "grain rate" of [line] is the rate at which it will
output its values. The faster the grain is \, the smoother the ramp
will appear. While slower grain rates will produce a more disjunct
ramp. Of course this setting will alter the amount of CPU that the
[line] object will require. Higher rates require more computation.
;
#X text 33 144 This means simply that [line] will output a new value
between its current value and your new value once every 20 milliseconds.
;
#X text 33 125 The default grain rate is 20 milliseconds.;
#X text 30 192 [line]'s optional creation arguments can be used to
reset the grain rate. However \, the grain rate cannot be reset dynamically.
;
#X text 32 247 First creation argument is the initial value: the starting
point of the first ramp.;
#X text 31 286 The second creation argument sets the grain rate. Observe
the following two examples to see how the grain rate effects the output.
;
#X obj 44 417 line 0 5;
#X obj 47 450 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X msg 147 346 127;
#X msg 179 354 0;
#X obj 146 382 pack f 5000;
#X obj 214 450 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 0 1;
#X obj 211 417 line 0 500;
#X connect 7 0 8 0;
#X connect 9 0 11 0;
#X connect 10 0 11 0;
#X connect 11 0 7 0;
#X connect 11 0 13 0;
#X connect 13 0 12 0;
#X restore 443 263 pd grain_rate_and_creation_arguments;
#X obj 3 3 cnv 5 850 20 empty empty [line] 20 10 1 18 -233017
-66577 0;
#X obj 819 4 pddp;
#X connect 4 0 9 0;
#X connect 5 0 4 1;
#X connect 6 0 4 0;
#X connect 7 0 8 0;
#X connect 8 0 6 0;
#X connect 8 1 5 0;
#X connect 10 0 13 0;
#X connect 11 0 10 0;
#X connect 12 0 11 0;
#X connect 17 0 18 0;
#X connect 19 0 21 0;
#X connect 20 0 19 0;
#X connect 23 0 19 0;
#X connect 25 0 19 0;
#X connect 30 0 10 1;
#X connect 31 0 19 0;

--- NEW FILE: int-help.pd ---
#N canvas 9 19 907 630 10;
#X msg 33 230 bang;
#X floatatom 23 313 0 0 0;
#X floatatom 23 208 0 0 0;
#X floatatom 47 255 0 0 0;
#X text 71 230 You can force the object to output the stored number.
;
#X text 68 208 You can set and output the value simoultaneously.;
#X text 105 255 You can store the number \, without outputting it.
;
#X text 488 142 NOTE;
#X obj 450 8 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 450 547 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 284 568 This document was updated for Pd version 0.35 test
24 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X text 482 480 RELATED OBJECTS;
#X obj 529 507 symbol;
#X text 97 11 - STORE AN INTEGER;
#X obj 55 12 int;
#X text 19 41 The int object stores an integer (which is set either
by its creation argument or by the right inlet) and then outputs that
number when it receives a "bang" message or a new number in its left
inlet.;
#X text 18 98 This object acts exactly as its nearest cousin:;
#X obj 307 97 float;
#X text 495 159 All numbers in Pd are kept in 32-bit floating point
and can represent real numbers between -8 \, 388 \, 608 and 8 \, 388
\, 608 Hence \, the [int] object takes about as much CPU as the [float]
object \; but is useful when numbers need to be truncated and/or when
patches are being designed to be compatible with Pd and MAX/MSP.;
#X text 18 160 Tip: Press and hold SHIFT while click-n-dragging these
number boxes to see how the [int] object truncates the number - drops
decimal places.;
#X obj 23 287 int 6.5;
#X text 17 114 with only one exception: All decimal places are dropped!
All fractions will be truncated \; they will not be 'rounded off'.
;
#X obj 491 507 float;
#X obj 573 506 random;
#X text 487 10 WHAT IS AN INTEGER?;
#X text 493 29 Integers are "whole" numbers - numbers which do not
contain fractions. The following are examples of whole numbers:;
#X text 494 59 1;
#X text 494 74 -544;
#X text 494 103 10024;
#X text 493 88 420;
#N canvas 0 0 414 279 related_objects_from_other_libraries 0;
#X obj 22 19 list2int;
#X obj 77 19 i2l;
#X obj 104 19 probalizer;
#X text 20 56 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 19 105 The best places to find information about Pd's libraries
is:;
#X text 16 127 www.puredata.org and click on "Downloads" then "Software"
;
#X text 18 157 iem.kug.ac.at/pdb/;
#X restore 490 529 pd related_objects_from_other_libraries;
#X text 496 283 The [int] object can be used as a basis for building
simple counter mechanisms in Pd. In the example below \, the [int]
object's stored value is incremented by 1 with each "bang".;
#X text 87 281 The creation argument initializes the object and stores
the number until the value is reset. The creation argument is optional.
If no creation argument is provided \, the object defaults to zero.
;
#X msg 511 340 bang;
#X obj 511 369 int;
#X obj 539 369 + 1;
#X floatatom 511 395 5 0 0;
#X text 486 263 EXAMPLE: BUILDING A COUNTER;
#X connect 0 0 20 0;
#X connect 2 0 20 0;
#X connect 3 0 20 1;
#X connect 8 0 9 0;
#X connect 20 0 1 0;
#X connect 33 0 34 0;
#X connect 34 0 35 0;
#X connect 34 0 36 0;
#X connect 35 0 34 1;

--- help-unpack.pd DELETED ---

--- help-swap.pd DELETED ---

--- help-until.pd DELETED ---

--- NEW FILE: change-help.pd ---
#N canvas 33 5 471 644 10;
#X floatatom 23 489 0 0 0;
#X floatatom 23 400 0 0 0;
#X floatatom 61 416 0 0 0;
#X obj 66 15 change;
#X text 114 16 - ELIMINATE REDUNDANCY IN A NUMBER STEAM;
#X msg 61 438 set \$1;
#X text 106 438 set the value;
#X text 60 400 if different from current value \, output and set;
#X obj 23 510 print;
#X msg 16 81 1;
#X msg 44 81 1;
#X msg 73 81 1;
#X msg 106 80 0;
#X text 14 65 Click from left to right...;
#X obj 16 112 change;
#X obj 16 133 print;
#X text 51 133 Watch terminal window.;
#X text 12 42 The change object outputs its input only when it changes.
;
#X text 15 160 [change] will accept a float as a creation argument.
That creation argument will define the inital value.;
#X obj 19 225 change 6.5;
#X obj 19 248 print;
#X msg 19 196 6.5;
#X msg 49 196 5.5;
#X msg 191 285 bang;
#X text 20 318 It's important to note that when [change] receives a
number in its inlet \, that number is outputted (if its different than
the currently stored value) and then stored.;
#X obj 23 467 change;
#X text 19 365 The "set" method can be used to store a number in the
object without outputting that value.;
#X text 22 585 This document was updated for Pd version 0.35 test 26
by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X text 17 269 Sending a "bang" message to the inlet will force [change]
to output its current value.;
#X connect 0 0 8 0;
#X connect 1 0 25 0;
#X connect 2 0 5 0;
#X connect 5 0 25 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 14 0 15 0;
#X connect 19 0 20 0;
#X connect 21 0 19 0;
#X connect 22 0 19 0;
#X connect 23 0 19 0;
#X connect 25 0 0 0;

--- help-adc~_dac~.pd DELETED ---

Index: all_about_scope_and_locality.pd
===================================================================
RCS file: /cvsroot/pure-data/doc/pddp/all_about_scope_and_locality.pd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** all_about_scope_and_locality.pd	26 Apr 2005 05:34:40 -0000	1.3
--- all_about_scope_and_locality.pd	28 Apr 2005 00:25:04 -0000	1.4
***************
*** 50,54 ****
  patches named "foo" will 'hear' those messages. Also note that the
  term 'open patches' includes all sub-patches \, abstractions and patches
! that are currently open in PD - they don't have to be VISIBLE...they
  only have to be active.;
  #X connect 5 0 4 0;
--- 50,54 ----
  patches named "foo" will 'hear' those messages. Also note that the
  term 'open patches' includes all sub-patches \, abstractions and patches
! that are currently open in Pd - they don't have to be VISIBLE...they
  only have to be active.;
  #X connect 5 0 4 0;
***************
*** 85,91 ****
  #X text 13 267 In the examples above I have used a variable ($1) to
  name these [send] and [receive] objects. The value of this variable
! is assigned either by PD (randomly for each abstraction or patch) \,
  or by me with the use of arguments.;
! #X text 11 335 If you would like PD to assign the value of your local
  variable at random \, use \$0. This will ensure that your local variables
  will always be 'local' and won't ever correspond with variables in
--- 85,91 ----
  #X text 13 267 In the examples above I have used a variable ($1) to
  name these [send] and [receive] objects. The value of this variable
! is assigned either by Pd (randomly for each abstraction or patch) \,
  or by me with the use of arguments.;
! #X text 11 335 If you would like Pd to assign the value of your local
  variable at random \, use \$0. This will ensure that your local variables
  will always be 'local' and won't ever correspond with variables in
***************
*** 110,114 ****
  #X text 20 18 The word "Inherit" means to "receive a characteristic
  from one's parent".;
! #X text 19 59 In PD \, all abstracions and subpatches have 'parents'
  -- the parent is the main patch which created the instance of the abstraction
  or subpatch.;
--- 110,114 ----
  #X text 20 18 The word "Inherit" means to "receive a characteristic
  from one's parent".;
! #X text 19 59 In Pd \, all abstracions and subpatches have 'parents'
  -- the parent is the main patch which created the instance of the abstraction
  or subpatch.;
***************
*** 128,132 ****
  #X obj 146 327 symbol \$2;
  #X text 24 388 So \, if a [send] object is named "$1-foo" or "$2-foo"
! inside this abstraction \, PD identifies that [send] object as "and-foo"
  or "inheritance-foo".;
  #X obj 47 466 s and-foo;
--- 128,132 ----
  #X obj 146 327 symbol \$2;
  #X text 24 388 So \, if a [send] object is named "$1-foo" or "$2-foo"
! inside this abstraction \, Pd identifies that [send] object as "and-foo"
  or "inheritance-foo".;
  #X obj 47 466 s and-foo;
***************
*** 159,163 ****
  #X connect 19 0 17 0;
  #X restore 11 217 pd INHERITANCE;
! #X text 16 285 From section 2.6.5 of the PD manual \, Miller Puckette
  says:;
  #X text 39 316 "Note that the expansion of variables such as \$0 and
--- 159,163 ----
  #X connect 19 0 17 0;
  #X restore 11 217 pd INHERITANCE;
! #X text 16 285 From section 2.6.5 of the Pd manual \, Miller Puckette
  says:;
  #X text 39 316 "Note that the expansion of variables such as \$0 and

--- NEW FILE: dac~-help.pd ---
#N canvas 2 1 613 608 12;
#X obj 104 540 pddp;
#X obj 8 8 cnv 15 90 553 empty empty empty 20 12 0 14 -233017 -66577
0;
#N canvas 85 2 595 611 More_Info 0;
#X text 16 13 MULTI-CHANNEL AUDIO;
#X text 32 40 All sound cards are capable of at least two channels
of audio. Pd supports these two channels by default and uses your system's
generic audio drivers to communicate with your hardware. However \,
for faster input/output and for more than two channels of audio \,
PD incorporates the use of "PortAudio" which uses ASIO drivers to communicate
with your hardware. So \, to instruct Pd to use more than two channels
of audio \, your command line should read like below:;
#X text 93 182 c:/pd/bin/pd.exe -pa -inchannels 8 -outchannels 8;
#X text 32 211 The "-pa" switch means "PortAudio". This switch is new
as of Pd version 0.37 TEST 4 and replaces the old "-asio" switch.;
#X text 32 271 The "-inchannels" and "-outchannels" switches can be
summarized by using "-channels 8" because currently PortAudio requires
that the number of incoming and outgoing channels must be equal. This
may change in the Pd's future...;
#X text 32 361 To further optimize Pd's usage of your audio hardware
\, you can explore the following:;
#X text 42 402 - audiobuf;
#X text 43 420 - blocksize;
#X text 42 436 - audioindev;
#X text 42 454 - audiooutdev;
#X text 38 480 With the right hardware \, Pd can manage audio input
and output with lower than 10 milliseconds of latency.;
#X restore 104 514 pd More_Info;
#N canvas 85 2 397 246 Related_Objects 0;
#X text 25 8 Native Pd Objects;
#X text 25 92 Externals and other object libraries;
#X obj 98 46 switch~;
#X obj 171 46 block~;
#X obj 45 46 adc~;
#X restore 104 488 pd Related_Objects;
#X text 16 107 ARGUMENTS:;
#X text 23 344 EXAMPLES:;
#X text 20 487 SEE ALSO:;
#X text 30 53 PURPOSE:;
#X text 152 541 - Dave Sabine \, May 6 \, 2003;
#X text 153 346 default stereo signals: same as;
#X text 280 435 all channels on an 8-channel device;
#X obj 33 20 dac~;
#X text 108 18 - AUDIO OUTPUT: DIGITAL/ANALOG CONVERTER SIGNAL;
#X text 104 53 [dac~] is an acronym meaning "Digital/Analog Converter
Signal" and is Pd's interface to send audio information to the audio
channels of your soundcard(s).;
#X text 106 106 The object defaults to 2 outgoing audio channels (usually
a left and right stereo pair). Any number of arguments (integers) can
be used to define multiple output channels - each integer corresponds
to an output channel on your audio hardware.;
#X text 36 188 INLETS:;
#X text 108 188 Signal: the number of inlets correspond with the number
of arguments - each inlet represents an output channel on your audio
hardware which corresponds to the argument you provide. If no arguments
are provided \, then there are two inlets which represent audio channels
1 and 2 on your computer's sound card.;
#X text 107 290 The information at each inlet should be an audio signal
(i.e. the object operates at 'audio-rate') and therefore must be connected
to an audio outlet on a related object.;
#X obj 109 346 dac~;
#X obj 411 348 dac~ 1 2;
#X obj 109 373 dac~ 5;
#X text 167 374 a mono signal to channel 5;
#X obj 109 404 dac~ 1 3 8 6 11 15 19 22 23 24 36;
#X text 383 405 11 channels of output;
#X obj 109 434 dac~ 1 2 3 4 5 6 7 8;

--- help-print.pd DELETED ---

--- help-makefilename.pd DELETED ---

--- NEW FILE: tabwrite-help.pd ---
#N canvas 2 1 650 610 12;
#X obj 114 560 pddp;
#X obj 8 3 cnv 15 90 578 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 14 223 ARGUMENTS:;
#X text 20 303 EXAMPLES:;
#X text 22 471 SEE ALSO:;
#N canvas 58 0 407 256 Related_Objects 0;
#X text 25 11 Native Pd Objects;
#X text 16 166 Externals and other object libraries;
#X obj 16 41 tabread~;
#X obj 90 41 tabread4;
#X obj 240 41 tabwrite~;
#X obj 16 67 tabsend~;
#X obj 92 67 tabreceive~;
#X obj 192 67 tabplay~;
#X obj 269 67 table;
#X text 15 124 [array];
#X obj 16 94 soundfiler;
#X text 78 124 and fft objects.;
#X text 21 187 [tabdump];
#X obj 112 94 tabread4~;
#X text 20 207 [tabenv];
#X obj 203 94 getsize;
#X obj 274 94 setsize;
#X text 238 207 [arraysize];
#X text 238 186 [score];
#X text 114 186 [linear_path];
#X text 114 207 [plot];
#X obj 165 41 tabread;
#X restore 114 508 pd Related_Objects;
#N canvas 80 0 661 319 More_Info 0;
#X text 28 257 Also See:;
#X obj 107 257 pddp_open all_about_arrays;
#X text 26 21 In this help document \, the [tabwrite] object is set
to write values to one of the two arrays you see on your screen. The
[tabwrite] will just as easily write values to tables buried in the
[table] object. This terminology is somewhat confusing \, but the objects
"array" and "table" exist separately because they offer different speeds
of performance.;
#X text 25 150 For example \, the;
#X obj 163 150 tabread;
#X text 229 150 documentation shows similar;
#X text 24 169 functionality using [table] instead of array. In this
particular document \, I chose to sacrifice speed for the sake of visually
displaying the effectiveness of [tabwrite].;
#X restore 114 534 pd More_Info;
#X obj 32 10 tabread;
#X floatatom 303 407 0 0 99 1 index - -;
#X text 29 278 OUTLETS:;
#X text 107 303 Open the tables and use your mouse to draw new values
in the arrays - otherwise [tabread] will always output "0".;
#X text 39 34 INLETS:;
#X text 112 470 doc/2.control.examples/15.arrays.pd;
#X text 113 489 doc/2.control.examples/16.more.arrays.pd;
#X text 111 10 - WRITE NUMBERS TO A TABLE;
#X text 38 50 - LEFT:;
#X text 107 51 Float - A float at the left inlet will become the new
value of the chosen index (whichever index is currently selected at
the right inlet).;
#X text 105 101 List - The left inlet also accepts pairs of floats
(longer lists will be truncated). A number pair represents "value"
and "index" - corresponding to "left" and "right" inlets.;
#X text 105 151 Set - the "set <arrayname>" message allows you to write
to dynamic locations. You can change the table at any time using the
"set" message.;
#X text 158 561 - Dave Sabine \, April 29 \, 2003;
#X text 29 203 - RIGHT:;
#X text 104 203 Float - selects which index in which to write the new
value.;
#X text 105 223 One - the argument informs [tabwrite] which array to
write to. The array must exist in an open Pd patch/canvas or an error
message will appear in the terminal window.;
#X text 104 277 None.;
#X obj 161 437 tabwrite davids_array;
#X msg 220 375 set another_array;
#X msg 204 346 set davids_array;
#X floatatom 148 381 0 0 0 0 value - -;
#N canvas 0 0 450 300 graph12 0;
#X array davids_array 100 float 1;
#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.75 0 0 0 0 0
0 0 0;
#X coords 0 1 99 -1 100 70 1;
#X restore 528 343 graph;
#N canvas 0 0 450 300 graph12 0;
#X array another_array 100 float 1;
#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 -0.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0;
#X coords 0 1 99 -1 100 70 1;
#X restore 528 417 graph;
#X connect 8 0 24 1;
#X connect 25 0 24 0;
#X connect 26 0 24 0;
#X connect 27 0 24 0;

--- NEW FILE: bng-help.pd ---
#N canvas 60 138 517 433 10;
#X obj 1 1 cnv 8 100 60 empty empty bng 20 20 1 18 -262144 -1109 0
;
#X text 10 288 (c) musil at iem.kug.ac.at;
#X text 52 301 IEM KUG;
#X text 118 61 click properties to;
#X text 106 72 modify geometry \, colors \, etc.;
#X obj 64 257 print;
#N canvas 598 330 290 225 once 0;
#X msg 38 73 1;
#X obj 38 47 t b b;
#X obj 68 124 sel 0;
#X obj 68 103 f 0;
#X obj 38 24 inlet;
#X obj 68 154 outlet;
#X connect 0 0 3 1;
#X connect 1 0 0 0;
#X connect 1 1 3 0;
#X connect 2 0 5 0;
#X connect 3 0 2 0;
#X connect 4 0 1 0;
#X restore 64 234 pd once;
#X obj 36 258 bng 15 250 50 0 empty empty empty 8 -8 0 10 -262144 -1
-1;
#X obj 3 130 bng 15 250 50 0 empty empty empty 8 -8 0 10 -262144 -1
-1;
#X obj 36 173 bng 50 950 50 1 foo5_snd foo5_rcv big-bang 63 2 192 12
-262131 -260818 -143491;
#X msg 36 53 33;
#X msg 50 75 -3.14;
#X msg 73 117 11 22 33.33;
#X msg 63 95 open xxx;
#X msg 96 142 funny;
#X text 101 11 gui-bang:;
#X obj 202 135 s foo5_rcv;
#X obj 202 155 r foo5_snd;
#X obj 202 115 bng 15 250 50 0 empty empty empty 8 -8 0 10 -262144
-1 -1;
#X obj 202 175 bng 15 250 50 0 empty empty empty 8 -8 0 10 -262144
-1 -1;
#X msg 4 53 0;
#X text 125 205 UP- \, DOWN- \, LEFT- or RIGHT-key;
#X text 124 216 for moving selected gui-objects;
#N canvas 425 170 699 530 edit 0;
#X obj 39 197 f;
#X msg 17 176 bang;
#X floatatom 55 175 3 63 88;
#X floatatom 90 197 3 0 37;
#X obj 39 220 pack 0 0;
#X text 117 197 y-label;
#X text 83 175 x-label;
#X floatatom 259 143 3 8 75;
#X text 286 143 size;
#X obj 279 236 f;
#X msg 257 215 bang;
#X floatatom 295 214 3 -10 10;
#X floatatom 330 236 3 -10 10;
#X obj 279 259 pack 0 0;
#X obj 304 348 f;
#X msg 282 327 bang;
#X floatatom 320 326 3 20 90;
#X floatatom 355 348 3 150 200;
#X obj 304 371 pack 0 0;
#X text 323 214 x-delta;
#X text 357 236 y-delta;
#X text 348 326 x-position;
#X text 382 348 y-position;
#X obj 59 312 f;
#X msg 37 291 bang;
#X floatatom 75 290 3 0 2;
#X floatatom 110 312 3 4 36;
#X obj 59 335 pack 0 0;
#X text 103 290 font;
#X text 139 312 height;
#X msg 36 399 \; foo5_rcv label blabla;
#X msg 59 360 \; foo5_rcv label_font \$1 \$2;
#X msg 39 245 \; foo5_rcv label_pos \$1 \$2;
#X msg 47 135 \; foo5_rcv color \$1 \$2 \$3;
#X msg 259 172 \; foo5_rcv size \$1;
#X msg 279 284 \; foo5_rcv delta \$1 \$2;
#X msg 304 396 \; foo5_rcv pos \$1 \$2;
#X msg 483 133 \; foo5_rcv receive foo5a_rcv;
#X msg 482 171 \; foo5a_rcv receive foo5_rcv;
#X msg 483 50 \; foo5_rcv send foo5a_snd;
#X msg 483 88 \; foo5_rcv send foo5_snd;
#X text 526 349 no init;
#X msg 505 368 \; foo5_rcv init 0;
#X msg 512 435 \; foo5_rcv init 1;
#X obj 493 260 f;
#X msg 471 239 bang;
#X floatatom 509 238 4 10 100;
#X floatatom 544 261 5 100 3000;
#X obj 493 283 pack 0 0;
#X msg 493 308 \; foo5_rcv flashtime \$1 \$2;
#X text 548 237 interrupt-time;
#X text 585 262 hold-time;
#X msg 36 435 \; foo5_rcv label big-bang;
#X text 502 417 init bang on loadbang;
#X text 519 221 flash-time:;
#X obj 47 114 pack 0 0 0;
#X obj 47 86 f;
#X msg 24 38 bang;
#X floatatom 63 36 3 0 29;
#X floatatom 79 56 3 0 29;
#X floatatom 112 72 3 0 29;
#X text 91 36 background;
#X text 106 56 front-color;
#X text 140 73 label-color;
#X msg 285 35 back;
#X msg 285 55 front;
#X msg 285 75 label;
#X msg 247 35 bang;
#N canvas 15 207 606 448 RGB_____________ 0;
#X obj 97 56 inlet;
#X obj 262 53 inlet;
#X obj 339 55 inlet;
#X obj 405 56 inlet;
#X obj 97 270 bang;
#X msg 77 295 0;
#X msg 104 295 1;
#X obj 146 268 bang;
#X msg 132 295 0;
#X msg 160 295 1;
#X obj 196 269 bang;
#X msg 187 295 0;
#X msg 214 295 1;
#X obj 265 313 spigot;
#X obj 312 313 spigot;
#X obj 359 313 spigot;
#X obj 249 385 outlet;
#X text 93 33 select;
#X text 267 28 red;
#X text 337 30 green;
#X text 409 30 blue;
#X obj 405 102 t b f;
#X obj 339 160 +;
#X obj 339 185 t b f;
#X obj 339 216 +;
#X obj 296 385 outlet;
#X obj 343 385 outlet;
#X obj 28 180 loadbang;
#X obj 97 135 route back front label bang;
#X obj 343 362 f;
#X obj 296 361 f;
#X obj 249 361 f;
#X obj 262 79 * -65536;
#X obj 339 80 * -256;
#X obj 405 80 * -1;
#X obj 339 247 - 1;
#X obj 235 168 t b b b b;
#X connect 0 0 28 0;
#X connect 1 0 32 0;
#X connect 2 0 33 0;
#X connect 3 0 34 0;
#X connect 4 0 5 0;
#X connect 4 0 6 0;
#X connect 5 0 14 1;
#X connect 5 0 15 1;
#X connect 6 0 13 1;
#X connect 7 0 8 0;
#X connect 7 0 9 0;
#X connect 8 0 13 1;
#X connect 8 0 15 1;
#X connect 9 0 14 1;
#X connect 10 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 13 1;
#X connect 11 0 14 1;
#X connect 12 0 15 1;
#X connect 13 0 31 1;
#X connect 14 0 30 1;
#X connect 15 0 29 1;
#X connect 21 0 22 0;
#X connect 21 1 22 1;
#X connect 22 0 23 0;
#X connect 23 0 24 0;
#X connect 23 1 24 1;
#X connect 24 0 35 0;
#X connect 27 0 6 0;
#X connect 28 0 4 0;
#X connect 28 1 7 0;
#X connect 28 2 10 0;
#X connect 28 3 36 0;
#X connect 29 0 26 0;
#X connect 30 0 25 0;
#X connect 31 0 16 0;
#X connect 32 0 24 0;
#X connect 33 0 22 0;
#X connect 34 0 21 0;
#X connect 35 0 15 0;
#X connect 35 0 14 0;
#X connect 35 0 13 0;
#X connect 36 0 31 0;
#X connect 36 1 30 0;
#X connect 36 2 29 0;
#X connect 36 3 35 0;
#X restore 285 96 pd RGB_____________;
#X floatatom 327 65 3 0 255;
#X floatatom 370 65 3 0 255;
#X floatatom 413 66 3 0 255;
#X text 34 10 preset-colors;
#X text 296 7 RGB-colors;
#X text 327 47 red;
#X text 363 46 green;
#X text 411 46 blue;
#X connect 0 0 4 0;
#X connect 1 0 0 0;
#X connect 2 0 0 1;
#X connect 3 0 4 1;
#X connect 4 0 32 0;
#X connect 7 0 34 0;
#X connect 9 0 13 0;
#X connect 10 0 9 0;
#X connect 11 0 9 1;
#X connect 12 0 13 1;
#X connect 13 0 35 0;
#X connect 14 0 18 0;
#X connect 15 0 14 0;
#X connect 16 0 14 1;
#X connect 17 0 18 1;
#X connect 18 0 36 0;
#X connect 23 0 27 0;
#X connect 24 0 23 0;
#X connect 25 0 23 1;
#X connect 26 0 27 1;
#X connect 27 0 31 0;
#X connect 44 0 48 0;
#X connect 45 0 44 0;
#X connect 46 0 44 1;
#X connect 47 0 48 1;
#X connect 48 0 49 0;
#X connect 55 0 33 0;
#X connect 56 0 55 0;
#X connect 57 0 56 0;
#X connect 58 0 56 1;
#X connect 59 0 55 1;
#X connect 60 0 55 2;
#X connect 64 0 68 0;
#X connect 65 0 68 0;
#X connect 66 0 68 0;
#X connect 67 0 68 0;
#X connect 68 0 55 0;
#X connect 68 1 55 1;
#X connect 68 2 55 2;
#X connect 69 0 68 1;
#X connect 70 0 68 2;
#X connect 71 0 68 3;
#X restore 297 144 pd edit;
#X obj 248 34 bng 15 250 50 0 aaa aaa empty 20 8 192 8 -262144 -1 -1
;
#X text 27 313 graz \, austria 2002;
#X obj 180 11 x_all_guis aaa bbb ccc ddd eee fff ggg hhh iii;
#X text 366 35 SEE ALSO:;
#X obj 429 34 bang;
#X text 22 341 This document was updated for Pd version 0.35 test 24
by Dave Sabine as part of a project called pddp proposed to build comprehensive
documentation for Pd.;
#X connect 6 0 5 0;
#X connect 8 0 9 0;
#X connect 9 0 7 0;
#X connect 9 0 5 0;
#X connect 10 0 9 0;
#X connect 11 0 9 0;
#X connect 12 0 9 0;
#X connect 13 0 9 0;
#X connect 14 0 9 0;
#X connect 17 0 19 0;
#X connect 18 0 16 0;
#X connect 20 0 9 0;

--- NEW FILE: moses-help.pd ---
#N canvas 10 0 452 619 10;
#X obj 29 141 moses 10;
#X floatatom 29 121 4 0 0;
#X floatatom 83 120 4 0 0;
#X floatatom 29 166 4 0 0;
#X floatatom 83 166 4 0 0;
#X obj 30 15 moses;
#X text 71 15 - part a stream of numbers;
#X text 19 44 Moses takes numbers and outputs them at left if they're
less than a control value \, and at right if they're greater or equal
to it. The creation argument initializes the control value (10 in this
example) and the right inlet changes it.;
#X obj 27 301 moses 0;
#X floatatom 27 325 5 0 0;
#X floatatom 70 325 5 0 0;
#X floatatom 27 279 5 0 0;
#X text 17 189 One way to think of [moses] is as a filter. For the
following example \, imagine that [moses] works as a low pass and high
pass filter simoultaneously -- for non-audio signals. Below you will
see that negative numbers will pass through the left outlet while positive
numbers will pass through the right outlet.;
#X text 17 348 Before the days of [moses] \, the same effect would
require a completely different structure \, as in the example below:
;
#X floatatom 25 384 5 0 0;
#X floatatom 25 433 5 0 0;
#X obj 25 408 min -1;
#X obj 74 409 max 0;
#X floatatom 74 433 5 0 0;
#X text 73 383 An ol'fashioned way of achieving a similar result.;
#X text 16 474 RELATED OBJECTS;
#N canvas 0 0 454 304 related_objects_from_other_libraries 0;
#X obj 34 29 split;
#X text 18 86 These objects are offered in Pd only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 17 135 The best places to find information about Pd's libraries
is:;
#X text 14 157 www.puredata.org and click on "Downloads" then "Software"
;
#X text 15 173 or;
#X text 16 187 iem.kug.ac.at/pdb/;
#X restore 22 494 pd related_objects_from_other_libraries;
#X text 18 530 This document was updated for Pd version 0.35 test 26
by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 0 0 3 0;
#X connect 0 1 4 0;
#X connect 1 0 0 0;
#X connect 2 0 0 1;
#X connect 8 0 9 0;
#X connect 8 1 10 0;
#X connect 11 0 8 0;
#X connect 14 0 16 0;
#X connect 14 0 17 0;
#X connect 16 0 15 0;
#X connect 17 0 18 0;

--- help-int.pd DELETED ---

--- NEW FILE: print-help.pd ---
#N canvas 11 11 777 611 10;
#X msg 93 173 walk the dog;
#X msg 19 173 bang;
#X msg 60 173 234;
#X obj 21 10 print;
#X obj 19 208 print;
#X text 20 44 The print object is used in Pd to send messages to the
'terminal window'. When the print object receives a message \, its
output will appear in the terminal window following the name of the
print object and a colon (:). If the print object does not have a name
(which you can supply as an argument within the print object itself)
then the word "print" appears followed by a colon (:) and your message.
;
#X msg 92 240 walk the dog;
#X msg 19 240 bang;
#X msg 59 240 234;
#X obj 19 267 print myPrintObject;
#X text 181 268 A print object with a name.;
#X text 17 309 When the print object receives a list \, it will output
the entire list as a single message. Like below:;
#X obj 17 369 print print_this_list;
#X msg 17 346 10 20 30 foo;
#X msg 17 461 10 20 30 foo;
#X obj 17 514 unpack f f f s;
#X obj 17 547 print unpack_this_list;
#X text 66 201 A print object without a name. Be sure you can see the
terminal window as you click on these messages.;
#X text 74 9 -- print messages to the terminal window;
#X obj 411 43 print~;
#X text 410 22 RELATED OBJECTS;
#X text 17 408 To output the list as separate elements \, the list
needs to be unpacked first. Note that [unpack]'s outlets are triggered
from right to left. Like below:;
#X text 28 481 The arguments here are used to tell Pd what type of
atom to expect: (f = float \, s = symbol).;
#X text 402 524 This document was updated for Pd version 0.35 test
24 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for Pd.;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 4 0;
#X connect 6 0 9 0;
#X connect 7 0 9 0;
#X connect 8 0 9 0;
#X connect 13 0 12 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 15 1 16 0;
#X connect 15 2 16 0;
#X connect 15 3 16 0;

--- NEW FILE: ctlin-help.pd ---
#N canvas 261 0 448 656 10;
#N canvas 240 135 476 472 other_midi_objects 0;
#X obj 55 31 ctlin;
#X obj 97 31 pgmin;
#X obj 140 30 bendin;
#X obj 191 29 touchin;
#X obj 252 29 polytouchin;
#X obj 337 29 midiin;
#X obj 388 28 sysexin;
#X obj 6 85 noteout;
#X obj 63 84 ctlout;
#X obj 161 85 touchout;
#X obj 225 84 polytouchout;
#X obj 314 84 midiout;
#X obj 113 84 pgmout;
#X obj 11 153 makenote;
#X text 10 194 MIDI notes deconstruction:;
#X text 8 128 MIDI note construction:;
#X text 8 58 MIDI output:;
#X text 8 2 MIDI input:;
#X obj 15 226 stripnote;
#X text 11 266 Additional useful objects for MIDI processing (Maxlib
by Olaf Matthes);
#X obj 148 297 chord;
#X obj 109 296 borax;
#X obj 54 296 score o;
#X obj 13 296 pitch;
#X text 15 336 Also \, from cyclone (alpha) by Krzysztof Czaja:;
#X obj 16 359 midiformat;
#X obj 172 359 midiflush;
#X obj 98 359 midiparse;
#X text 15 386 and xeq \, from the same developer;
#X obj 16 411 xeq;
#X text 41 402 an experimental MIDI sequencer;
#X obj 8 31 midiin;
#X restore 88 534 pd other_midi_objects;
#X obj 280 562 pddp_open all_about_midi_flags;
#X text 18 562 for an explanation of MIDI usage in Pd see:;
#X obj 28 18 ctlin;
#X obj 19 226 ctlin;
#X floatatom 19 252 5 0 0;
#X floatatom 33 272 5 0 0;
#X floatatom 49 290 5 0 0;
#X text 17 127 Arguments (optional): 1st argument (or only argument)
indicates the controller number to process. The second argument \,
if present \, indicates the channel number on which the controller
is to be processed. If the second argument is absent [ctlin] reads
all channels. If no arguments are preent [ctlin] reads all controller
data on all channels.;
#X text 66 221 Inlets: none. Reads data directly from the MIDI port
;
#X text 66 235 Outlets:;
#X text 116 249 1st (leftmost): Controller value;
#X text 118 265 Middle: controller number;
#X text 118 285 rightmost: Channel number;
#X text 17 317 If one comment is given (ctl. number) [ctlin] provides
the user with only 2 outlets: ctl. value and channel no. If 2 arguments
are given (ctl. no. & chan. no.) only one outlet (ctl. value) is given:
;
#X obj 24 383 ctlin 64;
#X floatatom 24 417 5 0 0;
#X floatatom 74 407 5 0 0;
#X text 97 382 Process only controller no. 64 on all channels;
#X text 7 430 ctl. value;
#X text 83 420 Chan. no.;
#X obj 25 455 ctlin 64 1;
#X text 102 456 Process only controller 64 on channel 1;
#X floatatom 25 481 5 0 0;
#X text 22 496 ctl. value;
#X obj 21 534 ctlout;
#X text 18 515 See also:;
#X text 13 51 The [ctlin] object reads control change messages directly
from the MIDI port. See a MIDI-specification chart near you for control
change message numbers and their meannings (MIDI implementation documents
are freely available on the internet in c=various forms).;
#X text 69 18 - read incoming Control Change messages;
#X text 19 586 This document was updated for Pd version 0.35 by Michal
Seta as part of a project called pddp proposed by Krzysztof Czaja \,
managed and edited by Dave Sabine \, to build comprehensive documentation
for Pd.;
#X connect 4 0 5 0;
#X connect 4 1 6 0;
#X connect 4 2 7 0;
#X connect 15 0 16 0;
#X connect 15 1 17 0;
#X connect 21 0 23 0;





More information about the Pd-cvs mailing list