aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/vasp/pd
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/vasp/pd')
-rw-r--r--externals/grill/vasp/pd/VASP-HELP.pd1155
-rw-r--r--externals/grill/vasp/pd/bass.aifbin0 -> 337210 bytes
-rw-r--r--externals/grill/vasp/pd/beat.aifbin0 -> 176468 bytes
-rw-r--r--externals/grill/vasp/pd/change2.pd25
-rw-r--r--externals/grill/vasp/pd/filelist.pd24
-rw-r--r--externals/grill/vasp/pd/filelisthandler.pd102
-rw-r--r--externals/grill/vasp/pd/filter_example.pd190
-rw-r--r--externals/grill/vasp/pd/filter_examplei.pd191
-rw-r--r--externals/grill/vasp/pd/fly.aifbin0 -> 353412 bytes
-rw-r--r--externals/grill/vasp/pd/phase-random_example.pd86
-rw-r--r--externals/grill/vasp/pd/plastic.aifbin0 -> 352518 bytes
-rw-r--r--externals/grill/vasp/pd/ringmod_example.pd63
-rw-r--r--externals/grill/vasp/pd/runden.pd27
-rw-r--r--externals/grill/vasp/pd/synchrodisplay.pd13
-rw-r--r--externals/grill/vasp/pd/vasp.clr0.pd12
-rw-r--r--externals/grill/vasp/pd/vasp.conv.pd28
-rw-r--r--externals/grill/vasp/pd/vasp.even.pd12
-rw-r--r--externals/grill/vasp/pd/vasp.freeze.pd22
-rw-r--r--externals/grill/vasp/pd/vasp.hilbert.pd28
-rw-r--r--externals/grill/vasp/pd/vasp.im.pd6
-rw-r--r--externals/grill/vasp/pd/vasp.lower.pd19
-rw-r--r--externals/grill/vasp/pd/vasp.odd.pd10
-rw-r--r--externals/grill/vasp/pd/vasp.opt.pd35
-rw-r--r--externals/grill/vasp/pd/vasp.ov.pd10
-rw-r--r--externals/grill/vasp/pd/vasp.pwrap.pd10
-rw-r--r--externals/grill/vasp/pd/vasp.re.pd6
-rw-r--r--externals/grill/vasp/pd/vasp.ropt.pd30
-rw-r--r--externals/grill/vasp/pd/vasp.spin.pd22
-rw-r--r--externals/grill/vasp/pd/vasp.upper.pd22
-rw-r--r--externals/grill/vasp/pd/vaspset_examples.pd109
-rw-r--r--externals/grill/vasp/pd/wavedisplay-select.pd617
-rw-r--r--externals/grill/vasp/pd/wavedisplay-simple.pd135
-rw-r--r--externals/grill/vasp/pd/xtilt_example.pd88
33 files changed, 3097 insertions, 0 deletions
diff --git a/externals/grill/vasp/pd/VASP-HELP.pd b/externals/grill/vasp/pd/VASP-HELP.pd
new file mode 100644
index 00000000..f60f4199
--- /dev/null
+++ b/externals/grill/vasp/pd/VASP-HELP.pd
@@ -0,0 +1,1155 @@
+#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;
diff --git a/externals/grill/vasp/pd/bass.aif b/externals/grill/vasp/pd/bass.aif
new file mode 100644
index 00000000..97a7851e
--- /dev/null
+++ b/externals/grill/vasp/pd/bass.aif
Binary files differ
diff --git a/externals/grill/vasp/pd/beat.aif b/externals/grill/vasp/pd/beat.aif
new file mode 100644
index 00000000..0967480d
--- /dev/null
+++ b/externals/grill/vasp/pd/beat.aif
Binary files differ
diff --git a/externals/grill/vasp/pd/change2.pd b/externals/grill/vasp/pd/change2.pd
new file mode 100644
index 00000000..2b93562d
--- /dev/null
+++ b/externals/grill/vasp/pd/change2.pd
@@ -0,0 +1,25 @@
+#N canvas 216 304 478 265 10;
+#X obj 121 46 inlet;
+#X obj 121 71 unpack;
+#X text 207 41 change for pairs;
+#X obj 193 155 t b f;
+#X obj 152 97 t f f;
+#X obj 117 97 t f f;
+#X obj 152 219 outlet;
+#X obj 152 191 pack 0 0;
+#X obj 121 133 sel \$1;
+#X obj 162 133 sel \$2;
+#X text 209 57 args: other default values than 0 0;
+#X text 249 240 used in vasp-help-patches;
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 4 0;
+#X connect 3 0 7 0;
+#X connect 3 1 7 1;
+#X connect 4 0 9 1;
+#X connect 4 1 9 0;
+#X connect 5 0 8 1;
+#X connect 5 1 8 0;
+#X connect 7 0 6 0;
+#X connect 8 1 7 0;
+#X connect 9 1 3 0;
diff --git a/externals/grill/vasp/pd/filelist.pd b/externals/grill/vasp/pd/filelist.pd
new file mode 100644
index 00000000..4d6366f6
--- /dev/null
+++ b/externals/grill/vasp/pd/filelist.pd
@@ -0,0 +1,24 @@
+#N canvas 100 100 118 78 10;
+#X obj 0 0 cnv 14 118 78 empty empty read 0 7 0 8 -262144 -66577 0
+;
+#X obj 34 16 hdl 14 0 524928 6 \$1-beat empty empty 0 -6 128 8 -262144
+-1 -1 3;
+#X obj 34 16 cnv 14 84 14 empty \$1-beat-color beat.aif 5 7 64 8 -166441
+-233017 8214;
+#X obj 34 32 hdl 14 0 524800 6 \$1-fly empty empty 0 -6 128 8 -262144
+-1 -1 3;
+#X obj 34 0 hdl 14 0 524928 6 \$1-bass empty empty 0 -6 128 8 -262144
+-1 -1 3;
+#X obj 34 0 cnv 14 84 14 empty \$1-bass-color bass.aif 5 7 64 8 -166441
+-233017 8214;
+#X obj 34 48 hdl 14 0 525312 6 \$1-plastic empty empty 0 -6 128 8 -262144
+-1 -1 3;
+#X obj 34 48 cnv 14 84 14 empty \$1-plastic-color plastic.aif 5 7 64
+8 -166441 -233017 8220;
+#X obj 34 64 hdl 14 0 524800 6 \$1-own empty empty 0 -6 128 8 -262144
+-1 -1 0;
+#X obj 34 64 cnv 14 84 14 empty \$1-own-color own_sample 5 7 64 8 -166441
+-233017 8212;
+#X obj 34 32 cnv 14 84 14 empty \$1-fly-color fly.aif 5 7 64 8 -166441
+-233017 8212;
+#X coords 0 0 1 1 118 78 1;
diff --git a/externals/grill/vasp/pd/filelisthandler.pd b/externals/grill/vasp/pd/filelisthandler.pd
new file mode 100644
index 00000000..3d7dbd11
--- /dev/null
+++ b/externals/grill/vasp/pd/filelisthandler.pd
@@ -0,0 +1,102 @@
+#N canvas 0 0 769 523 10;
+#X obj 38 390 outlet;
+#X msg 80 267 color \$1 \$2;
+#X msg 194 267 color \$1 \$2;
+#X msg 308 267 color \$1 \$2;
+#X msg 422 267 color \$1 \$2;
+#X obj 38 155 t b b b;
+#X obj 152 155 t b b b;
+#X obj 266 155 t b b b;
+#X obj 380 155 t b b b;
+#X msg 80 184 6 12;
+#X msg 48 184 1 10;
+#X msg 160 184 1 10;
+#X msg 194 184 6 12;
+#X msg 275 184 1 10;
+#X msg 308 184 6 12;
+#X msg 388 184 1 10;
+#X msg 422 184 6 12;
+#X msg 38 331 symbol bass.aif;
+#X msg 151 331 symbol beat.aif;
+#X msg 266 331 symbol fly.aif;
+#X msg 381 331 symbol plastic.aif;
+#X obj 532 61 inlet;
+#X obj 532 81 sel 1 2 3 4;
+#X text 517 35 for loadbang;
+#X obj 38 130 r \$1-bass;
+#X obj 152 130 r \$1-beat;
+#X obj 266 130 r \$1-fly;
+#X obj 380 130 r \$1-plastic;
+#X obj 80 292 s \$1-bass-color;
+#X obj 194 292 s \$1-beat-color;
+#X obj 308 292 s \$1-fly-color;
+#X obj 422 292 s \$1-plastic-color;
+#X text 164 397 used in connection with filelist. arg: \$0 of parent
+patch.;
+#X obj 516 331 openpanel;
+#X msg 558 266 color \$1 \$2;
+#X obj 516 154 t b b b;
+#X msg 524 183 1 10;
+#X msg 558 183 6 12;
+#X obj 558 291 s \$1-own-color;
+#X obj 516 129 r \$1-own;
+#X connect 1 0 28 0;
+#X connect 2 0 29 0;
+#X connect 3 0 30 0;
+#X connect 4 0 31 0;
+#X connect 5 0 17 0;
+#X connect 5 1 10 0;
+#X connect 5 2 9 0;
+#X connect 6 0 18 0;
+#X connect 6 1 11 0;
+#X connect 6 2 12 0;
+#X connect 7 0 19 0;
+#X connect 7 1 13 0;
+#X connect 7 2 14 0;
+#X connect 8 0 20 0;
+#X connect 8 1 15 0;
+#X connect 8 2 16 0;
+#X connect 9 0 1 0;
+#X connect 10 0 2 0;
+#X connect 10 0 3 0;
+#X connect 10 0 4 0;
+#X connect 10 0 34 0;
+#X connect 11 0 1 0;
+#X connect 11 0 3 0;
+#X connect 11 0 4 0;
+#X connect 11 0 34 0;
+#X connect 12 0 2 0;
+#X connect 13 0 1 0;
+#X connect 13 0 2 0;
+#X connect 13 0 4 0;
+#X connect 13 0 34 0;
+#X connect 14 0 3 0;
+#X connect 15 0 3 0;
+#X connect 15 0 2 0;
+#X connect 15 0 1 0;
+#X connect 15 0 34 0;
+#X connect 16 0 4 0;
+#X connect 17 0 0 0;
+#X connect 18 0 0 0;
+#X connect 19 0 0 0;
+#X connect 20 0 0 0;
+#X connect 21 0 22 0;
+#X connect 22 0 5 0;
+#X connect 22 1 6 0;
+#X connect 22 2 7 0;
+#X connect 22 3 8 0;
+#X connect 24 0 5 0;
+#X connect 25 0 6 0;
+#X connect 26 0 7 0;
+#X connect 27 0 8 0;
+#X connect 33 0 0 0;
+#X connect 34 0 38 0;
+#X connect 35 0 33 0;
+#X connect 35 1 36 0;
+#X connect 35 2 37 0;
+#X connect 36 0 4 0;
+#X connect 36 0 3 0;
+#X connect 36 0 2 0;
+#X connect 36 0 1 0;
+#X connect 37 0 34 0;
+#X connect 39 0 35 0;
diff --git a/externals/grill/vasp/pd/filter_example.pd b/externals/grill/vasp/pd/filter_example.pd
new file mode 100644
index 00000000..3a3f8438
--- /dev/null
+++ b/externals/grill/vasp/pd/filter_example.pd
@@ -0,0 +1,190 @@
+#N canvas 11 0 973 640 10;
+#X obj 75 32 cnv 15 15 15 empty empty filter_example 0 10 1 14 -262144
+-1 0;
+#X obj 523 555 dac~;
+#N canvas 0 0 413 295 clear_buffers 0;
+#X obj 49 73 vasp.= 0;
+#X obj 49 49 inlet;
+#X obj 49 97 vasp.u;
+#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X restore 657 556 pd clear_buffers;
+#X obj 304 113 filelist \$0;
+#X obj 67 133 vasp.noise;
+#X text 151 112 generate white noise or;
+#X obj 67 153 vasp.* 0.5;
+#X obj 67 173 vasp.update;
+#X obj 67 193 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 66 547 vasp.update;
+#X obj 66 567 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 66 527 vasp.c!fft;
+#X obj 67 241 vasp.cfft;
+#X obj 67 301 vasp.update;
+#X obj 67 321 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#N canvas 132 132 405 385 inside 0;
+#X obj 66 154 soundfiler;
+#X obj 84 238 s \$0-sample-length;
+#X obj 66 208 s \$0-draw_display;
+#X msg 214 206 resize \$1;
+#X obj 214 159 loadbang;
+#X obj 67 53 loadbang;
+#X msg 214 180 88200;
+#X obj 66 178 t b f f;
+#X obj 67 101 filelisthandler \$0;
+#X obj 214 228 s bufre1;
+#X obj 224 252 s bufim1;
+#X msg 67 133 read -resize \$1 bufre1;
+#X msg 67 79 3;
+#X connect 0 0 7 0;
+#X connect 3 0 9 0;
+#X connect 3 0 10 0;
+#X connect 4 0 6 0;
+#X connect 5 0 12 0;
+#X connect 6 0 3 0;
+#X connect 6 0 1 0;
+#X connect 7 0 2 0;
+#X connect 7 1 1 0;
+#X connect 7 2 3 0;
+#X connect 8 0 11 0;
+#X connect 11 0 0 0;
+#X connect 12 0 8 0;
+#X restore 813 559 pd inside;
+#X text 67 64 clear a region in the frequency domain to get a filter
+;
+#X msg 67 113 vasp bufre1;
+#X msg 67 221 vasp bufre1 bufim1;
+#X obj 67 261 vasp.upper;
+#X obj 67 281 vasp.= 0;
+#X obj 523 532 tabplay~ bufre1;
+#X msg 657 533 vasp bufre1 bufim1;
+#X text 157 283 clear upper (mirrored frequencies);
+#X text 539 374 0 Hz;
+#X text 677 379 sr/2;
+#X text 816 377 44.1 kHz;
+#X text 190 506 invers transform back to the time domain;
+#X obj 66 434 vasp.= 0;
+#X msg 66 414 set vasp \$1 bufre1 \$2 bufim1 \$2;
+#X obj 290 348 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 66 455 vasp.update;
+#X obj 66 475 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X msg 66 507 vasp bufre1 bufim1;
+#X obj 545 110 synchrodisplay bufre1 bufim1 \$0;
+#X text 818 94 real;
+#X text 789 235 imaginary;
+#X obj 545 395 s \$0-data;
+#N canvas 109 162 271 247 tovasp 0;
+#N canvas 0 0 577 409 conversion 0;
+#X obj 123 53 inlet;
+#X obj 123 93 unpack;
+#X obj 160 182 r \$0-sample-length;
+#X obj 123 242 / 1;
+#X obj 154 242 / 1;
+#X obj 123 268 * 44100;
+#X obj 202 207 loadbang;
+#X obj 202 230 samplerate~;
+#X obj 123 299 outlet;
+#X obj 180 269 * 44100;
+#X obj 180 300 outlet;
+#X obj 366 253 runden;
+#X obj 366 231 - 0;
+#X text 450 272 offset;
+#X obj 366 177 t b f;
+#X obj 366 206 0;
+#X obj 366 317 outlet;
+#X obj 123 116 t f f f;
+#X text 370 271 length;
+#X obj 447 254 runden;
+#X text 121 326 lb (Hz);
+#X text 183 325 rb (Hz);
+#X obj 366 295 pack;
+#X obj 123 73 change2;
+#X floatatom 459 223 12 0 0;
+#X floatatom 453 310 5 0 0;
+#X connect 0 0 23 0;
+#X connect 1 0 17 0;
+#X connect 1 1 4 0;
+#X connect 1 1 15 1;
+#X connect 2 0 3 1;
+#X connect 2 0 4 1;
+#X connect 3 0 5 0;
+#X connect 4 0 9 0;
+#X connect 5 0 8 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 1;
+#X connect 7 0 9 1;
+#X connect 9 0 10 0;
+#X connect 11 0 22 0;
+#X connect 12 0 11 0;
+#X connect 14 0 15 0;
+#X connect 14 1 12 1;
+#X connect 15 0 12 0;
+#X connect 17 0 3 0;
+#X connect 17 1 14 0;
+#X connect 17 2 19 0;
+#X connect 17 2 24 0;
+#X connect 19 0 22 1;
+#X connect 19 0 25 0;
+#X connect 22 0 16 0;
+#X connect 23 0 1 0;
+#X restore 89 64 pd conversion;
+#X obj 89 44 r \$0-data;
+#X obj 162 153 outlet;
+#X obj 89 98 s \$0-freqdisplayl;
+#X obj 125 124 s \$0-freqdisplayr;
+#X connect 0 0 3 0;
+#X connect 0 1 4 0;
+#X connect 0 2 2 0;
+#X connect 1 0 0 0;
+#X restore 66 393 pd tovasp;
+#X text 193 224 transform;
+#N canvas 0 0 140 20 Herznumbers 0;
+#X obj 0 0 cnv 15 140 20 empty empty empty 20 12 0 14 -262144 -66577
+0;
+#X floatatom 0 3 8 0 0;
+#X floatatom 83 3 8 0 0;
+#X obj 28 30 r \$0-freqdisplayl;
+#X obj 28 54 r \$0-freqdisplayr;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X coords 0 0 1 1 140 20 1;
+#X restore 642 434 pd Herznumbers;
+#X text 547 436 selection from;
+#X text 701 436 to;
+#X text 66 348 select a region (frequecy band) and;
+#X obj 523 512 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 545 509 play;
+#X text 657 511 clear;
+#X text 785 436 Hz;
+#X text 65 360 draw inside the wavedisplay and press spacebar (select)
+or "s" (shift).;
+#X connect 4 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 11 0 9 0;
+#X connect 12 0 19 0;
+#X connect 13 0 14 0;
+#X connect 17 0 4 0;
+#X connect 18 0 12 0;
+#X connect 19 0 20 0;
+#X connect 20 0 13 0;
+#X connect 21 0 1 0;
+#X connect 21 0 1 1;
+#X connect 22 0 2 0;
+#X connect 28 0 31 0;
+#X connect 29 0 28 0;
+#X connect 30 0 28 0;
+#X connect 31 0 32 0;
+#X connect 33 0 11 0;
+#X connect 34 0 37 0;
+#X connect 38 0 29 0;
+#X connect 44 0 21 0;
diff --git a/externals/grill/vasp/pd/filter_examplei.pd b/externals/grill/vasp/pd/filter_examplei.pd
new file mode 100644
index 00000000..8ab0fd5b
--- /dev/null
+++ b/externals/grill/vasp/pd/filter_examplei.pd
@@ -0,0 +1,191 @@
+#N canvas 11 0 977 644 10;
+#X obj 75 32 cnv 15 15 15 empty empty filter_example! 0 10 1 14 -262144
+-1 0;
+#X obj 523 555 dac~;
+#N canvas 0 0 413 295 clear_buffers 0;
+#X obj 49 73 vasp.= 0;
+#X obj 49 49 inlet;
+#X obj 49 97 vasp.u;
+#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X restore 657 556 pd clear_buffers;
+#X obj 304 113 filelist \$0;
+#X obj 67 133 vasp.noise;
+#X text 151 112 generate white noise or;
+#X obj 67 153 vasp.* 0.5;
+#X obj 67 173 vasp.update;
+#X obj 67 193 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 66 557 vasp.update;
+#X obj 66 577 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 66 537 vasp.c!fft;
+#X obj 67 241 vasp.cfft;
+#X obj 67 301 vasp.update;
+#X obj 67 321 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#N canvas 132 132 409 389 inside 0;
+#X obj 66 154 soundfiler;
+#X obj 84 238 s \$0-sample-length;
+#X obj 66 208 s \$0-draw_display;
+#X msg 214 206 resize \$1;
+#X obj 214 159 loadbang;
+#X obj 67 53 loadbang;
+#X msg 214 180 88200;
+#X obj 66 178 t b f f;
+#X obj 67 101 filelisthandler \$0;
+#X msg 67 79 3;
+#X msg 67 133 read -resize \$1 bufrei1;
+#X obj 214 228 s bufrei1;
+#X obj 224 252 s bufimi1;
+#X connect 0 0 7 0;
+#X connect 3 0 11 0;
+#X connect 3 0 12 0;
+#X connect 4 0 6 0;
+#X connect 5 0 9 0;
+#X connect 6 0 3 0;
+#X connect 6 0 1 0;
+#X connect 7 0 2 0;
+#X connect 7 1 1 0;
+#X connect 7 2 3 0;
+#X connect 8 0 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 0 0;
+#X restore 813 559 pd inside;
+#X obj 67 261 vasp.upper;
+#X obj 67 281 vasp.= 0;
+#X text 157 283 clear upper (mirrored frequencies);
+#X text 536 375 0 Hz;
+#X text 674 379 sr/2;
+#X text 813 377 44.1 kHz;
+#X text 198 515 invers transform back to the time domain;
+#X obj 424 352 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 66 465 vasp.update;
+#X obj 66 485 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 544 395 s \$0-data;
+#N canvas 109 162 271 247 tovasp 0;
+#N canvas 0 0 577 409 conversion 0;
+#X obj 123 53 inlet;
+#X obj 123 93 unpack;
+#X obj 160 182 r \$0-sample-length;
+#X obj 123 242 / 1;
+#X obj 154 242 / 1;
+#X obj 123 268 * 44100;
+#X obj 202 207 loadbang;
+#X obj 202 230 samplerate~;
+#X obj 123 299 outlet;
+#X obj 180 269 * 44100;
+#X obj 180 300 outlet;
+#X obj 366 253 runden;
+#X obj 366 231 - 0;
+#X text 450 272 offset;
+#X obj 366 177 t b f;
+#X obj 366 206 0;
+#X obj 366 317 outlet;
+#X obj 123 116 t f f f;
+#X text 370 271 length;
+#X obj 447 254 runden;
+#X text 121 326 lb (Hz);
+#X text 183 325 rb (Hz);
+#X obj 366 295 pack;
+#X obj 123 73 change2;
+#X floatatom 459 223 12 0 0 0 - - -;
+#X floatatom 453 310 5 0 0 0 - - -;
+#X connect 0 0 23 0;
+#X connect 1 0 17 0;
+#X connect 1 1 4 0;
+#X connect 1 1 15 1;
+#X connect 2 0 3 1;
+#X connect 2 0 4 1;
+#X connect 3 0 5 0;
+#X connect 4 0 9 0;
+#X connect 5 0 8 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 1;
+#X connect 7 0 9 1;
+#X connect 9 0 10 0;
+#X connect 11 0 22 0;
+#X connect 12 0 11 0;
+#X connect 14 0 15 0;
+#X connect 14 1 12 1;
+#X connect 15 0 12 0;
+#X connect 17 0 3 0;
+#X connect 17 1 14 0;
+#X connect 17 2 19 0;
+#X connect 17 2 24 0;
+#X connect 19 0 22 1;
+#X connect 19 0 25 0;
+#X connect 22 0 16 0;
+#X connect 23 0 1 0;
+#X restore 89 64 pd conversion;
+#X obj 89 44 r \$0-data;
+#X obj 162 153 outlet;
+#X obj 89 98 s \$0-freqdisplayl;
+#X obj 125 124 s \$0-freqdisplayr;
+#X connect 0 0 3 0;
+#X connect 0 1 4 0;
+#X connect 0 2 2 0;
+#X connect 1 0 0 0;
+#X restore 66 403 pd tovasp;
+#N canvas 0 0 140 20 Herznumbers 0;
+#X obj 0 0 cnv 15 140 20 empty empty empty 20 12 0 14 -262144 -66577
+0;
+#X floatatom 0 3 8 0 0 0 - - -;
+#X floatatom 83 3 8 0 0 0 - - -;
+#X obj 28 30 r \$0-freqdisplayl;
+#X obj 28 54 r \$0-freqdisplayr;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X coords 0 0 1 1 140 20 1;
+#X restore 642 434 pd Herznumbers;
+#X text 547 436 selection from;
+#X text 701 436 to;
+#X obj 523 512 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 545 509 play;
+#X text 657 511 clear;
+#X text 785 436 Hz;
+#X text 65 370 draw inside the wavedisplay and press spacebar (select)
+or "s" (shift).;
+#X msg 67 221 vasp bufrei1 bufimi1;
+#X msg 66 424 set vasp \$1 bufrei1 \$2 bufimi1 \$2;
+#X msg 66 517 vasp bufrei1 bufimi1;
+#X msg 657 533 vasp bufrei1 bufimi1;
+#X msg 67 113 vasp bufrei1;
+#X text 67 64 change gain of a region in the frequency domain to filter
+a buffer content;
+#X text 205 221 transform to frequency domain;
+#X text 65 355 select a region (frequecy band) \, a gainfactor;
+#X floatatom 348 353 5 0 0 0 - - -;
+#X obj 66 444 vasp.* 1;
+#X text 395 353 and;
+#X obj 544 113 synchrodisplay bufrei1 bufimi1 \$0;
+#X obj 523 532 tabplay~ bufrei1;
+#X connect 4 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 11 0 9 0;
+#X connect 12 0 16 0;
+#X connect 13 0 14 0;
+#X connect 16 0 17 0;
+#X connect 17 0 13 0;
+#X connect 23 0 45 0;
+#X connect 24 0 25 0;
+#X connect 27 0 37 0;
+#X connect 31 0 48 0;
+#X connect 36 0 12 0;
+#X connect 37 0 45 0;
+#X connect 38 0 11 0;
+#X connect 39 0 2 0;
+#X connect 40 0 4 0;
+#X connect 44 0 45 1;
+#X connect 45 0 24 0;
+#X connect 47 0 26 0;
+#X connect 48 0 1 0;
+#X connect 48 0 1 1;
diff --git a/externals/grill/vasp/pd/fly.aif b/externals/grill/vasp/pd/fly.aif
new file mode 100644
index 00000000..0439b85a
--- /dev/null
+++ b/externals/grill/vasp/pd/fly.aif
Binary files differ
diff --git a/externals/grill/vasp/pd/phase-random_example.pd b/externals/grill/vasp/pd/phase-random_example.pd
new file mode 100644
index 00000000..740f9ea4
--- /dev/null
+++ b/externals/grill/vasp/pd/phase-random_example.pd
@@ -0,0 +1,86 @@
+#N canvas 77 150 893 542 10;
+#X obj 75 32 cnv 15 15 15 empty empty phase-random_example 0 10 1 14
+-262144 -1 0;
+#N canvas 92 108 411 413 inside 0;
+#X obj 66 154 soundfiler;
+#X obj 84 238 s \$0-sample-length;
+#X obj 66 208 s \$0-draw_display;
+#X msg 214 206 resize \$1;
+#X obj 214 159 loadbang;
+#X obj 67 53 loadbang;
+#X msg 214 180 88200;
+#X obj 66 178 t b f f;
+#X obj 67 101 filelisthandler \$0;
+#X obj 214 228 s bufpol3;
+#X msg 67 133 read -resize \$1 bufpol3;
+#X msg 67 79 3;
+#X obj 226 254 s bufpol4;
+#X connect 0 0 7 0;
+#X connect 3 0 9 0;
+#X connect 3 0 12 0;
+#X connect 4 0 6 0;
+#X connect 5 0 11 0;
+#X connect 6 0 3 0;
+#X connect 6 0 1 0;
+#X connect 7 0 2 0;
+#X connect 7 1 1 0;
+#X connect 7 2 3 0;
+#X connect 8 0 10 0;
+#X connect 10 0 0 0;
+#X connect 11 0 8 0;
+#X restore 781 472 pd inside;
+#X obj 427 469 dac~;
+#N canvas 0 0 413 295 clear_buffers 0;
+#X obj 49 73 vasp.= 0;
+#X obj 49 49 inlet;
+#X obj 49 97 vasp.u;
+#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X restore 561 469 pd clear_buffers;
+#X obj 427 426 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 449 423 play;
+#X text 561 424 clear;
+#X obj 495 192 wavedisplay-simple bufpol3 \$0;
+#X obj 69 95 filelist \$0;
+#X obj 427 446 tabplay~ bufpol3;
+#X msg 68 188 vasp bufpol3 bufpol4;
+#X obj 68 213 vasp.cfft;
+#X obj 68 237 vasp.polar;
+#X obj 68 261 vasp.split 2;
+#X obj 101 284 vasp.noise;
+#X obj 101 308 vasp.* 3.14159;
+#X obj 68 336 vasp.join 2;
+#X obj 68 359 vasp.rect;
+#X obj 68 381 vasp.c!fft;
+#X obj 68 405 vasp.update;
+#X obj 68 428 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 720 449 table bufpol4 88200;
+#X msg 561 446 vasp bufpol3 bufpol4;
+#X text 157 213 complex fourier transformation;
+#X text 158 236 cartesian to polar coordinate conversion;
+#X text 158 258 split amplitude and phase;
+#X text 202 280 random phase;
+#X text 205 307 scale from 0 to 2*Pi;
+#X text 156 335 polar to cartesian coordinate conversion;
+#X obj 69 472 vasp.freeze;
+#X text 152 472 is an abstraction that does the same;
+#X connect 4 0 9 0;
+#X connect 9 0 2 0;
+#X connect 9 0 2 1;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 16 0;
+#X connect 13 1 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 1;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 22 0 3 0;
diff --git a/externals/grill/vasp/pd/plastic.aif b/externals/grill/vasp/pd/plastic.aif
new file mode 100644
index 00000000..06237c02
--- /dev/null
+++ b/externals/grill/vasp/pd/plastic.aif
Binary files differ
diff --git a/externals/grill/vasp/pd/ringmod_example.pd b/externals/grill/vasp/pd/ringmod_example.pd
new file mode 100644
index 00000000..5ed9c3c0
--- /dev/null
+++ b/externals/grill/vasp/pd/ringmod_example.pd
@@ -0,0 +1,63 @@
+#N canvas 34 28 860 444 10;
+#X obj 71 32 cnv 15 15 15 empty empty ringmod_example 0 10 1 14 -262144
+-1 0;
+#X obj 73 283 vasp.update;
+#X obj 391 309 dac~;
+#X obj 391 265 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 413 264 play;
+#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 523 309 pd clear_buffer;
+#X obj 73 306 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 428 95 wavedisplay-simple bufmosc1 \$0;
+#X msg 73 215 vasp bufmosc1;
+#X obj 73 260 vasp.*osc 220;
+#X text 177 214 modulate with 200 Hz;
+#X msg 523 286 vasp bufmosc1;
+#X obj 391 286 tabplay~ bufmosc1;
+#N canvas 92 108 388 353 inside 0;
+#X obj 66 154 soundfiler;
+#X obj 84 238 s \$0-sample-length;
+#X obj 66 208 s \$0-draw_display;
+#X msg 214 206 resize \$1;
+#X obj 214 159 loadbang;
+#X obj 66 50 loadbang;
+#X msg 214 180 88200;
+#X obj 66 178 t b f f;
+#X obj 66 98 filelisthandler \$0;
+#X msg 66 76 3;
+#X obj 214 228 s bufmosc1;
+#X msg 66 130 read -resize \$1 bufmosc1;
+#X connect 0 0 7 0;
+#X connect 3 0 10 0;
+#X connect 4 0 6 0;
+#X connect 5 0 9 0;
+#X connect 6 0 3 0;
+#X connect 6 0 1 0;
+#X connect 7 0 2 0;
+#X connect 7 1 1 0;
+#X connect 7 2 3 0;
+#X connect 8 0 11 0;
+#X connect 9 0 8 0;
+#X connect 11 0 0 0;
+#X restore 682 310 pd inside;
+#X floatatom 146 239 5 0 0;
+#X text 192 238 value;
+#X obj 79 99 filelist \$0;
+#X connect 1 0 6 0;
+#X connect 3 0 12 0;
+#X connect 8 0 9 0;
+#X connect 9 0 1 0;
+#X connect 11 0 5 0;
+#X connect 12 0 2 0;
+#X connect 12 0 2 1;
+#X connect 14 0 9 1;
diff --git a/externals/grill/vasp/pd/runden.pd b/externals/grill/vasp/pd/runden.pd
new file mode 100644
index 00000000..e73faeb5
--- /dev/null
+++ b/externals/grill/vasp/pd/runden.pd
@@ -0,0 +1,27 @@
+#N canvas 25 60 429 365 10;
+#X msg 159 115 10;
+#X obj 159 92 loadbang;
+#X obj 159 137 pow \$1;
+#X obj 79 120 * 1;
+#X obj 79 90 inlet;
+#X obj 120 167 / 1;
+#X msg 120 145 1;
+#X obj 79 145 + 0.5;
+#X obj 79 170 div;
+#X obj 79 217 outlet;
+#X obj 79 193 * 1;
+#X text 41 297 rounds to a certain number of kommadigits;
+#X text 32 267 USE: arg for number of kommavalues(?) default = 0;
+#X text 41 309 0.123456 --> runden 2 --> 0.12;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 1;
+#X connect 2 0 5 1;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 10 1;
+#X connect 6 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 10 0;
+#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/synchrodisplay.pd b/externals/grill/vasp/pd/synchrodisplay.pd
new file mode 100644
index 00000000..39a93222
--- /dev/null
+++ b/externals/grill/vasp/pd/synchrodisplay.pd
@@ -0,0 +1,13 @@
+#N canvas 134 215 300 250 10;
+#X text 440 100 synchronizes two displays.;
+#X text 440 110 args: buffername1 buffername2 \$0 of parent patch;
+#X obj 0 0 cnv 15 304 250 empty empty empty 20 12 0 14 -262144 -66577
+0;
+#X obj -2 0 wavedisplay-select \$1 \$3;
+#X obj -2 142 wavedisplay-select \$2 \$3;
+#X obj 363 225 outlet;
+#X connect 3 0 5 0;
+#X connect 3 1 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 3 0;
+#X coords 0 0 1 1 300 250 1;
diff --git a/externals/grill/vasp/pd/vasp.clr0.pd b/externals/grill/vasp/pd/vasp.clr0.pd
new file mode 100644
index 00000000..188b3667
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.clr0.pd
@@ -0,0 +1,12 @@
+#N canvas 371 329 454 304 12;
+#X obj 47 36 inlet;
+#X obj 48 181 outlet;
+#X obj 48 149 vasp.sync 2;
+#X obj 110 82 vasp.frames 1;
+#X obj 110 109 vasp.= 0;
+#X text 44 1 clears the sample 0;
+#X connect 0 0 2 0;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 1;
diff --git a/externals/grill/vasp/pd/vasp.conv.pd b/externals/grill/vasp/pd/vasp.conv.pd
new file mode 100644
index 00000000..93390159
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.conv.pd
@@ -0,0 +1,28 @@
+#N canvas 30 70 406 306 12;
+#X obj 53 224 vasp.c!fft;
+#X obj 162 131 vasp.sync 2;
+#X obj 178 104 vasp.= 0;
+#X obj 179 80 vasp.im;
+#X obj 161 158 vasp.cfft;
+#X obj 54 198 vasp.c*;
+#X obj 54 131 vasp.sync 2;
+#X obj 70 104 vasp.= 0;
+#X obj 71 80 vasp.im;
+#X obj 53 158 vasp.cfft;
+#X obj 54 51 inlet;
+#X obj 168 52 inlet;
+#X obj 52 252 outlet;
+#X connect 0 0 12 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 3 0 2 0;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 1;
+#X connect 8 0 7 0;
+#X connect 9 0 5 0;
+#X connect 10 0 6 0;
+#X connect 10 0 8 0;
+#X connect 11 0 1 0;
+#X connect 11 0 3 0;
diff --git a/externals/grill/vasp/pd/vasp.even.pd b/externals/grill/vasp/pd/vasp.even.pd
new file mode 100644
index 00000000..d93030c4
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.even.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 247 229 12;
+#X obj 40 15 inlet;
+#X obj 40 48 vasp.frames?;
+#X obj 40 80 % 2;
+#X obj 40 110 == 0;
+#X obj 40 142 outlet;
+#X text 130 106 1 if even;
+#X text 131 131 0 if odd;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
diff --git a/externals/grill/vasp/pd/vasp.freeze.pd b/externals/grill/vasp/pd/vasp.freeze.pd
new file mode 100644
index 00000000..5c7f89e2
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.freeze.pd
@@ -0,0 +1,22 @@
+#N canvas 641 14 270 354 12;
+#X obj 27 46 vasp.cfft;
+#X obj 108 133 vasp.noise;
+#X obj 27 104 vasp.split 2;
+#X obj 27 190 vasp.join 2;
+#X obj 27 8 inlet;
+#X obj 27 286 outlet;
+#X obj 27 74 vasp.polar;
+#X obj 106 160 vasp.* 3.14159;
+#X text 88 7 produce static sound;
+#X obj 27 254 vasp.c!fft;
+#X obj 27 220 vasp.rect;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 2 1 1 0;
+#X connect 3 0 10 0;
+#X connect 4 0 0 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 1;
+#X connect 9 0 5 0;
+#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/vasp.hilbert.pd b/externals/grill/vasp/pd/vasp.hilbert.pd
new file mode 100644
index 00000000..875484b4
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.hilbert.pd
@@ -0,0 +1,28 @@
+#N canvas 449 154 295 470 12;
+#X obj 20 35 inlet;
+#X obj 20 335 outlet;
+#X obj 20 150 vasp.cfft;
+#X obj 125 225 vasp.= 0;
+#X text 19 8 Hilbert transformation;
+#X obj 125 197 vasp.upper;
+#X obj 54 63 vasp.im;
+#X obj 54 91 vasp.= 0;
+#X obj 20 120 vasp.sync 2;
+#X obj 20 301 vasp.c!fft;
+#X obj 20 269 vasp.sync 3;
+#X obj 33 197 vasp.lower;
+#X obj 33 225 vasp.* 2;
+#X connect 0 0 6 0;
+#X connect 0 0 8 0;
+#X connect 2 0 10 0;
+#X connect 2 0 5 0;
+#X connect 2 0 11 0;
+#X connect 3 0 10 2;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 2 0;
+#X connect 9 0 1 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 1;
diff --git a/externals/grill/vasp/pd/vasp.im.pd b/externals/grill/vasp/pd/vasp.im.pd
new file mode 100644
index 00000000..a0ba9480
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.im.pd
@@ -0,0 +1,6 @@
+#N canvas 409 205 190 154 12;
+#X obj 38 17 inlet;
+#X obj 39 90 outlet;
+#X obj 39 53 vasp.n 1;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/externals/grill/vasp/pd/vasp.lower.pd b/externals/grill/vasp/pd/vasp.lower.pd
new file mode 100644
index 00000000..2c12dd09
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.lower.pd
@@ -0,0 +1,19 @@
+#N canvas 42 186 290 378 12;
+#X obj 117 129 vasp.frames?;
+#X obj 23 224 vasp.frames;
+#X obj 23 35 inlet;
+#X obj 23 254 outlet;
+#X text 24 9 lower half of a vasp;
+#X obj 117 162 / 2;
+#X obj 117 192 + 0.9;
+#X text 164 191 round up;
+#X obj 64 101 vasp.radio;
+#X obj 22 71 vasp.multi;
+#X connect 0 0 5 0;
+#X connect 1 0 3 0;
+#X connect 2 0 9 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 1;
+#X connect 8 1 0 0;
+#X connect 9 0 1 0;
+#X connect 9 1 8 0;
diff --git a/externals/grill/vasp/pd/vasp.odd.pd b/externals/grill/vasp/pd/vasp.odd.pd
new file mode 100644
index 00000000..fe2327c5
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.odd.pd
@@ -0,0 +1,10 @@
+#N canvas 0 0 198 227 12;
+#X obj 40 15 inlet;
+#X obj 40 48 vasp.frames?;
+#X obj 40 80 % 2;
+#X obj 40 142 outlet;
+#X obj 39 110 != 0;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 4 0 3 0;
diff --git a/externals/grill/vasp/pd/vasp.opt.pd b/externals/grill/vasp/pd/vasp.opt.pd
new file mode 100644
index 00000000..283d24da
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.opt.pd
@@ -0,0 +1,35 @@
+#N canvas 504 38 462 476 12;
+#X obj 27 11 inlet;
+#X obj 90 158 vasp.amax?;
+#X obj 35 206 route 0 1;
+#X obj 107 393 outlet;
+#X obj 165 393 outlet;
+#X obj 27 306 vasp;
+#X obj 47 255 t b;
+#X obj 90 116 vasp.m 2;
+#X obj 105 345 vasp./;
+#X obj 117 253 t b f;
+#X obj 106 301 vasp;
+#X obj 90 78 vasp;
+#X text 131 79 catch messages ("to" not handled);
+#X obj 28 41 vasp.radio;
+#X connect 0 0 13 0;
+#X connect 1 1 2 0;
+#X connect 1 1 4 0;
+#X connect 2 0 6 0;
+#X connect 2 1 6 0;
+#X connect 2 2 9 0;
+#X connect 5 0 3 0;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 7 1 5 1;
+#X connect 7 1 10 1;
+#X connect 8 0 3 0;
+#X connect 9 0 10 0;
+#X connect 9 1 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 7 0;
+#X connect 13 0 10 0;
+#X connect 13 0 5 0;
+#X connect 13 0 1 0;
+#X connect 13 1 11 0;
diff --git a/externals/grill/vasp/pd/vasp.ov.pd b/externals/grill/vasp/pd/vasp.ov.pd
new file mode 100644
index 00000000..f70adaa2
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.ov.pd
@@ -0,0 +1,10 @@
+#N canvas 38 67 456 306 12;
+#X obj 28 23 inlet;
+#X obj 26 80 vasp.update;
+#X obj 29 111 outlet;
+#X obj 27 51 vasp.opt;
+#X obj 98 112 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
+#X connect 3 1 4 0;
diff --git a/externals/grill/vasp/pd/vasp.pwrap.pd b/externals/grill/vasp/pd/vasp.pwrap.pd
new file mode 100644
index 00000000..83ea062d
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.pwrap.pd
@@ -0,0 +1,10 @@
+#N canvas 40 55 404 304 12;
+#X obj 50 149 vasp.- 3.14159;
+#X obj 50 120 vasp.% 6.28319;
+#X obj 50 88 vasp.+ 3.14159;
+#X obj 50 49 inlet;
+#X obj 50 223 outlet;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
diff --git a/externals/grill/vasp/pd/vasp.re.pd b/externals/grill/vasp/pd/vasp.re.pd
new file mode 100644
index 00000000..1e18c922
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.re.pd
@@ -0,0 +1,6 @@
+#N canvas 409 205 190 154 12;
+#X obj 38 17 inlet;
+#X obj 39 53 vasp.n 0;
+#X obj 39 90 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
diff --git a/externals/grill/vasp/pd/vasp.ropt.pd b/externals/grill/vasp/pd/vasp.ropt.pd
new file mode 100644
index 00000000..f02e5cd0
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.ropt.pd
@@ -0,0 +1,30 @@
+#N canvas 50 31 462 451 12;
+#X obj 114 14 inlet;
+#X obj 114 42 vasp;
+#X text 154 41 catch messages ("to" not handled);
+#X obj 84 169 route 0 1;
+#X obj 85 302 vasp;
+#X obj 85 238 t b;
+#X obj 108 89 vasp.m 2;
+#X obj 165 221 t b f;
+#X obj 110 126 vasp.rmax?;
+#X obj 151 309 vasp.c/;
+#X obj 155 270 vasp;
+#X obj 117 390 outlet;
+#X obj 277 397 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 6 0;
+#X connect 3 0 5 0;
+#X connect 3 1 5 0;
+#X connect 3 2 7 0;
+#X connect 4 0 11 0;
+#X connect 5 0 4 0;
+#X connect 6 0 8 0;
+#X connect 6 1 4 1;
+#X connect 6 1 10 1;
+#X connect 7 0 10 0;
+#X connect 7 1 9 1;
+#X connect 8 1 3 0;
+#X connect 8 1 12 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/vasp.spin.pd b/externals/grill/vasp/pd/vasp.spin.pd
new file mode 100644
index 00000000..a2c55273
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.spin.pd
@@ -0,0 +1,22 @@
+#N canvas 486 219 326 391 12;
+#X obj 71 171 vasp.pwrap;
+#X obj 25 285 vasp.rect;
+#X obj 25 259 vasp.join 2;
+#X obj 71 223 vasp.int;
+#X obj 71 197 vasp.* \$1;
+#X obj 70 145 vasp.dif;
+#X obj 25 81 vasp.polar;
+#X obj 25 110 vasp.split 2;
+#X text 26 31 multiply phase velocity by argument factor;
+#X obj 25 56 inlet;
+#X obj 24 316 outlet;
+#X connect 0 0 4 0;
+#X connect 1 0 10 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X connect 4 0 3 0;
+#X connect 5 0 0 0;
+#X connect 6 0 7 0;
+#X connect 7 0 2 0;
+#X connect 7 1 5 0;
+#X connect 9 0 6 0;
diff --git a/externals/grill/vasp/pd/vasp.upper.pd b/externals/grill/vasp/pd/vasp.upper.pd
new file mode 100644
index 00000000..415fc267
--- /dev/null
+++ b/externals/grill/vasp/pd/vasp.upper.pd
@@ -0,0 +1,22 @@
+#N canvas 488 210 290 362 12;
+#X obj 87 158 / 2;
+#X obj 22 34 inlet;
+#X obj 22 300 outlet;
+#X text 18 6 upper half of a vasp;
+#X obj 125 191 + 0.9;
+#X text 175 191 round up;
+#X obj 59 98 vasp.radio;
+#X obj 22 66 vasp.multi;
+#X obj 88 130 vasp.frames?;
+#X obj 22 264 vasp.frames;
+#X obj 22 222 vasp.offset+;
+#X connect 0 0 4 0;
+#X connect 0 0 9 1;
+#X connect 1 0 7 0;
+#X connect 4 0 10 1;
+#X connect 6 1 8 0;
+#X connect 7 0 10 0;
+#X connect 7 1 6 0;
+#X connect 8 0 0 0;
+#X connect 9 0 2 0;
+#X connect 10 0 9 0;
diff --git a/externals/grill/vasp/pd/vaspset_examples.pd b/externals/grill/vasp/pd/vaspset_examples.pd
new file mode 100644
index 00000000..706f5474
--- /dev/null
+++ b/externals/grill/vasp/pd/vaspset_examples.pd
@@ -0,0 +1,109 @@
+#N canvas 27 56 975 554 10;
+#X obj 519 287 wavedisplay-simple bufsetb \$0;
+#X obj 519 265 r bufsetb-length;
+#X obj 71 125 filelist \$0;
+#N canvas 92 108 429 349 inside 0;
+#X obj 66 154 soundfiler;
+#X obj 84 238 s \$0-sample-length;
+#X obj 66 208 s \$0-draw_display;
+#X msg 214 206 resize \$1;
+#X obj 66 52 loadbang;
+#X obj 66 178 t b f f;
+#X obj 66 100 filelisthandler \$0;
+#X msg 66 78 2;
+#X msg 66 132 read -resize \$1 bufseta;
+#X obj 214 237 s bufseta;
+#X obj 279 238 s bufsetb;
+#X connect 0 0 5 0;
+#X connect 3 0 9 0;
+#X connect 3 0 10 0;
+#X connect 4 0 7 0;
+#X connect 5 0 2 0;
+#X connect 5 1 1 0;
+#X connect 5 2 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 0 0;
+#X restore 780 485 pd inside;
+#X obj 515 83 wavedisplay-select bufseta \$0;
+#X text 467 82 A;
+#X text 465 286 B;
+#X text 67 46 use vasp.= to copy from buffer a to buffer b;
+#X text 92 218 choose a selection from buffer a;
+#X obj 94 450 vasp.= 0;
+#X obj 94 297 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 94 473 vasp.update;
+#X obj 94 493 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#N canvas 117 414 435 378 to_length_offset 0;
+#X obj 154 309 outlet;
+#X obj 107 92 unpack;
+#X obj 107 232 runden;
+#X obj 107 210 - 0;
+#X text 176 249 offset;
+#X obj 107 156 t b f;
+#X obj 107 185 0;
+#X text 111 250 length;
+#X obj 173 231 runden;
+#X obj 154 278 pack;
+#X obj 107 72 change2;
+#X obj 107 115 t f f;
+#X obj 107 47 inlet;
+#X obj 107 309 outlet;
+#X obj 200 75 unpack;
+#X floatatom 190 112 12 0 0 0 - - -;
+#X floatatom 278 112 12 0 0 0 - - -;
+#X floatatom 194 149 12 0 0 0 - - -;
+#X floatatom 282 149 12 0 0 0 - - -;
+#X connect 1 0 11 0;
+#X connect 1 0 17 0;
+#X connect 1 1 6 1;
+#X connect 1 1 18 0;
+#X connect 2 0 9 0;
+#X connect 2 0 13 0;
+#X connect 3 0 2 0;
+#X connect 5 0 6 0;
+#X connect 5 1 3 1;
+#X connect 6 0 3 0;
+#X connect 8 0 9 1;
+#X connect 9 0 0 0;
+#X connect 10 0 1 0;
+#X connect 11 0 5 0;
+#X connect 11 1 8 0;
+#X connect 12 0 10 0;
+#X connect 12 0 14 0;
+#X connect 14 0 15 0;
+#X connect 14 1 16 0;
+#X restore 324 287 pd to_length_offset;
+#X msg 94 423 vasp \$1 bufsetb;
+#X msg 211 423 vasp \$1 bufseta \$2;
+#X obj 94 322 0;
+#X obj 94 348 t f f;
+#X obj 119 371 s bufsetb-length;
+#N canvas 0 0 413 295 clear_buffers 0;
+#X obj 49 73 vasp.= 0;
+#X obj 49 49 inlet;
+#X obj 49 97 vasp.u;
+#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X restore 532 483 pd clear_buffers;
+#X msg 532 457 vasp bufseta \, vasp bufsetb;
+#X text 495 50 space-bar + mouse to select \, "s" + mouse to shift
+selection;
+#X connect 1 0 0 0;
+#X connect 4 0 13 0;
+#X connect 9 0 11 0;
+#X connect 10 0 16 0;
+#X connect 11 0 12 0;
+#X connect 13 0 16 1;
+#X connect 13 1 15 0;
+#X connect 14 0 9 0;
+#X connect 15 0 9 1;
+#X connect 16 0 17 0;
+#X connect 17 0 14 0;
+#X connect 17 1 18 0;
+#X connect 20 0 19 0;
diff --git a/externals/grill/vasp/pd/wavedisplay-select.pd b/externals/grill/vasp/pd/wavedisplay-select.pd
new file mode 100644
index 00000000..04b92cc9
--- /dev/null
+++ b/externals/grill/vasp/pd/wavedisplay-select.pd
@@ -0,0 +1,617 @@
+#N canvas 212 260 300 120 10;
+#N canvas 166 101 669 345 inside 0;
+#N canvas 149 25 652 578 positions 0;
+#N canvas 74 268 410 336 setpositions 0;
+#X obj 60 102 inlet;
+#X obj 220 102 inlet;
+#X text 60 270 sets numberbox (left);
+#X text 220 270 (right);
+#X obj 60 180 runden;
+#X obj 220 180 runden;
+#X msg 60 205 set \$1;
+#X msg 220 205 set \$1;
+#X obj 60 138 change;
+#X obj 220 138 change;
+#X obj 60 246 s \$2-nboxlr;
+#X obj 220 246 s \$2-nboxrr;
+#X connect 0 0 8 0;
+#X connect 1 0 9 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 10 0;
+#X connect 7 0 11 0;
+#X connect 8 0 4 0;
+#X connect 9 0 5 0;
+#X restore 122 446 pd setpositions;
+#N canvas 100 40 610 460 sendpositions 0;
+#X obj 66 58 inlet;
+#X obj 137 59 inlet;
+#X obj 127 264 / 1;
+#X obj 193 262 / 1;
+#X obj 127 287 runden;
+#X obj 193 287 runden;
+#X obj 127 322 s \$0-selection_l;
+#X obj 193 348 s \$0-selection_r;
+#X text 138 365 to selectioncanvas (drawselection);
+#X obj 229 155 s \$0-spos_lb;
+#X obj 312 154 s \$0-spos_rb;
+#X text 247 172 for playselections;
+#X obj 66 244 -;
+#X obj 66 408 s \$0-selection;
+#X text 197 62 in samples;
+#X text 65 425 length in samples;
+#X obj 431 174 pack 0 0;
+#X obj 431 148 t b f;
+#X obj 137 81 t f f f f;
+#X obj 66 81 t b f f f f;
+#X obj 431 196 s \$0-borderpair;
+#X obj 228 219 / 300;
+#X obj 228 197 r \$2-sample-length;
+#X connect 0 0 19 0;
+#X connect 1 0 18 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 12 0 13 0;
+#X connect 16 0 20 0;
+#X connect 17 0 16 0;
+#X connect 17 1 16 1;
+#X connect 18 0 12 0;
+#X connect 18 1 3 0;
+#X connect 18 2 10 0;
+#X connect 18 3 17 0;
+#X connect 19 0 12 0;
+#X connect 19 1 12 1;
+#X connect 19 2 2 0;
+#X connect 19 3 9 0;
+#X connect 19 4 16 0;
+#X connect 21 0 3 1;
+#X connect 21 0 2 1;
+#X connect 22 0 21 0;
+#X restore 313 443 pd sendpositions;
+#X text 333 462 to graphics;
+#X obj 122 137 * 1;
+#X obj 197 137 * 1;
+#X obj 371 61 r \$0-shiftsel;
+#X obj 371 136 * 1;
+#X obj 169 247 +;
+#X obj 122 219 0;
+#X obj 170 315 t f f f;
+#X obj 333 222 0;
+#X obj 371 249 +;
+#X obj 354 317 t f f f;
+#X obj 122 61 r \$0-sel_lb;
+#X obj 197 61 r \$0-sel_rb;
+#X obj 145 174 r \$0-nboxls;
+#X obj 347 184 r \$0-nboxrs;
+#X floatatom 162 201 5 0 0;
+#X floatatom 360 211 5 0 0;
+#X text 174 31 (from sliderhandling);
+#X text 310 384 right border of sel;
+#X text 79 340 leftborder of sel;
+#X obj 333 365 t f f;
+#X obj 122 361 t f f;
+#N canvas 336 13 613 533 testborders 0;
+#X obj 90 52 inlet;
+#X obj 190 52 inlet;
+#X obj 111 488 outlet;
+#X obj 202 492 outlet;
+#X obj 177 219 0;
+#X obj 90 163 moses 0;
+#X obj 127 189 t b f;
+#X obj 139 347 0;
+#X msg 57 345 0;
+#X obj 177 270 t b f;
+#X text 259 164 test if lb < 0 and if not if rb > sample-length;
+#X obj 95 298 r \$0-selection;
+#X obj 82 345 0;
+#X obj 314 304 r \$0-selection;
+#X obj 57 200 t b b;
+#X obj 264 399 -;
+#X obj 314 326 t b f;
+#X obj 251 422 0;
+#X obj 226 270 t b b;
+#X obj 264 361 300;
+#X obj 177 244 moses 300;
+#X obj 226 296 300;
+#X obj 226 216 r \$2-sample-length;
+#X obj 264 283 r \$2-sample-length;
+#X connect 0 0 5 0;
+#X connect 1 0 4 1;
+#X connect 4 0 20 0;
+#X connect 5 0 14 0;
+#X connect 5 1 6 0;
+#X connect 6 0 4 0;
+#X connect 6 1 7 1;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 9 1 3 0;
+#X connect 11 0 12 1;
+#X connect 12 0 3 0;
+#X connect 13 0 16 0;
+#X connect 14 0 8 0;
+#X connect 14 1 12 0;
+#X connect 15 0 17 1;
+#X connect 16 0 19 0;
+#X connect 16 1 15 1;
+#X connect 17 0 2 0;
+#X connect 18 0 21 0;
+#X connect 18 1 17 0;
+#X connect 19 0 15 0;
+#X connect 20 0 9 0;
+#X connect 20 1 18 0;
+#X connect 21 0 3 0;
+#X connect 22 0 20 1;
+#X connect 22 0 21 1;
+#X connect 23 0 19 0;
+#X restore 233 285 pd testborders;
+#X obj 371 157 t f f;
+#X obj 245 104 / 300;
+#X obj 245 82 r \$2-sample-length;
+#X connect 3 0 8 0;
+#X connect 4 0 10 0;
+#X connect 5 0 6 0;
+#X connect 6 0 25 0;
+#X connect 7 0 24 0;
+#X connect 8 0 7 1;
+#X connect 8 0 23 0;
+#X connect 9 0 23 0;
+#X connect 9 1 8 1;
+#X connect 9 2 7 1;
+#X connect 10 0 11 1;
+#X connect 10 0 22 0;
+#X connect 11 0 24 1;
+#X connect 12 0 22 0;
+#X connect 12 1 10 1;
+#X connect 12 2 11 1;
+#X connect 13 0 3 0;
+#X connect 14 0 4 0;
+#X connect 15 0 17 0;
+#X connect 15 0 8 0;
+#X connect 16 0 18 0;
+#X connect 16 0 10 0;
+#X connect 22 0 0 1;
+#X connect 22 1 1 1;
+#X connect 23 0 0 0;
+#X connect 23 1 1 0;
+#X connect 24 0 9 0;
+#X connect 24 1 12 0;
+#X connect 25 0 7 0;
+#X connect 25 1 11 0;
+#X connect 26 0 6 1;
+#X connect 26 0 4 1;
+#X connect 26 0 3 1;
+#X connect 27 0 26 0;
+#X restore 90 129 pd positions;
+#N canvas 0 0 410 161 wavetable 0;
+#X obj 124 82 table \$1 44100;
+#X restore 91 211 pd wavetable;
+#X text 186 210 contains the sample;
+#N canvas 228 148 445 446 loadsample 0;
+#X obj 39 199 soundfiler;
+#X obj 39 66 openpanel;
+#X text 229 39 load a (new) sample to a table;
+#X text 176 313 draw the large display;
+#X msg 39 174 read -resize \$1 \$2;
+#X obj 82 121 symbol \$1;
+#X obj 39 144 pack s s;
+#X obj 39 89 t s b;
+#X obj 39 40 r \$2-load_new_sample;
+#X obj 64 272 s \$2-sample-length;
+#X obj 39 308 s \$2-draw_display;
+#X obj 39 236 t b f;
+#X connect 0 0 11 0;
+#X connect 1 0 7 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 1;
+#X connect 6 0 4 0;
+#X connect 7 0 6 0;
+#X connect 7 1 5 0;
+#X connect 8 0 1 0;
+#X connect 11 0 10 0;
+#X connect 11 1 9 0;
+#X restore 91 188 pd loadsample;
+#X text 198 187 load a new sample;
+#N canvas 46 30 520 602 drawdisplay 0;
+#X obj 193 422 vasp.frames 20;
+#X obj 193 449 vasp.offset 0;
+#X msg 83 83 bang;
+#X obj 168 137 0;
+#X obj 168 225 t f f f;
+#X obj 181 114 + 1;
+#X obj 168 252 *;
+#X text 45 80 start;
+#X text 262 215 (reset);
+#X obj 193 470 vasp.max?;
+#X obj 193 496 vasp.min?;
+#X obj 325 275 t f f;
+#X obj 168 281 t b b f;
+#X obj 76 129 until 1;
+#X obj 76 108 300;
+#X obj 276 518 tabwrite \$0+;
+#X obj 242 564 tabwrite \$0-;
+#X msg 193 336 vasp \$1;
+#X obj 193 308 symbol \$1;
+#X obj 83 46 r \$2-draw_display;
+#X obj 325 229 r \$2-sample-length;
+#X obj 325 254 / 300;
+#X obj 276 495 clip -1 1;
+#X obj 242 539 clip -1 1;
+#X obj 168 162 moses 299;
+#X msg 242 217 0;
+#X obj 217 196 t f b;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 2 0 14 0;
+#X connect 3 0 5 0;
+#X connect 3 0 24 0;
+#X connect 4 0 6 0;
+#X connect 4 1 15 1;
+#X connect 4 2 16 1;
+#X connect 5 0 3 1;
+#X connect 6 0 12 0;
+#X connect 9 0 10 0;
+#X connect 9 1 22 0;
+#X connect 10 1 23 0;
+#X connect 11 0 6 1;
+#X connect 11 1 0 1;
+#X connect 12 1 18 0;
+#X connect 12 2 1 1;
+#X connect 13 0 3 0;
+#X connect 14 0 13 0;
+#X connect 17 0 0 0;
+#X connect 18 0 17 0;
+#X connect 19 0 2 0;
+#X connect 20 0 21 0;
+#X connect 21 0 11 0;
+#X connect 22 0 15 0;
+#X connect 23 0 16 0;
+#X connect 24 0 4 0;
+#X connect 24 1 26 0;
+#X connect 25 0 1 1;
+#X connect 25 0 3 1;
+#X connect 26 0 4 0;
+#X connect 26 1 25 0;
+#X restore 91 234 pd drawdisplay;
+#X text 200 233 draws the large display;
+#N canvas 123 371 417 309 sliderhandling 0;
+#X floatatom 112 145 5 0 0;
+#X floatatom 220 143 5 0 0;
+#N canvas 83 38 570 521 keyinput_s 0;
+#X obj 186 25 keyname;
+#X obj 84 446 spigot;
+#X obj 179 172 0;
+#X obj 179 116 symbol;
+#X msg 179 88 bang;
+#X obj 179 369 sel 1;
+#X msg 179 393 1;
+#X msg 152 393 0;
+#X obj 152 414 s \$0-spig1;
+#X obj 227 415 s \$0-spig1;
+#X msg 227 394 1;
+#X msg 254 394 0;
+#X obj 179 345 change;
+#X obj 84 67 inlet;
+#X obj 84 472 outlet;
+#X obj 179 144 sel s;
+#X text 276 67 if key "s" is down \, then input is let through;
+#X text 332 85 shifts display;
+#X obj 297 473 outlet;
+#X obj 179 223 t b b 0;
+#X obj 201 266 delay 100;
+#X msg 201 245 stop;
+#X obj 179 201 sel 0 1;
+#X obj 179 313 0;
+#X msg 179 289 1;
+#X text 255 242 linux and win have different up/down behaviour...;
+#X text 232 297 only if there is no new input for 100 ms after 0 \,
+0 is sent out;
+#X connect 0 0 2 1;
+#X connect 0 0 4 0;
+#X connect 0 1 3 1;
+#X connect 1 0 14 0;
+#X connect 2 0 22 0;
+#X connect 3 0 15 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 5 0 7 0;
+#X connect 5 0 18 0;
+#X connect 5 1 10 0;
+#X connect 5 1 11 0;
+#X connect 6 0 1 1;
+#X connect 7 0 8 0;
+#X connect 10 0 9 0;
+#X connect 11 0 1 1;
+#X connect 12 0 5 0;
+#X connect 13 0 1 0;
+#X connect 15 0 2 0;
+#X connect 19 0 20 0;
+#X connect 19 1 21 0;
+#X connect 19 2 23 1;
+#X connect 20 0 23 0;
+#X connect 21 0 20 0;
+#X connect 22 0 19 0;
+#X connect 22 1 24 0;
+#X connect 23 0 12 0;
+#X connect 24 0 23 0;
+#X restore 206 117 pd keyinput_s;
+#N canvas 49 247 417 326 spacehandling 0;
+#X obj 60 26 inlet;
+#X obj 164 26 inlet;
+#X obj 138 119 0;
+#X obj 60 157 moses 0;
+#X obj 85 205 0;
+#X obj 60 180 t f b;
+#X obj 160 209 0;
+#X obj 135 184 t f b;
+#X text 188 186 checks range direction;
+#X obj 60 236 s \$0-sel_lb;
+#X obj 135 236 s \$0-sel_rb;
+#X text 141 61 first position after hit is ref;
+#X obj 214 133 spigot;
+#X msg 245 99 1;
+#X obj 214 162 t f b;
+#X msg 219 99 0;
+#X text 159 45 down;
+#X obj 60 60 t f b f f;
+#X connect 0 0 17 0;
+#X connect 1 0 13 0;
+#X connect 2 0 3 1;
+#X connect 2 0 4 1;
+#X connect 2 0 6 1;
+#X connect 3 0 5 0;
+#X connect 3 1 7 0;
+#X connect 4 0 10 0;
+#X connect 5 0 9 0;
+#X connect 5 1 4 0;
+#X connect 6 0 9 0;
+#X connect 7 0 10 0;
+#X connect 7 1 6 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 1;
+#X connect 14 0 2 1;
+#X connect 14 1 15 0;
+#X connect 15 0 12 1;
+#X connect 17 0 3 0;
+#X connect 17 1 2 0;
+#X connect 17 2 12 0;
+#X restore 80 178 pd spacehandling;
+#N canvas 523 338 360 357 s_handling 0;
+#X obj 85 27 inlet;
+#X obj 85 305 s \$0-sliderr;
+#X msg 85 279 set \$1;
+#X obj 85 249 0;
+#X obj 85 202 -;
+#X obj 85 225 t b f;
+#X obj 171 264 s \$0-shiftsel;
+#X floatatom 200 295 5 0 0;
+#X obj 204 28 inlet;
+#X text 146 48 first position after hit is ref;
+#X obj 173 116 spigot;
+#X msg 204 82 1;
+#X obj 173 145 t f b;
+#X msg 178 82 0;
+#X text 203 12 down;
+#X obj 85 84 t f f;
+#X connect 0 0 15 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 5 1 6 0;
+#X connect 5 1 7 0;
+#X connect 8 0 11 0;
+#X connect 10 0 12 0;
+#X connect 11 0 10 1;
+#X connect 12 0 4 1;
+#X connect 12 0 3 1;
+#X connect 12 1 13 0;
+#X connect 13 0 10 1;
+#X connect 15 0 4 0;
+#X connect 15 1 10 0;
+#X restore 206 179 pd s_handling;
+#X obj 80 33 r \$0-sliders;
+#X floatatom 124 58 5 0 0;
+#N canvas 578 111 637 561 keyinput_space2 0;
+#X obj 82 464 spigot;
+#X floatatom 94 498 5 0 0;
+#X msg 141 414 1;
+#X msg 114 414 0;
+#X obj 114 435 s \$0-spig1;
+#X obj 194 436 s \$0-spig1;
+#X msg 194 415 1;
+#X msg 221 415 0;
+#X obj 150 119 key;
+#X obj 177 119 keyup;
+#X obj 141 168 sel 32;
+#X obj 141 191 0;
+#X obj 141 145 0;
+#X obj 218 144 t b f;
+#X obj 218 119 keyname;
+#X obj 82 86 inlet;
+#X obj 82 528 outlet;
+#X text 84 53 if spacebar is down \, then input is let through;
+#X obj 141 357 change;
+#X obj 141 380 sel 1 0;
+#X obj 171 525 outlet;
+#X text 174 505 down;
+#X obj 223 526 outlet;
+#X text 226 506 up;
+#X obj 141 235 t b b 0;
+#X obj 163 278 delay 100;
+#X msg 163 257 stop;
+#X obj 141 213 sel 0 1;
+#X obj 141 325 0;
+#X msg 141 301 1;
+#X text 217 254 linux and win have different up/down behaviour...;
+#X text 194 309 only if there is no new input for 100 ms after 0 \,
+0 is sent out;
+#X connect 0 0 1 0;
+#X connect 0 0 16 0;
+#X connect 2 0 0 1;
+#X connect 3 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 0 1;
+#X connect 8 0 12 1;
+#X connect 9 0 12 1;
+#X connect 10 0 11 0;
+#X connect 11 0 27 0;
+#X connect 12 0 10 0;
+#X connect 13 0 12 0;
+#X connect 13 1 11 1;
+#X connect 14 0 13 0;
+#X connect 15 0 0 0;
+#X connect 18 0 19 0;
+#X connect 19 0 2 0;
+#X connect 19 0 3 0;
+#X connect 19 0 20 0;
+#X connect 19 1 6 0;
+#X connect 19 1 7 0;
+#X connect 19 1 22 0;
+#X connect 24 0 25 0;
+#X connect 24 1 26 0;
+#X connect 24 2 28 1;
+#X connect 25 0 28 0;
+#X connect 26 0 25 0;
+#X connect 27 0 24 0;
+#X connect 27 1 29 0;
+#X connect 28 0 18 0;
+#X connect 29 0 28 0;
+#X restore 80 117 pd keyinput_space2;
+#X obj 80 79 t f f;
+#X obj 176 33 r \$0-fromothers;
+#X connect 2 0 1 0;
+#X connect 2 0 4 0;
+#X connect 2 1 4 1;
+#X connect 5 0 6 0;
+#X connect 5 0 8 0;
+#X connect 7 0 0 0;
+#X connect 7 0 3 0;
+#X connect 7 1 3 1;
+#X connect 8 0 7 0;
+#X connect 8 1 2 0;
+#X connect 9 0 8 0;
+#X restore 91 94 pd sliderhandling;
+#X text 186 124 receiving inputs \, conversions and settings of slider-
+and graphic-positions;
+#X text 233 96 the slider sets curser and borders...;
+#N canvas 217 166 683 484 drawselection 0;
+#X obj 445 186 t b f;
+#X obj 61 221 t b f;
+#X obj 223 187 -;
+#X obj 223 139 t b f;
+#X obj 61 88 runden 0;
+#X obj 234 86 runden 0;
+#X msg 61 293 \; \$1-selectionr pos \$2 \$3;
+#X obj 61 197 + 0;
+#X obj 61 269 pack \$0 0 0;
+#X msg 445 232 \; \$1-selectionr vis_size \$2 \$3;
+#X obj 61 60 r \$0-selection_l;
+#X obj 234 58 r \$0-selection_r;
+#X obj 124 198 loadbang;
+#X obj 223 209 sel 0;
+#X obj 479 378 pack 0 \$0;
+#X msg 479 402 \; \$2-selectionr color \$1;
+#X msg 479 309 17;
+#X obj 479 354 change;
+#X obj 479 331 0;
+#X text 45 6 shows a light-blue colored canvas;
+#X text 44 21 when a part is selected;
+#X obj 61 142 change;
+#X obj 445 164 change;
+#X obj 445 208 pack \$0 300 120;
+#X obj 223 163 300;
+#X msg 446 309 6;
+#X msg 248 294 \; \$1-selectionr vis_size \$2 \$3;
+#X obj 248 270 pack \$0 0 120;
+#X obj 223 234 t b b;
+#X msg 122 223 0;
+#X msg 89 197 3;
+#X text 477 291 if size=0 then it will be hidden;
+#X connect 0 0 23 0;
+#X connect 0 1 23 1;
+#X connect 1 0 8 0;
+#X connect 1 1 8 1;
+#X connect 2 0 13 0;
+#X connect 3 0 24 0;
+#X connect 3 1 2 1;
+#X connect 4 0 3 0;
+#X connect 4 0 21 0;
+#X connect 5 0 24 0;
+#X connect 7 0 1 0;
+#X connect 8 0 6 0;
+#X connect 10 0 4 0;
+#X connect 11 0 5 0;
+#X connect 12 0 29 0;
+#X connect 12 0 30 0;
+#X connect 13 0 28 0;
+#X connect 13 1 16 0;
+#X connect 13 1 22 0;
+#X connect 14 0 15 0;
+#X connect 16 0 18 0;
+#X connect 17 0 14 0;
+#X connect 18 0 17 0;
+#X connect 21 0 7 0;
+#X connect 22 0 0 0;
+#X connect 23 0 9 0;
+#X connect 24 0 2 0;
+#X connect 25 0 18 0;
+#X connect 27 0 26 0;
+#X connect 28 0 25 0;
+#X connect 28 1 27 0;
+#X connect 29 0 8 2;
+#X connect 30 0 7 1;
+#X restore 91 166 pd drawselection;
+#X text 211 163 draws the light blue selection;
+#N canvas 149 160 490 235 init 0;
+#X obj 33 19 loadbang;
+#X obj 33 86 s \$0-;
+#X msg 33 44 xticks 0 30 5 \, ylabel 315 -1 -0.5 0 0.5 \, yticks 0
+0.25 2;
+#X msg 33 150 44100;
+#X obj 33 128 loadbang;
+#X obj 33 173 s \$2-sample-length;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X restore 92 261 pd init;
+#N canvas 0 0 445 185 synchronize_several_displays 0;
+#X obj 232 68 r \$0-sliders;
+#X obj 126 67 r \$0-synchroin;
+#X obj 232 104 s \$0-synchroout;
+#X obj 126 104 s \$0-fromothers;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X restore 92 285 pd synchronize_several_displays;
+#X restore 332 83 pd inside;
+#X obj 399 96 outlet;
+#X obj 3 0 hsl 300 120 0 299 0 0 \$0-sliders \$0-sliderr empty -2 -6
+1728 8 -262144 -1 -1 14500 0;
+#X obj 0 0 cnv 15 305 120 empty empty empty 20 12 0 14 -262144 -66577
+0;
+#X obj 2 0 cnv 15 300 120 empty empty empty 20 12 0 14 -225271 -66577
+0;
+#X obj 3 0 cnv 1 1 120 \$0-selections \$0-selectionr empty 20 12 1728
+14 -225271 -262144 0;
+#N canvas 0 0 450 300 graph1 0;
+#X array \$0- 300 float 0;
+#X array \$0+ 300 float 0;
+#X coords 0 1 299 -1 300 120 1;
+#X restore 2 0 graph;
+#X obj 399 75 r \$0-borderpair;
+#X text 328 10 this display shows the min and max of all samples that
+a pixel represents;
+#X text 328 52 arguments: name of array \, \$0 of the parent patch
+;
+#X text 328 38 select with spacebar and shift with "s";
+#X obj 509 95 outlet;
+#X obj 614 75 inlet;
+#X obj 509 75 r \$0-synchroout;
+#X obj 560 94 s \$0-synchroin;
+#X connect 7 0 1 0;
+#X connect 12 0 14 0;
+#X connect 13 0 11 0;
+#X coords 0 0 1 1 305 120 1;
diff --git a/externals/grill/vasp/pd/wavedisplay-simple.pd b/externals/grill/vasp/pd/wavedisplay-simple.pd
new file mode 100644
index 00000000..e735fa0a
--- /dev/null
+++ b/externals/grill/vasp/pd/wavedisplay-simple.pd
@@ -0,0 +1,135 @@
+#N canvas 200 200 300 120 10;
+#N canvas 154 41 402 182 inside 0;
+#N canvas 183 206 183 114 wavetable 0;
+#X obj 30 22 table \$1 44100;
+#X restore 62 51 pd wavetable;
+#X text 146 50 contains the sample;
+#N canvas 46 30 530 612 drawdisplay 0;
+#X obj 168 398 vasp.frames 20;
+#X obj 168 429 vasp.offset 0;
+#X msg 83 83 bang;
+#X obj 168 137 0;
+#X obj 168 225 t f f f;
+#X obj 181 114 + 1;
+#X obj 168 252 *;
+#X text 45 80 start;
+#X text 262 215 (reset);
+#X obj 168 479 vasp.max?;
+#X obj 168 505 vasp.min?;
+#X obj 325 275 t f f;
+#X obj 83 128 until 1;
+#X obj 83 107 300;
+#X obj 251 527 tabwrite \$0+;
+#X obj 217 573 tabwrite \$0-;
+#X msg 168 345 vasp \$1;
+#X obj 168 317 symbol \$1;
+#X obj 325 254 / 300;
+#X obj 251 504 clip -1 1;
+#X obj 217 548 clip -1 1;
+#X obj 168 162 moses 299;
+#X msg 242 217 0;
+#X obj 217 196 t f b;
+#X obj 325 229 r \$0-sample-length;
+#X obj 83 46 r \$0-draw_display;
+#X obj 168 281 t b f;
+#X obj 344 449 r \$0-bounds-;
+#X obj 344 475 r \$0-bounds+;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 2 0 13 0;
+#X connect 3 0 5 0;
+#X connect 3 0 21 0;
+#X connect 4 0 6 0;
+#X connect 4 1 14 1;
+#X connect 4 2 15 1;
+#X connect 5 0 3 1;
+#X connect 6 0 26 0;
+#X connect 9 0 10 0;
+#X connect 9 1 19 0;
+#X connect 10 1 20 0;
+#X connect 11 0 6 1;
+#X connect 11 1 0 1;
+#X connect 12 0 3 0;
+#X connect 13 0 12 0;
+#X connect 16 0 0 0;
+#X connect 17 0 16 0;
+#X connect 18 0 11 0;
+#X connect 19 0 14 0;
+#X connect 20 0 15 0;
+#X connect 21 0 4 0;
+#X connect 21 1 23 0;
+#X connect 22 0 1 1;
+#X connect 22 0 3 1;
+#X connect 23 0 4 0;
+#X connect 23 1 22 0;
+#X connect 24 0 18 0;
+#X connect 25 0 2 0;
+#X connect 26 0 17 0;
+#X connect 26 1 1 1;
+#X connect 27 0 19 1;
+#X connect 27 0 20 1;
+#X connect 28 0 19 2;
+#X connect 28 0 20 2;
+#X restore 62 74 pd drawdisplay;
+#X text 160 73 draws the display;
+#N canvas 149 160 294 134 init 0;
+#X obj 33 19 loadbang;
+#X obj 33 86 s \$0-;
+#X msg 33 44 xticks 0 30 5 \, ylabel 315 -1 -0.5 0 0.5 \, yticks 0
+0.25 2;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X restore 61 97 pd init;
+#N canvas 0 0 424 148 makelocal 0;
+#X obj 83 72 s \$0-draw_display;
+#X obj 83 46 r \$2-draw_display;
+#X obj 216 45 r \$2-sample-length;
+#X obj 216 71 s \$0-sample-length;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X restore 61 129 pd makelocal;
+#X restore 369 90 pd inside;
+#X text 374 15 this display shows the min and max of all samples that
+a pixel represents;
+#X text 375 46 arguments: name of array \, \$0 of the parent patch
+;
+#X obj 0 0 cnv 15 300 120 empty empty empty 20 12 0 14 -225271 -66577
+0;
+#N canvas 0 0 450 300 graph1 0;
+#X array \$0- 300 float 0;
+#X array \$0+ 300 float 0;
+#X coords 0 1 300 -1 300 120 1;
+#X restore 0 0 graph;
+#X obj 438 70 inlet;
+#X text 480 69 individual length;
+#N canvas 71 382 599 303 individual 0;
+#X obj 319 150 s \$0-sample-length;
+#X obj 73 58 inlet;
+#X msg 369 173 resize \$1;
+#X obj 369 196 s \$1;
+#X obj 127 253 send \$0-;
+#X text 139 73 resize and sample-length;
+#X text 138 58 for individual bounds \, ticks and label \,;
+#X obj 41 182 unpack 0 0 0 0;
+#X obj 40 230 s \$0-bounds-;
+#X obj 40 207 s \$0-bounds+;
+#X msg 127 150 bounds \$1 \$2 \$3 \$4;
+#X obj 127 124 route bounds ylabel yticks;
+#X msg 151 175 ylabel \$1 \$2 \$3 \$4;
+#X msg 166 197 yticks \$1 \$2 \$3 \$4;
+#X connect 1 0 11 0;
+#X connect 2 0 3 0;
+#X connect 7 1 9 0;
+#X connect 7 3 8 0;
+#X connect 10 0 4 0;
+#X connect 11 0 7 0;
+#X connect 11 0 10 0;
+#X connect 11 1 12 0;
+#X connect 11 2 13 0;
+#X connect 11 3 0 0;
+#X connect 11 3 2 0;
+#X connect 12 0 4 0;
+#X connect 13 0 4 0;
+#X restore 438 90 pd individual;
+#X connect 5 0 7 0;
+#X coords 0 0 1 1 300 120 1;
diff --git a/externals/grill/vasp/pd/xtilt_example.pd b/externals/grill/vasp/pd/xtilt_example.pd
new file mode 100644
index 00000000..63acc12b
--- /dev/null
+++ b/externals/grill/vasp/pd/xtilt_example.pd
@@ -0,0 +1,88 @@
+#N canvas 27 56 975 554 10;
+#X text 467 82 A;
+#X text 465 286 B;
+#N canvas 0 0 413 295 clear_buffers 0;
+#X obj 49 73 vasp.= 0;
+#X obj 49 49 inlet;
+#X obj 49 97 vasp.u;
+#X obj 49 118 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X restore 604 494 pd clear_buffers;
+#X obj 510 85 wavedisplay-simple bufxtilt3 \$0;
+#X obj 512 273 wavedisplay-simple bufxtilt4 \$0;
+#X obj 269 69 filelist \$0;
+#X msg 603 467 vasp bufxtilt4;
+#X obj 403 487 dac~;
+#X obj 403 444 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 425 441 play;
+#N canvas 86 280 431 351 inside 0;
+#X obj 66 154 soundfiler;
+#X obj 84 238 s \$0-sample-length;
+#X obj 66 208 s \$0-draw_display;
+#X msg 214 206 resize \$1;
+#X obj 66 52 loadbang;
+#X obj 66 178 t b f f;
+#X obj 66 100 filelisthandler \$0;
+#X msg 66 132 read -resize \$1 bufxtilt3;
+#X obj 214 237 s bufxtilt3;
+#X obj 224 267 s bufxtilt4;
+#X msg 66 78 3;
+#X connect 0 0 5 0;
+#X connect 3 0 8 0;
+#X connect 3 0 9 0;
+#X connect 4 0 10 0;
+#X connect 5 0 2 0;
+#X connect 5 1 1 0;
+#X connect 5 2 3 0;
+#X connect 6 0 7 0;
+#X connect 7 0 0 0;
+#X connect 10 0 6 0;
+#X restore 780 485 pd inside;
+#X obj 404 464 tabplay~ bufxtilt4;
+#X obj 276 487 dac~;
+#X obj 276 444 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 298 441 play;
+#X obj 277 464 tabplay~ bufxtilt3;
+#X msg 76 127 vasp bufxtilt3;
+#X obj 76 149 vasp.-> bufxtilt4;
+#X obj 173 195 vasp.rfft;
+#X floatatom 270 259 5 0 0;
+#X obj 173 432 vasp.u;
+#X obj 173 454 bng 15 250 50 0 \$0-draw_display empty empty 0 -6 1152
+8 -262144 -1 -1;
+#X obj 173 409 vasp.r!fft;
+#X obj 172 222 vasp.upper;
+#X obj 172 245 vasp.mirr;
+#X obj 173 326 vasp.upper;
+#X obj 173 349 vasp.mirr;
+#X msg 151 271 vasp bufxtilt4;
+#X msg 157 381 vasp bufxtilt4;
+#X obj 76 98 bng 20 250 50 0 empty empty start 0 -6 0 8 -258699 -1
+-1;
+#X obj 173 299 vasp.xtilt 2.9;
+#X connect 6 0 2 0;
+#X connect 8 0 11 0;
+#X connect 11 0 7 0;
+#X connect 11 0 7 1;
+#X connect 13 0 15 0;
+#X connect 15 0 12 0;
+#X connect 15 0 12 1;
+#X connect 16 0 17 0;
+#X connect 17 1 18 0;
+#X connect 18 0 23 0;
+#X connect 19 0 30 1;
+#X connect 20 0 21 0;
+#X connect 22 0 20 0;
+#X connect 23 0 24 0;
+#X connect 24 0 27 0;
+#X connect 25 0 26 0;
+#X connect 26 0 28 0;
+#X connect 27 0 30 0;
+#X connect 28 0 22 0;
+#X connect 29 0 16 0;
+#X connect 30 0 25 0;