aboutsummaryrefslogtreecommitdiff
path: root/doc/pddp/fexpr~-help.pd
diff options
context:
space:
mode:
authorJonathan Wilkes <jancsika1@users.sourceforge.net>2010-08-25 00:31:27 +0000
committerJonathan Wilkes <jancsika1@users.sourceforge.net>2010-08-25 00:31:27 +0000
commit7d6affca746f49f5ffb2818b8a9ccf9d91388e8f (patch)
treec906633b5bb39eb9b566f5209b2b1eae28703878 /doc/pddp/fexpr~-help.pd
parent2f615ffbf13571a928856b8207d1ea215e857e3f (diff)
revised help docs that conform to the PDDP template
svn path=/trunk/; revision=13942
Diffstat (limited to 'doc/pddp/fexpr~-help.pd')
-rw-r--r--doc/pddp/fexpr~-help.pd458
1 files changed, 458 insertions, 0 deletions
diff --git a/doc/pddp/fexpr~-help.pd b/doc/pddp/fexpr~-help.pd
new file mode 100644
index 00000000..79bce933
--- /dev/null
+++ b/doc/pddp/fexpr~-help.pd
@@ -0,0 +1,458 @@
+#N canvas 0 0 555 619 10;
+#X obj 0 595 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
+14 -228856 -66577 0;
+#X obj 0 0 cnv 15 552 40 empty \$0-pddp.cnv.header fexpr~ 3 12 0 18
+-204280 -1 0;
+#X obj 0 195 cnv 3 550 3 empty \$0-pddp.cnv.inlets inlets 8 12 0 13
+-228856 -1 0;
+#N canvas 51 244 494 344 META 0;
+#X text 12 110 PLATFORM windows macosx gnulinux;
+#X text 12 190 LIBRARY internal;
+#X text 12 210 AUTHOR Shahrokh Yadegari;
+#X text 12 230 WEBSITE http://crca.ucsd.edu/~syadegar/expr.html;
+#X text 13 290 HELP_PATCH_AUTHORS Updated for Pd 0.35 test 26 and expr*
+0.4. Jonathan Wilkes revised the patch to conform to the PDDP template
+for Pd version 0.42.;
+#X text 12 5 GENRE help;
+#X text 12 45 KEYWORDS signal nonlocal trigonometry;
+#X text 12 25 NAME fexpr~;
+#X text 12 150 INLET_N float symbol signal;
+#X text 12 130 INLET_0 signal;
+#X text 12 170 OUTLET_N signal;
+#X text 12 85 DESCRIPTION expression evaluation of signal data (sample
+level);
+#X text 12 250 RELEASE_DATE 2000;
+#X text 12 270 RELEASE_VERSION;
+#X text 12 65 LICENSE GPL v2;
+#X restore 500 597 pd META;
+#X obj 0 369 cnv 3 550 3 empty \$0-pddp.cnv.outlets outlets 8 12 0
+13 -228856 -1 0;
+#X obj 0 401 cnv 3 550 3 empty \$0-pddp.cnv.argument arguments 8 12
+0 13 -228856 -1 0;
+#X obj 0 489 cnv 3 550 3 empty \$0-pddp.cnv.more_info more_info 8 12
+0 13 -228856 -1 0;
+#N canvas 107 482 428 109 Related_objects 0;
+#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
+14 -204280 -1 0;
+#X obj 22 43 expr;
+#X text 8 2 [fexpr~] Related Objects;
+#X obj 62 43 expr~;
+#X restore 101 597 pd Related_objects;
+#X obj 78 204 cnv 17 3 35 empty \$0-pddp.cnv.let.0 0 5 9 0 16 -228856
+-162280 0;
+#X obj 78 378 cnv 17 3 17 empty \$0-pddp.cnv.let.n n 5 9 0 16 -228856
+-162280 0;
+#X obj 78 245 cnv 17 3 115 empty \$0-pddp.cnv.let.n n 5 9 0 16 -228856
+-162280 0;
+#X text 98 265 float;
+#X text 98 344 symbol;
+#X obj 143 577 pddplink http://crca.ucsd.edu/~syadegar/expr.html;
+#X text 143 563 Expr family of objects by Shahrokh Yadegari;
+#X text 98 203 signal;
+#X text 98 245 signal;
+#X text 98 377 signal;
+#X obj 480 3 fexpr~;
+#X obj 455 20 pddp/pddplink http://wiki.puredata.info/en/fexpr~ -text
+pdpedia: fexpr~;
+#X floatatom 240 67 0 0 0 0 - - -;
+#X floatatom 287 100 0 0 0 0 - - -;
+#X msg 287 69 -10;
+#X obj 152 167 dac~;
+#X text 141 45 Simple FIR filter;
+#X msg 108 66 start;
+#X msg 47 85 stop;
+#X obj 47 65 loadbang;
+#X msg 354 68 -20;
+#X obj 152 102 osc~ 2205;
+#X msg 189 67 1102.5;
+#X msg 152 67 2205;
+#X msg 321 68 0;
+#X text 316 95 If you change this;
+#X text 318 107 value you hear a click;
+#X obj 151 145 *~ 0.1;
+#N canvas 118 43 428 526 More_fexpr~_examples 0;
+#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
+14 -204280 -1 0;
+#X floatatom 87 236 0 0 0 0 - - -;
+#X floatatom 247 257 0 0 0 0 - - -;
+#X obj 83 306 dac~;
+#X obj 84 277 fexpr~ ($x1[$f2/1000]+$x1)/2;
+#X msg 316 187 0 10000;
+#X obj 247 238 line 0;
+#X msg 250 188 -10000;
+#X text 20 38 Simple FIR filter using fractional offset;
+#X msg 156 188 -10000 10000;
+#X obj 87 257 osc~ 2205;
+#X msg 96 213 1102.5;
+#X msg 314 212 0 10000;
+#X msg 248 213 -20000;
+#X msg 154 213 -20000 10000;
+#X msg 87 188 2205;
+#X msg 30 182 start;
+#X msg 31 228 stop;
+#X obj 31 206 loadbang;
+#X text 69 161 frequency;
+#X text 159 170 of the simple filter;
+#X text 158 158 index defining the frequency;
+#X text 20 106 Thus \, the offset -10000 will filter audio at frequency
+of 2205 and the offset value -20000 will filter the audio at frequency
+of 1102.5.;
+#X text 21 55 When fractional offset is used \, fexpr~ determines indexed
+by linear interpolation. In the following example the offset value
+is divided by 1000 \, thus we can continuously change the offset without
+an audible click in the output.;
+#X obj 90 495 print~;
+#X msg 220 461 bang;
+#X floatatom 90 388 0 0 0 0 - - -;
+#X obj 90 456 fexpr~ $x1+$y[-1];
+#X msg 23 383 start;
+#X msg 23 431 stop;
+#X obj 23 409 loadbang;
+#X text 128 359 simple accumulator defined as and an IIR filter;
+#X msg 219 389 set 4000;
+#X obj 90 410 sig~ 0.001;
+#X msg 220 412 clear;
+#X text 27 356 comment;
+#X text 19 345 1 first click the start button;
+#X text 8 2 [fexpr~] More examples;
+#X text 273 429 the clear button;
+#X text 262 413 2 click the set or;
+#X text 260 462 3 click bang to see how;
+#X text 272 477 set and clear work;
+#X connect 1 0 10 0;
+#X connect 2 0 4 1;
+#X connect 4 0 3 0;
+#X connect 4 0 3 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 7 0 6 0;
+#X connect 9 0 6 0;
+#X connect 10 0 4 0;
+#X connect 11 0 1 0;
+#X connect 12 0 6 0;
+#X connect 13 0 6 0;
+#X connect 14 0 6 0;
+#X connect 15 0 1 0;
+#X connect 16 0 4 0;
+#X connect 17 0 4 0;
+#X connect 18 0 17 0;
+#X connect 25 0 24 0;
+#X connect 26 0 33 0;
+#X connect 27 0 24 0;
+#X connect 28 0 27 0;
+#X connect 29 0 27 0;
+#X connect 30 0 29 0;
+#X connect 32 0 27 0;
+#X connect 33 0 27 0;
+#X connect 34 0 27 0;
+#X restore 281 503 pd More_fexpr~_examples;
+#N canvas 9 72 545 449 lorenz 0;
+#X obj 166 117 v pr;
+#X obj 297 118 v r;
+#X obj 223 119 v b;
+#X floatatom 166 88 5 0 0 0 - - -;
+#X floatatom 297 90 5 0 0 0 - - -;
+#X msg 167 63 10;
+#X obj 221 60 expr 8./3;
+#X msg 118 186 set 1.2 2.3 4.4;
+#X floatatom 223 89 7 0 0 0 - - -;
+#X msg 65 96 stop;
+#X msg 65 117 start;
+#X floatatom 359 90 5 0 0 0 - - -;
+#X obj 359 119 v dt;
+#X msg 300 62 18;
+#X msg 355 63 0.01;
+#X obj 58 346 dac~;
+#X obj 118 9 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X text 191 9 <- turn audio on and bang here;
+#X text 162 142 if you hear a buzz \, you have probably gone unstable
+bang on the top again;
+#X obj 399 65 line;
+#X obj 118 291 /~ 20;
+#X obj 224 288 /~ 20;
+#X obj 330 287 /~ 20;
+#X msg 399 39 0.01 \, 0.04 5000;
+#X obj 118 235 fexpr~ $y1+(pr*$y2-pr*$y1)*dt \; $y2 +(-$y1*$y3 + r*$y1-$y2)*dt
+\; $y3+($y1*$y2 - b*$y3)*dt;
+#X obj 4 115 loadbang;
+#X text 113 -50 This is an example of how fexpr~ could be used for
+solving differential equations \, in this case the lorenz equations
+which generate chotic signals;
+#X text 311 232 Note the following shorthands:;
+#X text 218 186 the 'set' commands sets the initial previous values
+;
+#X obj 118 348 tabsend~ lorenz1a;
+#X obj 224 328 tabsend~ lorenz2a;
+#X obj 329 309 tabsend~ lorenz3a;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array lorenz1a 64 float 0;
+#X coords 0 1 63 -1 100 60 1;
+#X restore 13 417 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array lorenz2a 64 float 0;
+#X coords 0 1 63 -1 100 60 1;
+#X restore 183 417 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array lorenz3a 64 float 0;
+#X coords 0 1 63 -1 100 60 1;
+#X restore 363 417 graph;
+#X text 191 365 You can see the graphs if you scroll down;
+#X text 191 378 but the redrawings may cause clicks in the audio;
+#X text 414 101 these numbers;
+#X text 395 89 <- experiment with;
+#X text 310 248 $y1 -> $y1[-1] \, $y2 -> $y2[-1] \, ...;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 24 0;
+#X connect 8 0 2 0;
+#X connect 9 0 24 0;
+#X connect 10 0 24 0;
+#X connect 11 0 12 0;
+#X connect 13 0 4 0;
+#X connect 14 0 11 0;
+#X connect 16 0 5 0;
+#X connect 16 0 6 0;
+#X connect 16 0 13 0;
+#X connect 16 0 14 0;
+#X connect 16 0 7 0;
+#X connect 16 0 10 0;
+#X connect 19 0 11 0;
+#X connect 20 0 29 0;
+#X connect 20 0 15 0;
+#X connect 20 0 15 1;
+#X connect 21 0 30 0;
+#X connect 22 0 31 0;
+#X connect 23 0 19 0;
+#X connect 24 0 20 0;
+#X connect 24 1 21 0;
+#X connect 24 2 22 0;
+#X connect 25 0 9 0;
+#X restore 281 524 pd lorenz equations for audition;
+#N canvas 12 59 536 519 lorenz 0;
+#X obj 166 67 v pr;
+#X obj 297 68 v r;
+#X obj 223 69 v b;
+#X floatatom 166 38 5 0 0 0 - - -;
+#X floatatom 297 40 5 0 0 0 - - -;
+#X msg 167 13 10;
+#X obj 221 10 expr 8./3;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array lorenz1 2048 float 0;
+#X coords 0 -1 2047 1 100 60 1;
+#X restore 72 447 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array lorenz2 2048 float 0;
+#X coords 0 -1 2047 1 100 60 1;
+#X restore 217 447 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array lorenz3 2048 float 0;
+#X coords 0 -1 2047 1 100 60 1;
+#X restore 370 447 graph;
+#X msg 118 136 set 1.2 2.3 4.4;
+#X floatatom 223 39 7 0 0 0 - - -;
+#X msg 65 46 stop;
+#X msg 65 67 start;
+#X floatatom 349 40 5 0 0 0 - - -;
+#X obj 349 69 v dt;
+#X msg 300 12 18;
+#X msg 345 13 0.01;
+#X obj 118 -41 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
+-1;
+#X text 191 -41 <- turn audio on and bang here;
+#X text 142 92 if you hear a buzz \, you have probably gone unstable
+bang on the top again;
+#X obj 389 15 line;
+#X obj 118 241 /~ 20;
+#X obj 224 238 /~ 20;
+#X obj 330 237 /~ 20;
+#X msg 389 -11 0.01 \, 0.04 5000;
+#X obj 4 65 loadbang;
+#X text 103 -100 This is an example of how fexpr~ could be used for
+solving differential equations \, in this case the lorenz equations
+which generate chotic signals;
+#X text 312 184 Note the following shorthands:;
+#X text 218 136 the 'set' commands sets the initial previous values
+;
+#X obj 118 298 tabsend~ lorenz1;
+#X obj 224 278 tabsend~ lorenz2;
+#X obj 329 259 tabsend~ lorenz3;
+#X obj 447 280 block~ 2048;
+#X text 136 333 Lorenz Equations;
+#X obj 118 185 fexpr~ $y1+pr * ($y2-$y1)*dt \; $y2 +(-$y1*$y3 + r*$y1-$y2)*dt
+\; $y3+($y1*$y2 - b*$y3)*dt;
+#X text 139 397 dZ/dt = -bZ;
+#X text 136 367 dX/dt = pr * (X - Y);
+#X text 135 347 written with 3 state variable X \, Y \, and Z;
+#X text 137 382 dY/dt = -XZ + rX - y;
+#X text 404 52 these numbers;
+#X text 385 39 <- experiment with;
+#X text 311 200 $y1 -> $y1[-1] \, $y2 -> $y2[-1] \, ...;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 3 0;
+#X connect 6 0 11 0;
+#X connect 10 0 35 0;
+#X connect 11 0 2 0;
+#X connect 12 0 35 0;
+#X connect 13 0 35 0;
+#X connect 14 0 15 0;
+#X connect 16 0 4 0;
+#X connect 17 0 14 0;
+#X connect 18 0 5 0;
+#X connect 18 0 6 0;
+#X connect 18 0 16 0;
+#X connect 18 0 17 0;
+#X connect 18 0 10 0;
+#X connect 18 0 13 0;
+#X connect 21 0 14 0;
+#X connect 22 0 30 0;
+#X connect 23 0 31 0;
+#X connect 24 0 32 0;
+#X connect 25 0 21 0;
+#X connect 26 0 12 0;
+#X connect 35 0 22 0;
+#X connect 35 1 23 0;
+#X connect 35 2 24 0;
+#X restore 281 545 pd lorenz equations for visualization;
+#X text 195 145 -10 offset will fully filter audio frequency of 2205
+\, and -20 offset will filter audio at frequency of 1102.5;
+#N canvas 9 230 428 130 CPU_usage 0;
+#X obj 0 0 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
+14 -204280 -1 0;
+#X text 7 1 [fexpr~] CPU Usage;
+#X text 19 37 NOTE: fexpr~ could use lots of CPU power \, by default
+fexpr~ is on when it is loaded. In this help patch we are turning them
+off with loadbang \, so to hear them you have to turn them on explicitly.
+You can use the "start" and "stop" messages to start and stop fexpr~
+;
+#X restore 8 167 pd CPU_usage;
+#X text 6 147 below:;
+#X text 6 111 Note: [fexpr~];
+#X text 6 123 can use lots;
+#X text 6 135 of CPU. Read;
+#X obj 152 124 fexpr~ ($x1[$f2]+$x1)/2;
+#X text 158 203 - the first inlet of [expr~] only accepts signals.
+For this reason \, you can't specify the $f1 or $s1 variables- only
+$x and $y variables are accepted.;
+#N canvas 39 43 508 524 $x_and_$y_variables 0;
+#X text 92 198 $y -> $y1[-1];
+#X text 20 167 Shorthands: $x -> $x1[0];
+#X text 92 183 $x1 -> $x1[0] $x2 -> $x2[0] .....;
+#X text 92 213 $y1 -> $y1[-1] $y2 -> $y2[-1] .....;
+#X text 45 403 e.g. \, set x2 3.4 0.4 sets x2[-1]=3.4 and x2[-2]=0.4
+;
+#X text 45 436 e.g. \, set y3 1.1 3.3 4.5 sets y3[-1]=1.1 y3[-2]=3.3
+and y3[-3]=4.5;
+#X text 45 361 e.g. \, set 0.1 2.2 0.4 sets y1[-1]=0.1 y2[-1]=2.2 \,
+and y3[-1]=0.4;
+#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
+14 -204280 -1 0;
+#X text 8 2 [fexpr~] $x and $y Variables;
+#X text 20 38 The following dollarsign variables are only used for
+fexpr~:;
+#X text 20 61 $x#[n];
+#X text 20 91 $x#;
+#X text 70 91 - $x# is a shorthand for $x#[0] \, specifying the current
+sample;
+#X text 70 61 - the sample from inlet # indexed by n where n has to
+satisfy 0 => n >= -vector size;
+#X text 20 121 $y[n];
+#X text 70 121 - the output value indexed by n where n has to satisfy
+0 > n >= -vector size. (The vector size can be changed by the "block~"
+object.);
+#X text 19 238 [fexpr~] responds to the following methods:;
+#X text 21 303 clear;
+#X text 81 303 - clears all the previous input and output buffers;
+#X text 21 318 clear x#;
+#X text 81 318 - clears the previous values of the #th input;
+#X text 21 333 clear y#;
+#X text 81 333 - clears the previous values of the #th output;
+#X text 21 348 set val val ...;
+#X text 121 348 - sets the first past values of each output;
+#X text 21 391 set x# val-1 val-2 ...;
+#X text 161 391 - sets the as many supplied values of the #th input
+;
+#X text 21 423 set y# val-1 val-2 ...;
+#X text 161 424 - sets the as many supplied values of the #th input
+;
+#X text 21 481 Note: The inlet number starts from one. There may be
+at most nine variables in one [fexpr~] object.;
+#X text 21 258 start;
+#X text 81 258 - start computation for a [fexpr~] object;
+#X text 81 273 - stop computation for a [fexpr~] object;
+#X text 21 273 stop;
+#X text 21 288 verbose;
+#X text 81 288 - toggle verbose mode;
+#X restore 160 321 pd $x_and_$y_variables;
+#X text 158 244 - an extra inlet is added for each dollar-sign variable
+used in the expression ($s2 \, $f3 \, etc.). Extra inlets accept only
+one of the following: signals \, floats \, or symbols. Each variable
+is denoted by a dollarsign \, an "f" for float \, "s" for symbol \,
+or an "x" or "y" as specified in the following subpatch:;
+#N canvas 118 44 428 479 fexpr~_and_symbols 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-expr-array 515 float 2;
+#X coords 0 1 515 -1 200 140 1;
+#X restore 24 329 graph;
+#X obj 240 386 loadbang;
+#X obj 105 176 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
+14 -204280 -1 0;
+#X text 117 239 of the array will be clipped;
+#X text 117 224 index values outside the range;
+#X text 20 116 The following syntax outputs the y-value for the element
+specified by the left inlet.;
+#X text 124 174 click here first;
+#X obj 105 196 symbol \$0-expr~-array;
+#X floatatom 24 266 5 0 0 0 - - -;
+#X text 21 37 Symbolic arguments like $s1 \, $s2 \, and so on are currently
+used in [expr] \, [expr~] \, and [fexpr~] to get the name of an array
+or table. You can also type the name of an array directly into [expr~]
+\, but this is limited since \, for example \, a dash ("e.g. \, my-table")
+will get interpreted as an operator ("e.g. \, my minus table").;
+#X text 8 2 [fexpr~] Using Symbolic Arguments;
+#X obj 24 224 expr $s2[$f1];
+#X floatatom 24 177 5 0 0 0 - - -;
+#X obj 240 412 f \$0;
+#X msg 240 438 \; \$1-expr-array sinesum 512 1;
+#X connect 1 0 14 0;
+#X connect 2 0 8 0;
+#X connect 8 0 12 1;
+#X connect 12 0 9 0;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X restore 160 344 pd fexpr~_and_symbols;
+#X text 11 23 expression evaluation of signal data (sample level);
+#X text 80 416 n) float;
+#X text 167 416 - the arguments themselves form the expression to evaluate.
+They may be floats or symbols \, including the special variables noted
+above ($x1 \, $f2 \, etc.). The operators and functions available for
+use in [fexpr~] are listed below:;
+#X text 98 428 symbol atom;
+#X obj 4 597 pddp/pddplink pddp/help.pd -text help;
+#X obj 455 51 pddp/dsp-reminder;
+#X obj 98 498 pddp/pddplink all_about_expr_if.pd -text expr_if;
+#X obj 98 518 pddp/pddplink all_about_expr_and_value.pd -text expr_and_value
+;
+#X obj 98 540 pddp/pddplink all_about_expr_multiline.pd -text expr_multiline
+;
+#X obj 167 468 pddp/pddplink all_about_expr_functions.pd -text all_about_expr_operators_and_functions
+;
+#X connect 20 0 29 0;
+#X connect 21 0 45 1;
+#X connect 22 0 21 0;
+#X connect 25 0 45 0;
+#X connect 26 0 45 0;
+#X connect 27 0 26 0;
+#X connect 28 0 21 0;
+#X connect 29 0 45 0;
+#X connect 30 0 29 0;
+#X connect 31 0 29 0;
+#X connect 32 0 21 0;
+#X connect 35 0 23 0;
+#X connect 35 0 23 1;
+#X connect 45 0 35 0;