Update of /cvsroot/pure-data/doc/pddp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9440
Modified Files: TODO all_about_data_types.pd all_about_haptics.pd all_about_hid.pd all_about_scope_and_locality.pd help-key.pd help-makefilename.pd help-receive.pd help-send.pd help-tabread.pd help-tabread4.pd help-tabwrite.pd help-trigger.pd pddp.pd table_of_contents.pd Added Files: all_about_acoustic_conversions.pd all_about_midi_flags.pd pddp_open.pd Removed Files: help-acoustics.pd midi-basics.pd Log Message: made an object, [pddp_open] which opens a giving patch on the fly. This way, it is no longer necessary to instantiate an object in a help patch in order for it to be linked. For example, the [hid] help patch doesn't need an instance of [all_about_hid]. [all_about_hid] is opened upon request via [pddp_open]. This eliminates bugs and makes the help system load fast, since its loading much less.
--- help-acoustics.pd DELETED ---
--- NEW FILE: all_about_midi_flags.pd --- #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; #X text 17 264 This will use the first port for both MIDI input and output.; #X text 17 346 There is also a little bit of confusion about OSS midi (which uses the raw midi - /dev/midi* - devices by default) and ALSA (which is becoming very popular). ALSA uses /dev/snd/midiC*D* as their raw midi devices. The C* (* = some number) is the device number while D* (* = some number) is the port number. Normally the ALSA driver links its raw devices to the corresponding /dev/midi* automatically (i.e.: /dev/snd/midiC0d0 -> /dev/midi00 , /dev/snd/midiC0D1 -> /dev/midi01 etc).; #X text 13 119 so , the above will use the first MIDI device for MIDI 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; #X text 39 564 -midioutdev 1 , 2 -- use devices 1 and 2 for output ; #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 available MIDI and audio devices.; #X text 19 627 A couple more useful command line options (related to MIDI):; #X text 21 643 -nomidiin -- do not listen to any midi input; #X text 21 655 -nomidiout -- do not send any midi output; #X text 21 667 -nomidi -- do not use any MIDI; #X obj 4 4 cnv 15 500 20 empty empty all_about_midi_flags 20 10 1 18 -233017 -66577 0; #X obj 471 5 pddp;
Index: help-tabread.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-tabread.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** help-tabread.pd 22 Aug 2003 00:20:54 -0000 1.1 --- help-tabread.pd 26 Apr 2005 05:34:40 -0000 1.2 *************** *** 44,48 **** and doc/5.reference/table.pd; #X text 44 487 Also See:; ! #X obj 123 487 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 --- 44,48 ---- 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
Index: pddp.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/pddp.pd,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** pddp.pd 9 Oct 2004 05:00:16 -0000 1.4 --- pddp.pd 26 Apr 2005 05:34:40 -0000 1.5 *************** *** 1,19 **** ! #N canvas 314 54 472 608 10; ! #X text 25 77 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 199 - Michal Seta; ! #X text 45 172 - Miller Puckette; ! #X text 45 185 - Dave Sabine; ! #X text 25 126 The project is now managed un-officially by Dave Sabine who acts as primary author and editor. The people involved in this project include (alphabetically):; ! #X text 14 342 THINGS TO NOTE:; ! #X text 25 360 Authors: If you would like to participate in this project , simply gather together information about objects , tutorials , examples , etc. and contact Dave Sabine for info about formatting your documents. All documents should then be forwarded to Dave to be included in the PDDP download which is available at his web site.; ! #X text 25 448 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 --- 1,19 ---- ! #N canvas 298 124 484 620 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 191 - Michal Seta; ! #X text 45 164 - Miller Puckette; ! #X text 45 177 - Dave Sabine; ! #X text 25 118 The project is now managed un-officially by Dave Sabine who acts as primary author and editor. The people involved in this project include (alphabetically):; ! #X text 14 334 THINGS TO NOTE:; ! #X text 25 352 Authors: If you would like to participate in this project , simply gather together information about objects , tutorials , examples , etc. and contact Dave Sabine for info about formatting your documents. All documents should then be forwarded to Dave to be included in the PDDP download which is available at his web site.; ! #X text 25 440 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 *************** *** 23,31 **** 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 213 - Hans-Christoph Steiner; ! #X text 25 283 All comments , corrections , etc. regarding the PDDP reference files should be directed to the Pd Developers' list: pd-dev@iem.at ; ! #X text 26 233 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 ; --- 23,31 ---- 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 205 - Hans-Christoph Steiner; ! #X text 25 275 All comments , corrections , etc. regarding the PDDP reference files should be directed to the Pd Developers' list: pd-dev@iem.at ; ! #X text 26 225 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 ; *************** *** 33,35 **** 0; #X text 102 5 Pure Data Documentation Project; ! #X msg 26 44 ; pd open table_of_contents.pd ./; --- 33,35 ---- 0; #X text 102 5 Pure Data Documentation Project; ! #X obj 25 38 pddp_open table_of_contents;
--- midi-basics.pd DELETED ---
--- NEW FILE: pddp_open.pd --- #N canvas 177 350 518 386 10; #X obj 110 4 inlet; #X obj 140 168 pwd; #X msg 89 227 ; pd open $1.pd $2; #X obj 89 194 pack s s; #X obj 89 139 symbol; #X obj 111 113 t a b; #X obj 4 2 bng 18 250 50 0 empty empty empty 0 -6 0 8 -44926 -1 -1 ; #X obj 3 63 symbol $1; #X obj 61 42 symbol; #X text 316 348 released under the GNU GPL; #X text 99 334 (C) Copyright 2005 Hans-Christoph Steiner hans@at.or.at ; #X text 93 65 <-- store the last value so that the GOP bang will open it; #X text 26 282 This patch opens a patch either from the first argument or sent in as a message.; #X connect 0 0 5 0; #X connect 0 0 8 0; #X connect 1 0 3 1; #X connect 3 0 2 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 5 1 1 0; #X connect 6 0 7 0; #X connect 7 0 5 0; #X connect 8 0 7 1; #X coords 0 0 1 1 20 18 1;
Index: all_about_haptics.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/all_about_haptics.pd,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** all_about_haptics.pd 23 May 2004 04:21:13 -0000 1.3 --- all_about_haptics.pd 26 Apr 2005 05:34:40 -0000 1.4 *************** *** 1,3 **** ! #N canvas 252 88 510 630 10; #X obj 12 346 ff-gain; #X obj 12 385 ff-autocenter; --- 1,3 ---- ! #N canvas 252 88 514 634 10; #X obj 12 346 ff-gain; #X obj 12 385 ff-autocenter; *************** *** 20,25 **** all work with Immersion technology , generally known as "TouchSense". ; ! #X text 17 584 by Hans-Christoph Steiner hans@at.or.at; ! #X text 293 604 updated for Pd version 0.37.1; #X text 107 301 Control the pulses and vibrations of a TouchSense (aka iFeel) mouse; --- 20,24 ---- all work with Immersion technology , generally known as "TouchSense". ; ! #X text 15 606 updated for Pd version 0.37.1; #X text 107 301 Control the pulses and vibrations of a TouchSense (aka iFeel) mouse; *************** *** 40,41 **** --- 39,43 ---- info on how to get it working , see: http://at.or.at/hans/haptics ; + #X text 88 585 (C) Copyright 2004 Hans-Christoph Steiner hans@at.or.at + ; + #X text 305 599 released under the GNU GPL;
Index: all_about_hid.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/all_about_hid.pd,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** all_about_hid.pd 18 Apr 2005 00:33:26 -0000 1.4 --- all_about_hid.pd 26 Apr 2005 05:34:40 -0000 1.5 *************** *** 1,3 **** ! #N canvas 136 163 868 598 10; #X obj 5 2 cnv 15 850 20 empty empty all_about_hid 20 10 1 18 -233017 -66577 0; --- 1,3 ---- ! #N canvas 22 63 872 602 10; #X obj 5 2 cnv 15 850 20 empty empty all_about_hid 20 10 1 18 -233017 -66577 0; *************** *** 22,26 **** #X text 429 558 $Revision$$Date$; #X text 430 571 $Author$; ! #N canvas 0 22 647 451 deprecated 0; #X text 35 38 The use of these objects is deprecated since the functionality that they provide is available in the [hid] object , which is a unified --- 22,26 ---- #X text 429 558 $Revision$$Date$; #X text 430 571 $Author$; ! #N canvas 0 22 663 467 deprecated 0; #X text 35 38 The use of these objects is deprecated since the functionality that they provide is available in the [hid] object , which is a unified *************** *** 49,53 **** objects any more.; #X text 436 176 device type; ! #X text 712 160 latency; #X text 765 176 (Hz); #X text 685 176 (ms); --- 49,53 ---- objects any more.; #X text 436 176 device type; ! #X text 674 160 latency; #X text 765 176 (Hz); #X text 685 176 (ms); *************** *** 127,128 **** --- 127,129 ---- #X obj 85 527 darwinhid; #X obj 166 527 windowshid; + #X text 742 160 refresh rate;
Index: help-receive.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-receive.pd,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** help-receive.pd 12 Sep 2003 19:24:08 -0000 1.2 --- help-receive.pd 26 Apr 2005 05:34:40 -0000 1.3 *************** *** 31,35 **** #X restore 117 499 pd Related_Objects; #N canvas 57 0 649 630 More_Info 0; ! #X obj 44 576 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 --- 31,35 ---- #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
Index: help-makefilename.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-makefilename.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** help-makefilename.pd 22 Aug 2003 00:20:54 -0000 1.1 --- help-makefilename.pd 26 Apr 2005 05:34:40 -0000 1.2 *************** *** 1,244 **** ! #N canvas 2 0 609 604 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 85 2 593 608 More_Info 1; ! #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 3 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 4 503 605 help_with_interfaces 1; ! #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 128 8 -262144 -1 -1 0 1 ! ; ! #X obj 45 424 vsl 15 128 0 127 0 0 v_slider empty Volume 18 7 128 8 ! -262144 -1 -1 0 1; ! #X obj 45 401 bng 15 250 50 0 b_panel empty Open_File 18 7 128 8 -262144 ! -1 -1; ! #X obj 40 280 cnv 15 400 20 empty d_canvas DSP 20 12 64 8 -233017 -66577 ! 0; ! #X obj 40 302 cnv 15 400 20 empty f_canvas FILE_OPEN 20 12 64 8 -233017 ! -66577 0; ! #X obj 40 324 cnv 15 400 20 empty v_canvas VOLUME 20 12 64 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 9 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 2 393 242 Related_Objects 0; ! #X text 25 8 Native PD Objects; ! #X text 25 92 Externals and other object libraries; ! #X text 35 125 [strcat]; ! #X obj 42 46 symbol; ! #X obj 112 46 int; ! #X obj 156 46 openpanel; ! #X text 34 151 [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; --- 1,243 ---- ! #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;
--- NEW FILE: all_about_acoustic_conversions.pd --- #N canvas 48 140 862 639 10; #X obj 12 82 mtof; #X floatatom 12 105 0 0 0 0 - - -; #X obj 12 129 ftom; #X floatatom 12 150 0 0 0 0 - - -; #X text 47 82 -- MIDI note number to frequency converter.; #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; #X floatatom 37 143 5 0 0 0 - - -; #X text 77 142 Select a MIDI note: (Middle C is 60).; #X floatatom 37 188 5 0 0 0 - - -; #X obj 37 207 osc~; #X floatatom 99 203 0 0 0 0 - - -; #N canvas 397 146 628 393 output 0; #X obj 393 156 t b; #X obj 393 106 f; #X obj 393 56 inlet; #X text 399 25 mute; #X obj 393 181 f; #X msg 480 174 0; #X msg 393 81 bang; #X obj 393 131 moses 1; #X obj 480 149 t b f; #X obj 452 113 moses 1; #X obj 138 144 dbtorms; #X obj 452 88 r master-lvl; #X obj 138 38 r master-lvl; #X obj 393 206 s master-lvl; #X obj 22 181 inlet~; #X obj 254 37 inlet; #X text 254 14 level; #X obj 254 152 s master-lvl; #X msg 151 61 set $1; #X obj 151 85 outlet; #X obj 138 190 line~; #X obj 22 212 *~; #X obj 138 167 pack 0 50; #X text 34 159 audio; #X text 148 106 show level; #X obj 73 182 inlet~; #X obj 73 213 *~; #X obj 22 241 dac~ 1; #X obj 73 241 dac~ 2; #X msg 290 82 1; #X obj 265 59 sel 0; #X msg 265 119 ; pd dsp $1; #X msg 265 82 0; #X connect 0 0 4 0; #X connect 1 0 7 0; #X connect 2 0 6 0; #X connect 4 0 13 0; #X connect 5 0 13 0; #X connect 5 0 31 0; #X connect 6 0 1 0; #X connect 7 0 0 0; #X connect 7 1 8 0; #X connect 8 0 5 0; #X connect 9 1 4 1; #X connect 10 0 22 0; #X connect 11 0 1 1; #X connect 11 0 9 0; #X connect 12 0 10 0; #X connect 12 0 18 0; #X connect 14 0 21 0; #X connect 15 0 17 0; #X connect 15 0 30 0; #X connect 18 0 19 0; #X connect 20 0 21 1; #X connect 20 0 26 1; #X connect 21 0 27 0; #X connect 22 0 20 0; #X connect 25 0 26 0; #X connect 26 0 28 0; #X connect 29 0 31 0; #X connect 30 0 32 0; #X connect 30 1 29 0; #X connect 32 0 31 0; #X restore 37 232 pd output; #X msg 128 204 MUTE; #X text 164 203 <-- Turn up your volume here.; #X text 15 260 HERE IS THE ALTERNATIVE; #X obj 36 321 mtof; #X floatatom 36 281 5 0 0 0 - - -; #X floatatom 15 345 0 0 0 0 - - -; #X floatatom 123 461 0 0 0 0 - - -; #X obj 138 312 <= -1500; #X obj 138 332 expr 1-$f1; #X obj 95 352 spigot; #X obj 95 295 t f f; #X obj 95 372 min 1499; #X obj 95 419 expr (8.17579891564*exp(0.0577622650*$f1)); #X obj 151 352 s zero; #X obj 123 440 r zero; #X obj 96 485 bang; #X obj 36 482 bang; #X obj 36 502 realtime; #X floatatom 161 576 0 0 0 0 - - -; #X obj 204 499 bang; #X obj 161 499 bang; #X obj 161 519 realtime; #X floatatom 161 540 0 0 0 0 - - -; #X obj 365 389 *; #X obj 408 342 loadbang; #X obj 365 408 exp; #X obj 365 428 *; #X floatatom 365 448 0 0 0 0 - - -; #X obj 397 431 r zero; #X text 79 277 Select a MIDI note here.; #X obj 477 572 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #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 into a frequency value by the simple equation:; #X text 494 330 (8.17579891564 * exp(0.0577622650 * MIDI_note)) = frequency ; #X text 498 355 For curiosity's sake , I included a timer to show how much faster the [mtof] object is compared to the two alternative methods.; #X text 162 556 Arithmetic is __?__ milliseconds slower than [mtof]. ; #X text 159 592 [expr] is __?__ milliseconds slower than [mtof].; #X text 12 363 RESULT A; #X text 123 476 RESULT B; #X text 364 465 RESULT C; #X msg 408 363 0.0577623; #X msg 408 403 8.1758; #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 [*] object round off the operands because they cannot handle enough decimal places.; #X text 498 200 The first order of business performed by these examples is the filtering out of all numbers less than -1500 and greater than 1499 (Just like the [mtof] source code). In other words , "overflows and underflows are clipped" as Miller Puckette stated in the original 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.; #X text 11 125 CONVENIENT? YES!; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 7 2; #X connect 7 0 6 0; #X connect 8 0 7 3; #X connect 11 0 13 0; #X connect 11 0 24 0; #X connect 12 0 11 0; #X connect 12 0 18 0; #X connect 15 0 16 0; #X connect 16 0 17 1; #X connect 16 0 21 0; #X connect 17 0 19 0; #X connect 18 0 17 0; #X connect 18 1 15 0; #X connect 19 0 20 0; #X connect 19 0 23 0; #X connect 19 0 31 0; #X connect 20 0 14 0; #X connect 22 0 14 0; #X connect 23 0 25 1; #X connect 24 0 25 0; #X connect 24 0 28 0; #X connect 25 0 26 0; #X connect 27 0 29 1; #X connect 28 0 29 0; #X connect 29 0 30 0; #X connect 31 0 33 0; #X connect 32 0 49 0; #X connect 32 0 50 0; #X connect 33 0 34 0; #X connect 34 0 35 0; #X connect 34 0 27 0; #X connect 36 0 35 0; #X connect 39 0 38 0; #X connect 49 0 31 1; #X connect 50 0 34 1; #X restore 175 99 pd understanding_mtof; #X text 47 129 -- Frequency to MIDI note number converter.; #N canvas 118 22 919 630 understanding_ftom 0; #X floatatom 38 86 5 0 0 0 - - -; #X floatatom 38 131 5 0 0 0 - - -; #X text 12 215 HERE IS THE ALTERNATIVE; #X floatatom 33 236 5 0 0 0 - - -; #X floatatom 12 300 0 0 0 0 - - -; #X obj 507 572 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 507 12 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X text 9 318 RESULT A; #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 C); #X obj 38 108 ftom; #X obj 38 158 makenote 100 500; #X obj 38 181 noteout; #X text 76 232 Select a FREQUENCY here.; #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; #X msg 64 277 -1500; #X floatatom 64 408 0 0 0 0 - - -; #X floatatom 114 346 0 0 0 0 - - -; #X obj 114 313 * 17.3123; #X obj 114 273 * 0.122312; #X obj 114 293 log; #X obj 101 385 expr (17.3123405046*log(.12231220585*$f1)); #X text 64 423 RESULT B; #X text 113 359 RESULT C; #X obj 93 449 bang; #X obj 33 446 bang; #X obj 33 466 realtime; #X floatatom 158 540 0 0 0 0 - - -; #X obj 201 463 bang; #X obj 158 463 bang; #X obj 158 483 realtime; #X floatatom 158 504 0 0 0 0 - - -; #X text 189 520 Arithmetic is __?__ milliseconds slower than [mtof]. ; #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 and the object responds with "-1500".; #X text 528 291 Secondly , the incoming frequency is translated into a MIDI note value by the simple equation:; #X text 524 330 (17.3123405046 * log(0.12231220585 * Frequency)) = MIDI_note; #X text 528 355 For curiosity's sake , I included a timer to show 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 [*] object round off the operands because they cannot handle enough decimal places.; #X text 145 119 Note that fractional values have no effect. MIDI controllers only accept integers. Perhaps a subroutine could be designed to parse the decimal places and manipulate the pitch bend controller to achieve microtonal control?; #X connect 0 0 13 0; #X connect 1 0 14 0; #X connect 3 0 17 0; #X connect 3 0 20 0; #X connect 4 0 31 0; #X connect 6 0 5 0; #X connect 13 0 1 0; #X connect 14 0 15 0; #X connect 14 1 15 1; #X connect 17 0 4 0; #X connect 20 0 21 0; #X connect 20 1 25 0; #X connect 20 1 27 0; #X connect 21 0 22 0; #X connect 21 0 23 0; #X connect 22 0 30 0; #X connect 23 0 34 0; #X connect 24 0 23 0; #X connect 25 0 26 0; #X connect 26 0 24 0; #X connect 27 0 22 0; #X connect 30 0 32 1; #X connect 31 0 32 0; #X connect 31 0 35 0; #X connect 32 0 33 0; #X connect 34 0 36 1; #X connect 35 0 36 0; #X connect 36 0 37 0; #X restore 174 145 pd understanding_ftom; #X floatatom 12 61 0 0 0 0 - - -; #X floatatom 12 231 0 0 0 0 - - -; #X floatatom 12 276 0 0 0 0 - - -; #X floatatom 12 187 0 0 0 0 - - -; #X obj 12 208 dbtorms; #X obj 12 255 rmstodb; #N canvas 65 78 423 452 understanding_dbtorms 0; #N canvas 0 22 452 302 What_is_a_decibel? 0; #X text 24 94 The difficulty in measuring the volume of an instrument however is caused by 'distance'. For example , at one metre away from a door bell , the amplitude might be 70 Decibels , while at 50 metres away the same door bell is just a fraction of that amplitude.; #X text 25 33 DECIBELS are units by which we measure amplitude. A human voice is approximately 70 Decibels - a snare drum is approximately 120 Decibels - the threshold of pain for the human ear is approximately 110 Decibels (poor drummers!); #X text 23 174 Literally , a Decibel is one-tenth of a Bel. A Bel , according to a medical dictionary is approximately the threshold of the human ear at 1000 hz. I know that this seems a little vague , and perhaps this isn't the best way to explain it - we might as well be measuring "fortnights" and "bunches" and "Alens"! Anyways...I'm not an acoustician.; #X restore 39 24 pd What_is_a_decibel?; #N canvas 0 22 440 242 What_does_RMS_mean? 0; #X text 24 21 RMS is an acronym meaning "Root Mean Square".; #X text 23 43 In the analog realm , RMS is the result of an equation performed on electrical flow. It is used to measure voltage or current. It is important to note however , that it does NOT measure "power". 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.; #X text 22 241 Example:; #X floatatom 24 293 0 0 0 0 - - -; #X obj 24 313 moses 0; #X msg 24 333 0; #X obj 86 352 min 485; #X text 17 149 (exp((2.302585092994 * 0.05) * (db_value - 100)) = RMS ; #X floatatom 24 397 0 0 0 0 - - -; #X obj 151 310 dbtorms; #X floatatom 151 330 0 0 0 0 - - -; #X obj 86 372 expr (exp((2.302585092994*0.05)*($f1-100))); #X text 18 178 On a scale of zero to 100 decibels , the [dbtorms] produces exponential values between 0 and 1; #X msg 24 264 0; #X msg 57 264 100; #X obj 61 332 sel 0; #X connect 4 0 5 0; #X connect 4 0 10 0; #X connect 5 0 6 0; #X connect 5 1 16 0; #X connect 6 0 9 0; #X connect 7 0 12 0; #X connect 10 0 11 0; #X connect 12 0 9 0; #X connect 14 0 4 0; #X connect 15 0 4 0; #X connect 16 0 6 0; #X connect 16 1 7 0; #X restore 155 227 pd understanding_dbtorms; #X text 66 209 -- Decibels to RMS converter.; #X text 66 256 -- RMS to Decibels converter.; #X floatatom 12 357 0 0 0 0 - - -; #X floatatom 12 402 0 0 0 0 - - -; #X floatatom 12 313 0 0 0 0 - - -; #X obj 12 334 dbtopow; #X obj 12 381 powtodb; #N canvas 349 60 423 452 understanding_rmstodb 0; #N canvas 0 22 452 302 What_is_a_decibel? 0; #X text 24 94 The difficulty in measuring the volume of an instrument however is caused by 'distance'. For example , at one metre away from a door bell , the amplitude might be 70 Decibels , while at 50 metres away the same door bell is just a fraction of that amplitude.; #X text 25 33 DECIBELS are units by which we measure amplitude. A human voice is approximately 70 Decibels - a snare drum is approximately 120 Decibels - the threshold of pain for the human ear is approximately 110 Decibels (poor drummers!); #X text 23 174 Literally , a Decibel is one-tenth of a Bel. A Bel , according to a medical dictionary is approximately the threshold of the human ear at 1000 hz. I know that this seems a little vague , and perhaps this isn't the best way to explain it - we might as well be measuring "fortnights" and "bunches" and "Alens"! Anyways...I'm not an acoustician.; #X restore 39 24 pd What_is_a_decibel?; #N canvas 0 22 440 242 What_does_RMS_mean? 0; #X text 24 21 RMS is an acronym meaning "Root Mean Square".; #X text 23 43 In the analog realm , RMS is the result of an equation performed on electrical flow. It is used to measure voltage or current. It is important to note however , that it does NOT measure "power". 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 22 219 Example:; #X floatatom 24 259 0 0 0 0 - - -; #X floatatom 24 422 0 0 0 0 - - -; #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.; #X text 18 178 On a scale of zero to 1 decibels , the [rmstodb] produces logarithmic values between 0 and 100 , although higher values can also be produced.; #X obj 151 334 rmstodb; #X obj 24 358 max 0; #X obj 24 401 max 0; #X obj 24 379 expr (100+((20/2.302585092994)*log($f1))); #X text 18 136 (100 + ((20/2.302585092994) * log(RMS_value))); #X obj 24 278 / 1000; #X floatatom 24 310 0 0 0 0 - - -; #X msg 101 278 1; #X connect 3 0 14 0; #X connect 6 0 15 0; #X connect 9 0 5 0; #X connect 10 0 12 0; #X connect 11 0 4 0; #X connect 12 0 11 0; #X connect 14 0 15 0; #X connect 15 0 9 0; #X connect 15 0 10 0; #X connect 16 0 15 0; #X restore 153 273 pd understanding_rmstodb; #X text 66 335 -- Decibels to power converter.; #X text 66 382 -- power to Decibels converter.; #N canvas 460 106 429 458 understanding_dbtopow 0; #N canvas 0 22 452 302 What_is_a_decibel? 0; #X text 24 94 The difficulty in measuring the volume of an instrument however is caused by 'distance'. For example , at one metre away from a door bell , the amplitude might be 70 Decibels , while at 50 metres away the same door bell is just a fraction of that amplitude.; #X text 25 33 DECIBELS are units by which we measure amplitude. A human voice is approximately 70 Decibels - a snare drum is approximately 120 Decibels - the threshold of pain for the human ear is approximately 110 Decibels (poor drummers!); #X text 23 174 Literally , a Decibel is one-tenth of a Bel. A Bel , according to a medical dictionary is approximately the threshold of the human ear at 1000 hz. I know that this seems a little vague , and perhaps this isn't the best way to explain it - we might as well be measuring "fortnights" and "bunches" and "Alens"! Anyways...I'm not an acoustician.; #X restore 39 24 pd What_is_a_decibel?; #X floatatom 21 205 0 0 0 0 - - -; #X floatatom 21 309 0 0 0 0 - - -; #X floatatom 148 242 0 0 0 0 - - -; #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 who DOES know more about these objects and their usage. All that I can offer is an explanation of the equation used to perform these conversions. ; #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.; #X obj 148 222 dbtopow; #X obj 21 226 max 0; #X obj 21 246 min 870; #X text 17 149 exp((2.302585092994 * 0.1) * (db_value - 100)) = Power ; #X obj 21 269 expr exp((2.302585092994*0.1)*($f1-100)); #X connect 1 0 6 0; #X connect 1 0 7 0; #X connect 6 0 3 0; #X connect 7 0 8 0; #X connect 8 0 10 0; #X connect 10 0 2 0; #X restore 154 354 pd understanding_dbtopow; #N canvas 348 60 429 458 understanding_powtodb 0; #N canvas 0 22 452 302 What_is_a_decibel? 0; #X text 24 94 The difficulty in measuring the volume of an instrument however is caused by 'distance'. For example , at one metre away from a door bell , the amplitude might be 70 Decibels , while at 50 metres away the same door bell is just a fraction of that amplitude.; #X text 25 33 DECIBELS are units by which we measure amplitude. A human voice is approximately 70 Decibels - a snare drum is approximately 120 Decibels - the threshold of pain for the human ear is approximately 110 Decibels (poor drummers!); #X text 23 174 Literally , a Decibel is one-tenth of a Bel. A Bel , according to a medical dictionary is approximately the threshold of the human ear at 1000 hz. I know that this seems a little vague , and perhaps this isn't the best way to explain it - we might as well be measuring "fortnights" and "bunches" and "Alens"! Anyways...I'm not an acoustician.; #X restore 39 24 pd What_is_a_decibel?; #X text 22 241 Example:; #X floatatom 22 261 0 0 0 0 - - -; #X floatatom 22 363 0 0 0 0 - - -; #X floatatom 149 298 0 0 0 0 - - -; #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 who DOES know more about these objects and their usage. All that I can offer is an explanation of the equation used to perform these conversions. ; #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.; #X text 17 149 (100 + ((10/2.302585092994) * log(POWER_value))) = Debibels ; #X obj 149 278 powtodb; #X obj 22 281 max 0; #X obj 22 321 expr (100 + ((10/2.302585092994)*log($f1))); #X obj 22 342 max 0; #X connect 2 0 8 0; #X connect 2 0 9 0; #X connect 8 0 4 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 11 0 3 0; #X restore 154 401 pd understanding_powtodb; #X text 13 439 RELATED OBJECTS; #X obj 14 458 dbtopow~; #X obj 68 458 dbtorms~; #X obj 123 458 rmstodb~; #X obj 178 458 powtodb~; #X obj 233 458 mtof~; #X obj 270 458 ftom~; #X obj 14 483 expr; #X obj 46 483 expr~; #N canvas 0 22 452 302 other_objects_from_related_libraries 0; #X obj 26 39 db2v; #X obj 65 38 f2note; #X obj 115 39 b2db; #X obj 150 40 t3_sig~; #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" ; #X text 15 183 or; #X text 16 197 iem.kug.ac.at/pdb/; #X restore 14 518 pd other_objects_from_related_libraries; #X obj 90 483 rmstopow~; #X obj 154 485 powtorms~; #X obj 220 485 sig~; #X obj 254 485 snapshot~; #X obj 5 2 cnv 15 850 20 empty empty all_about_acoustic_conversions 20 10 1 18 -233017 -66577 0; #X obj 821 3 pddp; #X text 439 41 Please note: I have no idea why it's necessary for Pd to measure decibels , rms , or power. It seems to me that RMS and Power are extremely important in the analog world (so that an engineer doesn't blow up a transistor)...but in Pd , these things are just numbers which have been abstracted from their original analog counterparts. I would really appreciate if somebody could help me understand these concepts and finish this document. Why are these objects present in Pd? WHY should they be used and what benefits to they produce in a digital process?; #X text 14 574 This document was updated for Pd version 0.35 test 29 by Dave Sabine as part of a project called pddp proposed to build comprehensive documentation for Pd.; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 8 0 0 0; #X connect 9 0 13 0; #X connect 11 0 12 0; #X connect 12 0 9 0; #X connect 13 0 10 0; #X connect 17 0 21 0; #X connect 19 0 20 0; #X connect 20 0 17 0; #X connect 21 0 18 0;
Index: all_about_data_types.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/all_about_data_types.pd,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** all_about_data_types.pd 22 Oct 2004 00:49:35 -0000 1.3 --- all_about_data_types.pd 26 Apr 2005 05:34:40 -0000 1.4 *************** *** 1,20 **** ! #N canvas 310 87 865 646 10; ! #X obj 462 499 route; ! #X floatatom 102 114 5 0 0 0 - - -; ! #X text 141 114 float; ! #X symbolatom 193 114 10 0 0 0 - - -; ! #X text 274 115 symbol; ! #X obj 105 210 symbol; ! #X symbolatom 105 257 0 0 0 0 - - -; ! #X msg 114 234 word; ! #X msg 105 192 test; ! #X msg 88 170 symbol this; ! #X text 162 212 casting as a symbol; ! #X text 179 169 set type directly; ! #X text 153 235 does not work (check console messages); ! #X floatatom 24 232 5 0 0 0 - - -; ! #X msg 29 211 12; ! #X msg 12 191 float 83; ! #N canvas 770 126 482 332 Related_Objects 0; #X obj 32 54 ftos; #X obj 68 54 list2symbol; --- 1,17 ---- ! #N canvas 220 70 873 654 10; ! #X obj 453 470 route; ! #X floatatom 93 115 5 0 0 1 "float" - -; ! #X symbolatom 184 115 10 0 0 1 "symbol" - -; ! #X obj 96 211 symbol; ! #X symbolatom 96 258 0 0 0 0 - - -; ! #X msg 105 235 word; ! #X msg 96 193 test; ! #X msg 79 171 symbol this; ! #X text 170 170 set type directly; ! #X text 144 236 does not work (check console messages); ! #X floatatom 15 233 5 0 0 0 - - -; ! #X msg 20 212 12; ! #X msg 3 192 float 83; ! #N canvas 770 126 486 336 Related_Objects 0; #X obj 32 54 ftos; #X obj 68 54 list2symbol; *************** *** 32,132 **** #X obj 247 138 l2s; #X obj 247 158 s2l; ! #X restore 706 549 pd Related_Objects; ! #X obj 419 19 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 ! -1; ! #X obj 419 594 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 ! -1; ! #X text 436 255 Many objects cast the data they receive when they output it:; ! #X text 555 336 Some objects do not cast the data:; ! #X obj 453 307 trigger anything; ! #X msg 453 282 this is a list without a cast; ! #X obj 453 330 print; ! #X text 439 390 Some objects need to have the data explicitly declared in order to handle it. These are mostly symbol handling objects.; ! #X text 439 466 Objects which route data generally can handle explicitly or implicitly defined data.; ! #X obj 509 499 trigger; ! #X obj 567 499 niagara; ! #X obj 455 433 select; ! #X text 3 142 symbols need to be declared explicitly , floats do not ! , but can be:; ! #X obj 4 -3 cnv 15 850 20 empty empty all_about_data_types 20 10 1 18 -233017 -66577 0; ! #X obj 820 -2 pddp; ! #X text 17 604 by Hans-Christoph Steiner hans@at.or.at; ! #X text 12 303 the "anything" data type allows anything to pass through ! unchanged.; ! #X text 441 530 click on these for more info:; ! #X text 629 606 updated for Pd version 0.37.1; ! #X text 0 290 "anything"; ! #X text 0 406 "list"; ! #X text 0 392 "float"; ! #X text 0 433 "symbol"; ! #X text 0 419 "scalar"; ! #X text 0 379 "bang"; ! #X msg 100 327 anything 1 two three; ! #X msg 251 327 one 2 3; ! #X obj 156 410 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X obj 160 384 t a b f l p s; ! #X obj 190 411 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X msg 253 361 list one 2 3; ! #X msg 292 391 1 2 3; ! #X obj 453 550 all_about_lists_vs_anythings; ! #X obj 452 571 all_about_symbol_construction; ! #X obj 668 571 all_about_data_structures; ! #X text 206 34 float symbol pointer; ! #X text 6 34 atoms (basic data types):; ! #X text 6 59 The basic data types are known as 'atoms' in Pd. "float" and "symbol" atoms have 'atom boxes' for realtime display and control from within a patch. "pointer" atoms are used for accessing data stored in graphical data structures.; ! #X obj 450 207 int; ! #X obj 458 187 / 5.23; ! #X floatatom 458 159 5 0 0 0 - - -; ! #X floatatom 491 227 5 0 0 0 - - -; ! #X floatatom 450 227 5 0 0 0 - - -; ! #X text 439 137 examples of casting:; ! #X obj 540 157 tosymbol; ! #X obj 604 158 fromsymbol; ! #X obj 687 157 list2symbol; ! #X obj 691 199 ftos; ! #X obj 646 42 symbol; ! #X obj 613 85 int; ! #X obj 728 42 pointer; ! #X obj 473 85 bang; ! #X obj 511 86 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X text 528 86 aka [bng]; ! #X text 10 508 casting and storage objects:; ! #X obj 528 42 float; ! #X text 10 526 There a number of objects which are used for storing messages , or casting messages as a specific data type , sometimes converting from one data type to another. The right inlet on these objects is stores that value , which can be later output using a bang. ; ! #X obj 641 85 lister; ! #X text 464 42 atoms:; ! #X text 569 43 aka; ! #X obj 595 42 f; ! #X connect 5 0 6 0; ! #X connect 7 0 6 0; ! #X connect 8 0 5 0; ! #X connect 9 0 6 0; ! #X connect 14 0 13 0; ! #X connect 15 0 13 0; ! #X connect 17 0 18 0; ! #X connect 21 0 23 0; ! #X connect 22 0 21 0; ! #X connect 42 0 45 0; ! #X connect 43 0 45 0; #X connect 45 0 44 0; - #X connect 45 3 46 0; - #X connect 47 0 45 0; - #X connect 48 0 45 0; - #X connect 55 0 59 0; - #X connect 56 0 55 0; - #X connect 56 0 58 0; - #X connect 57 0 56 0; --- 29,130 ---- #X obj 247 138 l2s; #X obj 247 158 s2l; ! #X restore 433 581 pd Related_Objects; ! #X text 427 256 Many objects cast the data they receive when they output it:; ! #X text 546 337 Some objects do not cast the data:; ! #X obj 444 308 trigger anything; ! #X msg 444 283 this is a list without a cast; ! #X obj 444 331 print; ! #X text 430 371 Some objects need to have the data explicitly declared in order to handle it. These are mostly symbol handling objects.; ! #X text 430 437 Objects which route data generally can handle explicitly or implicitly defined data.; ! #X obj 500 470 trigger; ! #X obj 558 470 niagara; ! #X obj 446 414 select; ! #X obj -5 -2 cnv 15 850 20 empty empty all_about_data_types 20 10 1 18 -233017 -66577 0; ! #X obj 811 -1 pddp; ! #X text 635 597 updated for Pd version 0.37.1; ! #X text -9 291 "anything"; ! #X text -9 407 "list"; ! #X text -9 393 "float"; ! #X text -9 434 "symbol"; ! #X text -9 420 "scalar"; ! #X text -9 380 "bang"; ! #X msg 91 339 anything 1 two three; ! #X msg 242 339 one 2 3; ! #X obj 147 422 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X obj 151 396 t a b f l p s; ! #X obj 181 423 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X msg 244 373 list one 2 3; ! #X msg 283 403 1 2 3; ! #X text 197 35 float symbol pointer; ! #X text -3 35 atoms (basic data types):; ! #X text -3 60 The basic data types are known as 'atoms' in Pd. "float" and "symbol" atoms have 'atom boxes' for realtime display and control from within a patch. "pointer" atoms are used for accessing data stored in graphical data structures.; ! #X obj 441 208 int; ! #X obj 449 188 / 5.23; ! #X floatatom 449 160 5 0 0 0 - - -; ! #X floatatom 482 228 5 0 0 0 - - -; ! #X floatatom 441 228 5 0 0 0 - - -; ! #X obj 531 158 tosymbol; ! #X obj 595 159 fromsymbol; ! #X obj 678 158 list2symbol; ! #X obj 682 200 ftos; ! #X obj 637 43 symbol; ! #X obj 600 96 int; ! #X obj 719 43 pointer; ! #X obj 460 96 bang; ! #X obj 498 97 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; ! #X obj 519 43 float; ! #X text 1 527 There a number of objects which are used for storing messages , or casting messages as a specific data type , sometimes converting from one data type to another. The right inlet on these objects is stores that value , which can be later output using a bang. ; ! #X obj 628 96 lister; ! #X text 560 44 aka; ! #X obj 586 43 f; ! #X text 22 613 (C) Copyright 2004 Hans-Christoph Steiner hans@at.or.at ! ; ! #X text 239 627 released under the GNU GPL; ! #X text 435 614 $Revision$$Date$; ! #X text 436 627 $Author$; ! #X obj 433 517 pddp_open all_about_lists_vs_anythings; ! #X obj 433 538 pddp_open all_about_symbol_construction; ! #X obj 433 559 pddp_open all_about_data_structures; ! #X text 515 97 (aka [bng]); ! #X text 3 304 "anything" allows anything to pass through unchanged. ! It is not a data type tho.; ! #X text -6 143 "symbols" need to be declared explicitly. "floats" do ! not need to be declared explicitly , but can be:; ! #X text 153 212 casting as a "symbol"; ! #X text 1 509 CASTING AND STORAGE OBJECTS; ! #X text 431 498 FOR MORE INFO:; ! #X text 430 138 EXAMPLES OF CASTING; ! #X text 425 43 atom objects:; ! #X text 432 74 other data types:; ! #X connect 3 0 4 0; ! #X connect 5 0 4 0; ! #X connect 6 0 3 0; ! #X connect 7 0 4 0; ! #X connect 11 0 10 0; ! #X connect 12 0 10 0; ! #X connect 16 0 18 0; ! #X connect 17 0 16 0; ! #X connect 33 0 36 0; ! #X connect 34 0 36 0; ! #X connect 36 0 35 0; ! #X connect 36 3 37 0; ! #X connect 38 0 36 0; ! #X connect 39 0 36 0; ! #X connect 43 0 47 0; ! #X connect 44 0 43 0; ! #X connect 44 0 46 0; #X connect 45 0 44 0;
Index: help-key.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-key.pd,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** help-key.pd 13 Sep 2004 22:57:47 -0000 1.3 --- help-key.pd 26 Apr 2005 05:34:40 -0000 1.4 *************** *** 151,155 **** pointer location. This is dependent on the system.; #X text 155 542 - Dave Sabine , July 11 , 2003; ! #X obj 281 514 all_about_hid; #X text 105 515 for more on HIDs:; #X connect 17 0 18 0; --- 151,155 ---- 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;
Index: table_of_contents.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/table_of_contents.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** table_of_contents.pd 31 May 2004 20:29:59 -0000 1.1 --- table_of_contents.pd 26 Apr 2005 05:34:40 -0000 1.2 *************** *** 1,26 **** ! #N canvas 106 77 480 616 10; ! #X obj 3 2 cnv 15 450 20 empty empty PDDP 2 12 1 18 -233017 -66577 0; ! #X text 102 5 Table of Contents; ! #X obj 10 80 all_about_arrays; ! #X obj 10 100 all_about_cyclone; ! #X obj 10 120 all_about_data_structures; ! #X obj 10 140 all_about_data_types; ! #X obj 10 160 all_about_haptics; ! #X obj 10 180 all_about_hid; ! #X obj 10 200 all_about_lists_vs_anythings; ! #X obj 10 220 all_about_looping; ! #X obj 10 240 all_about_scope_and_locality; ! #X obj 10 260 all_about_send_n_receive; ! #X obj 10 280 all_about_symbol_construction; ! #X text 240 81 comment; ! #X text 240 101 comment; ! #X text 240 121 comment; ! #X text 240 141 comment; ! #X text 240 161 comment; ! #X text 240 181 comment; ! #X text 240 201 comment; ! #X text 240 221 comment; ! #X text 240 241 comment; ! #X text 240 261 comment; ! #X text 240 281 comment; --- 1,73 ---- ! #N canvas 282 141 514 633 10; ! #X obj 3 2 cnv 15 500 20 empty empty pddp 2 12 1 18 -233017 -66577 0; ! #X obj 9 580 pddp_open; ! #X msg 10 100 acoustic_conversions; ! #X msg 10 120 arrays; ! #X msg 10 140 cyclone; ! #X msg 10 160 data_structures; ! #X msg 10 180 data_types; ! #X msg 10 200 haptics; ! #X msg 10 220 hid; ! #X msg 10 240 hid_mapping; ! #X msg 10 260 lists_vs_anythings; ! #X msg 10 280 looping; ! #X msg 10 320 scope_and_locality; ! #X msg 10 340 send_n_receive; ! #X msg 10 360 symbol_construction; ! #X msg 10 460 pddp-style-guide; ! #X msg 10 490 dynamic_sends; ! #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; ! #X text 170 341 comment; ! #X text 170 361 comment; ! #N canvas 0 22 462 312 guts 0; ! #X obj 79 119 inlet; ! #X obj 75 258 outlet; ! #X obj 78 168 symbol; ! #X obj 75 221 makefilename all_about_%s; ! #X text 46 28 this opens the "all_about_" patches; ! #X connect 0 0 2 0; ! #X connect 2 0 3 0; ! #X connect 3 0 1 0; ! #X restore 10 395 pd guts; ! #X text 316 608 released under the GNU GPL; ! #X text 99 594 (C) Copyright 2005 Hans-Christoph Steiner hans@at.or.at ! ; ! #X text 170 101 audio power and RMS , MIDI and frequency; ! #X text 170 221 physically interfacing with humans; ! #X text 170 281 making all sorts of loops; ! #X msg 10 300 midi_flags; ! #X text 170 201 controlling force and vibration feedback; ! #X text 170 241 mapping data from human interface devices; ! #X text 170 301 command line flags for using MIDI devices; ! #X obj 471 3 pddp; ! #X text 170 460 style recommendations for pddp patches; ! #X text 170 490 (unfinished); ! #X text 170 520 (unfinished); ! #X text 170 161 (unfinished); ! #X text 170 261 (unfinished); ! #X text 22 35 TABLE OF CONTENTS; ! #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;
Index: help-tabwrite.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-tabwrite.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** help-tabwrite.pd 22 Aug 2003 00:20:54 -0000 1.1 --- help-tabwrite.pd 26 Apr 2005 05:34:40 -0000 1.2 *************** *** 32,36 **** #N canvas 80 0 661 319 More_Info 0; #X text 28 257 Also See:; ! #X obj 107 257 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 --- 32,36 ---- #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
Index: help-trigger.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-trigger.pd,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** help-trigger.pd 9 Oct 2004 05:01:05 -0000 1.3 --- help-trigger.pd 26 Apr 2005 05:34:40 -0000 1.4 *************** *** 188,193 **** #X obj 940 5 pddp; #X text 472 463 MORE INFO; ! #X obj 479 490 all_about_data_types; ! #X obj 480 516 all_about_lists_vs_anythings; #X obj 822 157 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; --- 188,193 ---- #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;
Index: TODO =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/TODO,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TODO 18 Apr 2005 00:33:26 -0000 1.2 --- TODO 26 Apr 2005 05:34:40 -0000 1.3 *************** *** 1,7 ****
! - auto-generate table_of_contents.pd from all all_about_*.pd patches ! ! - make a Pd patch to launch table_of_contents.pd to solve recursive problem ! ! - make [pddp] a patch that opens the filename given as an argument using an ! internal GOP bang. For example: [[]pddp all_about_hid]. --- 1,2 ----
! - change [pwd] to whatever the object is finally called.
Index: all_about_scope_and_locality.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/all_about_scope_and_locality.pd,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** all_about_scope_and_locality.pd 4 Oct 2003 03:41:06 -0000 1.2 --- all_about_scope_and_locality.pd 26 Apr 2005 05:34:40 -0000 1.3 *************** *** 1,10 **** ! #N canvas 129 2 606 486 12; ! #X text 19 14 WHAT IS THIS ALL ABOUT?; ! #X text 31 40 Depending on the complexity of your patches , you may need to control whether or not messages will be used by only ONE patch , or throughout all open patches. The scope of a message is considered either 'local' or 'global'.; #N canvas 146 223 606 389 GLOBAL_SCOPE 0; ! #N canvas 0 0 254 169 example_a 0; #X obj 18 9 r foo; #X floatatom 18 34 5 0 0 0 - - -; --- 1,10 ---- ! #N canvas 166 111 516 471 10; ! #X text 9 34 WHAT IS THIS ALL ABOUT?; ! #X text 21 60 Depending on the complexity of your patches , you may need to control whether or not messages will be used by only ONE patch , or throughout all open patches. The scope of a message is considered either 'local' or 'global'.; #N canvas 146 223 606 389 GLOBAL_SCOPE 0; ! #N canvas 0 22 254 169 example_a 0; #X obj 18 9 r foo; #X floatatom 18 34 5 0 0 0 - - -; *************** *** 56,61 **** #X connect 8 0 11 0; #X connect 9 0 12 0; ! #X restore 21 137 pd GLOBAL_SCOPE; ! #N canvas 146 2 618 662 LOCAL_SCOPE 0; #X text 4 9 LOCAL SCOPE -send and receive messages within a SINGLE PATCH; --- 56,61 ---- #X connect 8 0 11 0; #X connect 9 0 12 0; ! #X restore 11 157 pd GLOBAL_SCOPE; ! #N canvas 146 22 618 662 LOCAL_SCOPE 0; #X text 4 9 LOCAL SCOPE -send and receive messages within a SINGLE PATCH; *************** *** 106,110 **** #X connect 10 0 14 0; #X connect 13 0 11 0; ! #X restore 21 166 pd LOCAL_SCOPE; #N canvas 145 31 610 615 INHERITANCE 0; #X text 20 18 The word "Inherit" means to "receive a characteristic --- 106,110 ---- #X connect 10 0 14 0; #X connect 13 0 11 0; ! #X restore 11 186 pd LOCAL_SCOPE; #N canvas 145 31 610 615 INHERITANCE 0; #X text 20 18 The word "Inherit" means to "receive a characteristic *************** *** 158,165 **** #X connect 16 0 20 0; #X connect 19 0 17 0; ! #X restore 21 197 pd INHERITANCE; ! #X text 26 265 From section 2.6.5 of the PD manual , Miller Puckette says:; ! #X text 49 296 "Note that the expansion of variables such as $0 and $1 only works at the beginning of the symbol. So , for instance , [rats-$1] will not be expanded. Occasionally you may want to have double --- 158,165 ---- #X connect 16 0 20 0; #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 $1 only works at the beginning of the symbol. So , for instance , [rats-$1] will not be expanded. Occasionally you may want to have double *************** *** 168,170 **** of a symbol and passing that on as agrument to a further abstraction." ; ! #X text 17 241 MILLER'S WISDOM; --- 168,173 ---- of a symbol and passing that on as agrument to a further abstraction." ; ! #X text 7 261 MILLER'S WISDOM; ! #X obj 4 4 cnv 15 500 20 empty empty all_about_scope_and_locality 20 ! 10 1 18 -233017 -66577 0; ! #X obj 471 5 pddp;
Index: help-send.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-send.pd,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** help-send.pd 12 Sep 2003 19:24:08 -0000 1.2 --- help-send.pd 26 Apr 2005 05:34:40 -0000 1.3 *************** *** 32,36 **** #X restore 117 499 pd Related_Objects; #N canvas 90 1 655 636 More_Info 0; ! #X obj 44 576 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 --- 32,36 ---- #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
Index: help-tabread4.pd =================================================================== RCS file: /cvsroot/pure-data/doc/pddp/help-tabread4.pd,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** help-tabread4.pd 22 Aug 2003 00:20:54 -0000 1.1 --- help-tabread4.pd 26 Apr 2005 05:34:40 -0000 1.2 *************** *** 32,36 **** #N canvas 80 0 659 614 More_Info 0; #X text 46 564 Also See:; ! #X obj 125 564 all_about_arrays; #X text 21 8 WHAT IS INTERPOLATION?; #X text 38 34 "Interpolation" is a word which described a sophisticated --- 32,36 ---- #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