aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/vasp
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/vasp')
-rw-r--r--externals/grill/vasp/changes.txt6
-rwxr-xr-xexternals/grill/vasp/max-ex/convolve2
-rw-r--r--externals/grill/vasp/pd-ex/convolve.pd278
-rw-r--r--externals/grill/vasp/pd-ex/freeze1.pd36
-rw-r--r--externals/grill/vasp/pd-help/vasp_qsum.pd50
-rw-r--r--externals/grill/vasp/pd/VASP-HELP.pd2312
-rw-r--r--externals/grill/vasp/pd/vasp.conv.pd32
-rw-r--r--externals/grill/vasp/pd/vasp.qmean.pd19
-rw-r--r--externals/grill/vasp/pd/vasp.rms.pd15
-rw-r--r--externals/grill/vasp/source/classes.cpp20
-rw-r--r--externals/grill/vasp/source/classes.h13
-rw-r--r--externals/grill/vasp/source/main.cpp4
-rw-r--r--externals/grill/vasp/source/obj_imm.cpp2
-rw-r--r--externals/grill/vasp/source/obj_part.cpp2
-rw-r--r--externals/grill/vasp/source/opfuns.h11
-rw-r--r--externals/grill/vasp/source/ops_arith.cpp44
-rw-r--r--externals/grill/vasp/source/ops_arith.h6
-rw-r--r--externals/grill/vasp/source/ops_dft.cpp2
-rw-r--r--externals/grill/vasp/source/ops_qminmax.cpp2
-rw-r--r--externals/grill/vasp/todo/vasp-objects.csv2
-rw-r--r--externals/grill/vasp/vasp.cwbin297352 -> 297352 bytes
21 files changed, 1513 insertions, 1345 deletions
diff --git a/externals/grill/vasp/changes.txt b/externals/grill/vasp/changes.txt
index 3838fa63..3d9cbcf7 100644
--- a/externals/grill/vasp/changes.txt
+++ b/externals/grill/vasp/changes.txt
@@ -5,7 +5,11 @@ Version history:
- FIX: bug for binary operations of complex vasps
- ADD: implemented (factor-4) loop unrolling for vector calculation loops
- CHANGE: completely restructured vector optimization and introduced multi-dimensional multi-layered functionality
-- ADD: attribute "zero" of vasp.size variants (default: true) - whether new samples shall be zeroed
+- ADD: vasp.size variants: attribute "zero" (default: true) - whether new samples shall be zeroed
+- ADD: vasp.sum? to get sum of sample values
+- ADD: all objects: attribute "defer" to queue outgoing vasps - to avoid stack faults for message loops
+- CHANGE: enable attributes "detach" and "prior" also for non-threaded builds to ensure patch compatibility
+- FIX: vasp.size - flext bug for @keep=1
0.1.2:
- FIX: bug in vasp.frames* ... wrong argument
diff --git a/externals/grill/vasp/max-ex/convolve b/externals/grill/vasp/max-ex/convolve
index 2d51766d..40032bb7 100755
--- a/externals/grill/vasp/max-ex/convolve
+++ b/externals/grill/vasp/max-ex/convolve
@@ -1 +1 @@
-max v2; #N vpatcher 3 47 870 744; #P newex 214 329 35 196617 print I; #P newex 149 226 30 196617 vasp; #P newex 214 302 40 196617 print B; #P newex 225 191 41 196617 print A; #P newex 149 324 38 196617 vasp.u; #P flonum 600 411 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 495 411 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P button 166 95 15 0; #P flonum 600 251 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 495 251 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 88 209 27 196617 t b i; #P newex 88 189 43 196617 vasp.f?; #P button 51 101 15 0; #N vpatcher 658 452 1058 752; #P origin 0 167; #P newex 45 148 43 196617 * 1000; #P newex 45 108 42 196617 / 1000; #P newex 45 127 27 196617 int; #P newex 26 46 20 196617 t b; #P outlet 34 240 15 0; #P inlet 147 33 15 0; #P inlet 85 29 15 0; #P inlet 24 27 15 0; #P message 45 176 35 196617 set \$1; #P newex 45 211 76 196617 pack 0. 0.; #P newex 126 77 40 196617 * 44.099998; #P newex 45 89 40 196617 * 44.099998; #P newex 45 67 29 196617 !- 0.; #P connect 5 0 9 0; #P connect 3 0 8 0; #P connect 6 0 0 0; #P connect 0 0 1 0; #P connect 1 0 11 0; #P connect 11 0 10 0; #P connect 10 0 12 0; #P connect 12 0 4 0; #P fasten 9 0 3 0 31 202 50 202; #P connect 4 0 3 0; #P connect 7 0 0 1; #P connect 2 0 3 1; #P connect 6 0 2 0; #P pop; #P newobj 37 147 41 196617 p sel; #N vpatcher 658 452 1058 752; #P origin 0 167; #P newex 26 46 20 196617 t b; #P outlet 34 183 15 0; #P inlet 147 33 15 0; #P inlet 85 29 15 0; #P inlet 24 27 15 0; #P message 45 114 35 196617 set \$1; #P newex 45 142 76 196617 pack 0. 0.; #P newex 133 93 40 196617 * 44.099998; #P newex 45 89 40 196617 * 44.099998; #P newex 45 67 29 196617 !- 0.; #P connect 5 0 9 0; #P connect 3 0 8 0; #P connect 6 0 0 0; #P connect 0 0 1 0; #P connect 1 0 4 0; #P connect 4 0 3 0; #P fasten 9 0 3 0 31 133 50 133; #P connect 7 0 0 1; #P connect 2 0 3 1; #P connect 6 0 2 0; #P pop; #P newobj 149 125 41 196617 p sel; #P user umenu 138 545 100 196647 1 64 561 1; #X add buf1; #X add buf2; #X add buf3; #P newex 138 564 60 196617 prepend set; #P user waveform~ 276 546 569 107 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 149 171 35 196617 vasp.n; #P newex 37 206 35 196617 vasp.n; #P toggle 130 57 15 0; #P newex 70 360 35 196617 vasp.n; #P message 138 592 32 196617 reset; #P newex 149 300 35 196617 vasp.f; #P newex 149 263 38 196617 vasp.s; #P newex 53 493 45 196617 vasp.opt; #P newex 70 403 35 196617 vasp.f; #P message 70 336 52 196617 vasp buf3; #N vpatcher 10 59 410 359; #P newex 60 231 53 196617 vasp.r!fft; #P newex 140 164 50 196617 vasp.rfft; #P newex 61 205 40 196617 vasp.*; #P newex 61 162 50 196617 vasp.rfft; #P outlet 59 259 15 0; #P inlet 147 58 15 0; #P inlet 61 58 15 0; #P connect 6 0 2 0; #P connect 4 0 6 0; #P connect 0 0 3 0; #P connect 3 0 4 0; #P connect 5 0 4 1; #P connect 1 0 5 0; #P pop; #P newobj 53 471 21 196617 p c; #P newex 36 545 31 196617 print; #P newex 37 520 38 196617 vasp.u; #P newex 70 381 38 196617 vasp.s; #P user waveform~ 276 436 569 107 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 276 417 45 196617 set buf3; #P message 458 49 42 196617 replace; #P newex 456 70 81 196617 buffer~ buf3 10; #P newex 37 426 43 196617 vasp.->; #P newex 173 197 35 196617 vasp.!; #P newex 69 240 35 196617 vasp.!; #P message 149 150 82 196617 vasp \$1 buf2 \$2; #P button 38 36 15 0; #P message 37 169 83 196617 vasp \$1 buf1 \$2; #P message 30 590 27 196617 stop; #P message 375 48 42 196617 replace; #P newex 373 69 65 196617 buffer~ buf2; #P user waveform~ 277 272 572 133 3 9; #W mode select; #W mouseoutput continuous; #W unit samples; #W grid 44100.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 277 253 45 196617 set buf2; #P message 31 572 32 196617 start; #P newex 82 578 35 196617 sig~ 1; #P user ezdac~ 70 642 114 675 0; #P newex 80 619 84 196617 xgroove~ 1 buf3; #P user waveform~ 277 123 570 121 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 277 104 45 196617 set buf1; #P message 278 48 42 196617 replace; #P newex 276 69 65 196617 buffer~ buf1; #P comment 147 57 100 196617 channel sel 0/1; #P connect 25 0 26 0; #P connect 15 0 42 0; #P connect 43 0 42 0; #P connect 42 0 14 0; #P connect 14 0 36 0; #P connect 36 0 19 0; #P connect 30 0 25 0; #P hidden connect 4 2 42 1; #P connect 27 0 30 0; #P hidden connect 35 0 36 1; #P hidden connect 4 3 42 2; #P connect 45 0 28 0; #P connect 28 0 34 0; #P connect 34 0 24 0; #P connect 24 0 29 0; #P connect 29 0 19 1; #P connect 5 0 6 0; #P connect 33 0 5 0; #P connect 13 0 5 0; #P connect 7 0 5 0; #P connect 8 0 5 0; #P connect 39 0 5 0; #P connect 14 0 44 0; #P connect 44 0 45 0; #P hidden fasten 35 0 34 1 135 355 100 355; #P connect 45 1 29 1; #P connect 45 1 24 1; #P connect 5 1 6 1; #P connect 40 1 39 0; #P connect 48 0 41 0; #P connect 15 0 41 0; #P connect 41 0 16 0; #P connect 16 0 37 0; #P connect 45 0 54 0; #P connect 54 0 31 0; #P connect 31 0 32 0; #P connect 32 0 51 0; #P hidden connect 10 2 41 1; #P connect 37 0 54 1; #P hidden connect 35 0 37 1; #P connect 45 1 32 1; #P connect 45 1 31 1; #P hidden connect 10 3 41 2; #P connect 31 0 53 0; #P connect 45 1 55 0; #P connect 16 0 52 0; #P connect 2 0 1 0; #P hidden connect 20 1 22 0; #P connect 22 0 23 0; #P hidden connect 1 1 3 0; #P connect 3 0 4 0; #P hidden connect 11 1 9 0; #P connect 9 0 10 0; #P connect 12 0 11 0; #P connect 21 0 20 0; #P connect 4 2 46 0; #P connect 10 2 49 0; #P connect 4 3 47 0; #P connect 10 3 50 0; #P hidden connect 38 5 23 4; #P hidden connect 23 5 38 4; #P pop; \ No newline at end of file
+max v2; #N vpatcher 3 47 870 744; #P message 507 49 34 196617 write; #N vpatcher 385 272 785 572; #P outlet 29 147 15 0; #P inlet 90 40 15 0; #P inlet 29 42 15 0; #P newex 28 108 35 196617 vasp.f; #P newex 28 71 38 196617 vasp.s; #P connect 2 0 0 0; #P connect 0 0 1 0; #P connect 1 0 4 0; #P connect 3 0 1 1; #P connect 3 0 0 1; #P pop; #P newobj 70 392 25 196617 p sf; #N vpatcher 385 272 785 572; #P outlet 29 147 15 0; #P inlet 90 40 15 0; #P inlet 29 42 15 0; #P newex 28 108 35 196617 vasp.f; #P newex 28 71 38 196617 vasp.s; #P connect 2 0 0 0; #P connect 0 0 1 0; #P connect 1 0 4 0; #P connect 3 0 1 1; #P connect 3 0 0 1; #P pop; #P newobj 149 265 25 196617 p sf; #P newex 149 226 30 196617 vasp; #P flonum 600 411 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 495 411 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P button 166 95 15 0; #P flonum 600 251 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 495 251 73 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 88 214 27 196617 t b i; #P newex 88 189 43 196617 vasp.f?; #P button 51 101 15 0; #N vpatcher 658 452 1058 752; #P origin 0 167; #P newex 45 148 43 196617 * 1000; #P newex 45 108 42 196617 / 1000; #P newex 45 127 27 196617 int; #P newex 26 46 20 196617 t b; #P outlet 34 240 15 0; #P inlet 147 33 15 0; #P inlet 85 29 15 0; #P inlet 24 27 15 0; #P message 45 176 35 196617 set \$1; #P newex 45 211 76 196617 pack 0. 0.; #P newex 126 77 40 196617 * 44.099998; #P newex 45 89 40 196617 * 44.099998; #P newex 45 67 29 196617 !- 0.; #P connect 5 0 9 0; #P connect 3 0 8 0; #P connect 6 0 0 0; #P connect 0 0 1 0; #P connect 1 0 11 0; #P connect 11 0 10 0; #P connect 10 0 12 0; #P connect 12 0 4 0; #P connect 4 0 3 0; #P fasten 9 0 3 0 31 202 50 202; #P connect 7 0 0 1; #P connect 2 0 3 1; #P connect 6 0 2 0; #P pop; #P newobj 37 147 41 196617 p sel; #N vpatcher 658 452 1058 752; #P origin 0 167; #P newex 26 46 20 196617 t b; #P outlet 34 183 15 0; #P inlet 147 33 15 0; #P inlet 85 29 15 0; #P inlet 24 27 15 0; #P message 45 114 35 196617 set \$1; #P newex 45 142 76 196617 pack 0. 0.; #P newex 133 93 40 196617 * 44.099998; #P newex 45 89 40 196617 * 44.099998; #P newex 45 67 29 196617 !- 0.; #P connect 5 0 9 0; #P connect 3 0 8 0; #P connect 6 0 0 0; #P connect 0 0 1 0; #P connect 1 0 4 0; #P fasten 9 0 3 0 31 133 50 133; #P connect 4 0 3 0; #P connect 7 0 0 1; #P connect 2 0 3 1; #P connect 6 0 2 0; #P pop; #P newobj 149 125 41 196617 p sel; #P user umenu 138 545 100 196647 1 64 561 1; #X add buf1; #X add buf2; #X add buf3; #P newex 138 564 60 196617 prepend set; #P user waveform~ 276 546 569 107 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 149 171 35 196617 vasp.n; #P newex 37 206 35 196617 vasp.n; #P toggle 130 57 15 0; #P newex 70 360 35 196617 vasp.n; #P message 138 592 32 196617 reset; #P newex 53 493 45 196617 vasp.opt; #P message 56 335 52 196617 vasp buf3; #P newex 53 471 54 196617 vasp.conv; #P newex 36 545 31 196617 print; #P newex 37 520 38 196617 vasp.u; #P user waveform~ 276 436 569 107 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 276 417 45 196617 set buf3; #P message 458 49 42 196617 replace; #P newex 456 70 81 196617 buffer~ buf3 10; #P newex 37 426 43 196617 vasp.->; #P message 149 150 82 196617 vasp \$1 buf2 \$2; #P button 38 36 15 0; #P message 37 169 83 196617 vasp \$1 buf1 \$2; #P message 30 590 27 196617 stop; #P message 375 48 42 196617 replace; #P newex 373 69 65 196617 buffer~ buf2; #P user waveform~ 277 272 572 133 3 9; #W mode select; #W mouseoutput continuous; #W unit samples; #W grid 44100.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 277 253 45 196617 set buf2; #P message 31 572 32 196617 start; #P newex 82 578 35 196617 sig~ 1; #P user ezdac~ 70 642 114 675 0; #P newex 80 619 84 196617 xgroove~ 1 buf3; #P user waveform~ 277 123 570 121 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 0; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 33 0 0; #W brgb 60 178 173; #W rgb2 0 95 255; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 190 137 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 277 104 45 196617 set buf1; #P message 278 48 42 196617 replace; #P newex 276 69 65 196617 buffer~ buf1; #P comment 147 57 100 196617 channel sel 0/1; #P newex 168 202 35 196617 vasp.!; #P connect 23 0 24 0; #P connect 16 0 37 0; #P connect 38 0 37 0; #P connect 37 0 15 0; #P connect 15 0 31 0; #P connect 31 0 18 0; #P connect 27 0 23 0; #P hidden connect 5 2 37 1; #P connect 18 1 25 0; #P connect 25 0 27 0; #P fasten 40 0 26 0 93 258 61 258; #P hidden connect 30 0 31 1; #P hidden connect 5 3 37 2; #P connect 26 0 29 0; #P connect 29 0 48 0; #P connect 48 0 18 1; #P connect 6 0 7 0; #P connect 34 0 6 0; #P connect 9 0 6 0; #P connect 8 0 6 0; #P connect 14 0 6 0; #P connect 28 0 6 0; #P fasten 40 1 48 1 110 383 90 383; #P connect 15 0 39 0; #P connect 39 0 40 0; #P hidden fasten 30 0 29 1 135 355 100 355; #P fasten 47 0 25 1 154 454 102 454; #P connect 35 1 34 0; #P connect 16 0 36 0; #P connect 43 0 36 0; #P connect 36 0 17 0; #P connect 17 0 32 0; #P fasten 40 0 46 0 93 258 126 258 126 219 154 219; #P connect 46 0 47 0; #P hidden connect 11 2 36 1; #P connect 40 1 47 1; #P connect 32 0 0 0; #P connect 0 0 46 1; #P hidden connect 30 0 32 1; #P hidden connect 11 3 36 2; #P connect 3 0 2 0; #P hidden connect 19 1 21 0; #P connect 21 0 22 0; #P hidden connect 2 1 4 0; #P connect 4 0 5 0; #P hidden connect 12 1 10 0; #P connect 10 0 11 0; #P connect 13 0 12 0; #P connect 49 0 19 0; #P connect 20 0 19 0; #P connect 5 2 41 0; #P connect 11 2 44 0; #P connect 5 3 42 0; #P connect 11 3 45 0; #P hidden connect 33 5 22 4; #P hidden connect 22 5 33 4; #P pop; \ No newline at end of file
diff --git a/externals/grill/vasp/pd-ex/convolve.pd b/externals/grill/vasp/pd-ex/convolve.pd
index b579a8a4..954a5512 100644
--- a/externals/grill/vasp/pd-ex/convolve.pd
+++ b/externals/grill/vasp/pd-ex/convolve.pd
@@ -1,136 +1,142 @@
-#N canvas 410 154 646 423 12;
-#X obj 60 241 bng 50 250 50 0 start_bang empty start 0 -6 160 8 -24198
--1 -1;
-#X text 15 77 load/save/play etc.;
-#X obj 179 125 nbx 8 16 0 1e+08 0 0 len_src empty empty 0 -8 32 12
--225271 -1 -1 4e+06 256;
-#X text 275 137 (defines the size of the result);
-#X obj 177 179 nbx 8 16 0 1e+08 0 0 len_arg empty empty 0 -8 32 12
--225271 -1 -1 4e+06 256;
-#X obj 32 122 wedit buf_src;
-#X obj 30 176 wedit buf_arg;
-#X obj 33 350 wedit buf_res;
-#X text 122 255 start convolution;
-#X obj 177 356 bng 15 250 50 0 empty empty empty 0 -6 32 8 -258699
--1 -1;
-#X obj 201 357 nbx 8 16 0 1e+08 0 0 len_arg empty empty 0 -8 160 12
--261689 -1 -1 4e+06 256;
-#X obj 11 10 cnv 15 600 50 empty empty convolve 10 22 32 24 -260818
--1 0;
-#X text 178 42 http://www.parasitaere-kapazitaeten.net;
-#X text 179 11 fft-based convolution \, (C)2003 Thomas Grill;
-#X text 179 26 needs vasp and wedit;
-#X text 32 329 result buffer;
-#X text 31 102 source buffer;
-#X text 29 157 argument buffer;
-#X text 278 124 length of source (samples);
-#X text 276 178 length of argument (samples);
-#N canvas 0 22 510 318 do 0;
-#X obj 29 215 vasp.u;
-#N canvas 406 75 510 584 convolve 0;
-#X obj 29 195 vasp.!;
-#X obj 107 280 vasp.conv;
-#X obj 107 311 t a a;
-#X obj 185 344 vasp.f?;
-#X obj 188 372 t b f;
-#X obj 108 482 vasp.->;
-#X obj 195 140 vasp.!;
-#X obj 102 170 vasp.f?;
-#X obj 29 131 t a b a;
-#X obj 194 111 vasp;
-#X obj 28 106 vasp;
-#N canvas 0 22 458 308 sf 0;
-#X obj 39 178 outlet;
-#X obj 38 43 inlet;
-#X obj 41 79 vasp.s;
-#X obj 120 43 inlet;
-#X obj 39 118 vasp.f;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 2 1;
-#X connect 3 0 4 1;
-#X connect 4 0 0 0;
-#X restore 194 211 pd sf;
-#N canvas 0 22 452 302 sf 0;
-#X obj 39 178 outlet;
-#X obj 38 43 inlet;
-#X obj 41 79 vasp.s;
-#X obj 120 43 inlet;
-#X obj 39 118 vasp.f;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 3 0 2 1;
-#X connect 3 0 4 1;
-#X connect 4 0 0 0;
-#X restore 187 437 pd sf;
-#X obj 107 406 vasp.opt;
-#X obj 210 405 vasp;
-#X obj 26 46 inlet;
-#X obj 132 51 inlet;
-#X obj 221 50 inlet;
-#X obj 313 50 inlet;
-#X obj 107 538 outlet;
-#X text 26 15 bang;
-#X text 126 21 src1;
-#X text 218 20 src2;
-#X text 313 22 dst;
-#X text 10 217 copy to temp;
-#X text 192 158 copy to temp;
-#X text 164 537 dst;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 2 0 13 0;
-#X connect 2 1 3 0;
-#X connect 3 0 4 0;
-#X connect 4 0 14 0;
-#X connect 4 1 12 1;
-#X connect 5 1 19 0;
-#X connect 6 0 11 0;
-#X connect 7 0 11 1;
-#X connect 8 0 0 0;
-#X connect 8 1 9 0;
-#X connect 8 2 7 0;
-#X connect 9 0 6 0;
-#X connect 10 0 8 0;
-#X connect 11 0 1 1;
-#X connect 12 0 5 1;
-#X connect 13 0 5 0;
-#X connect 14 0 12 0;
-#X connect 15 0 10 0;
-#X connect 16 0 10 1;
-#X connect 17 0 9 1;
-#X connect 18 0 14 1;
-#X restore 28 186 pd convolve;
-#X obj 26 52 t b b;
-#X obj 43 127 vasp.f;
-#X msg 43 94 vasp buf_src;
-#X msg 154 93 vasp buf_arg;
-#X msg 267 92 vasp buf_res;
-#X obj 306 220 table buf_src 10;
-#X obj 307 242 table buf_arg 10;
-#X obj 307 264 table buf_res 10;
-#X obj 26 23 r start_bang;
-#X obj 143 21 r len_src;
-#X obj 229 24 r len_arg;
-#X obj 153 126 vasp.f;
-#X obj 27 278 outlet;
-#X obj 29 251 vasp.f?;
-#X text 85 215 update buffer;
-#X connect 0 0 15 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X connect 2 1 4 0;
-#X connect 2 1 5 0;
-#X connect 2 1 6 0;
-#X connect 3 0 1 1;
-#X connect 4 0 3 0;
-#X connect 5 0 13 0;
-#X connect 6 0 1 3;
-#X connect 10 0 2 0;
-#X connect 11 0 3 1;
-#X connect 12 0 13 1;
-#X connect 13 0 1 2;
-#X connect 15 0 14 0;
-#X restore 177 324 pd do;
-#X connect 20 0 9 0;
-#X connect 20 0 10 0;
+#N canvas 292 80 642 419 12;
+#X obj 60 241 bng 50 250 50 0 start_bang empty start 0 -6 128 8 -24198
+-1 -1;
+#X text 15 77 load/save/play etc.;
+#X obj 364 125 nbx 8 16 0 1e+008 0 0 len_src empty empty 0 -8 128 12
+-225271 -1 -1 0 256;
+#X text 367 142 (defines the size of the result);
+#X obj 362 179 nbx 8 16 0 1e+008 0 0 len_arg empty empty 0 -8 128 12
+-225271 -1 -1 0 256;
+#X obj 24 122 wedit buf_src;
+#X obj 23 176 wedit buf_arg;
+#X obj 33 350 wedit buf_res;
+#X text 122 255 start convolution;
+#X obj 177 356 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+-1;
+#X obj 201 357 nbx 8 16 0 1e+008 0 0 len_arg empty empty 0 -8 128 12
+-261689 -1 -1 3.21297e+006 256;
+#X obj 11 10 cnv 15 600 50 empty empty convolve 10 22 0 24 -260818
+-1 0;
+#X text 202 41 http://www.parasitaere-kapazitaeten.net;
+#X text 203 10 fft-based convolution \, (C)2003 Thomas Grill;
+#X text 203 25 needs vasp and wedit;
+#X text 32 329 result buffer;
+#X text 140 121 source buffer;
+#X text 137 175 argument buffer;
+#N canvas 0 0 470 320 do 0;
+#X obj 29 215 vasp.u;
+#N canvas 406 75 399 494 convolve 0;
+#X obj 57 343 vasp.conv;
+#X obj 199 183 vasp.!;
+#X obj 108 191 vasp.f?;
+#X obj 198 154 vasp;
+#X obj 28 69 vasp;
+#N canvas 0 0 458 308 sf 0;
+#X obj 39 178 outlet;
+#X obj 38 43 inlet;
+#X obj 41 79 vasp.s;
+#X obj 120 43 inlet;
+#X obj 39 118 vasp.f;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 3 0 4 1;
+#X connect 4 0 0 0;
+#X restore 197 254 pd sf;
+#X obj 59 380 vasp.opt;
+#X obj 68 227 vasp;
+#X obj 29 39 inlet;
+#X obj 132 51 inlet;
+#X obj 221 50 inlet;
+#X obj 313 50 inlet;
+#X obj 45 458 outlet;
+#X text 26 15 bang;
+#X text 126 21 src1;
+#X text 218 20 src2;
+#X text 313 22 dst;
+#X text 196 201 copy to temp;
+#X text 102 457 dst;
+#N canvas 0 0 454 304 sf 0;
+#X obj 39 178 outlet;
+#X obj 38 43 inlet;
+#X obj 41 79 vasp.s;
+#X obj 120 43 inlet;
+#X obj 39 118 vasp.f;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 3 0 4 1;
+#X connect 4 0 0 0;
+#X restore 68 255 pd sf;
+#X obj 30 296 vasp.->;
+#X obj 31 408 vasp.radio;
+#X obj 29 94 t a b a;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 2 0 5 1;
+#X connect 2 0 19 1;
+#X connect 3 0 1 0;
+#X connect 4 0 22 0;
+#X connect 5 0 0 1;
+#X connect 6 0 21 0;
+#X connect 7 0 19 0;
+#X connect 8 0 4 0;
+#X connect 9 0 4 1;
+#X connect 10 0 3 1;
+#X connect 11 0 7 1;
+#X connect 19 0 20 1;
+#X connect 20 1 0 0;
+#X connect 21 1 12 0;
+#X connect 22 0 20 0;
+#X connect 22 1 3 0;
+#X connect 22 1 7 0;
+#X connect 22 2 2 0;
+#X restore 28 186 pd convolve;
+#X obj 26 52 t b b;
+#X msg 154 93 vasp buf_arg;
+#X msg 267 92 vasp buf_res;
+#X obj 306 220 table buf_src 10;
+#X obj 307 242 table buf_arg 10;
+#X obj 307 264 table buf_res 10;
+#X obj 26 23 r start_bang;
+#X obj 143 21 r len_src;
+#X obj 229 24 r len_arg;
+#X obj 27 278 outlet;
+#X obj 29 251 vasp.f?;
+#X text 85 215 update buffer;
+#X obj 147 159 vasp.f;
+#X obj 43 157 vasp.f;
+#X msg 45 93 vasp buf_src;
+#X obj 141 51 r off_src;
+#X obj 227 54 r off_arg;
+#X obj 43 125 vasp.o;
+#X obj 147 127 vasp.o;
+#X connect 0 0 12 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 2 1 4 0;
+#X connect 2 1 16 0;
+#X connect 3 0 20 0;
+#X connect 4 0 1 3;
+#X connect 8 0 2 0;
+#X connect 9 0 15 1;
+#X connect 10 0 14 1;
+#X connect 12 0 11 0;
+#X connect 14 0 1 2;
+#X connect 15 0 1 1;
+#X connect 16 0 19 0;
+#X connect 17 0 19 1;
+#X connect 18 0 20 1;
+#X connect 19 0 15 0;
+#X connect 20 0 14 0;
+#X restore 177 324 pd do;
+#X obj 267 125 nbx 8 16 0 1e+008 0 0 off_src empty empty 0 -8 128 12
+-225271 -1 -1 0 256;
+#X obj 265 179 nbx 8 16 0 1e+008 0 0 off_arg empty empty 0 -8 128 12
+-225271 -1 -1 0 256;
+#X text 383 103 length;
+#X text 288 100 offset;
+#X text 286 78 range in samples;
+#X connect 18 0 9 0;
+#X connect 18 0 10 0;
diff --git a/externals/grill/vasp/pd-ex/freeze1.pd b/externals/grill/vasp/pd-ex/freeze1.pd
index c24eeb61..0e1cbd7d 100644
--- a/externals/grill/vasp/pd-ex/freeze1.pd
+++ b/externals/grill/vasp/pd-ex/freeze1.pd
@@ -1,5 +1,5 @@
-#N canvas 33 61 975 511 12;
-#N canvas 387 42 567 656 freeze 0;
+#N canvas 33 61 977 513 12;
+#N canvas 387 42 569 658 freeze 0;
#X obj 26 130 vasp.split 2;
#X obj 27 404 vasp.join 2;
#X obj 27 74 vasp.cfft @detach 1;
@@ -17,27 +17,27 @@
#X obj 381 17 inlet;
#X obj 162 591 outlet;
#X obj 29 536 vasp.opt;
-#N canvas 0 0 456 306 non0 0;
-#X obj 26 162 outlet;
-#X obj 27 105 length;
-#X obj 28 133 / 1;
+#N canvas 238 212 458 308 non0 0;
+#X obj 58 187 outlet;
+#X obj 60 158 / 1;
#X obj 26 21 inlet;
#X obj 26 49 t a a;
-#X obj 179 80 vasp.f?;
-#X obj 26 80 vasp.?? @detach 1;
-#X connect 1 0 2 0;
-#X connect 2 0 0 0;
-#X connect 3 0 4 0;
-#X connect 4 0 6 0;
-#X connect 4 1 5 0;
-#X connect 5 0 2 1;
-#X connect 6 0 1 0;
+#X obj 234 77 vasp.f?;
+#X obj 26 80 vasp.!= 0 @detach 1;
+#X obj 27 109 vasp.sum?;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 4 0;
+#X connect 4 0 1 1;
+#X connect 5 0 6 0;
+#X connect 6 1 1 0;
#X restore 161 498 pd non0;
#X obj 29 509 vasp.n 0;
#X obj 302 45 + 100;
#X obj 326 117 expr pow(2. \, -$f1/1200);
#X obj 300 76 dbtorms;
-#N canvas 445 282 474 324 cplx 0;
+#N canvas 445 282 476 326 cplx 0;
#X obj 19 229 vasp.join;
#X obj 19 73 t a b a;
#X obj 149 137 vasp.f?;
@@ -186,7 +186,7 @@
#X obj 105 115 nbx 12 18 0 1e+008 0 1 empty empty length(frames) 0
-8 0 12 -225271 -1 -1 1e+006 256;
#X obj 85 368 nbx 9 14 -1e+037 1e+037 0 0 empty empty spectral_density
-0 -6 0 10 -262131 -1 -1 0.009812 256;
+0 -6 0 10 -262131 -1 -1 0 256;
#X obj 332 197 cnv 15 100 20 empty empty play_src 5 8 0 10 -261681
-66577 0;
#X obj 447 197 cnv 15 100 20 empty empty read_src 5 8 0 10 -261681
@@ -250,7 +250,7 @@
#X connect 3 0 0 1;
#X connect 3 1 4 0;
#X restore 614 251 pd playdst;
-#N canvas 249 202 527 470 copy 0;
+#N canvas 249 202 529 472 copy 0;
#X obj 27 26 inlet;
#X obj 27 51 t b b;
#X obj 316 19 inlet;
diff --git a/externals/grill/vasp/pd-help/vasp_qsum.pd b/externals/grill/vasp/pd-help/vasp_qsum.pd
new file mode 100644
index 00000000..691e07b2
--- /dev/null
+++ b/externals/grill/vasp/pd-help/vasp_qsum.pd
@@ -0,0 +1,50 @@
+#N canvas 80 113 823 442 10;
+#X obj 71 32 cnv 15 15 15 empty empty vasp.sum? 0 10 1 14 -262144 -1
+0;
+#N canvas 40 55 281 170 clear_buffer 0;
+#X obj 54 79 vasp.update;
+#X obj 54 56 vasp.= 0;
+#X obj 54 26 inlet;
+#X obj 54 108 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X restore 468 280 pd clear_buffer;
+#N canvas 0 0 450 300 graph1 0;
+#X array bufqsum 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 339 115 graph;
+#N canvas 0 0 396 272 init 0;
+#X obj 33 19 loadbang;
+#X msg 33 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
+66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
+1;
+#X msg 33 45 symbol bufqsum;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X restore 615 284 pd init;
+#X obj 73 144 vasp.osc 44100;
+#X obj 73 165 vasp.* 0.5;
+#X obj 73 191 vasp.update;
+#X floatatom 99 309 7 0 0 0 - - -;
+#X obj 76 387 VASP-HELP;
+#X text 68 58 get sum of sample values of a vasp;
+#X text 70 75 right outlet: sum of sample values;
+#X msg 73 123 vasp bufqsum;
+#X msg 468 257 vasp bufqsum;
+#X msg 75 258 vasp bufqsum;
+#X obj 75 278 vasp.sum?;
+#X text 150 309 >>>> sum;
+#X floatatom 281 310 7 0 0 0 - - -;
+#X msg 281 261 vasp bufqsum;
+#X text 330 308 >>>> RMS value;
+#X obj 280 285 vasp.rms;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 11 0 4 0;
+#X connect 12 0 1 0;
+#X connect 13 0 14 0;
+#X connect 14 1 7 0;
+#X connect 17 0 19 0;
+#X connect 19 0 16 0;
diff --git a/externals/grill/vasp/pd/VASP-HELP.pd b/externals/grill/vasp/pd/VASP-HELP.pd
index f60f4199..787dc60a 100644
--- a/externals/grill/vasp/pd/VASP-HELP.pd
+++ b/externals/grill/vasp/pd/VASP-HELP.pd
@@ -1,1155 +1,1157 @@
-#N canvas 193 23 624 685 10;
-#X obj 104 47 cnv 15 15 15 empty empty vasp_modular 0 10 1 14 -262144
--1 0;
-#X obj 61 37 cnv 2 2 2 empty 2-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 37 cnv 2 2 2 empty 2-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 37 cnv 2 2 2 empty 2-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 37 cnv 2 2 2 empty 2-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 37 cnv 2 2 2 empty 2-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 37 cnv 2 2 2 empty 2-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 37 cnv 2 2 2 empty 2-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 37 cnv 2 2 2 empty 2-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 37 cnv 2 2 2 empty 2-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 37 cnv 2 2 2 empty 2-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 37 cnv 2 2 2 empty 2-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 37 cnv 2 2 2 empty 2-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 37 cnv 2 2 2 empty 2-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 37 cnv 2 2 2 empty 2-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 37 cnv 2 2 2 empty 2-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 39 cnv 2 2 2 empty 3-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 39 cnv 2 2 2 empty 3-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 39 cnv 2 2 2 empty 3-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 39 cnv 2 2 2 empty 3-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 39 cnv 2 2 2 empty 3-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 39 cnv 2 2 2 empty 3-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 39 cnv 2 2 2 empty 3-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 39 cnv 2 2 2 empty 3-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 39 cnv 2 2 2 empty 3-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 39 cnv 2 2 2 empty 3-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 39 cnv 2 2 2 empty 3-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 39 cnv 2 2 2 empty 3-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 39 cnv 2 2 2 empty 3-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 39 cnv 2 2 2 empty 3-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 39 cnv 2 2 2 empty 3-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 41 cnv 2 2 2 empty 4-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 41 cnv 2 2 2 empty 4-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 41 cnv 2 2 2 empty 4-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 41 cnv 2 2 2 empty 4-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 41 cnv 2 2 2 empty 4-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 41 cnv 2 2 2 empty 4-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 41 cnv 2 2 2 empty 4-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 41 cnv 2 2 2 empty 4-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 41 cnv 2 2 2 empty 4-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 41 cnv 2 2 2 empty 4-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 41 cnv 2 2 2 empty 4-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 41 cnv 2 2 2 empty 4-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 41 cnv 2 2 2 empty 4-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 41 cnv 2 2 2 empty 4-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 41 cnv 2 2 2 empty 4-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 43 cnv 2 2 2 empty 5-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 43 cnv 2 2 2 empty 5-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 43 cnv 2 2 2 empty 5-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 43 cnv 2 2 2 empty 5-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 43 cnv 2 2 2 empty 5-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 43 cnv 2 2 2 empty 5-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 43 cnv 2 2 2 empty 5-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 43 cnv 2 2 2 empty 5-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 43 cnv 2 2 2 empty 5-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 43 cnv 2 2 2 empty 5-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 43 cnv 2 2 2 empty 5-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 43 cnv 2 2 2 empty 5-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 43 cnv 2 2 2 empty 5-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 43 cnv 2 2 2 empty 5-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 43 cnv 2 2 2 empty 5-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 45 cnv 2 2 2 empty 6-1-r empty 20 12 64 14 -1 -262144 0;
-#X obj 63 45 cnv 2 2 2 empty 6-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 45 cnv 2 2 2 empty 6-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 45 cnv 2 2 2 empty 6-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 45 cnv 2 2 2 empty 6-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 45 cnv 2 2 2 empty 6-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 45 cnv 2 2 2 empty 6-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 45 cnv 2 2 2 empty 6-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 45 cnv 2 2 2 empty 6-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 45 cnv 2 2 2 empty 6-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 45 cnv 2 2 2 empty 6-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 45 cnv 2 2 2 empty 6-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 45 cnv 2 2 2 empty 6-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 45 cnv 2 2 2 empty 6-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 45 cnv 2 2 2 empty 6-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 47 cnv 2 2 2 empty 7-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 47 cnv 2 2 2 empty 7-2-r empty 20 12 64 14 -1 -262144 0;
-#X obj 65 47 cnv 2 2 2 empty 7-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 47 cnv 2 2 2 empty 7-4-r empty 20 12 64 14 -1 -262144 0;
-#X obj 69 47 cnv 2 2 2 empty 7-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 47 cnv 2 2 2 empty 7-6-r empty 20 12 64 14 -1 -262144 0;
-#X obj 73 47 cnv 2 2 2 empty 7-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 47 cnv 2 2 2 empty 7-8-r empty 20 12 64 14 -1 -262144 0;
-#X obj 77 47 cnv 2 2 2 empty 7-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 47 cnv 2 2 2 empty 7-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 47 cnv 2 2 2 empty 7-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 47 cnv 2 2 2 empty 7-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 47 cnv 2 2 2 empty 7-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 47 cnv 2 2 2 empty 7-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 47 cnv 2 2 2 empty 7-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 49 cnv 2 2 2 empty 8-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 49 cnv 2 2 2 empty 8-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 49 cnv 2 2 2 empty 8-3-r empty 20 12 64 14 -1 -262144 0;
-#X obj 67 49 cnv 2 2 2 empty 8-4-r empty 20 12 64 14 -1 -262144 0;
-#X obj 69 49 cnv 2 2 2 empty 8-5-r empty 20 12 64 14 -1 -262144 0;
-#X obj 71 49 cnv 2 2 2 empty 8-6-r empty 20 12 64 14 -1 -262144 0;
-#X obj 73 49 cnv 2 2 2 empty 8-7-r empty 20 12 64 14 -1 -262144 0;
-#X obj 75 49 cnv 2 2 2 empty 8-8-r empty 20 12 64 14 -1 -262144 0;
-#X obj 77 49 cnv 2 2 2 empty 8-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 49 cnv 2 2 2 empty 8-10-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 81 49 cnv 2 2 2 empty 8-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 49 cnv 2 2 2 empty 8-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 49 cnv 2 2 2 empty 8-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 49 cnv 2 2 2 empty 8-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 49 cnv 2 2 2 empty 8-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 51 cnv 2 2 2 empty 9-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 51 cnv 2 2 2 empty 9-2-r empty 20 12 64 14 -1 -262144 0;
-#X obj 65 51 cnv 2 2 2 empty 9-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 51 cnv 2 2 2 empty 9-4-r empty 20 12 64 14 -1 -262144 0;
-#X obj 69 51 cnv 2 2 2 empty 9-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 51 cnv 2 2 2 empty 9-6-r empty 20 12 64 14 -1 -262144 0;
-#X obj 73 51 cnv 2 2 2 empty 9-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 51 cnv 2 2 2 empty 9-8-r empty 20 12 64 14 -1 -262144 0;
-#X obj 77 51 cnv 2 2 2 empty 9-9-r empty 20 12 64 14 -1 -262144 0;
-#X obj 79 51 cnv 2 2 2 empty 9-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 51 cnv 2 2 2 empty 9-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 51 cnv 2 2 2 empty 9-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 51 cnv 2 2 2 empty 9-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 51 cnv 2 2 2 empty 9-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 51 cnv 2 2 2 empty 9-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 53 cnv 2 2 2 empty 10-1-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 63 53 cnv 2 2 2 empty 10-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 53 cnv 2 2 2 empty 10-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 53 cnv 2 2 2 empty 10-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 53 cnv 2 2 2 empty 10-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 53 cnv 2 2 2 empty 10-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 53 cnv 2 2 2 empty 10-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 53 cnv 2 2 2 empty 10-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 53 cnv 2 2 2 empty 10-9-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 79 53 cnv 2 2 2 empty 10-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 53 cnv 2 2 2 empty 10-11-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 83 53 cnv 2 2 2 empty 10-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 53 cnv 2 2 2 empty 10-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 53 cnv 2 2 2 empty 10-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 53 cnv 2 2 2 empty 10-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 55 cnv 2 2 2 empty 11-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 55 cnv 2 2 2 empty 11-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 55 cnv 2 2 2 empty 11-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 55 cnv 2 2 2 empty 11-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 55 cnv 2 2 2 empty 11-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 55 cnv 2 2 2 empty 11-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 55 cnv 2 2 2 empty 11-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 55 cnv 2 2 2 empty 11-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 55 cnv 2 2 2 empty 11-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 55 cnv 2 2 2 empty 11-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 55 cnv 2 2 2 empty 11-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 55 cnv 2 2 2 empty 11-12-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 85 55 cnv 2 2 2 empty 11-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 55 cnv 2 2 2 empty 11-14-r empty 20 12 64 14 -1 -262144 0
-;
-#X obj 89 55 cnv 2 2 2 empty 11-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 57 cnv 2 2 2 empty 12-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 57 cnv 2 2 2 empty 12-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 57 cnv 2 2 2 empty 12-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 57 cnv 2 2 2 empty 12-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 57 cnv 2 2 2 empty 12-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 57 cnv 2 2 2 empty 12-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 57 cnv 2 2 2 empty 12-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 57 cnv 2 2 2 empty 12-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 57 cnv 2 2 2 empty 12-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 57 cnv 2 2 2 empty 12-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 57 cnv 2 2 2 empty 12-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 57 cnv 2 2 2 empty 12-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 57 cnv 2 2 2 empty 12-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 57 cnv 2 2 2 empty 12-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 57 cnv 2 2 2 empty 12-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 59 cnv 2 2 2 empty 13-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 59 cnv 2 2 2 empty 13-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 59 cnv 2 2 2 empty 13-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 59 cnv 2 2 2 empty 13-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 59 cnv 2 2 2 empty 13-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 59 cnv 2 2 2 empty 13-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 59 cnv 2 2 2 empty 13-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 59 cnv 2 2 2 empty 13-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 59 cnv 2 2 2 empty 13-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 59 cnv 2 2 2 empty 13-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 59 cnv 2 2 2 empty 13-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 59 cnv 2 2 2 empty 13-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 59 cnv 2 2 2 empty 13-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 59 cnv 2 2 2 empty 13-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 59 cnv 2 2 2 empty 13-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 61 61 cnv 2 2 2 empty 14-1-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 63 61 cnv 2 2 2 empty 14-2-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 65 61 cnv 2 2 2 empty 14-3-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 67 61 cnv 2 2 2 empty 14-4-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 69 61 cnv 2 2 2 empty 14-5-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 71 61 cnv 2 2 2 empty 14-6-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 73 61 cnv 2 2 2 empty 14-7-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 75 61 cnv 2 2 2 empty 14-8-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 77 61 cnv 2 2 2 empty 14-9-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 79 61 cnv 2 2 2 empty 14-10-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 81 61 cnv 2 2 2 empty 14-11-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 83 61 cnv 2 2 2 empty 14-12-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 85 61 cnv 2 2 2 empty 14-13-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 87 61 cnv 2 2 2 empty 14-14-r empty 20 12 64 14 -225271 -262144
-0;
-#X obj 89 61 cnv 2 2 2 empty 14-15-r empty 20 12 64 14 -225271 -262144
-0;
-#X text 54 90 vasp modular - vector assembling signal processor ©2002
-thomas grill;
-#X text 54 123 vasp is a library of objects for max/msp and pd \, containing
-functions to generate and modify vectors as well as buffer content
-in a non-realtime context.;
-#X text 54 169 vasp objects are using a specialized message syntax
-for all objects to refer to a buffer or a part of it.;
-#X text 55 248 some reference patches need the prepend object of the
-IEMlib;
-#X text 55 565 inspired by guenther rabl's fftbox and NMS4. find guenther
-rabl at www.canto-crudo.com;
-#X text 54 602 vasp help patches for MaxMSP by florian bogner and oliver
-grimm - ©2002 patcherboys;
-#X text 55 639 revised & extended version for PD by marius schebella
-- www.parasitaere-kapazitaeten.net/vasp;
-#X text 54 202 the help patches should give you an idea of what is
-possible. feel free to combine different patches to more complex ones.
-;
-#X text 76 291 (very) quick overview;
-#N canvas 131 125 831 564 quickstart 0;
-#X text 86 223 How to use:;
-#X obj 292 270 bng 15 250 50 0 1displays 1displayr empty 0 -6 192 8
--24198 -1 -1;
-#X text 320 269 1) Have a messagebox with the name of the array.;
-#X obj 292 317 bng 15 250 50 0 2displays 2displayr empty 0 -6 192 8
--24198 -1 -1;
-#X obj 292 400 bng 15 250 50 0 3displays 3displayr empty 0 -6 192 8
--24198 -1 -1;
-#N canvas 323 136 534 533 inside 0;
-#X obj 144 38 r 1displays;
-#X obj 176 281 delay 500;
-#X obj 144 156 r 2displays;
-#X obj 144 80 change;
-#X msg 144 59 1;
-#X obj 144 198 change;
-#X msg 144 177 1;
-#X msg 144 101 bang;
-#X msg 144 221 bang;
-#X obj 64 327 change;
-#X msg 64 306 1;
-#X obj 64 284 r 3displays;
-#X obj 64 349 t b b b;
-#X obj 315 37 table buffer1;
-#X text 314 55 (dummy-table);
-#X msg 144 122 \; pd-quickstart msg 130 270 vasp buffer1;
-#X msg 144 244 \; pd-quickstart obj 130 320 vasp.shift 100;
-#X msg 108 374 \; pd-quickstart msg 130 370 vasp buffer1;
-#X msg 82 411 \; pd-quickstart obj 130 400 vasp.update;
-#X msg 176 302 \; pd-quickstart connect 13 0 14 0;
-#X msg 64 452 \; pd-quickstart connect 15 0 16 0;
-#X connect 0 0 4 0;
-#X connect 1 0 19 0;
-#X connect 2 0 6 0;
-#X connect 3 0 7 0;
-#X connect 4 0 3 0;
-#X connect 5 0 8 0;
-#X connect 6 0 5 0;
-#X connect 7 0 15 0;
-#X connect 8 0 16 0;
-#X connect 8 0 1 0;
-#X connect 9 0 12 0;
-#X connect 10 0 9 0;
-#X connect 11 0 10 0;
-#X connect 12 0 20 0;
-#X connect 12 1 18 0;
-#X connect 12 2 17 0;
-#X restore 716 65 pd inside;
-#X text 87 54 The vasp modular system does calculation on buffers.
-;
-#X text 322 316 2) Connect it to a vasp-object-box that determines
-the processing algorithm.;
-#X text 323 374 3) At that point \, after clicking the message-box
-\, data processing is executed. To display the new vasp in the graph
-you may want to update the graphic display.;
-#X text 86 89 Vasp works "out of time" \, it does not relay on the
-usual blocksizes of Pd. A vasp algorithm can be assigned to any buffer
-size according to your own definition \, for example the whole sound-data
-of an array.;
-#X text 86 156 There is a general help-patch called "VASP-HELP" \,
-and there is a reference-patch for every vasp object.;
-#X text 233 241 (CLICK GREEN BUTTONS);
-#X text 85 481 Have a look at this help for detailed information about
-the syntax and the available objects and features.;
-#X restore 232 292 pd quickstart;
-#X text 108 324 the vasp message;
-#N canvas 10 33 986 670 syntax 0;
-#X text 76 52 the vasp message:;
-#X obj 75 20 cnv 15 15 15 empty empty vasp_syntax 0 10 1 14 -262144
--1 0;
-#N canvas 0 0 405 218 init 0;
-#X obj 33 19 loadbang;
-#X msg 33 99 \; \$1 xticks 0 4410 5 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 33 45 symbol buf1 \, symbol buf2 \, sysymbol buf1 \, symbol
-buf2 \, symbol buf3 \, symbol buf4 \, symbol buf5 \, symbol buf6 \,
-symbol buf7 \, symbol buf8 \, symbol buf9;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 827 44 pd init;
-#X obj 73 92 cnv 15 800 450 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 469 241 (default 0);
-#X text 515 185 which does the same.;
-#X msg 462 184 vasp -1;
-#X msg 222 270 vasp 44100 buf1 22050 0;
-#X text 110 271 and the channel;
-#X msg 317 241 vasp 44100 buf1 22050;
-#X text 110 243 an optional offset in samples;
-#X msg 365 214 vasp 44100 buf1;
-#X text 110 216 the name of the buffer it refers to;
-#X msg 347 158 vasp 44100;
-#X text 110 161 followed by the length in samples;
-#X msg 266 132 vasp;
-#X text 89 102 - a vasp message is structured by the following parts:
-;
-#X text 110 135 it always starts with;
-#X text 110 450 set all samples of buf1 to 0;
-#X text 110 384 generate a sine wave at 2Hz;
-#X msg 311 451 vasp buf1;
-#X obj 311 497 vasp.update;
-#X obj 311 473 vasp.= 0;
-#X obj 310 412 vasp.update;
-#X obj 310 383 vasp.osc 22050;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf1 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 498 403 graph;
-#X msg 310 323 vasp 44100 buf1 22050 0;
-#X text 110 325 one vectored vasp message:;
-#X obj 73 582 cnv 15 800 480 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 138 890 set all samples of buf1 and buf2 to 0;
-#X msg 275 910 vasp buf2 buf3;
-#X obj 275 956 vasp.update;
-#X obj 275 932 vasp.= 0;
-#X obj 274 846 vasp.update;
-#X obj 274 816 vasp.osc 22050;
-#X text 139 993 a vasp message can contain as many vectors as you like
-\, but all vectors have the same length;
-#X msg 274 714 vasp 44100 buf2 0 0 buf3 22050;
-#X text 110 689 two vectored vasp message:;
-#X text 110 633 all vectors have the same length \, but the vectors
-can differ in the buffers and offsets;
-#X text 89 597 - if a vasp message contains more than one vector:;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf2 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 477 754 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf3 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 478 878 graph;
-#X text 110 184 if missing \, it refers to the whole buffer \, or type
-;
-#X text 139 1028 different vectors of a vasp are processed in parallel
-or as pairs for complex operations respectively.;
-#X obj 860 1077 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X text 336 339 (CLICK HERE);
-#X text 377 451 (CLICK HERE);
-#X text 326 736 (CLICK HERE);
-#X text 470 683 referring to buffer buf1 from 0 sec to 1 sec on channel
-0 and buffer buf2 from 0.5 sec to 1.5 sec on channel 0;
-#X text 354 934 (CLICK HERE);
-#X text 393 271 (default 0 \, it is only used in Max/MSP);
-#X text 453 342 referring to buffer buf1 from 0.5sec to 1.5sec on channel
-0;
-#X connect 20 0 22 0;
-#X connect 22 0 21 0;
-#X connect 24 0 23 0;
-#X connect 26 0 24 0;
-#X connect 30 0 32 0;
-#X connect 32 0 31 0;
-#X connect 34 0 33 0;
-#X connect 36 0 34 0;
-#X restore 232 325 pd syntax;
-#X text 88 357 additional messages;
-#N canvas 30 20 964 685 moremessages 0;
-#X obj 59 74 cnv 15 800 330 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X obj 330 342 vasp.* 0.5;
-#X text 128 192 set all samples of buf1 to 0;
-#X obj 330 374 vasp.update;
-#X obj 330 316 vasp.noise;
-#X msg 330 191 vasp buf4;
-#X obj 330 243 vasp.update;
-#X obj 330 217 vasp.= 0;
-#X obj 330 159 vasp.update;
-#X obj 330 133 vasp.osc 22050;
-#X msg 330 290 vasp buf5;
-#X text 470 92 sets the message \, bang triggers the operation;
-#X text 68 29 additional vasp messages:;
-#X msg 330 92 set vasp 44100 buf4;
-#X text 107 92 - set:;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf4 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 503 145 graph;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf5 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 504 269 graph;
-#X obj 286 108 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 107 115 - bang:;
-#X obj 60 662 cnv 15 800 290 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 108 688 - update:;
-#X msg 233 726 update 1;
-#X msg 297 726 update 0;
-#X msg 361 690 vasp buf7;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf7 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 521 699 graph;
-#X obj 651 903 vasp.update;
-#X obj 392 752 random 10;
-#X obj 392 778 * 0.1;
-#X msg 651 877 vasp buf7;
-#X obj 361 716 t a b;
-#X obj 60 975 cnv 15 800 290 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 134 998 - detach:;
-#X text 233 839 with argument 1 or 0 you can turn automatic display-update
-on or off (default is off).;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf8 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 525 1088 graph;
-#X obj 297 1231 vasp.u;
-#X obj 297 1205 vasp.opt;
-#X obj 297 1178 vasp.rfft;
-#X msg 297 1074 vasp buf8;
-#X msg 225 1095 detach 1;
-#X text 238 998 use multithreading;
-#X msg 162 1095 detach 0;
-#X obj 59 1290 cnv 15 800 300 empty empty empty 20 12 0 14 -241339
--66577 0;
-#X text 127 1321 - radio:;
-#X obj 845 1762 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
-0;
-#X obj 59 430 cnv 15 800 210 empty empty empty 20 12 0 14 -241339 -66577
-0;
-#X text 129 556 set all samples of buf5/6 to 0;
-#X msg 351 559 vasp buf5 buf6;
-#X obj 351 611 vasp.update;
-#X obj 351 585 vasp.= 0;
-#X msg 351 470 to vasp buf6 \, vasp buf5;
-#X obj 351 522 vasp.update;
-#X text 143 474 sets the target buffer buf6;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf6 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 515 515 graph;
-#X text 113 448 - to:;
-#X msg 192 1537 radio update 1;
-#X msg 187 1386 radio detach 1;
-#X text 149 1536 also:;
-#X obj 297 1497 vasp.u;
-#N canvas 0 0 450 300 graph1 0;
-#X array buf9 88200 float 0;
-#X coords 0 1 88199 -1 300 100 1;
-#X restore 526 1398 graph;
-#X msg 297 1367 vasp buf9;
-#X obj 351 496 vasp.*osc 22100;
-#X text 45 497 and modulate the noise with a 2Hz sine wave;
-#X text 233 875 if automatic update is turned off \, you explicitely
-have to update the display with the object vasp.update;
-#X obj 361 806 vasp.=;
-#X text 237 1019 this very useful switch can put the vasp-calculation
-into the background and (try to) avoid dropouts in the Pd-DSP-processing.
-1 = on \, 0 = off.;
-#X obj 297 1125 vasp.noise;
-#X obj 297 1149 vasp.flp 100;
-#X text 392 1147 low pass filter;
-#X text 383 1125 generate noise;
-#X text 235 1321 radio messages are passed to/through all vasp objects
-of an object chain;
-#X obj 297 1422 vasp.xwindow lin;
-#X obj 297 1466 vasp.sqr;
-#X text 354 1465 square it;
-#X text 355 1439 make linear window;
-#X text 69 45 set \, bang \, to \, update \, detach \, help;
-#X obj 61 1624 cnv 15 800 130 empty empty empty 20 12 0 14 -241339
--66577 0;
-#X text 127 1636 - help:;
-#X msg 240 1676 help;
-#X obj 240 1709 vasp.??;
-#X msg 323 1676 help;
-#X obj 323 1709 vasp.s/;
-#X text 236 1637 print out a short description of the object;
-#X text 376 1177 real fft;
-#X connect 1 0 3 0;
-#X connect 4 0 1 0;
-#X connect 5 0 7 0;
-#X connect 7 0 6 0;
-#X connect 9 0 8 0;
-#X connect 10 0 4 0;
-#X connect 13 0 9 0;
-#X connect 17 0 9 0;
-#X connect 21 0 63 0;
-#X connect 22 0 63 0;
-#X connect 23 0 29 0;
-#X connect 26 0 27 0;
-#X connect 27 0 63 1;
-#X connect 28 0 25 0;
-#X connect 29 0 63 0;
-#X connect 29 1 26 0;
-#X connect 35 0 34 0;
-#X connect 36 0 35 0;
-#X connect 37 0 65 0;
-#X connect 38 0 36 0;
-#X connect 38 0 66 0;
-#X connect 38 0 65 0;
-#X connect 40 0 36 0;
-#X connect 40 0 66 0;
-#X connect 40 0 65 0;
-#X connect 46 0 48 0;
-#X connect 48 0 47 0;
-#X connect 49 0 60 0;
-#X connect 55 0 70 0;
-#X connect 59 0 70 0;
-#X connect 60 0 50 0;
-#X connect 65 0 66 0;
-#X connect 66 0 36 0;
-#X connect 70 0 71 0;
-#X connect 71 0 57 0;
-#X connect 77 0 78 0;
-#X connect 79 0 80 0;
-#X restore 232 356 pd moremessages;
-#X text 107 389 the vasp objects;
-#N canvas 57 40 410 445 objects 0;
-#X obj 59 28 cnv 15 15 15 empty empty vasp_objects 0 10 1 14 -262144
--1 0;
-#N canvas 343 209 509 292 fftobjects 0;
-#X obj 281 103 vasp.r!fft;
-#X obj 281 71 vasp.rfft;
-#X obj 72 160 vasp.polar;
-#X obj 72 103 vasp.c!fft;
-#X obj 72 71 vasp.cfft;
-#X text 145 160 changes between cartesian and polar representation
-;
-#X text 358 103 inverse real fft;
-#X text 145 71 complex fft;
-#X text 145 103 inverse complex fft;
-#X text 358 71 real fft;
-#X text 145 213 changes between polar and cartesian representation
-;
-#X obj 72 212 vasp.rect;
-#X obj 35 22 cnv 15 15 15 empty empty fftobjects 0 10 1 14 -262144
--1 0;
-#X restore 71 206 pd fftobjects;
-#N canvas 386 9 605 635 arithmetic 0;
-#X obj 354 138 vasp.c!-;
-#X text 149 135 reverse subtraction;
-#X obj 76 136 vasp.!-;
-#X text 437 421 integral function;
-#X text 437 444 differential function;
-#X obj 362 448 vasp.dif;
-#X obj 362 422 vasp.int;
-#X obj 361 346 vasp.r+;
-#X text 414 350 radius offset;
-#X obj 354 216 vasp.c!/;
-#X text 150 213 reverse division;
-#X obj 76 214 vasp.!/;
-#X obj 355 250 vasp.c=;
-#X obj 354 190 vasp.c/;
-#X obj 354 164 vasp.c*;
-#X obj 354 112 vasp.c-;
-#X obj 354 86 vasp.c+;
-#X obj 76 578 vasp.sign;
-#X obj 76 552 vasp.%;
-#X obj 76 526 vasp.abs;
-#X obj 76 500 vasp.!=;
-#X obj 76 474 vasp.==;
-#X obj 76 344 vasp.>=;
-#X obj 76 318 vasp.<=;
-#X obj 76 292 vasp.>;
-#X obj 76 266 vasp.<;
-#X obj 76 240 vasp.=;
-#X obj 76 188 vasp./;
-#X obj 76 162 vasp.*;
-#X obj 76 110 vasp.-;
-#X obj 76 84 vasp.+;
-#X text 150 338 vasp >= x;
-#X text 150 315 vasp >= x;
-#X text 150 292 vasp > x;
-#X text 150 269 vasp < x;
-#X text 151 473 equal to;
-#X text 152 161 multiplication;
-#X text 149 187 division;
-#X text 150 106 subtraction;
-#X text 153 499 not equal to;
-#X text 153 551 modulo (remainder of a division);
-#X text 151 525 absolute value of a vasp;
-#X text 150 83 addition;
-#X text 354 62 complex ....;
-#X text 150 239 vasp = x;
-#X text 152 577 values < 0 become -1 | values > 0 become 1;
-#X text 361 322 radius ....;
-#X obj 35 22 cnv 15 15 15 empty empty arithmetic 0 10 1 14 -262144
--1 0;
-#X obj 355 276 vasp.cconj;
-#X obj 76 370 vasp.a<;
-#X obj 76 396 vasp.a>;
-#X obj 76 422 vasp.a<=;
-#X obj 76 448 vasp.a>=;
-#X text 149 369 abs(vasp) < abs(x);
-#X text 149 392 abs(vasp) > abs(x);
-#X text 149 444 abs(vasp) >= abs(x);
-#X text 149 421 abs(vasp) <= abs(x);
-#X restore 72 128 pd arithmetic;
-#N canvas 197 195 744 308 generators 0;
-#X obj 389 194 vasp.*cosc;
-#X obj 389 138 vasp.*phasor;
-#X obj 389 110 vasp.*osc;
-#X obj 72 222 vasp.cnoise;
-#X obj 72 194 vasp.cosc;
-#X obj 72 166 vasp.noise;
-#X obj 72 138 vasp.phasor;
-#X obj 72 110 vasp.osc;
-#X text 72 67 generate .....;
-#X text 166 165 vasp noise generator;
-#X text 166 134 vasp saw tooth generator;
-#X text 166 109 vasp sine wave generator;
-#X text 166 226 complex noise;
-#X text 166 190 complex sine wave;
-#X obj 35 22 cnv 15 15 15 empty empty generators 0 10 1 14 -262144
--1 0;
-#X text 366 67 multiply a buffer content with the oscillator functions
-...;
-#X restore 72 179 pd generators;
-#N canvas 510 190 355 349 filters 0;
-#X obj 53 107 vasp.flp;
-#X obj 53 77 vasp.fhp;
-#X text 157 111 low pass;
-#X text 157 80 high pass;
-#X obj 35 22 cnv 15 15 15 empty empty filters 0 10 1 14 -262144 -1
-0;
-#X obj 52 205 vasp.rvalleys;
-#X obj 52 238 vasp.rpeaks;
-#X text 156 205 radius valleys;
-#X text 156 238 radius peaks;
-#X obj 52 173 vasp.peaks;
-#X obj 52 140 vasp.valleys;
-#X text 156 175 local peaks of a vasp;
-#X text 156 142 local minima of a vasp;
-#X restore 71 255 pd filters;
-#N canvas 306 143 560 383 displace 0;
-#X text 158 163 rotate buffer content symmetrically;
-#X obj 80 164 vasp.xrot;
-#X obj 80 232 vasp.xmirr;
-#X obj 80 197 vasp.mirr;
-#X obj 80 132 vasp.rot;
-#X obj 80 97 vasp.xshift;
-#X obj 80 62 vasp.shift;
-#X text 158 231 mirrors a vasp symmetrically;
-#X text 158 196 mirrors a vasp;
-#X text 158 61 shifts the buffer content;
-#X text 158 131 rotate buffer content;
-#X obj 35 22 cnv 15 15 15 empty empty displace 0 10 1 14 -262144 -1
-0;
-#X text 157 96 shifts the buffer content symmetrically;
-#X obj 80 275 vasp.tilt;
-#X obj 80 316 vasp.xtilt;
-#X text 160 274 resamples around a center position;
-#X text 160 310 buffer is divided in two symmetrical halves and each
-one is resampled around a center position;
-#X restore 71 230 pd displace;
-#N canvas 206 180 677 313 transcendent 0;
-#X text 403 97 complex sample^2;
-#X text 403 67 complex integer power function;
-#X text 145 195 square root;
-#X text 145 226 signed sample^2;
-#X obj 329 66 vasp.cpowi;
-#X obj 329 96 vasp.csqr;
-#X obj 73 257 vasp.ssqrt;
-#X obj 73 226 vasp.ssqr;
-#X obj 73 194 vasp.sqrt;
-#X obj 73 164 vasp.sqr;
-#X obj 73 134 vasp.pow;
-#X text 145 257 signed square root;
-#X text 145 135 samps^x;
-#X text 145 165 sample^2;
-#X obj 329 142 vasp.rpow;
-#X text 396 143 radius power function;
-#X obj 73 102 vasp.log;
-#X obj 73 66 vasp.exp;
-#X text 145 102 logarithm;
-#X text 145 66 exponential;
-#X obj 35 22 cnv 15 15 15 empty empty transcendent 0 10 1 14 -262144
--1 0;
-#X restore 72 153 pd transcendent;
-#N canvas 236 197 680 327 minmax_etc. 0;
-#X obj 422 250 vasp.rmin;
-#X obj 422 218 vasp.rmax;
-#X text 511 250 radius minimum;
-#X text 511 219 radius maximum;
-#X obj 76 250 vasp.min;
-#X obj 76 218 vasp.max;
-#X obj 76 187 vasp.max?;
-#X obj 76 156 vasp.min?;
-#X obj 76 125 vasp.amax?;
-#X obj 76 94 vasp.amin?;
-#X obj 422 187 vasp.rmax?;
-#X obj 422 156 vasp.rmin?;
-#X obj 76 62 vasp.minmax;
-#X text 167 250 minimum of vasp and argument;
-#X text 167 219 maximum of vasp and argument;
-#X text 167 156 output min. value of a vasp;
-#X text 167 187 output max. value of a vasp;
-#X text 167 125 output max. absolute value of a vasp;
-#X text 167 94 output min. absolute value of a vasp;
-#X text 511 187 radius max. value;
-#X text 511 156 radius min. value;
-#X text 167 65 splits a vasp into minimum and maximum values;
-#X obj 35 22 cnv 15 15 15 empty empty minmax 0 10 1 14 -262144 -1 0
-;
-#X restore 71 279 pd minmax_etc.;
-#N canvas 229 139 538 399 window-functions 0;
-#X obj 59 28 cnv 15 15 15 empty empty window-functions 0 10 1 14 -262144
--1 0;
-#X obj 77 92 vasp.window;
-#X obj 77 125 vasp.xwindow;
-#X obj 77 159 vasp.!window;
-#X obj 116 255 vasp.*window;
-#X obj 116 289 vasp.*xwindow;
-#X obj 116 318 vasp.*!window;
-#X text 188 122 symmetrical window;
-#X text 188 90 left part of symmetrical window;
-#X text 190 160 right part of symmetrical window;
-#X text 77 212 multiply...;
-#X restore 71 303 pd window-functions;
-#N canvas 188 241 510 401 utilities 0;
-#X obj 77 143 vasp.cnorm;
-#X obj 80 321 vasp.pwrap;
-#X obj 80 265 vasp.opt;
-#X obj 77 64 vasp.gate;
-#X text 158 265 optimize buffer content;
-#X text 157 64 gates vasp under a value (amplitude);
-#X text 158 143 sets complex radius of all samples to unity;
-#X obj 80 292 vasp.ropt;
-#X text 157 294 radius optimize;
-#X obj 77 90 vasp.rgate;
-#X text 158 90 radius gate;
-#X text 158 321 wraps value from 0-2 to -1 to 1;
-#X obj 59 28 cnv 15 15 15 empty empty utilities 0 10 1 14 -262144 -1
-0;
-#X obj 77 115 vasp.fix;
-#X obj 76 173 vasp.radio;
-#X text 73 226 abstractions:;
-#X text 158 115 fix NAN (not a number) values;
-#X text 157 172 filter radio messages;
-#X restore 71 326 pd utilities;
-#N canvas 173 -1 652 692 declaration 0;
-#X obj 68 42 cnv 15 15 15 empty empty declaration 0 10 1 14 -262144
--1 0;
-#X text 184 148 get a vector of a vasp;
-#X obj 84 152 vasp.vector;
-#X text 184 179 get the number of vectors of a vasp;
-#X obj 84 180 vasp.vectors?;
-#X text 184 207 set a vasp's offset(s) into the vector buffers;
-#X obj 84 208 vasp.offset;
-#X text 184 235 shift a vasp's offset(s) into the vector buffers;
-#X obj 84 236 vasp.offset+;
-#X text 184 263 get a single vectored vasp's offset(s) into the buffer
-;
-#X obj 84 264 vasp.offset?;
-#X obj 84 292 vasp.offset=;
-#X text 184 319 set a vasps frame count;
-#X obj 84 320 vasp.frames;
-#X text 184 349 raise/lower a vasps frame count;
-#X obj 84 348 vasp.frames+;
-#X text 184 374 get a vasps frame count;
-#X obj 84 376 vasp.frames?;
-#X obj 84 404 vasp.frames*;
-#X obj 84 432 vasp.frames/;
-#X obj 84 460 vasp.frames=;
-#X obj 84 488 vasp.size;
-#X obj 84 516 vasp.size+;
-#X obj 84 544 vasp.size*;
-#X obj 84 600 vasp.size?;
-#X obj 84 572 vasp.size/;
-#X obj 84 628 vasp.channel;
-#X obj 84 656 vasp.channel?;
-#X obj 84 124 vasp;
-#X text 184 123 store and output a vasp;
-#X text 184 405 change a vasps frame count by multiplication;
-#X text 184 430 change a vasps frame count by division;
-#X text 184 486 set the size of an array/buffer;
-#X text 186 517 raise the size of an array/buffer;
-#X text 186 542 change the size of an array/buffer by multiplication
-;
-#X text 185 603 get the size of a vasp;
-#X text 185 578 change the size of an array/buffer by division;
-#X text 186 658 get the channel of a multichannel vasp (MaxMSP only)
-;
-#X text 186 633 define the channel of a multichannel vasp (MAXMSP only)
-;
-#X text 55 84 (get help on right click/help just as usual);
-#X text 184 291 set a vasp's offset by searching for a value;
-#X text 184 461 change a vasp's frame count by searching for a value
-;
-#X restore 72 78 pd declaration;
-#N canvas 238 51 544 560 basics 0;
-#X text 173 122 check vasp dimensions;
-#X obj 73 122 vasp.check;
-#X text 173 162 sync 2 or more vasps;
-#X obj 73 162 vasp.sync;
-#X text 173 142 update the graphics of a patcher (e.g. waveform);
-#X obj 73 142 vasp.update;
-#X text 173 182 output a vasp multiply;
-#X obj 73 182 vasp.multi;
-#X text 173 228 split a vasp into its vectors;
-#X obj 73 228 vasp.split 2;
-#X text 173 248 join several vasps into one;
-#X obj 73 248 vasp.join 2;
-#X text 173 268 spit out vectors of a vasp (one vector after the other)
-;
-#X obj 73 268 vasp.spit;
-#X text 173 288 gather several vasps into one;
-#X obj 73 288 vasp.gather;
-#X text 173 308 output vasps with different lengths and offsets;
-#X obj 73 308 vasp.part;
-#X text 174 412 output the samples of a vasp as list;
-#X obj 74 412 vasp.?;
-#X text 174 431 output all non zero samples of a vasp as list;
-#X obj 74 432 vasp.??;
-#X obj 71 64 cnv 15 15 15 empty empty basics 0 10 1 14 -262144 -1 0
-;
-#X obj 73 328 vasp.->;
-#X text 173 328 copy a vasp into another one;
-#X text 173 348 copy a complex vasp;
-#X obj 73 348 vasp.c->;
-#X obj 75 469 vasp.!;
-#X text 175 469 create a temporary vasp (immediate);
-#X restore 72 103 pd basics;
-#X restore 232 387 pd objects;
-#X text 149 418 envelopes;
-#N canvas 39 33 908 540 envelopes 0;
-#N canvas 40 55 255 173 clear_buffer 0;
-#X obj 59 79 vasp.update;
-#X obj 59 56 vasp.= 0;
-#X obj 59 26 inlet;
-#X connect 1 0 0 0;
-#X connect 2 0 1 0;
-#X restore 497 300 pd clear_buffer;
-#N canvas 0 0 450 300 graph167 0;
-#X array bufenv1 88200 float 0;
-#X coords 0 1 88199 -1 300 120 1;
-#X restore 513 99 graph;
-#N canvas 431 348 401 213 init 0;
-#X obj 36 19 loadbang;
-#X msg 36 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
-66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
-1;
-#X msg 36 45 symbol bufenv1;
-#X connect 0 0 2 0;
-#X connect 2 0 1 0;
-#X restore 621 293 pd init;
-#X obj 48 469 vasp.u;
-#X text 43 17 create envelopes from data-pairs;
-#X msg 497 272 vasp bufenv1;
-#X msg 46 103 vasp bufenv1;
-#X obj 46 159 vasp.u;
-#X obj 46 319 vasp.=;
-#X obj 46 263 t b a;
-#X msg 46 291 vasp bufenv1;
-#X obj 46 347 vasp.u;
-#X msg 46 222 env 0 0 0.8 1500 1 4000 0.95 10000 0.5 20000 0.15 55000
-0 88200;
-#X msg 48 397 vasp bufenv1;
-#X obj 48 421 vasp.!window lin;
-#X obj 48 447 vasp.* env 0 0 1 22050;
-#X obj 46 131 vasp.= env 1 0 -0.6 70000;
-#X text 231 129 an envelope as a creation argument;
-#X text 45 199 or sent as message;
-#X text 159 394 used as an argument alternatively to a value or vasp
-;
-#X text 46 85 CLICK HERE!;
-#X text 43 36 value - position in samples \, value2 - position2 \,
-...;
-#X connect 5 0 0 0;
-#X connect 6 0 16 0;
-#X connect 8 0 11 0;
-#X connect 9 0 10 0;
-#X connect 9 1 8 1;
-#X connect 10 0 8 0;
-#X connect 12 0 9 0;
-#X connect 13 0 14 0;
-#X connect 14 0 15 0;
-#X connect 15 0 3 0;
-#X connect 16 0 7 0;
-#X restore 232 419 pd envelopes;
-#X text 137 450 vasps units;
-#N canvas 49 240 511 378 units 0;
-#N canvas 442 226 404 340 Hz_to_period_length 0;
-#X text 17 201 current sampling rate;
-#X floatatom 157 241 0 0 0;
-#X obj 157 143 t b f;
-#X text 215 242 period length;
-#X floatatom 157 115 0 0 0;
-#X obj 157 210 / 1;
-#X floatatom 30 180 0 0 0;
-#X text 202 112 frequency in Hz;
-#X obj 30 138 samplerate~;
-#X obj 30 115 loadbang;
-#X obj 39 44 cnv 15 15 15 empty empty Hz_to_period_length 0 10 1 14
--262144 -1 0;
-#X connect 2 0 5 0;
-#X connect 2 1 5 1;
-#X connect 4 0 2 0;
-#X connect 5 0 1 0;
-#X connect 8 0 6 0;
-#X connect 8 0 5 0;
-#X connect 9 0 8 0;
-#X restore 150 310 pd Hz_to_period_length;
-#X text 103 281 sample rate/frequency in Hz = frequency in period length
-(float);
-#X text 60 264 - frequencies are always defined in period lengths;
-#X msg 149 227 vasp 44100 buf1 22050 0;
-#X text 103 187 e.g: vasp message with an offset of 0.5 sec. and a
-length of 1 sec. (sr 44100);
-#X text 60 155 - lengths and offsets are always defined in samples
-(depending on sample rate);
-#X msg 150 113 vasp 44100 buf1 22050 0;
-#X text 60 69 - vasp index counting starts from 0;
-#X text 104 81 e.g: channel 0 in a vasp message means first channel
-in the buffer;
-#X obj 51 27 cnv 15 15 15 empty empty vasp_units 0 10 1 14 -262144
--1 0;
-#X restore 233 451 pd units;
-#X text 112 483 vasp data types;
-#N canvas 218 38 524 621 data_types 0;
-#X text 68 48 vasp \, float \, envelope \, complex number \, double
-;
-#X text 83 84 vasp;
-#X text 83 196 float;
-#X text 96 130 vectors are always processed in parallel;
-#X text 81 280 envelope;
-#X text 95 216 (real) pd-style numbers;
-#X text 100 298 list of pairs setting value and position;
-#X text 79 380 complex numbers;
-#X msg 96 155 vasp buf1 buf2;
-#X floatatom 98 239 5 0 0;
-#X msg 100 323 env 0.5 0 -1 100 34.77 500;
-#X text 100 402 selector "complex" and pair of numbers;
-#X msg 100 427 complex 2.6 5.99;
-#X text 225 428 2.6+5.99i;
-#X text 83 477 double;
-#X msg 105 526 double 1 1e-13;
-#X text 101 501 for double precision of numbers;
-#X text 96 106 a vasp consists of one or more vectors of data;
-#X text 209 520 the two components are added internally;
-#X text 209 532 to represent a double precision number;
-#X restore 233 484 pd data_types;
-#X text 121 515 vasp glossary;
-#N canvas 69 118 655 553 glossary 0;
-#X text 100 84 buffer~ (MaxMSP) / array (Pd);
-#X text 120 100 resident data-field (can be channel-interleaved in
-Max/MSP) in system memory containing a number of frames;
-#X text 100 313 channel;
-#X text 100 379 vector;
-#X text 100 435 vasp;
-#X text 120 397 reference (with an offset and length \, with frames
-as units) to one channel of a buffer~ or array vector;
-#X text 120 452 contains one or more vectors in parallel with one common
-length but in general different offsets/channels per vector;
-#X text 120 330 a buffer~ (in MaxMSP) consists of one or more channels
-\, resulting in 1 \, 2 or 4 data elements per frame \, 0-indexed;
-#X text 121 183 32 bit IEEE floating point value \, typically (but
-not necessarily) normalized to the range -1...1 \;;
-#X text 100 161 data element (representing a sample);
-#X text 120 247 (aka "sample") time unit of sampled data - if multiple
-channels (typically 2 or 4) are sampled \, there are multiple data
-elements per frame;
-#X text 100 227 frame;
-#X obj 82 40 cnv 15 15 15 empty empty glossary 0 10 1 14 -262144 -1
-0;
-#X restore 233 516 pd glossary;
+#N canvas 193 23 626 687 10;
+#X obj 104 47 cnv 15 15 15 empty empty vasp_modular 0 10 1 14 -262144
+-1 0;
+#X obj 61 37 cnv 2 2 2 empty 2-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 37 cnv 2 2 2 empty 2-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 37 cnv 2 2 2 empty 2-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 37 cnv 2 2 2 empty 2-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 37 cnv 2 2 2 empty 2-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 37 cnv 2 2 2 empty 2-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 37 cnv 2 2 2 empty 2-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 37 cnv 2 2 2 empty 2-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 37 cnv 2 2 2 empty 2-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 37 cnv 2 2 2 empty 2-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 37 cnv 2 2 2 empty 2-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 37 cnv 2 2 2 empty 2-12-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 85 37 cnv 2 2 2 empty 2-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 37 cnv 2 2 2 empty 2-14-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 89 37 cnv 2 2 2 empty 2-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 39 cnv 2 2 2 empty 3-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 39 cnv 2 2 2 empty 3-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 39 cnv 2 2 2 empty 3-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 39 cnv 2 2 2 empty 3-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 39 cnv 2 2 2 empty 3-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 39 cnv 2 2 2 empty 3-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 39 cnv 2 2 2 empty 3-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 39 cnv 2 2 2 empty 3-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 39 cnv 2 2 2 empty 3-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 39 cnv 2 2 2 empty 3-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 39 cnv 2 2 2 empty 3-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 39 cnv 2 2 2 empty 3-12-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 85 39 cnv 2 2 2 empty 3-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 39 cnv 2 2 2 empty 3-14-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 89 39 cnv 2 2 2 empty 3-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 41 cnv 2 2 2 empty 4-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 41 cnv 2 2 2 empty 4-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 41 cnv 2 2 2 empty 4-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 41 cnv 2 2 2 empty 4-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 41 cnv 2 2 2 empty 4-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 41 cnv 2 2 2 empty 4-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 41 cnv 2 2 2 empty 4-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 41 cnv 2 2 2 empty 4-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 41 cnv 2 2 2 empty 4-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 41 cnv 2 2 2 empty 4-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 41 cnv 2 2 2 empty 4-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 41 cnv 2 2 2 empty 4-12-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 85 41 cnv 2 2 2 empty 4-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 41 cnv 2 2 2 empty 4-14-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 89 41 cnv 2 2 2 empty 4-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 43 cnv 2 2 2 empty 5-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 43 cnv 2 2 2 empty 5-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 43 cnv 2 2 2 empty 5-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 43 cnv 2 2 2 empty 5-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 43 cnv 2 2 2 empty 5-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 43 cnv 2 2 2 empty 5-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 43 cnv 2 2 2 empty 5-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 43 cnv 2 2 2 empty 5-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 43 cnv 2 2 2 empty 5-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 43 cnv 2 2 2 empty 5-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 43 cnv 2 2 2 empty 5-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 43 cnv 2 2 2 empty 5-12-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 85 43 cnv 2 2 2 empty 5-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 43 cnv 2 2 2 empty 5-14-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 89 43 cnv 2 2 2 empty 5-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 45 cnv 2 2 2 empty 6-1-r empty 20 12 64 14 -1 -262144 0;
+#X obj 63 45 cnv 2 2 2 empty 6-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 45 cnv 2 2 2 empty 6-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 45 cnv 2 2 2 empty 6-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 45 cnv 2 2 2 empty 6-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 45 cnv 2 2 2 empty 6-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 45 cnv 2 2 2 empty 6-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 45 cnv 2 2 2 empty 6-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 45 cnv 2 2 2 empty 6-9-r empty 20 12 64 14 -1 -262144 0;
+#X obj 79 45 cnv 2 2 2 empty 6-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 45 cnv 2 2 2 empty 6-11-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 83 45 cnv 2 2 2 empty 6-12-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 85 45 cnv 2 2 2 empty 6-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 45 cnv 2 2 2 empty 6-14-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 89 45 cnv 2 2 2 empty 6-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 47 cnv 2 2 2 empty 7-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 47 cnv 2 2 2 empty 7-2-r empty 20 12 64 14 -1 -262144 0;
+#X obj 65 47 cnv 2 2 2 empty 7-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 47 cnv 2 2 2 empty 7-4-r empty 20 12 64 14 -1 -262144 0;
+#X obj 69 47 cnv 2 2 2 empty 7-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 47 cnv 2 2 2 empty 7-6-r empty 20 12 64 14 -1 -262144 0;
+#X obj 73 47 cnv 2 2 2 empty 7-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 47 cnv 2 2 2 empty 7-8-r empty 20 12 64 14 -1 -262144 0;
+#X obj 77 47 cnv 2 2 2 empty 7-9-r empty 20 12 64 14 -1 -262144 0;
+#X obj 79 47 cnv 2 2 2 empty 7-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 47 cnv 2 2 2 empty 7-11-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 83 47 cnv 2 2 2 empty 7-12-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 85 47 cnv 2 2 2 empty 7-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 47 cnv 2 2 2 empty 7-14-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 89 47 cnv 2 2 2 empty 7-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 49 cnv 2 2 2 empty 8-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 49 cnv 2 2 2 empty 8-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 49 cnv 2 2 2 empty 8-3-r empty 20 12 64 14 -1 -262144 0;
+#X obj 67 49 cnv 2 2 2 empty 8-4-r empty 20 12 64 14 -1 -262144 0;
+#X obj 69 49 cnv 2 2 2 empty 8-5-r empty 20 12 64 14 -1 -262144 0;
+#X obj 71 49 cnv 2 2 2 empty 8-6-r empty 20 12 64 14 -1 -262144 0;
+#X obj 73 49 cnv 2 2 2 empty 8-7-r empty 20 12 64 14 -1 -262144 0;
+#X obj 75 49 cnv 2 2 2 empty 8-8-r empty 20 12 64 14 -1 -262144 0;
+#X obj 77 49 cnv 2 2 2 empty 8-9-r empty 20 12 64 14 -1 -262144 0;
+#X obj 79 49 cnv 2 2 2 empty 8-10-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 81 49 cnv 2 2 2 empty 8-11-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 83 49 cnv 2 2 2 empty 8-12-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 85 49 cnv 2 2 2 empty 8-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 49 cnv 2 2 2 empty 8-14-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 89 49 cnv 2 2 2 empty 8-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 51 cnv 2 2 2 empty 9-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 51 cnv 2 2 2 empty 9-2-r empty 20 12 64 14 -1 -262144 0;
+#X obj 65 51 cnv 2 2 2 empty 9-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 51 cnv 2 2 2 empty 9-4-r empty 20 12 64 14 -1 -262144 0;
+#X obj 69 51 cnv 2 2 2 empty 9-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 51 cnv 2 2 2 empty 9-6-r empty 20 12 64 14 -1 -262144 0;
+#X obj 73 51 cnv 2 2 2 empty 9-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 51 cnv 2 2 2 empty 9-8-r empty 20 12 64 14 -1 -262144 0;
+#X obj 77 51 cnv 2 2 2 empty 9-9-r empty 20 12 64 14 -1 -262144 0;
+#X obj 79 51 cnv 2 2 2 empty 9-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 51 cnv 2 2 2 empty 9-11-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 83 51 cnv 2 2 2 empty 9-12-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 85 51 cnv 2 2 2 empty 9-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 51 cnv 2 2 2 empty 9-14-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 89 51 cnv 2 2 2 empty 9-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 53 cnv 2 2 2 empty 10-1-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 63 53 cnv 2 2 2 empty 10-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 53 cnv 2 2 2 empty 10-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 53 cnv 2 2 2 empty 10-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 53 cnv 2 2 2 empty 10-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 53 cnv 2 2 2 empty 10-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 53 cnv 2 2 2 empty 10-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 53 cnv 2 2 2 empty 10-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 53 cnv 2 2 2 empty 10-9-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 79 53 cnv 2 2 2 empty 10-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 53 cnv 2 2 2 empty 10-11-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 83 53 cnv 2 2 2 empty 10-12-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 85 53 cnv 2 2 2 empty 10-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 53 cnv 2 2 2 empty 10-14-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 89 53 cnv 2 2 2 empty 10-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 55 cnv 2 2 2 empty 11-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 55 cnv 2 2 2 empty 11-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 55 cnv 2 2 2 empty 11-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 55 cnv 2 2 2 empty 11-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 55 cnv 2 2 2 empty 11-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 55 cnv 2 2 2 empty 11-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 55 cnv 2 2 2 empty 11-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 55 cnv 2 2 2 empty 11-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 55 cnv 2 2 2 empty 11-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 55 cnv 2 2 2 empty 11-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 55 cnv 2 2 2 empty 11-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 55 cnv 2 2 2 empty 11-12-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 85 55 cnv 2 2 2 empty 11-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 55 cnv 2 2 2 empty 11-14-r empty 20 12 64 14 -1 -262144 0
+;
+#X obj 89 55 cnv 2 2 2 empty 11-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 57 cnv 2 2 2 empty 12-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 57 cnv 2 2 2 empty 12-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 57 cnv 2 2 2 empty 12-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 57 cnv 2 2 2 empty 12-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 57 cnv 2 2 2 empty 12-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 57 cnv 2 2 2 empty 12-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 57 cnv 2 2 2 empty 12-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 57 cnv 2 2 2 empty 12-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 57 cnv 2 2 2 empty 12-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 57 cnv 2 2 2 empty 12-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 57 cnv 2 2 2 empty 12-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 57 cnv 2 2 2 empty 12-12-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 85 57 cnv 2 2 2 empty 12-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 57 cnv 2 2 2 empty 12-14-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 89 57 cnv 2 2 2 empty 12-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 59 cnv 2 2 2 empty 13-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 59 cnv 2 2 2 empty 13-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 59 cnv 2 2 2 empty 13-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 59 cnv 2 2 2 empty 13-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 59 cnv 2 2 2 empty 13-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 59 cnv 2 2 2 empty 13-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 59 cnv 2 2 2 empty 13-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 59 cnv 2 2 2 empty 13-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 59 cnv 2 2 2 empty 13-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 59 cnv 2 2 2 empty 13-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 59 cnv 2 2 2 empty 13-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 59 cnv 2 2 2 empty 13-12-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 85 59 cnv 2 2 2 empty 13-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 59 cnv 2 2 2 empty 13-14-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 89 59 cnv 2 2 2 empty 13-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 61 61 cnv 2 2 2 empty 14-1-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 63 61 cnv 2 2 2 empty 14-2-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 65 61 cnv 2 2 2 empty 14-3-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 67 61 cnv 2 2 2 empty 14-4-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 69 61 cnv 2 2 2 empty 14-5-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 71 61 cnv 2 2 2 empty 14-6-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 73 61 cnv 2 2 2 empty 14-7-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 75 61 cnv 2 2 2 empty 14-8-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 77 61 cnv 2 2 2 empty 14-9-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 79 61 cnv 2 2 2 empty 14-10-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 81 61 cnv 2 2 2 empty 14-11-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 83 61 cnv 2 2 2 empty 14-12-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 85 61 cnv 2 2 2 empty 14-13-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 87 61 cnv 2 2 2 empty 14-14-r empty 20 12 64 14 -225271 -262144
+0;
+#X obj 89 61 cnv 2 2 2 empty 14-15-r empty 20 12 64 14 -225271 -262144
+0;
+#X text 54 90 vasp modular - vector assembling signal processor ©2002
+thomas grill;
+#X text 54 123 vasp is a library of objects for max/msp and pd \, containing
+functions to generate and modify vectors as well as buffer content
+in a non-realtime context.;
+#X text 54 169 vasp objects are using a specialized message syntax
+for all objects to refer to a buffer or a part of it.;
+#X text 55 248 some reference patches need the prepend object of the
+IEMlib;
+#X text 55 565 inspired by guenther rabl's fftbox and NMS4. find guenther
+rabl at www.canto-crudo.com;
+#X text 54 602 vasp help patches for MaxMSP by florian bogner and oliver
+grimm - ©2002 patcherboys;
+#X text 55 639 revised & extended version for PD by marius schebella
+- www.parasitaere-kapazitaeten.net/vasp;
+#X text 54 202 the help patches should give you an idea of what is
+possible. feel free to combine different patches to more complex ones.
+;
+#X text 76 291 (very) quick overview;
+#N canvas 131 125 831 564 quickstart 0;
+#X text 86 223 How to use:;
+#X obj 292 270 bng 15 250 50 0 1displays 1displayr empty 0 -6 192 8
+-24198 -1 -1;
+#X text 320 269 1) Have a messagebox with the name of the array.;
+#X obj 292 317 bng 15 250 50 0 2displays 2displayr empty 0 -6 192 8
+-24198 -1 -1;
+#X obj 292 400 bng 15 250 50 0 3displays 3displayr empty 0 -6 192 8
+-24198 -1 -1;
+#N canvas 323 136 534 533 inside 0;
+#X obj 144 38 r 1displays;
+#X obj 176 281 delay 500;
+#X obj 144 156 r 2displays;
+#X obj 144 80 change;
+#X msg 144 59 1;
+#X obj 144 198 change;
+#X msg 144 177 1;
+#X msg 144 101 bang;
+#X msg 144 221 bang;
+#X obj 64 327 change;
+#X msg 64 306 1;
+#X obj 64 284 r 3displays;
+#X obj 64 349 t b b b;
+#X obj 315 37 table buffer1;
+#X text 314 55 (dummy-table);
+#X msg 144 122 \; pd-quickstart msg 130 270 vasp buffer1;
+#X msg 144 244 \; pd-quickstart obj 130 320 vasp.shift 100;
+#X msg 108 374 \; pd-quickstart msg 130 370 vasp buffer1;
+#X msg 82 411 \; pd-quickstart obj 130 400 vasp.update;
+#X msg 176 302 \; pd-quickstart connect 13 0 14 0;
+#X msg 64 452 \; pd-quickstart connect 15 0 16 0;
+#X connect 0 0 4 0;
+#X connect 1 0 19 0;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 8 0;
+#X connect 6 0 5 0;
+#X connect 7 0 15 0;
+#X connect 8 0 16 0;
+#X connect 8 0 1 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 0;
+#X connect 11 0 10 0;
+#X connect 12 0 20 0;
+#X connect 12 1 18 0;
+#X connect 12 2 17 0;
+#X restore 716 65 pd inside;
+#X text 87 54 The vasp modular system does calculation on buffers.
+;
+#X text 322 316 2) Connect it to a vasp-object-box that determines
+the processing algorithm.;
+#X text 323 374 3) At that point \, after clicking the message-box
+\, data processing is executed. To display the new vasp in the graph
+you may want to update the graphic display.;
+#X text 86 89 Vasp works "out of time" \, it does not relay on the
+usual blocksizes of Pd. A vasp algorithm can be assigned to any buffer
+size according to your own definition \, for example the whole sound-data
+of an array.;
+#X text 86 156 There is a general help-patch called "VASP-HELP" \,
+and there is a reference-patch for every vasp object.;
+#X text 233 241 (CLICK GREEN BUTTONS);
+#X text 85 481 Have a look at this help for detailed information about
+the syntax and the available objects and features.;
+#X restore 232 292 pd quickstart;
+#X text 108 324 the vasp message;
+#N canvas 10 33 986 670 syntax 0;
+#X text 76 52 the vasp message:;
+#X obj 75 20 cnv 15 15 15 empty empty vasp_syntax 0 10 1 14 -262144
+-1 0;
+#N canvas 0 0 405 218 init 0;
+#X obj 33 19 loadbang;
+#X msg 33 99 \; \$1 xticks 0 4410 5 \; \$1 xlabel 1.1 0 22050 44100
+66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
+1;
+#X msg 33 45 symbol buf1 \, symbol buf2 \, sysymbol buf1 \, symbol
+buf2 \, symbol buf3 \, symbol buf4 \, symbol buf5 \, symbol buf6 \,
+symbol buf7 \, symbol buf8 \, symbol buf9;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X restore 827 44 pd init;
+#X obj 73 92 cnv 15 800 450 empty empty empty 20 12 0 14 -241339 -66577
+0;
+#X text 469 241 (default 0);
+#X text 515 185 which does the same.;
+#X msg 462 184 vasp -1;
+#X msg 222 270 vasp 44100 buf1 22050 0;
+#X text 110 271 and the channel;
+#X msg 317 241 vasp 44100 buf1 22050;
+#X text 110 243 an optional offset in samples;
+#X msg 365 214 vasp 44100 buf1;
+#X text 110 216 the name of the buffer it refers to;
+#X msg 347 158 vasp 44100;
+#X text 110 161 followed by the length in samples;
+#X msg 266 132 vasp;
+#X text 89 102 - a vasp message is structured by the following parts:
+;
+#X text 110 135 it always starts with;
+#X text 110 450 set all samples of buf1 to 0;
+#X text 110 384 generate a sine wave at 2Hz;
+#X msg 311 451 vasp buf1;
+#X obj 311 497 vasp.update;
+#X obj 311 473 vasp.= 0;
+#X obj 310 412 vasp.update;
+#X obj 310 383 vasp.osc 22050;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf1 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 498 403 graph;
+#X msg 310 323 vasp 44100 buf1 22050 0;
+#X text 110 325 one vectored vasp message:;
+#X obj 73 582 cnv 15 800 480 empty empty empty 20 12 0 14 -241339 -66577
+0;
+#X text 138 890 set all samples of buf1 and buf2 to 0;
+#X msg 275 910 vasp buf2 buf3;
+#X obj 275 956 vasp.update;
+#X obj 275 932 vasp.= 0;
+#X obj 274 846 vasp.update;
+#X obj 274 816 vasp.osc 22050;
+#X text 139 993 a vasp message can contain as many vectors as you like
+\, but all vectors have the same length;
+#X msg 274 714 vasp 44100 buf2 0 0 buf3 22050;
+#X text 110 689 two vectored vasp message:;
+#X text 110 633 all vectors have the same length \, but the vectors
+can differ in the buffers and offsets;
+#X text 89 597 - if a vasp message contains more than one vector:;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf2 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 477 754 graph;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf3 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 478 878 graph;
+#X text 110 184 if missing \, it refers to the whole buffer \, or type
+;
+#X text 139 1028 different vectors of a vasp are processed in parallel
+or as pairs for complex operations respectively.;
+#X obj 860 1077 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
+0;
+#X text 336 339 (CLICK HERE);
+#X text 377 451 (CLICK HERE);
+#X text 326 736 (CLICK HERE);
+#X text 470 683 referring to buffer buf1 from 0 sec to 1 sec on channel
+0 and buffer buf2 from 0.5 sec to 1.5 sec on channel 0;
+#X text 354 934 (CLICK HERE);
+#X text 393 271 (default 0 \, it is only used in Max/MSP);
+#X text 453 342 referring to buffer buf1 from 0.5sec to 1.5sec on channel
+0;
+#X connect 20 0 22 0;
+#X connect 22 0 21 0;
+#X connect 24 0 23 0;
+#X connect 26 0 24 0;
+#X connect 30 0 32 0;
+#X connect 32 0 31 0;
+#X connect 34 0 33 0;
+#X connect 36 0 34 0;
+#X restore 232 325 pd syntax;
+#X text 88 357 additional messages;
+#N canvas 30 20 964 685 moremessages 0;
+#X obj 59 74 cnv 15 800 330 empty empty empty 20 12 0 14 -241339 -66577
+0;
+#X obj 330 342 vasp.* 0.5;
+#X text 128 192 set all samples of buf1 to 0;
+#X obj 330 374 vasp.update;
+#X obj 330 316 vasp.noise;
+#X msg 330 191 vasp buf4;
+#X obj 330 243 vasp.update;
+#X obj 330 217 vasp.= 0;
+#X obj 330 159 vasp.update;
+#X obj 330 133 vasp.osc 22050;
+#X msg 330 290 vasp buf5;
+#X text 470 92 sets the message \, bang triggers the operation;
+#X text 68 29 additional vasp messages:;
+#X msg 330 92 set vasp 44100 buf4;
+#X text 107 92 - set:;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf4 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 503 145 graph;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf5 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 504 269 graph;
+#X obj 286 108 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 107 115 - bang:;
+#X obj 60 662 cnv 15 800 290 empty empty empty 20 12 0 14 -241339 -66577
+0;
+#X text 108 688 - update:;
+#X msg 233 726 update 1;
+#X msg 297 726 update 0;
+#X msg 361 690 vasp buf7;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf7 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 521 699 graph;
+#X obj 651 903 vasp.update;
+#X obj 392 752 random 10;
+#X obj 392 778 * 0.1;
+#X msg 651 877 vasp buf7;
+#X obj 361 716 t a b;
+#X obj 60 975 cnv 15 800 290 empty empty empty 20 12 0 14 -241339 -66577
+0;
+#X text 134 998 - detach:;
+#X text 233 839 with argument 1 or 0 you can turn automatic display-update
+on or off (default is off).;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf8 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 525 1088 graph;
+#X obj 297 1231 vasp.u;
+#X obj 297 1205 vasp.opt;
+#X obj 297 1178 vasp.rfft;
+#X msg 297 1074 vasp buf8;
+#X msg 225 1095 detach 1;
+#X text 238 998 use multithreading;
+#X msg 162 1095 detach 0;
+#X obj 59 1290 cnv 15 800 300 empty empty empty 20 12 0 14 -241339
+-66577 0;
+#X text 127 1321 - radio:;
+#X obj 845 1762 cnv 15 15 15 empty empty empty 20 12 0 14 -262144 -66577
+0;
+#X obj 59 430 cnv 15 800 210 empty empty empty 20 12 0 14 -241339 -66577
+0;
+#X text 129 556 set all samples of buf5/6 to 0;
+#X msg 351 559 vasp buf5 buf6;
+#X obj 351 611 vasp.update;
+#X obj 351 585 vasp.= 0;
+#X msg 351 470 to vasp buf6 \, vasp buf5;
+#X obj 351 522 vasp.update;
+#X text 143 474 sets the target buffer buf6;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf6 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 515 515 graph;
+#X text 113 448 - to:;
+#X msg 192 1537 radio update 1;
+#X msg 187 1386 radio detach 1;
+#X text 149 1536 also:;
+#X obj 297 1497 vasp.u;
+#N canvas 0 0 450 300 graph1 0;
+#X array buf9 88200 float 0;
+#X coords 0 1 88199 -1 300 100 1;
+#X restore 526 1398 graph;
+#X msg 297 1367 vasp buf9;
+#X obj 351 496 vasp.*osc 22100;
+#X text 45 497 and modulate the noise with a 2Hz sine wave;
+#X text 233 875 if automatic update is turned off \, you explicitely
+have to update the display with the object vasp.update;
+#X obj 361 806 vasp.=;
+#X text 237 1019 this very useful switch can put the vasp-calculation
+into the background and (try to) avoid dropouts in the Pd-DSP-processing.
+1 = on \, 0 = off.;
+#X obj 297 1125 vasp.noise;
+#X obj 297 1149 vasp.flp 100;
+#X text 392 1147 low pass filter;
+#X text 383 1125 generate noise;
+#X text 235 1321 radio messages are passed to/through all vasp objects
+of an object chain;
+#X obj 297 1422 vasp.xwindow lin;
+#X obj 297 1466 vasp.sqr;
+#X text 354 1465 square it;
+#X text 355 1439 make linear window;
+#X text 69 45 set \, bang \, to \, update \, detach \, help;
+#X obj 61 1624 cnv 15 800 130 empty empty empty 20 12 0 14 -241339
+-66577 0;
+#X text 127 1636 - help:;
+#X msg 240 1676 help;
+#X obj 240 1709 vasp.??;
+#X msg 323 1676 help;
+#X obj 323 1709 vasp.s/;
+#X text 236 1637 print out a short description of the object;
+#X text 376 1177 real fft;
+#X connect 1 0 3 0;
+#X connect 4 0 1 0;
+#X connect 5 0 7 0;
+#X connect 7 0 6 0;
+#X connect 9 0 8 0;
+#X connect 10 0 4 0;
+#X connect 13 0 9 0;
+#X connect 17 0 9 0;
+#X connect 21 0 63 0;
+#X connect 22 0 63 0;
+#X connect 23 0 29 0;
+#X connect 26 0 27 0;
+#X connect 27 0 63 1;
+#X connect 28 0 25 0;
+#X connect 29 0 63 0;
+#X connect 29 1 26 0;
+#X connect 35 0 34 0;
+#X connect 36 0 35 0;
+#X connect 37 0 65 0;
+#X connect 38 0 36 0;
+#X connect 38 0 66 0;
+#X connect 38 0 65 0;
+#X connect 40 0 36 0;
+#X connect 40 0 66 0;
+#X connect 40 0 65 0;
+#X connect 46 0 48 0;
+#X connect 48 0 47 0;
+#X connect 49 0 60 0;
+#X connect 55 0 70 0;
+#X connect 59 0 70 0;
+#X connect 60 0 50 0;
+#X connect 65 0 66 0;
+#X connect 66 0 36 0;
+#X connect 70 0 71 0;
+#X connect 71 0 57 0;
+#X connect 77 0 78 0;
+#X connect 79 0 80 0;
+#X restore 232 356 pd moremessages;
+#X text 107 389 the vasp objects;
+#N canvas 57 40 412 447 objects 0;
+#X obj 59 28 cnv 15 15 15 empty empty vasp_objects 0 10 1 14 -262144
+-1 0;
+#N canvas 343 209 509 292 fftobjects 0;
+#X obj 281 103 vasp.r!fft;
+#X obj 281 71 vasp.rfft;
+#X obj 72 160 vasp.polar;
+#X obj 72 103 vasp.c!fft;
+#X obj 72 71 vasp.cfft;
+#X text 145 160 changes between cartesian and polar representation
+;
+#X text 358 103 inverse real fft;
+#X text 145 71 complex fft;
+#X text 145 103 inverse complex fft;
+#X text 358 71 real fft;
+#X text 145 213 changes between polar and cartesian representation
+;
+#X obj 72 212 vasp.rect;
+#X obj 35 22 cnv 15 15 15 empty empty fftobjects 0 10 1 14 -262144
+-1 0;
+#X restore 71 206 pd fftobjects;
+#N canvas 386 9 609 639 arithmetic 0;
+#X obj 354 138 vasp.c!-;
+#X text 149 135 reverse subtraction;
+#X obj 76 136 vasp.!-;
+#X text 437 421 integral function;
+#X text 437 444 differential function;
+#X obj 362 448 vasp.dif;
+#X obj 362 422 vasp.int;
+#X obj 361 346 vasp.r+;
+#X text 414 350 radius offset;
+#X obj 354 216 vasp.c!/;
+#X text 150 213 reverse division;
+#X obj 76 214 vasp.!/;
+#X obj 355 250 vasp.c=;
+#X obj 354 190 vasp.c/;
+#X obj 354 164 vasp.c*;
+#X obj 354 112 vasp.c-;
+#X obj 354 86 vasp.c+;
+#X obj 76 578 vasp.sign;
+#X obj 76 552 vasp.%;
+#X obj 76 526 vasp.abs;
+#X obj 76 500 vasp.!=;
+#X obj 76 474 vasp.==;
+#X obj 76 344 vasp.>=;
+#X obj 76 318 vasp.<=;
+#X obj 76 292 vasp.>;
+#X obj 76 266 vasp.<;
+#X obj 76 240 vasp.=;
+#X obj 76 188 vasp./;
+#X obj 76 162 vasp.*;
+#X obj 76 110 vasp.-;
+#X obj 76 84 vasp.+;
+#X text 150 338 vasp >= x;
+#X text 150 315 vasp >= x;
+#X text 150 292 vasp > x;
+#X text 150 269 vasp < x;
+#X text 151 473 equal to;
+#X text 152 161 multiplication;
+#X text 149 187 division;
+#X text 150 106 subtraction;
+#X text 153 499 not equal to;
+#X text 153 551 modulo (remainder of a division);
+#X text 151 525 absolute value of a vasp;
+#X text 150 83 addition;
+#X text 354 62 complex ....;
+#X text 150 239 vasp = x;
+#X text 152 577 values < 0 become -1 | values > 0 become 1;
+#X text 361 322 radius ....;
+#X obj 35 22 cnv 15 15 15 empty empty arithmetic 0 10 1 14 -262144
+-1 0;
+#X obj 355 276 vasp.cconj;
+#X obj 76 370 vasp.a<;
+#X obj 76 396 vasp.a>;
+#X obj 76 422 vasp.a<=;
+#X obj 76 448 vasp.a>=;
+#X text 149 369 abs(vasp) < abs(x);
+#X text 149 392 abs(vasp) > abs(x);
+#X text 149 444 abs(vasp) >= abs(x);
+#X text 149 421 abs(vasp) <= abs(x);
+#X obj 362 488 vasp.sum?;
+#X text 433 486 sum of samples;
+#X restore 72 128 pd arithmetic;
+#N canvas 197 195 744 308 generators 0;
+#X obj 389 194 vasp.*cosc;
+#X obj 389 138 vasp.*phasor;
+#X obj 389 110 vasp.*osc;
+#X obj 72 222 vasp.cnoise;
+#X obj 72 194 vasp.cosc;
+#X obj 72 166 vasp.noise;
+#X obj 72 138 vasp.phasor;
+#X obj 72 110 vasp.osc;
+#X text 72 67 generate .....;
+#X text 166 165 vasp noise generator;
+#X text 166 134 vasp saw tooth generator;
+#X text 166 109 vasp sine wave generator;
+#X text 166 226 complex noise;
+#X text 166 190 complex sine wave;
+#X obj 35 22 cnv 15 15 15 empty empty generators 0 10 1 14 -262144
+-1 0;
+#X text 366 67 multiply a buffer content with the oscillator functions
+...;
+#X restore 72 179 pd generators;
+#N canvas 510 190 355 349 filters 0;
+#X obj 53 107 vasp.flp;
+#X obj 53 77 vasp.fhp;
+#X text 157 111 low pass;
+#X text 157 80 high pass;
+#X obj 35 22 cnv 15 15 15 empty empty filters 0 10 1 14 -262144 -1
+0;
+#X obj 52 205 vasp.rvalleys;
+#X obj 52 238 vasp.rpeaks;
+#X text 156 205 radius valleys;
+#X text 156 238 radius peaks;
+#X obj 52 173 vasp.peaks;
+#X obj 52 140 vasp.valleys;
+#X text 156 175 local peaks of a vasp;
+#X text 156 142 local minima of a vasp;
+#X restore 71 255 pd filters;
+#N canvas 306 143 560 383 displace 0;
+#X text 158 163 rotate buffer content symmetrically;
+#X obj 80 164 vasp.xrot;
+#X obj 80 232 vasp.xmirr;
+#X obj 80 197 vasp.mirr;
+#X obj 80 132 vasp.rot;
+#X obj 80 97 vasp.xshift;
+#X obj 80 62 vasp.shift;
+#X text 158 231 mirrors a vasp symmetrically;
+#X text 158 196 mirrors a vasp;
+#X text 158 61 shifts the buffer content;
+#X text 158 131 rotate buffer content;
+#X obj 35 22 cnv 15 15 15 empty empty displace 0 10 1 14 -262144 -1
+0;
+#X text 157 96 shifts the buffer content symmetrically;
+#X obj 80 275 vasp.tilt;
+#X obj 80 316 vasp.xtilt;
+#X text 160 274 resamples around a center position;
+#X text 160 310 buffer is divided in two symmetrical halves and each
+one is resampled around a center position;
+#X restore 71 230 pd displace;
+#N canvas 206 180 677 313 transcendent 0;
+#X text 403 97 complex sample^2;
+#X text 403 67 complex integer power function;
+#X text 145 195 square root;
+#X text 145 226 signed sample^2;
+#X obj 329 66 vasp.cpowi;
+#X obj 329 96 vasp.csqr;
+#X obj 73 257 vasp.ssqrt;
+#X obj 73 226 vasp.ssqr;
+#X obj 73 194 vasp.sqrt;
+#X obj 73 164 vasp.sqr;
+#X obj 73 134 vasp.pow;
+#X text 145 257 signed square root;
+#X text 145 135 samps^x;
+#X text 145 165 sample^2;
+#X obj 329 142 vasp.rpow;
+#X text 396 143 radius power function;
+#X obj 73 102 vasp.log;
+#X obj 73 66 vasp.exp;
+#X text 145 102 logarithm;
+#X text 145 66 exponential;
+#X obj 35 22 cnv 15 15 15 empty empty transcendent 0 10 1 14 -262144
+-1 0;
+#X restore 72 153 pd transcendent;
+#N canvas 236 197 682 329 minmax_etc. 0;
+#X obj 422 250 vasp.rmin;
+#X obj 422 218 vasp.rmax;
+#X text 511 250 radius minimum;
+#X text 511 219 radius maximum;
+#X obj 76 250 vasp.min;
+#X obj 76 218 vasp.max;
+#X obj 76 187 vasp.max?;
+#X obj 76 156 vasp.min?;
+#X obj 76 125 vasp.amax?;
+#X obj 76 94 vasp.amin?;
+#X obj 422 187 vasp.rmax?;
+#X obj 422 156 vasp.rmin?;
+#X obj 76 62 vasp.minmax;
+#X text 167 250 minimum of vasp and argument;
+#X text 167 219 maximum of vasp and argument;
+#X text 167 156 output min. value of a vasp;
+#X text 167 187 output max. value of a vasp;
+#X text 167 125 output max. absolute value of a vasp;
+#X text 167 94 output min. absolute value of a vasp;
+#X text 511 187 radius max. value;
+#X text 511 156 radius min. value;
+#X text 167 65 splits a vasp into minimum and maximum values;
+#X obj 35 22 cnv 15 15 15 empty empty minmax 0 10 1 14 -262144 -1 0
+;
+#X restore 71 279 pd minmax_etc.;
+#N canvas 229 139 538 399 window-functions 0;
+#X obj 59 28 cnv 15 15 15 empty empty window-functions 0 10 1 14 -262144
+-1 0;
+#X obj 77 92 vasp.window;
+#X obj 77 125 vasp.xwindow;
+#X obj 77 159 vasp.!window;
+#X obj 116 255 vasp.*window;
+#X obj 116 289 vasp.*xwindow;
+#X obj 116 318 vasp.*!window;
+#X text 188 122 symmetrical window;
+#X text 188 90 left part of symmetrical window;
+#X text 190 160 right part of symmetrical window;
+#X text 77 212 multiply...;
+#X restore 71 303 pd window-functions;
+#N canvas 188 241 512 403 utilities 0;
+#X obj 77 143 vasp.cnorm;
+#X obj 80 321 vasp.pwrap;
+#X obj 80 265 vasp.opt;
+#X obj 77 64 vasp.gate;
+#X text 158 265 optimize buffer content;
+#X text 157 64 gates vasp under a value (amplitude);
+#X text 158 143 sets complex radius of all samples to unity;
+#X obj 80 292 vasp.ropt;
+#X text 157 294 radius optimize;
+#X obj 77 90 vasp.rgate;
+#X text 158 90 radius gate;
+#X text 158 321 wraps value from 0-2 to -1 to 1;
+#X obj 59 28 cnv 15 15 15 empty empty utilities 0 10 1 14 -262144 -1
+0;
+#X obj 77 115 vasp.fix;
+#X obj 76 173 vasp.radio;
+#X text 73 226 abstractions:;
+#X text 158 115 fix NAN (not a number) values;
+#X text 157 172 filter radio messages;
+#X restore 71 326 pd utilities;
+#N canvas 173 0 652 692 declaration 0;
+#X obj 68 42 cnv 15 15 15 empty empty declaration 0 10 1 14 -262144
+-1 0;
+#X text 184 148 get a vector of a vasp;
+#X obj 84 152 vasp.vector;
+#X text 184 179 get the number of vectors of a vasp;
+#X obj 84 180 vasp.vectors?;
+#X text 184 207 set a vasp's offset(s) into the vector buffers;
+#X obj 84 208 vasp.offset;
+#X text 184 235 shift a vasp's offset(s) into the vector buffers;
+#X obj 84 236 vasp.offset+;
+#X text 184 263 get a single vectored vasp's offset(s) into the buffer
+;
+#X obj 84 264 vasp.offset?;
+#X obj 84 292 vasp.offset=;
+#X text 184 319 set a vasps frame count;
+#X obj 84 320 vasp.frames;
+#X text 184 349 raise/lower a vasps frame count;
+#X obj 84 348 vasp.frames+;
+#X text 184 374 get a vasps frame count;
+#X obj 84 376 vasp.frames?;
+#X obj 84 404 vasp.frames*;
+#X obj 84 432 vasp.frames/;
+#X obj 84 460 vasp.frames=;
+#X obj 84 488 vasp.size;
+#X obj 84 516 vasp.size+;
+#X obj 84 544 vasp.size*;
+#X obj 84 600 vasp.size?;
+#X obj 84 572 vasp.size/;
+#X obj 84 628 vasp.channel;
+#X obj 84 656 vasp.channel?;
+#X obj 84 124 vasp;
+#X text 184 123 store and output a vasp;
+#X text 184 405 change a vasps frame count by multiplication;
+#X text 184 430 change a vasps frame count by division;
+#X text 184 486 set the size of an array/buffer;
+#X text 186 517 raise the size of an array/buffer;
+#X text 186 542 change the size of an array/buffer by multiplication
+;
+#X text 185 603 get the size of a vasp;
+#X text 185 578 change the size of an array/buffer by division;
+#X text 186 658 get the channel of a multichannel vasp (MaxMSP only)
+;
+#X text 186 633 define the channel of a multichannel vasp (MAXMSP only)
+;
+#X text 55 84 (get help on right click/help just as usual);
+#X text 184 291 set a vasp's offset by searching for a value;
+#X text 184 461 change a vasp's frame count by searching for a value
+;
+#X restore 72 78 pd declaration;
+#N canvas 238 51 544 560 basics 0;
+#X text 173 122 check vasp dimensions;
+#X obj 73 122 vasp.check;
+#X text 173 162 sync 2 or more vasps;
+#X obj 73 162 vasp.sync;
+#X text 173 142 update the graphics of a patcher (e.g. waveform);
+#X obj 73 142 vasp.update;
+#X text 173 182 output a vasp multiply;
+#X obj 73 182 vasp.multi;
+#X text 173 228 split a vasp into its vectors;
+#X obj 73 228 vasp.split 2;
+#X text 173 248 join several vasps into one;
+#X obj 73 248 vasp.join 2;
+#X text 173 268 spit out vectors of a vasp (one vector after the other)
+;
+#X obj 73 268 vasp.spit;
+#X text 173 288 gather several vasps into one;
+#X obj 73 288 vasp.gather;
+#X text 173 308 output vasps with different lengths and offsets;
+#X obj 73 308 vasp.part;
+#X text 174 412 output the samples of a vasp as list;
+#X obj 74 412 vasp.?;
+#X text 174 431 output all non zero samples of a vasp as list;
+#X obj 74 432 vasp.??;
+#X obj 71 64 cnv 15 15 15 empty empty basics 0 10 1 14 -262144 -1 0
+;
+#X obj 73 328 vasp.->;
+#X text 173 328 copy a vasp into another one;
+#X text 173 348 copy a complex vasp;
+#X obj 73 348 vasp.c->;
+#X obj 75 469 vasp.!;
+#X text 175 469 create a temporary vasp (immediate);
+#X restore 72 103 pd basics;
+#X restore 232 387 pd objects;
+#X text 149 418 envelopes;
+#N canvas 39 33 908 540 envelopes 0;
+#N canvas 40 55 255 173 clear_buffer 0;
+#X obj 59 79 vasp.update;
+#X obj 59 56 vasp.= 0;
+#X obj 59 26 inlet;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X restore 497 300 pd clear_buffer;
+#N canvas 0 0 450 300 graph167 0;
+#X array bufenv1 88200 float 0;
+#X coords 0 1 88199 -1 300 120 1;
+#X restore 513 99 graph;
+#N canvas 431 348 401 213 init 0;
+#X obj 36 19 loadbang;
+#X msg 36 73 \; \$1 xticks 0 4410 10 \; \$1 xlabel 1.1 0 22050 44100
+66150 88200 \; \$1 yticks 0 0.25 2 \; \$1 ylabel 94000 -1 -0.5 0 0.5
+1;
+#X msg 36 45 symbol bufenv1;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X restore 621 293 pd init;
+#X obj 48 469 vasp.u;
+#X text 43 17 create envelopes from data-pairs;
+#X msg 497 272 vasp bufenv1;
+#X msg 46 103 vasp bufenv1;
+#X obj 46 159 vasp.u;
+#X obj 46 319 vasp.=;
+#X obj 46 263 t b a;
+#X msg 46 291 vasp bufenv1;
+#X obj 46 347 vasp.u;
+#X msg 46 222 env 0 0 0.8 1500 1 4000 0.95 10000 0.5 20000 0.15 55000
+0 88200;
+#X msg 48 397 vasp bufenv1;
+#X obj 48 421 vasp.!window lin;
+#X obj 48 447 vasp.* env 0 0 1 22050;
+#X obj 46 131 vasp.= env 1 0 -0.6 70000;
+#X text 231 129 an envelope as a creation argument;
+#X text 45 199 or sent as message;
+#X text 159 394 used as an argument alternatively to a value or vasp
+;
+#X text 46 85 CLICK HERE!;
+#X text 43 36 value - position in samples \, value2 - position2 \,
+...;
+#X connect 5 0 0 0;
+#X connect 6 0 16 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 9 1 8 1;
+#X connect 10 0 8 0;
+#X connect 12 0 9 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 3 0;
+#X connect 16 0 7 0;
+#X restore 232 419 pd envelopes;
+#X text 137 450 vasps units;
+#N canvas 49 240 511 378 units 0;
+#N canvas 442 226 404 340 Hz_to_period_length 0;
+#X text 17 201 current sampling rate;
+#X floatatom 157 241 0 0 0 0 - - -;
+#X obj 157 143 t b f;
+#X text 215 242 period length;
+#X floatatom 157 115 0 0 0 0 - - -;
+#X obj 157 210 / 1;
+#X floatatom 30 180 0 0 0 0 - - -;
+#X text 202 112 frequency in Hz;
+#X obj 30 138 samplerate~;
+#X obj 30 115 loadbang;
+#X obj 39 44 cnv 15 15 15 empty empty Hz_to_period_length 0 10 1 14
+-262144 -1 0;
+#X connect 2 0 5 0;
+#X connect 2 1 5 1;
+#X connect 4 0 2 0;
+#X connect 5 0 1 0;
+#X connect 8 0 6 0;
+#X connect 8 0 5 0;
+#X connect 9 0 8 0;
+#X restore 150 310 pd Hz_to_period_length;
+#X text 103 281 sample rate/frequency in Hz = frequency in period length
+(float);
+#X text 60 264 - frequencies are always defined in period lengths;
+#X msg 149 227 vasp 44100 buf1 22050 0;
+#X text 103 187 e.g: vasp message with an offset of 0.5 sec. and a
+length of 1 sec. (sr 44100);
+#X text 60 155 - lengths and offsets are always defined in samples
+(depending on sample rate);
+#X msg 150 113 vasp 44100 buf1 22050 0;
+#X text 60 69 - vasp index counting starts from 0;
+#X text 104 81 e.g: channel 0 in a vasp message means first channel
+in the buffer;
+#X obj 51 27 cnv 15 15 15 empty empty vasp_units 0 10 1 14 -262144
+-1 0;
+#X restore 233 451 pd units;
+#X text 112 483 vasp data types;
+#N canvas 218 38 524 621 data_types 0;
+#X text 68 48 vasp \, float \, envelope \, complex number \, double
+;
+#X text 83 84 vasp;
+#X text 83 196 float;
+#X text 96 130 vectors are always processed in parallel;
+#X text 81 280 envelope;
+#X text 95 216 (real) pd-style numbers;
+#X text 100 298 list of pairs setting value and position;
+#X text 79 380 complex numbers;
+#X msg 96 155 vasp buf1 buf2;
+#X floatatom 98 239 5 0 0 0 - - -;
+#X msg 100 323 env 0.5 0 -1 100 34.77 500;
+#X text 100 402 selector "complex" and pair of numbers;
+#X msg 100 427 complex 2.6 5.99;
+#X text 225 428 2.6+5.99i;
+#X text 83 477 double;
+#X msg 105 526 double 1 1e-013;
+#X text 101 501 for double precision of numbers;
+#X text 96 106 a vasp consists of one or more vectors of data;
+#X text 209 520 the two components are added internally;
+#X text 209 532 to represent a double precision number;
+#X restore 233 484 pd data_types;
+#X text 121 515 vasp glossary;
+#N canvas 69 118 655 553 glossary 0;
+#X text 100 84 buffer~ (MaxMSP) / array (Pd);
+#X text 120 100 resident data-field (can be channel-interleaved in
+Max/MSP) in system memory containing a number of frames;
+#X text 100 313 channel;
+#X text 100 379 vector;
+#X text 100 435 vasp;
+#X text 120 397 reference (with an offset and length \, with frames
+as units) to one channel of a buffer~ or array vector;
+#X text 120 452 contains one or more vectors in parallel with one common
+length but in general different offsets/channels per vector;
+#X text 120 330 a buffer~ (in MaxMSP) consists of one or more channels
+\, resulting in 1 \, 2 or 4 data elements per frame \, 0-indexed;
+#X text 121 183 32 bit IEEE floating point value \, typically (but
+not necessarily) normalized to the range -1...1 \;;
+#X text 100 161 data element (representing a sample);
+#X text 120 247 (aka "sample") time unit of sampled data - if multiple
+channels (typically 2 or 4) are sampled \, there are multiple data
+elements per frame;
+#X text 100 227 frame;
+#X obj 82 40 cnv 15 15 15 empty empty glossary 0 10 1 14 -262144 -1
+0;
+#X restore 233 516 pd glossary;
diff --git a/externals/grill/vasp/pd/vasp.conv.pd b/externals/grill/vasp/pd/vasp.conv.pd
index 24d3c35e..d6350270 100644
--- a/externals/grill/vasp/pd/vasp.conv.pd
+++ b/externals/grill/vasp/pd/vasp.conv.pd
@@ -1,14 +1,24 @@
-#N canvas 30 70 408 308 12;
-#X obj 54 51 inlet;
-#X obj 165 52 inlet;
-#X obj 50 193 outlet;
-#X obj 51 99 vasp.rfft;
-#X obj 159 99 vasp.rfft;
-#X obj 52 139 vasp.*;
-#X obj 51 165 vasp.r!fft;
-#X connect 0 0 3 0;
+#N canvas 30 70 412 386 12;
+#X obj 57 30 inlet;
+#X obj 196 31 inlet;
+#X obj 57 308 outlet;
+#X obj 94 151 vasp.rfft;
+#X obj 194 154 vasp.rfft;
+#X obj 87 238 vasp.*;
+#X obj 76 267 vasp.r!fft;
+#X obj 56 67 vasp.radio;
+#X obj 94 196 vasp.sync;
+#X connect 0 0 7 0;
#X connect 1 0 4 0;
-#X connect 3 0 5 0;
-#X connect 4 0 5 1;
+#X connect 3 0 8 0;
+#X connect 4 0 8 1;
#X connect 5 0 6 0;
#X connect 6 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 7 0 2 0;
+#X connect 7 1 3 0;
+#X connect 8 0 5 0;
+#X connect 8 1 5 1;
diff --git a/externals/grill/vasp/pd/vasp.qmean.pd b/externals/grill/vasp/pd/vasp.qmean.pd
new file mode 100644
index 00000000..31f5b483
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.qmean.pd
@@ -0,0 +1,19 @@
+#N canvas 0 0 454 304 12;
+#X obj 51 22 inlet;
+#X obj 118 265 outlet;
+#X obj 87 135 vasp.sum?;
+#X obj 51 55 vasp.radio;
+#X obj 186 135 vasp.f?;
+#X obj 167 208 /;
+#X obj 117 168 route 0;
+#X obj 87 87 vasp.m;
+#X connect 0 0 3 0;
+#X connect 2 1 6 0;
+#X connect 3 0 2 0;
+#X connect 3 1 7 0;
+#X connect 4 0 5 1;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 6 1 5 0;
+#X connect 7 0 2 0;
+#X connect 7 1 4 0;
diff --git a/externals/grill/vasp/pd/vasp.rms.pd b/externals/grill/vasp/pd/vasp.rms.pd
new file mode 100644
index 00000000..19ba197d
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.rms.pd
@@ -0,0 +1,15 @@
+#N canvas 270 238 445 419 12;
+#X obj 42 81 vasp.!;
+#X obj 42 126 vasp.sqr;
+#X obj 43 215 sqrt;
+#X obj 42 26 inlet;
+#X obj 42 293 outlet;
+#X text 105 82 make temporary buffer;
+#X text 99 295 RMS;
+#X obj 42 164 vasp.qmean;
+#X text 132 166 mean value;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 7 0 2 0;
diff --git a/externals/grill/vasp/source/classes.cpp b/externals/grill/vasp/source/classes.cpp
index 2c7770a4..42697a1e 100644
--- a/externals/grill/vasp/source/classes.cpp
+++ b/externals/grill/vasp/source/classes.cpp
@@ -35,6 +35,8 @@ V vasp_base::Setup(t_classid c)
FLEXT_CADDMETHOD_(c,0,"radio",m_radio);
+ FLEXT_CADDATTR_VAR1(c,"defer",deferred);
+
// LATER!
/*
FLEXT_CADDATTR_VAR1(c,"argchk",argchk);
@@ -44,7 +46,7 @@ V vasp_base::Setup(t_classid c)
}
vasp_base::vasp_base():
- refresh(false),argchk(false),
+ refresh(false),argchk(false),deferred(false),
unit(xsu_sample),loglvl(0)
{}
@@ -74,7 +76,10 @@ BL vasp_base::ToOutVasp(I oix,Vasp &v)
{
AtomList *lst = v.MakeList(false);
if(lst) {
- ToOutAnything(oix,sym_vasp,lst->Count(),lst->Atoms());
+ if(deferred)
+ ToQueueAnything(oix,sym_vasp,lst->Count(),lst->Atoms());
+ else
+ ToOutAnything(oix,sym_vasp,lst->Count(),lst->Atoms());
delete lst;
return true;
}
@@ -86,8 +91,8 @@ BL vasp_base::ToOutVasp(I oix,Vasp &v)
///////////////////////////////////////////////////////////////////////////
vasp_op::vasp_op(BL op)
-#ifdef FLEXT_THREADS
:detach(false),prior(-2)
+#ifdef FLEXT_THREADS
// ,thrid(0)
#endif
{
@@ -106,10 +111,8 @@ V vasp_op::Setup(t_classid c)
FLEXT_CADDATTR_VAR(c,"update",m_getupd,m_setupd);
-#ifdef FLEXT_THREADS
FLEXT_CADDATTR_VAR1(c,"detach",detach);
FLEXT_CADDATTR_VAR1(c,"prior",prior);
-#endif
}
V vasp_op::m_dobang()
@@ -194,12 +197,7 @@ V vasp_tx::m_bang()
{
Vasp *ret = x_work();
if(ret) {
- AtomList *lst = ret->MakeList(false);
- if(lst) {
- ToOutAnything(0,sym_vasp,lst->Count(),lst->Atoms());
- delete lst;
- }
- else
+ if(!ToOutVasp(0,*ret))
post("%s - empty list",thisName());
if(refresh) ret->Refresh();
delete ret;
diff --git a/externals/grill/vasp/source/classes.h b/externals/grill/vasp/source/classes.h
index d90e9beb..c0ecad32 100644
--- a/externals/grill/vasp/source/classes.h
+++ b/externals/grill/vasp/source/classes.h
@@ -46,6 +46,7 @@ protected:
*/
BL refresh; // immediate graphics refresh?
BL argchk; // pre-operation argument feasibility check
+ BL deferred; // queue outgoing vasp messages
xs_unit unit; // time units
I loglvl; // noise level for log messages
@@ -59,6 +60,7 @@ private:
FLEXT_CALLBACK_V(m_radio)
FLEXT_ATTRVAR_B(argchk)
+ FLEXT_ATTRVAR_B(deferred)
FLEXT_ATTRVAR_I(loglvl)
FLEXT_ATTRVAR_E(unit,xs_unit)
};
@@ -104,8 +106,6 @@ protected:
V Lock() { runmtx.Lock(); }
V Unlock() { runmtx.Unlock(); }
- BL detach; // detached operation?
- I prior; // thread priority
// thrid_t thrid;
#else
FLEXT_CALLBACK(m_bang)
@@ -113,6 +113,9 @@ protected:
V Lock() {}
V Unlock() {}
#endif
+ BL detach; // detached operation?
+ I prior; // thread priority
+
FLEXT_CALLBACK_V(m_vasp)
FLEXT_CALLBACK_V(m_set)
@@ -122,10 +125,8 @@ protected:
FLEXT_CALLBACK(m_stop)
FLEXT_CALLVAR_V(m_getupd,m_setupd)
-#ifdef FLEXT_THREADS
FLEXT_ATTRVAR_B(detach)
FLEXT_ATTRVAR_I(prior)
-#endif
private:
static V Setup(t_classid);
@@ -271,7 +272,7 @@ FLEXT_LIB("vasp," name,vasp_##op)
#define VASP_BINARY(name,op,to,def,help) \
-class vasp_ ## op: \
+class vasp_##op: \
public vasp_binop \
{ \
FLEXT_HEADER(vasp_##op,vasp_binop) \
@@ -290,7 +291,7 @@ FLEXT_LIB_V("vasp," name,vasp_##op)
#define VASP_ANYOP(name,op,args,to,def,help) \
-class vasp_ ## op: \
+class vasp_##op: \
public vasp_anyop \
{ \
FLEXT_HEADER(vasp_##op,vasp_anyop) \
diff --git a/externals/grill/vasp/source/main.cpp b/externals/grill/vasp/source/main.cpp
index f1cbee10..4539a13a 100644
--- a/externals/grill/vasp/source/main.cpp
+++ b/externals/grill/vasp/source/main.cpp
@@ -12,7 +12,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#include "classes.h"
-const C *VASP_VERSION = "0.1.3pre3";
+const C *VASP_VERSION = "0.1.3pre4";
#include "opfuns.h"
@@ -99,6 +99,8 @@ V lib_setup()
VASP__SETUP(abs)
VASP__SETUP(cabs)
+ VASP_SETUP(qsum)
+
VASP__SETUP(lwr)
VASP__SETUP(gtr)
VASP__SETUP(alwr)
diff --git a/externals/grill/vasp/source/obj_imm.cpp b/externals/grill/vasp/source/obj_imm.cpp
index 5b98a590..3e26677f 100644
--- a/externals/grill/vasp/source/obj_imm.cpp
+++ b/externals/grill/vasp/source/obj_imm.cpp
@@ -69,7 +69,7 @@ public:
{
ImmBuf ibuf(frms);
Vasp ret(frms,Vasp::Ref(ibuf));
- ToOutVasp(0,ret);
+ ToOutVasp(0,ret);
}
}
else if(ref.Vectors() > 1)
diff --git a/externals/grill/vasp/source/obj_part.cpp b/externals/grill/vasp/source/obj_part.cpp
index 2e7044d0..1e41a537 100644
--- a/externals/grill/vasp/source/obj_part.cpp
+++ b/externals/grill/vasp/source/obj_part.cpp
@@ -81,7 +81,7 @@ public:
return;
}
- I fr = ref.Frames(),o = 0;
+ I fr = ref.ChkFrames(),o = 0,f = 0;
for(I i = 0; i < parts && (fr < 0 || fr); ++i) {
I p = part[i];
if(fr >= 0) { p = min(p,fr); fr -= p; }
diff --git a/externals/grill/vasp/source/opfuns.h b/externals/grill/vasp/source/opfuns.h
index 3a14eb95..51b1fd06 100644
--- a/externals/grill/vasp/source/opfuns.h
+++ b/externals/grill/vasp/source/opfuns.h
@@ -121,7 +121,7 @@ namespace VecOp {
template<class T> class f_sqr {
public:
static I run_opt() { return 3; }
- static V run(T &v,T a) { v = a*a; post("sq"); }
+ static V run(T &v,T a) { v = a*a; }
static I cun_opt() { return 1; }
static V cun(T &rv,T &iv,T ra,T ia) { rv = ra*ra-ia*ia; iv = ra*ia*2; }
};
@@ -133,6 +133,15 @@ namespace VecOp {
};
+ template<class T> class f_sumq {
+ public:
+ static I rop_opt() { return 2; }
+ static V rop(T &,T ra,OpParam &p)
+ {
+ p.norm.minmax += ra;
+ }
+ };
+
// transcendent
template<class T> class f_powi {
diff --git a/externals/grill/vasp/source/ops_arith.cpp b/externals/grill/vasp/source/ops_arith.cpp
index fb8ad4b7..2239fc46 100644
--- a/externals/grill/vasp/source/ops_arith.cpp
+++ b/externals/grill/vasp/source/ops_arith.cpp
@@ -33,3 +33,47 @@ VASP_UNARY("vasp.ssqr",ssqr,true,"Calculates the square with preservation of the
VASP_UNARY("vasp.sign",sign,true,"Calculates the sign (signum function)")
VASP_UNARY("vasp.abs",abs,true,"Calculates the absolute value")
+
+
+/*! \class vasp_qsum
+ \remark \b vasp.sum?
+ \brief Get sum of sample values
+ \since 0.1.3
+ \param inlet vasp - is stored and output triggered
+ \param inlet bang - triggers output
+ \param inlet set - vasp to be stored
+ \retval outlet float - sample value sum
+
+ \todo Should we provide a cmdln default vasp?
+ \todo Should we inhibit output for invalid vasps?
+ \remark Returns 0 for a vasp with 0 frames
+*/
+class vasp_qsum:
+ public vasp_unop
+{
+ FLEXT_HEADER(vasp_qsum,vasp_unop)
+
+public:
+ vasp_qsum(): vasp_unop(true,XletCode(xlet::tp_float,0)) {}
+
+ virtual Vasp *do_opt(OpParam &p)
+ {
+ p.norm.minmax = 0;
+ CVasp cref(ref);
+ Vasp *ret = VaspOp::m_qsum(p,cref);
+ return ret;
+ }
+
+ virtual Vasp *tx_work()
+ {
+ OpParam p(thisName(),0);
+ Vasp *ret = do_opt(p);
+ ToOutFloat(1,p.norm.minmax);
+ return ret;
+ }
+
+ virtual V m_help() { post("%s - Get the sum of a vasp's sample values",thisName()); }
+};
+
+FLEXT_LIB("vasp, vasp.sum?",vasp_qsum)
+
diff --git a/externals/grill/vasp/source/ops_arith.h b/externals/grill/vasp/source/ops_arith.h
index 064ecb0e..dd8f88b3 100644
--- a/externals/grill/vasp/source/ops_arith.h
+++ b/externals/grill/vasp/source/ops_arith.h
@@ -2,7 +2,7 @@
VASP modular - vector assembling signal processor / objects for Max/MSP and PD
-Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
@@ -29,6 +29,8 @@ DEFOP(S,d_ssqr,ssqr,run)
DEFOP(S,d_sign,sign,run)
DEFOP(S,d_abs,abs,run)
+DEFOP(S,d_sumq,sumq,rop)
+
namespace VaspOp {
@@ -45,6 +47,8 @@ namespace VaspOp {
inline Vasp *m_sign(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_sign); } // sign function
inline Vasp *m_abs(OpParam &p,CVasp &src,CVasp *dst = NULL) { return m_run(p,src,dst,VecOp::d_abs); } // absolute values
+
+ inline Vasp *m_qsum(OpParam &p,CVasp &src) { return m_run(p,src,NULL,VecOp::d_sumq); } // get sum of sample values
}
#endif
diff --git a/externals/grill/vasp/source/ops_dft.cpp b/externals/grill/vasp/source/ops_dft.cpp
index 827c2a03..354f126b 100644
--- a/externals/grill/vasp/source/ops_dft.cpp
+++ b/externals/grill/vasp/source/ops_dft.cpp
@@ -62,7 +62,7 @@ static BL fft_fwd_real_any(I cnt,F *rsdt,I _rss,F *rddt,I _rds)
rstmp = rsdt;
istmp = new F[cnt];
- memset(istmp,0,cnt*sizeof(*istmp));
+ flext::ZeroMem(istmp,cnt*sizeof(*istmp));
F *rdtmp = rdt?new F[cnt]:rddt;
F *idtmp = new F[cnt];
diff --git a/externals/grill/vasp/source/ops_qminmax.cpp b/externals/grill/vasp/source/ops_qminmax.cpp
index f7e4144e..f834c2c3 100644
--- a/externals/grill/vasp/source/ops_qminmax.cpp
+++ b/externals/grill/vasp/source/ops_qminmax.cpp
@@ -240,3 +240,5 @@ public:
FLEXT_LIB("vasp, vasp.rmax?",vasp_qrmax)
+
+
diff --git a/externals/grill/vasp/todo/vasp-objects.csv b/externals/grill/vasp/todo/vasp-objects.csv
index f3757186..1787b432 100644
--- a/externals/grill/vasp/todo/vasp-objects.csv
+++ b/externals/grill/vasp/todo/vasp-objects.csv
@@ -83,6 +83,8 @@ vasp.sign;
vasp.abs;
vasp.cabs;
+vasp.qsum;vasp.sum?
+
vasp.lwr;vasp.<
vasp.gtr;vasp.>
vasp.leq;vasp.<=
diff --git a/externals/grill/vasp/vasp.cw b/externals/grill/vasp/vasp.cw
index 50e6b331..eca2842b 100644
--- a/externals/grill/vasp/vasp.cw
+++ b/externals/grill/vasp/vasp.cw
Binary files differ