aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--externals/grill/dyn/config-pd-darwin.txt9
-rw-r--r--externals/grill/dyn/make-files.txt2
-rw-r--r--externals/grill/dyn/makefile.pd-darwin28
-rw-r--r--externals/grill/flext/config-pd-darwin.txt2
-rw-r--r--externals/grill/pool/config-pd-darwin.txt2
-rw-r--r--externals/grill/pool/makefile.pd-darwin4
-rwxr-xr-xexternals/grill/py/config-pd-darwin.txt7
-rw-r--r--externals/grill/py/make-files.txt2
-rwxr-xr-xexternals/grill/py/makefile.pd-darwin39
-rwxr-xr-xexternals/grill/vasp/config-pd-darwin.txt8
-rw-r--r--externals/grill/vasp/make-files.txt2
-rwxr-xr-xexternals/grill/vasp/makefile.pd-darwin27
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.abs.help57
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.add.help69
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.amaxq.help105
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.aminq.help93
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.beveldn.help93
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.bevelup.help93
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cdiv.help13
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cfft.help415
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.chk.help21
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cifft.help408
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cmul.help13
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cnoise.help117
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cnorm.help178
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cosc.help140
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cplus.help13
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cpowi.help167
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.crsub.help13
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.cset.help12
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.csqr.help165
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.csub.help13
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.dif.help8
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.div.help53
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.equ.help146
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.exp.help97
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.fhp.help139
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.flp.help139
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.frames.help135
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.framesd.help135
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.framesq.help26
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.gate.help167
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.gather.help66
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.geq.help129
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.gtr.help129
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.help711
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.int.help94
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.join.help32
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.leq.help129
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.list.help86
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.log.help9
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.lwr.help129
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.max.help126
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.maxq.help87
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mbeveldn.help101
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mbevelup.help101
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mcosc.help145
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.min.help126
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.minmax.help150
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.minq.help87
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mirr.help89
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mod.help63
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mphasor.help128
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.mul.help228
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.multi.help24
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.neq.help146
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.noise.help101
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.nonzero.help163
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.offset.help33
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.offsetd.help32
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.offsetq.help18
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.opt.help105
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.osc.help124
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.part.help31
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.peaks.help177
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.phasor.help124
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.polar.help292
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.pow.help99
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.pwrap.help7
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.radd.help169
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rect.help302
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rfft.help138
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rgate.help171
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rifft.help138
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rmax.help166
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rmaxq.help180
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rmin.help168
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rminq.help150
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.ropt.help169
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rot.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rpeaks.help175
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rpow.help172
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rsub.help53
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.rvalleys.help178
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.set.help327
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.shift.help93
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sign.help95
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.spit.help43
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.split.help32
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sqr.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sqrt.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.ssqr.help220
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.ssqrt.help220
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sub.help68
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.sync.help165
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.tilt.help90
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.update.help42
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.valleys.help175
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.vector.help176
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.vectors.help13
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.xmirr.help170
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.xrot.help92
-rwxr-xr-xexternals/grill/vasp/max-help/vasp.xshift.help92
-rw-r--r--externals/grill/vasp/source/ops.h28
-rw-r--r--externals/grill/vasp/vasp.doxy189
-rwxr-xr-xexternals/grill/xsample/config-pd-darwin.txt5
-rwxr-xr-xexternals/grill/xsample/makefile.pd-darwin23
-rwxr-xr-xexternals/grill/xsample/xsample.cwbin399047 -> 399047 bytes
118 files changed, 12604 insertions, 155 deletions
diff --git a/externals/grill/dyn/config-pd-darwin.txt b/externals/grill/dyn/config-pd-darwin.txt
index d993e9e4..7494d33b 100644
--- a/externals/grill/dyn/config-pd-darwin.txt
+++ b/externals/grill/dyn/config-pd-darwin.txt
@@ -11,7 +11,7 @@
# where are the PD header files?
# leave it blank if it is a system directory (like /usr/local/include),
# since gcc 3.2 complains about it
-PDPATH=/usr/src/pd-0.37-0/src
+PDPATH=../../../pd/src
# where is the PD executable?
PD=/usr/local/bin/pd
@@ -26,7 +26,10 @@ TARGDIR=./pd-darwin
# (leave blank to omit installation)
INSTPATH=/usr/local/lib/pd/extra
-
# additional compiler flags
# (check if they fit for your system!)
-UFLAGS=-maltivec -faltivec
+UFLAGS=-malign-power -maltivec -faltivec
+
+# build with a shared flext library
+FLEXT_SHARED=1
+
diff --git a/externals/grill/dyn/make-files.txt b/externals/grill/dyn/make-files.txt
index 81d7cbdc..0538f6b7 100644
--- a/externals/grill/dyn/make-files.txt
+++ b/externals/grill/dyn/make-files.txt
@@ -1,3 +1,5 @@
+NAME=dyn~
+
# all the source files from the package
DIR=src
diff --git a/externals/grill/dyn/makefile.pd-darwin b/externals/grill/dyn/makefile.pd-darwin
index 2294d4a5..f7588e29 100644
--- a/externals/grill/dyn/makefile.pd-darwin
+++ b/externals/grill/dyn/makefile.pd-darwin
@@ -16,25 +16,31 @@ CONFIG=config-pd-darwin.txt
include $(CONFIG)
-FLEXTLIB=$(FLEXTPATH)/flext.a
-
# compiler+linker stuff
INCLUDES=$(PDPATH)
LIBPATH=
-FLAGS=-DFLEXT_SYS=2 ${U_FLAGS}
-CFLAGS=-O2 -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes -fno-rtti
-#CFLAGS=-g
+FLAGS=-DFLEXT_SYS=2
+CFLAGS=-O2 ${UFLAGS} -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes
LIBS=m
FRAMEWORKS=vecLib
-LDFLAGS=-bundle -bundle_loader $(PD)
+LDFLAGS+=-Wl,-x -Wl,-S -bundle -bundle_loader $(PD)
+
+ifdef FLEXT_SHARED
+CFLAGS+=-DFLEXT_SHARED
+LDFLAGS+=-L$(FLEXTPATH)
+FLEXTLIB=-lflext
+
+else
+
+FLEXTLIB=$(FLEXTPATH)/libflext.a
+
+endif
# ---------------------------------------------
# the rest can stay untouched
# ----------------------------------------------
-NAME=dyn~
-
# all the source files from the package
include make-files.txt
@@ -43,7 +49,7 @@ TARGET=$(TARGDIR)/$(NAME).pd_darwin
# default target
all: $(TARGDIR) $(TARGET)
-$(patsubst %,$(DIR)/%,$(SRCS)): $(patsubst %,$(DIR)/%,$(HDRS)) $(FLEXTLIB) $(CONFIG)
+$(patsubst %,$(DIR)/%,$(SRCS)): $(patsubst %,$(DIR)/%,$(HDRS)) $(CONFIG)
touch $@
$(TARGDIR):
@@ -52,8 +58,8 @@ $(TARGDIR):
$(TARGDIR)/%.o : $(DIR)/%.cpp
$(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(FLEXTPATH)) $< -o $@
-$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS)) $(FLEXTLIB)
- $(CXX) $(LDFLAGS) $^ $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) $(patsubst %,-framework %,$(FRAMEWORKS)) -o $@
+$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS))
+ $(CXX) $(LDFLAGS) $^ $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) $(patsubst %,-framework %,$(FRAMEWORKS)) $(FLEXTLIB) -o $@
chmod 755 $@
$(INSTPATH):
diff --git a/externals/grill/flext/config-pd-darwin.txt b/externals/grill/flext/config-pd-darwin.txt
index deece764..0420315e 100644
--- a/externals/grill/flext/config-pd-darwin.txt
+++ b/externals/grill/flext/config-pd-darwin.txt
@@ -6,7 +6,7 @@
# CXX=g++-3.3
# where are the PD header files? (m_pd.h, m_imp.h, g_canvas.h)
-PDPATH=/usr/src/pd-0.37-4/src
+PDPATH=../../../pd/src
# where is the SndObj include directory?
# (leave blank or comment out to disable SndObj support)
diff --git a/externals/grill/pool/config-pd-darwin.txt b/externals/grill/pool/config-pd-darwin.txt
index de4226de..b0269ea3 100644
--- a/externals/grill/pool/config-pd-darwin.txt
+++ b/externals/grill/pool/config-pd-darwin.txt
@@ -28,6 +28,6 @@ INSTPATH=/usr/local/lib/pd/extra
UFLAGS=-malign-power -maltivec -faltivec
# use shared flext library
-#FLEXT_SHARED=1
+FLEXT_SHARED=1
diff --git a/externals/grill/pool/makefile.pd-darwin b/externals/grill/pool/makefile.pd-darwin
index 2f3baf96..83424e16 100644
--- a/externals/grill/pool/makefile.pd-darwin
+++ b/externals/grill/pool/makefile.pd-darwin
@@ -22,8 +22,8 @@ FRAMEWORKS=Carbon
LDFLAGS+=-Wl,-x -Wl,-S -bundle -bundle_loader $(PD)
ifdef FLEXT_SHARED
-CFLAGS+=-dynamic -DFLEXT_SHARED
-LDFLAGS+=-dynamic -L$(FLEXTPATH)
+CFLAGS+=-DFLEXT_SHARED
+LDFLAGS+=-L$(FLEXTPATH)
FLEXTLIB=-lflext
else
diff --git a/externals/grill/py/config-pd-darwin.txt b/externals/grill/py/config-pd-darwin.txt
index 813d82c0..427395fa 100755
--- a/externals/grill/py/config-pd-darwin.txt
+++ b/externals/grill/py/config-pd-darwin.txt
@@ -7,7 +7,7 @@
# where are the PD header files?
# leave it blank if it is a system directory (like /usr/local/include),
# since gcc 3.2 complains about it
-PDPATH=/usr/local/lib/pd/src
+PDPATH=../../../pd/src
# where is the PD executable?
PD=/usr/local/bin/pd
@@ -22,4 +22,7 @@ TARGDIR=./pd-darwin
INSTPATH=/usr/local/lib/pd/extra
# user flags
-# UFLAGS=-O2 -faltivec -maltivec
+UFLAGS=-malign-power -faltivec -maltivec
+
+# use shared flext library
+FLEXT_SHARED=1
diff --git a/externals/grill/py/make-files.txt b/externals/grill/py/make-files.txt
index dec24613..f4ddcdb9 100644
--- a/externals/grill/py/make-files.txt
+++ b/externals/grill/py/make-files.txt
@@ -1,3 +1,5 @@
+NAME=py
+
# all the source files from the package
SRCDIR=source
diff --git a/externals/grill/py/makefile.pd-darwin b/externals/grill/py/makefile.pd-darwin
index ab63aa97..6b73c207 100755
--- a/externals/grill/py/makefile.pd-darwin
+++ b/externals/grill/py/makefile.pd-darwin
@@ -12,21 +12,36 @@ CONFIG=config-pd-darwin.txt
include ${CONFIG}
-FLEXTLIB=${FLEXTPATH}/flext_t.a
-
# compiler+linker stuff
INCLUDES=${PDPATH} ${FLEXTPATH}
-FLAGS=-DFLEXT_SYS=2 -DFLEXT_THREADS
+FLAGS=-DFLEXT_SYS=2
CFLAGS=$(UFLAGS) -Wno-long-double -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes
-#CFLAGS=-g
LIBS=m
-LDFLAGS=-bundle -bundle_loader ${PD} -framework Python -framework Carbon
+FRAMEWORKS=Python Carbon
+LDFLAGS=-bundle -bundle_loader ${PD}
+
+ifndef DEBUG
+CFLAGS+=-O2
+else
+CFLAGS+=-g
+endif
+
+ifdef FLEXT_SHARED
+
+CFLAGS+=-dynamic -DFLEXT_SHARED
+LDFLAGS+=-dynamic -L$(FLEXTPATH)
+FLEXTLIB=-lflext
+
+else
+
+CFLAGS+=-DFLEXT_THREADS
+FLEXTLIB=$(FLEXTPATH)/libflext_t.a
+
+endif
# ---------------------------------------------
# the rest can stay untouched
# ----------------------------------------------
-NAME=py
-
# all the source files from the package
include make-files.txt
@@ -37,21 +52,21 @@ MAKEFILE=makefile.pd-darwin
# default target
all: $(TARGDIR) $(TARGET)
-$(patsubst %,$(SRCDIR)/%,$(SRCS)): $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTLIB) $(MAKEFILE) $(CONFIG)
+$(patsubst %,$(SRCDIR)/%,$(SRCS)): $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(MAKEFILE) $(CONFIG)
touch $@
$(TARGDIR):
- mkdir $(TARGDIR)
+ -mkdir $(TARGDIR)
$(TARGDIR)/%.o : $(SRCDIR)/%.cpp
$(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES)) $< -o $@
-$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS)) $(FLEXTLIB)
- $(CXX) $(LDFLAGS) $^ $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) -o $@
+$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS))
+ $(CXX) $(LDFLAGS) $^ $(FLEXTLIB) $(patsubst %,-framework %,$(FRAMEWORKS)) $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) -o $@
chmod 755 $@
$(INSTPATH):
- mkdir $(INSTPATH)
+ -mkdir $(INSTPATH)
install:: $(INSTPATH)
diff --git a/externals/grill/vasp/config-pd-darwin.txt b/externals/grill/vasp/config-pd-darwin.txt
index 40fa664f..acf6dfcf 100755
--- a/externals/grill/vasp/config-pd-darwin.txt
+++ b/externals/grill/vasp/config-pd-darwin.txt
@@ -11,7 +11,7 @@ PD=/usr/local/lib/pd
# where are the PD header files?
# leave it blank if it is a system directory (like /usr/local/include),
# since gcc 3.2 complains about it
-PDINC=${PD}/src
+#PDINC=${PD}/src
# where is the PD executable?
PDBIN=/usr/local/bin/pd
@@ -34,4 +34,8 @@ HELPDIR=${PD}/doc/5.reference
# additional compiler flags
# (check if they fit to your system!)
-UFLAGS=-malign-power -faltivec -maltivec
+UFLAGS=-malign-power -faltivec -maltivec
+
+# build with flext shared library
+FLEXT_SHARED=1
+
diff --git a/externals/grill/vasp/make-files.txt b/externals/grill/vasp/make-files.txt
index abedf02b..b8db66b9 100644
--- a/externals/grill/vasp/make-files.txt
+++ b/externals/grill/vasp/make-files.txt
@@ -1,3 +1,5 @@
+NAME=vasp
+
# all the source files from the package
SRCDIR=source
diff --git a/externals/grill/vasp/makefile.pd-darwin b/externals/grill/vasp/makefile.pd-darwin
index 5b11c0d5..a8fdd3c6 100755
--- a/externals/grill/vasp/makefile.pd-darwin
+++ b/externals/grill/vasp/makefile.pd-darwin
@@ -1,5 +1,5 @@
# VASP - vector assembling vector processor
-# Copyright (c)2002-2003 Thomas Grill (xovo@gmx.net)
+# Copyright (c)2002-2004 Thomas Grill (xovo@gmx.net)
#
# Makefile for gcc @ OSX (darwin)
#
@@ -13,23 +13,32 @@ CONFIG=config-pd-darwin.txt
include ${CONFIG}
-FLEXTLIB=$(FLEXTPATH)/flext_t.a
-
# compiler stuff
INCLUDES=$(PDINC)
-FLAGS=-DFLEXT_SYS=2 -DFLEXT_THREADS -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes -fno-exceptions
-CFLAGS=-O6 ${UFLAGS} -fmove-all-movables -frerun-loop-opt -fprefetch-loop-arrays
+FLAGS=-DFLEXT_SYS=2 -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes -fno-exceptions
+CFLAGS=-O2 ${UFLAGS} -fmove-all-movables -frerun-loop-opt -fprefetch-loop-arrays
#CFLAGS+=-funroll-loops -freduce-all-givs -fschedule-insns2 -foptimize-register-move
LIBS=m
LDFLAGS=-bundle -bundle_loader $(PDBIN)
FRAMEWORKS=Carbon veclib
+ifdef FLEXT_SHARED
+CFLAGS+=-DFLEXT_SHARED
+LDFLAGS+=-L$(FLEXTPATH)
+FLEXTLIB=-lflext
+
+else
+
+CFLAGS+=-DFLEXT_THREADS
+FLEXTLIB=$(FLEXTPATH)/libflext_t.a
+
+endif
+
+
# ----------------------------------------------
# the rest can stay untouched
# ----------------------------------------------
-NAME=vasp
-
include make-files.txt
MAKEFILE=makefile.pd-darwin
@@ -48,8 +57,8 @@ $(TARGDIR):
$(TARGDIR)/%.o : $(SRCDIR)/%.cpp
$(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(FLEXTPATH)) $< -o $@
-$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS)) $(FLEXTLIB)
- $(CXX) $(LDFLAGS) $^ $(patsubst %,-framework %,$(FRAMEWORKS)) $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) -o $@
+$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS))
+ $(CXX) $(LDFLAGS) $^ $(patsubst %,-framework %,$(FRAMEWORKS)) $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) $(FLEXTLIB) -o $@
chmod 755 $@
diff --git a/externals/grill/vasp/max-help/vasp.abs.help b/externals/grill/vasp/max-help/vasp.abs.help
index 5bd054a7..1292ea00 100755
--- a/externals/grill/vasp/max-help/vasp.abs.help
+++ b/externals/grill/vasp/max-help/vasp.abs.help
@@ -1 +1,56 @@
-max v2; #N vpatcher 158 140 813 450; #P origin 0 10; #P message 435 237 61 196617 vasp bufabs; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 435 255 78 196617 p clear_buffers; #P comment 146 190 107 196617 get the absolute values; #P button 128 188 15 0; #P newex 64 188 60 196617 prepend set; #P newex 64 252 61 196617 vasp.update; #P comment 133 136 99 196617 generate a sinewave; #P message 64 135 61 196617 vasp bufabs; #P newex 64 156 80 196617 vasp.osc 22050; #P comment 59 63 137 196617 get absolute values of a vasp; #P comment 59 40 89 196622 vasp.abs; #P hidden message 310 114 54 196617 set bufabs; #P hidden newex 310 94 45 196617 loadbang; #P user waveform~ 310 133 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 521 255 101 196617 buffer~ bufabs 2000; #P newex 64 213 45 196617 vasp.abs; #P comment 59 79 402 196617 see also vasp.*.help for an example using vasp.abs to generate an envelope from a vasp; #P connect 9 0 8 0; #P connect 8 0 12 0; #P connect 12 0 1 0; #P fasten 13 0 1 0 133 208 69 208; #P connect 1 0 11 0; #P hidden connect 4 0 5 0; #P hidden connect 5 0 3 0; #P connect 16 0 15 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 158 140 813 450;
+#P origin 0 10;
+#P message 435 237 61 196617 vasp bufabs;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 435 255 78 196617 p clear_buffers;
+#P comment 146 190 107 196617 get the absolute values;
+#P button 128 188 15 0;
+#P newex 64 188 60 196617 prepend set;
+#P newex 64 252 61 196617 vasp.update;
+#P comment 133 136 99 196617 generate a sinewave;
+#P message 64 135 61 196617 vasp bufabs;
+#P newex 64 156 80 196617 vasp.osc 22050;
+#P comment 59 63 137 196617 get absolute values of a vasp;
+#P comment 59 40 89 196622 vasp.abs;
+#P hidden message 310 114 54 196617 set bufabs;
+#P hidden newex 310 94 45 196617 loadbang;
+#P user waveform~ 310 133 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 521 255 101 196617 buffer~ bufabs 2000;
+#P newex 64 213 45 196617 vasp.abs;
+#P comment 59 79 402 196617 see also vasp.*.help for an example using vasp.abs to generate an envelope from a vasp;
+#P connect 9 0 8 0;
+#P connect 8 0 12 0;
+#P connect 12 0 1 0;
+#P fasten 13 0 1 0 133 208 69 208;
+#P connect 1 0 11 0;
+#P hidden connect 4 0 5 0;
+#P hidden connect 5 0 3 0;
+#P connect 16 0 15 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.add.help b/externals/grill/vasp/max-help/vasp.add.help
index f53c1d0e..0da7d475 100755
--- a/externals/grill/vasp/max-help/vasp.add.help
+++ b/externals/grill/vasp/max-help/vasp.add.help
@@ -1 +1,68 @@
-max v2; #N vpatcher 124 137 939 457; #P origin 0 22; #P message 580 242 52 196617 vasp buf+; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 580 263 73 196617 p clear_buffer; #P comment 346 192 101 196617 shift all values - 0.5; #P comment 112 191 131 196617 shift all values + 0.5; #P comment 113 168 132 196617 half the amplitude; #P comment 285 62 205 196617 optional argument/right inlet: right operand; #P comment 285 45 195 196617 subtracts a value or a vasp from a vasp; #P comment 285 21 89 196622 vasp.-; #P message 288 112 52 196617 vasp buf+; #P newex 288 212 61 196617 vasp.update; #P newex 288 189 55 196617 vasp.- 0.5; #P newex 288 144 80 196617 vasp.osc 44100; #P newex 288 166 55 196617 vasp.* 0.5; #P message 54 112 52 196617 vasp buf+; #P newex 54 212 61 196617 vasp.update; #P newex 54 189 55 196617 vasp.+ 0.5; #P newex 54 144 80 196617 vasp.osc 44100; #P hidden message 450 112 45 196617 set buf+; #P hidden newex 450 91 45 196617 loadbang; #P user waveform~ 450 132 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 671 263 92 196617 buffer~ buf+ 2000; #P newex 54 166 55 196617 vasp.* 0.5; #P comment 52 62 205 196617 optional argument/right inlet: right operand; #P comment 52 45 168 196617 adds a value or a vasp to a vasp; #P comment 52 21 89 196622 vasp.+; #P comment 137 146 132 196617 generate a 1Hz sine wave; #P connect 12 0 9 0; #P connect 9 0 4 0; #P connect 4 0 10 0; #P connect 10 0 11 0; #P connect 17 0 14 0; #P connect 14 0 13 0; #P connect 13 0 15 0; #P connect 15 0 16 0; #P hidden connect 7 0 8 0; #P hidden connect 8 0 6 0; #P connect 25 0 24 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 124 137 939 457;
+#P origin 0 22;
+#P message 580 242 52 196617 vasp buf+;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 580 263 73 196617 p clear_buffer;
+#P comment 346 192 101 196617 shift all values - 0.5;
+#P comment 112 191 131 196617 shift all values + 0.5;
+#P comment 113 168 132 196617 half the amplitude;
+#P comment 285 62 205 196617 optional argument/right inlet: right operand;
+#P comment 285 45 195 196617 subtracts a value or a vasp from a vasp;
+#P comment 285 21 89 196622 vasp.-;
+#P message 288 112 52 196617 vasp buf+;
+#P newex 288 212 61 196617 vasp.update;
+#P newex 288 189 55 196617 vasp.- 0.5;
+#P newex 288 144 80 196617 vasp.osc 44100;
+#P newex 288 166 55 196617 vasp.* 0.5;
+#P message 54 112 52 196617 vasp buf+;
+#P newex 54 212 61 196617 vasp.update;
+#P newex 54 189 55 196617 vasp.+ 0.5;
+#P newex 54 144 80 196617 vasp.osc 44100;
+#P hidden message 450 112 45 196617 set buf+;
+#P hidden newex 450 91 45 196617 loadbang;
+#P user waveform~ 450 132 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 671 263 92 196617 buffer~ buf+ 2000;
+#P newex 54 166 55 196617 vasp.* 0.5;
+#P comment 52 62 205 196617 optional argument/right inlet: right operand;
+#P comment 52 45 168 196617 adds a value or a vasp to a vasp;
+#P comment 52 21 89 196622 vasp.+;
+#P comment 137 146 132 196617 generate a 1Hz sine wave;
+#P connect 12 0 9 0;
+#P connect 9 0 4 0;
+#P connect 4 0 10 0;
+#P connect 10 0 11 0;
+#P connect 17 0 14 0;
+#P connect 14 0 13 0;
+#P connect 13 0 15 0;
+#P connect 15 0 16 0;
+#P hidden connect 7 0 8 0;
+#P hidden connect 8 0 6 0;
+#P connect 25 0 24 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.amaxq.help b/externals/grill/vasp/max-help/vasp.amaxq.help
index edca78d9..81e404e5 100755
--- a/externals/grill/vasp/max-help/vasp.amaxq.help
+++ b/externals/grill/vasp/max-help/vasp.amaxq.help
@@ -1 +1,104 @@
-max v2; #N vpatcher 279 142 977 614; #P message 477 385 75 196617 vasp bufamax?; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 477 405 73 196617 p clear_buffer; #P hidden newex 554 368 48 196617 r 1148path; #P user umenu 72 105 72 196647 1 64 121 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1148path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 134 127 43 196617 p loader; #P comment 46 107 26 196617 read; #P flonum 80 229 68 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 46 61 242 196617 maximum value of the absolute values of a vasp; #P message 52 197 75 196617 vasp bufamax?; #P newex 52 262 38 196617 vasp./; #P newex 52 284 61 196617 vasp.update; #P newex 52 383 45 196617 vasp.opt; #P message 52 350 75 196617 vasp bufamax?; #P newex 52 165 84 196617 vasp.amax?; #P hidden message 357 142 69 196617 set bufamax?; #P hidden newex 357 116 45 196617 loadbang; #P user waveform~ 357 161 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 304 405 27 196617 stop; #P message 237 405 65 196617 startwindow; #P newex 357 383 30 196617 line~; #P message 357 363 72 196617 0 \, 2000 2000; #P newex 357 431 29 196617 dac~; #P newex 357 405 80 196617 play~ bufamax?; #P newex 52 405 61 196617 vasp.update; #P message 52 144 75 196617 vasp bufamax?; #P newex 554 405 115 196617 buffer~ bufamax? 2000; #P comment 128 145 221 196617 find the absolute maximum of this soundfile; #P comment 150 230 141 196617 -> current absolute maximum; #P comment 93 264 153 196617 use it to optimize buffer content; #P comment 46 333 179 196617 or use vasp.opt which does the same; #P comment 46 37 91 196622 vasp.amax?; #P comment 46 76 137 196617 right outlet: calculated value; #P connect 7 0 18 0; #P fasten 23 0 22 0 57 236 57 236; #P connect 22 0 21 0; #P connect 19 0 20 0; #P connect 20 0 8 0; #P fasten 18 1 25 0 131 224 85 224; #P connect 25 0 22 1; #P hidden connect 28 1 27 0; #P hidden fasten 6 1 17 0 664 428 675 428 675 138 362 138; #P hidden connect 16 0 17 0; #P hidden connect 17 0 15 0; #P connect 11 0 12 0; #P connect 12 0 9 0; #P fasten 13 0 10 0 242 426 362 426; #P fasten 14 0 10 0 309 426 362 426; #P connect 9 0 10 0; #P connect 9 0 10 1; #P connect 31 0 30 0; #P hidden connect 29 0 6 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 279 142 977 614;
+#P message 477 385 75 196617 vasp bufamax?;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 477 405 73 196617 p clear_buffer;
+#P hidden newex 554 368 48 196617 r 1148path;
+#P user umenu 72 105 72 196647 1 64 121 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1148path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 134 127 43 196617 p loader;
+#P comment 46 107 26 196617 read;
+#P flonum 80 229 68 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 46 61 242 196617 maximum value of the absolute values of a vasp;
+#P message 52 197 75 196617 vasp bufamax?;
+#P newex 52 262 38 196617 vasp./;
+#P newex 52 284 61 196617 vasp.update;
+#P newex 52 383 45 196617 vasp.opt;
+#P message 52 350 75 196617 vasp bufamax?;
+#P newex 52 165 84 196617 vasp.amax?;
+#P hidden message 357 142 69 196617 set bufamax?;
+#P hidden newex 357 116 45 196617 loadbang;
+#P user waveform~ 357 161 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 304 405 27 196617 stop;
+#P message 237 405 65 196617 startwindow;
+#P newex 357 383 30 196617 line~;
+#P message 357 363 72 196617 0 \, 2000 2000;
+#P newex 357 431 29 196617 dac~;
+#P newex 357 405 80 196617 play~ bufamax?;
+#P newex 52 405 61 196617 vasp.update;
+#P message 52 144 75 196617 vasp bufamax?;
+#P newex 554 405 115 196617 buffer~ bufamax? 2000;
+#P comment 128 145 221 196617 find the absolute maximum of this soundfile;
+#P comment 150 230 141 196617 -> current absolute maximum;
+#P comment 93 264 153 196617 use it to optimize buffer content;
+#P comment 46 333 179 196617 or use vasp.opt which does the same;
+#P comment 46 37 91 196622 vasp.amax?;
+#P comment 46 76 137 196617 right outlet: calculated value;
+#P connect 7 0 18 0;
+#P fasten 23 0 22 0 57 236 57 236;
+#P connect 22 0 21 0;
+#P connect 19 0 20 0;
+#P connect 20 0 8 0;
+#P fasten 18 1 25 0 131 224 85 224;
+#P connect 25 0 22 1;
+#P hidden connect 28 1 27 0;
+#P hidden fasten 6 1 17 0 664 428 675 428 675 138 362 138;
+#P hidden connect 16 0 17 0;
+#P hidden connect 17 0 15 0;
+#P connect 11 0 12 0;
+#P connect 12 0 9 0;
+#P fasten 13 0 10 0 242 426 362 426;
+#P fasten 14 0 10 0 309 426 362 426;
+#P connect 9 0 10 0;
+#P connect 9 0 10 1;
+#P connect 31 0 30 0;
+#P hidden connect 29 0 6 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.aminq.help b/externals/grill/vasp/max-help/vasp.aminq.help
index 1c7144bb..07289028 100755
--- a/externals/grill/vasp/max-help/vasp.aminq.help
+++ b/externals/grill/vasp/max-help/vasp.aminq.help
@@ -1 +1,92 @@
-max v2; #N vpatcher 201 150 928 511; #P origin 0 16; #P message 501 272 73 196617 vasp bufamin?; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 501 292 73 196617 p clear_buffer; #P hidden newex 583 267 48 196617 r 1038path; #P user umenu 69 118 72 196647 1 64 134 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1038path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 131 140 43 196617 p loader; #P comment 43 120 26 196617 read; #P flonum 105 223 68 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 43 67 253 196617 minimum value of the absolute values of a vasp; #P newex 56 183 59 196617 vasp.amin?; #P hidden message 384 99 65 196617 set bufamin?; #P hidden newex 384 74 45 196617 loadbang; #P user waveform~ 384 124 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 331 292 27 196617 stop; #P message 264 292 65 196617 startwindow; #P newex 384 270 30 196617 line~; #P message 384 250 72 196617 0 \, 2000 2000; #P newex 384 318 29 196617 dac~; #P newex 384 292 75 196617 play~ bufamin?; #P message 56 157 73 196617 vasp bufamin?; #P newex 583 292 113 196617 buffer~ bufamin? 2000; #P comment 131 158 218 196617 find the absolute minimum of this soundfile; #P comment 176 225 141 196617 -> current absolute minimum; #P comment 43 44 91 196622 vasp.amin?; #P comment 43 82 137 196617 right outlet: calculated value; #P connect 5 0 15 0; #P connect 15 1 17 0; #P hidden connect 20 1 19 0; #P hidden fasten 4 1 14 0 691 311 701 311 701 95 389 95; #P hidden connect 13 0 14 0; #P hidden connect 14 0 12 0; #P connect 8 0 9 0; #P connect 9 0 6 0; #P fasten 10 0 7 0 269 312 389 312; #P fasten 11 0 7 0 336 312 389 312; #P connect 6 0 7 0; #P connect 6 0 7 1; #P connect 23 0 22 0; #P hidden connect 21 0 4 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 201 150 928 511;
+#P origin 0 16;
+#P message 501 272 73 196617 vasp bufamin?;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 501 292 73 196617 p clear_buffer;
+#P hidden newex 583 267 48 196617 r 1038path;
+#P user umenu 69 118 72 196647 1 64 134 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1038path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 131 140 43 196617 p loader;
+#P comment 43 120 26 196617 read;
+#P flonum 105 223 68 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 43 67 253 196617 minimum value of the absolute values of a vasp;
+#P newex 56 183 59 196617 vasp.amin?;
+#P hidden message 384 99 65 196617 set bufamin?;
+#P hidden newex 384 74 45 196617 loadbang;
+#P user waveform~ 384 124 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 331 292 27 196617 stop;
+#P message 264 292 65 196617 startwindow;
+#P newex 384 270 30 196617 line~;
+#P message 384 250 72 196617 0 \, 2000 2000;
+#P newex 384 318 29 196617 dac~;
+#P newex 384 292 75 196617 play~ bufamin?;
+#P message 56 157 73 196617 vasp bufamin?;
+#P newex 583 292 113 196617 buffer~ bufamin? 2000;
+#P comment 131 158 218 196617 find the absolute minimum of this soundfile;
+#P comment 176 225 141 196617 -> current absolute minimum;
+#P comment 43 44 91 196622 vasp.amin?;
+#P comment 43 82 137 196617 right outlet: calculated value;
+#P connect 5 0 15 0;
+#P connect 15 1 17 0;
+#P hidden connect 20 1 19 0;
+#P hidden fasten 4 1 14 0 691 311 701 311 701 95 389 95;
+#P hidden connect 13 0 14 0;
+#P hidden connect 14 0 12 0;
+#P connect 8 0 9 0;
+#P connect 9 0 6 0;
+#P fasten 10 0 7 0 269 312 389 312;
+#P fasten 11 0 7 0 336 312 389 312;
+#P connect 6 0 7 0;
+#P connect 6 0 7 1;
+#P connect 23 0 22 0;
+#P hidden connect 21 0 4 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.beveldn.help b/externals/grill/vasp/max-help/vasp.beveldn.help
index 77c512c2..87a58e65 100755
--- a/externals/grill/vasp/max-help/vasp.beveldn.help
+++ b/externals/grill/vasp/max-help/vasp.beveldn.help
@@ -1 +1,92 @@
-max v2; #N vpatcher 89 186 867 430; #P message 557 185 73 196617 vasp bufbevel!; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 557 205 73 196617 p clear_buffer; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 435 24 49 196617 p wfkeys; #P comment 219 56 168 196617 generates a linear ramp from 1 to 0; #P comment 219 34 89 196622 vasp.!bevel; #P message 225 84 73 196617 vasp bufbevel!; #P newex 225 112 59 196617 vasp.!bevel; #P newex 225 138 61 196617 vasp.update; #P newex 41 112 55 196617 vasp.bevel; #P hidden message 435 65 65 196617 set bufbevel!; #P hidden newex 435 46 45 196617 loadbang; #P user waveform~ 435 83 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 41 138 61 196617 vasp.update; #P message 41 84 73 196617 vasp bufbevel!; #P newex 635 205 113 196617 buffer~ bufbevel! 2000; #P comment 38 56 168 196617 generates a linear ramp from 0 to 1; #P comment 38 34 89 196622 vasp.bevel; #P connect 3 0 8 0; #P connect 8 0 4 0; #P connect 11 0 10 0; #P connect 10 0 9 0; #P hidden connect 6 0 7 0; #P hidden connect 7 0 5 0; #P hidden connect 14 0 5 0; #P connect 16 0 15 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 89 186 867 430;
+#P message 557 185 73 196617 vasp bufbevel!;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 557 205 73 196617 p clear_buffer;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 435 24 49 196617 p wfkeys;
+#P comment 219 56 168 196617 generates a linear ramp from 1 to 0;
+#P comment 219 34 89 196622 vasp.!bevel;
+#P message 225 84 73 196617 vasp bufbevel!;
+#P newex 225 112 59 196617 vasp.!bevel;
+#P newex 225 138 61 196617 vasp.update;
+#P newex 41 112 55 196617 vasp.bevel;
+#P hidden message 435 65 65 196617 set bufbevel!;
+#P hidden newex 435 46 45 196617 loadbang;
+#P user waveform~ 435 83 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 41 138 61 196617 vasp.update;
+#P message 41 84 73 196617 vasp bufbevel!;
+#P newex 635 205 113 196617 buffer~ bufbevel! 2000;
+#P comment 38 56 168 196617 generates a linear ramp from 0 to 1;
+#P comment 38 34 89 196622 vasp.bevel;
+#P connect 3 0 8 0;
+#P connect 8 0 4 0;
+#P connect 11 0 10 0;
+#P connect 10 0 9 0;
+#P hidden connect 6 0 7 0;
+#P hidden connect 7 0 5 0;
+#P hidden connect 14 0 5 0;
+#P connect 16 0 15 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.bevelup.help b/externals/grill/vasp/max-help/vasp.bevelup.help
index 8d6519f6..61e5ab2e 100755
--- a/externals/grill/vasp/max-help/vasp.bevelup.help
+++ b/externals/grill/vasp/max-help/vasp.bevelup.help
@@ -1 +1,92 @@
-max v2; #N vpatcher 141 224 919 475; #P message 562 189 70 196617 vasp bufbevel; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 562 209 73 196617 p clear_buffer; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 438 29 49 196617 p wfkeys; #P comment 222 59 168 196617 generates a linear ramp from 1 to 0; #P comment 222 37 89 196622 vasp.!bevel; #P message 228 87 70 196617 vasp bufbevel; #P newex 228 115 59 196617 vasp.!bevel; #P newex 228 141 61 196617 vasp.update; #P newex 44 115 55 196617 vasp.bevel; #P hidden message 438 69 63 196617 set bufbevel; #P hidden newex 438 50 45 196617 loadbang; #P user waveform~ 438 86 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 44 141 61 196617 vasp.update; #P message 44 87 70 196617 vasp bufbevel; #P newex 640 209 110 196617 buffer~ bufbevel 2000; #P comment 41 59 168 196617 generates a linear ramp from 0 to 1; #P comment 41 37 89 196622 vasp.bevel; #P connect 3 0 8 0; #P connect 8 0 4 0; #P connect 11 0 10 0; #P connect 10 0 9 0; #P hidden connect 6 0 7 0; #P hidden connect 7 0 5 0; #P hidden connect 14 0 5 0; #P connect 16 0 15 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 141 224 919 475;
+#P message 562 189 70 196617 vasp bufbevel;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 562 209 73 196617 p clear_buffer;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 438 29 49 196617 p wfkeys;
+#P comment 222 59 168 196617 generates a linear ramp from 1 to 0;
+#P comment 222 37 89 196622 vasp.!bevel;
+#P message 228 87 70 196617 vasp bufbevel;
+#P newex 228 115 59 196617 vasp.!bevel;
+#P newex 228 141 61 196617 vasp.update;
+#P newex 44 115 55 196617 vasp.bevel;
+#P hidden message 438 69 63 196617 set bufbevel;
+#P hidden newex 438 50 45 196617 loadbang;
+#P user waveform~ 438 86 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 44 141 61 196617 vasp.update;
+#P message 44 87 70 196617 vasp bufbevel;
+#P newex 640 209 110 196617 buffer~ bufbevel 2000;
+#P comment 41 59 168 196617 generates a linear ramp from 0 to 1;
+#P comment 41 37 89 196622 vasp.bevel;
+#P connect 3 0 8 0;
+#P connect 8 0 4 0;
+#P connect 11 0 10 0;
+#P connect 10 0 9 0;
+#P hidden connect 6 0 7 0;
+#P hidden connect 7 0 5 0;
+#P hidden connect 14 0 5 0;
+#P connect 16 0 15 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cdiv.help b/externals/grill/vasp/max-help/vasp.cdiv.help
index 6951edca..820a1d4f 100755
--- a/externals/grill/vasp/max-help/vasp.cdiv.help
+++ b/externals/grill/vasp/max-help/vasp.cdiv.help
@@ -1 +1,12 @@
-max v2; #N vpatcher 227 188 626 430; #P comment 43 141 118 196617 c \, d ... right operand; #P comment 43 126 118 196617 a \, b ... left operand; #P comment 43 111 102 196617 e \, f ... target buffers; #P newex 229 79 43 196617 vasp.c/; #P comment 43 184 300 196617 differences in lengths are adjusted to smaller vector of each pair; #P comment 43 81 98 196617 e+if=(a+ib)/(c+id); #P comment 43 42 89 196622 vasp.c/; #P comment 43 168 302 196617 vasp.c/ needs 2 vectors per operand which are treated as pairs; #P comment 43 65 109 196617 complex division; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 227 188 626 430;
+#P comment 43 141 118 196617 c \, d ... right operand;
+#P comment 43 126 118 196617 a \, b ... left operand;
+#P comment 43 111 102 196617 e \, f ... target buffers;
+#P newex 229 79 43 196617 vasp.c/;
+#P comment 43 184 300 196617 differences in lengths are adjusted to smaller vector of each pair;
+#P comment 43 81 98 196617 e+if=(a+ib)/(c+id);
+#P comment 43 42 89 196622 vasp.c/;
+#P comment 43 168 302 196617 vasp.c/ needs 2 vectors per operand which are treated as pairs;
+#P comment 43 65 109 196617 complex division;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cfft.help b/externals/grill/vasp/max-help/vasp.cfft.help
index dac57b42..d72d0030 100755
--- a/externals/grill/vasp/max-help/vasp.cfft.help
+++ b/externals/grill/vasp/max-help/vasp.cfft.help
@@ -1 +1,414 @@
-max v2; #N vpatcher 146 162 914 644; #P origin 0 8; #P message 546 392 84 196617 vasp bufre bufim; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 546 413 78 196617 p clear_buffers; #P hidden newex 631 367 54 196617 r 1061path1; #P user umenu 255 103 72 196647 1 64 119 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 54 196617 s 1061path1; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P connect 4 0 1 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 3 1 0 0; #P pop; #P hidden newobj 317 133 43 196617 p loader; #P comment 229 105 26 196617 read; #P comment 140 319 217 196617 inverse cfft to transform back to time domain; #P newex 54 367 61 196617 vasp.update; #P message 54 318 84 196617 vasp bufre bufim; #P newex 54 346 52 196617 vasp.c!fft; #N vpatcher 122 59 923 629; #P origin 0 12; #P comment 100 398 152 196617 set selected samples to 0; #P user umenu 259 107 72 196647 1 64 123 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 344 681; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1061path; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P connect 4 0 1 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 3 1 0 0; #P pop; #P hidden newobj 321 137 43 196617 p loader; #P message 566 469 95 196617 vasp bufre1 bufim1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 566 489 78 196617 p clear_buffers; #P hidden newex 662 447 48 196617 r 1061path; #P comment 230 108 26 196617 read; #P comment 148 206 53 196617 transform; #P comment 311 323 21 196617 and; #P comment 283 323 17 196617 Hz; #P flonum 224 321 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P hidden newex 554 406 27 196617 - 0.; #P hidden newex 554 385 27 196617 t b f; #P newex 51 489 61 196617 vasp.update; #P comment 150 448 54 196617 invers cfft; #P message 51 447 95 196617 vasp bufre1 bufim1; #P newex 51 467 52 196617 vasp.c!fft; #P comment 115 269 207 196617 clear upper (mirrored frequencies); #P newex 51 287 61 196617 vasp.update; #P newex 51 267 45 196617 vasp.= 0; #P button 334 321 15 0; #P newex 51 417 61 196617 vasp.update; #P newex 51 396 45 196617 vasp.= 0; #P message 67 373 158 196617 set vasp \$1 bufre1 \$2 bufim1 \$2; #N vpatcher 139 82 551 321; #P origin 0 107; #N comlet length and offset as a list; #P outlet 99 199 15 0; #P comment 161 182 194 196617 2nd element of the list offset of the vasp; #N comlet loop startpoint; #P inlet 69 24 15 0; #N comlet loop endpoint; #P inlet 99 24 15 0; #P newex 99 94 27 196617 - 0.; #P newex 99 73 27 196617 t b f; #P comment 181 117 72 196617 msec to samps; #P comment 136 93 118 196617 <<< end - start = length; #P newex 255 135 87 196617 * 44.099998; #P newex 99 114 71 196617 * 44.099998; #P newex 99 162 50 196617 pack 0 0; #P comment 162 165 194 196617 1st element of the list lenght of the vasp; #P fasten 9 0 6 0 74 61 104 61; #P fasten 8 0 7 0 104 52 89 52 89 92 104 92; #P connect 6 0 7 0; #P connect 7 0 2 0; #P connect 2 0 1 0; #P connect 1 0 11 0; #P connect 6 1 7 1; #P fasten 3 0 1 1 260 157 144 157; #P fasten 9 0 3 0 74 61 260 61; #P pop; #P newobj 67 346 64 196617 p looptovasp; #P comment 452 365 71 196617 selection from; #P comment 668 365 17 196617 Hz; #P comment 586 365 17 196617 to; #P flonum 606 363 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 525 363 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P hidden newex 606 342 27 196617 / 4.; #P hidden newex 525 342 27 196617 / 4.; #P hidden newex 606 325 67 196617 * 44.099998; #P hidden newex 525 324 66 196617 * 44.099998; #P comment 737 318 42 196617 44.1kHz; #P comment 451 319 35 196617 0 Hz; #P newex 51 246 55 196617 vasp.upper; #P comment 714 202 49 196617 imaginary; #P message 51 205 95 196617 vasp bufre1 bufim1; #P newex 51 226 49 196617 vasp.cfft; #P hidden message 452 198 55 196617 set bufim1; #P user waveform~ 452 216 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 662 489 102 196617 buffer~ bufim1 4000; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 452 33 49 196617 p wfkeys; #P message 411 490 27 196617 stop; #P message 343 490 65 196617 startwindow; #P newex 452 516 29 196617 dac~; #P newex 452 464 30 196617 line~; #P message 452 441 72 196617 0 \, 4000 4000; #P newex 452 489 65 196617 play~ bufre1; #P hidden message 452 76 55 196617 set bufre1; #P hidden newex 452 55 45 196617 loadbang; #P user waveform~ 452 95 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 51 149 55 196617 vasp.* 0.5; #P newex 51 171 61 196617 vasp.update; #P message 51 107 62 196617 vasp bufre1; #P newex 662 469 102 196617 buffer~ bufre1 4000; #P newex 51 127 55 196617 vasp.noise; #P comment 45 60 242 196617 clear a region in the frequency domain to get a filter; #P comment 45 38 144 196622 filter_example; #P comment 115 108 112 196617 generate white noise or; #P comment 739 82 26 196617 real; #P comment 115 289 207 196617 now time is frequency and frequency is time; #P comment 594 317 35 196617 sr/2; #P comment 132 348 286 196617 this patcher scales a wavedraw selection into the vasp format; #P comment 67 323 152 196617 select a region ( frequency band); #P connect 10 0 8 0; #P connect 8 0 12 0; #P connect 12 0 11 0; #P connect 27 0 26 0; #P connect 26 0 29 0; #P connect 29 0 46 0; #P connect 46 0 47 0; #P connect 42 0 43 0; #P fasten 45 0 43 0 339 342 56 342; #P lcolor 15; #P connect 43 0 44 0; #P connect 50 0 49 0; #P connect 49 0 52 0; #P hidden fasten 24 2 41 0 577 318 72 318; #P connect 41 0 42 0; #P hidden fasten 24 3 41 1 637 318 126 318; #P hidden fasten 54 0 55 0 559 425 426 425 426 318 229 318; #P hidden connect 64 1 63 0; #P hidden connect 14 0 15 0; #P hidden fasten 9 1 15 0 759 486 774 486 774 75; #P hidden connect 22 0 13 0; #P hidden connect 15 0 13 0; #P hidden fasten 14 0 25 0 457 198 457 198; #P hidden connect 25 0 24 0; #P hidden fasten 22 0 24 0 457 91 457 91; #P connect 17 0 18 0; #P connect 18 0 16 0; #P fasten 21 0 19 0 416 509 457 509; #P fasten 20 0 19 0 348 509 457 509; #P connect 16 0 19 0; #P connect 16 0 19 1; #P hidden fasten 24 2 32 0 577 323 530 323; #P hidden connect 32 0 34 0; #P hidden connect 34 0 36 0; #P hidden fasten 36 0 53 0 530 382 559 382; #P hidden fasten 37 0 54 0 611 404 559 404; #P hidden connect 53 0 54 0; #P connect 62 0 61 0; #P hidden connect 53 1 54 1; #P hidden fasten 24 3 33 0 637 323 611 323; #P hidden connect 33 0 35 0; #P hidden connect 35 0 37 0; #P hidden connect 60 0 9 0; #P hidden fasten 24 5 13 4 757 346 757 346 757 73 757 73; #P hidden connect 13 5 24 4; #P pop; #P newobj 54 411 83 196617 p filter_example; #P comment 699 315 42 196617 44.1kHz; #P comment 413 316 35 196617 0 Hz; #P newex 54 272 61 196617 vasp.update; #P comment 677 198 49 196617 imaginary; #P message 54 223 84 196617 vasp bufre bufim; #P newex 54 244 49 196617 vasp.cfft; #P hidden message 414 195 50 196617 set bufim; #P user waveform~ 414 213 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 631 412 95 196617 buffer~ bufim 4000; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 414 30 49 196617 p wfkeys; #P message 373 413 27 196617 stop; #P message 305 413 65 196617 startwindow; #P newex 414 439 29 196617 dac~; #P newex 414 387 30 196617 line~; #P message 414 364 72 196617 0 \, 4000 4000; #P newex 414 412 60 196617 play~ bufre; #P hidden message 414 73 49 196617 set bufre; #P hidden newex 414 52 45 196617 loadbang; #P user waveform~ 414 92 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 55 158 55 196617 vasp.* 0.5; #P newex 55 180 61 196617 vasp.update; #P message 55 104 55 196617 vasp bufre; #P newex 631 392 95 196617 buffer~ bufre 4000; #P newex 55 136 55 196617 vasp.noise; #P comment 53 58 182 196617 complex fourier transformation; #P comment 53 35 89 196622 vasp.cfft; #P comment 113 105 115 196617 generate white noise or; #P comment 53 73 105 196617 cfft needs two buffers; #P comment 703 78 26 196617 real; #P comment 119 275 207 196617 now time is frequency and frequency is time; #P comment 556 314 35 196617 sr/2; #P connect 26 0 25 0; #P connect 25 0 28 0; #P connect 33 0 32 0; #P connect 32 0 34 0; #P connect 9 0 7 0; #P connect 7 0 11 0; #P connect 11 0 10 0; #P hidden connect 38 1 37 0; #P hidden connect 13 0 14 0; #P hidden fasten 8 1 14 0 721 408 737 408 737 72; #P hidden connect 21 0 12 0; #P hidden connect 14 0 12 0; #P hidden fasten 13 0 24 0 419 195 419 195; #P hidden connect 24 0 23 0; #P hidden fasten 21 0 23 0 419 88 419 88; #P connect 16 0 17 0; #P connect 17 0 15 0; #P connect 15 0 18 0; #P fasten 19 0 18 0 310 432 419 432; #P fasten 20 0 18 0 378 432 419 432; #P connect 15 0 18 1; #P connect 41 0 40 0; #P hidden connect 39 0 8 0; #P hidden fasten 23 5 12 4 719 343 745 343 745 70 719 70; #P hidden connect 12 5 23 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 146 162 914 644;
+#P origin 0 8;
+#P message 546 392 84 196617 vasp bufre bufim;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 546 413 78 196617 p clear_buffers;
+#P hidden newex 631 367 54 196617 r 1061path1;
+#P user umenu 255 103 72 196647 1 64 119 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 54 196617 s 1061path1;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P connect 4 0 1 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 317 133 43 196617 p loader;
+#P comment 229 105 26 196617 read;
+#P comment 140 319 217 196617 inverse cfft to transform back to time domain;
+#P newex 54 367 61 196617 vasp.update;
+#P message 54 318 84 196617 vasp bufre bufim;
+#P newex 54 346 52 196617 vasp.c!fft;
+#N vpatcher 122 59 923 629;
+#P origin 0 12;
+#P comment 100 398 152 196617 set selected samples to 0;
+#P user umenu 259 107 72 196647 1 64 123 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 344 681;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1061path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P connect 4 0 1 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 321 137 43 196617 p loader;
+#P message 566 469 95 196617 vasp bufre1 bufim1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 566 489 78 196617 p clear_buffers;
+#P hidden newex 662 447 48 196617 r 1061path;
+#P comment 230 108 26 196617 read;
+#P comment 148 206 53 196617 transform;
+#P comment 311 323 21 196617 and;
+#P comment 283 323 17 196617 Hz;
+#P flonum 224 321 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P hidden newex 554 406 27 196617 - 0.;
+#P hidden newex 554 385 27 196617 t b f;
+#P newex 51 489 61 196617 vasp.update;
+#P comment 150 448 54 196617 invers cfft;
+#P message 51 447 95 196617 vasp bufre1 bufim1;
+#P newex 51 467 52 196617 vasp.c!fft;
+#P comment 115 269 207 196617 clear upper (mirrored frequencies);
+#P newex 51 287 61 196617 vasp.update;
+#P newex 51 267 45 196617 vasp.= 0;
+#P button 334 321 15 0;
+#P newex 51 417 61 196617 vasp.update;
+#P newex 51 396 45 196617 vasp.= 0;
+#P message 67 373 158 196617 set vasp \$1 bufre1 \$2 bufim1 \$2;
+#N vpatcher 139 82 551 321;
+#P origin 0 107;
+#N comlet length and offset as a list;
+#P outlet 99 199 15 0;
+#P comment 161 182 194 196617 2nd element of the list offset of the vasp;
+#N comlet loop startpoint;
+#P inlet 69 24 15 0;
+#N comlet loop endpoint;
+#P inlet 99 24 15 0;
+#P newex 99 94 27 196617 - 0.;
+#P newex 99 73 27 196617 t b f;
+#P comment 181 117 72 196617 msec to samps;
+#P comment 136 93 118 196617 <<< end - start = length;
+#P newex 255 135 87 196617 * 44.099998;
+#P newex 99 114 71 196617 * 44.099998;
+#P newex 99 162 50 196617 pack 0 0;
+#P comment 162 165 194 196617 1st element of the list lenght of the vasp;
+#P fasten 9 0 6 0 74 61 104 61;
+#P fasten 8 0 7 0 104 52 89 52 89 92 104 92;
+#P connect 6 0 7 0;
+#P connect 7 0 2 0;
+#P connect 2 0 1 0;
+#P connect 1 0 11 0;
+#P connect 6 1 7 1;
+#P fasten 3 0 1 1 260 157 144 157;
+#P fasten 9 0 3 0 74 61 260 61;
+#P pop;
+#P newobj 67 346 64 196617 p looptovasp;
+#P comment 452 365 71 196617 selection from;
+#P comment 668 365 17 196617 Hz;
+#P comment 586 365 17 196617 to;
+#P flonum 606 363 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P flonum 525 363 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P hidden newex 606 342 27 196617 / 4.;
+#P hidden newex 525 342 27 196617 / 4.;
+#P hidden newex 606 325 67 196617 * 44.099998;
+#P hidden newex 525 324 66 196617 * 44.099998;
+#P comment 737 318 42 196617 44.1kHz;
+#P comment 451 319 35 196617 0 Hz;
+#P newex 51 246 55 196617 vasp.upper;
+#P comment 714 202 49 196617 imaginary;
+#P message 51 205 95 196617 vasp bufre1 bufim1;
+#P newex 51 226 49 196617 vasp.cfft;
+#P hidden message 452 198 55 196617 set bufim1;
+#P user waveform~ 452 216 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 662 489 102 196617 buffer~ bufim1 4000;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 452 33 49 196617 p wfkeys;
+#P message 411 490 27 196617 stop;
+#P message 343 490 65 196617 startwindow;
+#P newex 452 516 29 196617 dac~;
+#P newex 452 464 30 196617 line~;
+#P message 452 441 72 196617 0 \, 4000 4000;
+#P newex 452 489 65 196617 play~ bufre1;
+#P hidden message 452 76 55 196617 set bufre1;
+#P hidden newex 452 55 45 196617 loadbang;
+#P user waveform~ 452 95 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 51 149 55 196617 vasp.* 0.5;
+#P newex 51 171 61 196617 vasp.update;
+#P message 51 107 62 196617 vasp bufre1;
+#P newex 662 469 102 196617 buffer~ bufre1 4000;
+#P newex 51 127 55 196617 vasp.noise;
+#P comment 45 60 242 196617 clear a region in the frequency domain to get a filter;
+#P comment 45 38 144 196622 filter_example;
+#P comment 115 108 112 196617 generate white noise or;
+#P comment 739 82 26 196617 real;
+#P comment 115 289 207 196617 now time is frequency and frequency is time;
+#P comment 594 317 35 196617 sr/2;
+#P comment 132 348 286 196617 this patcher scales a wavedraw selection into the vasp format;
+#P comment 67 323 152 196617 select a region ( frequency band);
+#P connect 10 0 8 0;
+#P connect 8 0 12 0;
+#P connect 12 0 11 0;
+#P connect 27 0 26 0;
+#P connect 26 0 29 0;
+#P connect 29 0 46 0;
+#P connect 46 0 47 0;
+#P connect 42 0 43 0;
+#P fasten 45 0 43 0 339 342 56 342;
+#P lcolor 15;
+#P connect 43 0 44 0;
+#P connect 50 0 49 0;
+#P connect 49 0 52 0;
+#P hidden fasten 24 2 41 0 577 318 72 318;
+#P connect 41 0 42 0;
+#P hidden fasten 24 3 41 1 637 318 126 318;
+#P hidden fasten 54 0 55 0 559 425 426 425 426 318 229 318;
+#P hidden connect 64 1 63 0;
+#P hidden connect 14 0 15 0;
+#P hidden fasten 9 1 15 0 759 486 774 486 774 75;
+#P hidden connect 22 0 13 0;
+#P hidden connect 15 0 13 0;
+#P hidden fasten 14 0 25 0 457 198 457 198;
+#P hidden connect 25 0 24 0;
+#P hidden fasten 22 0 24 0 457 91 457 91;
+#P connect 17 0 18 0;
+#P connect 18 0 16 0;
+#P fasten 21 0 19 0 416 509 457 509;
+#P fasten 20 0 19 0 348 509 457 509;
+#P connect 16 0 19 0;
+#P connect 16 0 19 1;
+#P hidden fasten 24 2 32 0 577 323 530 323;
+#P hidden connect 32 0 34 0;
+#P hidden connect 34 0 36 0;
+#P hidden fasten 36 0 53 0 530 382 559 382;
+#P hidden fasten 37 0 54 0 611 404 559 404;
+#P hidden connect 53 0 54 0;
+#P connect 62 0 61 0;
+#P hidden connect 53 1 54 1;
+#P hidden fasten 24 3 33 0 637 323 611 323;
+#P hidden connect 33 0 35 0;
+#P hidden connect 35 0 37 0;
+#P hidden connect 60 0 9 0;
+#P hidden fasten 24 5 13 4 757 346 757 346 757 73 757 73;
+#P hidden connect 13 5 24 4;
+#P pop;
+#P newobj 54 411 83 196617 p filter_example;
+#P comment 699 315 42 196617 44.1kHz;
+#P comment 413 316 35 196617 0 Hz;
+#P newex 54 272 61 196617 vasp.update;
+#P comment 677 198 49 196617 imaginary;
+#P message 54 223 84 196617 vasp bufre bufim;
+#P newex 54 244 49 196617 vasp.cfft;
+#P hidden message 414 195 50 196617 set bufim;
+#P user waveform~ 414 213 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 631 412 95 196617 buffer~ bufim 4000;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 414 30 49 196617 p wfkeys;
+#P message 373 413 27 196617 stop;
+#P message 305 413 65 196617 startwindow;
+#P newex 414 439 29 196617 dac~;
+#P newex 414 387 30 196617 line~;
+#P message 414 364 72 196617 0 \, 4000 4000;
+#P newex 414 412 60 196617 play~ bufre;
+#P hidden message 414 73 49 196617 set bufre;
+#P hidden newex 414 52 45 196617 loadbang;
+#P user waveform~ 414 92 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 55 158 55 196617 vasp.* 0.5;
+#P newex 55 180 61 196617 vasp.update;
+#P message 55 104 55 196617 vasp bufre;
+#P newex 631 392 95 196617 buffer~ bufre 4000;
+#P newex 55 136 55 196617 vasp.noise;
+#P comment 53 58 182 196617 complex fourier transformation;
+#P comment 53 35 89 196622 vasp.cfft;
+#P comment 113 105 115 196617 generate white noise or;
+#P comment 53 73 105 196617 cfft needs two buffers;
+#P comment 703 78 26 196617 real;
+#P comment 119 275 207 196617 now time is frequency and frequency is time;
+#P comment 556 314 35 196617 sr/2;
+#P connect 26 0 25 0;
+#P connect 25 0 28 0;
+#P connect 33 0 32 0;
+#P connect 32 0 34 0;
+#P connect 9 0 7 0;
+#P connect 7 0 11 0;
+#P connect 11 0 10 0;
+#P hidden connect 38 1 37 0;
+#P hidden connect 13 0 14 0;
+#P hidden fasten 8 1 14 0 721 408 737 408 737 72;
+#P hidden connect 21 0 12 0;
+#P hidden connect 14 0 12 0;
+#P hidden fasten 13 0 24 0 419 195 419 195;
+#P hidden connect 24 0 23 0;
+#P hidden fasten 21 0 23 0 419 88 419 88;
+#P connect 16 0 17 0;
+#P connect 17 0 15 0;
+#P connect 15 0 18 0;
+#P fasten 19 0 18 0 310 432 419 432;
+#P fasten 20 0 18 0 378 432 419 432;
+#P connect 15 0 18 1;
+#P connect 41 0 40 0;
+#P hidden connect 39 0 8 0;
+#P hidden fasten 23 5 12 4 719 343 745 343 745 70 719 70;
+#P hidden connect 12 5 23 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.chk.help b/externals/grill/vasp/max-help/vasp.chk.help
index 1584f8c3..37412227 100755
--- a/externals/grill/vasp/max-help/vasp.chk.help
+++ b/externals/grill/vasp/max-help/vasp.chk.help
@@ -1 +1,20 @@
-max v2; #N vpatcher 215 115 767 458; #P hidden message 411 138 22 196617 set; #P hidden newex 411 104 45 196617 loadbang; #P comment 237 127 150 196617 buffer length = 88200 samples; #P comment 237 272 253 196617 corrected vasp with maximum length at offset 44100; #P newex 70 246 60 196617 prepend set; #P message 70 170 135 196617 vasp 88200 bufchk 44100 0; #P newex 70 194 45 196617 vasp.chk; #P newex 70 125 101 196617 buffer~ bufchk 2000; #P comment 59 77 272 196617 checks the dimensions of a vasp and corrects them; #P comment 59 55 89 196622 vasp.chk; #P comment 237 171 150 196617 vasp with impossible dimensions; #P message 70 271 165 196617; #P connect 6 0 5 0; #P connect 5 0 7 0; #P connect 7 0 0 0; #P hidden fasten 11 0 0 0 416 266 75 266; #P hidden connect 10 0 11 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 215 115 767 458;
+#P hidden message 411 138 22 196617 set;
+#P hidden newex 411 104 45 196617 loadbang;
+#P comment 237 127 150 196617 buffer length = 88200 samples;
+#P comment 237 272 253 196617 corrected vasp with maximum length at offset 44100;
+#P newex 70 246 60 196617 prepend set;
+#P message 70 170 135 196617 vasp 88200 bufchk 44100 0;
+#P newex 70 194 45 196617 vasp.chk;
+#P newex 70 125 101 196617 buffer~ bufchk 2000;
+#P comment 59 77 272 196617 checks the dimensions of a vasp and corrects them;
+#P comment 59 55 89 196622 vasp.chk;
+#P comment 237 171 150 196617 vasp with impossible dimensions;
+#P message 70 271 165 196617;
+#P connect 6 0 5 0;
+#P connect 5 0 7 0;
+#P connect 7 0 0 0;
+#P hidden fasten 11 0 0 0 416 266 75 266;
+#P hidden connect 10 0 11 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cifft.help b/externals/grill/vasp/max-help/vasp.cifft.help
index 478f4273..0912ba43 100755
--- a/externals/grill/vasp/max-help/vasp.cifft.help
+++ b/externals/grill/vasp/max-help/vasp.cifft.help
@@ -1 +1,407 @@
-max v2; #N vpatcher 153 83 876 572; #P origin 0 10; #P user umenu 80 104 72 196647 1 64 120 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 344 681; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 54 196617 s 1063path1; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 4 0 1 0; #P connect 3 1 0 0; #P pop; #P hidden newobj 142 125 43 196617 p loader; #P message 501 400 90 196617 vasp bufre! bufim!; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 501 420 78 196617 p clear_buffers; #P hidden newex 593 370 54 196617 r 1063path1; #P comment 53 106 26 196617 read; #P comment 154 312 214 196617 inverse cfft to transform back to time domain; #P newex 62 360 61 196617 vasp.update; #P message 62 311 90 196617 vasp bufre! bufim!; #P newex 62 339 52 196617 vasp.c!fft; #N vpatcher 155 102 963 712; #P origin 0 7; #P user umenu 262 101 72 196647 1 64 117 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 344 681; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1063path; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P connect 4 0 1 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 3 1 0 0; #P pop; #P hidden newobj 324 123 43 196617 p loader; #P message 558 519 102 196617 vasp bufre1! bufim1!; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 558 539 78 196617 p clear_buffers; #P hidden newex 662 492 48 196617 r 1063path; #P comment 235 103 26 196617 read; #P flonum 367 323 33 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 157 201 148 196617 transform to frequency domain; #P comment 288 325 79 196617 Hz \, a gainfactor; #P flonum 227 323 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P hidden newex 557 401 27 196617 - 0.; #P hidden newex 557 380 27 196617 t b f; #P newex 54 539 61 196617 vasp.update; #P comment 159 498 177 196617 invers cfft to get back to time domain; #P message 54 497 102 196617 vasp bufre1! bufim1!; #P newex 54 517 52 196617 vasp.c!fft; #P comment 105 264 167 196617 clear upper (mirrored frequencies); #P newex 54 282 61 196617 vasp.update; #P newex 54 262 45 196617 vasp.= 0; #P button 97 342 15 0; #P newex 54 467 61 196617 vasp.update; #P newex 54 446 51 196617 vasp.* 1.; #P message 64 399 164 196617 set vasp \$1 bufre1! \$2 bufim1! \$2; #N vpatcher 139 82 551 321; #P origin 0 107; #N comlet length and offset as a list; #P outlet 99 199 15 0; #P comment 161 182 194 196617 2nd element of the list offset of the vasp; #N comlet loop startpoint; #P inlet 69 24 15 0; #N comlet loop endpoint; #P inlet 99 24 15 0; #P newex 99 94 27 196617 - 0.; #P newex 99 73 27 196617 t b f; #P comment 181 117 72 196617 msec to samps; #P comment 136 93 118 196617 <<< end - start = length; #P newex 255 135 87 196617 * 44.099998; #P newex 99 114 71 196617 * 44.099998; #P newex 99 162 50 196617 pack 0 0; #P comment 162 165 194 196617 1st element of the list lenght of the vasp; #P fasten 9 0 6 0 74 61 104 61; #P connect 6 0 7 0; #P fasten 8 0 7 0 104 52 89 52 89 92 104 92; #P connect 7 0 2 0; #P connect 2 0 1 0; #P connect 1 0 11 0; #P connect 6 1 7 1; #P fasten 3 0 1 1 260 157 144 157; #P fasten 9 0 3 0 74 61 260 61; #P pop; #P newobj 64 371 64 196617 p looptovasp; #P comment 455 360 71 196617 selection from; #P comment 671 360 17 196617 Hz; #P comment 589 360 17 196617 to; #P flonum 609 358 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 528 358 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P hidden newex 609 337 27 196617 / 4.; #P hidden newex 528 337 27 196617 / 4.; #P hidden newex 609 320 67 196617 * 44.099998; #P hidden newex 528 319 66 196617 * 44.099998; #P comment 740 313 42 196617 44.1kHz; #P comment 454 314 35 196617 0 Hz; #P newex 54 241 55 196617 vasp.upper; #P comment 717 197 49 196617 imaginary; #P message 54 200 102 196617 vasp bufre1! bufim1!; #P newex 54 221 49 196617 vasp.cfft; #P hidden message 455 193 59 196617 set bufim1!; #P user waveform~ 455 211 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 662 539 105 196617 buffer~ bufim1! 4000; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 455 28 49 196617 p wfkeys; #P message 414 541 27 196617 stop; #P message 346 541 65 196617 startwindow; #P newex 455 567 29 196617 dac~; #P newex 455 515 30 196617 line~; #P message 455 492 72 196617 0 \, 4000 4000; #P newex 455 539 69 196617 play~ bufre1!; #P hidden message 455 71 58 196617 set bufre1!; #P hidden newex 455 50 45 196617 loadbang; #P user waveform~ 455 90 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 54 144 55 196617 vasp.* 0.5; #P newex 54 166 61 196617 vasp.update; #P message 54 102 65 196617 vasp bufre1!; #P newex 662 519 105 196617 buffer~ bufre1! 4000; #P newex 54 122 55 196617 vasp.noise; #P comment 48 55 339 196617 change gain of a region in the frequency domain to filter a buffer content; #P comment 48 33 144 196622 filter_example; #P comment 120 103 114 196617 generate white noise or; #P comment 744 77 26 196617 real; #P comment 597 312 35 196617 sr/2; #P comment 129 369 174 196617 this patcher scales a wavedraw selection into the vasp format; #P comment 70 325 152 196617 select a region ( frequency band); #P comment 70 343 25 196617 and; #P connect 10 0 8 0; #P connect 8 0 12 0; #P connect 12 0 11 0; #P connect 27 0 26 0; #P connect 26 0 29 0; #P connect 29 0 46 0; #P connect 46 0 47 0; #P fasten 42 0 43 0 69 430 59 430; #P fasten 45 0 43 0 102 363 59 363; #P connect 43 0 44 0; #P connect 50 0 49 0; #P connect 49 0 52 0; #P hidden fasten 24 2 41 0 580 313 69 313; #P connect 41 0 42 0; #P fasten 58 0 43 1 372 428 100 428; #P hidden fasten 24 3 41 1 640 313 123 313; #P hidden fasten 54 0 55 0 562 420 429 420 429 313 232 313; #P hidden connect 64 1 63 0; #P hidden connect 14 0 15 0; #P hidden fasten 9 1 15 0 762 537 774 537 774 70; #P hidden connect 22 0 13 0; #P hidden connect 15 0 13 0; #P hidden fasten 14 0 25 0 460 193 460 193; #P hidden fasten 22 0 24 0 460 86 460 86; #P hidden connect 25 0 24 0; #P connect 17 0 18 0; #P connect 18 0 16 0; #P connect 16 0 19 0; #P fasten 20 0 19 0 351 561 460 561; #P fasten 21 0 19 0 419 561 460 561; #P connect 16 0 19 1; #P hidden fasten 24 2 32 0 580 315 533 315; #P hidden connect 32 0 34 0; #P hidden connect 34 0 36 0; #P hidden fasten 36 0 53 0 533 377 562 377; #P hidden connect 53 0 54 0; #P hidden fasten 37 0 54 0 614 399 562 399; #P connect 62 0 61 0; #P hidden connect 53 1 54 1; #P hidden fasten 24 3 33 0 640 315 614 315; #P hidden connect 33 0 35 0; #P hidden connect 35 0 37 0; #P hidden fasten 60 0 9 0 667 512 667 512; #P hidden fasten 24 5 13 4 760 341 760 341 760 68 760 68; #P hidden connect 13 5 24 4; #P pop; #P newobj 62 420 85 196617 p filter_example!; #P comment 666 312 42 196617 44.1kHz; #P comment 380 312 35 196617 0 Hz; #P newex 62 192 61 196617 vasp.update; #P comment 644 193 49 196617 imaginary; #P message 62 143 90 196617 vasp bufre! bufim!; #P newex 62 171 49 196617 vasp.cfft; #P hidden message 381 190 53 196617 set bufim!; #P user waveform~ 381 208 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 593 420 100 196617 buffer~ bufim! 4000; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 381 25 49 196617 p wfkeys; #P message 340 421 27 196617 stop; #P message 272 421 65 196617 startwindow; #P newex 381 447 29 196617 dac~; #P newex 381 395 30 196617 line~; #P message 381 372 72 196617 0 \, 4000 4000; #P newex 381 420 63 196617 play~ bufre!; #P hidden message 381 68 52 196617 set bufre!; #P hidden newex 381 47 45 196617 loadbang; #P user waveform~ 381 87 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 593 400 100 196617 buffer~ bufre! 4000; #P comment 49 58 218 196617 inverse complex fourier transformation; #P comment 49 35 89 196622 vasp.c!fft; #P comment 49 73 123 196617 c!fft needs two buffers; #P comment 670 73 26 196617 real; #P comment 127 195 207 196617 now time is frequency and frequency is time; #P comment 524 312 35 196617 sr/2; #P comment 62 243 249 196617 to get back to the source file in time domain either use 3 more times vasp.cfft or just vasp.c!fft !!; #P comment 155 144 146 196617 transform to frequency domain; #P connect 23 0 22 0; #P connect 22 0 25 0; #P connect 30 0 29 0; #P connect 29 0 31 0; #P hidden connect 38 1 37 0; #P hidden connect 10 0 11 0; #P hidden fasten 8 1 11 0 688 417 701 417 701 67; #P hidden connect 18 0 9 0; #P hidden connect 11 0 9 0; #P hidden fasten 10 0 21 0 386 190 386 190; #P hidden fasten 18 0 20 0 386 83 386 83; #P hidden connect 21 0 20 0; #P connect 13 0 14 0; #P connect 14 0 12 0; #P connect 12 0 15 0; #P fasten 17 0 15 0 345 440 386 440; #P fasten 16 0 15 0 277 440 386 440; #P connect 12 0 15 1; #P connect 36 0 35 0; #P hidden connect 34 0 8 0; #P hidden fasten 20 5 9 4 686 338 686 338 686 65 686 65; #P hidden connect 9 5 20 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 153 83 876 572;
+#P origin 0 10;
+#P user umenu 80 104 72 196647 1 64 120 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 344 681;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 54 196617 s 1063path1;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 4 0 1 0;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 142 125 43 196617 p loader;
+#P message 501 400 90 196617 vasp bufre! bufim!;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 501 420 78 196617 p clear_buffers;
+#P hidden newex 593 370 54 196617 r 1063path1;
+#P comment 53 106 26 196617 read;
+#P comment 154 312 214 196617 inverse cfft to transform back to time domain;
+#P newex 62 360 61 196617 vasp.update;
+#P message 62 311 90 196617 vasp bufre! bufim!;
+#P newex 62 339 52 196617 vasp.c!fft;
+#N vpatcher 155 102 963 712;
+#P origin 0 7;
+#P user umenu 262 101 72 196647 1 64 117 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 344 681;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1063path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P connect 4 0 1 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 324 123 43 196617 p loader;
+#P message 558 519 102 196617 vasp bufre1! bufim1!;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 558 539 78 196617 p clear_buffers;
+#P hidden newex 662 492 48 196617 r 1063path;
+#P comment 235 103 26 196617 read;
+#P flonum 367 323 33 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 157 201 148 196617 transform to frequency domain;
+#P comment 288 325 79 196617 Hz \, a gainfactor;
+#P flonum 227 323 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P hidden newex 557 401 27 196617 - 0.;
+#P hidden newex 557 380 27 196617 t b f;
+#P newex 54 539 61 196617 vasp.update;
+#P comment 159 498 177 196617 invers cfft to get back to time domain;
+#P message 54 497 102 196617 vasp bufre1! bufim1!;
+#P newex 54 517 52 196617 vasp.c!fft;
+#P comment 105 264 167 196617 clear upper (mirrored frequencies);
+#P newex 54 282 61 196617 vasp.update;
+#P newex 54 262 45 196617 vasp.= 0;
+#P button 97 342 15 0;
+#P newex 54 467 61 196617 vasp.update;
+#P newex 54 446 51 196617 vasp.* 1.;
+#P message 64 399 164 196617 set vasp \$1 bufre1! \$2 bufim1! \$2;
+#N vpatcher 139 82 551 321;
+#P origin 0 107;
+#N comlet length and offset as a list;
+#P outlet 99 199 15 0;
+#P comment 161 182 194 196617 2nd element of the list offset of the vasp;
+#N comlet loop startpoint;
+#P inlet 69 24 15 0;
+#N comlet loop endpoint;
+#P inlet 99 24 15 0;
+#P newex 99 94 27 196617 - 0.;
+#P newex 99 73 27 196617 t b f;
+#P comment 181 117 72 196617 msec to samps;
+#P comment 136 93 118 196617 <<< end - start = length;
+#P newex 255 135 87 196617 * 44.099998;
+#P newex 99 114 71 196617 * 44.099998;
+#P newex 99 162 50 196617 pack 0 0;
+#P comment 162 165 194 196617 1st element of the list lenght of the vasp;
+#P fasten 9 0 6 0 74 61 104 61;
+#P connect 6 0 7 0;
+#P fasten 8 0 7 0 104 52 89 52 89 92 104 92;
+#P connect 7 0 2 0;
+#P connect 2 0 1 0;
+#P connect 1 0 11 0;
+#P connect 6 1 7 1;
+#P fasten 3 0 1 1 260 157 144 157;
+#P fasten 9 0 3 0 74 61 260 61;
+#P pop;
+#P newobj 64 371 64 196617 p looptovasp;
+#P comment 455 360 71 196617 selection from;
+#P comment 671 360 17 196617 Hz;
+#P comment 589 360 17 196617 to;
+#P flonum 609 358 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P flonum 528 358 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P hidden newex 609 337 27 196617 / 4.;
+#P hidden newex 528 337 27 196617 / 4.;
+#P hidden newex 609 320 67 196617 * 44.099998;
+#P hidden newex 528 319 66 196617 * 44.099998;
+#P comment 740 313 42 196617 44.1kHz;
+#P comment 454 314 35 196617 0 Hz;
+#P newex 54 241 55 196617 vasp.upper;
+#P comment 717 197 49 196617 imaginary;
+#P message 54 200 102 196617 vasp bufre1! bufim1!;
+#P newex 54 221 49 196617 vasp.cfft;
+#P hidden message 455 193 59 196617 set bufim1!;
+#P user waveform~ 455 211 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 662 539 105 196617 buffer~ bufim1! 4000;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 455 28 49 196617 p wfkeys;
+#P message 414 541 27 196617 stop;
+#P message 346 541 65 196617 startwindow;
+#P newex 455 567 29 196617 dac~;
+#P newex 455 515 30 196617 line~;
+#P message 455 492 72 196617 0 \, 4000 4000;
+#P newex 455 539 69 196617 play~ bufre1!;
+#P hidden message 455 71 58 196617 set bufre1!;
+#P hidden newex 455 50 45 196617 loadbang;
+#P user waveform~ 455 90 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 54 144 55 196617 vasp.* 0.5;
+#P newex 54 166 61 196617 vasp.update;
+#P message 54 102 65 196617 vasp bufre1!;
+#P newex 662 519 105 196617 buffer~ bufre1! 4000;
+#P newex 54 122 55 196617 vasp.noise;
+#P comment 48 55 339 196617 change gain of a region in the frequency domain to filter a buffer content;
+#P comment 48 33 144 196622 filter_example;
+#P comment 120 103 114 196617 generate white noise or;
+#P comment 744 77 26 196617 real;
+#P comment 597 312 35 196617 sr/2;
+#P comment 129 369 174 196617 this patcher scales a wavedraw selection into the vasp format;
+#P comment 70 325 152 196617 select a region ( frequency band);
+#P comment 70 343 25 196617 and;
+#P connect 10 0 8 0;
+#P connect 8 0 12 0;
+#P connect 12 0 11 0;
+#P connect 27 0 26 0;
+#P connect 26 0 29 0;
+#P connect 29 0 46 0;
+#P connect 46 0 47 0;
+#P fasten 42 0 43 0 69 430 59 430;
+#P fasten 45 0 43 0 102 363 59 363;
+#P connect 43 0 44 0;
+#P connect 50 0 49 0;
+#P connect 49 0 52 0;
+#P hidden fasten 24 2 41 0 580 313 69 313;
+#P connect 41 0 42 0;
+#P fasten 58 0 43 1 372 428 100 428;
+#P hidden fasten 24 3 41 1 640 313 123 313;
+#P hidden fasten 54 0 55 0 562 420 429 420 429 313 232 313;
+#P hidden connect 64 1 63 0;
+#P hidden connect 14 0 15 0;
+#P hidden fasten 9 1 15 0 762 537 774 537 774 70;
+#P hidden connect 22 0 13 0;
+#P hidden connect 15 0 13 0;
+#P hidden fasten 14 0 25 0 460 193 460 193;
+#P hidden fasten 22 0 24 0 460 86 460 86;
+#P hidden connect 25 0 24 0;
+#P connect 17 0 18 0;
+#P connect 18 0 16 0;
+#P connect 16 0 19 0;
+#P fasten 20 0 19 0 351 561 460 561;
+#P fasten 21 0 19 0 419 561 460 561;
+#P connect 16 0 19 1;
+#P hidden fasten 24 2 32 0 580 315 533 315;
+#P hidden connect 32 0 34 0;
+#P hidden connect 34 0 36 0;
+#P hidden fasten 36 0 53 0 533 377 562 377;
+#P hidden connect 53 0 54 0;
+#P hidden fasten 37 0 54 0 614 399 562 399;
+#P connect 62 0 61 0;
+#P hidden connect 53 1 54 1;
+#P hidden fasten 24 3 33 0 640 315 614 315;
+#P hidden connect 33 0 35 0;
+#P hidden connect 35 0 37 0;
+#P hidden fasten 60 0 9 0 667 512 667 512;
+#P hidden fasten 24 5 13 4 760 341 760 341 760 68 760 68;
+#P hidden connect 13 5 24 4;
+#P pop;
+#P newobj 62 420 85 196617 p filter_example!;
+#P comment 666 312 42 196617 44.1kHz;
+#P comment 380 312 35 196617 0 Hz;
+#P newex 62 192 61 196617 vasp.update;
+#P comment 644 193 49 196617 imaginary;
+#P message 62 143 90 196617 vasp bufre! bufim!;
+#P newex 62 171 49 196617 vasp.cfft;
+#P hidden message 381 190 53 196617 set bufim!;
+#P user waveform~ 381 208 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 593 420 100 196617 buffer~ bufim! 4000;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 381 25 49 196617 p wfkeys;
+#P message 340 421 27 196617 stop;
+#P message 272 421 65 196617 startwindow;
+#P newex 381 447 29 196617 dac~;
+#P newex 381 395 30 196617 line~;
+#P message 381 372 72 196617 0 \, 4000 4000;
+#P newex 381 420 63 196617 play~ bufre!;
+#P hidden message 381 68 52 196617 set bufre!;
+#P hidden newex 381 47 45 196617 loadbang;
+#P user waveform~ 381 87 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 593 400 100 196617 buffer~ bufre! 4000;
+#P comment 49 58 218 196617 inverse complex fourier transformation;
+#P comment 49 35 89 196622 vasp.c!fft;
+#P comment 49 73 123 196617 c!fft needs two buffers;
+#P comment 670 73 26 196617 real;
+#P comment 127 195 207 196617 now time is frequency and frequency is time;
+#P comment 524 312 35 196617 sr/2;
+#P comment 62 243 249 196617 to get back to the source file in time domain either use 3 more times vasp.cfft or just vasp.c!fft !!;
+#P comment 155 144 146 196617 transform to frequency domain;
+#P connect 23 0 22 0;
+#P connect 22 0 25 0;
+#P connect 30 0 29 0;
+#P connect 29 0 31 0;
+#P hidden connect 38 1 37 0;
+#P hidden connect 10 0 11 0;
+#P hidden fasten 8 1 11 0 688 417 701 417 701 67;
+#P hidden connect 18 0 9 0;
+#P hidden connect 11 0 9 0;
+#P hidden fasten 10 0 21 0 386 190 386 190;
+#P hidden fasten 18 0 20 0 386 83 386 83;
+#P hidden connect 21 0 20 0;
+#P connect 13 0 14 0;
+#P connect 14 0 12 0;
+#P connect 12 0 15 0;
+#P fasten 17 0 15 0 345 440 386 440;
+#P fasten 16 0 15 0 277 440 386 440;
+#P connect 12 0 15 1;
+#P connect 36 0 35 0;
+#P hidden connect 34 0 8 0;
+#P hidden fasten 20 5 9 4 686 338 686 338 686 65 686 65;
+#P hidden connect 9 5 20 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cmul.help b/externals/grill/vasp/max-help/vasp.cmul.help
index f8a4e62c..25d92f2e 100755
--- a/externals/grill/vasp/max-help/vasp.cmul.help
+++ b/externals/grill/vasp/max-help/vasp.cmul.help
@@ -1 +1,12 @@
-max v2; #N vpatcher 258 153 655 401; #P comment 45 142 118 196617 c \, d ... right operand; #P comment 45 127 118 196617 a \, b ... left operand; #P comment 45 112 102 196617 e \, f ... target buffers; #P newex 239 97 44 196617 vasp.c*; #P comment 45 187 300 196617 differences in lengths are adjusted to smaller vector of each pair; #P comment 45 80 98 196617 e+if=(a+ib)*(c+id); #P comment 45 41 89 196622 vasp.c*; #P comment 45 171 302 196617 vasp.c* needs 2 vectors per operand which are treated as pairs; #P comment 45 64 109 196617 complex multiplication; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 258 153 655 401;
+#P comment 45 142 118 196617 c \, d ... right operand;
+#P comment 45 127 118 196617 a \, b ... left operand;
+#P comment 45 112 102 196617 e \, f ... target buffers;
+#P newex 239 97 44 196617 vasp.c*;
+#P comment 45 187 300 196617 differences in lengths are adjusted to smaller vector of each pair;
+#P comment 45 80 98 196617 e+if=(a+ib)*(c+id);
+#P comment 45 41 89 196622 vasp.c*;
+#P comment 45 171 302 196617 vasp.c* needs 2 vectors per operand which are treated as pairs;
+#P comment 45 64 109 196617 complex multiplication;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cnoise.help b/externals/grill/vasp/max-help/vasp.cnoise.help
index 125b9c12..8cdf423a 100755
--- a/externals/grill/vasp/max-help/vasp.cnoise.help
+++ b/externals/grill/vasp/max-help/vasp.cnoise.help
@@ -1 +1,116 @@
-max v2; #N vpatcher 130 121 812 507; #P message 391 318 131 196617 vasp bufcnoise1 bufcnoise2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 391 338 73 196617 p clear_buffer; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 332 25 49 196617 p wfkeys; #P comment 527 196 117 196617 imaginary part of cnoise; #P message 45 125 131 196617 vasp bufcnoise1 bufcnoise2; #P hidden message 332 190 73 196617 set bufcnoise2; #P user waveform~ 332 211 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 524 338 120 196617 buffer~ bufcnoise2 2000; #P hidden message 332 64 73 196617 set bufcnoise1; #P hidden newex 332 44 45 196617 loadbang; #P user waveform~ 332 84 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 45 180 55 196617 vasp.* 0.5; #P newex 45 205 61 196617 vasp.update; #P newex 524 318 120 196617 buffer~ bufcnoise1 2000; #P newex 45 156 60 196617 vasp.cnoise; #P comment 45 63 168 196617 vasp complex noise generator; #P comment 45 41 89 196622 vasp.cnoise; #P comment 107 158 197 196617 generate a complex noise into two buffers; #P comment 538 68 106 196617 real part of the cnoise; #P comment 45 81 85 196617 needs 2 buffers; #P connect 15 0 5 0; #P connect 5 0 8 0; #P connect 8 0 7 0; #P hidden connect 10 0 11 0; #P hidden connect 17 0 9 0; #P hidden connect 11 0 9 0; #P hidden fasten 10 0 14 0 337 54 337 54; #P hidden fasten 14 0 13 0 337 206 337 206; #P hidden connect 17 0 13 0; #P connect 19 0 18 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 130 121 812 507;
+#P message 391 318 131 196617 vasp bufcnoise1 bufcnoise2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 391 338 73 196617 p clear_buffer;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 332 25 49 196617 p wfkeys;
+#P comment 527 196 117 196617 imaginary part of cnoise;
+#P message 45 125 131 196617 vasp bufcnoise1 bufcnoise2;
+#P hidden message 332 190 73 196617 set bufcnoise2;
+#P user waveform~ 332 211 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 524 338 120 196617 buffer~ bufcnoise2 2000;
+#P hidden message 332 64 73 196617 set bufcnoise1;
+#P hidden newex 332 44 45 196617 loadbang;
+#P user waveform~ 332 84 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 45 180 55 196617 vasp.* 0.5;
+#P newex 45 205 61 196617 vasp.update;
+#P newex 524 318 120 196617 buffer~ bufcnoise1 2000;
+#P newex 45 156 60 196617 vasp.cnoise;
+#P comment 45 63 168 196617 vasp complex noise generator;
+#P comment 45 41 89 196622 vasp.cnoise;
+#P comment 107 158 197 196617 generate a complex noise into two buffers;
+#P comment 538 68 106 196617 real part of the cnoise;
+#P comment 45 81 85 196617 needs 2 buffers;
+#P connect 15 0 5 0;
+#P connect 5 0 8 0;
+#P connect 8 0 7 0;
+#P hidden connect 10 0 11 0;
+#P hidden connect 17 0 9 0;
+#P hidden connect 11 0 9 0;
+#P hidden fasten 10 0 14 0 337 54 337 54;
+#P hidden fasten 14 0 13 0 337 206 337 206;
+#P hidden connect 17 0 13 0;
+#P connect 19 0 18 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cnorm.help b/externals/grill/vasp/max-help/vasp.cnorm.help
index acfd51e6..23d44f30 100755
--- a/externals/grill/vasp/max-help/vasp.cnorm.help
+++ b/externals/grill/vasp/max-help/vasp.cnorm.help
@@ -1 +1,177 @@
-max v2; #N vpatcher 176 110 856 641; #P origin 0 8; #P message 434 416 131 196617 vasp bufcnorm1 bufcnorm2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 434 483 78 196617 p clear_buffers; #P hidden newex 519 440 54 196617 r #01path; #P user umenu 89 115 72 196647 1 64 131 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 54 196617 s #01path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 151 140 43 196617 p loader; #P newex 62 368 63 196617 vasp.* 0.05; #P comment 195 240 101 196617 set all samples to 1; #P newex 62 288 61 196617 vasp.update; #P message 62 239 131 196617 vasp bufcnorm1 bufcnorm2; #P newex 62 263 60 196617 vasp.cnorm; #P comment 194 324 72 196617 inverse cfft; #P newex 62 392 61 196617 vasp.update; #P message 62 323 131 196617 vasp bufcnorm1 bufcnorm2; #P newex 62 344 52 196617 vasp.c!fft; #P comment 612 327 42 196617 44.1kHz; #P comment 326 328 35 196617 0 Hz; #P newex 62 207 61 196617 vasp.update; #P comment 590 210 49 196617 imaginary; #P message 62 158 131 196617 vasp bufcnorm1 bufcnorm2; #P newex 62 179 49 196617 vasp.cfft; #P hidden message 327 207 73 196617 set bufcnorm2; #P user waveform~ 327 225 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 519 483 120 196617 buffer~ bufcnorm2 4000; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 327 42 49 196617 p wfkeys; #P message 286 465 27 196617 stop; #P message 218 465 65 196617 startwindow; #P newex 327 484 29 196617 dac~; #P newex 327 439 30 196617 line~; #P message 327 416 72 196617 0 \, 4000 4000; #P newex 327 465 84 196617 play~ bufcnorm1; #P hidden message 327 85 73 196617 set bufcnorm1; #P hidden newex 327 64 45 196617 loadbang; #P user waveform~ 327 104 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 519 464 120 196617 buffer~ bufcnorm1 4000; #P comment 58 69 218 196617 sets complex radius of samples to unity; #P comment 58 47 89 196622 vasp.cnorm; #P comment 58 84 105 196617 needs two buffers; #P comment 616 90 26 196617 real; #P comment 194 159 26 196617 cfft; #P comment 469 326 35 196617 sr/2; #P comment 127 370 172 196617 reduce gain (safe your loudspeakers); #P comment 64 117 25 196617 read; #P connect 23 0 22 0; #P connect 22 0 25 0; #P connect 33 0 32 0; #P connect 32 0 34 0; #P connect 29 0 28 0; #P connect 28 0 36 0; #P connect 36 0 30 0; #P hidden connect 38 1 37 0; #P hidden connect 10 0 11 0; #P hidden fasten 8 1 11 0 634 481 655 481 655 84; #P hidden connect 18 0 9 0; #P hidden connect 11 0 9 0; #P hidden fasten 10 0 21 0 332 207 332 207; #P hidden fasten 18 0 20 0 332 100 332 100; #P hidden connect 21 0 20 0; #P connect 13 0 14 0; #P connect 14 0 12 0; #P connect 12 0 15 0; #P fasten 16 0 15 0 223 484 332 484; #P fasten 17 0 15 0 291 484 332 484; #P connect 12 0 15 1; #P connect 41 0 40 0; #P hidden connect 39 0 8 0; #P hidden fasten 20 5 9 4 632 327 650 327 650 101 632 101; #P hidden connect 9 5 20 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 176 110 856 641;
+#P origin 0 8;
+#P message 434 416 131 196617 vasp bufcnorm1 bufcnorm2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 434 483 78 196617 p clear_buffers;
+#P hidden newex 519 440 54 196617 r #01path;
+#P user umenu 89 115 72 196647 1 64 131 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 54 196617 s #01path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 151 140 43 196617 p loader;
+#P newex 62 368 63 196617 vasp.* 0.05;
+#P comment 195 240 101 196617 set all samples to 1;
+#P newex 62 288 61 196617 vasp.update;
+#P message 62 239 131 196617 vasp bufcnorm1 bufcnorm2;
+#P newex 62 263 60 196617 vasp.cnorm;
+#P comment 194 324 72 196617 inverse cfft;
+#P newex 62 392 61 196617 vasp.update;
+#P message 62 323 131 196617 vasp bufcnorm1 bufcnorm2;
+#P newex 62 344 52 196617 vasp.c!fft;
+#P comment 612 327 42 196617 44.1kHz;
+#P comment 326 328 35 196617 0 Hz;
+#P newex 62 207 61 196617 vasp.update;
+#P comment 590 210 49 196617 imaginary;
+#P message 62 158 131 196617 vasp bufcnorm1 bufcnorm2;
+#P newex 62 179 49 196617 vasp.cfft;
+#P hidden message 327 207 73 196617 set bufcnorm2;
+#P user waveform~ 327 225 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 519 483 120 196617 buffer~ bufcnorm2 4000;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 327 42 49 196617 p wfkeys;
+#P message 286 465 27 196617 stop;
+#P message 218 465 65 196617 startwindow;
+#P newex 327 484 29 196617 dac~;
+#P newex 327 439 30 196617 line~;
+#P message 327 416 72 196617 0 \, 4000 4000;
+#P newex 327 465 84 196617 play~ bufcnorm1;
+#P hidden message 327 85 73 196617 set bufcnorm1;
+#P hidden newex 327 64 45 196617 loadbang;
+#P user waveform~ 327 104 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 519 464 120 196617 buffer~ bufcnorm1 4000;
+#P comment 58 69 218 196617 sets complex radius of samples to unity;
+#P comment 58 47 89 196622 vasp.cnorm;
+#P comment 58 84 105 196617 needs two buffers;
+#P comment 616 90 26 196617 real;
+#P comment 194 159 26 196617 cfft;
+#P comment 469 326 35 196617 sr/2;
+#P comment 127 370 172 196617 reduce gain (safe your loudspeakers);
+#P comment 64 117 25 196617 read;
+#P connect 23 0 22 0;
+#P connect 22 0 25 0;
+#P connect 33 0 32 0;
+#P connect 32 0 34 0;
+#P connect 29 0 28 0;
+#P connect 28 0 36 0;
+#P connect 36 0 30 0;
+#P hidden connect 38 1 37 0;
+#P hidden connect 10 0 11 0;
+#P hidden fasten 8 1 11 0 634 481 655 481 655 84;
+#P hidden connect 18 0 9 0;
+#P hidden connect 11 0 9 0;
+#P hidden fasten 10 0 21 0 332 207 332 207;
+#P hidden fasten 18 0 20 0 332 100 332 100;
+#P hidden connect 21 0 20 0;
+#P connect 13 0 14 0;
+#P connect 14 0 12 0;
+#P connect 12 0 15 0;
+#P fasten 16 0 15 0 223 484 332 484;
+#P fasten 17 0 15 0 291 484 332 484;
+#P connect 12 0 15 1;
+#P connect 41 0 40 0;
+#P hidden connect 39 0 8 0;
+#P hidden fasten 20 5 9 4 632 327 650 327 650 101 632 101;
+#P hidden connect 9 5 20 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cosc.help b/externals/grill/vasp/max-help/vasp.cosc.help
index 98f27401..6432d8f1 100755
--- a/externals/grill/vasp/max-help/vasp.cosc.help
+++ b/externals/grill/vasp/max-help/vasp.cosc.help
@@ -1 +1,139 @@
-max v2; #N vpatcher 162 250 877 640; #P message 451 318 115 196617 vasp bufcosc1 bufcosc2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 451 338 78 196617 p clear_buffers; #N vpatcher 169 125 534 375; #P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 125 27 196617 t b f; #P message 309 151 27 196617 stop; #P message 243 151 65 196617 startwindow; #P newex 243 173 29 196617 dac~; #P comment 141 175 83 196617 period length in samples (float); #P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 147 27 196617 / 1.; #P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 54 49 53 196617 dspstate~; #P comment 133 98 100 196617 frequency in Hz; #P connect 1 1 2 0; #P fasten 4 0 9 0 93 118 75 118; #P connect 9 0 3 0; #P fasten 2 0 3 0 73 115 54 115 54 145 75 145; #P connect 3 0 10 0; #P connect 9 1 3 1; #P connect 7 0 6 0; #P fasten 8 0 6 0 314 169 248 169; #P pop; #P newobj 46 338 109 196617 p Hz_to_period_length; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 375 30 49 196617 p wfkeys; #P comment 579 197 108 196617 imaginary part of cosc; #P message 46 156 115 196617 vasp bufcosc1 bufcosc2; #P hidden message 375 191 65 196617 set bufcosc2; #P user waveform~ 375 212 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 575 338 112 196617 buffer~ bufcosc2 2000; #P hidden message 375 69 65 196617 set bufcosc1; #P hidden newex 375 50 45 196617 loadbang; #P user waveform~ 375 87 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 46 214 55 196617 vasp.* 0.5; #P newex 46 239 61 196617 vasp.update; #P newex 575 318 112 196617 buffer~ bufcosc1 2000; #P comment 45 79 312 196617 optional argument/right inlet: frequency in period length in samples; #P newex 46 189 85 196617 vasp.cosc 44100; #P comment 45 64 168 196617 vasp complex sine wave generator; #P comment 45 41 89 196622 vasp.cosc; #P comment 172 156 136 196617 generate a complex sinewave at 1Hz into two buffers; #P comment 588 72 100 196617 real part of the cosc; #P comment 45 94 78 196617 needs 2 buffers; #P connect 16 0 5 0; #P connect 5 0 9 0; #P connect 9 0 8 0; #P hidden connect 11 0 12 0; #P hidden connect 18 0 10 0; #P hidden connect 12 0 10 0; #P hidden fasten 11 0 15 0 380 50 380 50; #P hidden connect 18 0 14 0; #P hidden connect 15 0 14 0; #P connect 21 0 20 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 162 250 877 640;
+#P message 451 318 115 196617 vasp bufcosc1 bufcosc2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 451 338 78 196617 p clear_buffers;
+#N vpatcher 169 125 534 375;
+#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 125 27 196617 t b f;
+#P message 309 151 27 196617 stop;
+#P message 243 151 65 196617 startwindow;
+#P newex 243 173 29 196617 dac~;
+#P comment 141 175 83 196617 period length in samples (float);
+#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 147 27 196617 / 1.;
+#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 54 49 53 196617 dspstate~;
+#P comment 133 98 100 196617 frequency in Hz;
+#P connect 1 1 2 0;
+#P fasten 4 0 9 0 93 118 75 118;
+#P connect 9 0 3 0;
+#P fasten 2 0 3 0 73 115 54 115 54 145 75 145;
+#P connect 3 0 10 0;
+#P connect 9 1 3 1;
+#P connect 7 0 6 0;
+#P fasten 8 0 6 0 314 169 248 169;
+#P pop;
+#P newobj 46 338 109 196617 p Hz_to_period_length;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 375 30 49 196617 p wfkeys;
+#P comment 579 197 108 196617 imaginary part of cosc;
+#P message 46 156 115 196617 vasp bufcosc1 bufcosc2;
+#P hidden message 375 191 65 196617 set bufcosc2;
+#P user waveform~ 375 212 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 575 338 112 196617 buffer~ bufcosc2 2000;
+#P hidden message 375 69 65 196617 set bufcosc1;
+#P hidden newex 375 50 45 196617 loadbang;
+#P user waveform~ 375 87 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 46 214 55 196617 vasp.* 0.5;
+#P newex 46 239 61 196617 vasp.update;
+#P newex 575 318 112 196617 buffer~ bufcosc1 2000;
+#P comment 45 79 312 196617 optional argument/right inlet: frequency in period length in samples;
+#P newex 46 189 85 196617 vasp.cosc 44100;
+#P comment 45 64 168 196617 vasp complex sine wave generator;
+#P comment 45 41 89 196622 vasp.cosc;
+#P comment 172 156 136 196617 generate a complex sinewave at 1Hz into two buffers;
+#P comment 588 72 100 196617 real part of the cosc;
+#P comment 45 94 78 196617 needs 2 buffers;
+#P connect 16 0 5 0;
+#P connect 5 0 9 0;
+#P connect 9 0 8 0;
+#P hidden connect 11 0 12 0;
+#P hidden connect 18 0 10 0;
+#P hidden connect 12 0 10 0;
+#P hidden fasten 11 0 15 0 380 50 380 50;
+#P hidden connect 18 0 14 0;
+#P hidden connect 15 0 14 0;
+#P connect 21 0 20 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cplus.help b/externals/grill/vasp/max-help/vasp.cplus.help
index a1038416..7f4e999d 100755
--- a/externals/grill/vasp/max-help/vasp.cplus.help
+++ b/externals/grill/vasp/max-help/vasp.cplus.help
@@ -1 +1,12 @@
-max v2; #N vpatcher 258 153 663 403; #P comment 49 142 118 196617 c \, d ... right operand; #P comment 49 127 118 196617 a \, b ... left operand; #P comment 49 112 102 196617 e \, f ... target buffers; #P newex 238 88 43 196617 vasp.c+; #P comment 49 190 300 196617 differences in lengths are adjusted to smaller vector of each pair; #P comment 49 81 98 196617 e+if=(a+ib)+(c+id); #P comment 49 42 89 196622 vasp.c+; #P comment 49 174 302 196617 vasp.c+ needs 2 vectors per operand which are treated as pairs; #P comment 49 65 100 196617 complex addition; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 258 153 663 403;
+#P comment 49 142 118 196617 c \, d ... right operand;
+#P comment 49 127 118 196617 a \, b ... left operand;
+#P comment 49 112 102 196617 e \, f ... target buffers;
+#P newex 238 88 43 196617 vasp.c+;
+#P comment 49 190 300 196617 differences in lengths are adjusted to smaller vector of each pair;
+#P comment 49 81 98 196617 e+if=(a+ib)+(c+id);
+#P comment 49 42 89 196622 vasp.c+;
+#P comment 49 174 302 196617 vasp.c+ needs 2 vectors per operand which are treated as pairs;
+#P comment 49 65 100 196617 complex addition;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cpowi.help b/externals/grill/vasp/max-help/vasp.cpowi.help
index 68e75fe8..d008f65c 100755
--- a/externals/grill/vasp/max-help/vasp.cpowi.help
+++ b/externals/grill/vasp/max-help/vasp.cpowi.help
@@ -1 +1,166 @@
-max v2; #N vpatcher 218 95 852 551; #P hidden newex 507 347 48 196617 r 1141path; #P user umenu 63 136 72 196647 1 64 152 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1141path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 125 158 43 196617 p loader; #P message 353 344 125 196617 vasp bufcpowi1 bufcpowi2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 353 392 73 196617 p clear_buffer; #P comment 38 61 151 196617 complex integer power function; #P comment 38 113 132 196617 argument: exponent (int); #P newex 44 392 61 196617 vasp.update; #P message 44 253 125 196617 vasp bufcpowi1 bufcpowi2; #P message 228 392 27 196617 stop; #P message 160 392 65 196617 startwindow; #P newex 269 419 29 196617 dac~; #P newex 269 367 30 196617 line~; #P message 269 344 72 196617 0 \, 8000 8000; #P newex 269 392 82 196617 play~ bufcpowi1; #P hidden message 269 198 71 196617 set bufcpowi2; #P user waveform~ 269 216 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 466 392 118 196617 buffer~ bufcpowi2 8000; #P newex 44 370 45 196617 vasp.opt; #P message 44 325 125 196617 vasp bufcpowi1 bufcpowi2; #P newex 44 346 52 196617 vasp.c!fft; #P comment 38 77 93 196617 complex sample^n; #P newex 44 273 65 196617 vasp.cpowi 2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 269 31 49 196617 p wfkeys; #P hidden message 269 76 71 196617 set bufcpowi1; #P hidden newex 269 50 45 196617 loadbang; #P user waveform~ 269 97 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 44 223 61 196617 vasp.update; #P newex 44 295 61 196617 vasp.update; #P message 44 177 125 196617 vasp bufcpowi1 bufcpowi2; #P newex 466 371 118 196617 buffer~ bufcpowi1 8000; #P newex 44 199 49 196617 vasp.cfft; #P comment 38 34 89 196622 vasp.cpowi; #P comment 38 95 100 196617 needs two vectors; #P comment 38 137 33 196617 read; #P connect 5 0 3 0; #P connect 3 0 7 0; #P connect 26 0 12 0; #P connect 12 0 6 0; #P connect 15 0 14 0; #P connect 14 0 16 0; #P connect 16 0 27 0; #P hidden connect 33 1 32 0; #P hidden connect 9 0 10 0; #P hidden fasten 4 1 10 0 579 390 597 390 597 72 274 72; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 19 0; #P hidden connect 19 0 18 0; #P connect 21 0 22 0; #P connect 22 0 20 0; #P fasten 25 0 23 0 233 412 274 412; #P fasten 24 0 23 0 165 412 274 412; #P connect 20 0 23 0; #P connect 20 0 23 1; #P connect 31 0 30 0; #P hidden connect 34 0 4 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 218 95 852 551;
+#P hidden newex 507 347 48 196617 r 1141path;
+#P user umenu 63 136 72 196647 1 64 152 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1141path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 125 158 43 196617 p loader;
+#P message 353 344 125 196617 vasp bufcpowi1 bufcpowi2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 353 392 73 196617 p clear_buffer;
+#P comment 38 61 151 196617 complex integer power function;
+#P comment 38 113 132 196617 argument: exponent (int);
+#P newex 44 392 61 196617 vasp.update;
+#P message 44 253 125 196617 vasp bufcpowi1 bufcpowi2;
+#P message 228 392 27 196617 stop;
+#P message 160 392 65 196617 startwindow;
+#P newex 269 419 29 196617 dac~;
+#P newex 269 367 30 196617 line~;
+#P message 269 344 72 196617 0 \, 8000 8000;
+#P newex 269 392 82 196617 play~ bufcpowi1;
+#P hidden message 269 198 71 196617 set bufcpowi2;
+#P user waveform~ 269 216 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 466 392 118 196617 buffer~ bufcpowi2 8000;
+#P newex 44 370 45 196617 vasp.opt;
+#P message 44 325 125 196617 vasp bufcpowi1 bufcpowi2;
+#P newex 44 346 52 196617 vasp.c!fft;
+#P comment 38 77 93 196617 complex sample^n;
+#P newex 44 273 65 196617 vasp.cpowi 2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 269 31 49 196617 p wfkeys;
+#P hidden message 269 76 71 196617 set bufcpowi1;
+#P hidden newex 269 50 45 196617 loadbang;
+#P user waveform~ 269 97 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 44 223 61 196617 vasp.update;
+#P newex 44 295 61 196617 vasp.update;
+#P message 44 177 125 196617 vasp bufcpowi1 bufcpowi2;
+#P newex 466 371 118 196617 buffer~ bufcpowi1 8000;
+#P newex 44 199 49 196617 vasp.cfft;
+#P comment 38 34 89 196622 vasp.cpowi;
+#P comment 38 95 100 196617 needs two vectors;
+#P comment 38 137 33 196617 read;
+#P connect 5 0 3 0;
+#P connect 3 0 7 0;
+#P connect 26 0 12 0;
+#P connect 12 0 6 0;
+#P connect 15 0 14 0;
+#P connect 14 0 16 0;
+#P connect 16 0 27 0;
+#P hidden connect 33 1 32 0;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 4 1 10 0 579 390 597 390 597 72 274 72;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 19 0;
+#P hidden connect 19 0 18 0;
+#P connect 21 0 22 0;
+#P connect 22 0 20 0;
+#P fasten 25 0 23 0 233 412 274 412;
+#P fasten 24 0 23 0 165 412 274 412;
+#P connect 20 0 23 0;
+#P connect 20 0 23 1;
+#P connect 31 0 30 0;
+#P hidden connect 34 0 4 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.crsub.help b/externals/grill/vasp/max-help/vasp.crsub.help
index 9538c596..a0fbf9ba 100755
--- a/externals/grill/vasp/max-help/vasp.crsub.help
+++ b/externals/grill/vasp/max-help/vasp.crsub.help
@@ -1 +1,12 @@
-max v2; #N vpatcher 258 153 663 391; #P newex 238 90 45 196617 vasp.c!-; #P comment 49 188 300 196617 differences in lengths are adjusted to smaller vector of each pair; #P comment 49 142 118 196617 c \, d ... right operand; #P comment 49 127 118 196617 a \, b ... left operand; #P comment 49 83 98 196617 e+if=(c+id)-(a+ib); #P comment 49 112 102 196617 e \, f ... target buffers; #P comment 49 44 89 196622 vasp.c!-; #P comment 49 172 302 196617 vasp.c- needs 2 vectors per operand which are treated as pairs; #P comment 49 67 147 196617 complex inverse substraction; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 258 153 663 391;
+#P newex 238 90 45 196617 vasp.c!-;
+#P comment 49 188 300 196617 differences in lengths are adjusted to smaller vector of each pair;
+#P comment 49 142 118 196617 c \, d ... right operand;
+#P comment 49 127 118 196617 a \, b ... left operand;
+#P comment 49 83 98 196617 e+if=(c+id)-(a+ib);
+#P comment 49 112 102 196617 e \, f ... target buffers;
+#P comment 49 44 89 196622 vasp.c!-;
+#P comment 49 172 302 196617 vasp.c- needs 2 vectors per operand which are treated as pairs;
+#P comment 49 67 147 196617 complex inverse substraction;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.cset.help b/externals/grill/vasp/max-help/vasp.cset.help
index 0fdba89c..d898e914 100755
--- a/externals/grill/vasp/max-help/vasp.cset.help
+++ b/externals/grill/vasp/max-help/vasp.cset.help
@@ -1 +1,11 @@
-max v2; #N vpatcher 228 183 631 425; #P newex 234 82 43 196617 vasp.c/; #P comment 48 169 300 196617 differences in lengths are adjusted to smaller vector of each pair; #P comment 48 124 118 196617 c \, d is the target; #P comment 48 109 118 196617 a \, b is the source; #P comment 48 84 98 196617 (a+ib)=(c+id); #P comment 48 45 89 196622 vasp.c=; #P comment 48 153 302 196617 vasp.c= needs 2 vectors per operand which are treated as pairs; #P comment 48 68 59 196617 complex =; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 228 183 631 425;
+#P newex 234 82 43 196617 vasp.c/;
+#P comment 48 169 300 196617 differences in lengths are adjusted to smaller vector of each pair;
+#P comment 48 124 118 196617 c \, d is the target;
+#P comment 48 109 118 196617 a \, b is the source;
+#P comment 48 84 98 196617 (a+ib)=(c+id);
+#P comment 48 45 89 196622 vasp.c=;
+#P comment 48 153 302 196617 vasp.c= needs 2 vectors per operand which are treated as pairs;
+#P comment 48 68 59 196617 complex =;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.csqr.help b/externals/grill/vasp/max-help/vasp.csqr.help
index 003548b6..6724d738 100755
--- a/externals/grill/vasp/max-help/vasp.csqr.help
+++ b/externals/grill/vasp/max-help/vasp.csqr.help
@@ -1 +1,164 @@
-max v2; #N vpatcher 188 93 824 584; #P user umenu 80 109 72 196647 1 64 125 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1143path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 142 131 43 196617 p loader; #P message 365 388 115 196617 vasp bufcsqr1 bufcsqr2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 365 409 78 196617 p clear_buffers; #P hidden newex 481 367 48 196617 r 1143path; #P comment 53 110 26 196617 read; #P newex 64 362 61 196617 vasp.update; #P message 64 223 115 196617 vasp bufcsqr1 bufcsqr2; #P message 243 410 27 196617 stop; #P message 175 410 65 196617 startwindow; #P newex 284 436 29 196617 dac~; #P newex 284 384 30 196617 line~; #P message 284 361 72 196617 0 \, 8000 8000; #P newex 284 409 75 196617 play~ bufcsqr1; #P hidden message 284 215 65 196617 set bufcsqr2; #P user waveform~ 284 233 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 481 409 112 196617 buffer~ bufcsqr2 8000; #P newex 64 340 45 196617 vasp.opt; #P message 64 295 115 196617 vasp bufcsqr1 bufcsqr2; #P newex 64 316 52 196617 vasp.c!fft; #P comment 53 60 93 196617 complex sample^2; #P newex 64 243 52 196617 vasp.csqr; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 284 48 49 196617 p wfkeys; #P hidden message 284 93 65 196617 set bufcsqr1; #P hidden newex 284 67 45 196617 loadbang; #P user waveform~ 284 114 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 64 193 61 196617 vasp.update; #P newex 64 265 61 196617 vasp.update; #P message 64 147 115 196617 vasp bufcsqr1 bufcsqr2; #P newex 481 388 112 196617 buffer~ bufcsqr1 8000; #P newex 64 169 49 196617 vasp.cfft; #P comment 53 36 89 196622 vasp.csqr; #P comment 53 75 100 196617 needs two vectors; #P connect 4 0 2 0; #P connect 2 0 6 0; #P connect 25 0 11 0; #P connect 11 0 5 0; #P connect 14 0 13 0; #P connect 13 0 15 0; #P connect 15 0 26 0; #P hidden connect 32 1 31 0; #P hidden connect 8 0 9 0; #P hidden fasten 3 1 9 0 588 407 612 407 612 89 289 89; #P hidden connect 9 0 7 0; #P hidden connect 10 0 7 0; #P hidden connect 8 0 18 0; #P hidden connect 18 0 17 0; #P connect 20 0 21 0; #P connect 21 0 19 0; #P fasten 23 0 22 0 180 429 289 429; #P fasten 24 0 22 0 248 429 289 429; #P connect 19 0 22 0; #P connect 19 0 22 1; #P connect 30 0 29 0; #P hidden connect 28 0 3 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 188 93 824 584;
+#P user umenu 80 109 72 196647 1 64 125 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1143path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 142 131 43 196617 p loader;
+#P message 365 388 115 196617 vasp bufcsqr1 bufcsqr2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 365 409 78 196617 p clear_buffers;
+#P hidden newex 481 367 48 196617 r 1143path;
+#P comment 53 110 26 196617 read;
+#P newex 64 362 61 196617 vasp.update;
+#P message 64 223 115 196617 vasp bufcsqr1 bufcsqr2;
+#P message 243 410 27 196617 stop;
+#P message 175 410 65 196617 startwindow;
+#P newex 284 436 29 196617 dac~;
+#P newex 284 384 30 196617 line~;
+#P message 284 361 72 196617 0 \, 8000 8000;
+#P newex 284 409 75 196617 play~ bufcsqr1;
+#P hidden message 284 215 65 196617 set bufcsqr2;
+#P user waveform~ 284 233 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 481 409 112 196617 buffer~ bufcsqr2 8000;
+#P newex 64 340 45 196617 vasp.opt;
+#P message 64 295 115 196617 vasp bufcsqr1 bufcsqr2;
+#P newex 64 316 52 196617 vasp.c!fft;
+#P comment 53 60 93 196617 complex sample^2;
+#P newex 64 243 52 196617 vasp.csqr;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 284 48 49 196617 p wfkeys;
+#P hidden message 284 93 65 196617 set bufcsqr1;
+#P hidden newex 284 67 45 196617 loadbang;
+#P user waveform~ 284 114 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 64 193 61 196617 vasp.update;
+#P newex 64 265 61 196617 vasp.update;
+#P message 64 147 115 196617 vasp bufcsqr1 bufcsqr2;
+#P newex 481 388 112 196617 buffer~ bufcsqr1 8000;
+#P newex 64 169 49 196617 vasp.cfft;
+#P comment 53 36 89 196622 vasp.csqr;
+#P comment 53 75 100 196617 needs two vectors;
+#P connect 4 0 2 0;
+#P connect 2 0 6 0;
+#P connect 25 0 11 0;
+#P connect 11 0 5 0;
+#P connect 14 0 13 0;
+#P connect 13 0 15 0;
+#P connect 15 0 26 0;
+#P hidden connect 32 1 31 0;
+#P hidden connect 8 0 9 0;
+#P hidden fasten 3 1 9 0 588 407 612 407 612 89 289 89;
+#P hidden connect 9 0 7 0;
+#P hidden connect 10 0 7 0;
+#P hidden connect 8 0 18 0;
+#P hidden connect 18 0 17 0;
+#P connect 20 0 21 0;
+#P connect 21 0 19 0;
+#P fasten 23 0 22 0 180 429 289 429;
+#P fasten 24 0 22 0 248 429 289 429;
+#P connect 19 0 22 0;
+#P connect 19 0 22 1;
+#P connect 30 0 29 0;
+#P hidden connect 28 0 3 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.csub.help b/externals/grill/vasp/max-help/vasp.csub.help
index 8cd83fd9..2ee0998f 100755
--- a/externals/grill/vasp/max-help/vasp.csub.help
+++ b/externals/grill/vasp/max-help/vasp.csub.help
@@ -1 +1,12 @@
-max v2; #N vpatcher 258 153 659 407; #P comment 52 147 118 196617 c \, d ... right operand; #P comment 52 132 118 196617 a \, b ... left operand; #P comment 52 117 102 196617 e \, f ... target buffers; #P newex 241 94 42 196617 vasp.c-; #P comment 52 192 300 196617 differences in lengths are adjusted to smaller vector of each pair; #P comment 52 87 98 196617 e+if=(a+ib)-(c+id); #P comment 52 48 89 196622 vasp.c-; #P comment 52 176 302 196617 vasp.c- needs 2 vectors per operand which are treated as pairs; #P comment 52 71 100 196617 complex subtraction; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 258 153 659 407;
+#P comment 52 147 118 196617 c \, d ... right operand;
+#P comment 52 132 118 196617 a \, b ... left operand;
+#P comment 52 117 102 196617 e \, f ... target buffers;
+#P newex 241 94 42 196617 vasp.c-;
+#P comment 52 192 300 196617 differences in lengths are adjusted to smaller vector of each pair;
+#P comment 52 87 98 196617 e+if=(a+ib)-(c+id);
+#P comment 52 48 89 196622 vasp.c-;
+#P comment 52 176 302 196617 vasp.c- needs 2 vectors per operand which are treated as pairs;
+#P comment 52 71 100 196617 complex subtraction;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.dif.help b/externals/grill/vasp/max-help/vasp.dif.help
index b5a4a457..c6b68ea1 100755
--- a/externals/grill/vasp/max-help/vasp.dif.help
+++ b/externals/grill/vasp/max-help/vasp.dif.help
@@ -1 +1,7 @@
-max v2; #N vpatcher 256 153 557 315; #P comment 44 79 225 196617 argument/right inlet: repetition count(default 1); #P comment 44 38 89 196622 vasp.dif; #P newex 116 103 44 196617 vasp.dif; #P comment 44 62 124 196617 vasp differential function; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 256 153 557 315;
+#P comment 44 79 225 196617 argument/right inlet: repetition count(default 1);
+#P comment 44 38 89 196622 vasp.dif;
+#P newex 116 103 44 196617 vasp.dif;
+#P comment 44 62 124 196617 vasp differential function;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.div.help b/externals/grill/vasp/max-help/vasp.div.help
index c3738700..60ec8c13 100755
--- a/externals/grill/vasp/max-help/vasp.div.help
+++ b/externals/grill/vasp/max-help/vasp.div.help
@@ -1 +1,52 @@
-max v2; #N vpatcher 147 233 787 552; #P message 426 243 52 196617 vasp buf/; #N vpatcher 40 55 241 186; #P newex 19 84 61 196617 vasp.update; #P newex 19 60 50 196617 vasp.= 0.; #N comlet vasp to clear in; #P inlet 19 31 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 426 263 73 196617 p clear_buffer; #P comment 110 135 147 196617 generate a sine wave at 1Hz; #P newex 52 263 61 196617 vasp.update; #P message 52 134 52 196617 vasp buf/; #P newex 52 169 80 196617 vasp.osc 44100; #P comment 45 74 189 196617 optional argument/right inlet: divisor; #P flonum 87 202 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 45 59 168 196617 vasp division; #P comment 45 36 89 196622 vasp./; #P newex 501 263 92 196617 buffer~ buf/ 2000; #P hidden message 284 106 45 196617 set buf/; #P hidden newex 284 80 45 196617 loadbang; #P user waveform~ 284 130 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 52 223 45 196617 vasp./ 2; #P connect 10 0 9 0; #P connect 9 0 0 0; #P connect 0 0 11 0; #P connect 7 0 0 1; #P hidden connect 2 0 3 0; #P hidden connect 3 0 1 0; #P connect 14 0 13 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 147 233 787 552;
+#P message 426 243 52 196617 vasp buf/;
+#N vpatcher 40 55 241 186;
+#P newex 19 84 61 196617 vasp.update;
+#P newex 19 60 50 196617 vasp.= 0.;
+#N comlet vasp to clear in;
+#P inlet 19 31 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 426 263 73 196617 p clear_buffer;
+#P comment 110 135 147 196617 generate a sine wave at 1Hz;
+#P newex 52 263 61 196617 vasp.update;
+#P message 52 134 52 196617 vasp buf/;
+#P newex 52 169 80 196617 vasp.osc 44100;
+#P comment 45 74 189 196617 optional argument/right inlet: divisor;
+#P flonum 87 202 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 45 59 168 196617 vasp division;
+#P comment 45 36 89 196622 vasp./;
+#P newex 501 263 92 196617 buffer~ buf/ 2000;
+#P hidden message 284 106 45 196617 set buf/;
+#P hidden newex 284 80 45 196617 loadbang;
+#P user waveform~ 284 130 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 52 223 45 196617 vasp./ 2;
+#P connect 10 0 9 0;
+#P connect 9 0 0 0;
+#P connect 0 0 11 0;
+#P connect 7 0 0 1;
+#P hidden connect 2 0 3 0;
+#P hidden connect 3 0 1 0;
+#P connect 14 0 13 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.equ.help b/externals/grill/vasp/max-help/vasp.equ.help
index e552fc6e..0c2a0178 100755
--- a/externals/grill/vasp/max-help/vasp.equ.help
+++ b/externals/grill/vasp/max-help/vasp.equ.help
@@ -1 +1,145 @@
-max v2; #N vpatcher 82 103 798 578; #P message 482 408 99 196617 vasp buf==1 buf==2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 482 428 73 196617 p clear_buffer; #P newex 71 393 61 196617 vasp.== -1.; #P comment 332 310 43 196617 false/0; #P message 71 123 64 196617 vasp buf==1; #P newex 155 247 55 196617 vasp.= -1.; #P newex 92 247 55 196617 vasp.= 0.3; #P newex 218 214 55 196617 vasp.upper; #P newex 155 214 58 196617 vasp.lower; #P newex 218 247 59 196617 vasp.!bevel; #P newex 92 214 55 196617 vasp.upper; #P newex 31 214 58 196617 vasp.lower; #P newex 121 302 61 196617 vasp.update; #P newex 31 247 55 196617 vasp.bevel; #P newex 182 187 55 196617 vasp.upper; #P newex 71 187 58 196617 vasp.lower; #P newex 71 154 121 196617 vasp.m 2; #P newex 71 368 73 196617 vasp.= buf==1; #P message 71 338 64 196617 vasp buf==2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 375 80 49 196617 p wfkeys; #P hidden message 375 241 55 196617 set buf==2; #P user waveform~ 375 262 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 583 428 104 196617 buffer~ buf==2 2000; #P hidden message 375 119 55 196617 set buf==1; #P hidden newex 375 100 45 196617 loadbang; #P user waveform~ 375 137 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 71 428 61 196617 vasp.update; #P newex 583 408 104 196617 buffer~ buf==1 2000; #P comment 45 80 147 196617 argument/right inlet: value; #P comment 45 65 45 196617 equal; #P comment 45 41 71 196622 vasp.==; #P comment 176 125 92 196617 generate a function; #P comment 334 267 40 196617 true/1; #P comment 148 396 216 196617 test if a part of the function is equal to -1.; #P fasten 18 0 22 0 76 209 36 209; #P connect 22 0 20 0; #P connect 29 0 17 0; #P connect 17 0 18 0; #P connect 15 0 16 0; #P connect 16 0 31 0; #P connect 31 0 7 0; #P fasten 18 0 23 0 76 209 97 209; #P connect 23 0 27 0; #P fasten 24 0 21 0 223 283 126 283; #P fasten 20 0 21 0 36 283 126 283; #P fasten 27 0 21 0 97 283 126 283; #P fasten 28 0 21 0 160 283 126 283; #P fasten 19 0 25 0 187 209 160 209; #P connect 25 0 28 0; #P connect 17 1 19 0; #P fasten 19 0 26 0 187 209 223 209; #P connect 26 0 24 0; #P hidden connect 9 0 10 0; #P hidden connect 14 0 8 0; #P hidden connect 10 0 8 0; #P hidden fasten 9 0 13 0 380 100 380 100; #P hidden connect 13 0 12 0; #P hidden connect 14 0 12 0; #P connect 33 0 32 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 82 103 798 578;
+#P message 482 408 99 196617 vasp buf==1 buf==2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 482 428 73 196617 p clear_buffer;
+#P newex 71 393 61 196617 vasp.== -1.;
+#P comment 332 310 43 196617 false/0;
+#P message 71 123 64 196617 vasp buf==1;
+#P newex 155 247 55 196617 vasp.= -1.;
+#P newex 92 247 55 196617 vasp.= 0.3;
+#P newex 218 214 55 196617 vasp.upper;
+#P newex 155 214 58 196617 vasp.lower;
+#P newex 218 247 59 196617 vasp.!bevel;
+#P newex 92 214 55 196617 vasp.upper;
+#P newex 31 214 58 196617 vasp.lower;
+#P newex 121 302 61 196617 vasp.update;
+#P newex 31 247 55 196617 vasp.bevel;
+#P newex 182 187 55 196617 vasp.upper;
+#P newex 71 187 58 196617 vasp.lower;
+#P newex 71 154 121 196617 vasp.m 2;
+#P newex 71 368 73 196617 vasp.= buf==1;
+#P message 71 338 64 196617 vasp buf==2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 375 80 49 196617 p wfkeys;
+#P hidden message 375 241 55 196617 set buf==2;
+#P user waveform~ 375 262 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 583 428 104 196617 buffer~ buf==2 2000;
+#P hidden message 375 119 55 196617 set buf==1;
+#P hidden newex 375 100 45 196617 loadbang;
+#P user waveform~ 375 137 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 71 428 61 196617 vasp.update;
+#P newex 583 408 104 196617 buffer~ buf==1 2000;
+#P comment 45 80 147 196617 argument/right inlet: value;
+#P comment 45 65 45 196617 equal;
+#P comment 45 41 71 196622 vasp.==;
+#P comment 176 125 92 196617 generate a function;
+#P comment 334 267 40 196617 true/1;
+#P comment 148 396 216 196617 test if a part of the function is equal to -1.;
+#P fasten 18 0 22 0 76 209 36 209;
+#P connect 22 0 20 0;
+#P connect 29 0 17 0;
+#P connect 17 0 18 0;
+#P connect 15 0 16 0;
+#P connect 16 0 31 0;
+#P connect 31 0 7 0;
+#P fasten 18 0 23 0 76 209 97 209;
+#P connect 23 0 27 0;
+#P fasten 24 0 21 0 223 283 126 283;
+#P fasten 20 0 21 0 36 283 126 283;
+#P fasten 27 0 21 0 97 283 126 283;
+#P fasten 28 0 21 0 160 283 126 283;
+#P fasten 19 0 25 0 187 209 160 209;
+#P connect 25 0 28 0;
+#P connect 17 1 19 0;
+#P fasten 19 0 26 0 187 209 223 209;
+#P connect 26 0 24 0;
+#P hidden connect 9 0 10 0;
+#P hidden connect 14 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden fasten 9 0 13 0 380 100 380 100;
+#P hidden connect 13 0 12 0;
+#P hidden connect 14 0 12 0;
+#P connect 33 0 32 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.exp.help b/externals/grill/vasp/max-help/vasp.exp.help
index 258ed183..fa00c09d 100755
--- a/externals/grill/vasp/max-help/vasp.exp.help
+++ b/externals/grill/vasp/max-help/vasp.exp.help
@@ -1 +1,96 @@
-max v2; #N vpatcher 248 135 854 471; #P message 400 259 62 196617 vasp bufexp; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 400 282 73 196617 p clear_buffer; #P newex 41 282 61 196617 vasp.update; #P newex 41 164 55 196617 vasp.* 0.5; #P newex 41 185 61 196617 vasp.update; #P comment 38 58 85 196617 e^sample; #P message 41 210 62 196617 vasp bufexp; #P newex 41 233 48 196617 vasp.exp; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 268 54 49 196617 p wfkeys; #P hidden message 268 100 55 196617 set bufexp; #P hidden newex 268 76 45 196617 loadbang; #P user waveform~ 268 126 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 41 259 45 196617 vasp.opt; #P message 41 116 62 196617 vasp bufexp; #P newex 477 282 102 196617 buffer~ bufexp 2000; #P newex 41 143 80 196617 vasp.osc 22050; #P comment 38 34 89 196622 vasp.exp; #P comment 106 117 123 196617 generate a 1hz sine wave; #P comment 38 73 100 196617 exponential function; #P connect 5 0 3 0; #P connect 3 0 15 0; #P connect 15 0 14 0; #P connect 12 0 11 0; #P connect 11 0 6 0; #P connect 6 0 16 0; #P hidden connect 8 0 9 0; #P hidden connect 9 0 7 0; #P hidden connect 10 0 7 0; #P connect 18 0 17 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 248 135 854 471;
+#P message 400 259 62 196617 vasp bufexp;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 400 282 73 196617 p clear_buffer;
+#P newex 41 282 61 196617 vasp.update;
+#P newex 41 164 55 196617 vasp.* 0.5;
+#P newex 41 185 61 196617 vasp.update;
+#P comment 38 58 85 196617 e^sample;
+#P message 41 210 62 196617 vasp bufexp;
+#P newex 41 233 48 196617 vasp.exp;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 268 54 49 196617 p wfkeys;
+#P hidden message 268 100 55 196617 set bufexp;
+#P hidden newex 268 76 45 196617 loadbang;
+#P user waveform~ 268 126 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 41 259 45 196617 vasp.opt;
+#P message 41 116 62 196617 vasp bufexp;
+#P newex 477 282 102 196617 buffer~ bufexp 2000;
+#P newex 41 143 80 196617 vasp.osc 22050;
+#P comment 38 34 89 196622 vasp.exp;
+#P comment 106 117 123 196617 generate a 1hz sine wave;
+#P comment 38 73 100 196617 exponential function;
+#P connect 5 0 3 0;
+#P connect 3 0 15 0;
+#P connect 15 0 14 0;
+#P connect 12 0 11 0;
+#P connect 11 0 6 0;
+#P connect 6 0 16 0;
+#P hidden connect 8 0 9 0;
+#P hidden connect 9 0 7 0;
+#P hidden connect 10 0 7 0;
+#P connect 18 0 17 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.fhp.help b/externals/grill/vasp/max-help/vasp.fhp.help
index 8557e261..2f76a6cc 100755
--- a/externals/grill/vasp/max-help/vasp.fhp.help
+++ b/externals/grill/vasp/max-help/vasp.fhp.help
@@ -1 +1,138 @@
-max v2; #N vpatcher 228 129 899 595; #P message 466 372 55 196617 vasp bufhp; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 466 392 73 196617 p clear_buffer; #P comment 196 241 44 196617 q-faktor; #N vpatcher 169 125 534 375; #P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 125 27 196617 t b f; #P message 309 151 27 196617 stop; #P message 243 151 65 196617 startwindow; #P newex 243 173 29 196617 dac~; #P comment 141 175 83 196617 period length in samples (float); #P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 147 27 196617 / 1.; #P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 54 49 53 196617 dspstate~; #P comment 133 98 100 196617 frequency in Hz; #P connect 1 1 2 0; #P fasten 4 0 9 0 93 118 75 118; #P fasten 2 0 3 0 73 115 54 115 54 145 75 145; #P connect 9 0 3 0; #P connect 3 0 10 0; #P connect 9 1 3 1; #P fasten 8 0 6 0 314 169 248 169; #P connect 7 0 6 0; #P pop; #P newobj 45 391 109 196617 p Hz_to_period_length; #P number 195 255 35 9 1 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 137 255 45 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 137 276 68 196617 pack 0 0; #P comment 38 88 266 196617 second argument: q-factor from 1 - ° (integer) default 1; #P newex 45 322 61 196617 vasp.update; #P message 45 255 55 196617 vasp bufhp; #P newex 45 301 65 196617 vasp.fhp 220; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 328 100 49 196617 p wfkeys; #P message 287 392 27 196617 stop; #P message 219 392 65 196617 startwindow; #P newex 328 418 29 196617 dac~; #P newex 328 366 30 196617 line~; #P message 328 343 72 196617 0 \, 2000 2000; #P newex 328 391 60 196617 play~ bufhp; #P hidden message 328 142 49 196617 set bufhp; #P hidden newex 328 122 45 196617 loadbang; #P user waveform~ 328 162 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 45 194 55 196617 vasp.* 0.5; #P newex 45 216 61 196617 vasp.update; #P message 45 151 55 196617 vasp bufhp; #P newex 544 391 95 196617 buffer~ bufhp 2000; #P newex 45 172 55 196617 vasp.noise; #P comment 38 58 136 196617 vasp high pass filter (FIR); #P comment 38 34 89 196622 vasp.fhp; #P comment 109 152 99 196617 generate white noise; #P comment 38 73 224 196617 first argument: cutoff frequency in period length; #P comment 137 241 36 196617 cutoff; #P comment 38 103 185 196617 right inlet: cutoff and q-factor (list); #P connect 8 0 6 0; #P connect 6 0 10 0; #P connect 10 0 9 0; #P connect 22 0 21 0; #P connect 21 0 23 0; #P fasten 25 0 21 1 142 297 105 297; #P connect 26 0 25 0; #P connect 27 0 25 1; #P hidden connect 12 0 13 0; #P hidden connect 20 0 11 0; #P hidden connect 13 0 11 0; #P connect 15 0 16 0; #P connect 16 0 14 0; #P connect 14 0 17 0; #P fasten 19 0 17 0 292 410 333 410; #P fasten 18 0 17 0 224 410 333 410; #P connect 14 0 17 1; #P connect 31 0 30 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 228 129 899 595;
+#P message 466 372 55 196617 vasp bufhp;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 466 392 73 196617 p clear_buffer;
+#P comment 196 241 44 196617 q-faktor;
+#N vpatcher 169 125 534 375;
+#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 125 27 196617 t b f;
+#P message 309 151 27 196617 stop;
+#P message 243 151 65 196617 startwindow;
+#P newex 243 173 29 196617 dac~;
+#P comment 141 175 83 196617 period length in samples (float);
+#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 147 27 196617 / 1.;
+#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 54 49 53 196617 dspstate~;
+#P comment 133 98 100 196617 frequency in Hz;
+#P connect 1 1 2 0;
+#P fasten 4 0 9 0 93 118 75 118;
+#P fasten 2 0 3 0 73 115 54 115 54 145 75 145;
+#P connect 9 0 3 0;
+#P connect 3 0 10 0;
+#P connect 9 1 3 1;
+#P fasten 8 0 6 0 314 169 248 169;
+#P connect 7 0 6 0;
+#P pop;
+#P newobj 45 391 109 196617 p Hz_to_period_length;
+#P number 195 255 35 9 1 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P flonum 137 255 45 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 137 276 68 196617 pack 0 0;
+#P comment 38 88 266 196617 second argument: q-factor from 1 - ° (integer) default 1;
+#P newex 45 322 61 196617 vasp.update;
+#P message 45 255 55 196617 vasp bufhp;
+#P newex 45 301 65 196617 vasp.fhp 220;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 328 100 49 196617 p wfkeys;
+#P message 287 392 27 196617 stop;
+#P message 219 392 65 196617 startwindow;
+#P newex 328 418 29 196617 dac~;
+#P newex 328 366 30 196617 line~;
+#P message 328 343 72 196617 0 \, 2000 2000;
+#P newex 328 391 60 196617 play~ bufhp;
+#P hidden message 328 142 49 196617 set bufhp;
+#P hidden newex 328 122 45 196617 loadbang;
+#P user waveform~ 328 162 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 45 194 55 196617 vasp.* 0.5;
+#P newex 45 216 61 196617 vasp.update;
+#P message 45 151 55 196617 vasp bufhp;
+#P newex 544 391 95 196617 buffer~ bufhp 2000;
+#P newex 45 172 55 196617 vasp.noise;
+#P comment 38 58 136 196617 vasp high pass filter (FIR);
+#P comment 38 34 89 196622 vasp.fhp;
+#P comment 109 152 99 196617 generate white noise;
+#P comment 38 73 224 196617 first argument: cutoff frequency in period length;
+#P comment 137 241 36 196617 cutoff;
+#P comment 38 103 185 196617 right inlet: cutoff and q-factor (list);
+#P connect 8 0 6 0;
+#P connect 6 0 10 0;
+#P connect 10 0 9 0;
+#P connect 22 0 21 0;
+#P connect 21 0 23 0;
+#P fasten 25 0 21 1 142 297 105 297;
+#P connect 26 0 25 0;
+#P connect 27 0 25 1;
+#P hidden connect 12 0 13 0;
+#P hidden connect 20 0 11 0;
+#P hidden connect 13 0 11 0;
+#P connect 15 0 16 0;
+#P connect 16 0 14 0;
+#P connect 14 0 17 0;
+#P fasten 19 0 17 0 292 410 333 410;
+#P fasten 18 0 17 0 224 410 333 410;
+#P connect 14 0 17 1;
+#P connect 31 0 30 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.flp.help b/externals/grill/vasp/max-help/vasp.flp.help
index c0b2c252..89a88590 100755
--- a/externals/grill/vasp/max-help/vasp.flp.help
+++ b/externals/grill/vasp/max-help/vasp.flp.help
@@ -1 +1,138 @@
-max v2; #N vpatcher 176 195 828 655; #P message 458 375 54 196617 vasp buflp; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 458 394 73 196617 p clear_buffer; #P comment 214 247 44 196617 q-faktor; #N vpatcher 169 125 534 375; #P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 125 27 196617 t b f; #P message 309 151 27 196617 stop; #P message 243 151 65 196617 startwindow; #P newex 243 173 29 196617 dac~; #P comment 141 175 83 196617 period length in samples (float); #P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 147 27 196617 / 1.; #P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 54 49 53 196617 dspstate~; #P comment 133 98 100 196617 frequency in Hz; #P connect 1 1 2 0; #P fasten 4 0 9 0 93 118 75 118; #P fasten 2 0 3 0 73 115 54 115 54 145 75 145; #P connect 9 0 3 0; #P connect 3 0 10 0; #P connect 9 1 3 1; #P fasten 8 0 6 0 314 169 248 169; #P connect 7 0 6 0; #P pop; #P newobj 51 394 109 196617 p Hz_to_period_length; #P number 213 261 35 9 1 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 155 261 52 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 155 280 68 196617 pack 0. 0; #P comment 46 90 266 196617 second argument: q-factor from 1 - ° (integer) default 1; #P newex 54 329 61 196617 vasp.update; #P message 54 261 54 196617 vasp buflp; #P newex 54 307 65 196617 vasp.flp 220; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 318 95 49 196617 p wfkeys; #P message 277 396 27 196617 stop; #P message 209 396 65 196617 startwindow; #P newex 318 421 29 196617 dac~; #P newex 318 369 30 196617 line~; #P message 318 346 72 196617 0 \, 2000 2000; #P newex 318 394 58 196617 play~ buflp; #P hidden message 318 137 45 196617 set buflp; #P hidden newex 318 117 45 196617 loadbang; #P user waveform~ 318 157 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 54 197 55 196617 vasp.* 0.5; #P newex 54 219 61 196617 vasp.update; #P message 54 154 54 196617 vasp buflp; #P newex 536 394 94 196617 buffer~ buflp 2000; #P newex 54 175 55 196617 vasp.noise; #P comment 46 60 136 196617 vasp low pass filter (FIR); #P comment 46 36 89 196622 vasp.flp; #P comment 114 155 99 196617 generate white noise; #P comment 46 75 225 196617 first argument: cutoff frequency in period length; #P comment 155 247 36 196617 cutoff; #P comment 46 105 185 196617 right inlet: cutoff and q-factor (list); #P connect 8 0 6 0; #P connect 6 0 10 0; #P connect 10 0 9 0; #P connect 22 0 21 0; #P connect 21 0 23 0; #P fasten 25 0 21 1 160 303 114 303; #P connect 26 0 25 0; #P connect 27 0 25 1; #P hidden connect 12 0 13 0; #P hidden connect 20 0 11 0; #P hidden connect 13 0 11 0; #P connect 15 0 16 0; #P connect 16 0 14 0; #P connect 14 0 17 0; #P fasten 19 0 17 0 282 416 323 416; #P fasten 18 0 17 0 214 416 323 416; #P connect 14 0 17 1; #P connect 31 0 30 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 176 195 828 655;
+#P message 458 375 54 196617 vasp buflp;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 458 394 73 196617 p clear_buffer;
+#P comment 214 247 44 196617 q-faktor;
+#N vpatcher 169 125 534 375;
+#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 125 27 196617 t b f;
+#P message 309 151 27 196617 stop;
+#P message 243 151 65 196617 startwindow;
+#P newex 243 173 29 196617 dac~;
+#P comment 141 175 83 196617 period length in samples (float);
+#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 147 27 196617 / 1.;
+#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 54 49 53 196617 dspstate~;
+#P comment 133 98 100 196617 frequency in Hz;
+#P connect 1 1 2 0;
+#P fasten 4 0 9 0 93 118 75 118;
+#P fasten 2 0 3 0 73 115 54 115 54 145 75 145;
+#P connect 9 0 3 0;
+#P connect 3 0 10 0;
+#P connect 9 1 3 1;
+#P fasten 8 0 6 0 314 169 248 169;
+#P connect 7 0 6 0;
+#P pop;
+#P newobj 51 394 109 196617 p Hz_to_period_length;
+#P number 213 261 35 9 1 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P flonum 155 261 52 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 155 280 68 196617 pack 0. 0;
+#P comment 46 90 266 196617 second argument: q-factor from 1 - ° (integer) default 1;
+#P newex 54 329 61 196617 vasp.update;
+#P message 54 261 54 196617 vasp buflp;
+#P newex 54 307 65 196617 vasp.flp 220;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 318 95 49 196617 p wfkeys;
+#P message 277 396 27 196617 stop;
+#P message 209 396 65 196617 startwindow;
+#P newex 318 421 29 196617 dac~;
+#P newex 318 369 30 196617 line~;
+#P message 318 346 72 196617 0 \, 2000 2000;
+#P newex 318 394 58 196617 play~ buflp;
+#P hidden message 318 137 45 196617 set buflp;
+#P hidden newex 318 117 45 196617 loadbang;
+#P user waveform~ 318 157 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 54 197 55 196617 vasp.* 0.5;
+#P newex 54 219 61 196617 vasp.update;
+#P message 54 154 54 196617 vasp buflp;
+#P newex 536 394 94 196617 buffer~ buflp 2000;
+#P newex 54 175 55 196617 vasp.noise;
+#P comment 46 60 136 196617 vasp low pass filter (FIR);
+#P comment 46 36 89 196622 vasp.flp;
+#P comment 114 155 99 196617 generate white noise;
+#P comment 46 75 225 196617 first argument: cutoff frequency in period length;
+#P comment 155 247 36 196617 cutoff;
+#P comment 46 105 185 196617 right inlet: cutoff and q-factor (list);
+#P connect 8 0 6 0;
+#P connect 6 0 10 0;
+#P connect 10 0 9 0;
+#P connect 22 0 21 0;
+#P connect 21 0 23 0;
+#P fasten 25 0 21 1 160 303 114 303;
+#P connect 26 0 25 0;
+#P connect 27 0 25 1;
+#P hidden connect 12 0 13 0;
+#P hidden connect 20 0 11 0;
+#P hidden connect 13 0 11 0;
+#P connect 15 0 16 0;
+#P connect 16 0 14 0;
+#P connect 14 0 17 0;
+#P fasten 19 0 17 0 282 416 323 416;
+#P fasten 18 0 17 0 214 416 323 416;
+#P connect 14 0 17 1;
+#P connect 31 0 30 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.frames.help b/externals/grill/vasp/max-help/vasp.frames.help
index 8c1e1529..c0820a2a 100755
--- a/externals/grill/vasp/max-help/vasp.frames.help
+++ b/externals/grill/vasp/max-help/vasp.frames.help
@@ -1 +1,134 @@
-max v2; #N vpatcher 130 118 966 571; #P message 575 384 119 196617 vasp buffram1 buffram2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 575 404 78 196617 p clear_buffers; #P hidden message 447 180 22 196617 set; #P hidden message 500 229 65 196617 set buffram2; #P newex 251 332 61 196617 vasp.update; #P newex 251 310 80 196617 vasp.osc 22050; #P user waveform~ 500 248 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 500 69 49 196617 p wfkeys; #P hidden message 500 110 65 196617 set buffram1; #P hidden newex 500 89 45 196617 loadbang; #P user waveform~ 500 127 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 64 332 61 196617 vasp.update; #P newex 64 310 80 196617 vasp.osc 22050; #P number 336 197 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 698 404 114 196617 buffer~ buffram2 2000; #P newex 698 384 114 196617 buffer~ buffram1 2000; #P message 262 275 222 196617; #P newex 262 243 60 196617 prepend set; #P message 251 170 152 196617 vasp buffram1 buffram2 11050; #P newex 251 218 95 196617 vasp.frames 22050; #P message 75 275 137 196617; #P newex 75 243 60 196617 prepend set; #P message 64 170 74 196617 vasp buffram1; #P newex 64 218 95 196617 vasp.frames 30000; #P comment 59 90 182 196617 argument/right inlet: value in samples; #P comment 59 75 178 196617 set the number of frames to a vasp; #P comment 59 50 116 196622 vasp.frames; #P comment 59 105 265 196617 !!!all vectors of a vasp have the same framesize/length!!!; #P connect 5 0 4 0; #P connect 4 0 15 0; #P connect 15 0 16 0; #P fasten 4 0 6 0 69 239 80 239; #P hidden fasten 25 0 7 0 452 263 80 263; #P connect 6 0 7 0; #P connect 9 0 8 0; #P connect 8 0 22 0; #P connect 22 0 23 0; #P fasten 8 0 10 0 256 239 267 239; #P hidden fasten 25 0 11 0 452 264 267 264; #P connect 10 0 11 0; #P connect 14 0 8 1; #P hidden fasten 18 0 25 0 505 132 452 132; #P hidden connect 18 0 19 0; #P hidden connect 19 0 17 0; #P hidden connect 20 0 17 0; #P hidden connect 18 0 24 0; #P hidden connect 24 0 21 0; #P connect 27 0 26 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 130 118 966 571;
+#P message 575 384 119 196617 vasp buffram1 buffram2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 575 404 78 196617 p clear_buffers;
+#P hidden message 447 180 22 196617 set;
+#P hidden message 500 229 65 196617 set buffram2;
+#P newex 251 332 61 196617 vasp.update;
+#P newex 251 310 80 196617 vasp.osc 22050;
+#P user waveform~ 500 248 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 500 69 49 196617 p wfkeys;
+#P hidden message 500 110 65 196617 set buffram1;
+#P hidden newex 500 89 45 196617 loadbang;
+#P user waveform~ 500 127 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 64 332 61 196617 vasp.update;
+#P newex 64 310 80 196617 vasp.osc 22050;
+#P number 336 197 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 698 404 114 196617 buffer~ buffram2 2000;
+#P newex 698 384 114 196617 buffer~ buffram1 2000;
+#P message 262 275 222 196617;
+#P newex 262 243 60 196617 prepend set;
+#P message 251 170 152 196617 vasp buffram1 buffram2 11050;
+#P newex 251 218 95 196617 vasp.frames 22050;
+#P message 75 275 137 196617;
+#P newex 75 243 60 196617 prepend set;
+#P message 64 170 74 196617 vasp buffram1;
+#P newex 64 218 95 196617 vasp.frames 30000;
+#P comment 59 90 182 196617 argument/right inlet: value in samples;
+#P comment 59 75 178 196617 set the number of frames to a vasp;
+#P comment 59 50 116 196622 vasp.frames;
+#P comment 59 105 265 196617 !!!all vectors of a vasp have the same framesize/length!!!;
+#P connect 5 0 4 0;
+#P connect 4 0 15 0;
+#P connect 15 0 16 0;
+#P fasten 4 0 6 0 69 239 80 239;
+#P hidden fasten 25 0 7 0 452 263 80 263;
+#P connect 6 0 7 0;
+#P connect 9 0 8 0;
+#P connect 8 0 22 0;
+#P connect 22 0 23 0;
+#P fasten 8 0 10 0 256 239 267 239;
+#P hidden fasten 25 0 11 0 452 264 267 264;
+#P connect 10 0 11 0;
+#P connect 14 0 8 1;
+#P hidden fasten 18 0 25 0 505 132 452 132;
+#P hidden connect 18 0 19 0;
+#P hidden connect 19 0 17 0;
+#P hidden connect 20 0 17 0;
+#P hidden connect 18 0 24 0;
+#P hidden connect 24 0 21 0;
+#P connect 27 0 26 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.framesd.help b/externals/grill/vasp/max-help/vasp.framesd.help
index e462f28f..ac6bf358 100755
--- a/externals/grill/vasp/max-help/vasp.framesd.help
+++ b/externals/grill/vasp/max-help/vasp.framesd.help
@@ -1 +1,134 @@
-max v2; #N vpatcher 82 104 939 544; #P message 593 369 113 196617 vasp buffram buffram+; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 593 389 78 196617 p clear_buffers; #P hidden message 449 191 22 196617 set; #P hidden message 514 223 65 196617 set buffram+; #P newex 253 325 61 196617 vasp.update; #P newex 253 304 80 196617 vasp.osc 22050; #P user waveform~ 514 241 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 514 60 49 196617 p wfkeys; #P hidden message 514 104 61 196617 set buffram; #P hidden newex 514 82 45 196617 loadbang; #P user waveform~ 514 122 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 66 325 61 196617 vasp.update; #P newex 66 304 80 196617 vasp.osc 22050; #P number 346 191 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 711 389 114 196617 buffer~ buffram+ 2000; #P newex 711 369 114 196617 buffer~ buffram 2000; #P message 264 269 222 196617; #P newex 264 237 60 196617 prepend set; #P message 253 164 179 196617 vasp 20000 buffram buffram+ 44100; #P newex 253 212 103 196617 vasp.frames+ 22050; #P message 77 269 137 196617; #P newex 77 237 60 196617 prepend set; #P message 66 164 101 196617 vasp 20000 buffram; #P newex 66 212 103 196617 vasp.frames+ 30000; #P comment 59 89 182 196617 argument/right inlet: value in samples; #P comment 59 75 255 196617 change the number of frames of a vasp (incrementally); #P comment 59 50 111 196622 vasp.frames+; #P comment 59 104 265 196617 !!!all vectors of a vasp have the same framesize/length!!!; #P connect 5 0 4 0; #P connect 4 0 15 0; #P connect 15 0 16 0; #P fasten 4 0 6 0 71 233 82 233; #P hidden fasten 25 0 7 0 454 260 82 260; #P connect 6 0 7 0; #P connect 9 0 8 0; #P connect 8 0 22 0; #P connect 22 0 23 0; #P fasten 8 0 10 0 258 233 269 233; #P hidden fasten 25 0 11 0 454 259 269 259; #P connect 10 0 11 0; #P connect 14 0 8 1; #P hidden fasten 18 0 25 0 519 120 454 120; #P hidden connect 18 0 19 0; #P hidden connect 20 0 17 0; #P hidden connect 19 0 17 0; #P hidden connect 18 0 24 0; #P hidden connect 24 0 21 0; #P connect 27 0 26 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 82 104 939 544;
+#P message 593 369 113 196617 vasp buffram buffram+;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 593 389 78 196617 p clear_buffers;
+#P hidden message 449 191 22 196617 set;
+#P hidden message 514 223 65 196617 set buffram+;
+#P newex 253 325 61 196617 vasp.update;
+#P newex 253 304 80 196617 vasp.osc 22050;
+#P user waveform~ 514 241 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 514 60 49 196617 p wfkeys;
+#P hidden message 514 104 61 196617 set buffram;
+#P hidden newex 514 82 45 196617 loadbang;
+#P user waveform~ 514 122 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 66 325 61 196617 vasp.update;
+#P newex 66 304 80 196617 vasp.osc 22050;
+#P number 346 191 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 711 389 114 196617 buffer~ buffram+ 2000;
+#P newex 711 369 114 196617 buffer~ buffram 2000;
+#P message 264 269 222 196617;
+#P newex 264 237 60 196617 prepend set;
+#P message 253 164 179 196617 vasp 20000 buffram buffram+ 44100;
+#P newex 253 212 103 196617 vasp.frames+ 22050;
+#P message 77 269 137 196617;
+#P newex 77 237 60 196617 prepend set;
+#P message 66 164 101 196617 vasp 20000 buffram;
+#P newex 66 212 103 196617 vasp.frames+ 30000;
+#P comment 59 89 182 196617 argument/right inlet: value in samples;
+#P comment 59 75 255 196617 change the number of frames of a vasp (incrementally);
+#P comment 59 50 111 196622 vasp.frames+;
+#P comment 59 104 265 196617 !!!all vectors of a vasp have the same framesize/length!!!;
+#P connect 5 0 4 0;
+#P connect 4 0 15 0;
+#P connect 15 0 16 0;
+#P fasten 4 0 6 0 71 233 82 233;
+#P hidden fasten 25 0 7 0 454 260 82 260;
+#P connect 6 0 7 0;
+#P connect 9 0 8 0;
+#P connect 8 0 22 0;
+#P connect 22 0 23 0;
+#P fasten 8 0 10 0 258 233 269 233;
+#P hidden fasten 25 0 11 0 454 259 269 259;
+#P connect 10 0 11 0;
+#P connect 14 0 8 1;
+#P hidden fasten 18 0 25 0 519 120 454 120;
+#P hidden connect 18 0 19 0;
+#P hidden connect 20 0 17 0;
+#P hidden connect 19 0 17 0;
+#P hidden connect 18 0 24 0;
+#P hidden connect 24 0 21 0;
+#P connect 27 0 26 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.framesq.help b/externals/grill/vasp/max-help/vasp.framesq.help
index e3ab3420..a546e86d 100755
--- a/externals/grill/vasp/max-help/vasp.framesq.help
+++ b/externals/grill/vasp/max-help/vasp.framesq.help
@@ -1 +1,25 @@
-max v2; #N vpatcher 203 190 781 540; #P comment 45 129 101 196617 get the vasps length; #P comment 334 129 206 196617 get the maximum vasp length of both buffers; #P message 334 154 125 196617 vasp buffram? buffram?1; #P number 334 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 334 180 70 196617 vasp.frames?; #P newex 418 296 120 196617 buffer~ buffram?1 1000; #P number 192 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 45 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 418 273 120 196617 buffer~ buffram? 2000; #P message 192 154 74 196617 vasp buffram?; #P newex 192 180 70 196617 vasp.frames?; #P message 45 154 115 196617 vasp 400 buffram? 300; #P newex 45 180 70 196617 vasp.frames?; #P comment 42 75 216 196617 get a vasp«s frame count (length) in samples; #P comment 42 51 130 196622 vasp.frames?; #P comment 192 129 101 196617 get the buffer length; #P connect 4 0 3 0; #P connect 3 0 8 0; #P connect 6 0 5 0; #P connect 5 0 9 0; #P connect 13 0 11 0; #P connect 11 0 12 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 203 190 781 540;
+#P comment 45 129 101 196617 get the vasps length;
+#P comment 334 129 206 196617 get the maximum vasp length of both buffers;
+#P message 334 154 125 196617 vasp buffram? buffram?1;
+#P number 334 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 334 180 70 196617 vasp.frames?;
+#P newex 418 296 120 196617 buffer~ buffram?1 1000;
+#P number 192 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P number 45 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 418 273 120 196617 buffer~ buffram? 2000;
+#P message 192 154 74 196617 vasp buffram?;
+#P newex 192 180 70 196617 vasp.frames?;
+#P message 45 154 115 196617 vasp 400 buffram? 300;
+#P newex 45 180 70 196617 vasp.frames?;
+#P comment 42 75 216 196617 get a vasp«s frame count (length) in samples;
+#P comment 42 51 130 196622 vasp.frames?;
+#P comment 192 129 101 196617 get the buffer length;
+#P connect 4 0 3 0;
+#P connect 3 0 8 0;
+#P connect 6 0 5 0;
+#P connect 5 0 9 0;
+#P connect 13 0 11 0;
+#P connect 11 0 12 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.gate.help b/externals/grill/vasp/max-help/vasp.gate.help
index e30794fa..0ab025a2 100755
--- a/externals/grill/vasp/max-help/vasp.gate.help
+++ b/externals/grill/vasp/max-help/vasp.gate.help
@@ -1 +1,166 @@
-max v2; #N vpatcher 181 114 885 642; #P message 429 422 113 196617 vasp bufgate1 bufgate2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 429 442 78 196617 p clear_buffers; #P hidden newex 549 391 48 196617 r 1159path; #P user umenu 80 139 72 196647 1 64 155 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1159path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 142 161 43 196617 p loader; #P comment 52 141 26 196617 read; #P comment 163 349 32 196617 value; #P comment 139 321 112 196617 gate the buffer content; #P newex 66 225 61 196617 vasp.update; #P newex 66 404 61 196617 vasp.update; #P flonum 125 348 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0; #P message 66 320 71 196617 vasp bufgate2; #P newex 66 375 69 196617 vasp.gate 0.2; #P message 308 443 27 196617 stop; #P message 240 443 65 196617 startwindow; #P newex 349 467 29 196617 dac~; #P newex 349 422 30 196617 line~; #P message 349 387 72 196617 0 \, 2000 2000; #P newex 349 442 75 196617 play~ bufgate2; #P message 66 181 71 196617 vasp bufgate2; #P newex 66 202 104 196617 vasp.= vasp bufgate1; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 349 92 49 196617 p wfkeys; #P hidden message 349 247 64 196617 set bufgate2; #P user waveform~ 349 265 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 549 442 111 196617 buffer~ bufgate2 2000; #P hidden message 349 127 64 196617 set bufgate1; #P hidden newex 349 109 45 196617 loadbang; #P user waveform~ 349 145 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 549 422 111 196617 buffer~ bufgate1 2000; #P comment 52 87 369 196617 optional argument/right inlet: value (usualy from 0-1) to gate the soundfile; #P comment 52 70 168 196617 gate a buffer content with a value; #P comment 52 48 89 196622 vasp.gate; #P comment 141 181 161 196617 copy from buffgate1 to buffgate2; #P connect 13 0 12 0; #P connect 12 0 24 0; #P connect 21 0 20 0; #P connect 20 0 23 0; #P connect 22 0 20 1; #P hidden connect 29 1 28 0; #P hidden fasten 6 0 7 0 354 108 354 108; #P hidden fasten 4 1 7 0 655 440 680 440 680 123 354 123; #P hidden connect 11 0 5 0; #P hidden connect 7 0 5 0; #P hidden fasten 6 0 10 0 354 108 354 108; #P hidden fasten 8 1 10 0 655 461 680 461 680 252 354 252; #P hidden connect 10 0 9 0; #P hidden connect 11 0 9 0; #P connect 15 0 16 0; #P connect 16 0 14 0; #P connect 14 0 17 0; #P fasten 18 0 17 0 245 461 354 461; #P fasten 19 0 17 0 313 461 354 461; #P connect 14 0 17 1; #P connect 32 0 31 0; #P hidden connect 30 0 4 0; #P hidden fasten 9 5 5 4 654 368 665 368 665 139 654 139; #P hidden connect 5 5 9 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 181 114 885 642;
+#P message 429 422 113 196617 vasp bufgate1 bufgate2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 429 442 78 196617 p clear_buffers;
+#P hidden newex 549 391 48 196617 r 1159path;
+#P user umenu 80 139 72 196647 1 64 155 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1159path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 142 161 43 196617 p loader;
+#P comment 52 141 26 196617 read;
+#P comment 163 349 32 196617 value;
+#P comment 139 321 112 196617 gate the buffer content;
+#P newex 66 225 61 196617 vasp.update;
+#P newex 66 404 61 196617 vasp.update;
+#P flonum 125 348 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P message 66 320 71 196617 vasp bufgate2;
+#P newex 66 375 69 196617 vasp.gate 0.2;
+#P message 308 443 27 196617 stop;
+#P message 240 443 65 196617 startwindow;
+#P newex 349 467 29 196617 dac~;
+#P newex 349 422 30 196617 line~;
+#P message 349 387 72 196617 0 \, 2000 2000;
+#P newex 349 442 75 196617 play~ bufgate2;
+#P message 66 181 71 196617 vasp bufgate2;
+#P newex 66 202 104 196617 vasp.= vasp bufgate1;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 349 92 49 196617 p wfkeys;
+#P hidden message 349 247 64 196617 set bufgate2;
+#P user waveform~ 349 265 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 549 442 111 196617 buffer~ bufgate2 2000;
+#P hidden message 349 127 64 196617 set bufgate1;
+#P hidden newex 349 109 45 196617 loadbang;
+#P user waveform~ 349 145 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 549 422 111 196617 buffer~ bufgate1 2000;
+#P comment 52 87 369 196617 optional argument/right inlet: value (usualy from 0-1) to gate the soundfile;
+#P comment 52 70 168 196617 gate a buffer content with a value;
+#P comment 52 48 89 196622 vasp.gate;
+#P comment 141 181 161 196617 copy from buffgate1 to buffgate2;
+#P connect 13 0 12 0;
+#P connect 12 0 24 0;
+#P connect 21 0 20 0;
+#P connect 20 0 23 0;
+#P connect 22 0 20 1;
+#P hidden connect 29 1 28 0;
+#P hidden fasten 6 0 7 0 354 108 354 108;
+#P hidden fasten 4 1 7 0 655 440 680 440 680 123 354 123;
+#P hidden connect 11 0 5 0;
+#P hidden connect 7 0 5 0;
+#P hidden fasten 6 0 10 0 354 108 354 108;
+#P hidden fasten 8 1 10 0 655 461 680 461 680 252 354 252;
+#P hidden connect 10 0 9 0;
+#P hidden connect 11 0 9 0;
+#P connect 15 0 16 0;
+#P connect 16 0 14 0;
+#P connect 14 0 17 0;
+#P fasten 18 0 17 0 245 461 354 461;
+#P fasten 19 0 17 0 313 461 354 461;
+#P connect 14 0 17 1;
+#P connect 32 0 31 0;
+#P hidden connect 30 0 4 0;
+#P hidden fasten 9 5 5 4 654 368 665 368 665 139 654 139;
+#P hidden connect 5 5 9 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.gather.help b/externals/grill/vasp/max-help/vasp.gather.help
index 4270ff61..e1942f69 100755
--- a/externals/grill/vasp/max-help/vasp.gather.help
+++ b/externals/grill/vasp/max-help/vasp.gather.help
@@ -1 +1,65 @@
-max v2; #N vpatcher 167 74 879 653; #P origin 0 5; #P hidden message 615 229 22 196617 set; #P hidden newex 615 195 45 196617 loadbang; #P message 406 242 81 196617 vasp bufgather4; #P message 393 221 81 196617 vasp bufgather3; #P button 342 178 15 0; #P message 381 201 81 196617 vasp bufgather2; #P message 342 314 341 196617; #P newex 342 291 60 196617 prepend set; #P newex 342 267 61 196617 vasp.gather; #P message 371 178 81 196617 vasp bufgather1; #P comment 336 160 276 196617 gather as many vasps as you want and put them out (bang); #P message 138 450 81 196617 vasp bufgather4; #P newex 562 522 121 196617 buffer~ bufgather4 2000; #P message 179 178 81 196617 vasp bufgather2; #P button 65 178 15 0; #P message 65 314 252 196617; #P newex 65 291 60 196617 prepend set; #P newex 65 267 61 196617 vasp.gather; #P message 87 178 81 196617 vasp bufgather1; #P message 125 429 81 196617 vasp bufgather3; #P button 65 386 15 0; #P message 113 409 81 196617 vasp bufgather2; #P newex 562 501 121 196617 buffer~ bufgather3 2000; #P newex 562 479 121 196617 buffer~ bufgather2 2000; #P newex 562 458 121 196617 buffer~ bufgather1 1000; #P message 65 522 258 196617; #P newex 65 499 60 196617 prepend set; #P newex 65 475 70 196617 vasp.gather 2; #P comment 59 74 137 196617 gather several vasps into one; #P message 103 386 81 196617 vasp bufgather1; #P comment 59 50 89 196622 vasp.gather; #P comment 59 90 190 196617 argument: vasps to gather before output; #P comment 59 121 241 196617 right inlet: stores the different vasps; #P comment 59 106 419 196617 left inlet: outputs a vasp immediately \, causes output of vasps gathered in right inlet (bang); #P comment 59 160 196 196617 use vasp.gather like the int/float object; #P comment 59 366 227 196617 gather two vasps (opt. argument) an put them out; #P comment 360 377 243 196617 !vasps can have more vectors \, but just one length!; #P comment 360 393 245 196617 gather will always take the length from the shortest of all gathered vasps for the new one!; #P fasten 19 0 20 0 92 260 70 260; #P fasten 23 0 20 0 70 217 70 217; #P connect 20 0 21 0; #P hidden fasten 37 0 22 0 620 310 70 310; #P connect 21 0 22 0; #P connect 17 0 10 0; #P connect 10 0 11 0; #P hidden fasten 37 0 12 0 620 336 314 336 314 519 70 519; #P connect 11 0 12 0; #P fasten 24 0 20 1 184 259 121 259; #P connect 18 0 10 1; #P fasten 16 0 10 1 118 469 130 469; #P fasten 8 0 10 1 108 469 130 469; #P fasten 26 0 10 1 143 469 130 469; #P connect 33 0 29 0; #P connect 29 0 30 0; #P connect 30 0 31 0; #P hidden fasten 37 0 31 0 620 311 347 311; #P connect 34 0 29 1; #P fasten 32 0 29 1 386 262 398 262; #P fasten 28 0 29 1 376 262 398 262; #P fasten 35 0 29 1 411 262 398 262; #P hidden connect 36 0 37 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 167 74 879 653;
+#P origin 0 5;
+#P hidden message 615 229 22 196617 set;
+#P hidden newex 615 195 45 196617 loadbang;
+#P message 406 242 81 196617 vasp bufgather4;
+#P message 393 221 81 196617 vasp bufgather3;
+#P button 342 178 15 0;
+#P message 381 201 81 196617 vasp bufgather2;
+#P message 342 314 341 196617;
+#P newex 342 291 60 196617 prepend set;
+#P newex 342 267 61 196617 vasp.gather;
+#P message 371 178 81 196617 vasp bufgather1;
+#P comment 336 160 276 196617 gather as many vasps as you want and put them out (bang);
+#P message 138 450 81 196617 vasp bufgather4;
+#P newex 562 522 121 196617 buffer~ bufgather4 2000;
+#P message 179 178 81 196617 vasp bufgather2;
+#P button 65 178 15 0;
+#P message 65 314 252 196617;
+#P newex 65 291 60 196617 prepend set;
+#P newex 65 267 61 196617 vasp.gather;
+#P message 87 178 81 196617 vasp bufgather1;
+#P message 125 429 81 196617 vasp bufgather3;
+#P button 65 386 15 0;
+#P message 113 409 81 196617 vasp bufgather2;
+#P newex 562 501 121 196617 buffer~ bufgather3 2000;
+#P newex 562 479 121 196617 buffer~ bufgather2 2000;
+#P newex 562 458 121 196617 buffer~ bufgather1 1000;
+#P message 65 522 258 196617;
+#P newex 65 499 60 196617 prepend set;
+#P newex 65 475 70 196617 vasp.gather 2;
+#P comment 59 74 137 196617 gather several vasps into one;
+#P message 103 386 81 196617 vasp bufgather1;
+#P comment 59 50 89 196622 vasp.gather;
+#P comment 59 90 190 196617 argument: vasps to gather before output;
+#P comment 59 121 241 196617 right inlet: stores the different vasps;
+#P comment 59 106 419 196617 left inlet: outputs a vasp immediately \, causes output of vasps gathered in right inlet (bang);
+#P comment 59 160 196 196617 use vasp.gather like the int/float object;
+#P comment 59 366 227 196617 gather two vasps (opt. argument) an put them out;
+#P comment 360 377 243 196617 !vasps can have more vectors \, but just one length!;
+#P comment 360 393 245 196617 gather will always take the length from the shortest of all gathered vasps for the new one!;
+#P fasten 19 0 20 0 92 260 70 260;
+#P fasten 23 0 20 0 70 217 70 217;
+#P connect 20 0 21 0;
+#P hidden fasten 37 0 22 0 620 310 70 310;
+#P connect 21 0 22 0;
+#P connect 17 0 10 0;
+#P connect 10 0 11 0;
+#P hidden fasten 37 0 12 0 620 336 314 336 314 519 70 519;
+#P connect 11 0 12 0;
+#P fasten 24 0 20 1 184 259 121 259;
+#P connect 18 0 10 1;
+#P fasten 16 0 10 1 118 469 130 469;
+#P fasten 8 0 10 1 108 469 130 469;
+#P fasten 26 0 10 1 143 469 130 469;
+#P connect 33 0 29 0;
+#P connect 29 0 30 0;
+#P connect 30 0 31 0;
+#P hidden fasten 37 0 31 0 620 311 347 311;
+#P connect 34 0 29 1;
+#P fasten 32 0 29 1 386 262 398 262;
+#P fasten 28 0 29 1 376 262 398 262;
+#P fasten 35 0 29 1 411 262 398 262;
+#P hidden connect 36 0 37 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.geq.help b/externals/grill/vasp/max-help/vasp.geq.help
index c4a98ce6..0a8912b6 100755
--- a/externals/grill/vasp/max-help/vasp.geq.help
+++ b/externals/grill/vasp/max-help/vasp.geq.help
@@ -1 +1,128 @@
-max v2; #N vpatcher 188 104 857 525; #P message 437 352 91 196617 vasp buf>= buf>=1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 437 373 78 196617 p clear_buffers; #P newex 59 327 61 196617 vasp.update; #P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 274 286 48 196617 0/false; #P comment 129 145 148 196617 generate a sine wave at 1Hz; #P message 59 145 55 196617 vasp buf>=; #P newex 59 191 61 196617 vasp.update; #P newex 59 168 80 196617 vasp.osc 44100; #P comment 129 228 100 196617 copy to new buffer; #P hidden message 321 219 55 196617 set buf>=1; #P user waveform~ 321 237 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 530 373 103 196617 buffer~ buf>=1 2000; #P comment 52 86 188 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 50 196617 set buf>=; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 296 65 196617 vasp.>= -0.4; #P message 59 228 63 196617 vasp buf>=1; #P newex 530 352 103 196617 buffer~ buf>= 2000; #P newex 59 249 65 196617 vasp.= buf>=; #P comment 52 71 83 196617 sample >= value; #P comment 52 48 89 196622 vasp.>=; #P comment 598 103 44 196617 source; #P comment 277 244 44 196617 1/true; #P connect 19 0 17 0; #P connect 17 0 18 0; #P connect 6 0 4 0; #P connect 4 0 7 0; #P connect 7 0 23 0; #P fasten 22 0 7 1 154 292 119 292; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 15 0; #P hidden connect 11 0 14 0; #P hidden connect 15 0 14 0; #P connect 25 0 24 0; #P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; #P hidden connect 8 5 14 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 188 104 857 525;
+#P message 437 352 91 196617 vasp buf>= buf>=1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 437 373 78 196617 p clear_buffers;
+#P newex 59 327 61 196617 vasp.update;
+#P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 274 286 48 196617 0/false;
+#P comment 129 145 148 196617 generate a sine wave at 1Hz;
+#P message 59 145 55 196617 vasp buf>=;
+#P newex 59 191 61 196617 vasp.update;
+#P newex 59 168 80 196617 vasp.osc 44100;
+#P comment 129 228 100 196617 copy to new buffer;
+#P hidden message 321 219 55 196617 set buf>=1;
+#P user waveform~ 321 237 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 530 373 103 196617 buffer~ buf>=1 2000;
+#P comment 52 86 188 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 50 196617 set buf>=;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 296 65 196617 vasp.>= -0.4;
+#P message 59 228 63 196617 vasp buf>=1;
+#P newex 530 352 103 196617 buffer~ buf>= 2000;
+#P newex 59 249 65 196617 vasp.= buf>=;
+#P comment 52 71 83 196617 sample >= value;
+#P comment 52 48 89 196622 vasp.>=;
+#P comment 598 103 44 196617 source;
+#P comment 277 244 44 196617 1/true;
+#P connect 19 0 17 0;
+#P connect 17 0 18 0;
+#P connect 6 0 4 0;
+#P connect 4 0 7 0;
+#P connect 7 0 23 0;
+#P fasten 22 0 7 1 154 292 119 292;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 15 0;
+#P hidden connect 11 0 14 0;
+#P hidden connect 15 0 14 0;
+#P connect 25 0 24 0;
+#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94;
+#P hidden connect 8 5 14 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.gtr.help b/externals/grill/vasp/max-help/vasp.gtr.help
index c9381a16..d3614b83 100755
--- a/externals/grill/vasp/max-help/vasp.gtr.help
+++ b/externals/grill/vasp/max-help/vasp.gtr.help
@@ -1 +1,128 @@
-max v2; #N vpatcher 40 55 709 476; #P message 446 353 79 196617 vasp buf> buf>1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 446 373 78 196617 p clear_buffers; #P newex 59 327 61 196617 vasp.update; #P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 274 286 48 196617 0/false; #P comment 114 145 148 196617 generate a sine wave at 1Hz; #P message 59 145 51 196617 vasp buf>; #P newex 59 191 61 196617 vasp.update; #P newex 59 168 80 196617 vasp.osc 44100; #P comment 118 228 100 196617 copy to new buffer; #P hidden message 321 219 50 196617 set buf>1; #P user waveform~ 321 237 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 538 373 95 196617 buffer~ buf>1 2000; #P comment 52 86 134 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 44 196617 set buf>; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 296 60 196617 vasp.> -0.4; #P message 59 228 55 196617 vasp buf>1; #P newex 538 353 95 196617 buffer~ buf> 2000; #P newex 59 249 60 196617 vasp.= buf>; #P comment 52 71 83 196617 sample > value; #P comment 52 48 89 196622 vasp.>; #P comment 598 103 44 196617 source; #P comment 277 244 44 196617 1/true; #P connect 19 0 17 0; #P connect 17 0 18 0; #P connect 6 0 4 0; #P connect 4 0 7 0; #P connect 7 0 23 0; #P fasten 22 0 7 1 154 292 114 292; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 15 0; #P hidden connect 11 0 14 0; #P hidden connect 15 0 14 0; #P connect 25 0 24 0; #P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; #P hidden connect 8 5 14 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 40 55 709 476;
+#P message 446 353 79 196617 vasp buf> buf>1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 446 373 78 196617 p clear_buffers;
+#P newex 59 327 61 196617 vasp.update;
+#P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 274 286 48 196617 0/false;
+#P comment 114 145 148 196617 generate a sine wave at 1Hz;
+#P message 59 145 51 196617 vasp buf>;
+#P newex 59 191 61 196617 vasp.update;
+#P newex 59 168 80 196617 vasp.osc 44100;
+#P comment 118 228 100 196617 copy to new buffer;
+#P hidden message 321 219 50 196617 set buf>1;
+#P user waveform~ 321 237 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 538 373 95 196617 buffer~ buf>1 2000;
+#P comment 52 86 134 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 44 196617 set buf>;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 296 60 196617 vasp.> -0.4;
+#P message 59 228 55 196617 vasp buf>1;
+#P newex 538 353 95 196617 buffer~ buf> 2000;
+#P newex 59 249 60 196617 vasp.= buf>;
+#P comment 52 71 83 196617 sample > value;
+#P comment 52 48 89 196622 vasp.>;
+#P comment 598 103 44 196617 source;
+#P comment 277 244 44 196617 1/true;
+#P connect 19 0 17 0;
+#P connect 17 0 18 0;
+#P connect 6 0 4 0;
+#P connect 4 0 7 0;
+#P connect 7 0 23 0;
+#P fasten 22 0 7 1 154 292 114 292;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 15 0;
+#P hidden connect 11 0 14 0;
+#P hidden connect 15 0 14 0;
+#P connect 25 0 24 0;
+#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94;
+#P hidden connect 8 5 14 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.help b/externals/grill/vasp/max-help/vasp.help
index b1fbd576..a03f562b 100755
--- a/externals/grill/vasp/max-help/vasp.help
+++ b/externals/grill/vasp/max-help/vasp.help
@@ -1 +1,710 @@
-max v2; #N vpatcher 20 50 720 450; #P origin 32 21; #P hidden message 456 87 200 196617 window size 20 50 720 450 \, window exec; #N thispatcher; #Q end; #P hidden newobj 511 108 59 196617 thispatcher; #P hidden newex 409 28 45 196617 loadbang; #P hidden message 409 51 84 196617 read vasplogo.tif; #P user fpic 488 21 186 57 vasplogo.tif 0 0 0 0. 0 0 0; #N vpatcher 93 94 908 393; #P comment 443 224 237 196617 don't miss that!; #P comment 134 257 166 196617 http://www.canto-crudo.com/; #P comment 443 190 237 196617 comparable (but more extensive) functionality; #P comment 64 52 50 196617 about fft:; #P comment 134 190 255 196617 http://www.bath.ac.uk/~masjpf/CDP/CDP.htm; #P comment 84 190 28 196617 CDP:; #P comment 134 113 255 196617 http://sepwww.stanford.edu/oldsep/hale/FftLab.html; #P comment 443 113 73 196617 very useful; #P comment 134 151 225 196617 http://www.fftw.org/links.html; #P comment 443 151 92 196617 more fft links; #P comment 443 80 95 196617 introduction to fft; #P comment 134 80 225 196617 http://www.eptools.com/tn/T0001/INDEX.HTM; #P comment 20 224 92 196617 Numerical Recipes:; #P comment 134 224 272 196617 http://www.nr.com/; #P comment 443 49 305 196617 the author (marius schebella) also handles the documentation for the pure data port of vasp; #P comment 134 52 299 196617 http://www.parasitaere-kapazitaeten.net/Pd/fft_und_pd.htm; #P comment 44 257 68 196617 gŸnther rabl :; #P comment 28 22 107 196622 vasp_links; #P pop; #P newobj 570 248 35 196617 p links; #P comment 509 250 59 196617 useful links; #P comment 45 136 469 196617 consisting of functions to generate and modify buffer content in a non-realtime context.; #P comment 386 250 55 196617 vasps units; #N vpatcher 71 356 541 680; #N vpatcher 442 226 781 479; #P comment 114 90 102 196617 current sampling rate; #P flonum 68 194 54 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 68 141 27 196617 t b f; #P message 267 140 27 196617 stop; #P message 201 140 65 196617 startwindow; #P newex 201 163 29 196617 dac~; #P comment 126 195 64 196617 period length; #P flonum 68 113 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 68 163 27 196617 / 1.; #P flonum 56 89 54 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 42 65 53 196617 dspstate~; #P comment 126 115 80 196617 frequency in Hz; #P comment 20 21 170 196622 Hz_to_period_length; #P connect 2 1 3 0; #P fasten 5 0 10 0 73 134 73 134; #P fasten 3 0 4 0 61 108 61 108 61 160 73 160; #P connect 10 0 4 0; #P connect 4 0 11 0; #P connect 10 1 4 1; #P fasten 9 0 7 0 272 159 206 159; #P connect 8 0 7 0; #P pop; #P newobj 123 280 109 196617 p Hz_to_period_length; #P comment 103 262 301 196617 sample rate/frequency in Hz = frequency in period length (float); #P comment 60 245 234 196617 - frequencies are always defined in period lengths; #P message 122 197 125 196617 vasp 44100 buf1 22050 0; #P comment 103 171 305 196617 e.g: vasp message with an offset of 0.5 sec. and a length of 1 sec. (sr 44100); #P comment 60 155 366 196617 - lengths and offsets are always defined in samples (depending on sample rate); #P message 123 102 125 196617 vasp 44100 buf1 22050 0; #P comment 60 69 182 196617 - vasp index counting starts from 0; #P comment 38 24 106 196622 vasp_units; #P comment 103 84 313 196617 e.g: channel 0 in a vasp message means first channel in the buffer; #P pop; #P newobj 446 248 38 196617 p units; #P comment 218 250 78 196617 the vasp objects; #P comment 45 250 83 196617 the vasp message; #N vpatcher 740 49 953 357; #N vpatcher 119 475 293 627; #P origin 0 23; #P newex 21 21 39 196617 r ohelp; #P newex 21 41 78 196617 prepend symbol; #P newex 21 92 45 196617 pcontrol; #P message 21 67 41 196617 help \$1; #P connect 3 0 2 0; #P connect 2 0 0 0; #P connect 0 0 1 0; #P pop; #P hidden newobj 60 274 54 196617 p openhelp; #N vpatcher 306 143 730 390; #P comment 132 137 195 196617 rotate buffer content symmetrically; #P message 67 137 52 196617 vasp.xrot; #P message 67 193 59 196617 vasp.xmirr; #P message 67 164 53 196617 vasp.mirr; #P message 67 110 45 196617 vasp.rot; #P message 67 81 59 196617 vasp.xshift; #P message 67 52 53 196617 vasp.shift; #P hidden newex 319 205 39 196617 s ohelp; #P comment 132 193 171 196617 mirrors a vasp symmetrically; #P comment 131 81 228 196617 shifts the buffer content symetrically; #P comment 132 164 171 196617 mirrors a vasp; #P comment 132 52 222 196617 shifts the buffer content; #P comment 132 110 100 196617 rotate buffer content; #P comment 43 23 131 196622 vasp.displace; #P hidden connect 11 0 6 0; #P hidden connect 10 0 6 0; #P hidden connect 9 0 6 0; #P hidden connect 8 0 6 0; #P hidden connect 7 0 6 0; #P hidden connect 12 0 6 0; #P pop; #P newobj 60 178 75 196617 p vasp.displace; #N vpatcher 531 93 1020 661; #P origin 0 41; #P hidden newex 413 514 39 196617 s ohelp; #P message 62 522 51 196617 vasp.part; #P message 62 496 61 196617 vasp.gather; #P message 62 470 49 196617 vasp.spit; #P message 62 444 49 196617 vasp.join; #P message 62 418 52 196617 vasp.split; #P message 62 392 70 196617 vasp.frames?; #P message 62 366 70 196617 vasp.frames+; #P message 62 340 64 196617 vasp.frames; #P message 62 314 55 196617 vasp.offs?; #P message 62 288 55 196617 vasp.offs+; #P message 62 262 50 196617 vasp.offs; #P message 62 236 43 196617 vasp.n?; #P message 62 210 35 196617 vasp.n; #P message 62 184 40 196617 vasp.m; #P message 62 158 61 196617 vasp.update; #P message 62 132 53 196617 vasp.sync; #P message 62 106 45 196617 vasp.chk; #P message 62 80 44 196617 vasp.??; #P message 62 54 38 196617 vasp.?; #P comment 134 80 225 196617 output all non zero samples of a vasp as list; #P comment 134 496 252 196617 gather several vasps into one; #P comment 134 418 252 196617 split a vasp into its vectors; #P comment 134 470 252 196617 spit out vectors of a vasp (one vector after the other); #P comment 134 444 252 196617 join several vasps into one; #P comment 134 392 252 196617 get a vasps frame count; #P comment 134 366 252 196617 raise/lower a vasps frame count; #P comment 134 340 252 196617 set a vasps frame count; #P comment 134 314 252 196617 get a single vectored vasp«s offset(s) into the buffer; #P comment 134 288 252 196617 shift a vasp«s offset(s) into the vector buffers; #P comment 134 262 252 196617 set a vasp«s offset(s) into the vector buffers; #P comment 134 236 252 196617 get the number vectors of a vasp; #P comment 134 210 252 196617 get a vector of a vasp; #P comment 134 184 252 196617 output a vasp multiply; #P comment 134 54 186 196617 output the samples of a vasp as list; #P comment 134 106 110 196617 check vasp dimensions; #P comment 134 132 246 196617 sync 2 or more vasps; #P comment 134 158 252 196617 update the graphics of a patcher (e.g. waveform); #P comment 134 522 238 196617 output vasps with different lengths and offsets; #P comment 27 22 135 196622 define_vasps; #P hidden connect 22 0 39 0; #P hidden connect 38 0 39 0; #P hidden connect 37 0 39 0; #P hidden connect 36 0 39 0; #P hidden connect 35 0 39 0; #P hidden connect 34 0 39 0; #P hidden connect 33 0 39 0; #P hidden connect 32 0 39 0; #P hidden connect 31 0 39 0; #P hidden connect 30 0 39 0; #P hidden connect 29 0 39 0; #P hidden connect 28 0 39 0; #P hidden connect 27 0 39 0; #P hidden connect 26 0 39 0; #P hidden connect 25 0 39 0; #P hidden connect 24 0 39 0; #P hidden connect 23 0 39 0; #P hidden connect 21 0 39 0; #P hidden connect 20 0 39 0; #P pop; #P newobj 60 65 75 196617 p define_vasps; #N vpatcher 463 267 1141 534; #P message 63 228 52 196617 vasp.xtilt; #P comment 130 229 165 196617 symmetrical resampling; #P message 64 204 45 196617 vasp.tilt; #P comment 129 205 165 196617 resampling; #P message 279 81 60 196617 vasp.cnorm; #P message 483 109 70 196617 vasp.rvalleys; #P message 483 137 62 196617 vasp.rpeaks; #P message 483 81 51 196617 vasp.ropt; #P comment 559 109 83 196617 radius valleys; #P comment 559 137 83 196617 radius peaks; #P comment 559 81 83 196617 radius optimize; #P message 483 53 55 196617 vasp.rgate; #P comment 559 53 83 196617 radius gate; #P hidden newex 304 187 39 196617 s ohelp; #P message 64 165 60 196617 vasp.pwrap; #P message 64 137 55 196617 vasp.peaks; #P message 64 109 65 196617 vasp.valleys; #P message 64 81 45 196617 vasp.opt; #P message 64 53 51 196617 vasp.gate; #P comment 129 165 165 196617 wraps value from 0-2¹ to -¹ to ¹; #P comment 129 137 100 196617 local peaks of a vasp; #P comment 129 109 123 196617 local minima of a vasp; #P comment 129 81 134 196617 optimize buffer content; #P comment 129 53 171 196617 gates vasp under a value (amplitude); #P comment 26 25 144 196622 vasp_utilities; #P comment 341 81 125 196617 sets complex radius of all samples to unity; #P hidden connect 25 0 12 0; #P hidden connect 23 0 12 0; #P hidden connect 20 0 12 0; #P hidden connect 19 0 12 0; #P hidden connect 18 0 12 0; #P hidden connect 14 0 12 0; #P hidden connect 10 0 12 0; #P hidden connect 9 0 12 0; #P hidden connect 8 0 12 0; #P hidden connect 7 0 12 0; #P hidden connect 21 0 12 0; #P hidden connect 11 0 12 0; #P pop; #P newobj 60 246 75 196617 p vasp.utilities; #N vpatcher 195 285 765 547; #P origin 0 24; #P message 352 208 53 196617 vasp.rmin; #P message 352 182 55 196617 vasp.rmax; #P comment 426 208 83 196617 radius minimum; #P comment 426 182 83 196617 radius maximum; #P hidden newex 309 229 39 196617 s ohelp; #P message 63 208 48 196617 vasp.min; #P message 63 182 51 196617 vasp.max; #P message 63 156 55 196617 vasp.max?; #P message 63 130 54 196617 vasp.min?; #P message 63 104 62 196617 vasp.amax?; #P message 63 78 59 196617 vasp.amin?; #P message 352 156 62 196617 vasp.rmax?; #P message 352 130 59 196617 vasp.rmin?; #P message 63 52 65 196617 vasp.minmax; #P comment 139 208 171 196617 minimum of vasp and argument; #P comment 139 182 171 196617 maximum of vasp and argument; #P comment 139 130 131 196617 output min. value of a vasp; #P comment 139 156 131 196617 output max. value of a vasp; #P comment 139 104 172 196617 output max. absolute value of a vasp; #P comment 139 78 204 196617 output min. absolute value of a vasp; #P comment 426 156 99 196617 radius max. value; #P comment 426 130 96 196617 radius min. value; #P comment 139 54 228 196617 splits a vasp into minimum and maximum values; #P comment 27 23 140 196622 vasp_minmax_etc.; #P hidden connect 23 0 19 0; #P hidden connect 22 0 19 0; #P hidden connect 18 0 19 0; #P hidden connect 17 0 19 0; #P hidden connect 16 0 19 0; #P hidden connect 15 0 19 0; #P hidden connect 14 0 19 0; #P hidden connect 13 0 19 0; #P hidden connect 12 0 19 0; #P hidden connect 11 0 19 0; #P hidden connect 10 0 19 0; #P pop; #P newobj 60 223 98 196617 p vasp.minmax_etc.; #N vpatcher 480 321 1117 575; #P origin 0 27; #P comment 292 137 98 196617 complex sample^2; #P comment 292 112 148 196617 complex integer power function; #P comment 121 162 98 196617 square root; #P comment 121 188 87 196617 signed sample^2; #P message 230 112 58 196617 vasp.cpowi; #P message 230 137 52 196617 vasp.csqr; #P message 61 214 55 196617 vasp.ssqrt; #P message 61 188 52 196617 vasp.ssqr; #P message 61 162 51 196617 vasp.sqrt; #P message 61 137 45 196617 vasp.sqr; #P message 61 112 50 196617 vasp.pow; #P comment 121 214 98 196617 signed square root; #P comment 121 112 48 196617 samps^x; #P comment 121 137 70 196617 sample^2; #P message 448 112 55 196617 vasp.rpow; #P comment 504 112 112 196617 radius power function; #P hidden newex 346 206 39 196617 s ohelp; #P message 61 85 45 196617 vasp.log; #P message 61 55 48 196617 vasp.exp; #P comment 121 85 86 196617 logarithm; #P comment 121 55 84 196617 exponential; #P comment 27 22 143 196622 vasp_transcendent; #P hidden connect 3 0 5 0; #P hidden connect 4 0 5 0; #P hidden connect 11 0 5 0; #P hidden connect 12 0 5 0; #P hidden connect 13 0 5 0; #P hidden connect 14 0 5 0; #P hidden connect 15 0 5 0; #P hidden connect 17 0 5 0; #P hidden connect 16 0 5 0; #P hidden connect 7 0 5 0; #P pop; #P newobj 60 201 98 196617 p vasp.transcendent; #N vpatcher 508 79 1002 585; #P origin 0 26; #P message 251 114 45 196617 vasp.c!-; #P comment 125 112 100 196617 reverse subtraction; #P message 62 112 40 196617 vasp.!-; #P comment 126 439 100 196617 integral function; #P comment 126 462 100 196617 differential function; #P message 63 462 44 196617 vasp.dif; #P message 63 439 44 196617 vasp.int; #P message 336 70 43 196617 vasp.r+; #P comment 385 70 83 196617 radius offset; #P message 252 182 45 196617 vasp.c!/; #P comment 126 181 100 196617 reverse division; #P message 63 181 41 196617 vasp.!/; #P message 252 205 43 196617 vasp.c=; #P message 252 160 43 196617 vasp.c/; #P message 252 136 44 196617 vasp.c*; #P message 251 92 42 196617 vasp.c-; #P message 251 70 43 196617 vasp.c+; #P hidden newex 417 333 39 196617 s ohelp; #P message 63 416 50 196617 vasp.sign; #P message 63 394 41 196617 vasp.%; #P message 63 373 45 196617 vasp.abs; #P message 63 350 41 196617 vasp.!=; #P message 63 327 44 196617 vasp.==; #P message 63 304 43 196617 vasp.>=; #P message 63 280 43 196617 vasp.<=; #P message 63 256 35 196617 vasp.>; #P message 63 232 35 196617 vasp.<; #P message 63 207 38 196617 vasp.=; #P message 63 159 38 196617 vasp./; #P message 63 135 39 196617 vasp.*; #P message 62 92 35 196617 vasp.-; #P message 62 70 38 196617 vasp.+; #P comment 126 304 100 196617 vasp >= x; #P comment 126 280 100 196617 vasp >= x; #P comment 126 256 100 196617 vasp > x; #P comment 126 232 100 196617 vasp < x; #P comment 126 327 58 196617 equal to; #P comment 126 135 100 196617 multiplication; #P comment 126 159 100 196617 division; #P comment 125 92 100 196617 subtraction; #P comment 126 350 58 196617 not equal to; #P comment 126 394 158 196617 modulo (remainder of a division); #P comment 126 373 128 196617 absolute value of a vasp; #P comment 125 70 100 196617 addition; #P comment 251 49 73 196617 complex ....; #P comment 27 24 151 196622 vasp_arithmetic; #P comment 126 207 100 196617 vasp = x; #P comment 126 416 204 196617 values < 0 become -1 | values > 0 become 1; #P comment 336 49 100 196617 radius ....; #P hidden connect 43 0 31 0; #P hidden connect 42 0 31 0; #P hidden connect 41 0 31 0; #P hidden connect 39 0 31 0; #P hidden connect 37 0 31 0; #P hidden connect 36 0 31 0; #P hidden connect 35 0 31 0; #P hidden connect 34 0 31 0; #P hidden connect 33 0 31 0; #P hidden connect 32 0 31 0; #P hidden connect 30 0 31 0; #P hidden connect 29 0 31 0; #P hidden connect 28 0 31 0; #P hidden connect 27 0 31 0; #P hidden connect 26 0 31 0; #P hidden connect 25 0 31 0; #P hidden connect 23 0 31 0; #P hidden connect 21 0 31 0; #P hidden connect 19 0 31 0; #P hidden connect 18 0 31 0; #P hidden connect 17 0 31 0; #P hidden connect 20 0 31 0; #P hidden connect 22 0 31 0; #P hidden connect 24 0 31 0; #P hidden connect 46 0 31 0; #P hidden connect 48 0 31 0; #P pop; #P newobj 60 109 85 196617 p vasp.arithmetic; #N vpatcher 528 390 958 618; #P origin 25 0; #P message 234 86 52 196617 vasp.r!fft; #P message 234 59 49 196617 vasp.rfft; #P message 64 133 55 196617 vasp.polar; #P message 64 86 52 196617 vasp.c!fft; #P message 64 59 49 196617 vasp.cfft; #P hidden newex 309 192 39 196617 s ohelp; #P comment 121 133 238 196617 changes between cartesian and polar representation; #P comment 287 86 114 196617 inverse real fft; #P comment 121 59 100 196617 complex fft; #P comment 121 86 100 196617 inverse complex fft; #P comment 287 59 100 196617 real fft; #P comment 26 22 135 196622 vasp_fftobjects; #P comment 121 177 238 196617 changes between polar and cartesian representation; #P message 64 177 51 196617 vasp.rect; #P hidden fasten 11 0 8 0 69 161 314 161; #P hidden fasten 10 0 8 0 69 113 314 113; #P hidden fasten 9 0 8 0 69 78 314 78; #P hidden fasten 0 0 8 0 69 198 314 198; #P hidden fasten 12 0 8 0 239 113 314 113; #P hidden fasten 13 0 8 0 239 77 314 77; #P pop; #P newobj 60 87 85 196617 p vasp.fftobjects; #N vpatcher 506 170 738 299; #P origin 0 12; #P hidden newex 149 90 39 196617 s ohelp; #P message 65 79 44 196617 vasp.flp; #P message 65 53 45 196617 vasp.fhp; #P comment 116 79 100 196617 low pass; #P comment 116 53 100 196617 high pass; #P comment 24 21 117 196622 vasp_filters; #P hidden connect 4 0 5 0; #P hidden connect 3 0 5 0; #P pop; #P newobj 60 155 69 196617 p vasp.filters; #N vpatcher 193 174 800 440; #P origin 0 -227; #P hidden newex 371 208 39 196617 s ohelp; #P message 422 192 59 196617 vasp.*cosc; #P message 422 169 65 196617 vasp.*!bevel; #P message 422 146 63 196617 vasp.*bevel; #P message 422 100 69 196617 vasp.*phasor; #P message 422 77 54 196617 vasp.*osc; #P message 60 214 60 196617 vasp.cnoise; #P message 60 191 52 196617 vasp.cosc; #P message 60 168 59 196617 vasp.!bevel; #P message 60 145 55 196617 vasp.bevel; #P message 60 122 55 196617 vasp.noise; #P message 60 99 62 196617 vasp.phasor; #P message 60 76 45 196617 vasp.osc; #P comment 60 56 126 196617 generate .....; #P comment 128 169 120 196617 vasp ramp from 1- 0; #P comment 128 145 120 196617 vasp ramp from 0 - 1; #P comment 128 121 120 196617 vasp noise generator; #P comment 128 98 120 196617 vasp saw tooth generator; #P comment 128 75 126 196617 vasp sine wave generator; #P comment 292 59 283 196617 multiplies a buffer content with the oscillator functions ...; #P comment 128 217 140 196617 complex noise; #P comment 128 192 140 196617 complex sine wave; #P comment 26 22 138 196622 vasp_generators; #P hidden connect 21 0 22 0; #P hidden connect 20 0 22 0; #P hidden connect 19 0 22 0; #P hidden connect 18 0 22 0; #P hidden connect 17 0 22 0; #P hidden connect 16 0 22 0; #P hidden connect 15 0 22 0; #P hidden connect 14 0 22 0; #P hidden connect 13 0 22 0; #P hidden connect 12 0 22 0; #P hidden connect 11 0 22 0; #P hidden connect 10 0 22 0; #P pop; #P newobj 60 132 89 196617 p vasp.generators; #P comment 25 23 121 196622 vasp_objects; #P pop; #P newobj 301 248 49 196617 p objects; #P comment 45 152 478 196617 vasp objects are using a specialized message syntax for all objects to refer to a buffer or a part of it.; #N vpatcher 120 60 880 570; #P origin 0 97; #P comment 104 1341 139 196617 set all samples of buf5/6 to 0; #P message 246 1340 75 196617 vasp buf5 buf6; #P newex 246 1382 61 196617 vasp.update; #P newex 246 1360 45 196617 vasp.= 0; #P comment 38 1289 207 196617 and modulate the noise with a 4Hz sine wave; #P newex 246 1206 55 196617 vasp.* 0.5; #P hidden newex 494 37 45 196617 loadbang; #P comment 725 1385 13 196620 |||; #P newex 517 1384 92 196617 buffer~ buf6 2000; #P newex 517 1364 92 196617 buffer~ buf5 2000; #P newex 518 1122 92 196617 buffer~ buf4 2000; #P newex 504 848 92 196617 buffer~ buf3 2000; #P newex 504 828 92 196617 buffer~ buf2 2000; #P newex 501 414 92 196617 buffer~ buf1 2000; #P hidden newex 373 599 45 196617 loadbang; #P hidden message 494 57 205 196617 window size 120 60 880 570 \, window exec; #N thispatcher; #Q end; #P hidden newobj 494 75 59 196617 thispatcher; #P comment 555 1273 63 196617 buffer buf6; #P comment 554 1180 63 196617 buffer buf5; #P comment 94 1158 37 196617 - to:; #P comment 115 1076 127 196617 set all samples of buf1 to 0; #P comment 553 1030 63 196617 buffer buf4; #P message 246 1268 115 196617 to vasp buf6 \, vasp buf5; #P newex 246 1311 61 196617 vasp.update; #P newex 246 1287 85 196617 vasp.*osc 11025; #P newex 246 1228 61 196617 vasp.update; #P newex 246 1184 55 196617 vasp.noise; #P message 246 1074 52 196617 vasp buf4; #P newex 246 1116 61 196617 vasp.update; #P newex 246 1094 45 196617 vasp.= 0; #P hidden message 387 1271 45 196617 set buf6; #P user waveform~ 387 1287 223 74 3 9; #W mode none; #W mouseoutput none; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P hidden newex 387 1158 45 196617 loadbang; #P hidden message 387 1177 45 196617 set buf5; #P user waveform~ 387 1195 223 74 3 9; #W mode none; #W mouseoutput none; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P button 193 993 15 0; #P hidden newex 387 1002 45 196617 loadbang; #P hidden message 387 1029 45 196617 set buf4; #P newex 246 1049 61 196617 vasp.update; #P newex 246 1024 80 196617 vasp.osc 22050; #P user waveform~ 387 1045 223 74 3 9; #W mode none; #W mouseoutput none; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P comment 539 737 63 196617 buffer buf3; #P comment 534 644 63 196617 buffer buf2; #P comment 536 324 57 196617 buffer buf1; #P comment 117 748 112 196617 set all samples of buf1 and buf2 to 0; #P message 231 750 75 196617 vasp buf2 buf3; #P newex 231 788 61 196617 vasp.update; #P newex 231 768 45 196617 vasp.= 0; #P newex 228 705 61 196617 vasp.update; #P newex 228 680 80 196617 vasp.osc 22050; #P comment 92 375 127 196617 set all samples of buf1 to 0; #P comment 92 320 135 196617 generate a sine wave at 2Hz; #P message 229 376 55 196617 vasp buf1; #P newex 229 414 61 196617 vasp.update; #P newex 229 394 45 196617 vasp.= 0; #P hidden message 373 734 45 196617 set buf3; #P user waveform~ 373 751 223 74 3 9; #W mode none; #W mouseoutput none; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P hidden message 373 641 45 196617 set buf2; #P hidden newex 373 620 35 196617 del 10; #P user waveform~ 373 659 223 74 3 9; #W mode none; #W mouseoutput none; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 228 343 61 196617 vasp.update; #P newex 228 318 80 196617 vasp.osc 22050; #P hidden message 370 319 45 196617 set buf1; #P hidden newex 370 299 45 196617 loadbang; #P user waveform~ 370 338 223 74 3 9; #W mode none; #W mouseoutput none; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P comment 117 1270 127 196617 sets the target buffer buf6; #P message 246 1158 52 196617 vasp buf5; #P comment 379 202 117 196617 (default 0); #P comment 351 993 214 196617 sets the message \, bang triggers the operation; #P comment 63 958 198 196622 additional vasp messages:; #P message 246 993 102 196617 set vasp 44100 buf4; #P comment 130 868 502 196617 a vasp message can contain as many vectors as you like \, but all vectors have the same length; #P comment 391 570 281 196617 refering 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; #P message 228 573 159 196617 vasp 44100 buf2 0 0 buf3 22050; #P comment 92 574 135 196617 two vectored vasp message:; #P comment 92 527 395 196617 all vectors have the same length \, but the vectors can differ in the buffers and offsets; #P comment 74 497 269 196617 - if a vasp message contains more than one vector:; #P comment 296 226 117 196617 (default 0); #P comment 354 270 284 196617 refering to buffer buf1 from 0.5 sec to 1.5 sec on channel 0; #P message 228 269 125 196617 vasp 44100 buf1 22050 0; #P comment 92 271 135 196617 one vectored vasp message:; #P comment 379 153 141 196617 which does the same.; #P message 336 151 43 196617 vasp -1; #P comment 92 153 192 196617 if missing \, it refers to the whole buffer; #P message 169 225 125 196617 vasp 44100 buf1 22050 0; #P comment 92 226 75 196617 and the channel; #P message 258 201 118 196617 vasp 44100 buf1 22050; #P comment 92 202 138 196617 an optional offset in samples; #P message 258 179 85 196617 vasp 44100 buf1; #P comment 92 180 164 196617 the name of the buffer it refers to; #P message 271 131 62 196617 vasp 44100; #P comment 92 134 173 196617 followed by the length in samples; #P message 214 110 31 196617 vasp; #P comment 63 43 158 196622 the vasp message:; #P comment 63 1 124 196622 vasp_syntax; #P comment 74 85 362 196617 - a vasp message is structured by the following parts:; #P comment 92 112 113 196617 it always starts with; #P comment 291 153 41 196617 or type; #P comment 94 993 37 196617 - set:; #P comment 725 473 14 196620 |; #P comment 725 934 13 196620 ||; #P connect 21 0 39 0; #P connect 39 0 40 0; #P connect 27 0 51 0; #P connect 51 0 52 0; #P connect 48 0 46 0; #P connect 46 0 47 0; #P connect 55 0 53 0; #P connect 53 0 54 0; #P connect 30 0 61 0; #P fasten 65 0 61 0 198 1014 251 1014; #P connect 61 0 62 0; #P connect 73 0 71 0; #P connect 71 0 72 0; #P connect 34 0 74 0; #P connect 74 0 95 0; #P connect 95 0 75 0; #P connect 78 0 76 0; #P connect 76 0 77 0; #P connect 99 0 97 0; #P connect 97 0 98 0; #P hidden connect 37 0 38 0; #P hidden connect 38 0 36 0; #P hidden connect 86 0 42 0; #P hidden connect 42 0 43 0; #P hidden connect 43 0 41 0; #P hidden connect 42 0 45 0; #P hidden connect 45 0 44 0; #P hidden connect 64 0 63 0; #P hidden connect 63 0 60 0; #P hidden connect 68 0 67 0; #P hidden connect 67 0 66 0; #P hidden connect 68 0 70 0; #P hidden connect 70 0 69 0; #P hidden connect 94 0 85 0; #P hidden connect 85 0 84 0; #P pop; #P newobj 134 248 45 196617 p syntax; #P comment 25 41 148 196622 vasp_modular.help; #P comment 45 120 354 196617 vasp is a library of objects for max/msp and pd \,; #P comment 45 348 432 196617 inspired by gŸnther rabl«s fft-box and tool-box. find gŸnther rabl at www.canto-crudo.com; #P comment 45 75 362 196620 vasp modular - vector assembling signal processor ©2002 thomas grill; #P comment 45 365 470 196617 vasp.help patches by florian bogner and oliver grimm - ©2002 patcherboys - www.patcherboys.com; #P comment 45 168 570 196617 these help patches should give you an idea of what is possible. feel free to combine different patches to more complex ones.; #P hidden connect 18 0 20 0; #P hidden connect 17 0 16 0; #P hidden connect 20 0 19 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 20 50 720 450;
+#P origin 32 21;
+#P hidden message 456 87 200 196617 window size 20 50 720 450 \, window exec;
+#N thispatcher;
+#Q end;
+#P hidden newobj 511 108 59 196617 thispatcher;
+#P hidden newex 409 28 45 196617 loadbang;
+#P hidden message 409 51 84 196617 read vasplogo.tif;
+#P user fpic 488 21 186 57 vasplogo.tif 0 0 0 0. 0 0 0;
+#N vpatcher 93 94 908 393;
+#P comment 443 224 237 196617 don't miss that!;
+#P comment 134 257 166 196617 http://www.canto-crudo.com/;
+#P comment 443 190 237 196617 comparable (but more extensive) functionality;
+#P comment 64 52 50 196617 about fft:;
+#P comment 134 190 255 196617 http://www.bath.ac.uk/~masjpf/CDP/CDP.htm;
+#P comment 84 190 28 196617 CDP:;
+#P comment 134 113 255 196617 http://sepwww.stanford.edu/oldsep/hale/FftLab.html;
+#P comment 443 113 73 196617 very useful;
+#P comment 134 151 225 196617 http://www.fftw.org/links.html;
+#P comment 443 151 92 196617 more fft links;
+#P comment 443 80 95 196617 introduction to fft;
+#P comment 134 80 225 196617 http://www.eptools.com/tn/T0001/INDEX.HTM;
+#P comment 20 224 92 196617 Numerical Recipes:;
+#P comment 134 224 272 196617 http://www.nr.com/;
+#P comment 443 49 305 196617 the author (marius schebella) also handles the documentation for the pure data port of vasp;
+#P comment 134 52 299 196617 http://www.parasitaere-kapazitaeten.net/Pd/fft_und_pd.htm;
+#P comment 44 257 68 196617 gŸnther rabl :;
+#P comment 28 22 107 196622 vasp_links;
+#P pop;
+#P newobj 570 248 35 196617 p links;
+#P comment 509 250 59 196617 useful links;
+#P comment 45 136 469 196617 consisting of functions to generate and modify buffer content in a non-realtime context.;
+#P comment 386 250 55 196617 vasps units;
+#N vpatcher 71 356 541 680;
+#N vpatcher 442 226 781 479;
+#P comment 114 90 102 196617 current sampling rate;
+#P flonum 68 194 54 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 68 141 27 196617 t b f;
+#P message 267 140 27 196617 stop;
+#P message 201 140 65 196617 startwindow;
+#P newex 201 163 29 196617 dac~;
+#P comment 126 195 64 196617 period length;
+#P flonum 68 113 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 68 163 27 196617 / 1.;
+#P flonum 56 89 54 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 42 65 53 196617 dspstate~;
+#P comment 126 115 80 196617 frequency in Hz;
+#P comment 20 21 170 196622 Hz_to_period_length;
+#P connect 2 1 3 0;
+#P fasten 5 0 10 0 73 134 73 134;
+#P fasten 3 0 4 0 61 108 61 108 61 160 73 160;
+#P connect 10 0 4 0;
+#P connect 4 0 11 0;
+#P connect 10 1 4 1;
+#P fasten 9 0 7 0 272 159 206 159;
+#P connect 8 0 7 0;
+#P pop;
+#P newobj 123 280 109 196617 p Hz_to_period_length;
+#P comment 103 262 301 196617 sample rate/frequency in Hz = frequency in period length (float);
+#P comment 60 245 234 196617 - frequencies are always defined in period lengths;
+#P message 122 197 125 196617 vasp 44100 buf1 22050 0;
+#P comment 103 171 305 196617 e.g: vasp message with an offset of 0.5 sec. and a length of 1 sec. (sr 44100);
+#P comment 60 155 366 196617 - lengths and offsets are always defined in samples (depending on sample rate);
+#P message 123 102 125 196617 vasp 44100 buf1 22050 0;
+#P comment 60 69 182 196617 - vasp index counting starts from 0;
+#P comment 38 24 106 196622 vasp_units;
+#P comment 103 84 313 196617 e.g: channel 0 in a vasp message means first channel in the buffer;
+#P pop;
+#P newobj 446 248 38 196617 p units;
+#P comment 218 250 78 196617 the vasp objects;
+#P comment 45 250 83 196617 the vasp message;
+#N vpatcher 740 49 953 357;
+#N vpatcher 119 475 293 627;
+#P origin 0 23;
+#P newex 21 21 39 196617 r ohelp;
+#P newex 21 41 78 196617 prepend symbol;
+#P newex 21 92 45 196617 pcontrol;
+#P message 21 67 41 196617 help \$1;
+#P connect 3 0 2 0;
+#P connect 2 0 0 0;
+#P connect 0 0 1 0;
+#P pop;
+#P hidden newobj 60 274 54 196617 p openhelp;
+#N vpatcher 306 143 730 390;
+#P comment 132 137 195 196617 rotate buffer content symmetrically;
+#P message 67 137 52 196617 vasp.xrot;
+#P message 67 193 59 196617 vasp.xmirr;
+#P message 67 164 53 196617 vasp.mirr;
+#P message 67 110 45 196617 vasp.rot;
+#P message 67 81 59 196617 vasp.xshift;
+#P message 67 52 53 196617 vasp.shift;
+#P hidden newex 319 205 39 196617 s ohelp;
+#P comment 132 193 171 196617 mirrors a vasp symmetrically;
+#P comment 131 81 228 196617 shifts the buffer content symetrically;
+#P comment 132 164 171 196617 mirrors a vasp;
+#P comment 132 52 222 196617 shifts the buffer content;
+#P comment 132 110 100 196617 rotate buffer content;
+#P comment 43 23 131 196622 vasp.displace;
+#P hidden connect 11 0 6 0;
+#P hidden connect 10 0 6 0;
+#P hidden connect 9 0 6 0;
+#P hidden connect 8 0 6 0;
+#P hidden connect 7 0 6 0;
+#P hidden connect 12 0 6 0;
+#P pop;
+#P newobj 60 178 75 196617 p vasp.displace;
+#N vpatcher 531 93 1020 661;
+#P origin 0 41;
+#P hidden newex 413 514 39 196617 s ohelp;
+#P message 62 522 51 196617 vasp.part;
+#P message 62 496 61 196617 vasp.gather;
+#P message 62 470 49 196617 vasp.spit;
+#P message 62 444 49 196617 vasp.join;
+#P message 62 418 52 196617 vasp.split;
+#P message 62 392 70 196617 vasp.frames?;
+#P message 62 366 70 196617 vasp.frames+;
+#P message 62 340 64 196617 vasp.frames;
+#P message 62 314 55 196617 vasp.offs?;
+#P message 62 288 55 196617 vasp.offs+;
+#P message 62 262 50 196617 vasp.offs;
+#P message 62 236 43 196617 vasp.n?;
+#P message 62 210 35 196617 vasp.n;
+#P message 62 184 40 196617 vasp.m;
+#P message 62 158 61 196617 vasp.update;
+#P message 62 132 53 196617 vasp.sync;
+#P message 62 106 45 196617 vasp.chk;
+#P message 62 80 44 196617 vasp.??;
+#P message 62 54 38 196617 vasp.?;
+#P comment 134 80 225 196617 output all non zero samples of a vasp as list;
+#P comment 134 496 252 196617 gather several vasps into one;
+#P comment 134 418 252 196617 split a vasp into its vectors;
+#P comment 134 470 252 196617 spit out vectors of a vasp (one vector after the other);
+#P comment 134 444 252 196617 join several vasps into one;
+#P comment 134 392 252 196617 get a vasps frame count;
+#P comment 134 366 252 196617 raise/lower a vasps frame count;
+#P comment 134 340 252 196617 set a vasps frame count;
+#P comment 134 314 252 196617 get a single vectored vasp«s offset(s) into the buffer;
+#P comment 134 288 252 196617 shift a vasp«s offset(s) into the vector buffers;
+#P comment 134 262 252 196617 set a vasp«s offset(s) into the vector buffers;
+#P comment 134 236 252 196617 get the number vectors of a vasp;
+#P comment 134 210 252 196617 get a vector of a vasp;
+#P comment 134 184 252 196617 output a vasp multiply;
+#P comment 134 54 186 196617 output the samples of a vasp as list;
+#P comment 134 106 110 196617 check vasp dimensions;
+#P comment 134 132 246 196617 sync 2 or more vasps;
+#P comment 134 158 252 196617 update the graphics of a patcher (e.g. waveform);
+#P comment 134 522 238 196617 output vasps with different lengths and offsets;
+#P comment 27 22 135 196622 define_vasps;
+#P hidden connect 22 0 39 0;
+#P hidden connect 38 0 39 0;
+#P hidden connect 37 0 39 0;
+#P hidden connect 36 0 39 0;
+#P hidden connect 35 0 39 0;
+#P hidden connect 34 0 39 0;
+#P hidden connect 33 0 39 0;
+#P hidden connect 32 0 39 0;
+#P hidden connect 31 0 39 0;
+#P hidden connect 30 0 39 0;
+#P hidden connect 29 0 39 0;
+#P hidden connect 28 0 39 0;
+#P hidden connect 27 0 39 0;
+#P hidden connect 26 0 39 0;
+#P hidden connect 25 0 39 0;
+#P hidden connect 24 0 39 0;
+#P hidden connect 23 0 39 0;
+#P hidden connect 21 0 39 0;
+#P hidden connect 20 0 39 0;
+#P pop;
+#P newobj 60 65 75 196617 p define_vasps;
+#N vpatcher 463 267 1141 534;
+#P message 63 228 52 196617 vasp.xtilt;
+#P comment 130 229 165 196617 symmetrical resampling;
+#P message 64 204 45 196617 vasp.tilt;
+#P comment 129 205 165 196617 resampling;
+#P message 279 81 60 196617 vasp.cnorm;
+#P message 483 109 70 196617 vasp.rvalleys;
+#P message 483 137 62 196617 vasp.rpeaks;
+#P message 483 81 51 196617 vasp.ropt;
+#P comment 559 109 83 196617 radius valleys;
+#P comment 559 137 83 196617 radius peaks;
+#P comment 559 81 83 196617 radius optimize;
+#P message 483 53 55 196617 vasp.rgate;
+#P comment 559 53 83 196617 radius gate;
+#P hidden newex 304 187 39 196617 s ohelp;
+#P message 64 165 60 196617 vasp.pwrap;
+#P message 64 137 55 196617 vasp.peaks;
+#P message 64 109 65 196617 vasp.valleys;
+#P message 64 81 45 196617 vasp.opt;
+#P message 64 53 51 196617 vasp.gate;
+#P comment 129 165 165 196617 wraps value from 0-2¹ to -¹ to ¹;
+#P comment 129 137 100 196617 local peaks of a vasp;
+#P comment 129 109 123 196617 local minima of a vasp;
+#P comment 129 81 134 196617 optimize buffer content;
+#P comment 129 53 171 196617 gates vasp under a value (amplitude);
+#P comment 26 25 144 196622 vasp_utilities;
+#P comment 341 81 125 196617 sets complex radius of all samples to unity;
+#P hidden connect 25 0 12 0;
+#P hidden connect 23 0 12 0;
+#P hidden connect 20 0 12 0;
+#P hidden connect 19 0 12 0;
+#P hidden connect 18 0 12 0;
+#P hidden connect 14 0 12 0;
+#P hidden connect 10 0 12 0;
+#P hidden connect 9 0 12 0;
+#P hidden connect 8 0 12 0;
+#P hidden connect 7 0 12 0;
+#P hidden connect 21 0 12 0;
+#P hidden connect 11 0 12 0;
+#P pop;
+#P newobj 60 246 75 196617 p vasp.utilities;
+#N vpatcher 195 285 765 547;
+#P origin 0 24;
+#P message 352 208 53 196617 vasp.rmin;
+#P message 352 182 55 196617 vasp.rmax;
+#P comment 426 208 83 196617 radius minimum;
+#P comment 426 182 83 196617 radius maximum;
+#P hidden newex 309 229 39 196617 s ohelp;
+#P message 63 208 48 196617 vasp.min;
+#P message 63 182 51 196617 vasp.max;
+#P message 63 156 55 196617 vasp.max?;
+#P message 63 130 54 196617 vasp.min?;
+#P message 63 104 62 196617 vasp.amax?;
+#P message 63 78 59 196617 vasp.amin?;
+#P message 352 156 62 196617 vasp.rmax?;
+#P message 352 130 59 196617 vasp.rmin?;
+#P message 63 52 65 196617 vasp.minmax;
+#P comment 139 208 171 196617 minimum of vasp and argument;
+#P comment 139 182 171 196617 maximum of vasp and argument;
+#P comment 139 130 131 196617 output min. value of a vasp;
+#P comment 139 156 131 196617 output max. value of a vasp;
+#P comment 139 104 172 196617 output max. absolute value of a vasp;
+#P comment 139 78 204 196617 output min. absolute value of a vasp;
+#P comment 426 156 99 196617 radius max. value;
+#P comment 426 130 96 196617 radius min. value;
+#P comment 139 54 228 196617 splits a vasp into minimum and maximum values;
+#P comment 27 23 140 196622 vasp_minmax_etc.;
+#P hidden connect 23 0 19 0;
+#P hidden connect 22 0 19 0;
+#P hidden connect 18 0 19 0;
+#P hidden connect 17 0 19 0;
+#P hidden connect 16 0 19 0;
+#P hidden connect 15 0 19 0;
+#P hidden connect 14 0 19 0;
+#P hidden connect 13 0 19 0;
+#P hidden connect 12 0 19 0;
+#P hidden connect 11 0 19 0;
+#P hidden connect 10 0 19 0;
+#P pop;
+#P newobj 60 223 98 196617 p vasp.minmax_etc.;
+#N vpatcher 480 321 1117 575;
+#P origin 0 27;
+#P comment 292 137 98 196617 complex sample^2;
+#P comment 292 112 148 196617 complex integer power function;
+#P comment 121 162 98 196617 square root;
+#P comment 121 188 87 196617 signed sample^2;
+#P message 230 112 58 196617 vasp.cpowi;
+#P message 230 137 52 196617 vasp.csqr;
+#P message 61 214 55 196617 vasp.ssqrt;
+#P message 61 188 52 196617 vasp.ssqr;
+#P message 61 162 51 196617 vasp.sqrt;
+#P message 61 137 45 196617 vasp.sqr;
+#P message 61 112 50 196617 vasp.pow;
+#P comment 121 214 98 196617 signed square root;
+#P comment 121 112 48 196617 samps^x;
+#P comment 121 137 70 196617 sample^2;
+#P message 448 112 55 196617 vasp.rpow;
+#P comment 504 112 112 196617 radius power function;
+#P hidden newex 346 206 39 196617 s ohelp;
+#P message 61 85 45 196617 vasp.log;
+#P message 61 55 48 196617 vasp.exp;
+#P comment 121 85 86 196617 logarithm;
+#P comment 121 55 84 196617 exponential;
+#P comment 27 22 143 196622 vasp_transcendent;
+#P hidden connect 3 0 5 0;
+#P hidden connect 4 0 5 0;
+#P hidden connect 11 0 5 0;
+#P hidden connect 12 0 5 0;
+#P hidden connect 13 0 5 0;
+#P hidden connect 14 0 5 0;
+#P hidden connect 15 0 5 0;
+#P hidden connect 17 0 5 0;
+#P hidden connect 16 0 5 0;
+#P hidden connect 7 0 5 0;
+#P pop;
+#P newobj 60 201 98 196617 p vasp.transcendent;
+#N vpatcher 508 79 1002 585;
+#P origin 0 26;
+#P message 251 114 45 196617 vasp.c!-;
+#P comment 125 112 100 196617 reverse subtraction;
+#P message 62 112 40 196617 vasp.!-;
+#P comment 126 439 100 196617 integral function;
+#P comment 126 462 100 196617 differential function;
+#P message 63 462 44 196617 vasp.dif;
+#P message 63 439 44 196617 vasp.int;
+#P message 336 70 43 196617 vasp.r+;
+#P comment 385 70 83 196617 radius offset;
+#P message 252 182 45 196617 vasp.c!/;
+#P comment 126 181 100 196617 reverse division;
+#P message 63 181 41 196617 vasp.!/;
+#P message 252 205 43 196617 vasp.c=;
+#P message 252 160 43 196617 vasp.c/;
+#P message 252 136 44 196617 vasp.c*;
+#P message 251 92 42 196617 vasp.c-;
+#P message 251 70 43 196617 vasp.c+;
+#P hidden newex 417 333 39 196617 s ohelp;
+#P message 63 416 50 196617 vasp.sign;
+#P message 63 394 41 196617 vasp.%;
+#P message 63 373 45 196617 vasp.abs;
+#P message 63 350 41 196617 vasp.!=;
+#P message 63 327 44 196617 vasp.==;
+#P message 63 304 43 196617 vasp.>=;
+#P message 63 280 43 196617 vasp.<=;
+#P message 63 256 35 196617 vasp.>;
+#P message 63 232 35 196617 vasp.<;
+#P message 63 207 38 196617 vasp.=;
+#P message 63 159 38 196617 vasp./;
+#P message 63 135 39 196617 vasp.*;
+#P message 62 92 35 196617 vasp.-;
+#P message 62 70 38 196617 vasp.+;
+#P comment 126 304 100 196617 vasp >= x;
+#P comment 126 280 100 196617 vasp >= x;
+#P comment 126 256 100 196617 vasp > x;
+#P comment 126 232 100 196617 vasp < x;
+#P comment 126 327 58 196617 equal to;
+#P comment 126 135 100 196617 multiplication;
+#P comment 126 159 100 196617 division;
+#P comment 125 92 100 196617 subtraction;
+#P comment 126 350 58 196617 not equal to;
+#P comment 126 394 158 196617 modulo (remainder of a division);
+#P comment 126 373 128 196617 absolute value of a vasp;
+#P comment 125 70 100 196617 addition;
+#P comment 251 49 73 196617 complex ....;
+#P comment 27 24 151 196622 vasp_arithmetic;
+#P comment 126 207 100 196617 vasp = x;
+#P comment 126 416 204 196617 values < 0 become -1 | values > 0 become 1;
+#P comment 336 49 100 196617 radius ....;
+#P hidden connect 43 0 31 0;
+#P hidden connect 42 0 31 0;
+#P hidden connect 41 0 31 0;
+#P hidden connect 39 0 31 0;
+#P hidden connect 37 0 31 0;
+#P hidden connect 36 0 31 0;
+#P hidden connect 35 0 31 0;
+#P hidden connect 34 0 31 0;
+#P hidden connect 33 0 31 0;
+#P hidden connect 32 0 31 0;
+#P hidden connect 30 0 31 0;
+#P hidden connect 29 0 31 0;
+#P hidden connect 28 0 31 0;
+#P hidden connect 27 0 31 0;
+#P hidden connect 26 0 31 0;
+#P hidden connect 25 0 31 0;
+#P hidden connect 23 0 31 0;
+#P hidden connect 21 0 31 0;
+#P hidden connect 19 0 31 0;
+#P hidden connect 18 0 31 0;
+#P hidden connect 17 0 31 0;
+#P hidden connect 20 0 31 0;
+#P hidden connect 22 0 31 0;
+#P hidden connect 24 0 31 0;
+#P hidden connect 46 0 31 0;
+#P hidden connect 48 0 31 0;
+#P pop;
+#P newobj 60 109 85 196617 p vasp.arithmetic;
+#N vpatcher 528 390 958 618;
+#P origin 25 0;
+#P message 234 86 52 196617 vasp.r!fft;
+#P message 234 59 49 196617 vasp.rfft;
+#P message 64 133 55 196617 vasp.polar;
+#P message 64 86 52 196617 vasp.c!fft;
+#P message 64 59 49 196617 vasp.cfft;
+#P hidden newex 309 192 39 196617 s ohelp;
+#P comment 121 133 238 196617 changes between cartesian and polar representation;
+#P comment 287 86 114 196617 inverse real fft;
+#P comment 121 59 100 196617 complex fft;
+#P comment 121 86 100 196617 inverse complex fft;
+#P comment 287 59 100 196617 real fft;
+#P comment 26 22 135 196622 vasp_fftobjects;
+#P comment 121 177 238 196617 changes between polar and cartesian representation;
+#P message 64 177 51 196617 vasp.rect;
+#P hidden fasten 11 0 8 0 69 161 314 161;
+#P hidden fasten 10 0 8 0 69 113 314 113;
+#P hidden fasten 9 0 8 0 69 78 314 78;
+#P hidden fasten 0 0 8 0 69 198 314 198;
+#P hidden fasten 12 0 8 0 239 113 314 113;
+#P hidden fasten 13 0 8 0 239 77 314 77;
+#P pop;
+#P newobj 60 87 85 196617 p vasp.fftobjects;
+#N vpatcher 506 170 738 299;
+#P origin 0 12;
+#P hidden newex 149 90 39 196617 s ohelp;
+#P message 65 79 44 196617 vasp.flp;
+#P message 65 53 45 196617 vasp.fhp;
+#P comment 116 79 100 196617 low pass;
+#P comment 116 53 100 196617 high pass;
+#P comment 24 21 117 196622 vasp_filters;
+#P hidden connect 4 0 5 0;
+#P hidden connect 3 0 5 0;
+#P pop;
+#P newobj 60 155 69 196617 p vasp.filters;
+#N vpatcher 193 174 800 440;
+#P origin 0 -227;
+#P hidden newex 371 208 39 196617 s ohelp;
+#P message 422 192 59 196617 vasp.*cosc;
+#P message 422 169 65 196617 vasp.*!bevel;
+#P message 422 146 63 196617 vasp.*bevel;
+#P message 422 100 69 196617 vasp.*phasor;
+#P message 422 77 54 196617 vasp.*osc;
+#P message 60 214 60 196617 vasp.cnoise;
+#P message 60 191 52 196617 vasp.cosc;
+#P message 60 168 59 196617 vasp.!bevel;
+#P message 60 145 55 196617 vasp.bevel;
+#P message 60 122 55 196617 vasp.noise;
+#P message 60 99 62 196617 vasp.phasor;
+#P message 60 76 45 196617 vasp.osc;
+#P comment 60 56 126 196617 generate .....;
+#P comment 128 169 120 196617 vasp ramp from 1- 0;
+#P comment 128 145 120 196617 vasp ramp from 0 - 1;
+#P comment 128 121 120 196617 vasp noise generator;
+#P comment 128 98 120 196617 vasp saw tooth generator;
+#P comment 128 75 126 196617 vasp sine wave generator;
+#P comment 292 59 283 196617 multiplies a buffer content with the oscillator functions ...;
+#P comment 128 217 140 196617 complex noise;
+#P comment 128 192 140 196617 complex sine wave;
+#P comment 26 22 138 196622 vasp_generators;
+#P hidden connect 21 0 22 0;
+#P hidden connect 20 0 22 0;
+#P hidden connect 19 0 22 0;
+#P hidden connect 18 0 22 0;
+#P hidden connect 17 0 22 0;
+#P hidden connect 16 0 22 0;
+#P hidden connect 15 0 22 0;
+#P hidden connect 14 0 22 0;
+#P hidden connect 13 0 22 0;
+#P hidden connect 12 0 22 0;
+#P hidden connect 11 0 22 0;
+#P hidden connect 10 0 22 0;
+#P pop;
+#P newobj 60 132 89 196617 p vasp.generators;
+#P comment 25 23 121 196622 vasp_objects;
+#P pop;
+#P newobj 301 248 49 196617 p objects;
+#P comment 45 152 478 196617 vasp objects are using a specialized message syntax for all objects to refer to a buffer or a part of it.;
+#N vpatcher 120 60 880 570;
+#P origin 0 97;
+#P comment 104 1341 139 196617 set all samples of buf5/6 to 0;
+#P message 246 1340 75 196617 vasp buf5 buf6;
+#P newex 246 1382 61 196617 vasp.update;
+#P newex 246 1360 45 196617 vasp.= 0;
+#P comment 38 1289 207 196617 and modulate the noise with a 4Hz sine wave;
+#P newex 246 1206 55 196617 vasp.* 0.5;
+#P hidden newex 494 37 45 196617 loadbang;
+#P comment 725 1385 13 196620 |||;
+#P newex 517 1384 92 196617 buffer~ buf6 2000;
+#P newex 517 1364 92 196617 buffer~ buf5 2000;
+#P newex 518 1122 92 196617 buffer~ buf4 2000;
+#P newex 504 848 92 196617 buffer~ buf3 2000;
+#P newex 504 828 92 196617 buffer~ buf2 2000;
+#P newex 501 414 92 196617 buffer~ buf1 2000;
+#P hidden newex 373 599 45 196617 loadbang;
+#P hidden message 494 57 205 196617 window size 120 60 880 570 \, window exec;
+#N thispatcher;
+#Q end;
+#P hidden newobj 494 75 59 196617 thispatcher;
+#P comment 555 1273 63 196617 buffer buf6;
+#P comment 554 1180 63 196617 buffer buf5;
+#P comment 94 1158 37 196617 - to:;
+#P comment 115 1076 127 196617 set all samples of buf1 to 0;
+#P comment 553 1030 63 196617 buffer buf4;
+#P message 246 1268 115 196617 to vasp buf6 \, vasp buf5;
+#P newex 246 1311 61 196617 vasp.update;
+#P newex 246 1287 85 196617 vasp.*osc 11025;
+#P newex 246 1228 61 196617 vasp.update;
+#P newex 246 1184 55 196617 vasp.noise;
+#P message 246 1074 52 196617 vasp buf4;
+#P newex 246 1116 61 196617 vasp.update;
+#P newex 246 1094 45 196617 vasp.= 0;
+#P hidden message 387 1271 45 196617 set buf6;
+#P user waveform~ 387 1287 223 74 3 9;
+#W mode none;
+#W mouseoutput none;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P hidden newex 387 1158 45 196617 loadbang;
+#P hidden message 387 1177 45 196617 set buf5;
+#P user waveform~ 387 1195 223 74 3 9;
+#W mode none;
+#W mouseoutput none;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P button 193 993 15 0;
+#P hidden newex 387 1002 45 196617 loadbang;
+#P hidden message 387 1029 45 196617 set buf4;
+#P newex 246 1049 61 196617 vasp.update;
+#P newex 246 1024 80 196617 vasp.osc 22050;
+#P user waveform~ 387 1045 223 74 3 9;
+#W mode none;
+#W mouseoutput none;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P comment 539 737 63 196617 buffer buf3;
+#P comment 534 644 63 196617 buffer buf2;
+#P comment 536 324 57 196617 buffer buf1;
+#P comment 117 748 112 196617 set all samples of buf1 and buf2 to 0;
+#P message 231 750 75 196617 vasp buf2 buf3;
+#P newex 231 788 61 196617 vasp.update;
+#P newex 231 768 45 196617 vasp.= 0;
+#P newex 228 705 61 196617 vasp.update;
+#P newex 228 680 80 196617 vasp.osc 22050;
+#P comment 92 375 127 196617 set all samples of buf1 to 0;
+#P comment 92 320 135 196617 generate a sine wave at 2Hz;
+#P message 229 376 55 196617 vasp buf1;
+#P newex 229 414 61 196617 vasp.update;
+#P newex 229 394 45 196617 vasp.= 0;
+#P hidden message 373 734 45 196617 set buf3;
+#P user waveform~ 373 751 223 74 3 9;
+#W mode none;
+#W mouseoutput none;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P hidden message 373 641 45 196617 set buf2;
+#P hidden newex 373 620 35 196617 del 10;
+#P user waveform~ 373 659 223 74 3 9;
+#W mode none;
+#W mouseoutput none;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 228 343 61 196617 vasp.update;
+#P newex 228 318 80 196617 vasp.osc 22050;
+#P hidden message 370 319 45 196617 set buf1;
+#P hidden newex 370 299 45 196617 loadbang;
+#P user waveform~ 370 338 223 74 3 9;
+#W mode none;
+#W mouseoutput none;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P comment 117 1270 127 196617 sets the target buffer buf6;
+#P message 246 1158 52 196617 vasp buf5;
+#P comment 379 202 117 196617 (default 0);
+#P comment 351 993 214 196617 sets the message \, bang triggers the operation;
+#P comment 63 958 198 196622 additional vasp messages:;
+#P message 246 993 102 196617 set vasp 44100 buf4;
+#P comment 130 868 502 196617 a vasp message can contain as many vectors as you like \, but all vectors have the same length;
+#P comment 391 570 281 196617 refering 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;
+#P message 228 573 159 196617 vasp 44100 buf2 0 0 buf3 22050;
+#P comment 92 574 135 196617 two vectored vasp message:;
+#P comment 92 527 395 196617 all vectors have the same length \, but the vectors can differ in the buffers and offsets;
+#P comment 74 497 269 196617 - if a vasp message contains more than one vector:;
+#P comment 296 226 117 196617 (default 0);
+#P comment 354 270 284 196617 refering to buffer buf1 from 0.5 sec to 1.5 sec on channel 0;
+#P message 228 269 125 196617 vasp 44100 buf1 22050 0;
+#P comment 92 271 135 196617 one vectored vasp message:;
+#P comment 379 153 141 196617 which does the same.;
+#P message 336 151 43 196617 vasp -1;
+#P comment 92 153 192 196617 if missing \, it refers to the whole buffer;
+#P message 169 225 125 196617 vasp 44100 buf1 22050 0;
+#P comment 92 226 75 196617 and the channel;
+#P message 258 201 118 196617 vasp 44100 buf1 22050;
+#P comment 92 202 138 196617 an optional offset in samples;
+#P message 258 179 85 196617 vasp 44100 buf1;
+#P comment 92 180 164 196617 the name of the buffer it refers to;
+#P message 271 131 62 196617 vasp 44100;
+#P comment 92 134 173 196617 followed by the length in samples;
+#P message 214 110 31 196617 vasp;
+#P comment 63 43 158 196622 the vasp message:;
+#P comment 63 1 124 196622 vasp_syntax;
+#P comment 74 85 362 196617 - a vasp message is structured by the following parts:;
+#P comment 92 112 113 196617 it always starts with;
+#P comment 291 153 41 196617 or type;
+#P comment 94 993 37 196617 - set:;
+#P comment 725 473 14 196620 |;
+#P comment 725 934 13 196620 ||;
+#P connect 21 0 39 0;
+#P connect 39 0 40 0;
+#P connect 27 0 51 0;
+#P connect 51 0 52 0;
+#P connect 48 0 46 0;
+#P connect 46 0 47 0;
+#P connect 55 0 53 0;
+#P connect 53 0 54 0;
+#P connect 30 0 61 0;
+#P fasten 65 0 61 0 198 1014 251 1014;
+#P connect 61 0 62 0;
+#P connect 73 0 71 0;
+#P connect 71 0 72 0;
+#P connect 34 0 74 0;
+#P connect 74 0 95 0;
+#P connect 95 0 75 0;
+#P connect 78 0 76 0;
+#P connect 76 0 77 0;
+#P connect 99 0 97 0;
+#P connect 97 0 98 0;
+#P hidden connect 37 0 38 0;
+#P hidden connect 38 0 36 0;
+#P hidden connect 86 0 42 0;
+#P hidden connect 42 0 43 0;
+#P hidden connect 43 0 41 0;
+#P hidden connect 42 0 45 0;
+#P hidden connect 45 0 44 0;
+#P hidden connect 64 0 63 0;
+#P hidden connect 63 0 60 0;
+#P hidden connect 68 0 67 0;
+#P hidden connect 67 0 66 0;
+#P hidden connect 68 0 70 0;
+#P hidden connect 70 0 69 0;
+#P hidden connect 94 0 85 0;
+#P hidden connect 85 0 84 0;
+#P pop;
+#P newobj 134 248 45 196617 p syntax;
+#P comment 25 41 148 196622 vasp_modular.help;
+#P comment 45 120 354 196617 vasp is a library of objects for max/msp and pd \,;
+#P comment 45 348 432 196617 inspired by gŸnther rabl«s fft-box and tool-box. find gŸnther rabl at www.canto-crudo.com;
+#P comment 45 75 362 196620 vasp modular - vector assembling signal processor ©2002 thomas grill;
+#P comment 45 365 470 196617 vasp.help patches by florian bogner and oliver grimm - ©2002 patcherboys - www.patcherboys.com;
+#P comment 45 168 570 196617 these help patches should give you an idea of what is possible. feel free to combine different patches to more complex ones.;
+#P hidden connect 18 0 20 0;
+#P hidden connect 17 0 16 0;
+#P hidden connect 20 0 19 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.int.help b/externals/grill/vasp/max-help/vasp.int.help
index 68a08fc3..255494e2 100755
--- a/externals/grill/vasp/max-help/vasp.int.help
+++ b/externals/grill/vasp/max-help/vasp.int.help
@@ -1 +1,93 @@
-max v2; #N vpatcher 270 159 881 476; #P newex 46 237 45 196617 vasp.opt; #P message 404 216 58 196617 vasp bufint; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 404 237 73 196617 p clear_buffer; #P comment 38 75 131 196617 argument: repetition count; #P newex 46 158 61 196617 vasp.update; #P comment 38 58 131 196617 vasp integral function; #P message 46 188 58 196617 vasp bufint; #P newex 46 211 44 196617 vasp.int; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 268 31 49 196617 p wfkeys; #P hidden message 268 77 51 196617 set bufint; #P hidden newex 268 53 45 196617 loadbang; #P user waveform~ 268 104 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 46 262 61 196617 vasp.update; #P message 46 104 58 196617 vasp bufint; #P newex 482 237 98 196617 buffer~ bufint 2000; #P newex 46 131 55 196617 vasp.bevel; #P comment 38 34 89 196622 vasp.int; #P connect 3 0 1 0; #P connect 1 0 12 0; #P connect 10 0 9 0; #P connect 9 0 16 0; #P connect 16 0 4 0; #P hidden connect 6 0 7 0; #P hidden connect 8 0 5 0; #P hidden connect 7 0 5 0; #P connect 15 0 14 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 270 159 881 476;
+#P newex 46 237 45 196617 vasp.opt;
+#P message 404 216 58 196617 vasp bufint;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 404 237 73 196617 p clear_buffer;
+#P comment 38 75 131 196617 argument: repetition count;
+#P newex 46 158 61 196617 vasp.update;
+#P comment 38 58 131 196617 vasp integral function;
+#P message 46 188 58 196617 vasp bufint;
+#P newex 46 211 44 196617 vasp.int;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 268 31 49 196617 p wfkeys;
+#P hidden message 268 77 51 196617 set bufint;
+#P hidden newex 268 53 45 196617 loadbang;
+#P user waveform~ 268 104 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 46 262 61 196617 vasp.update;
+#P message 46 104 58 196617 vasp bufint;
+#P newex 482 237 98 196617 buffer~ bufint 2000;
+#P newex 46 131 55 196617 vasp.bevel;
+#P comment 38 34 89 196622 vasp.int;
+#P connect 3 0 1 0;
+#P connect 1 0 12 0;
+#P connect 10 0 9 0;
+#P connect 9 0 16 0;
+#P connect 16 0 4 0;
+#P hidden connect 6 0 7 0;
+#P hidden connect 8 0 5 0;
+#P hidden connect 7 0 5 0;
+#P connect 15 0 14 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.join.help b/externals/grill/vasp/max-help/vasp.join.help
index 77e26424..ba53ca5c 100755
--- a/externals/grill/vasp/max-help/vasp.join.help
+++ b/externals/grill/vasp/max-help/vasp.join.help
@@ -1 +1,31 @@
-max v2; #N vpatcher 235 91 615 568; #P hidden message 310 213 22 196617 set; #P hidden newex 310 186 45 196617 loadbang; #P message 182 159 149 196617 vasp bufjoin1 bufjoin2 bufjoin3; #P newex 239 431 109 196617 buffer~ bufjoin3 2000; #P newex 239 409 109 196617 buffer~ bufjoin2 2000; #P newex 239 388 109 196617 buffer~ bufjoin1 2000; #P newex 111 215 60 196617 prepend set; #P message 111 239 237 196617; #P message 61 329 287 196617; #P newex 61 305 60 196617 prepend set; #P newex 61 191 61 196617 vasp.split 2; #P newex 61 282 58 196617 vasp.join 2; #P comment 51 62 137 196617 join several vasps into one; #P message 61 159 109 196617 vasp bufjoin1 bufjoin2; #P comment 51 39 89 196622 vasp.join; #P comment 51 78 164 196617 argument: number of vasps to join; #P comment 51 95 138 196617 left inlet triggers the output; #P fasten 14 0 6 0 187 179 66 179; #P connect 3 0 6 0; #P connect 6 0 5 0; #P connect 5 0 7 0; #P hidden fasten 16 0 8 0 315 326 66 326; #P connect 7 0 8 0; #P fasten 6 1 5 1 91 274 114 274; #P connect 6 2 10 0; #P connect 10 0 9 0; #P hidden fasten 16 0 9 0 315 234 116 234; #P hidden connect 15 0 16 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 235 91 615 568;
+#P hidden message 310 213 22 196617 set;
+#P hidden newex 310 186 45 196617 loadbang;
+#P message 182 159 149 196617 vasp bufjoin1 bufjoin2 bufjoin3;
+#P newex 239 431 109 196617 buffer~ bufjoin3 2000;
+#P newex 239 409 109 196617 buffer~ bufjoin2 2000;
+#P newex 239 388 109 196617 buffer~ bufjoin1 2000;
+#P newex 111 215 60 196617 prepend set;
+#P message 111 239 237 196617;
+#P message 61 329 287 196617;
+#P newex 61 305 60 196617 prepend set;
+#P newex 61 191 61 196617 vasp.split 2;
+#P newex 61 282 58 196617 vasp.join 2;
+#P comment 51 62 137 196617 join several vasps into one;
+#P message 61 159 109 196617 vasp bufjoin1 bufjoin2;
+#P comment 51 39 89 196622 vasp.join;
+#P comment 51 78 164 196617 argument: number of vasps to join;
+#P comment 51 95 138 196617 left inlet triggers the output;
+#P fasten 14 0 6 0 187 179 66 179;
+#P connect 3 0 6 0;
+#P connect 6 0 5 0;
+#P connect 5 0 7 0;
+#P hidden fasten 16 0 8 0 315 326 66 326;
+#P connect 7 0 8 0;
+#P fasten 6 1 5 1 91 274 114 274;
+#P connect 6 2 10 0;
+#P connect 10 0 9 0;
+#P hidden fasten 16 0 9 0 315 234 116 234;
+#P hidden connect 15 0 16 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.leq.help b/externals/grill/vasp/max-help/vasp.leq.help
index f31558a5..ab0aee34 100755
--- a/externals/grill/vasp/max-help/vasp.leq.help
+++ b/externals/grill/vasp/max-help/vasp.leq.help
@@ -1 +1,128 @@
-max v2; #N vpatcher 188 104 857 525; #P message 437 350 91 196617 vasp buf<= buf<=1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 437 373 78 196617 p clear_buffers; #P newex 59 327 61 196617 vasp.update; #P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 274 286 48 196617 0/false; #P comment 137 145 148 196617 generate a sine wave at 1Hz; #P message 59 145 55 196617 vasp buf<=; #P newex 59 191 61 196617 vasp.update; #P newex 59 168 80 196617 vasp.osc 44100; #P comment 137 229 100 196617 copy to new buffer; #P hidden message 321 219 55 196617 set buf<=1; #P user waveform~ 321 237 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 530 373 103 196617 buffer~ buf<=1 2000; #P comment 52 86 188 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 50 196617 set buf<=; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 296 65 196617 vasp.<= -0.4; #P message 59 228 63 196617 vasp buf<=1; #P newex 530 350 103 196617 buffer~ buf<= 2000; #P newex 59 249 65 196617 vasp.= buf<=; #P comment 52 71 83 196617 sample <= value; #P comment 52 48 89 196622 vasp.<=; #P comment 598 103 44 196617 source; #P comment 277 244 44 196617 1/true; #P connect 19 0 17 0; #P connect 17 0 18 0; #P connect 6 0 4 0; #P connect 4 0 7 0; #P connect 7 0 23 0; #P fasten 22 0 7 1 154 292 119 292; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 15 0; #P hidden connect 11 0 14 0; #P hidden connect 15 0 14 0; #P connect 25 0 24 0; #P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; #P hidden connect 8 5 14 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 188 104 857 525;
+#P message 437 350 91 196617 vasp buf<= buf<=1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 437 373 78 196617 p clear_buffers;
+#P newex 59 327 61 196617 vasp.update;
+#P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 274 286 48 196617 0/false;
+#P comment 137 145 148 196617 generate a sine wave at 1Hz;
+#P message 59 145 55 196617 vasp buf<=;
+#P newex 59 191 61 196617 vasp.update;
+#P newex 59 168 80 196617 vasp.osc 44100;
+#P comment 137 229 100 196617 copy to new buffer;
+#P hidden message 321 219 55 196617 set buf<=1;
+#P user waveform~ 321 237 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 530 373 103 196617 buffer~ buf<=1 2000;
+#P comment 52 86 188 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 50 196617 set buf<=;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 296 65 196617 vasp.<= -0.4;
+#P message 59 228 63 196617 vasp buf<=1;
+#P newex 530 350 103 196617 buffer~ buf<= 2000;
+#P newex 59 249 65 196617 vasp.= buf<=;
+#P comment 52 71 83 196617 sample <= value;
+#P comment 52 48 89 196622 vasp.<=;
+#P comment 598 103 44 196617 source;
+#P comment 277 244 44 196617 1/true;
+#P connect 19 0 17 0;
+#P connect 17 0 18 0;
+#P connect 6 0 4 0;
+#P connect 4 0 7 0;
+#P connect 7 0 23 0;
+#P fasten 22 0 7 1 154 292 119 292;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 15 0;
+#P hidden connect 11 0 14 0;
+#P hidden connect 15 0 14 0;
+#P connect 25 0 24 0;
+#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94;
+#P hidden connect 8 5 14 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.list.help b/externals/grill/vasp/max-help/vasp.list.help
index 53930f86..77081652 100755
--- a/externals/grill/vasp/max-help/vasp.list.help
+++ b/externals/grill/vasp/max-help/vasp.list.help
@@ -1 +1,85 @@
-max v2; #N vpatcher 89 186 906 488; #P origin 0 3; #P hidden message 380 52 22 196617 set; #P hidden newex 380 22 45 196617 loadbang; #P message 42 228 598 196617; #P newex 42 200 60 196617 prepend set; #P newex 42 172 38 196617 vasp.?; #P comment 39 54 238 196617 outputs the values of all samples of a vasp as list; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 435 21 49 196617 p wfkeys; #P newex 42 113 55 196617 vasp.bevel; #P hidden message 435 62 45 196617 set buf?; #P hidden newex 435 43 45 196617 loadbang; #P user waveform~ 435 80 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 42 139 61 196617 vasp.update; #P message 42 85 52 196617 vasp buf?; #P newex 664 228 83 196617 buffer~ buf? 0.3; #P comment 39 30 89 196622 vasp.?; #P connect 2 0 7 0; #P connect 7 0 3 0; #P connect 3 0 10 0; #P connect 10 0 11 0; #P connect 11 0 12 0; #P hidden fasten 14 0 12 0 385 220 47 220; #P hidden connect 13 0 14 0; #P hidden connect 5 0 6 0; #P hidden connect 6 0 4 0; #P hidden connect 8 0 4 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 89 186 906 488;
+#P origin 0 3;
+#P hidden message 380 52 22 196617 set;
+#P hidden newex 380 22 45 196617 loadbang;
+#P message 42 228 598 196617;
+#P newex 42 200 60 196617 prepend set;
+#P newex 42 172 38 196617 vasp.?;
+#P comment 39 54 238 196617 outputs the values of all samples of a vasp as list;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 435 21 49 196617 p wfkeys;
+#P newex 42 113 55 196617 vasp.bevel;
+#P hidden message 435 62 45 196617 set buf?;
+#P hidden newex 435 43 45 196617 loadbang;
+#P user waveform~ 435 80 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 42 139 61 196617 vasp.update;
+#P message 42 85 52 196617 vasp buf?;
+#P newex 664 228 83 196617 buffer~ buf? 0.3;
+#P comment 39 30 89 196622 vasp.?;
+#P connect 2 0 7 0;
+#P connect 7 0 3 0;
+#P connect 3 0 10 0;
+#P connect 10 0 11 0;
+#P connect 11 0 12 0;
+#P hidden fasten 14 0 12 0 385 220 47 220;
+#P hidden connect 13 0 14 0;
+#P hidden connect 5 0 6 0;
+#P hidden connect 6 0 4 0;
+#P hidden connect 8 0 4 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.log.help b/externals/grill/vasp/max-help/vasp.log.help
index 8ff6e0d7..a9d784e7 100755
--- a/externals/grill/vasp/max-help/vasp.log.help
+++ b/externals/grill/vasp/max-help/vasp.log.help
@@ -1 +1,8 @@
-max v2; #N vpatcher 200 142 489 314; #P origin 0 2; #P newex 124 111 45 196617 vasp.log; #P comment 45 57 189 196617 natural logarithm; #P comment 45 34 89 196622 vasp.log; #P comment 45 73 100 196617 ln(sample); #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 200 142 489 314;
+#P origin 0 2;
+#P newex 124 111 45 196617 vasp.log;
+#P comment 45 57 189 196617 natural logarithm;
+#P comment 45 34 89 196622 vasp.log;
+#P comment 45 73 100 196617 ln(sample);
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.lwr.help b/externals/grill/vasp/max-help/vasp.lwr.help
index 57e42b9d..a0d95c38 100755
--- a/externals/grill/vasp/max-help/vasp.lwr.help
+++ b/externals/grill/vasp/max-help/vasp.lwr.help
@@ -1 +1,128 @@
-max v2; #N vpatcher 147 90 816 511; #P message 451 352 84 196617 vasp buf<a buf<1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 451 373 78 196617 p clear_buffers; #P newex 59 327 61 196617 vasp.update; #P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 274 286 48 196617 0/false; #P comment 137 145 148 196617 generate a sine wave at 1Hz; #P message 59 145 51 196617 vasp buf<; #P newex 59 191 61 196617 vasp.update; #P newex 59 168 80 196617 vasp.osc 44100; #P comment 137 229 100 196617 copy to new buffer; #P hidden message 321 219 50 196617 set buf<1; #P user waveform~ 321 237 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 538 373 95 196617 buffer~ buf<1 2000; #P comment 52 86 188 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 44 196617 set buf<; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 296 60 196617 vasp.< -0.4; #P message 59 228 55 196617 vasp buf<1; #P newex 538 352 95 196617 buffer~ buf< 2000; #P newex 59 249 60 196617 vasp.= buf<; #P comment 52 71 83 196617 sample < value; #P comment 52 48 89 196622 vasp.<; #P comment 598 103 44 196617 source; #P comment 277 244 44 196617 1/true; #P connect 19 0 17 0; #P connect 17 0 18 0; #P connect 6 0 4 0; #P connect 4 0 7 0; #P connect 7 0 23 0; #P fasten 22 0 7 1 154 292 114 292; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 15 0; #P hidden connect 15 0 14 0; #P hidden connect 11 0 14 0; #P connect 25 0 24 0; #P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; #P hidden connect 8 5 14 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 147 90 816 511;
+#P message 451 352 84 196617 vasp buf<a buf<1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 451 373 78 196617 p clear_buffers;
+#P newex 59 327 61 196617 vasp.update;
+#P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 274 286 48 196617 0/false;
+#P comment 137 145 148 196617 generate a sine wave at 1Hz;
+#P message 59 145 51 196617 vasp buf<;
+#P newex 59 191 61 196617 vasp.update;
+#P newex 59 168 80 196617 vasp.osc 44100;
+#P comment 137 229 100 196617 copy to new buffer;
+#P hidden message 321 219 50 196617 set buf<1;
+#P user waveform~ 321 237 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 538 373 95 196617 buffer~ buf<1 2000;
+#P comment 52 86 188 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 44 196617 set buf<;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 296 60 196617 vasp.< -0.4;
+#P message 59 228 55 196617 vasp buf<1;
+#P newex 538 352 95 196617 buffer~ buf< 2000;
+#P newex 59 249 60 196617 vasp.= buf<;
+#P comment 52 71 83 196617 sample < value;
+#P comment 52 48 89 196622 vasp.<;
+#P comment 598 103 44 196617 source;
+#P comment 277 244 44 196617 1/true;
+#P connect 19 0 17 0;
+#P connect 17 0 18 0;
+#P connect 6 0 4 0;
+#P connect 4 0 7 0;
+#P connect 7 0 23 0;
+#P fasten 22 0 7 1 154 292 114 292;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 15 0;
+#P hidden connect 15 0 14 0;
+#P hidden connect 11 0 14 0;
+#P connect 25 0 24 0;
+#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94;
+#P hidden connect 8 5 14 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.max.help b/externals/grill/vasp/max-help/vasp.max.help
index 38e2f1d1..4bb318de 100755
--- a/externals/grill/vasp/max-help/vasp.max.help
+++ b/externals/grill/vasp/max-help/vasp.max.help
@@ -1 +1,125 @@
-max v2; #N vpatcher 257 116 926 537; #P message 411 353 105 196617 vasp bufmax bufmax1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 411 373 78 196617 p clear_buffers; #P comment 140 145 148 196617 generate a sine wave at 1Hz; #P message 59 145 65 196617 vasp bufmax; #P newex 59 191 61 196617 vasp.update; #P newex 59 168 80 196617 vasp.osc 44100; #P newex 59 271 45 196617 vasp.abs; #P comment 140 229 100 196617 copy to new buffer; #P hidden message 321 219 64 196617 set bufmax1; #P user waveform~ 321 237 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 521 373 111 196617 buffer~ bufmax1 2000; #P comment 52 87 188 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 58 196617 set bufmax; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 297 69 196617 vasp.max 0.4; #P message 59 228 71 196617 vasp bufmax1; #P newex 521 353 111 196617 buffer~ bufmax 2000; #P newex 59 249 74 196617 vasp.= bufmax; #P comment 52 71 244 196617 take maximum of vasp and argument; #P comment 52 48 89 196622 vasp.max; #P comment 140 273 100 196617 find absolute values; #P comment 598 103 44 196617 source; #P connect 20 0 18 0; #P connect 18 0 19 0; #P connect 6 0 4 0; #P connect 4 0 17 0; #P connect 17 0 7 0; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 627 371 638 371 638 94 326 94; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 15 0; #P hidden connect 11 0 14 0; #P hidden connect 15 0 14 0; #P connect 23 0 22 0; #P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; #P hidden connect 8 5 14 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 257 116 926 537;
+#P message 411 353 105 196617 vasp bufmax bufmax1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 411 373 78 196617 p clear_buffers;
+#P comment 140 145 148 196617 generate a sine wave at 1Hz;
+#P message 59 145 65 196617 vasp bufmax;
+#P newex 59 191 61 196617 vasp.update;
+#P newex 59 168 80 196617 vasp.osc 44100;
+#P newex 59 271 45 196617 vasp.abs;
+#P comment 140 229 100 196617 copy to new buffer;
+#P hidden message 321 219 64 196617 set bufmax1;
+#P user waveform~ 321 237 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 521 373 111 196617 buffer~ bufmax1 2000;
+#P comment 52 87 188 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 58 196617 set bufmax;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 297 69 196617 vasp.max 0.4;
+#P message 59 228 71 196617 vasp bufmax1;
+#P newex 521 353 111 196617 buffer~ bufmax 2000;
+#P newex 59 249 74 196617 vasp.= bufmax;
+#P comment 52 71 244 196617 take maximum of vasp and argument;
+#P comment 52 48 89 196622 vasp.max;
+#P comment 140 273 100 196617 find absolute values;
+#P comment 598 103 44 196617 source;
+#P connect 20 0 18 0;
+#P connect 18 0 19 0;
+#P connect 6 0 4 0;
+#P connect 4 0 17 0;
+#P connect 17 0 7 0;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 627 371 638 371 638 94 326 94;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 15 0;
+#P hidden connect 11 0 14 0;
+#P hidden connect 15 0 14 0;
+#P connect 23 0 22 0;
+#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94;
+#P hidden connect 8 5 14 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.maxq.help b/externals/grill/vasp/max-help/vasp.maxq.help
index 5c528e3d..bd33265f 100755
--- a/externals/grill/vasp/max-help/vasp.maxq.help
+++ b/externals/grill/vasp/max-help/vasp.maxq.help
@@ -1 +1,86 @@
-max v2; #N vpatcher 257 116 917 432; #P message 59 223 75 196617 vasp buffmax?; #P newex 59 182 55 196617 vasp.* 0.5; #P comment 168 274 100 196617 >>>> maximum value; #P flonum 104 274 60 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 52 101 188 196617 right outlet: max value; #P comment 140 139 148 196617 generate a sine wave at 1Hz; #P message 59 139 75 196617 vasp buffmax?; #P newex 59 201 61 196617 vasp.update; #P newex 59 162 80 196617 vasp.osc 44100; #P comment 52 86 188 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 73 49 196617 p wfkeys; #P hidden message 321 119 68 196617 set buffmax?; #P hidden newex 321 95 45 196617 loadbang; #P user waveform~ 321 139 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 245 55 196617 vasp.max?; #P newex 507 274 120 196617 buffer~ buffmax? 2000; #P comment 52 71 200 196617 get maximum sample value of a vasp; #P comment 52 48 89 196622 vasp.max?; #P connect 11 0 9 0; #P connect 9 0 16 0; #P connect 16 0 10 0; #P connect 17 0 3 0; #P connect 3 1 14 0; #P hidden connect 5 0 6 0; #P hidden fasten 2 1 6 0 622 299 638 299 638 115 326 115; #P hidden connect 7 0 4 0; #P hidden connect 6 0 4 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 257 116 917 432;
+#P message 59 223 75 196617 vasp buffmax?;
+#P newex 59 182 55 196617 vasp.* 0.5;
+#P comment 168 274 100 196617 >>>> maximum value;
+#P flonum 104 274 60 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 52 101 188 196617 right outlet: max value;
+#P comment 140 139 148 196617 generate a sine wave at 1Hz;
+#P message 59 139 75 196617 vasp buffmax?;
+#P newex 59 201 61 196617 vasp.update;
+#P newex 59 162 80 196617 vasp.osc 44100;
+#P comment 52 86 188 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 73 49 196617 p wfkeys;
+#P hidden message 321 119 68 196617 set buffmax?;
+#P hidden newex 321 95 45 196617 loadbang;
+#P user waveform~ 321 139 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 245 55 196617 vasp.max?;
+#P newex 507 274 120 196617 buffer~ buffmax? 2000;
+#P comment 52 71 200 196617 get maximum sample value of a vasp;
+#P comment 52 48 89 196622 vasp.max?;
+#P connect 11 0 9 0;
+#P connect 9 0 16 0;
+#P connect 16 0 10 0;
+#P connect 17 0 3 0;
+#P connect 3 1 14 0;
+#P hidden connect 5 0 6 0;
+#P hidden fasten 2 1 6 0 622 299 638 299 638 115 326 115;
+#P hidden connect 7 0 4 0;
+#P hidden connect 6 0 4 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.mbeveldn.help b/externals/grill/vasp/max-help/vasp.mbeveldn.help
index 6e1cf8ca..c44f378a 100755
--- a/externals/grill/vasp/max-help/vasp.mbeveldn.help
+++ b/externals/grill/vasp/max-help/vasp.mbeveldn.help
@@ -1 +1,100 @@
-max v2; #N vpatcher 171 80 847 440; #P message 450 292 75 196617 vasp buf*bevel; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 450 312 73 196617 p clear_buffer; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 408 127 49 196617 p wfkeys; #P newex 41 245 61 196617 vasp.update; #P newex 332 150 61 196617 vasp.update; #P comment 483 103 150 196617 generate a 500 ms fade out; #P message 332 102 143 196617 vasp 22050 buf*bevel 66150; #P newex 332 127 65 196617 vasp.*!bevel; #P newex 41 155 55 196617 vasp.* 0.5; #P comment 160 199 142 196617 generate a 500 ms fade in; #P message 41 197 110 196617 vasp 22050 buf*bevel; #P newex 41 129 62 196617 vasp.osc 44; #P comment 332 53 215 196617 multiplies a linear ramp from 1 to 0 to a vasp; #P comment 332 29 126 196622 vasp.*!bevel; #P newex 41 222 63 196617 vasp.*bevel; #P hidden message 408 167 70 196617 set buf*bevel; #P hidden newex 408 150 45 196617 loadbang; #P user waveform~ 332 187 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 41 100 75 196617 vasp buf*bevel; #P newex 529 312 115 196617 buffer~ buf*bevel 2000; #P comment 38 53 213 196617 multiplies a linear ramp from 0 to 1 to a vasp; #P comment 38 29 125 196622 vasp.*bevel; #P comment 127 102 142 196617 generate a sine wave at 1kHz; #P connect 4 0 11 0; #P connect 11 0 14 0; #P connect 12 0 8 0; #P connect 8 0 19 0; #P connect 16 0 15 0; #P connect 15 0 18 0; #P hidden fasten 7 0 5 0 413 184 337 184; #P hidden fasten 20 0 5 0 413 186 337 186; #P hidden connect 6 0 7 0; #P connect 22 0 21 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 171 80 847 440;
+#P message 450 292 75 196617 vasp buf*bevel;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 450 312 73 196617 p clear_buffer;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 408 127 49 196617 p wfkeys;
+#P newex 41 245 61 196617 vasp.update;
+#P newex 332 150 61 196617 vasp.update;
+#P comment 483 103 150 196617 generate a 500 ms fade out;
+#P message 332 102 143 196617 vasp 22050 buf*bevel 66150;
+#P newex 332 127 65 196617 vasp.*!bevel;
+#P newex 41 155 55 196617 vasp.* 0.5;
+#P comment 160 199 142 196617 generate a 500 ms fade in;
+#P message 41 197 110 196617 vasp 22050 buf*bevel;
+#P newex 41 129 62 196617 vasp.osc 44;
+#P comment 332 53 215 196617 multiplies a linear ramp from 1 to 0 to a vasp;
+#P comment 332 29 126 196622 vasp.*!bevel;
+#P newex 41 222 63 196617 vasp.*bevel;
+#P hidden message 408 167 70 196617 set buf*bevel;
+#P hidden newex 408 150 45 196617 loadbang;
+#P user waveform~ 332 187 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 41 100 75 196617 vasp buf*bevel;
+#P newex 529 312 115 196617 buffer~ buf*bevel 2000;
+#P comment 38 53 213 196617 multiplies a linear ramp from 0 to 1 to a vasp;
+#P comment 38 29 125 196622 vasp.*bevel;
+#P comment 127 102 142 196617 generate a sine wave at 1kHz;
+#P connect 4 0 11 0;
+#P connect 11 0 14 0;
+#P connect 12 0 8 0;
+#P connect 8 0 19 0;
+#P connect 16 0 15 0;
+#P connect 15 0 18 0;
+#P hidden fasten 7 0 5 0 413 184 337 184;
+#P hidden fasten 20 0 5 0 413 186 337 186;
+#P hidden connect 6 0 7 0;
+#P connect 22 0 21 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.mbevelup.help b/externals/grill/vasp/max-help/vasp.mbevelup.help
index 29933d13..5d36531e 100755
--- a/externals/grill/vasp/max-help/vasp.mbevelup.help
+++ b/externals/grill/vasp/max-help/vasp.mbevelup.help
@@ -1 +1,100 @@
-max v2; #N vpatcher 180 143 862 501; #P message 454 290 75 196617 vasp buf*bevel; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 454 310 73 196617 p clear_buffer; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 409 127 49 196617 p wfkeys; #P newex 41 245 61 196617 vasp.update; #P newex 332 150 61 196617 vasp.update; #P comment 483 104 150 196617 generate a 500 ms fade out; #P message 332 102 143 196617 vasp 22050 buf*bevel 66150; #P newex 332 127 65 196617 vasp.*!bevel; #P newex 41 155 55 196617 vasp.* 0.5; #P comment 160 199 142 196617 generate a 500 ms fade in; #P message 41 197 110 196617 vasp 22050 buf*bevel; #P newex 41 129 62 196617 vasp.osc 44; #P comment 332 53 215 196617 multiplies a linear ramp from 1 to 0 to a vasp; #P comment 332 29 126 196622 vasp.*!bevel; #P newex 41 222 63 196617 vasp.*bevel; #P hidden message 409 168 70 196617 set buf*bevel; #P hidden newex 409 150 45 196617 loadbang; #P user waveform~ 332 185 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 41 100 75 196617 vasp buf*bevel; #P newex 529 310 115 196617 buffer~ buf*bevel 2000; #P comment 38 53 213 196617 multiplies a linear ramp from 0 to 1 to a vasp; #P comment 38 29 112 196622 vasp.*bevel; #P comment 127 102 144 196617 generate a sine wave at 1khz; #P connect 4 0 11 0; #P connect 11 0 14 0; #P connect 12 0 8 0; #P connect 8 0 19 0; #P connect 16 0 15 0; #P connect 15 0 18 0; #P hidden fasten 20 0 5 0 414 184 337 184; #P hidden fasten 7 0 5 0 414 183 337 183; #P hidden connect 6 0 7 0; #P connect 22 0 21 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 180 143 862 501;
+#P message 454 290 75 196617 vasp buf*bevel;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 454 310 73 196617 p clear_buffer;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 409 127 49 196617 p wfkeys;
+#P newex 41 245 61 196617 vasp.update;
+#P newex 332 150 61 196617 vasp.update;
+#P comment 483 104 150 196617 generate a 500 ms fade out;
+#P message 332 102 143 196617 vasp 22050 buf*bevel 66150;
+#P newex 332 127 65 196617 vasp.*!bevel;
+#P newex 41 155 55 196617 vasp.* 0.5;
+#P comment 160 199 142 196617 generate a 500 ms fade in;
+#P message 41 197 110 196617 vasp 22050 buf*bevel;
+#P newex 41 129 62 196617 vasp.osc 44;
+#P comment 332 53 215 196617 multiplies a linear ramp from 1 to 0 to a vasp;
+#P comment 332 29 126 196622 vasp.*!bevel;
+#P newex 41 222 63 196617 vasp.*bevel;
+#P hidden message 409 168 70 196617 set buf*bevel;
+#P hidden newex 409 150 45 196617 loadbang;
+#P user waveform~ 332 185 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 41 100 75 196617 vasp buf*bevel;
+#P newex 529 310 115 196617 buffer~ buf*bevel 2000;
+#P comment 38 53 213 196617 multiplies a linear ramp from 0 to 1 to a vasp;
+#P comment 38 29 112 196622 vasp.*bevel;
+#P comment 127 102 144 196617 generate a sine wave at 1khz;
+#P connect 4 0 11 0;
+#P connect 11 0 14 0;
+#P connect 12 0 8 0;
+#P connect 8 0 19 0;
+#P connect 16 0 15 0;
+#P connect 15 0 18 0;
+#P hidden fasten 20 0 5 0 414 184 337 184;
+#P hidden fasten 7 0 5 0 414 183 337 183;
+#P hidden connect 6 0 7 0;
+#P connect 22 0 21 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.mcosc.help b/externals/grill/vasp/max-help/vasp.mcosc.help
index 6918240e..b5b65b66 100755
--- a/externals/grill/vasp/max-help/vasp.mcosc.help
+++ b/externals/grill/vasp/max-help/vasp.mcosc.help
@@ -1 +1,144 @@
-max v2; #N vpatcher 132 131 841 556; #P message 429 357 129 196617 vasp buf*cosc3 buf*cosc4; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 429 378 78 196617 p clear_buffers; #P comment 193 195 114 196617 multiply the ramp with a complex sine wave; #P newex 56 173 61 196617 vasp.update; #P message 56 127 129 196617 vasp buf*cosc3 buf*cosc4; #P newex 56 148 55 196617 vasp.bevel; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 366 54 49 196617 p wfkeys; #N vpatcher 169 125 534 375; #P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 125 27 196617 t b f; #P message 309 151 27 196617 stop; #P message 243 151 65 196617 startwindow; #P newex 243 173 29 196617 dac~; #P comment 141 175 83 196617 period length in samples (float); #P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 147 27 196617 / 1.; #P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 54 49 53 196617 dspstate~; #P comment 133 98 100 196617 frequency in Hz; #P connect 1 1 2 0; #P fasten 4 0 9 0 93 118 75 118; #P connect 9 0 3 0; #P fasten 2 0 3 0 73 115 54 115 54 145 75 145; #P connect 3 0 10 0; #P connect 9 1 3 1; #P connect 7 0 6 0; #P fasten 8 0 6 0 314 169 248 169; #P pop; #P newobj 53 378 109 196617 p Hz_to_period_length; #P comment 567 229 119 196617 *imaginary part of cosc; #P message 56 198 129 196617 vasp buf*cosc3 buf*cosc4; #P hidden message 366 221 72 196617 set buf*cosc4; #P user waveform~ 367 246 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 559 378 119 196617 buffer~ buf*cosc4 2000; #P hidden message 366 94 72 196617 set buf*cosc3; #P hidden newex 366 75 45 196617 loadbang; #P user waveform~ 366 112 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 56 246 55 196617 vasp.* 0.5; #P newex 56 271 61 196617 vasp.update; #P newex 559 357 119 196617 buffer~ buf*cosc3 2000; #P comment 45 79 316 196617 argument/right inlet: frequency in period length in samples; #P newex 56 222 92 196617 vasp.*cosc 44100; #P comment 45 64 293 196617 multiplies a complex buffer content with a complex sine wave; #P comment 45 41 89 196622 vasp.*cosc; #P comment 192 128 137 196617 generate a ramp from 0 to 1; #P comment 575 96 108 196617 *real part of the cosc; #P connect 20 0 19 0; #P connect 19 0 21 0; #P connect 15 0 4 0; #P connect 4 0 8 0; #P connect 8 0 7 0; #P hidden connect 10 0 11 0; #P hidden connect 18 0 9 0; #P hidden connect 11 0 9 0; #P hidden fasten 10 0 14 0 371 82 371 82; #P hidden fasten 14 0 13 0 371 237 372 237; #P hidden connect 18 0 13 0; #P connect 24 0 23 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 132 131 841 556;
+#P message 429 357 129 196617 vasp buf*cosc3 buf*cosc4;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 429 378 78 196617 p clear_buffers;
+#P comment 193 195 114 196617 multiply the ramp with a complex sine wave;
+#P newex 56 173 61 196617 vasp.update;
+#P message 56 127 129 196617 vasp buf*cosc3 buf*cosc4;
+#P newex 56 148 55 196617 vasp.bevel;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 366 54 49 196617 p wfkeys;
+#N vpatcher 169 125 534 375;
+#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 125 27 196617 t b f;
+#P message 309 151 27 196617 stop;
+#P message 243 151 65 196617 startwindow;
+#P newex 243 173 29 196617 dac~;
+#P comment 141 175 83 196617 period length in samples (float);
+#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 147 27 196617 / 1.;
+#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 54 49 53 196617 dspstate~;
+#P comment 133 98 100 196617 frequency in Hz;
+#P connect 1 1 2 0;
+#P fasten 4 0 9 0 93 118 75 118;
+#P connect 9 0 3 0;
+#P fasten 2 0 3 0 73 115 54 115 54 145 75 145;
+#P connect 3 0 10 0;
+#P connect 9 1 3 1;
+#P connect 7 0 6 0;
+#P fasten 8 0 6 0 314 169 248 169;
+#P pop;
+#P newobj 53 378 109 196617 p Hz_to_period_length;
+#P comment 567 229 119 196617 *imaginary part of cosc;
+#P message 56 198 129 196617 vasp buf*cosc3 buf*cosc4;
+#P hidden message 366 221 72 196617 set buf*cosc4;
+#P user waveform~ 367 246 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 559 378 119 196617 buffer~ buf*cosc4 2000;
+#P hidden message 366 94 72 196617 set buf*cosc3;
+#P hidden newex 366 75 45 196617 loadbang;
+#P user waveform~ 366 112 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 56 246 55 196617 vasp.* 0.5;
+#P newex 56 271 61 196617 vasp.update;
+#P newex 559 357 119 196617 buffer~ buf*cosc3 2000;
+#P comment 45 79 316 196617 argument/right inlet: frequency in period length in samples;
+#P newex 56 222 92 196617 vasp.*cosc 44100;
+#P comment 45 64 293 196617 multiplies a complex buffer content with a complex sine wave;
+#P comment 45 41 89 196622 vasp.*cosc;
+#P comment 192 128 137 196617 generate a ramp from 0 to 1;
+#P comment 575 96 108 196617 *real part of the cosc;
+#P connect 20 0 19 0;
+#P connect 19 0 21 0;
+#P connect 15 0 4 0;
+#P connect 4 0 8 0;
+#P connect 8 0 7 0;
+#P hidden connect 10 0 11 0;
+#P hidden connect 18 0 9 0;
+#P hidden connect 11 0 9 0;
+#P hidden fasten 10 0 14 0 371 82 371 82;
+#P hidden fasten 14 0 13 0 371 237 372 237;
+#P hidden connect 18 0 13 0;
+#P connect 24 0 23 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.min.help b/externals/grill/vasp/max-help/vasp.min.help
index 7c906b2c..bfeef086 100755
--- a/externals/grill/vasp/max-help/vasp.min.help
+++ b/externals/grill/vasp/max-help/vasp.min.help
@@ -1 +1,125 @@
-max v2; #N vpatcher 129 80 798 501; #P message 421 352 101 196617 vasp bufmin bufmin1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 421 372 78 196617 p clear_buffers; #P comment 123 146 148 196617 generate a sine wave at 1Hz; #P message 57 145 62 196617 vasp bufmin; #P newex 57 191 61 196617 vasp.update; #P newex 57 168 80 196617 vasp.osc 44100; #P newex 57 271 45 196617 vasp.abs; #P comment 128 229 148 196617 copy to new buffer; #P hidden message 321 219 61 196617 set bufmin1; #P user waveform~ 321 237 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 525 372 108 196617 buffer~ bufmin1 2000; #P comment 52 86 188 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 55 196617 set bufmin; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 57 294 65 196617 vasp.min 0.4; #P message 57 228 68 196617 vasp bufmin1; #P newex 525 352 108 196617 buffer~ bufmin 2000; #P newex 57 249 71 196617 vasp.= bufmin; #P comment 52 70 167 196617 take minimum of vasp and argument; #P comment 52 48 89 196622 vasp.min; #P comment 106 273 100 196617 find absolute values; #P comment 598 103 44 196617 source; #P connect 20 0 18 0; #P connect 18 0 19 0; #P connect 6 0 4 0; #P connect 4 0 17 0; #P connect 17 0 7 0; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 15 0; #P hidden connect 11 0 14 0; #P hidden connect 15 0 14 0; #P connect 23 0 22 0; #P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; #P hidden connect 8 5 14 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 129 80 798 501;
+#P message 421 352 101 196617 vasp bufmin bufmin1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 421 372 78 196617 p clear_buffers;
+#P comment 123 146 148 196617 generate a sine wave at 1Hz;
+#P message 57 145 62 196617 vasp bufmin;
+#P newex 57 191 61 196617 vasp.update;
+#P newex 57 168 80 196617 vasp.osc 44100;
+#P newex 57 271 45 196617 vasp.abs;
+#P comment 128 229 148 196617 copy to new buffer;
+#P hidden message 321 219 61 196617 set bufmin1;
+#P user waveform~ 321 237 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 525 372 108 196617 buffer~ bufmin1 2000;
+#P comment 52 86 188 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 55 196617 set bufmin;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 57 294 65 196617 vasp.min 0.4;
+#P message 57 228 68 196617 vasp bufmin1;
+#P newex 525 352 108 196617 buffer~ bufmin 2000;
+#P newex 57 249 71 196617 vasp.= bufmin;
+#P comment 52 70 167 196617 take minimum of vasp and argument;
+#P comment 52 48 89 196622 vasp.min;
+#P comment 106 273 100 196617 find absolute values;
+#P comment 598 103 44 196617 source;
+#P connect 20 0 18 0;
+#P connect 18 0 19 0;
+#P connect 6 0 4 0;
+#P connect 4 0 17 0;
+#P connect 17 0 7 0;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 15 0;
+#P hidden connect 11 0 14 0;
+#P hidden connect 15 0 14 0;
+#P connect 23 0 22 0;
+#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94;
+#P hidden connect 8 5 14 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.minmax.help b/externals/grill/vasp/max-help/vasp.minmax.help
index 4ee61789..f111101f 100755
--- a/externals/grill/vasp/max-help/vasp.minmax.help
+++ b/externals/grill/vasp/max-help/vasp.minmax.help
@@ -1 +1,149 @@
-max v2; #N vpatcher 164 76 829 634; #P message 374 478 145 196617 vasp bufmm1 bufmm2 bufmm3; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 374 501 78 196617 p clear_buffers; #P comment 561 329 73 196617 positive values; #P newex 53 395 61 196617 vasp.update; #P hidden message 321 324 61 196617 set bufmm3; #P user waveform~ 321 343 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 521 501 108 196617 buffer~ bufmm3 2000; #P comment 131 154 148 196617 generate a sine wave at 1Hz; #P message 53 154 68 196617 vasp bufmm1; #P newex 53 210 61 196617 vasp.update; #P newex 53 189 80 196617 vasp.osc 44100; #P comment 172 319 99 196617 copy to new buffer; #P hidden message 321 202 61 196617 set bufmm2; #P user waveform~ 321 220 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 521 478 108 196617 buffer~ bufmm2 2000; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 35 49 196617 p wfkeys; #P hidden message 321 81 61 196617 set bufmm1; #P hidden newex 321 57 45 196617 loadbang; #P user waveform~ 321 101 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 53 374 65 196617 vasp.minmax; #P message 53 318 105 196617 vasp bufmm2 bufmm3; #P newex 521 457 108 196617 buffer~ bufmm1 2000; #P newex 53 352 75 196617 vasp.= bufmm1; #P comment 44 71 242 196617 splits a vasp pairs into smaller and larger values; #P comment 44 48 102 196622 vasp.minmax; #P comment 598 86 44 196617 source; #P comment 559 206 75 196617 negative values; #P connect 18 0 16 0; #P connect 16 0 17 0; #P connect 6 0 4 0; #P connect 4 0 7 0; #P connect 7 0 23 0; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 624 475 638 475 638 77 326 77; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 14 0; #P hidden connect 11 0 13 0; #P hidden connect 14 0 13 0; #P hidden connect 9 0 22 0; #P hidden connect 22 0 21 0; #P connect 26 0 25 0; #P hidden fasten 13 5 8 4 626 323 638 323 638 77 626 77; #P hidden connect 8 5 13 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 164 76 829 634;
+#P message 374 478 145 196617 vasp bufmm1 bufmm2 bufmm3;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 374 501 78 196617 p clear_buffers;
+#P comment 561 329 73 196617 positive values;
+#P newex 53 395 61 196617 vasp.update;
+#P hidden message 321 324 61 196617 set bufmm3;
+#P user waveform~ 321 343 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 521 501 108 196617 buffer~ bufmm3 2000;
+#P comment 131 154 148 196617 generate a sine wave at 1Hz;
+#P message 53 154 68 196617 vasp bufmm1;
+#P newex 53 210 61 196617 vasp.update;
+#P newex 53 189 80 196617 vasp.osc 44100;
+#P comment 172 319 99 196617 copy to new buffer;
+#P hidden message 321 202 61 196617 set bufmm2;
+#P user waveform~ 321 220 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 521 478 108 196617 buffer~ bufmm2 2000;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 35 49 196617 p wfkeys;
+#P hidden message 321 81 61 196617 set bufmm1;
+#P hidden newex 321 57 45 196617 loadbang;
+#P user waveform~ 321 101 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 53 374 65 196617 vasp.minmax;
+#P message 53 318 105 196617 vasp bufmm2 bufmm3;
+#P newex 521 457 108 196617 buffer~ bufmm1 2000;
+#P newex 53 352 75 196617 vasp.= bufmm1;
+#P comment 44 71 242 196617 splits a vasp pairs into smaller and larger values;
+#P comment 44 48 102 196622 vasp.minmax;
+#P comment 598 86 44 196617 source;
+#P comment 559 206 75 196617 negative values;
+#P connect 18 0 16 0;
+#P connect 16 0 17 0;
+#P connect 6 0 4 0;
+#P connect 4 0 7 0;
+#P connect 7 0 23 0;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 624 475 638 475 638 77 326 77;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 14 0;
+#P hidden connect 11 0 13 0;
+#P hidden connect 14 0 13 0;
+#P hidden connect 9 0 22 0;
+#P hidden connect 22 0 21 0;
+#P connect 26 0 25 0;
+#P hidden fasten 13 5 8 4 626 323 638 323 638 77 626 77;
+#P hidden connect 8 5 13 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.minq.help b/externals/grill/vasp/max-help/vasp.minq.help
index c3b2e2ed..3b3eb2e6 100755
--- a/externals/grill/vasp/max-help/vasp.minq.help
+++ b/externals/grill/vasp/max-help/vasp.minq.help
@@ -1 +1,86 @@
-max v2; #N vpatcher 257 116 917 432; #P message 59 223 68 196617 vasp bufmin?; #P newex 59 182 55 196617 vasp.* 0.5; #P comment 167 274 100 196617 >>>> minimum value; #P flonum 103 274 60 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 52 101 188 196617 right outlet: max value; #P comment 140 139 148 196617 generate a sine wave at 1Hz; #P message 59 139 68 196617 vasp bufmin?; #P newex 59 201 61 196617 vasp.update; #P newex 59 162 80 196617 vasp.osc 44100; #P comment 52 86 188 196617 argument/right inlet: value; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 73 49 196617 p wfkeys; #P hidden message 321 119 61 196617 set bufmin?; #P hidden newex 321 95 45 196617 loadbang; #P user waveform~ 321 139 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 245 54 196617 vasp.min?; #P newex 526 274 108 196617 buffer~ bufmin? 2000; #P comment 52 71 200 196617 get minimum sample value of a vasp; #P comment 52 48 89 196622 vasp.min?; #P connect 11 0 9 0; #P connect 9 0 16 0; #P connect 16 0 10 0; #P connect 17 0 3 0; #P connect 3 1 14 0; #P hidden fasten 2 1 6 0 629 299 638 299 638 115 326 115; #P hidden connect 5 0 6 0; #P hidden connect 6 0 4 0; #P hidden connect 7 0 4 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 257 116 917 432;
+#P message 59 223 68 196617 vasp bufmin?;
+#P newex 59 182 55 196617 vasp.* 0.5;
+#P comment 167 274 100 196617 >>>> minimum value;
+#P flonum 103 274 60 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 52 101 188 196617 right outlet: max value;
+#P comment 140 139 148 196617 generate a sine wave at 1Hz;
+#P message 59 139 68 196617 vasp bufmin?;
+#P newex 59 201 61 196617 vasp.update;
+#P newex 59 162 80 196617 vasp.osc 44100;
+#P comment 52 86 188 196617 argument/right inlet: value;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 73 49 196617 p wfkeys;
+#P hidden message 321 119 61 196617 set bufmin?;
+#P hidden newex 321 95 45 196617 loadbang;
+#P user waveform~ 321 139 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 245 54 196617 vasp.min?;
+#P newex 526 274 108 196617 buffer~ bufmin? 2000;
+#P comment 52 71 200 196617 get minimum sample value of a vasp;
+#P comment 52 48 89 196622 vasp.min?;
+#P connect 11 0 9 0;
+#P connect 9 0 16 0;
+#P connect 16 0 10 0;
+#P connect 17 0 3 0;
+#P connect 3 1 14 0;
+#P hidden fasten 2 1 6 0 629 299 638 299 638 115 326 115;
+#P hidden connect 5 0 6 0;
+#P hidden connect 6 0 4 0;
+#P hidden connect 7 0 4 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.mirr.help b/externals/grill/vasp/max-help/vasp.mirr.help
index 23f1640d..2e09c2c4 100755
--- a/externals/grill/vasp/max-help/vasp.mirr.help
+++ b/externals/grill/vasp/max-help/vasp.mirr.help
@@ -1 +1,88 @@
-max v2; #N vpatcher 159 193 741 563; #P message 359 278 65 196617 vasp bufmirr; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 359 298 73 196617 p clear_buffer; #P hidden newex 442 270 48 196617 r 1128path; #P user umenu 82 116 72 196647 1 64 132 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1128path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 144 138 43 196617 p loader; #P comment 56 118 26 196617 read; #P message 194 300 27 196617 stop; #P message 126 300 65 196617 startwindow; #P newex 235 325 29 196617 dac~; #P newex 235 273 30 196617 line~; #P message 235 250 72 196617 0 \, 2000 2000; #P newex 235 298 71 196617 play~ bufmirr; #P newex 61 222 61 196617 vasp.update; #P message 61 156 65 196617 vasp bufmirr; #P newex 61 200 53 196617 vasp.mirr; #P comment 51 67 75 196617 mirrors a vasp; #P comment 51 43 96 196622 vasp.mirr; #P hidden message 235 102 60 196617 set bufmirr; #P hidden newex 235 77 45 196617 loadbang; #P user waveform~ 235 121 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 442 299 105 196617 buffer~ bufmirr 2000; #P connect 7 0 6 0; #P connect 6 0 8 0; #P hidden connect 17 1 16 0; #P hidden fasten 0 1 3 0 542 318 551 318 551 98 240 98; #P hidden connect 2 0 3 0; #P hidden connect 3 0 1 0; #P connect 10 0 11 0; #P connect 11 0 9 0; #P connect 9 0 12 0; #P fasten 13 0 12 0 131 318 240 318; #P fasten 14 0 12 0 199 318 240 318; #P connect 9 0 12 1; #P connect 20 0 19 0; #P hidden connect 18 0 0 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 159 193 741 563;
+#P message 359 278 65 196617 vasp bufmirr;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 359 298 73 196617 p clear_buffer;
+#P hidden newex 442 270 48 196617 r 1128path;
+#P user umenu 82 116 72 196647 1 64 132 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1128path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 144 138 43 196617 p loader;
+#P comment 56 118 26 196617 read;
+#P message 194 300 27 196617 stop;
+#P message 126 300 65 196617 startwindow;
+#P newex 235 325 29 196617 dac~;
+#P newex 235 273 30 196617 line~;
+#P message 235 250 72 196617 0 \, 2000 2000;
+#P newex 235 298 71 196617 play~ bufmirr;
+#P newex 61 222 61 196617 vasp.update;
+#P message 61 156 65 196617 vasp bufmirr;
+#P newex 61 200 53 196617 vasp.mirr;
+#P comment 51 67 75 196617 mirrors a vasp;
+#P comment 51 43 96 196622 vasp.mirr;
+#P hidden message 235 102 60 196617 set bufmirr;
+#P hidden newex 235 77 45 196617 loadbang;
+#P user waveform~ 235 121 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 442 299 105 196617 buffer~ bufmirr 2000;
+#P connect 7 0 6 0;
+#P connect 6 0 8 0;
+#P hidden connect 17 1 16 0;
+#P hidden fasten 0 1 3 0 542 318 551 318 551 98 240 98;
+#P hidden connect 2 0 3 0;
+#P hidden connect 3 0 1 0;
+#P connect 10 0 11 0;
+#P connect 11 0 9 0;
+#P connect 9 0 12 0;
+#P fasten 13 0 12 0 131 318 240 318;
+#P fasten 14 0 12 0 199 318 240 318;
+#P connect 9 0 12 1;
+#P connect 20 0 19 0;
+#P hidden connect 18 0 0 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.mod.help b/externals/grill/vasp/max-help/vasp.mod.help
index 280979d6..45fdd08e 100755
--- a/externals/grill/vasp/max-help/vasp.mod.help
+++ b/externals/grill/vasp/max-help/vasp.mod.help
@@ -1 +1,62 @@
-max v2; #N vpatcher 200 142 915 479; #P message 511 273 55 196617 vasp buf%; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 511 292 73 196617 p clear_buffer; #P comment 271 127 75 196617 ramp from 0-1; #P newex 215 173 61 196617 vasp.update; #P newex 50 173 61 196617 vasp.update; #P message 83 219 55 196617 vasp buf%; #P newex 215 147 55 196617 vasp.bevel; #P message 215 126 55 196617 vasp buf%; #P comment 108 127 107 196617 a sine wave at 1Hz or; #P newex 83 292 61 196617 vasp.update; #P message 50 126 55 196617 vasp buf%; #P newex 50 146 80 196617 vasp.osc 44100; #P comment 45 77 189 196617 optional argument/right inlet: divisor; #P flonum 138 237 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 45 60 195 196617 modulo function / remainder of a division; #P comment 45 36 89 196622 vasp.%; #P newex 590 292 95 196617 buffer~ buf% 2000; #P hidden message 377 114 48 196617 set buf%; #P hidden newex 377 88 45 196617 loadbang; #P user waveform~ 377 138 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 83 258 65 196617 vasp.% 0.25; #P comment 156 260 59 196617 modulo; #P connect 11 0 10 0; #P connect 10 0 17 0; #P connect 16 0 1 0; #P connect 1 0 12 0; #P connect 8 0 1 1; #P connect 14 0 15 0; #P connect 15 0 18 0; #P hidden connect 3 0 4 0; #P hidden connect 4 0 2 0; #P connect 21 0 20 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 200 142 915 479;
+#P message 511 273 55 196617 vasp buf%;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 511 292 73 196617 p clear_buffer;
+#P comment 271 127 75 196617 ramp from 0-1;
+#P newex 215 173 61 196617 vasp.update;
+#P newex 50 173 61 196617 vasp.update;
+#P message 83 219 55 196617 vasp buf%;
+#P newex 215 147 55 196617 vasp.bevel;
+#P message 215 126 55 196617 vasp buf%;
+#P comment 108 127 107 196617 a sine wave at 1Hz or;
+#P newex 83 292 61 196617 vasp.update;
+#P message 50 126 55 196617 vasp buf%;
+#P newex 50 146 80 196617 vasp.osc 44100;
+#P comment 45 77 189 196617 optional argument/right inlet: divisor;
+#P flonum 138 237 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 45 60 195 196617 modulo function / remainder of a division;
+#P comment 45 36 89 196622 vasp.%;
+#P newex 590 292 95 196617 buffer~ buf% 2000;
+#P hidden message 377 114 48 196617 set buf%;
+#P hidden newex 377 88 45 196617 loadbang;
+#P user waveform~ 377 138 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 83 258 65 196617 vasp.% 0.25;
+#P comment 156 260 59 196617 modulo;
+#P connect 11 0 10 0;
+#P connect 10 0 17 0;
+#P connect 16 0 1 0;
+#P connect 1 0 12 0;
+#P connect 8 0 1 1;
+#P connect 14 0 15 0;
+#P connect 15 0 18 0;
+#P hidden connect 3 0 4 0;
+#P hidden connect 4 0 2 0;
+#P connect 21 0 20 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.mphasor.help b/externals/grill/vasp/max-help/vasp.mphasor.help
index d597bf26..0a21a23f 100755
--- a/externals/grill/vasp/max-help/vasp.mphasor.help
+++ b/externals/grill/vasp/max-help/vasp.mphasor.help
@@ -1 +1,127 @@
-max v2; #N vpatcher 159 224 859 578; #P message 465 263 83 196617 vasp buf*phasor; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 465 283 73 196617 p clear_buffer; #N vpatcher 169 125 534 375; #P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 125 27 196617 t b f; #P message 309 151 27 196617 stop; #P message 243 151 65 196617 startwindow; #P newex 243 173 29 196617 dac~; #P comment 141 175 83 196617 period length in samples (float); #P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 147 27 196617 / 1.; #P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 54 49 53 196617 dspstate~; #P comment 133 98 100 196617 frequency in Hz; #P connect 1 1 2 0; #P fasten 4 0 9 0 93 118 75 118; #P connect 9 0 3 0; #P fasten 2 0 3 0 73 115 54 115 54 145 75 145; #P connect 3 0 10 0; #P connect 9 1 3 1; #P connect 7 0 6 0; #P fasten 8 0 6 0 314 169 248 169; #P pop; #P newobj 41 283 109 196617 p Hz_to_period_length; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 355 34 49 196617 p wfkeys; #P message 314 283 27 196617 stop; #P message 246 283 65 196617 startwindow; #P comment 38 69 311 196617 argument/right inlet: frequency in period length in samples; #P newex 355 260 30 196617 line~; #P message 355 233 72 196617 0 \, 2000 2000; #P newex 355 307 29 196617 dac~; #P newex 355 283 85 196617 play~ buf*phasor; #P newex 41 255 61 196617 vasp.update; #P newex 41 168 55 196617 vasp.* 0.5; #P comment 128 208 192 196617 generate a amplitude modulation with 2Hz; #P message 41 207 83 196617 vasp buf*phasor; #P newex 41 144 55 196617 vasp.noise; #P newex 41 232 102 196617 vasp.*phasor 22050; #P hidden message 355 76 75 196617 set buf*phasor; #P hidden newex 355 57 45 196617 loadbang; #P user waveform~ 355 95 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 41 121 83 196617 vasp buf*phasor; #P newex 542 283 123 196617 buffer~ buf*phasor 2000; #P comment 38 53 229 196617 multiplies a saw tooth ramp with a buffer content; #P comment 38 29 109 196622 vasp.*phasor; #P comment 128 122 100 196617 generate white noise; #P connect 4 0 9 0; #P connect 9 0 12 0; #P connect 10 0 8 0; #P connect 8 0 13 0; #P hidden connect 6 0 7 0; #P hidden connect 21 0 5 0; #P hidden connect 7 0 5 0; #P connect 16 0 17 0; #P connect 17 0 14 0; #P fasten 20 0 15 0 319 303 360 303; #P fasten 19 0 15 0 251 303 360 303; #P connect 14 0 15 0; #P connect 14 0 15 1; #P connect 24 0 23 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 159 224 859 578;
+#P message 465 263 83 196617 vasp buf*phasor;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 465 283 73 196617 p clear_buffer;
+#N vpatcher 169 125 534 375;
+#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 125 27 196617 t b f;
+#P message 309 151 27 196617 stop;
+#P message 243 151 65 196617 startwindow;
+#P newex 243 173 29 196617 dac~;
+#P comment 141 175 83 196617 period length in samples (float);
+#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 147 27 196617 / 1.;
+#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 54 49 53 196617 dspstate~;
+#P comment 133 98 100 196617 frequency in Hz;
+#P connect 1 1 2 0;
+#P fasten 4 0 9 0 93 118 75 118;
+#P connect 9 0 3 0;
+#P fasten 2 0 3 0 73 115 54 115 54 145 75 145;
+#P connect 3 0 10 0;
+#P connect 9 1 3 1;
+#P connect 7 0 6 0;
+#P fasten 8 0 6 0 314 169 248 169;
+#P pop;
+#P newobj 41 283 109 196617 p Hz_to_period_length;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 355 34 49 196617 p wfkeys;
+#P message 314 283 27 196617 stop;
+#P message 246 283 65 196617 startwindow;
+#P comment 38 69 311 196617 argument/right inlet: frequency in period length in samples;
+#P newex 355 260 30 196617 line~;
+#P message 355 233 72 196617 0 \, 2000 2000;
+#P newex 355 307 29 196617 dac~;
+#P newex 355 283 85 196617 play~ buf*phasor;
+#P newex 41 255 61 196617 vasp.update;
+#P newex 41 168 55 196617 vasp.* 0.5;
+#P comment 128 208 192 196617 generate a amplitude modulation with 2Hz;
+#P message 41 207 83 196617 vasp buf*phasor;
+#P newex 41 144 55 196617 vasp.noise;
+#P newex 41 232 102 196617 vasp.*phasor 22050;
+#P hidden message 355 76 75 196617 set buf*phasor;
+#P hidden newex 355 57 45 196617 loadbang;
+#P user waveform~ 355 95 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 41 121 83 196617 vasp buf*phasor;
+#P newex 542 283 123 196617 buffer~ buf*phasor 2000;
+#P comment 38 53 229 196617 multiplies a saw tooth ramp with a buffer content;
+#P comment 38 29 109 196622 vasp.*phasor;
+#P comment 128 122 100 196617 generate white noise;
+#P connect 4 0 9 0;
+#P connect 9 0 12 0;
+#P connect 10 0 8 0;
+#P connect 8 0 13 0;
+#P hidden connect 6 0 7 0;
+#P hidden connect 21 0 5 0;
+#P hidden connect 7 0 5 0;
+#P connect 16 0 17 0;
+#P connect 17 0 14 0;
+#P fasten 20 0 15 0 319 303 360 303;
+#P fasten 19 0 15 0 251 303 360 303;
+#P connect 14 0 15 0;
+#P connect 14 0 15 1;
+#P connect 24 0 23 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.mul.help b/externals/grill/vasp/max-help/vasp.mul.help
index b4443442..c3eabaa8 100755
--- a/externals/grill/vasp/max-help/vasp.mul.help
+++ b/externals/grill/vasp/max-help/vasp.mul.help
@@ -1 +1,227 @@
-max v2; #N vpatcher 194 184 786 554; #P origin 45 0; #P message 387 294 53 196617 vasp buf*; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 387 315 73 196617 p clear_buffer; #N vpatcher 197 137 868 621; #P newex 58 280 61 196617 vasp.update; #P comment 600 218 37 196617 buf*b; #P user umenu 78 79 72 196647 1 64 95 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 355 682; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1074path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 140 100 43 196617 p loader; #P message 433 395 85 196617 vasp buf*a buf*b; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 433 416 78 196617 p clear_buffers; #P newex 58 159 61 196617 vasp.update; #P hidden newex 526 367 48 196617 r 1074path; #P comment 52 81 26 196617 read; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 325 50 49 196617 p wfkeys; #P comment 126 313 157 196617 multiplie noise with the envelope; #P comment 126 119 100 196617 generate noise; #P comment 109 259 100 196617 normalize the vasp; #P comment 133 231 149 196617 filter the values with a lowpass to get the envelope (2Hz); #P message 58 312 58 196617 vasp buf*a; #P newex 58 333 68 196617 vasp.* buf*b; #P message 292 417 27 196617 stop; #P message 224 417 65 196617 startwindow; #P newex 325 441 29 196617 dac~; #P newex 325 389 30 196617 line~; #P message 325 360 72 196617 0 \, 2000 2000; #P newex 325 415 62 196617 play~ buf*a; #P newex 58 360 61 196617 vasp.update; #P newex 58 257 45 196617 vasp.opt; #P newex 58 234 71 196617 vasp.flp 2205; #P message 58 188 58 196617 vasp buf*b; #P newex 58 210 45 196617 vasp.abs; #P message 58 118 58 196617 vasp buf*a; #P newex 58 137 55 196617 vasp.noise; #P hidden message 325 215 51 196617 set buf*b; #P user waveform~ 325 233 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P hidden message 325 93 51 196617 set buf*a; #P hidden newex 325 69 45 196617 loadbang; #P user waveform~ 325 113 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 539 415 98 196617 buffer~ buf*b 2000; #P newex 539 390 98 196617 buffer~ buf*a 2000; #P comment 125 189 100 196617 get absolute values; #P comment 52 43 336 196622 use vasp.* to multiplie an envelope to noise; #P comment 150 81 100 196617 into buffer buf*b; #P comment 600 98 37 196617 buf*a; #P connect 12 0 11 0; #P connect 11 0 33 0; #P connect 14 0 13 0; #P connect 13 0 15 0; #P connect 15 0 16 0; #P connect 16 0 39 0; #P connect 25 0 24 0; #P connect 24 0 17 0; #P hidden connect 37 1 36 0; #P hidden connect 7 0 8 0; #P hidden connect 30 0 6 0; #P hidden connect 8 0 6 0; #P hidden connect 7 0 10 0; #P hidden fasten 5 1 10 0 632 436 644 436 644 213 330 213; #P hidden connect 10 0 9 0; #P hidden connect 30 0 9 0; #P connect 19 0 20 0; #P connect 20 0 18 0; #P connect 18 0 21 0; #P fasten 22 0 21 0 229 438 330 438; #P fasten 23 0 21 0 297 438 330 438; #P connect 18 0 21 1; #P connect 35 0 34 0; #P hidden fasten 32 0 5 0 531 413 544 413; #P pop; #P newobj 45 315 98 196617 p envelope_example; #P comment 103 141 76 196617 generate noise; #P newex 45 263 61 196617 vasp.update; #P message 45 140 53 196617 vasp buf*; #P newex 45 175 55 196617 vasp.noise; #P comment 39 74 189 196617 optional argument/right inlet: multiplier; #P flonum 90 208 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 39 59 97 196617 multiplies a vasp; #P comment 39 36 66 196622 vasp.*; #P newex 463 315 93 196617 buffer~ buf* 2000; #P hidden message 246 120 45 196617 set buf*; #P hidden newex 246 94 45 196617 loadbang; #P user waveform~ 246 144 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 45 229 55 196617 vasp.* 0.5; #P comment 129 210 59 196617 change gain; #P connect 11 0 10 0; #P connect 10 0 1 0; #P connect 1 0 12 0; #P connect 8 0 1 1; #P hidden connect 3 0 4 0; #P hidden connect 4 0 2 0; #P connect 16 0 15 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 194 184 786 554;
+#P origin 45 0;
+#P message 387 294 53 196617 vasp buf*;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 387 315 73 196617 p clear_buffer;
+#N vpatcher 197 137 868 621;
+#P newex 58 280 61 196617 vasp.update;
+#P comment 600 218 37 196617 buf*b;
+#P user umenu 78 79 72 196647 1 64 95 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 355 682;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1074path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 140 100 43 196617 p loader;
+#P message 433 395 85 196617 vasp buf*a buf*b;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 433 416 78 196617 p clear_buffers;
+#P newex 58 159 61 196617 vasp.update;
+#P hidden newex 526 367 48 196617 r 1074path;
+#P comment 52 81 26 196617 read;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 325 50 49 196617 p wfkeys;
+#P comment 126 313 157 196617 multiplie noise with the envelope;
+#P comment 126 119 100 196617 generate noise;
+#P comment 109 259 100 196617 normalize the vasp;
+#P comment 133 231 149 196617 filter the values with a lowpass to get the envelope (2Hz);
+#P message 58 312 58 196617 vasp buf*a;
+#P newex 58 333 68 196617 vasp.* buf*b;
+#P message 292 417 27 196617 stop;
+#P message 224 417 65 196617 startwindow;
+#P newex 325 441 29 196617 dac~;
+#P newex 325 389 30 196617 line~;
+#P message 325 360 72 196617 0 \, 2000 2000;
+#P newex 325 415 62 196617 play~ buf*a;
+#P newex 58 360 61 196617 vasp.update;
+#P newex 58 257 45 196617 vasp.opt;
+#P newex 58 234 71 196617 vasp.flp 2205;
+#P message 58 188 58 196617 vasp buf*b;
+#P newex 58 210 45 196617 vasp.abs;
+#P message 58 118 58 196617 vasp buf*a;
+#P newex 58 137 55 196617 vasp.noise;
+#P hidden message 325 215 51 196617 set buf*b;
+#P user waveform~ 325 233 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P hidden message 325 93 51 196617 set buf*a;
+#P hidden newex 325 69 45 196617 loadbang;
+#P user waveform~ 325 113 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 539 415 98 196617 buffer~ buf*b 2000;
+#P newex 539 390 98 196617 buffer~ buf*a 2000;
+#P comment 125 189 100 196617 get absolute values;
+#P comment 52 43 336 196622 use vasp.* to multiplie an envelope to noise;
+#P comment 150 81 100 196617 into buffer buf*b;
+#P comment 600 98 37 196617 buf*a;
+#P connect 12 0 11 0;
+#P connect 11 0 33 0;
+#P connect 14 0 13 0;
+#P connect 13 0 15 0;
+#P connect 15 0 16 0;
+#P connect 16 0 39 0;
+#P connect 25 0 24 0;
+#P connect 24 0 17 0;
+#P hidden connect 37 1 36 0;
+#P hidden connect 7 0 8 0;
+#P hidden connect 30 0 6 0;
+#P hidden connect 8 0 6 0;
+#P hidden connect 7 0 10 0;
+#P hidden fasten 5 1 10 0 632 436 644 436 644 213 330 213;
+#P hidden connect 10 0 9 0;
+#P hidden connect 30 0 9 0;
+#P connect 19 0 20 0;
+#P connect 20 0 18 0;
+#P connect 18 0 21 0;
+#P fasten 22 0 21 0 229 438 330 438;
+#P fasten 23 0 21 0 297 438 330 438;
+#P connect 18 0 21 1;
+#P connect 35 0 34 0;
+#P hidden fasten 32 0 5 0 531 413 544 413;
+#P pop;
+#P newobj 45 315 98 196617 p envelope_example;
+#P comment 103 141 76 196617 generate noise;
+#P newex 45 263 61 196617 vasp.update;
+#P message 45 140 53 196617 vasp buf*;
+#P newex 45 175 55 196617 vasp.noise;
+#P comment 39 74 189 196617 optional argument/right inlet: multiplier;
+#P flonum 90 208 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 39 59 97 196617 multiplies a vasp;
+#P comment 39 36 66 196622 vasp.*;
+#P newex 463 315 93 196617 buffer~ buf* 2000;
+#P hidden message 246 120 45 196617 set buf*;
+#P hidden newex 246 94 45 196617 loadbang;
+#P user waveform~ 246 144 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 45 229 55 196617 vasp.* 0.5;
+#P comment 129 210 59 196617 change gain;
+#P connect 11 0 10 0;
+#P connect 10 0 1 0;
+#P connect 1 0 12 0;
+#P connect 8 0 1 1;
+#P hidden connect 3 0 4 0;
+#P hidden connect 4 0 2 0;
+#P connect 16 0 15 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.multi.help b/externals/grill/vasp/max-help/vasp.multi.help
index 9552b3f0..64ee9b09 100755
--- a/externals/grill/vasp/max-help/vasp.multi.help
+++ b/externals/grill/vasp/max-help/vasp.multi.help
@@ -1 +1,23 @@
-max v2; #N vpatcher 262 131 701 451; #P hidden message 303 155 22 196617 set; #P hidden newex 303 123 45 196617 loadbang; #P message 223 257 162 196617; #P newex 223 232 60 196617 prepend set; #P comment 51 80 138 196617 argument: number of outlets; #P message 56 257 162 196617; #P newex 56 232 60 196617 prepend set; #P message 56 156 129 196617 vasp 22050 bufm 44100 0; #P newex 56 180 49 196617 vasp.m 2; #P newex 56 111 94 196617 buffer~ bufm 2000; #P comment 51 63 151 196617 outputs a vasp multiple times; #P comment 51 41 89 196622 vasp.m; #P connect 4 0 3 0; #P connect 3 0 5 0; #P hidden fasten 11 0 6 0 308 253 61 253; #P connect 5 0 6 0; #P fasten 3 1 8 0 100 214 228 214; #P hidden fasten 11 0 9 0 308 254 228 254; #P connect 8 0 9 0; #P hidden connect 10 0 11 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 262 131 701 451;
+#P hidden message 303 155 22 196617 set;
+#P hidden newex 303 123 45 196617 loadbang;
+#P message 223 257 162 196617;
+#P newex 223 232 60 196617 prepend set;
+#P comment 51 80 138 196617 argument: number of outlets;
+#P message 56 257 162 196617;
+#P newex 56 232 60 196617 prepend set;
+#P message 56 156 129 196617 vasp 22050 bufm 44100 0;
+#P newex 56 180 49 196617 vasp.m 2;
+#P newex 56 111 94 196617 buffer~ bufm 2000;
+#P comment 51 63 151 196617 outputs a vasp multiple times;
+#P comment 51 41 89 196622 vasp.m;
+#P connect 4 0 3 0;
+#P connect 3 0 5 0;
+#P hidden fasten 11 0 6 0 308 253 61 253;
+#P connect 5 0 6 0;
+#P fasten 3 1 8 0 100 214 228 214;
+#P hidden fasten 11 0 9 0 308 254 228 254;
+#P connect 8 0 9 0;
+#P hidden connect 10 0 11 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.neq.help b/externals/grill/vasp/max-help/vasp.neq.help
index a3fef642..6a533cdd 100755
--- a/externals/grill/vasp/max-help/vasp.neq.help
+++ b/externals/grill/vasp/max-help/vasp.neq.help
@@ -1 +1,145 @@
-max v2; #N vpatcher 82 103 798 578; #P message 490 408 93 196617 vasp buf!=1 buf!=2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 490 428 78 196617 p clear_buffers; #P newex 79 393 58 196617 vasp.!= -1.; #P comment 332 310 43 196617 false/0; #P message 71 123 61 196617 vasp buf!=1; #P newex 155 247 55 196617 vasp.= -1.; #P newex 92 247 55 196617 vasp.= 0.3; #P newex 224 214 55 196617 vasp.upper; #P newex 155 214 58 196617 vasp.lower; #P newex 224 247 59 196617 vasp.!bevel; #P newex 92 214 55 196617 vasp.upper; #P newex 31 214 58 196617 vasp.lower; #P newex 121 302 61 196617 vasp.update; #P newex 30 247 55 196617 vasp.bevel; #P newex 182 187 55 196617 vasp.upper; #P newex 71 187 58 196617 vasp.lower; #P newex 71 154 121 196617 vasp.m 2; #P newex 79 368 70 196617 vasp.= buf!=1; #P message 79 338 61 196617 vasp buf!=2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 375 80 49 196617 p wfkeys; #P hidden message 375 241 54 196617 set buf!=2; #P user waveform~ 375 262 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 586 428 101 196617 buffer~ buf!=2 2000; #P hidden message 375 119 54 196617 set buf!=1; #P hidden newex 375 100 45 196617 loadbang; #P user waveform~ 375 137 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 79 428 61 196617 vasp.update; #P newex 586 408 101 196617 buffer~ buf!=1 2000; #P comment 45 80 147 196617 argument/right inlet: value; #P comment 45 63 59 196617 not equal; #P comment 45 41 89 196622 vasp.!=; #P comment 176 125 92 196617 generate a function; #P comment 334 267 40 196617 true/1; #P comment 148 396 216 196617 test if a part of the function is not equal to -1.; #P connect 22 0 20 0; #P fasten 18 0 22 0 76 209 36 209; #P connect 29 0 17 0; #P connect 17 0 18 0; #P connect 15 0 16 0; #P connect 16 0 31 0; #P connect 31 0 7 0; #P fasten 18 0 23 0 76 209 97 209; #P connect 23 0 27 0; #P fasten 28 0 21 0 160 283 126 283; #P fasten 27 0 21 0 97 283 126 283; #P fasten 20 0 21 0 35 283 126 283; #P fasten 24 0 21 0 229 283 126 283; #P fasten 19 0 25 0 187 209 160 209; #P connect 25 0 28 0; #P connect 17 1 19 0; #P fasten 19 0 26 0 187 209 229 209; #P connect 26 0 24 0; #P hidden connect 9 0 10 0; #P hidden connect 14 0 8 0; #P hidden connect 10 0 8 0; #P hidden fasten 9 0 13 0 380 100 380 100; #P hidden connect 14 0 12 0; #P hidden connect 13 0 12 0; #P connect 33 0 32 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 82 103 798 578;
+#P message 490 408 93 196617 vasp buf!=1 buf!=2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 490 428 78 196617 p clear_buffers;
+#P newex 79 393 58 196617 vasp.!= -1.;
+#P comment 332 310 43 196617 false/0;
+#P message 71 123 61 196617 vasp buf!=1;
+#P newex 155 247 55 196617 vasp.= -1.;
+#P newex 92 247 55 196617 vasp.= 0.3;
+#P newex 224 214 55 196617 vasp.upper;
+#P newex 155 214 58 196617 vasp.lower;
+#P newex 224 247 59 196617 vasp.!bevel;
+#P newex 92 214 55 196617 vasp.upper;
+#P newex 31 214 58 196617 vasp.lower;
+#P newex 121 302 61 196617 vasp.update;
+#P newex 30 247 55 196617 vasp.bevel;
+#P newex 182 187 55 196617 vasp.upper;
+#P newex 71 187 58 196617 vasp.lower;
+#P newex 71 154 121 196617 vasp.m 2;
+#P newex 79 368 70 196617 vasp.= buf!=1;
+#P message 79 338 61 196617 vasp buf!=2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 375 80 49 196617 p wfkeys;
+#P hidden message 375 241 54 196617 set buf!=2;
+#P user waveform~ 375 262 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 586 428 101 196617 buffer~ buf!=2 2000;
+#P hidden message 375 119 54 196617 set buf!=1;
+#P hidden newex 375 100 45 196617 loadbang;
+#P user waveform~ 375 137 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 79 428 61 196617 vasp.update;
+#P newex 586 408 101 196617 buffer~ buf!=1 2000;
+#P comment 45 80 147 196617 argument/right inlet: value;
+#P comment 45 63 59 196617 not equal;
+#P comment 45 41 89 196622 vasp.!=;
+#P comment 176 125 92 196617 generate a function;
+#P comment 334 267 40 196617 true/1;
+#P comment 148 396 216 196617 test if a part of the function is not equal to -1.;
+#P connect 22 0 20 0;
+#P fasten 18 0 22 0 76 209 36 209;
+#P connect 29 0 17 0;
+#P connect 17 0 18 0;
+#P connect 15 0 16 0;
+#P connect 16 0 31 0;
+#P connect 31 0 7 0;
+#P fasten 18 0 23 0 76 209 97 209;
+#P connect 23 0 27 0;
+#P fasten 28 0 21 0 160 283 126 283;
+#P fasten 27 0 21 0 97 283 126 283;
+#P fasten 20 0 21 0 35 283 126 283;
+#P fasten 24 0 21 0 229 283 126 283;
+#P fasten 19 0 25 0 187 209 160 209;
+#P connect 25 0 28 0;
+#P connect 17 1 19 0;
+#P fasten 19 0 26 0 187 209 229 209;
+#P connect 26 0 24 0;
+#P hidden connect 9 0 10 0;
+#P hidden connect 14 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden fasten 9 0 13 0 380 100 380 100;
+#P hidden connect 14 0 12 0;
+#P hidden connect 13 0 12 0;
+#P connect 33 0 32 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.noise.help b/externals/grill/vasp/max-help/vasp.noise.help
index e4a5c6be..8200fdbc 100755
--- a/externals/grill/vasp/max-help/vasp.noise.help
+++ b/externals/grill/vasp/max-help/vasp.noise.help
@@ -1 +1,100 @@
-max v2; #N vpatcher 184 116 763 458; #P message 358 248 69 196617 vasp bufnoise; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 358 268 73 196617 p clear_buffer; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 236 40 49 196617 p wfkeys; #P message 195 269 27 196617 stop; #P message 127 269 65 196617 startwindow; #P newex 236 295 29 196617 dac~; #P newex 236 243 30 196617 line~; #P message 236 220 72 196617 0 \, 2000 2000; #P newex 236 268 73 196617 play~ bufnoise; #P hidden message 236 82 62 196617 set bufnoise; #P hidden newex 236 62 45 196617 loadbang; #P user waveform~ 236 102 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 41 146 55 196617 vasp.* 0.5; #P newex 41 168 61 196617 vasp.update; #P message 41 103 69 196617 vasp bufnoise; #P newex 437 268 109 196617 buffer~ bufnoise 2000; #P newex 41 124 55 196617 vasp.noise; #P comment 38 56 136 196617 vasp noise generator; #P comment 38 34 89 196622 vasp.noise; #P comment 116 104 99 196617 generate white noise; #P connect 5 0 3 0; #P connect 3 0 7 0; #P connect 7 0 6 0; #P hidden connect 9 0 10 0; #P hidden connect 10 0 8 0; #P hidden connect 17 0 8 0; #P connect 12 0 13 0; #P connect 13 0 11 0; #P connect 11 0 14 0; #P fasten 15 0 14 0 132 288 241 288; #P fasten 16 0 14 0 200 288 241 288; #P connect 11 0 14 1; #P connect 19 0 18 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 184 116 763 458;
+#P message 358 248 69 196617 vasp bufnoise;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 358 268 73 196617 p clear_buffer;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 236 40 49 196617 p wfkeys;
+#P message 195 269 27 196617 stop;
+#P message 127 269 65 196617 startwindow;
+#P newex 236 295 29 196617 dac~;
+#P newex 236 243 30 196617 line~;
+#P message 236 220 72 196617 0 \, 2000 2000;
+#P newex 236 268 73 196617 play~ bufnoise;
+#P hidden message 236 82 62 196617 set bufnoise;
+#P hidden newex 236 62 45 196617 loadbang;
+#P user waveform~ 236 102 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 41 146 55 196617 vasp.* 0.5;
+#P newex 41 168 61 196617 vasp.update;
+#P message 41 103 69 196617 vasp bufnoise;
+#P newex 437 268 109 196617 buffer~ bufnoise 2000;
+#P newex 41 124 55 196617 vasp.noise;
+#P comment 38 56 136 196617 vasp noise generator;
+#P comment 38 34 89 196622 vasp.noise;
+#P comment 116 104 99 196617 generate white noise;
+#P connect 5 0 3 0;
+#P connect 3 0 7 0;
+#P connect 7 0 6 0;
+#P hidden connect 9 0 10 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 17 0 8 0;
+#P connect 12 0 13 0;
+#P connect 13 0 11 0;
+#P connect 11 0 14 0;
+#P fasten 15 0 14 0 132 288 241 288;
+#P fasten 16 0 14 0 200 288 241 288;
+#P connect 11 0 14 1;
+#P connect 19 0 18 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.nonzero.help b/externals/grill/vasp/max-help/vasp.nonzero.help
index af533ea3..652ce582 100755
--- a/externals/grill/vasp/max-help/vasp.nonzero.help
+++ b/externals/grill/vasp/max-help/vasp.nonzero.help
@@ -1 +1,162 @@
-max v2; #N vpatcher 73 92 960 655; #P hidden newex 737 368 48 196617 r 1042path; #P message 633 391 93 196617 vasp buf?? buf??1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 633 410 78 196617 p clear_buffers; #P user umenu 59 141 72 196647 1 64 157 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1042path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 121 160 43 196617 p loader; #P hidden message 448 239 22 196617 set; #P comment 133 448 100 196617 sample values; #P message 20 463 794 196617; #P newex 20 434 60 196617 prepend set; #P message 20 399 528 196617; #P comment 52 101 133 196617 right outlet: sample value; #P newex 59 364 60 196617 prepend set; #P newex 59 265 44 196617 vasp.??; #P comment 811 222 44 196617 peaks; #P comment 132 182 148 196617 copy to new buffer \, find peaks; #P hidden message 529 220 55 196617 set buf??1; #P user waveform~ 529 237 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 737 410 104 196617 buffer~ buf??1 1000; #P comment 52 86 134 196617 left outlet: sample index; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 529 52 49 196617 p wfkeys; #P hidden message 529 98 51 196617 set buf??; #P hidden newex 529 74 45 196617 loadbang; #P user waveform~ 529 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 227 93 196617 vasp.peaks 0.0004; #P message 59 180 64 196617 vasp buf??1; #P newex 737 391 104 196617 buffer~ buf?? 1000; #P newex 59 201 65 196617 vasp.= buf??; #P comment 52 71 259 196617 outputs all samples of a vasp that are unequal to zero; #P comment 52 48 89 196622 vasp.??; #P comment 806 103 44 196617 source; #P comment 131 382 100 196617 sample index; #P hidden fasten 25 0 21 0 453 390 25 390; #P fasten 19 0 21 0 64 390 25 390; #P fasten 18 1 22 0 98 302 9 302 9 424 25 424; #P hidden fasten 25 0 23 0 453 457 25 457; #P connect 22 0 23 0; #P connect 6 0 4 0; #P connect 4 0 7 0; #P connect 7 0 18 0; #P connect 18 0 19 0; #P hidden connect 27 1 26 0; #P hidden fasten 9 0 25 0 531 91 453 91; #P hidden connect 9 0 10 0; #P hidden fasten 5 1 10 0 836 406 846 406 846 94 534 94; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P hidden connect 9 0 15 0; #P hidden connect 15 0 14 0; #P hidden connect 11 0 14 0; #P connect 29 0 28 0; #P hidden connect 30 0 5 0; #P hidden fasten 14 5 8 4 834 340 846 340 846 94 834 94; #P hidden connect 8 5 14 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 73 92 960 655;
+#P hidden newex 737 368 48 196617 r 1042path;
+#P message 633 391 93 196617 vasp buf?? buf??1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 633 410 78 196617 p clear_buffers;
+#P user umenu 59 141 72 196647 1 64 157 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1042path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 121 160 43 196617 p loader;
+#P hidden message 448 239 22 196617 set;
+#P comment 133 448 100 196617 sample values;
+#P message 20 463 794 196617;
+#P newex 20 434 60 196617 prepend set;
+#P message 20 399 528 196617;
+#P comment 52 101 133 196617 right outlet: sample value;
+#P newex 59 364 60 196617 prepend set;
+#P newex 59 265 44 196617 vasp.??;
+#P comment 811 222 44 196617 peaks;
+#P comment 132 182 148 196617 copy to new buffer \, find peaks;
+#P hidden message 529 220 55 196617 set buf??1;
+#P user waveform~ 529 237 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 737 410 104 196617 buffer~ buf??1 1000;
+#P comment 52 86 134 196617 left outlet: sample index;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 529 52 49 196617 p wfkeys;
+#P hidden message 529 98 51 196617 set buf??;
+#P hidden newex 529 74 45 196617 loadbang;
+#P user waveform~ 529 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 227 93 196617 vasp.peaks 0.0004;
+#P message 59 180 64 196617 vasp buf??1;
+#P newex 737 391 104 196617 buffer~ buf?? 1000;
+#P newex 59 201 65 196617 vasp.= buf??;
+#P comment 52 71 259 196617 outputs all samples of a vasp that are unequal to zero;
+#P comment 52 48 89 196622 vasp.??;
+#P comment 806 103 44 196617 source;
+#P comment 131 382 100 196617 sample index;
+#P hidden fasten 25 0 21 0 453 390 25 390;
+#P fasten 19 0 21 0 64 390 25 390;
+#P fasten 18 1 22 0 98 302 9 302 9 424 25 424;
+#P hidden fasten 25 0 23 0 453 457 25 457;
+#P connect 22 0 23 0;
+#P connect 6 0 4 0;
+#P connect 4 0 7 0;
+#P connect 7 0 18 0;
+#P connect 18 0 19 0;
+#P hidden connect 27 1 26 0;
+#P hidden fasten 9 0 25 0 531 91 453 91;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 5 1 10 0 836 406 846 406 846 94 534 94;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P hidden connect 9 0 15 0;
+#P hidden connect 15 0 14 0;
+#P hidden connect 11 0 14 0;
+#P connect 29 0 28 0;
+#P hidden connect 30 0 5 0;
+#P hidden fasten 14 5 8 4 834 340 846 340 846 94 834 94;
+#P hidden connect 8 5 14 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.offset.help b/externals/grill/vasp/max-help/vasp.offset.help
index b03703e7..2a7c16eb 100755
--- a/externals/grill/vasp/max-help/vasp.offset.help
+++ b/externals/grill/vasp/max-help/vasp.offset.help
@@ -1 +1,32 @@
-max v2; #N vpatcher 188 145 681 517; #P hidden message 424 146 22 196617 set; #P hidden newex 424 116 45 196617 loadbang; #P number 306 175 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 119 175 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 344 323 110 196617 buffer~ bufoffs2 2000; #P newex 344 303 110 196617 buffer~ bufoffs1 2000; #P message 245 254 209 196617; #P newex 245 221 60 196617 prepend set; #P message 245 148 153 196617 vasp bufoffs1 220 bufoffs2 100; #P newex 245 196 80 196617 vasp.offset 300; #P message 58 254 180 196617; #P newex 58 221 60 196617 prepend set; #P message 58 148 70 196617 vasp bufoffs1; #P newex 58 196 80 196617 vasp.offset 300; #P comment 55 83 135 196617 argument/right inlet: value; #P comment 55 69 204 196617 set the offset of a vasp (into a buffer); #P comment 55 45 89 196622 vasp.offs; #P comment 55 98 253 196617 ---! vasp.offs sets all vectors to the same offset !---; #P connect 5 0 4 0; #P connect 4 0 6 0; #P hidden fasten 17 0 7 0 429 246 63 246; #P connect 6 0 7 0; #P connect 14 0 4 1; #P connect 9 0 8 0; #P connect 8 0 10 0; #P hidden fasten 17 0 11 0 429 246 250 246; #P connect 10 0 11 0; #P connect 15 0 8 1; #P hidden connect 16 0 17 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 188 145 681 517;
+#P hidden message 424 146 22 196617 set;
+#P hidden newex 424 116 45 196617 loadbang;
+#P number 306 175 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P number 119 175 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 344 323 110 196617 buffer~ bufoffs2 2000;
+#P newex 344 303 110 196617 buffer~ bufoffs1 2000;
+#P message 245 254 209 196617;
+#P newex 245 221 60 196617 prepend set;
+#P message 245 148 153 196617 vasp bufoffs1 220 bufoffs2 100;
+#P newex 245 196 80 196617 vasp.offset 300;
+#P message 58 254 180 196617;
+#P newex 58 221 60 196617 prepend set;
+#P message 58 148 70 196617 vasp bufoffs1;
+#P newex 58 196 80 196617 vasp.offset 300;
+#P comment 55 83 135 196617 argument/right inlet: value;
+#P comment 55 69 204 196617 set the offset of a vasp (into a buffer);
+#P comment 55 45 89 196622 vasp.offs;
+#P comment 55 98 253 196617 ---! vasp.offs sets all vectors to the same offset !---;
+#P connect 5 0 4 0;
+#P connect 4 0 6 0;
+#P hidden fasten 17 0 7 0 429 246 63 246;
+#P connect 6 0 7 0;
+#P connect 14 0 4 1;
+#P connect 9 0 8 0;
+#P connect 8 0 10 0;
+#P hidden fasten 17 0 11 0 429 246 250 246;
+#P connect 10 0 11 0;
+#P connect 15 0 8 1;
+#P hidden connect 16 0 17 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.offsetd.help b/externals/grill/vasp/max-help/vasp.offsetd.help
index 69646cdc..59b71516 100755
--- a/externals/grill/vasp/max-help/vasp.offsetd.help
+++ b/externals/grill/vasp/max-help/vasp.offsetd.help
@@ -1 +1,31 @@
-max v2; #N vpatcher 191 100 695 451; #P hidden message 438 125 22 196617 set; #P hidden newex 438 97 45 196617 loadbang; #P newex 359 305 115 196617 buffer~ bufoffs+2 2000; #P newex 359 284 115 196617 buffer~ bufoffs+1 2000; #P number 310 151 45 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 123 151 45 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; #P message 245 234 229 196617; #P newex 245 201 60 196617 prepend set; #P message 245 128 165 196617 vasp bufoffs+1 220 bufoffs+2 100; #P newex 245 172 75 196617 vasp.offs+ 300; #P message 58 234 171 196617; #P newex 58 201 60 196617 prepend set; #P message 58 128 75 196617 vasp bufoffs+1; #P newex 58 172 75 196617 vasp.offs+ 300; #P comment 55 80 135 196617 argument/right inlet: value; #P comment 55 63 189 196617 change the offset to a vasp (relatively); #P comment 55 39 89 196622 vasp.offs+; #P connect 4 0 3 0; #P connect 3 0 5 0; #P hidden fasten 16 0 6 0 443 228 63 228; #P connect 5 0 6 0; #P connect 11 0 3 1; #P connect 8 0 7 0; #P connect 7 0 9 0; #P hidden fasten 16 0 10 0 443 227 250 227; #P connect 9 0 10 0; #P connect 12 0 7 1; #P hidden connect 15 0 16 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 191 100 695 451;
+#P hidden message 438 125 22 196617 set;
+#P hidden newex 438 97 45 196617 loadbang;
+#P newex 359 305 115 196617 buffer~ bufoffs+2 2000;
+#P newex 359 284 115 196617 buffer~ bufoffs+1 2000;
+#P number 310 151 45 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P number 123 151 45 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P message 245 234 229 196617;
+#P newex 245 201 60 196617 prepend set;
+#P message 245 128 165 196617 vasp bufoffs+1 220 bufoffs+2 100;
+#P newex 245 172 75 196617 vasp.offs+ 300;
+#P message 58 234 171 196617;
+#P newex 58 201 60 196617 prepend set;
+#P message 58 128 75 196617 vasp bufoffs+1;
+#P newex 58 172 75 196617 vasp.offs+ 300;
+#P comment 55 80 135 196617 argument/right inlet: value;
+#P comment 55 63 189 196617 change the offset to a vasp (relatively);
+#P comment 55 39 89 196622 vasp.offs+;
+#P connect 4 0 3 0;
+#P connect 3 0 5 0;
+#P hidden fasten 16 0 6 0 443 228 63 228;
+#P connect 5 0 6 0;
+#P connect 11 0 3 1;
+#P connect 8 0 7 0;
+#P connect 7 0 9 0;
+#P hidden fasten 16 0 10 0 443 227 250 227;
+#P connect 9 0 10 0;
+#P connect 12 0 7 1;
+#P hidden connect 15 0 16 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.offsetq.help b/externals/grill/vasp/max-help/vasp.offsetq.help
index 41e51821..8a01e618 100755
--- a/externals/grill/vasp/max-help/vasp.offsetq.help
+++ b/externals/grill/vasp/max-help/vasp.offsetq.help
@@ -1 +1,17 @@
-max v2; #N vpatcher 243 134 660 396; #P number 202 162 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P number 45 162 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 278 221 114 196617 buffer~ buffoffs? 2000; #P message 202 106 161 196617 vasp buffoffs? 220 buffoffs? 300; #P newex 202 127 65 196617 vasp.offset?; #P message 45 106 115 196617 vasp 200 buffoffs? 300; #P newex 45 127 65 196617 vasp.offset?; #P comment 42 59 167 196617 get a single vectored vasp«s offset; #P comment 42 35 89 196622 vasp.offs?; #P comment 199 89 190 196617 more than 1 vector. watch max window!; #P connect 4 0 3 0; #P connect 3 0 8 0; #P connect 6 0 5 0; #P connect 5 0 9 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 243 134 660 396;
+#P number 202 162 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P number 45 162 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 278 221 114 196617 buffer~ buffoffs? 2000;
+#P message 202 106 161 196617 vasp buffoffs? 220 buffoffs? 300;
+#P newex 202 127 65 196617 vasp.offset?;
+#P message 45 106 115 196617 vasp 200 buffoffs? 300;
+#P newex 45 127 65 196617 vasp.offset?;
+#P comment 42 59 167 196617 get a single vectored vasp«s offset;
+#P comment 42 35 89 196622 vasp.offs?;
+#P comment 199 89 190 196617 more than 1 vector. watch max window!;
+#P connect 4 0 3 0;
+#P connect 3 0 8 0;
+#P connect 6 0 5 0;
+#P connect 5 0 9 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.opt.help b/externals/grill/vasp/max-help/vasp.opt.help
index 0b91bbd8..45a976bf 100755
--- a/externals/grill/vasp/max-help/vasp.opt.help
+++ b/externals/grill/vasp/max-help/vasp.opt.help
@@ -1 +1,104 @@
-max v2; #N vpatcher 158 141 801 655; #P message 441 425 60 196617 vasp bufopt; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 441 446 73 196617 p clear_buffer; #P user umenu 73 119 72 196647 1 64 135 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1160path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 135 141 43 196617 p loader; #P comment 46 120 26 196617 read; #P hidden newex 519 425 48 196617 r 1160path; #P flonum 120 208 44 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 137 353 68 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 46 67 177 196617 otptimize a vasp (aka normalize); #P message 64 352 60 196617 vasp bufopt; #P newex 85 380 38 196617 vasp./; #P newex 85 403 61 196617 vasp.update; #P newex 85 188 45 196617 vasp.opt; #P message 85 160 60 196617 vasp bufopt; #P newex 85 319 62 196617 vasp.amax?; #P hidden message 302 131 53 196617 set bufopt; #P hidden newex 302 106 45 196617 loadbang; #P user waveform~ 302 156 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 240 446 27 196617 stop; #P message 173 446 65 196617 startwindow; #P newex 293 425 30 196617 line~; #P message 293 404 72 196617 0 \, 2000 2000; #P newex 293 472 29 196617 dac~; #P newex 293 446 64 196617 play~ bufopt; #P newex 85 228 61 196617 vasp.update; #P message 85 297 60 196617 vasp bufopt; #P newex 519 446 100 196617 buffer~ bufopt 2000; #P comment 210 355 141 196617 -> current absolute maximum; #P comment 83 279 210 196617 or use vasp.amax? to optimize buffer content; #P comment 46 44 95 196622 vasp.opt; #P comment 46 82 204 196617 right outlet: the original maximum value; #P connect 17 0 18 0; #P connect 18 0 6 0; #P connect 5 0 16 0; #P fasten 21 0 20 0 69 373 90 373; #P connect 20 0 19 0; #P fasten 23 0 20 1 142 374 118 374; #P connect 18 1 24 0; #P hidden connect 28 1 27 0; #P fasten 16 1 23 0 142 344 142 344; #P connect 9 0 10 0; #P connect 10 0 7 0; #P connect 7 0 8 0; #P fasten 11 0 8 0 178 466 298 466; #P fasten 12 0 8 0 245 466 298 466; #P hidden fasten 4 1 15 0 614 94 295 94 295 162 307 162; #P hidden connect 14 0 15 0; #P hidden connect 15 0 13 0; #P connect 7 0 8 1; #P connect 30 0 29 0; #P hidden connect 25 0 4 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 158 141 801 655;
+#P message 441 425 60 196617 vasp bufopt;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 441 446 73 196617 p clear_buffer;
+#P user umenu 73 119 72 196647 1 64 135 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1160path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 135 141 43 196617 p loader;
+#P comment 46 120 26 196617 read;
+#P hidden newex 519 425 48 196617 r 1160path;
+#P flonum 120 208 44 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P flonum 137 353 68 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 46 67 177 196617 otptimize a vasp (aka normalize);
+#P message 64 352 60 196617 vasp bufopt;
+#P newex 85 380 38 196617 vasp./;
+#P newex 85 403 61 196617 vasp.update;
+#P newex 85 188 45 196617 vasp.opt;
+#P message 85 160 60 196617 vasp bufopt;
+#P newex 85 319 62 196617 vasp.amax?;
+#P hidden message 302 131 53 196617 set bufopt;
+#P hidden newex 302 106 45 196617 loadbang;
+#P user waveform~ 302 156 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 240 446 27 196617 stop;
+#P message 173 446 65 196617 startwindow;
+#P newex 293 425 30 196617 line~;
+#P message 293 404 72 196617 0 \, 2000 2000;
+#P newex 293 472 29 196617 dac~;
+#P newex 293 446 64 196617 play~ bufopt;
+#P newex 85 228 61 196617 vasp.update;
+#P message 85 297 60 196617 vasp bufopt;
+#P newex 519 446 100 196617 buffer~ bufopt 2000;
+#P comment 210 355 141 196617 -> current absolute maximum;
+#P comment 83 279 210 196617 or use vasp.amax? to optimize buffer content;
+#P comment 46 44 95 196622 vasp.opt;
+#P comment 46 82 204 196617 right outlet: the original maximum value;
+#P connect 17 0 18 0;
+#P connect 18 0 6 0;
+#P connect 5 0 16 0;
+#P fasten 21 0 20 0 69 373 90 373;
+#P connect 20 0 19 0;
+#P fasten 23 0 20 1 142 374 118 374;
+#P connect 18 1 24 0;
+#P hidden connect 28 1 27 0;
+#P fasten 16 1 23 0 142 344 142 344;
+#P connect 9 0 10 0;
+#P connect 10 0 7 0;
+#P connect 7 0 8 0;
+#P fasten 11 0 8 0 178 466 298 466;
+#P fasten 12 0 8 0 245 466 298 466;
+#P hidden fasten 4 1 15 0 614 94 295 94 295 162 307 162;
+#P hidden connect 14 0 15 0;
+#P hidden connect 15 0 13 0;
+#P connect 7 0 8 1;
+#P connect 30 0 29 0;
+#P hidden connect 25 0 4 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.osc.help b/externals/grill/vasp/max-help/vasp.osc.help
index 3360c46f..33e26427 100755
--- a/externals/grill/vasp/max-help/vasp.osc.help
+++ b/externals/grill/vasp/max-help/vasp.osc.help
@@ -1 +1,123 @@
-max v2; #N vpatcher 201 127 842 502; #P message 428 281 61 196617 vasp bufosc; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 428 301 73 196617 p clear_buffer; #N vpatcher 169 125 534 375; #P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 125 27 196617 t b f; #P message 309 151 27 196617 stop; #P message 243 151 65 196617 startwindow; #P newex 243 173 29 196617 dac~; #P comment 141 175 83 196617 period length in samples (float); #P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 147 27 196617 / 1.; #P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 54 49 53 196617 dspstate~; #P comment 133 98 100 196617 frequency in Hz; #P connect 1 1 2 0; #P fasten 4 0 9 0 93 118 75 118; #P fasten 2 0 3 0 73 115 54 115 54 145 75 145; #P connect 9 0 3 0; #P connect 3 0 10 0; #P connect 9 1 3 1; #P fasten 8 0 6 0 314 169 248 169; #P connect 7 0 6 0; #P pop; #P newobj 56 301 109 196617 p Hz_to_period_length; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 301 79 49 196617 p wfkeys; #P message 260 303 27 196617 stop; #P message 192 303 65 196617 startwindow; #P newex 301 328 29 196617 dac~; #P newex 301 276 30 196617 line~; #P message 301 253 72 196617 0 \, 2000 2000; #P newex 301 301 65 196617 play~ bufosc; #P hidden message 301 115 54 196617 set bufosc; #P hidden newex 301 97 45 196617 loadbang; #P user waveform~ 301 133 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 56 183 55 196617 vasp.* 0.5; #P newex 56 205 61 196617 vasp.update; #P message 56 129 61 196617 vasp bufosc; #P newex 512 301 101 196617 buffer~ bufosc 2000; #P comment 51 76 314 196617 optional argument/right inlet: frequency in period length in samples; #P newex 56 161 123 196617 vasp.osc 44.099998; #P comment 51 61 168 196617 vasp sine wave generator; #P comment 51 38 89 196622 vasp.osc; #P comment 126 130 142 196617 generate a sine wave at 1kHz; #P connect 6 0 3 0; #P connect 3 0 8 0; #P connect 8 0 7 0; #P hidden connect 10 0 11 0; #P hidden connect 18 0 9 0; #P hidden connect 11 0 9 0; #P connect 13 0 14 0; #P connect 14 0 12 0; #P fasten 17 0 15 0 265 321 306 321; #P fasten 16 0 15 0 197 321 306 321; #P connect 12 0 15 0; #P connect 12 0 15 1; #P connect 21 0 20 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 201 127 842 502;
+#P message 428 281 61 196617 vasp bufosc;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 428 301 73 196617 p clear_buffer;
+#N vpatcher 169 125 534 375;
+#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 125 27 196617 t b f;
+#P message 309 151 27 196617 stop;
+#P message 243 151 65 196617 startwindow;
+#P newex 243 173 29 196617 dac~;
+#P comment 141 175 83 196617 period length in samples (float);
+#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 147 27 196617 / 1.;
+#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 54 49 53 196617 dspstate~;
+#P comment 133 98 100 196617 frequency in Hz;
+#P connect 1 1 2 0;
+#P fasten 4 0 9 0 93 118 75 118;
+#P fasten 2 0 3 0 73 115 54 115 54 145 75 145;
+#P connect 9 0 3 0;
+#P connect 3 0 10 0;
+#P connect 9 1 3 1;
+#P fasten 8 0 6 0 314 169 248 169;
+#P connect 7 0 6 0;
+#P pop;
+#P newobj 56 301 109 196617 p Hz_to_period_length;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 301 79 49 196617 p wfkeys;
+#P message 260 303 27 196617 stop;
+#P message 192 303 65 196617 startwindow;
+#P newex 301 328 29 196617 dac~;
+#P newex 301 276 30 196617 line~;
+#P message 301 253 72 196617 0 \, 2000 2000;
+#P newex 301 301 65 196617 play~ bufosc;
+#P hidden message 301 115 54 196617 set bufosc;
+#P hidden newex 301 97 45 196617 loadbang;
+#P user waveform~ 301 133 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 56 183 55 196617 vasp.* 0.5;
+#P newex 56 205 61 196617 vasp.update;
+#P message 56 129 61 196617 vasp bufosc;
+#P newex 512 301 101 196617 buffer~ bufosc 2000;
+#P comment 51 76 314 196617 optional argument/right inlet: frequency in period length in samples;
+#P newex 56 161 123 196617 vasp.osc 44.099998;
+#P comment 51 61 168 196617 vasp sine wave generator;
+#P comment 51 38 89 196622 vasp.osc;
+#P comment 126 130 142 196617 generate a sine wave at 1kHz;
+#P connect 6 0 3 0;
+#P connect 3 0 8 0;
+#P connect 8 0 7 0;
+#P hidden connect 10 0 11 0;
+#P hidden connect 18 0 9 0;
+#P hidden connect 11 0 9 0;
+#P connect 13 0 14 0;
+#P connect 14 0 12 0;
+#P fasten 17 0 15 0 265 321 306 321;
+#P fasten 16 0 15 0 197 321 306 321;
+#P connect 12 0 15 0;
+#P connect 12 0 15 1;
+#P connect 21 0 20 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.part.help b/externals/grill/vasp/max-help/vasp.part.help
index 2e614b4f..686ebd02 100755
--- a/externals/grill/vasp/max-help/vasp.part.help
+++ b/externals/grill/vasp/max-help/vasp.part.help
@@ -1 +1,30 @@
-max v2; #N vpatcher 214 79 812 563; #P newex 103 380 52 196617 print rest; #P newex 62 380 30 196617 print; #P comment 56 93 316 196617 left inlet: a vasp to define the buffername and the maximum lenght; #P comment 56 140 344 196617 right outlet: a vasp with remaining length (if there is one) of the input vasp; #P message 62 176 81 196617 vasp buffpart11; #P comment 159 382 271 196617 so there are just 4 vasps and no rest.... watch maxwindow; #P message 221 314 131 196617 100 200 300 500 100 200; #P newex 62 344 51 196617 vasp.part; #P message 62 289 148 196617 vasp 1100 buffpart1 buffpart2; #P newex 166 239 52 196617 print rest; #P newex 62 238 30 196617 print; #P comment 56 125 214 196617 left outlet: the new vasps one after the other; #P newex 437 444 115 196617 buffer~ buffpart2 2000; #P newex 437 423 115 196617 buffer~ buffpart1 2000; #P newex 62 208 114 196617 vasp.part 100 100 100; #P comment 56 77 260 196617 generates vasps with certain lenghts; #P comment 56 53 89 196622 vasp.part; #P comment 56 109 197 196617 argument/ right inlet: vasps lenghts (list); #P comment 144 177 225 196617 vasp.part generates 3 new vasps and a rest vasp; #P comment 211 290 323 196617 the input vasp defines the maximum lengths of the vasps at the output; #P connect 15 0 5 0; #P connect 5 0 9 0; #P connect 11 0 12 0; #P connect 12 0 18 0; #P fasten 13 0 12 1 226 336 108 336; #P connect 12 1 19 0; #P connect 5 1 10 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 214 79 812 563;
+#P newex 103 380 52 196617 print rest;
+#P newex 62 380 30 196617 print;
+#P comment 56 93 316 196617 left inlet: a vasp to define the buffername and the maximum lenght;
+#P comment 56 140 344 196617 right outlet: a vasp with remaining length (if there is one) of the input vasp;
+#P message 62 176 81 196617 vasp buffpart11;
+#P comment 159 382 271 196617 so there are just 4 vasps and no rest.... watch maxwindow;
+#P message 221 314 131 196617 100 200 300 500 100 200;
+#P newex 62 344 51 196617 vasp.part;
+#P message 62 289 148 196617 vasp 1100 buffpart1 buffpart2;
+#P newex 166 239 52 196617 print rest;
+#P newex 62 238 30 196617 print;
+#P comment 56 125 214 196617 left outlet: the new vasps one after the other;
+#P newex 437 444 115 196617 buffer~ buffpart2 2000;
+#P newex 437 423 115 196617 buffer~ buffpart1 2000;
+#P newex 62 208 114 196617 vasp.part 100 100 100;
+#P comment 56 77 260 196617 generates vasps with certain lenghts;
+#P comment 56 53 89 196622 vasp.part;
+#P comment 56 109 197 196617 argument/ right inlet: vasps lenghts (list);
+#P comment 144 177 225 196617 vasp.part generates 3 new vasps and a rest vasp;
+#P comment 211 290 323 196617 the input vasp defines the maximum lengths of the vasps at the output;
+#P connect 15 0 5 0;
+#P connect 5 0 9 0;
+#P connect 11 0 12 0;
+#P connect 12 0 18 0;
+#P fasten 13 0 12 1 226 336 108 336;
+#P connect 12 1 19 0;
+#P connect 5 1 10 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.peaks.help b/externals/grill/vasp/max-help/vasp.peaks.help
index 76ea59d1..6e2068d3 100755
--- a/externals/grill/vasp/max-help/vasp.peaks.help
+++ b/externals/grill/vasp/max-help/vasp.peaks.help
@@ -1 +1,176 @@
-max v2; #N vpatcher 120 75 805 582; #P comment 172 313 92 196617 = number of peaks; #P number 134 311 35 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 59 258 44 196617 vasp.??; #P flonum 134 259 71 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 134 283 51 196617 * 88200.; #P comment 52 101 162 196617 outlet: current density value 0-1; #P message 417 419 109 196617 vasp bufpeak bufpeak1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 417 442 73 196617 p clear_buffer; #P hidden newex 538 396 48 196617 r 1164path; #P user umenu 78 135 72 196647 1 64 151 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1164path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 140 157 43 196617 p loader; #P comment 52 137 26 196617 read; #P comment 619 254 44 196617 peaks; #P comment 165 181 148 196617 copy to new buffer \, find peaks; #P message 59 357 72 196617 vasp bufpeak1; #P newex 59 380 45 196617 vasp.opt; #P hidden message 337 251 65 196617 set bufpeak1; #P user waveform~ 337 269 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 538 442 112 196617 buffer~ bufpeak1 2000; #P comment 52 86 188 196617 argument/right inlet: density value 0-1; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 337 84 49 196617 p wfkeys; #P message 296 442 27 196617 stop; #P message 227 442 65 196617 startwindow; #P newex 337 468 29 196617 dac~; #P newex 337 419 30 196617 line~; #P message 337 398 72 196617 0 \, 2000 2000; #P newex 337 442 75 196617 play~ bufpeak1; #P hidden message 337 130 59 196617 set bufpeak; #P hidden newex 337 106 45 196617 loadbang; #P user waveform~ 337 150 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 59 231 85 196617 vasp.peaks 0.001; #P newex 59 406 61 196617 vasp.update; #P message 59 180 105 196617 vasp 88200 bufpeak1; #P newex 538 419 112 196617 buffer~ bufpeak 2000; #P newex 59 201 75 196617 vasp.= bufpeak; #P comment 52 72 218 196617 find the local maxima of the buffer samples; #P comment 52 48 89 196622 vasp.peaks; #P comment 133 358 111 196617 optimize buffer content; #P comment 614 135 44 196617 source; #P comment 206 262 100 196617 current density; #P comment 189 285 100 196617 * lenght of the vasp; #P connect 8 0 6 0; #P connect 6 0 10 0; #P connect 10 0 38 0; #P connect 26 0 25 0; #P connect 25 0 9 0; #P connect 10 1 37 0; #P connect 37 0 36 0; #P connect 36 0 39 0; #P hidden connect 31 1 30 0; #P hidden connect 12 0 13 0; #P hidden fasten 7 1 13 0 645 438 654 438 654 126 342 126; #P hidden connect 20 0 11 0; #P hidden connect 13 0 11 0; #P hidden connect 12 0 24 0; #P hidden connect 20 0 23 0; #P hidden connect 24 0 23 0; #P connect 15 0 16 0; #P connect 16 0 14 0; #P fasten 19 0 17 0 301 461 342 461; #P fasten 18 0 17 0 232 461 342 461; #P connect 14 0 17 0; #P connect 14 0 17 1; #P connect 34 0 33 0; #P hidden connect 32 0 7 0; #P hidden fasten 23 5 11 4 642 372 654 372 654 126 642 126; #P hidden connect 11 5 23 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 120 75 805 582;
+#P comment 172 313 92 196617 = number of peaks;
+#P number 134 311 35 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 59 258 44 196617 vasp.??;
+#P flonum 134 259 71 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 134 283 51 196617 * 88200.;
+#P comment 52 101 162 196617 outlet: current density value 0-1;
+#P message 417 419 109 196617 vasp bufpeak bufpeak1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 417 442 73 196617 p clear_buffer;
+#P hidden newex 538 396 48 196617 r 1164path;
+#P user umenu 78 135 72 196647 1 64 151 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1164path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 140 157 43 196617 p loader;
+#P comment 52 137 26 196617 read;
+#P comment 619 254 44 196617 peaks;
+#P comment 165 181 148 196617 copy to new buffer \, find peaks;
+#P message 59 357 72 196617 vasp bufpeak1;
+#P newex 59 380 45 196617 vasp.opt;
+#P hidden message 337 251 65 196617 set bufpeak1;
+#P user waveform~ 337 269 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 538 442 112 196617 buffer~ bufpeak1 2000;
+#P comment 52 86 188 196617 argument/right inlet: density value 0-1;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 337 84 49 196617 p wfkeys;
+#P message 296 442 27 196617 stop;
+#P message 227 442 65 196617 startwindow;
+#P newex 337 468 29 196617 dac~;
+#P newex 337 419 30 196617 line~;
+#P message 337 398 72 196617 0 \, 2000 2000;
+#P newex 337 442 75 196617 play~ bufpeak1;
+#P hidden message 337 130 59 196617 set bufpeak;
+#P hidden newex 337 106 45 196617 loadbang;
+#P user waveform~ 337 150 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 59 231 85 196617 vasp.peaks 0.001;
+#P newex 59 406 61 196617 vasp.update;
+#P message 59 180 105 196617 vasp 88200 bufpeak1;
+#P newex 538 419 112 196617 buffer~ bufpeak 2000;
+#P newex 59 201 75 196617 vasp.= bufpeak;
+#P comment 52 72 218 196617 find the local maxima of the buffer samples;
+#P comment 52 48 89 196622 vasp.peaks;
+#P comment 133 358 111 196617 optimize buffer content;
+#P comment 614 135 44 196617 source;
+#P comment 206 262 100 196617 current density;
+#P comment 189 285 100 196617 * lenght of the vasp;
+#P connect 8 0 6 0;
+#P connect 6 0 10 0;
+#P connect 10 0 38 0;
+#P connect 26 0 25 0;
+#P connect 25 0 9 0;
+#P connect 10 1 37 0;
+#P connect 37 0 36 0;
+#P connect 36 0 39 0;
+#P hidden connect 31 1 30 0;
+#P hidden connect 12 0 13 0;
+#P hidden fasten 7 1 13 0 645 438 654 438 654 126 342 126;
+#P hidden connect 20 0 11 0;
+#P hidden connect 13 0 11 0;
+#P hidden connect 12 0 24 0;
+#P hidden connect 20 0 23 0;
+#P hidden connect 24 0 23 0;
+#P connect 15 0 16 0;
+#P connect 16 0 14 0;
+#P fasten 19 0 17 0 301 461 342 461;
+#P fasten 18 0 17 0 232 461 342 461;
+#P connect 14 0 17 0;
+#P connect 14 0 17 1;
+#P connect 34 0 33 0;
+#P hidden connect 32 0 7 0;
+#P hidden fasten 23 5 11 4 642 372 654 372 654 126 642 126;
+#P hidden connect 11 5 23 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.phasor.help b/externals/grill/vasp/max-help/vasp.phasor.help
index 29169063..3f246eee 100755
--- a/externals/grill/vasp/max-help/vasp.phasor.help
+++ b/externals/grill/vasp/max-help/vasp.phasor.help
@@ -1 +1,123 @@
-max v2; #N vpatcher 152 239 816 612; #P message 441 281 75 196617 vasp bufphasor; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 441 300 73 196617 p clear_buffer; #N vpatcher 169 125 534 375; #P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 125 27 196617 t b f; #P message 309 151 27 196617 stop; #P message 243 151 65 196617 startwindow; #P newex 243 173 29 196617 dac~; #P comment 141 175 83 196617 period length in samples (float); #P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 70 147 27 196617 / 1.; #P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 54 49 53 196617 dspstate~; #P comment 133 98 100 196617 frequency in Hz; #P connect 1 1 2 0; #P fasten 4 0 9 0 93 118 75 118; #P connect 9 0 3 0; #P fasten 2 0 3 0 73 115 54 115 54 145 75 145; #P connect 3 0 10 0; #P connect 9 1 3 1; #P connect 7 0 6 0; #P fasten 8 0 6 0 314 169 248 169; #P pop; #P newobj 54 300 109 196617 p Hz_to_period_length; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 327 66 49 196617 p wfkeys; #P message 286 301 27 196617 stop; #P message 218 301 65 196617 startwindow; #P newex 327 327 29 196617 dac~; #P newex 327 275 30 196617 line~; #P message 327 252 72 196617 0 \, 2000 2000; #P newex 327 300 80 196617 play~ bufphasor; #P hidden message 327 104 69 196617 set bufphasor; #P hidden newex 327 83 45 196617 loadbang; #P user waveform~ 327 122 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 54 175 55 196617 vasp.* 0.5; #P newex 54 197 61 196617 vasp.update; #P message 54 127 75 196617 vasp bufphasor; #P newex 524 300 115 196617 buffer~ bufphasor 2000; #P comment 46 76 311 196617 optional argument/right inlet: frequency in period length in samples; #P newex 54 153 89 196617 vasp.phasor 2205; #P comment 46 61 168 196617 vasp saw tooth ramp generator; #P comment 46 38 111 196622 vasp.phasor; #P comment 139 128 129 196617 generate saw tooth at 20Hz; #P connect 6 0 3 0; #P connect 3 0 8 0; #P connect 8 0 7 0; #P hidden connect 10 0 11 0; #P hidden connect 18 0 9 0; #P hidden connect 11 0 9 0; #P connect 13 0 14 0; #P connect 14 0 12 0; #P connect 12 0 15 0; #P fasten 17 0 15 0 291 320 332 320; #P fasten 16 0 15 0 223 320 332 320; #P connect 12 0 15 1; #P connect 21 0 20 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 152 239 816 612;
+#P message 441 281 75 196617 vasp bufphasor;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 441 300 73 196617 p clear_buffer;
+#N vpatcher 169 125 534 375;
+#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 125 27 196617 t b f;
+#P message 309 151 27 196617 stop;
+#P message 243 151 65 196617 startwindow;
+#P newex 243 173 29 196617 dac~;
+#P comment 141 175 83 196617 period length in samples (float);
+#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 70 147 27 196617 / 1.;
+#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 54 49 53 196617 dspstate~;
+#P comment 133 98 100 196617 frequency in Hz;
+#P connect 1 1 2 0;
+#P fasten 4 0 9 0 93 118 75 118;
+#P connect 9 0 3 0;
+#P fasten 2 0 3 0 73 115 54 115 54 145 75 145;
+#P connect 3 0 10 0;
+#P connect 9 1 3 1;
+#P connect 7 0 6 0;
+#P fasten 8 0 6 0 314 169 248 169;
+#P pop;
+#P newobj 54 300 109 196617 p Hz_to_period_length;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 327 66 49 196617 p wfkeys;
+#P message 286 301 27 196617 stop;
+#P message 218 301 65 196617 startwindow;
+#P newex 327 327 29 196617 dac~;
+#P newex 327 275 30 196617 line~;
+#P message 327 252 72 196617 0 \, 2000 2000;
+#P newex 327 300 80 196617 play~ bufphasor;
+#P hidden message 327 104 69 196617 set bufphasor;
+#P hidden newex 327 83 45 196617 loadbang;
+#P user waveform~ 327 122 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 54 175 55 196617 vasp.* 0.5;
+#P newex 54 197 61 196617 vasp.update;
+#P message 54 127 75 196617 vasp bufphasor;
+#P newex 524 300 115 196617 buffer~ bufphasor 2000;
+#P comment 46 76 311 196617 optional argument/right inlet: frequency in period length in samples;
+#P newex 54 153 89 196617 vasp.phasor 2205;
+#P comment 46 61 168 196617 vasp saw tooth ramp generator;
+#P comment 46 38 111 196622 vasp.phasor;
+#P comment 139 128 129 196617 generate saw tooth at 20Hz;
+#P connect 6 0 3 0;
+#P connect 3 0 8 0;
+#P connect 8 0 7 0;
+#P hidden connect 10 0 11 0;
+#P hidden connect 18 0 9 0;
+#P hidden connect 11 0 9 0;
+#P connect 13 0 14 0;
+#P connect 14 0 12 0;
+#P connect 12 0 15 0;
+#P fasten 17 0 15 0 291 320 332 320;
+#P fasten 16 0 15 0 223 320 332 320;
+#P connect 12 0 15 1;
+#P connect 21 0 20 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.polar.help b/externals/grill/vasp/max-help/vasp.polar.help
index f2ee3193..c2dbdf2c 100755
--- a/externals/grill/vasp/max-help/vasp.polar.help
+++ b/externals/grill/vasp/max-help/vasp.polar.help
@@ -1 +1,291 @@
-max v2; #N vpatcher 209 148 932 603; #P origin 0 27; #P user umenu 79 131 72 196647 1 64 147 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 347 671; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 54 196617 s 1067path1; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 4 0 1 0; #P connect 3 1 0 0; #P pop; #P hidden newobj 141 153 43 196617 p loader; #P message 487 360 101 196617 vasp bufpol1 bufpol2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 487 380 78 196617 p clear_buffers; #P hidden newex 589 336 54 196617 r 1067path1; #P comment 52 133 26 196617 read; #P newex 60 216 61 196617 vasp.update; #N vpatcher 148 79 912 552; #P origin 0 14; #P user umenu 83 71 72 196647 1 64 87 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 344 681; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1067path; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P connect 4 0 1 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 3 1 0 0; #P pop; #P hidden newobj 145 89 43 196617 p loader; #P message 521 380 101 196617 vasp bufpol3 bufpol4; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 521 399 78 196617 p clear_buffers; #P hidden newex 624 341 48 196617 r 1067path; #P comment 56 72 26 196617 read; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 421 101 49 196617 p wfkeys; #P hidden message 421 145 58 196617 set bufpol3; #P hidden newex 421 121 45 196617 loadbang; #P user waveform~ 421 163 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 380 400 27 196617 stop; #P message 312 400 65 196617 startwindow; #P newex 421 425 29 196617 dac~; #P newex 421 375 30 196617 line~; #P message 421 352 72 196617 0 \, 4000 4000; #P newex 421 399 69 196617 play~ bufpol3; #P newex 61 399 61 196617 vasp.freeze; #P comment 119 294 190 196617 polar to cartesian coordinate conversion; #P comment 178 238 81 196617 scale to 0 - 2¹; #P comment 146 215 68 196617 random phase; #P comment 130 184 116 196617 split amplitude and phase; #P comment 130 157 193 196617 cartesian to polar coordinate conversion; #P newex 624 399 105 196617 buffer~ bufpol4 4000; #P newex 624 378 105 196617 buffer~ bufpol3 4000; #P message 61 109 101 196617 vasp bufpol3 bufpol4; #P newex 61 338 61 196617 vasp.update; #P newex 61 315 52 196617 vasp.c!fft; #P newex 61 292 51 196617 vasp.rect; #P newex 61 269 58 196617 vasp.join 2; #P newex 86 237 86 196617 vasp.* 3.141593; #P newex 86 213 55 196617 vasp.noise; #P newex 61 181 61 196617 vasp.split 2; #P newex 61 155 55 196617 vasp.polar; #P newex 61 133 49 196617 vasp.cfft; #P comment 129 135 151 196617 complex fourier transmormation; #P comment 56 31 193 196622 phase random_example; #P comment 127 401 170 196617 is an abstraction that does the same; #P connect 12 0 3 0; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 8 0; #P connect 8 0 9 0; #P connect 9 0 10 0; #P connect 10 0 11 0; #P connect 5 1 6 0; #P connect 6 0 7 0; #P fasten 7 0 8 1 91 261 114 261; #P hidden connect 36 1 35 0; #P hidden connect 28 0 29 0; #P hidden fasten 13 1 29 0 724 396 740 396 740 103 426 103; #P hidden connect 30 0 27 0; #P hidden connect 29 0 27 0; #P connect 22 0 23 0; #P connect 23 0 21 0; #P connect 21 0 24 0; #P fasten 26 0 24 0 385 420 426 420; #P fasten 25 0 24 0 317 420 426 420; #P connect 21 0 24 1; #P connect 34 0 33 0; #P hidden fasten 32 0 13 0 629 372 629 372; #P pop; #P newobj 60 380 115 196617 p phaserandom_example; #P comment 173 258 173 196617 real-> amplitude / imaginary-> phase; #P comment 173 174 179 196617 transform into real and imaginary part; #P message 60 257 101 196617 vasp bufpol1 bufpol2; #P message 60 173 101 196617 vasp bufpol1 bufpol2; #P newex 60 277 55 196617 vasp.polar; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 382 43 49 196617 p wfkeys; #P comment 607 215 86 196617 phase / imaginary; #P hidden message 382 209 58 196617 set bufpol2; #P user waveform~ 382 230 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 589 380 105 196617 buffer~ bufpol2 2000; #P hidden message 382 87 58 196617 set bufpol1; #P hidden newex 382 63 45 196617 loadbang; #P user waveform~ 382 105 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 60 193 49 196617 vasp.cfft; #P newex 60 304 61 196617 vasp.update; #P newex 589 359 105 196617 buffer~ bufpol1 2000; #P comment 52 59 192 196617 cartesian to polar coordinate conversion; #P comment 52 36 89 196622 vasp.polar; #P comment 617 90 78 196617 amplitude / real; #P connect 15 0 5 0; #P connect 5 0 20 0; #P connect 16 0 14 0; #P connect 14 0 4 0; #P hidden connect 26 1 25 0; #P hidden connect 7 0 8 0; #P hidden fasten 3 1 8 0 689 377 699 377 699 82 387 82; #P hidden connect 13 0 6 0; #P hidden connect 8 0 6 0; #P hidden fasten 7 0 11 0 387 68 387 68; #P hidden connect 13 0 10 0; #P hidden connect 11 0 10 0; #P connect 24 0 23 0; #P hidden connect 22 0 3 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 209 148 932 603;
+#P origin 0 27;
+#P user umenu 79 131 72 196647 1 64 147 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 347 671;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 54 196617 s 1067path1;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 4 0 1 0;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 141 153 43 196617 p loader;
+#P message 487 360 101 196617 vasp bufpol1 bufpol2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 487 380 78 196617 p clear_buffers;
+#P hidden newex 589 336 54 196617 r 1067path1;
+#P comment 52 133 26 196617 read;
+#P newex 60 216 61 196617 vasp.update;
+#N vpatcher 148 79 912 552;
+#P origin 0 14;
+#P user umenu 83 71 72 196647 1 64 87 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 344 681;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1067path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P connect 4 0 1 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 145 89 43 196617 p loader;
+#P message 521 380 101 196617 vasp bufpol3 bufpol4;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 521 399 78 196617 p clear_buffers;
+#P hidden newex 624 341 48 196617 r 1067path;
+#P comment 56 72 26 196617 read;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 421 101 49 196617 p wfkeys;
+#P hidden message 421 145 58 196617 set bufpol3;
+#P hidden newex 421 121 45 196617 loadbang;
+#P user waveform~ 421 163 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 380 400 27 196617 stop;
+#P message 312 400 65 196617 startwindow;
+#P newex 421 425 29 196617 dac~;
+#P newex 421 375 30 196617 line~;
+#P message 421 352 72 196617 0 \, 4000 4000;
+#P newex 421 399 69 196617 play~ bufpol3;
+#P newex 61 399 61 196617 vasp.freeze;
+#P comment 119 294 190 196617 polar to cartesian coordinate conversion;
+#P comment 178 238 81 196617 scale to 0 - 2¹;
+#P comment 146 215 68 196617 random phase;
+#P comment 130 184 116 196617 split amplitude and phase;
+#P comment 130 157 193 196617 cartesian to polar coordinate conversion;
+#P newex 624 399 105 196617 buffer~ bufpol4 4000;
+#P newex 624 378 105 196617 buffer~ bufpol3 4000;
+#P message 61 109 101 196617 vasp bufpol3 bufpol4;
+#P newex 61 338 61 196617 vasp.update;
+#P newex 61 315 52 196617 vasp.c!fft;
+#P newex 61 292 51 196617 vasp.rect;
+#P newex 61 269 58 196617 vasp.join 2;
+#P newex 86 237 86 196617 vasp.* 3.141593;
+#P newex 86 213 55 196617 vasp.noise;
+#P newex 61 181 61 196617 vasp.split 2;
+#P newex 61 155 55 196617 vasp.polar;
+#P newex 61 133 49 196617 vasp.cfft;
+#P comment 129 135 151 196617 complex fourier transmormation;
+#P comment 56 31 193 196622 phase random_example;
+#P comment 127 401 170 196617 is an abstraction that does the same;
+#P connect 12 0 3 0;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 8 0;
+#P connect 8 0 9 0;
+#P connect 9 0 10 0;
+#P connect 10 0 11 0;
+#P connect 5 1 6 0;
+#P connect 6 0 7 0;
+#P fasten 7 0 8 1 91 261 114 261;
+#P hidden connect 36 1 35 0;
+#P hidden connect 28 0 29 0;
+#P hidden fasten 13 1 29 0 724 396 740 396 740 103 426 103;
+#P hidden connect 30 0 27 0;
+#P hidden connect 29 0 27 0;
+#P connect 22 0 23 0;
+#P connect 23 0 21 0;
+#P connect 21 0 24 0;
+#P fasten 26 0 24 0 385 420 426 420;
+#P fasten 25 0 24 0 317 420 426 420;
+#P connect 21 0 24 1;
+#P connect 34 0 33 0;
+#P hidden fasten 32 0 13 0 629 372 629 372;
+#P pop;
+#P newobj 60 380 115 196617 p phaserandom_example;
+#P comment 173 258 173 196617 real-> amplitude / imaginary-> phase;
+#P comment 173 174 179 196617 transform into real and imaginary part;
+#P message 60 257 101 196617 vasp bufpol1 bufpol2;
+#P message 60 173 101 196617 vasp bufpol1 bufpol2;
+#P newex 60 277 55 196617 vasp.polar;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 382 43 49 196617 p wfkeys;
+#P comment 607 215 86 196617 phase / imaginary;
+#P hidden message 382 209 58 196617 set bufpol2;
+#P user waveform~ 382 230 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 589 380 105 196617 buffer~ bufpol2 2000;
+#P hidden message 382 87 58 196617 set bufpol1;
+#P hidden newex 382 63 45 196617 loadbang;
+#P user waveform~ 382 105 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 60 193 49 196617 vasp.cfft;
+#P newex 60 304 61 196617 vasp.update;
+#P newex 589 359 105 196617 buffer~ bufpol1 2000;
+#P comment 52 59 192 196617 cartesian to polar coordinate conversion;
+#P comment 52 36 89 196622 vasp.polar;
+#P comment 617 90 78 196617 amplitude / real;
+#P connect 15 0 5 0;
+#P connect 5 0 20 0;
+#P connect 16 0 14 0;
+#P connect 14 0 4 0;
+#P hidden connect 26 1 25 0;
+#P hidden connect 7 0 8 0;
+#P hidden fasten 3 1 8 0 689 377 699 377 699 82 387 82;
+#P hidden connect 13 0 6 0;
+#P hidden connect 8 0 6 0;
+#P hidden fasten 7 0 11 0 387 68 387 68;
+#P hidden connect 13 0 10 0;
+#P hidden connect 11 0 10 0;
+#P connect 24 0 23 0;
+#P hidden connect 22 0 3 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.pow.help b/externals/grill/vasp/max-help/vasp.pow.help
index 920fc580..496b0468 100755
--- a/externals/grill/vasp/max-help/vasp.pow.help
+++ b/externals/grill/vasp/max-help/vasp.pow.help
@@ -1 +1,98 @@
-max v2; #N vpatcher 201 127 816 493; #P newex 55 196 61 196617 vasp.update; #P message 404 291 64 196617 vasp bufpow; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 404 312 73 196617 p clear_buffer; #P flonum 134 257 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 50 67 66 196617 sample^x; #P message 55 235 64 196617 vasp bufpow; #P newex 55 280 68 196617 vasp.pow 0.1; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 280 65 49 196617 p wfkeys; #P hidden message 280 111 55 196617 set bufpow; #P hidden newex 280 87 45 196617 loadbang; #P user waveform~ 280 137 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 55 174 55 196617 vasp.* 0.2; #P newex 55 312 61 196617 vasp.update; #P message 55 123 64 196617 vasp bufpow; #P newex 487 312 104 196617 buffer~ bufpow 2000; #P comment 50 97 155 196617 argument/right inlet: exponent; #P newex 55 152 80 196617 vasp.osc 44100; #P comment 50 82 168 196617 power function; #P comment 50 43 89 196622 vasp.pow; #P comment 171 258 52 196617 exponent; #P comment 141 153 123 196617 generate a 1Hz sine wave; #P connect 7 0 4 0; #P connect 4 0 9 0; #P connect 9 0 20 0; #P connect 15 0 14 0; #P connect 14 0 8 0; #P fasten 17 0 14 1 139 275 118 275; #P hidden connect 11 0 12 0; #P hidden connect 12 0 10 0; #P hidden connect 13 0 10 0; #P connect 19 0 18 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 201 127 816 493;
+#P newex 55 196 61 196617 vasp.update;
+#P message 404 291 64 196617 vasp bufpow;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 404 312 73 196617 p clear_buffer;
+#P flonum 134 257 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 50 67 66 196617 sample^x;
+#P message 55 235 64 196617 vasp bufpow;
+#P newex 55 280 68 196617 vasp.pow 0.1;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 280 65 49 196617 p wfkeys;
+#P hidden message 280 111 55 196617 set bufpow;
+#P hidden newex 280 87 45 196617 loadbang;
+#P user waveform~ 280 137 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 55 174 55 196617 vasp.* 0.2;
+#P newex 55 312 61 196617 vasp.update;
+#P message 55 123 64 196617 vasp bufpow;
+#P newex 487 312 104 196617 buffer~ bufpow 2000;
+#P comment 50 97 155 196617 argument/right inlet: exponent;
+#P newex 55 152 80 196617 vasp.osc 44100;
+#P comment 50 82 168 196617 power function;
+#P comment 50 43 89 196622 vasp.pow;
+#P comment 171 258 52 196617 exponent;
+#P comment 141 153 123 196617 generate a 1Hz sine wave;
+#P connect 7 0 4 0;
+#P connect 4 0 9 0;
+#P connect 9 0 20 0;
+#P connect 15 0 14 0;
+#P connect 14 0 8 0;
+#P fasten 17 0 14 1 139 275 118 275;
+#P hidden connect 11 0 12 0;
+#P hidden connect 12 0 10 0;
+#P hidden connect 13 0 10 0;
+#P connect 19 0 18 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.pwrap.help b/externals/grill/vasp/max-help/vasp.pwrap.help
index 1841ec99..ddc11a81 100755
--- a/externals/grill/vasp/max-help/vasp.pwrap.help
+++ b/externals/grill/vasp/max-help/vasp.pwrap.help
@@ -1 +1,6 @@
-max v2; #N vpatcher 256 153 557 315; #P comment 44 38 89 196622 vasp.pwrap; #P newex 116 103 60 196617 vasp.pwrap; #P comment 44 62 179 196617 wraps value from 0-2¹ to -¹ to ¹; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 256 153 557 315;
+#P comment 44 38 89 196622 vasp.pwrap;
+#P newex 116 103 60 196617 vasp.pwrap;
+#P comment 44 62 179 196617 wraps value from 0-2¹ to -¹ to ¹;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.radd.help b/externals/grill/vasp/max-help/vasp.radd.help
index 0a9b9d46..af2abb0f 100755
--- a/externals/grill/vasp/max-help/vasp.radd.help
+++ b/externals/grill/vasp/max-help/vasp.radd.help
@@ -1 +1,168 @@
-max v2; #N vpatcher 196 126 817 622; #P message 393 402 95 196617 vasp bufr+1 bufr+2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 393 423 78 196617 p clear_buffers; #P hidden newex 492 383 48 196617 r 1108path; #P user umenu 73 129 72 196647 1 64 145 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1108path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 135 151 43 196617 p loader; #P comment 46 131 26 196617 read; #P comment 190 244 30 196617 value; #P newex 53 287 61 196617 vasp.update; #P newex 53 367 61 196617 vasp.update; #P newex 53 213 61 196617 vasp.update; #P flonum 153 243 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 46 89 137 196617 needs two vectors; #P newex 53 346 52 196617 vasp.c!fft; #P message 53 325 95 196617 vasp bufr+1 bufr+2; #P newex 53 191 49 196617 vasp.cfft; #P message 53 169 95 196617 vasp bufr+1 bufr+2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 283 74 49 196617 p wfkeys; #P hidden message 283 246 55 196617 set bufr+2; #P user waveform~ 283 264 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 492 423 103 196617 buffer~ bufr+2 2000; #P comment 46 60 170 196617 add a value to the complex radius; #P newex 53 267 65 196617 vasp.r+ 0.05; #P hidden message 283 122 55 196617 set bufr+1; #P hidden newex 283 95 45 196617 loadbang; #P user waveform~ 283 143 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 230 423 27 196617 stop; #P message 163 423 65 196617 startwindow; #P newex 283 401 30 196617 line~; #P message 283 381 72 196617 0 \, 2000 2000; #P newex 283 449 29 196617 dac~; #P newex 283 423 65 196617 play~ bufr+1; #P message 53 243 95 196617 vasp bufr+1 bufr+2; #P newex 492 402 103 196617 buffer~ bufr+1 2000; #P comment 46 37 78 196622 vasp.r+; #P comment 46 74 168 196617 argument/right inlet: value (offset); #P connect 19 0 20 0; #P connect 20 0 25 0; #P connect 3 0 13 0; #P connect 13 0 27 0; #P connect 21 0 22 0; #P connect 22 0 26 0; #P fasten 24 0 13 1 158 263 113 263; #P hidden connect 31 1 30 0; #P hidden connect 11 0 12 0; #P hidden fasten 2 1 12 0 590 421 601 421 601 116 288 116; #P hidden connect 18 0 10 0; #P hidden connect 12 0 10 0; #P hidden connect 11 0 17 0; #P hidden fasten 15 1 17 0 590 444 601 444 601 243 288 243; #P hidden connect 18 0 16 0; #P hidden connect 17 0 16 0; #P connect 6 0 7 0; #P connect 7 0 4 0; #P fasten 9 0 5 0 235 443 288 443; #P fasten 8 0 5 0 168 443 288 443; #P connect 4 0 5 0; #P connect 4 0 5 1; #P connect 34 0 33 0; #P hidden connect 32 0 2 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 196 126 817 622;
+#P message 393 402 95 196617 vasp bufr+1 bufr+2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 393 423 78 196617 p clear_buffers;
+#P hidden newex 492 383 48 196617 r 1108path;
+#P user umenu 73 129 72 196647 1 64 145 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1108path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 135 151 43 196617 p loader;
+#P comment 46 131 26 196617 read;
+#P comment 190 244 30 196617 value;
+#P newex 53 287 61 196617 vasp.update;
+#P newex 53 367 61 196617 vasp.update;
+#P newex 53 213 61 196617 vasp.update;
+#P flonum 153 243 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 46 89 137 196617 needs two vectors;
+#P newex 53 346 52 196617 vasp.c!fft;
+#P message 53 325 95 196617 vasp bufr+1 bufr+2;
+#P newex 53 191 49 196617 vasp.cfft;
+#P message 53 169 95 196617 vasp bufr+1 bufr+2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 283 74 49 196617 p wfkeys;
+#P hidden message 283 246 55 196617 set bufr+2;
+#P user waveform~ 283 264 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 492 423 103 196617 buffer~ bufr+2 2000;
+#P comment 46 60 170 196617 add a value to the complex radius;
+#P newex 53 267 65 196617 vasp.r+ 0.05;
+#P hidden message 283 122 55 196617 set bufr+1;
+#P hidden newex 283 95 45 196617 loadbang;
+#P user waveform~ 283 143 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 230 423 27 196617 stop;
+#P message 163 423 65 196617 startwindow;
+#P newex 283 401 30 196617 line~;
+#P message 283 381 72 196617 0 \, 2000 2000;
+#P newex 283 449 29 196617 dac~;
+#P newex 283 423 65 196617 play~ bufr+1;
+#P message 53 243 95 196617 vasp bufr+1 bufr+2;
+#P newex 492 402 103 196617 buffer~ bufr+1 2000;
+#P comment 46 37 78 196622 vasp.r+;
+#P comment 46 74 168 196617 argument/right inlet: value (offset);
+#P connect 19 0 20 0;
+#P connect 20 0 25 0;
+#P connect 3 0 13 0;
+#P connect 13 0 27 0;
+#P connect 21 0 22 0;
+#P connect 22 0 26 0;
+#P fasten 24 0 13 1 158 263 113 263;
+#P hidden connect 31 1 30 0;
+#P hidden connect 11 0 12 0;
+#P hidden fasten 2 1 12 0 590 421 601 421 601 116 288 116;
+#P hidden connect 18 0 10 0;
+#P hidden connect 12 0 10 0;
+#P hidden connect 11 0 17 0;
+#P hidden fasten 15 1 17 0 590 444 601 444 601 243 288 243;
+#P hidden connect 18 0 16 0;
+#P hidden connect 17 0 16 0;
+#P connect 6 0 7 0;
+#P connect 7 0 4 0;
+#P fasten 9 0 5 0 235 443 288 443;
+#P fasten 8 0 5 0 168 443 288 443;
+#P connect 4 0 5 0;
+#P connect 4 0 5 1;
+#P connect 34 0 33 0;
+#P hidden connect 32 0 2 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rect.help b/externals/grill/vasp/max-help/vasp.rect.help
index bce9fe51..f03d5187 100755
--- a/externals/grill/vasp/max-help/vasp.rect.help
+++ b/externals/grill/vasp/max-help/vasp.rect.help
@@ -1 +1,301 @@
-max v2; #N vpatcher 213 143 951 665; #P user umenu 84 105 72 196647 1 64 121 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 347 671; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 54 196617 s 1069path1; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 4 0 1 0; #P connect 3 1 0 0; #P pop; #P hidden newobj 146 127 43 196617 p loader; #P message 467 441 113 196617 vasp bufrect1 bufrect2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 467 460 78 196617 p clear_buffers; #P hidden newex 582 414 54 196617 r 1069path1; #P comment 57 107 26 196617 read; #P comment 187 376 179 196617 tranform with invers cfft to original; #P newex 63 416 61 196617 vasp.update; #P message 63 375 113 196617 vasp bufrect1 bufrect2; #P newex 63 395 52 196617 vasp.c!fft; #P newex 63 186 61 196617 vasp.update; #P message 63 297 113 196617 vasp bufrect1 bufrect2; #P newex 63 317 51 196617 vasp.rect; #P newex 63 339 61 196617 vasp.update; #P comment 187 221 173 196617 real-> amplitude / imaginary-> phase; #N vpatcher 148 168 892 640; #P user umenu 83 67 72 196647 1 64 83 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 347 671; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1069path; #P newex 138 102 79 196617 sprintf read %s; #P connect 2 0 3 0; #P connect 3 0 4 0; #P fasten 0 0 1 0 143 134 64 134; #P connect 4 0 1 0; #P connect 3 1 0 0; #P pop; #P hidden newobj 145 89 43 196617 p loader; #P message 591 355 113 196617 vasp bufrect3 bufrect4; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 591 374 78 196617 p clear_buffers; #P hidden newex 544 395 48 196617 r 1069path; #P comment 56 68 26 196617 read; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 394 60 49 196617 p wfkeys; #P hidden message 394 104 64 196617 set bufrect3; #P hidden newex 394 80 45 196617 loadbang; #P user waveform~ 394 122 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 394 395 27 196617 stop; #P message 326 395 65 196617 startwindow; #P newex 435 421 29 196617 dac~; #P newex 435 369 30 196617 line~; #P message 435 346 72 196617 0 \, 4000 4000; #P newex 435 394 75 196617 play~ bufrect3; #P newex 61 395 61 196617 vasp.freeze; #P comment 118 290 190 196617 polar to cartesian coordinate conversion; #P comment 178 235 81 196617 scale to 0 - 2¹; #P comment 149 211 68 196617 random phase; #P comment 128 180 116 196617 split amplitude and phase; #P comment 123 153 193 196617 cartesian to polar coordinate conversion; #P newex 591 416 111 196617 buffer~ bufrect4 4000; #P newex 591 394 111 196617 buffer~ bufrect3 4000; #P message 61 105 113 196617 vasp bufrect3 bufrect4; #P newex 61 334 61 196617 vasp.update; #P newex 61 311 52 196617 vasp.c!fft; #P newex 61 288 51 196617 vasp.rect; #P newex 61 265 58 196617 vasp.join 2; #P newex 86 233 86 196617 vasp.* 3.141593; #P newex 86 209 55 196617 vasp.noise; #P newex 61 177 61 196617 vasp.split 2; #P newex 61 151 55 196617 vasp.polar; #P newex 61 129 49 196617 vasp.cfft; #P comment 122 131 151 196617 complex fourier transformation; #P comment 56 35 177 196622 phase random_example; #P comment 127 397 170 196617 is an abstraction that does the same; #P connect 12 0 3 0; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 8 0; #P connect 8 0 9 0; #P connect 9 0 10 0; #P connect 10 0 11 0; #P connect 5 1 6 0; #P connect 6 0 7 0; #P fasten 7 0 8 1 91 257 114 257; #P hidden connect 36 1 35 0; #P hidden fasten 13 1 29 0 697 413 713 413 713 99 399 99; #P hidden connect 28 0 29 0; #P hidden connect 29 0 27 0; #P hidden connect 30 0 27 0; #P connect 22 0 23 0; #P connect 23 0 21 0; #P connect 21 0 24 0; #P fasten 25 0 24 0 331 414 440 414; #P fasten 26 0 24 0 399 414 440 414; #P connect 21 0 24 1; #P connect 34 0 33 0; #P hidden fasten 32 0 13 0 549 388 596 388; #P pop; #P newobj 63 460 115 196617 p phaserandom_example; #P comment 187 298 180 196617 amplitude-> real / phase-> imaginary; #P comment 187 146 179 196617 tranform with cfft to real / imaginary; #P message 63 220 113 196617 vasp bufrect1 bufrect2; #P message 63 145 113 196617 vasp bufrect1 bufrect2; #P newex 63 240 55 196617 vasp.polar; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 385 85 49 196617 p wfkeys; #P comment 611 257 86 196617 imaginary / phase; #P hidden message 385 251 64 196617 set bufrect2; #P user waveform~ 385 272 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 582 460 111 196617 buffer~ bufrect2 2000; #P hidden message 385 129 64 196617 set bufrect1; #P hidden newex 385 105 45 196617 loadbang; #P user waveform~ 385 147 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 63 165 49 196617 vasp.cfft; #P newex 63 262 61 196617 vasp.update; #P newex 582 441 111 196617 buffer~ bufrect1 2000; #P comment 54 71 192 196617 polar to cartesian coordinate conversion; #P comment 54 48 76 196622 vasp.rect; #P comment 620 132 83 196617 real / amplitude; #P connect 15 0 5 0; #P connect 5 0 24 0; #P connect 16 0 14 0; #P connect 14 0 4 0; #P connect 23 0 22 0; #P connect 22 0 21 0; #P connect 26 0 25 0; #P connect 25 0 27 0; #P hidden connect 34 1 33 0; #P hidden connect 7 0 8 0; #P hidden fasten 3 1 8 0 688 458 702 458 702 74 390 74; #P hidden connect 13 0 6 0; #P hidden connect 8 0 6 0; #P hidden fasten 7 0 11 0 390 110 390 110; #P hidden connect 11 0 10 0; #P hidden connect 13 0 10 0; #P connect 32 0 31 0; #P hidden connect 30 0 3 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 213 143 951 665;
+#P user umenu 84 105 72 196647 1 64 121 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 347 671;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 54 196617 s 1069path1;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 4 0 1 0;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 146 127 43 196617 p loader;
+#P message 467 441 113 196617 vasp bufrect1 bufrect2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 467 460 78 196617 p clear_buffers;
+#P hidden newex 582 414 54 196617 r 1069path1;
+#P comment 57 107 26 196617 read;
+#P comment 187 376 179 196617 tranform with invers cfft to original;
+#P newex 63 416 61 196617 vasp.update;
+#P message 63 375 113 196617 vasp bufrect1 bufrect2;
+#P newex 63 395 52 196617 vasp.c!fft;
+#P newex 63 186 61 196617 vasp.update;
+#P message 63 297 113 196617 vasp bufrect1 bufrect2;
+#P newex 63 317 51 196617 vasp.rect;
+#P newex 63 339 61 196617 vasp.update;
+#P comment 187 221 173 196617 real-> amplitude / imaginary-> phase;
+#N vpatcher 148 168 892 640;
+#P user umenu 83 67 72 196647 1 64 83 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 347 671;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1069path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P connect 2 0 3 0;
+#P connect 3 0 4 0;
+#P fasten 0 0 1 0 143 134 64 134;
+#P connect 4 0 1 0;
+#P connect 3 1 0 0;
+#P pop;
+#P hidden newobj 145 89 43 196617 p loader;
+#P message 591 355 113 196617 vasp bufrect3 bufrect4;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 591 374 78 196617 p clear_buffers;
+#P hidden newex 544 395 48 196617 r 1069path;
+#P comment 56 68 26 196617 read;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 394 60 49 196617 p wfkeys;
+#P hidden message 394 104 64 196617 set bufrect3;
+#P hidden newex 394 80 45 196617 loadbang;
+#P user waveform~ 394 122 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 394 395 27 196617 stop;
+#P message 326 395 65 196617 startwindow;
+#P newex 435 421 29 196617 dac~;
+#P newex 435 369 30 196617 line~;
+#P message 435 346 72 196617 0 \, 4000 4000;
+#P newex 435 394 75 196617 play~ bufrect3;
+#P newex 61 395 61 196617 vasp.freeze;
+#P comment 118 290 190 196617 polar to cartesian coordinate conversion;
+#P comment 178 235 81 196617 scale to 0 - 2¹;
+#P comment 149 211 68 196617 random phase;
+#P comment 128 180 116 196617 split amplitude and phase;
+#P comment 123 153 193 196617 cartesian to polar coordinate conversion;
+#P newex 591 416 111 196617 buffer~ bufrect4 4000;
+#P newex 591 394 111 196617 buffer~ bufrect3 4000;
+#P message 61 105 113 196617 vasp bufrect3 bufrect4;
+#P newex 61 334 61 196617 vasp.update;
+#P newex 61 311 52 196617 vasp.c!fft;
+#P newex 61 288 51 196617 vasp.rect;
+#P newex 61 265 58 196617 vasp.join 2;
+#P newex 86 233 86 196617 vasp.* 3.141593;
+#P newex 86 209 55 196617 vasp.noise;
+#P newex 61 177 61 196617 vasp.split 2;
+#P newex 61 151 55 196617 vasp.polar;
+#P newex 61 129 49 196617 vasp.cfft;
+#P comment 122 131 151 196617 complex fourier transformation;
+#P comment 56 35 177 196622 phase random_example;
+#P comment 127 397 170 196617 is an abstraction that does the same;
+#P connect 12 0 3 0;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 8 0;
+#P connect 8 0 9 0;
+#P connect 9 0 10 0;
+#P connect 10 0 11 0;
+#P connect 5 1 6 0;
+#P connect 6 0 7 0;
+#P fasten 7 0 8 1 91 257 114 257;
+#P hidden connect 36 1 35 0;
+#P hidden fasten 13 1 29 0 697 413 713 413 713 99 399 99;
+#P hidden connect 28 0 29 0;
+#P hidden connect 29 0 27 0;
+#P hidden connect 30 0 27 0;
+#P connect 22 0 23 0;
+#P connect 23 0 21 0;
+#P connect 21 0 24 0;
+#P fasten 25 0 24 0 331 414 440 414;
+#P fasten 26 0 24 0 399 414 440 414;
+#P connect 21 0 24 1;
+#P connect 34 0 33 0;
+#P hidden fasten 32 0 13 0 549 388 596 388;
+#P pop;
+#P newobj 63 460 115 196617 p phaserandom_example;
+#P comment 187 298 180 196617 amplitude-> real / phase-> imaginary;
+#P comment 187 146 179 196617 tranform with cfft to real / imaginary;
+#P message 63 220 113 196617 vasp bufrect1 bufrect2;
+#P message 63 145 113 196617 vasp bufrect1 bufrect2;
+#P newex 63 240 55 196617 vasp.polar;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 385 85 49 196617 p wfkeys;
+#P comment 611 257 86 196617 imaginary / phase;
+#P hidden message 385 251 64 196617 set bufrect2;
+#P user waveform~ 385 272 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 582 460 111 196617 buffer~ bufrect2 2000;
+#P hidden message 385 129 64 196617 set bufrect1;
+#P hidden newex 385 105 45 196617 loadbang;
+#P user waveform~ 385 147 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 63 165 49 196617 vasp.cfft;
+#P newex 63 262 61 196617 vasp.update;
+#P newex 582 441 111 196617 buffer~ bufrect1 2000;
+#P comment 54 71 192 196617 polar to cartesian coordinate conversion;
+#P comment 54 48 76 196622 vasp.rect;
+#P comment 620 132 83 196617 real / amplitude;
+#P connect 15 0 5 0;
+#P connect 5 0 24 0;
+#P connect 16 0 14 0;
+#P connect 14 0 4 0;
+#P connect 23 0 22 0;
+#P connect 22 0 21 0;
+#P connect 26 0 25 0;
+#P connect 25 0 27 0;
+#P hidden connect 34 1 33 0;
+#P hidden connect 7 0 8 0;
+#P hidden fasten 3 1 8 0 688 458 702 458 702 74 390 74;
+#P hidden connect 13 0 6 0;
+#P hidden connect 8 0 6 0;
+#P hidden fasten 7 0 11 0 390 110 390 110;
+#P hidden connect 11 0 10 0;
+#P hidden connect 13 0 10 0;
+#P connect 32 0 31 0;
+#P hidden connect 30 0 3 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rfft.help b/externals/grill/vasp/max-help/vasp.rfft.help
index d7508fa5..4508d4da 100755
--- a/externals/grill/vasp/max-help/vasp.rfft.help
+++ b/externals/grill/vasp/max-help/vasp.rfft.help
@@ -1 +1,137 @@
-max v2; #N vpatcher 424 101 1093 481; #P comment 120 291 78 196617 inverse real fft; #P comment 122 211 43 196617 real fft; #P message 281 312 27 196617 stop; #P message 213 312 65 196617 startwindow; #P newex 322 338 29 196617 dac~; #P newex 322 286 30 196617 line~; #P message 322 263 72 196617 0 \, 2000 2000; #P newex 322 312 65 196617 play~ bufrfft; #P hidden newex 522 292 48 196617 r 1065path; #P user umenu 86 140 72 196647 1 64 156 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1065path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 148 162 43 196617 p loader; #P message 439 292 63 196617 vasp bufrfft; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 439 312 73 196617 p clear_buffer; #P newex 65 312 61 196617 vasp.update; #P message 65 267 63 196617 vasp bufrfft; #P newex 65 288 52 196617 vasp.r!fft; #P newex 65 232 61 196617 vasp.update; #P comment 51 105 254 196617 the imaginary part of the fft is assumed to be zero; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 55 196617 set bufrfft; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 65 187 63 196617 vasp bufrfft; #P newex 522 312 103 196617 buffer~ bufrfft 2000; #P newex 65 208 49 196617 vasp.rfft; #P comment 52 70 167 196617 real fft; #P comment 52 48 89 196622 vasp.rfft; #P comment 598 103 44 196617 source; #P comment 52 88 254 196617 opposite to cfft there is only one real input buffer; #P comment 54 142 31 196617 read; #P connect 7 0 5 0; #P connect 5 0 13 0; #P connect 15 0 14 0; #P connect 14 0 16 0; #P hidden connect 20 1 19 0; #P hidden connect 9 0 10 0; #P hidden fasten 6 1 10 0 620 333 638 333 638 94 326 94; #P hidden connect 10 0 8 0; #P hidden connect 11 0 8 0; #P connect 23 0 24 0; #P connect 24 0 22 0; #P fasten 27 0 25 0 286 331 327 331; #P fasten 26 0 25 0 218 331 327 331; #P connect 22 0 25 0; #P connect 22 0 25 1; #P connect 18 0 17 0; #P hidden connect 21 0 6 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 424 101 1093 481;
+#P comment 120 291 78 196617 inverse real fft;
+#P comment 122 211 43 196617 real fft;
+#P message 281 312 27 196617 stop;
+#P message 213 312 65 196617 startwindow;
+#P newex 322 338 29 196617 dac~;
+#P newex 322 286 30 196617 line~;
+#P message 322 263 72 196617 0 \, 2000 2000;
+#P newex 322 312 65 196617 play~ bufrfft;
+#P hidden newex 522 292 48 196617 r 1065path;
+#P user umenu 86 140 72 196647 1 64 156 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1065path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 148 162 43 196617 p loader;
+#P message 439 292 63 196617 vasp bufrfft;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 439 312 73 196617 p clear_buffer;
+#P newex 65 312 61 196617 vasp.update;
+#P message 65 267 63 196617 vasp bufrfft;
+#P newex 65 288 52 196617 vasp.r!fft;
+#P newex 65 232 61 196617 vasp.update;
+#P comment 51 105 254 196617 the imaginary part of the fft is assumed to be zero;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 55 196617 set bufrfft;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 65 187 63 196617 vasp bufrfft;
+#P newex 522 312 103 196617 buffer~ bufrfft 2000;
+#P newex 65 208 49 196617 vasp.rfft;
+#P comment 52 70 167 196617 real fft;
+#P comment 52 48 89 196622 vasp.rfft;
+#P comment 598 103 44 196617 source;
+#P comment 52 88 254 196617 opposite to cfft there is only one real input buffer;
+#P comment 54 142 31 196617 read;
+#P connect 7 0 5 0;
+#P connect 5 0 13 0;
+#P connect 15 0 14 0;
+#P connect 14 0 16 0;
+#P hidden connect 20 1 19 0;
+#P hidden connect 9 0 10 0;
+#P hidden fasten 6 1 10 0 620 333 638 333 638 94 326 94;
+#P hidden connect 10 0 8 0;
+#P hidden connect 11 0 8 0;
+#P connect 23 0 24 0;
+#P connect 24 0 22 0;
+#P fasten 27 0 25 0 286 331 327 331;
+#P fasten 26 0 25 0 218 331 327 331;
+#P connect 22 0 25 0;
+#P connect 22 0 25 1;
+#P connect 18 0 17 0;
+#P hidden connect 21 0 6 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rgate.help b/externals/grill/vasp/max-help/vasp.rgate.help
index 0c0602d0..ce5a6a4e 100755
--- a/externals/grill/vasp/max-help/vasp.rgate.help
+++ b/externals/grill/vasp/max-help/vasp.rgate.help
@@ -1 +1,170 @@
-max v2; #N vpatcher 180 112 873 652; #P message 425 400 123 196617 vasp bufrgate1 bufrgate2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 425 455 78 196617 p clear_buffers; #P hidden newex 539 406 48 196617 r 1170path; #P user umenu 78 143 72 196647 1 64 159 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1170path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 140 165 43 196617 p loader; #P comment 52 145 26 196617 read; #P comment 52 101 172 196617 needs two vectors (real/imaginary); #P newex 63 404 61 196617 vasp.update; #P message 63 360 123 196617 vasp bufrgate1 bufrgate2; #P newex 63 381 52 196617 vasp.c!fft; #P comment 165 287 32 196617 value; #P newex 63 227 61 196617 vasp.update; #P newex 63 324 61 196617 vasp.update; #P flonum 127 285 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0; #P message 63 261 123 196617 vasp bufrgate1 bufrgate2; #P newex 63 304 74 196617 vasp.rgate 0.2; #P message 301 456 27 196617 stop; #P message 233 456 65 196617 startwindow; #P newex 342 480 29 196617 dac~; #P newex 342 429 30 196617 line~; #P message 342 400 72 196617 0 \, 2000 2000; #P newex 342 455 80 196617 play~ bufrgate1; #P message 63 183 123 196617 vasp bufrgate1 bufrgate2; #P newex 63 204 49 196617 vasp.cfft; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 342 85 49 196617 p wfkeys; #P hidden message 342 255 69 196617 set bufrgate2; #P user waveform~ 342 273 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 539 455 115 196617 buffer~ bufrgate2 2000; #P hidden message 342 135 69 196617 set bufrgate1; #P hidden newex 342 107 45 196617 loadbang; #P user waveform~ 342 153 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 539 434 115 196617 buffer~ bufrgate1 2000; #P comment 52 86 303 196617 argument/right inlet: value (usualy from 0-1) to gate the radius; #P comment 52 71 257 196617 gate the radius of a complex buffer content with a value; #P comment 52 48 89 196622 vasp.rgate; #P connect 12 0 11 0; #P connect 11 0 23 0; #P connect 20 0 19 0; #P connect 19 0 22 0; #P connect 26 0 25 0; #P connect 25 0 27 0; #P connect 21 0 19 1; #P hidden connect 31 1 30 0; #P hidden fasten 5 0 6 0 347 116 347 116; #P hidden fasten 3 1 6 0 649 452 673 452 673 131 347 131; #P hidden connect 10 0 4 0; #P hidden connect 6 0 4 0; #P hidden fasten 5 0 9 0 347 116 347 116; #P hidden fasten 7 1 9 0 649 474 673 474 673 260 347 260; #P hidden connect 9 0 8 0; #P hidden connect 10 0 8 0; #P connect 14 0 15 0; #P connect 15 0 13 0; #P connect 13 0 16 0; #P fasten 17 0 16 0 238 474 347 474; #P fasten 18 0 16 0 306 474 347 474; #P connect 13 0 16 1; #P connect 34 0 33 0; #P hidden connect 32 0 3 0; #P hidden fasten 8 5 4 4 647 376 658 376 658 147 647 147; #P hidden connect 4 5 8 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 180 112 873 652;
+#P message 425 400 123 196617 vasp bufrgate1 bufrgate2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 425 455 78 196617 p clear_buffers;
+#P hidden newex 539 406 48 196617 r 1170path;
+#P user umenu 78 143 72 196647 1 64 159 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1170path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 140 165 43 196617 p loader;
+#P comment 52 145 26 196617 read;
+#P comment 52 101 172 196617 needs two vectors (real/imaginary);
+#P newex 63 404 61 196617 vasp.update;
+#P message 63 360 123 196617 vasp bufrgate1 bufrgate2;
+#P newex 63 381 52 196617 vasp.c!fft;
+#P comment 165 287 32 196617 value;
+#P newex 63 227 61 196617 vasp.update;
+#P newex 63 324 61 196617 vasp.update;
+#P flonum 127 285 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P message 63 261 123 196617 vasp bufrgate1 bufrgate2;
+#P newex 63 304 74 196617 vasp.rgate 0.2;
+#P message 301 456 27 196617 stop;
+#P message 233 456 65 196617 startwindow;
+#P newex 342 480 29 196617 dac~;
+#P newex 342 429 30 196617 line~;
+#P message 342 400 72 196617 0 \, 2000 2000;
+#P newex 342 455 80 196617 play~ bufrgate1;
+#P message 63 183 123 196617 vasp bufrgate1 bufrgate2;
+#P newex 63 204 49 196617 vasp.cfft;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 342 85 49 196617 p wfkeys;
+#P hidden message 342 255 69 196617 set bufrgate2;
+#P user waveform~ 342 273 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 539 455 115 196617 buffer~ bufrgate2 2000;
+#P hidden message 342 135 69 196617 set bufrgate1;
+#P hidden newex 342 107 45 196617 loadbang;
+#P user waveform~ 342 153 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 539 434 115 196617 buffer~ bufrgate1 2000;
+#P comment 52 86 303 196617 argument/right inlet: value (usualy from 0-1) to gate the radius;
+#P comment 52 71 257 196617 gate the radius of a complex buffer content with a value;
+#P comment 52 48 89 196622 vasp.rgate;
+#P connect 12 0 11 0;
+#P connect 11 0 23 0;
+#P connect 20 0 19 0;
+#P connect 19 0 22 0;
+#P connect 26 0 25 0;
+#P connect 25 0 27 0;
+#P connect 21 0 19 1;
+#P hidden connect 31 1 30 0;
+#P hidden fasten 5 0 6 0 347 116 347 116;
+#P hidden fasten 3 1 6 0 649 452 673 452 673 131 347 131;
+#P hidden connect 10 0 4 0;
+#P hidden connect 6 0 4 0;
+#P hidden fasten 5 0 9 0 347 116 347 116;
+#P hidden fasten 7 1 9 0 649 474 673 474 673 260 347 260;
+#P hidden connect 9 0 8 0;
+#P hidden connect 10 0 8 0;
+#P connect 14 0 15 0;
+#P connect 15 0 13 0;
+#P connect 13 0 16 0;
+#P fasten 17 0 16 0 238 474 347 474;
+#P fasten 18 0 16 0 306 474 347 474;
+#P connect 13 0 16 1;
+#P connect 34 0 33 0;
+#P hidden connect 32 0 3 0;
+#P hidden fasten 8 5 4 4 647 376 658 376 658 147 647 147;
+#P hidden connect 4 5 8 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rifft.help b/externals/grill/vasp/max-help/vasp.rifft.help
index 57cf91b2..019a9aad 100755
--- a/externals/grill/vasp/max-help/vasp.rifft.help
+++ b/externals/grill/vasp/max-help/vasp.rifft.help
@@ -1 +1,137 @@
-max v2; #N vpatcher 308 211 977 591; #P comment 120 291 78 196617 inverse real fft; #P comment 122 211 43 196617 real fft; #P message 281 312 27 196617 stop; #P message 213 312 65 196617 startwindow; #P newex 322 338 29 196617 dac~; #P newex 322 286 30 196617 line~; #P message 322 263 72 196617 0 \, 2000 2000; #P newex 322 312 65 196617 play~ bufrfft; #P hidden newex 522 292 48 196617 r 1066path; #P user umenu 83 140 72 196647 1 64 156 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1066path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 145 162 43 196617 p loader; #P message 442 292 63 196617 vasp bufrfft; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 442 312 73 196617 p clear_buffer; #P newex 65 312 61 196617 vasp.update; #P message 65 267 63 196617 vasp bufrfft; #P newex 65 288 52 196617 vasp.r!fft; #P newex 65 232 61 196617 vasp.update; #P comment 52 100 254 196617 the imaginary part of the fft is assumed to be zero; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 321 52 49 196617 p wfkeys; #P hidden message 321 98 55 196617 set bufrfft; #P hidden newex 321 74 45 196617 loadbang; #P user waveform~ 321 118 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 65 187 63 196617 vasp bufrfft; #P newex 522 312 103 196617 buffer~ bufrfft 2000; #P newex 65 208 49 196617 vasp.rfft; #P comment 52 70 96 196617 inverse real fft; #P comment 52 48 89 196622 vasp.r!fft; #P comment 598 103 44 196617 source; #P comment 52 85 254 196617 opposite to cfft there is only one real input buffer; #P comment 52 142 31 196617 read; #P connect 7 0 5 0; #P connect 5 0 13 0; #P connect 15 0 14 0; #P connect 14 0 16 0; #P hidden connect 20 1 19 0; #P hidden fasten 6 1 10 0 620 333 638 333 638 94 326 94; #P hidden connect 9 0 10 0; #P hidden connect 11 0 8 0; #P hidden connect 10 0 8 0; #P connect 23 0 24 0; #P connect 24 0 22 0; #P connect 22 0 25 0; #P fasten 26 0 25 0 218 331 327 331; #P fasten 27 0 25 0 286 331 327 331; #P connect 22 0 25 1; #P connect 18 0 17 0; #P hidden connect 21 0 6 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 308 211 977 591;
+#P comment 120 291 78 196617 inverse real fft;
+#P comment 122 211 43 196617 real fft;
+#P message 281 312 27 196617 stop;
+#P message 213 312 65 196617 startwindow;
+#P newex 322 338 29 196617 dac~;
+#P newex 322 286 30 196617 line~;
+#P message 322 263 72 196617 0 \, 2000 2000;
+#P newex 322 312 65 196617 play~ bufrfft;
+#P hidden newex 522 292 48 196617 r 1066path;
+#P user umenu 83 140 72 196647 1 64 156 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1066path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 145 162 43 196617 p loader;
+#P message 442 292 63 196617 vasp bufrfft;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 442 312 73 196617 p clear_buffer;
+#P newex 65 312 61 196617 vasp.update;
+#P message 65 267 63 196617 vasp bufrfft;
+#P newex 65 288 52 196617 vasp.r!fft;
+#P newex 65 232 61 196617 vasp.update;
+#P comment 52 100 254 196617 the imaginary part of the fft is assumed to be zero;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 321 52 49 196617 p wfkeys;
+#P hidden message 321 98 55 196617 set bufrfft;
+#P hidden newex 321 74 45 196617 loadbang;
+#P user waveform~ 321 118 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 65 187 63 196617 vasp bufrfft;
+#P newex 522 312 103 196617 buffer~ bufrfft 2000;
+#P newex 65 208 49 196617 vasp.rfft;
+#P comment 52 70 96 196617 inverse real fft;
+#P comment 52 48 89 196622 vasp.r!fft;
+#P comment 598 103 44 196617 source;
+#P comment 52 85 254 196617 opposite to cfft there is only one real input buffer;
+#P comment 52 142 31 196617 read;
+#P connect 7 0 5 0;
+#P connect 5 0 13 0;
+#P connect 15 0 14 0;
+#P connect 14 0 16 0;
+#P hidden connect 20 1 19 0;
+#P hidden fasten 6 1 10 0 620 333 638 333 638 94 326 94;
+#P hidden connect 9 0 10 0;
+#P hidden connect 11 0 8 0;
+#P hidden connect 10 0 8 0;
+#P connect 23 0 24 0;
+#P connect 24 0 22 0;
+#P connect 22 0 25 0;
+#P fasten 26 0 25 0 218 331 327 331;
+#P fasten 27 0 25 0 286 331 327 331;
+#P connect 22 0 25 1;
+#P connect 18 0 17 0;
+#P hidden connect 21 0 6 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rmax.help b/externals/grill/vasp/max-help/vasp.rmax.help
index 619f87ba..029cff9b 100755
--- a/externals/grill/vasp/max-help/vasp.rmax.help
+++ b/externals/grill/vasp/max-help/vasp.rmax.help
@@ -1 +1,165 @@
-max v2; #N vpatcher 185 142 812 630; #P message 374 374 123 196617 vasp bufrmax1 bufrmax2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 374 416 78 196617 p clear_buffers; #P hidden newex 549 375 48 196617 r 1157path; #P user umenu 75 127 72 196647 1 64 143 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1157path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 137 149 43 196617 p loader; #P comment 49 128 26 196617 read; #P newex 53 356 61 196617 vasp.update; #P flonum 180 250 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 46 90 137 196617 needs two vectors; #P newex 53 335 52 196617 vasp.c!fft; #P message 53 314 123 196617 vasp bufrmax1 bufrmax2; #P newex 53 189 49 196617 vasp.cfft; #P message 53 167 123 196617 vasp bufrmax1 bufrmax2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 287 76 49 196617 p wfkeys; #P hidden message 287 239 69 196617 set bufrmax2; #P user waveform~ 287 256 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 484 416 115 196617 buffer~ bufrmax2 2000; #P comment 46 60 314 196617 compares the complex radius of buffer pairs and takes maximum; #P newex 53 274 74 196617 vasp.rmax 0.2; #P hidden message 287 118 69 196617 set bufrmax1; #P hidden newex 287 97 45 196617 loadbang; #P user waveform~ 287 136 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 234 416 27 196617 stop; #P message 167 416 65 196617 startwindow; #P newex 287 394 30 196617 line~; #P message 287 374 72 196617 0 \, 2000 2000; #P newex 287 442 29 196617 dac~; #P newex 287 416 80 196617 play~ bufrmax1; #P message 53 250 123 196617 vasp bufrmax1 bufrmax2; #P newex 484 394 115 196617 buffer~ bufrmax1 2000; #P comment 46 37 78 196622 vasp.rmax; #P comment 46 75 137 196617 argument/right inlet: value; #P newex 53 213 61 196617 vasp.update; #P connect 20 0 21 0; #P connect 21 0 0 0; #P connect 4 0 14 0; #P connect 22 0 23 0; #P connect 23 0 26 0; #P fasten 25 0 14 1 185 269 122 269; #P hidden connect 29 1 28 0; #P hidden connect 12 0 13 0; #P hidden fasten 3 1 13 0 594 413 605 413 605 115 292 115; #P hidden connect 19 0 11 0; #P hidden connect 13 0 11 0; #P hidden fasten 16 1 18 0 594 436 605 436 605 237 292 237; #P hidden connect 12 0 18 0; #P hidden connect 19 0 17 0; #P hidden connect 18 0 17 0; #P connect 7 0 8 0; #P connect 8 0 5 0; #P fasten 10 0 6 0 239 436 292 436; #P fasten 9 0 6 0 172 436 292 436; #P connect 5 0 6 0; #P connect 5 0 6 1; #P connect 32 0 31 0; #P hidden connect 30 0 3 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 185 142 812 630;
+#P message 374 374 123 196617 vasp bufrmax1 bufrmax2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 374 416 78 196617 p clear_buffers;
+#P hidden newex 549 375 48 196617 r 1157path;
+#P user umenu 75 127 72 196647 1 64 143 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1157path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 137 149 43 196617 p loader;
+#P comment 49 128 26 196617 read;
+#P newex 53 356 61 196617 vasp.update;
+#P flonum 180 250 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 46 90 137 196617 needs two vectors;
+#P newex 53 335 52 196617 vasp.c!fft;
+#P message 53 314 123 196617 vasp bufrmax1 bufrmax2;
+#P newex 53 189 49 196617 vasp.cfft;
+#P message 53 167 123 196617 vasp bufrmax1 bufrmax2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 287 76 49 196617 p wfkeys;
+#P hidden message 287 239 69 196617 set bufrmax2;
+#P user waveform~ 287 256 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 484 416 115 196617 buffer~ bufrmax2 2000;
+#P comment 46 60 314 196617 compares the complex radius of buffer pairs and takes maximum;
+#P newex 53 274 74 196617 vasp.rmax 0.2;
+#P hidden message 287 118 69 196617 set bufrmax1;
+#P hidden newex 287 97 45 196617 loadbang;
+#P user waveform~ 287 136 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 234 416 27 196617 stop;
+#P message 167 416 65 196617 startwindow;
+#P newex 287 394 30 196617 line~;
+#P message 287 374 72 196617 0 \, 2000 2000;
+#P newex 287 442 29 196617 dac~;
+#P newex 287 416 80 196617 play~ bufrmax1;
+#P message 53 250 123 196617 vasp bufrmax1 bufrmax2;
+#P newex 484 394 115 196617 buffer~ bufrmax1 2000;
+#P comment 46 37 78 196622 vasp.rmax;
+#P comment 46 75 137 196617 argument/right inlet: value;
+#P newex 53 213 61 196617 vasp.update;
+#P connect 20 0 21 0;
+#P connect 21 0 0 0;
+#P connect 4 0 14 0;
+#P connect 22 0 23 0;
+#P connect 23 0 26 0;
+#P fasten 25 0 14 1 185 269 122 269;
+#P hidden connect 29 1 28 0;
+#P hidden connect 12 0 13 0;
+#P hidden fasten 3 1 13 0 594 413 605 413 605 115 292 115;
+#P hidden connect 19 0 11 0;
+#P hidden connect 13 0 11 0;
+#P hidden fasten 16 1 18 0 594 436 605 436 605 237 292 237;
+#P hidden connect 12 0 18 0;
+#P hidden connect 19 0 17 0;
+#P hidden connect 18 0 17 0;
+#P connect 7 0 8 0;
+#P connect 8 0 5 0;
+#P fasten 10 0 6 0 239 436 292 436;
+#P fasten 9 0 6 0 172 436 292 436;
+#P connect 5 0 6 0;
+#P connect 5 0 6 1;
+#P connect 32 0 31 0;
+#P hidden connect 30 0 3 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rmaxq.help b/externals/grill/vasp/max-help/vasp.rmaxq.help
index c53910a6..0e49d689 100755
--- a/externals/grill/vasp/max-help/vasp.rmaxq.help
+++ b/externals/grill/vasp/max-help/vasp.rmaxq.help
@@ -1 +1,179 @@
-max v2; #N vpatcher 180 75 870 686; #P message 437 500 135 196617 vasp bufrmax?1 bufrmax?2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 437 542 78 196617 p clear_buffers; #P newex 59 452 61 196617 vasp.update; #P newex 59 210 61 196617 vasp.update; #P hidden newex 535 500 48 196617 r 1155path; #P user umenu 78 127 72 196647 1 64 143 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1155path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 140 149 43 196617 p loader; #P comment 52 129 26 196617 read; #P comment 46 90 137 196617 needs two vectors; #P newex 59 430 52 196617 vasp.c!fft; #P message 59 409 135 196617 vasp bufrmax?1 bufrmax?2; #P newex 59 189 49 196617 vasp.cfft; #P message 59 167 135 196617 vasp bufrmax?1 bufrmax?2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 344 97 49 196617 p wfkeys; #P hidden message 344 278 75 196617 set bufrmax?2; #P user waveform~ 344 299 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 534 542 122 196617 buffer~ bufrmax?2 2000; #P flonum 92 321 68 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 46 60 286 196617 maximum of the radius values of a complex vasp; #P message 59 293 135 196617 vasp bufrmax?1 bufrmax?2; #P newex 59 350 43 196617 vasp.c/; #P newex 59 372 61 196617 vasp.update; #P newex 58 522 51 196617 vasp.ropt; #P message 58 498 135 196617 vasp bufrmax?1 bufrmax?2; #P newex 59 260 62 196617 vasp.rmax?; #P hidden message 344 145 75 196617 set bufrmax?1; #P hidden newex 344 118 45 196617 loadbang; #P user waveform~ 344 166 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 291 542 27 196617 stop; #P message 224 542 65 196617 startwindow; #P newex 344 520 30 196617 line~; #P message 344 500 72 196617 0 \, 2000 2000; #P newex 344 568 29 196617 dac~; #P newex 344 542 85 196617 play~ bufrmax?1; #P newex 58 542 61 196617 vasp.update; #P message 59 241 135 196617 vasp bufrmax?1 bufrmax?2; #P newex 534 521 122 196617 buffer~ bufrmax?1 2000; #P comment 163 322 141 196617 -> current maximum; #P comment 106 351 181 196617 use the maximum to optimize radius; #P comment 52 482 179 196617 or use vasp.ropt which does the same; #P comment 46 37 92 196622 vasp.rmax?; #P comment 46 75 137 196617 right outlet: calculated value; #P connect 18 0 19 0; #P connect 19 0 7 0; #P connect 29 0 30 0; #P connect 30 0 38 0; #P connect 6 0 17 0; #P connect 22 0 21 0; #P connect 21 0 20 0; #P connect 31 0 32 0; #P connect 32 0 39 0; #P fasten 17 1 24 0 116 283 200 283 200 314 97 314; #P connect 24 0 21 1; #P hidden connect 36 1 35 0; #P hidden connect 15 0 16 0; #P hidden fasten 5 1 16 0 651 540 662 540 662 139 349 139; #P hidden connect 28 0 14 0; #P hidden connect 16 0 14 0; #P hidden fasten 25 1 27 0 651 561 662 561 662 272 349 272; #P hidden connect 15 0 27 0; #P hidden connect 27 0 26 0; #P hidden connect 28 0 26 0; #P connect 10 0 11 0; #P connect 11 0 8 0; #P fasten 12 0 9 0 229 562 349 562; #P fasten 13 0 9 0 296 562 349 562; #P connect 8 0 9 0; #P connect 8 0 9 1; #P connect 41 0 40 0; #P hidden connect 37 0 5 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 180 75 870 686;
+#P message 437 500 135 196617 vasp bufrmax?1 bufrmax?2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 437 542 78 196617 p clear_buffers;
+#P newex 59 452 61 196617 vasp.update;
+#P newex 59 210 61 196617 vasp.update;
+#P hidden newex 535 500 48 196617 r 1155path;
+#P user umenu 78 127 72 196647 1 64 143 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1155path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 140 149 43 196617 p loader;
+#P comment 52 129 26 196617 read;
+#P comment 46 90 137 196617 needs two vectors;
+#P newex 59 430 52 196617 vasp.c!fft;
+#P message 59 409 135 196617 vasp bufrmax?1 bufrmax?2;
+#P newex 59 189 49 196617 vasp.cfft;
+#P message 59 167 135 196617 vasp bufrmax?1 bufrmax?2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 344 97 49 196617 p wfkeys;
+#P hidden message 344 278 75 196617 set bufrmax?2;
+#P user waveform~ 344 299 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 534 542 122 196617 buffer~ bufrmax?2 2000;
+#P flonum 92 321 68 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 46 60 286 196617 maximum of the radius values of a complex vasp;
+#P message 59 293 135 196617 vasp bufrmax?1 bufrmax?2;
+#P newex 59 350 43 196617 vasp.c/;
+#P newex 59 372 61 196617 vasp.update;
+#P newex 58 522 51 196617 vasp.ropt;
+#P message 58 498 135 196617 vasp bufrmax?1 bufrmax?2;
+#P newex 59 260 62 196617 vasp.rmax?;
+#P hidden message 344 145 75 196617 set bufrmax?1;
+#P hidden newex 344 118 45 196617 loadbang;
+#P user waveform~ 344 166 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 291 542 27 196617 stop;
+#P message 224 542 65 196617 startwindow;
+#P newex 344 520 30 196617 line~;
+#P message 344 500 72 196617 0 \, 2000 2000;
+#P newex 344 568 29 196617 dac~;
+#P newex 344 542 85 196617 play~ bufrmax?1;
+#P newex 58 542 61 196617 vasp.update;
+#P message 59 241 135 196617 vasp bufrmax?1 bufrmax?2;
+#P newex 534 521 122 196617 buffer~ bufrmax?1 2000;
+#P comment 163 322 141 196617 -> current maximum;
+#P comment 106 351 181 196617 use the maximum to optimize radius;
+#P comment 52 482 179 196617 or use vasp.ropt which does the same;
+#P comment 46 37 92 196622 vasp.rmax?;
+#P comment 46 75 137 196617 right outlet: calculated value;
+#P connect 18 0 19 0;
+#P connect 19 0 7 0;
+#P connect 29 0 30 0;
+#P connect 30 0 38 0;
+#P connect 6 0 17 0;
+#P connect 22 0 21 0;
+#P connect 21 0 20 0;
+#P connect 31 0 32 0;
+#P connect 32 0 39 0;
+#P fasten 17 1 24 0 116 283 200 283 200 314 97 314;
+#P connect 24 0 21 1;
+#P hidden connect 36 1 35 0;
+#P hidden connect 15 0 16 0;
+#P hidden fasten 5 1 16 0 651 540 662 540 662 139 349 139;
+#P hidden connect 28 0 14 0;
+#P hidden connect 16 0 14 0;
+#P hidden fasten 25 1 27 0 651 561 662 561 662 272 349 272;
+#P hidden connect 15 0 27 0;
+#P hidden connect 27 0 26 0;
+#P hidden connect 28 0 26 0;
+#P connect 10 0 11 0;
+#P connect 11 0 8 0;
+#P fasten 12 0 9 0 229 562 349 562;
+#P fasten 13 0 9 0 296 562 349 562;
+#P connect 8 0 9 0;
+#P connect 8 0 9 1;
+#P connect 41 0 40 0;
+#P hidden connect 37 0 5 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rmin.help b/externals/grill/vasp/max-help/vasp.rmin.help
index 2009f8f3..9544d81c 100755
--- a/externals/grill/vasp/max-help/vasp.rmin.help
+++ b/externals/grill/vasp/max-help/vasp.rmin.help
@@ -1 +1,167 @@
-max v2; #N vpatcher 239 143 840 647; #P newex 53 362 61 196617 vasp.update; #P newex 53 286 61 196617 vasp.update; #P newex 53 211 61 196617 vasp.update; #P message 359 391 115 196617 vasp bufrmin1 bufrmin2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 359 433 78 196617 p clear_buffers; #P user umenu 72 129 72 196647 1 64 145 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 54 196617 s #01path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 134 151 43 196617 p loader; #P comment 46 130 26 196617 read; #P hidden newex 459 389 54 196617 r #01path; #P flonum 173 242 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 46 90 137 196617 needs two vectors; #P newex 53 342 52 196617 vasp.c!fft; #P message 53 321 115 196617 vasp bufrmin1 bufrmin2; #P newex 53 189 49 196617 vasp.cfft; #P message 53 169 115 196617 vasp bufrmin1 bufrmin2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 260 63 49 196617 p wfkeys; #P hidden message 260 244 65 196617 set bufrmin2; #P user waveform~ 260 265 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 459 433 113 196617 buffer~ bufrmin2 2000; #P comment 46 60 310 196617 compares the complex radius of buffer pairs and takes minimum; #P newex 53 266 75 196617 vasp.rmin 0.05; #P hidden message 260 111 65 196617 set bufrmin1; #P hidden newex 260 84 45 196617 loadbang; #P user waveform~ 260 132 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 207 433 27 196617 stop; #P message 140 433 65 196617 startwindow; #P newex 260 412 30 196617 line~; #P message 260 391 72 196617 0 \, 2000 2000; #P newex 260 459 29 196617 dac~; #P newex 260 433 75 196617 play~ bufrmin1; #P message 53 242 115 196617 vasp bufrmin1 bufrmin2; #P newex 459 412 113 196617 buffer~ bufrmin1 2000; #P comment 46 37 78 196622 vasp.rmin; #P comment 46 75 137 196617 argument/right inlet:; #P connect 19 0 20 0; #P connect 20 0 31 0; #P connect 3 0 13 0; #P connect 13 0 32 0; #P connect 21 0 22 0; #P connect 22 0 33 0; #P fasten 24 0 13 1 178 261 123 261; #P hidden connect 28 1 27 0; #P hidden connect 11 0 12 0; #P hidden fasten 2 1 12 0 567 430 578 430 578 105 265 105; #P hidden connect 18 0 10 0; #P hidden connect 12 0 10 0; #P hidden fasten 15 1 17 0 567 452 578 452 578 238 265 238; #P hidden connect 11 0 17 0; #P hidden connect 18 0 16 0; #P hidden connect 17 0 16 0; #P connect 6 0 7 0; #P connect 7 0 4 0; #P fasten 9 0 5 0 212 453 265 453; #P fasten 8 0 5 0 145 453 265 453; #P connect 4 0 5 0; #P connect 4 0 5 1; #P connect 30 0 29 0; #P hidden connect 25 0 2 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 239 143 840 647;
+#P newex 53 362 61 196617 vasp.update;
+#P newex 53 286 61 196617 vasp.update;
+#P newex 53 211 61 196617 vasp.update;
+#P message 359 391 115 196617 vasp bufrmin1 bufrmin2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 359 433 78 196617 p clear_buffers;
+#P user umenu 72 129 72 196647 1 64 145 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 54 196617 s #01path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 134 151 43 196617 p loader;
+#P comment 46 130 26 196617 read;
+#P hidden newex 459 389 54 196617 r #01path;
+#P flonum 173 242 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 46 90 137 196617 needs two vectors;
+#P newex 53 342 52 196617 vasp.c!fft;
+#P message 53 321 115 196617 vasp bufrmin1 bufrmin2;
+#P newex 53 189 49 196617 vasp.cfft;
+#P message 53 169 115 196617 vasp bufrmin1 bufrmin2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 260 63 49 196617 p wfkeys;
+#P hidden message 260 244 65 196617 set bufrmin2;
+#P user waveform~ 260 265 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 459 433 113 196617 buffer~ bufrmin2 2000;
+#P comment 46 60 310 196617 compares the complex radius of buffer pairs and takes minimum;
+#P newex 53 266 75 196617 vasp.rmin 0.05;
+#P hidden message 260 111 65 196617 set bufrmin1;
+#P hidden newex 260 84 45 196617 loadbang;
+#P user waveform~ 260 132 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 207 433 27 196617 stop;
+#P message 140 433 65 196617 startwindow;
+#P newex 260 412 30 196617 line~;
+#P message 260 391 72 196617 0 \, 2000 2000;
+#P newex 260 459 29 196617 dac~;
+#P newex 260 433 75 196617 play~ bufrmin1;
+#P message 53 242 115 196617 vasp bufrmin1 bufrmin2;
+#P newex 459 412 113 196617 buffer~ bufrmin1 2000;
+#P comment 46 37 78 196622 vasp.rmin;
+#P comment 46 75 137 196617 argument/right inlet:;
+#P connect 19 0 20 0;
+#P connect 20 0 31 0;
+#P connect 3 0 13 0;
+#P connect 13 0 32 0;
+#P connect 21 0 22 0;
+#P connect 22 0 33 0;
+#P fasten 24 0 13 1 178 261 123 261;
+#P hidden connect 28 1 27 0;
+#P hidden connect 11 0 12 0;
+#P hidden fasten 2 1 12 0 567 430 578 430 578 105 265 105;
+#P hidden connect 18 0 10 0;
+#P hidden connect 12 0 10 0;
+#P hidden fasten 15 1 17 0 567 452 578 452 578 238 265 238;
+#P hidden connect 11 0 17 0;
+#P hidden connect 18 0 16 0;
+#P hidden connect 17 0 16 0;
+#P connect 6 0 7 0;
+#P connect 7 0 4 0;
+#P fasten 9 0 5 0 212 453 265 453;
+#P fasten 8 0 5 0 145 453 265 453;
+#P connect 4 0 5 0;
+#P connect 4 0 5 1;
+#P connect 30 0 29 0;
+#P hidden connect 25 0 2 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rminq.help b/externals/grill/vasp/max-help/vasp.rminq.help
index d02bcda1..d3c472e0 100755
--- a/externals/grill/vasp/max-help/vasp.rminq.help
+++ b/externals/grill/vasp/max-help/vasp.rminq.help
@@ -1 +1,149 @@
-max v2; #N vpatcher 211 115 858 569; #P message 365 381 129 196617 vasp bufrmin?1 bufrmin?2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 365 402 73 196617 p clear_buffer; #P newex 53 213 61 196617 vasp.update; #P hidden newex 496 362 48 196617 r 1154path; #P user umenu 72 128 72 196647 1 64 144 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1154path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 134 150 43 196617 p loader; #P comment 46 130 26 196617 read; #P comment 46 89 137 196617 needs two vectors; #P newex 53 191 49 196617 vasp.cfft; #P message 53 169 129 196617 vasp bufrmin?1 bufrmin?2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 303 79 49 196617 p wfkeys; #P hidden message 303 245 72 196617 set bufrmin?2; #P user waveform~ 303 263 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 496 402 119 196617 buffer~ bufrmin?2 2000; #P flonum 102 297 68 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 46 61 232 196617 min-value of the radius values of a complex vasp; #P newex 53 259 59 196617 vasp.rmin?; #P hidden message 303 121 72 196617 set bufrmin?1; #P hidden newex 303 100 45 196617 loadbang; #P user waveform~ 303 140 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 53 240 129 196617 vasp bufrmin?1 bufrmin?2; #P newex 496 381 119 196617 buffer~ bufrmin?1 2000; #P comment 173 298 99 196617 -> current minimum; #P comment 46 37 98 196622 vasp.rmin?; #P comment 46 74 137 196617 right outlet: calculated value; #P connect 15 0 16 0; #P connect 16 0 22 0; #P connect 4 0 8 0; #P connect 8 1 10 0; #P hidden connect 20 1 19 0; #P hidden connect 6 0 7 0; #P hidden fasten 3 1 7 0 610 399 621 399 621 118 308 118; #P hidden connect 14 0 5 0; #P hidden connect 7 0 5 0; #P hidden fasten 11 1 13 0 610 423 621 423 621 242 308 242; #P hidden connect 6 0 13 0; #P hidden connect 14 0 12 0; #P hidden connect 13 0 12 0; #P connect 24 0 23 0; #P hidden connect 21 0 3 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 211 115 858 569;
+#P message 365 381 129 196617 vasp bufrmin?1 bufrmin?2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 365 402 73 196617 p clear_buffer;
+#P newex 53 213 61 196617 vasp.update;
+#P hidden newex 496 362 48 196617 r 1154path;
+#P user umenu 72 128 72 196647 1 64 144 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1154path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 134 150 43 196617 p loader;
+#P comment 46 130 26 196617 read;
+#P comment 46 89 137 196617 needs two vectors;
+#P newex 53 191 49 196617 vasp.cfft;
+#P message 53 169 129 196617 vasp bufrmin?1 bufrmin?2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 303 79 49 196617 p wfkeys;
+#P hidden message 303 245 72 196617 set bufrmin?2;
+#P user waveform~ 303 263 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 496 402 119 196617 buffer~ bufrmin?2 2000;
+#P flonum 102 297 68 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 46 61 232 196617 min-value of the radius values of a complex vasp;
+#P newex 53 259 59 196617 vasp.rmin?;
+#P hidden message 303 121 72 196617 set bufrmin?1;
+#P hidden newex 303 100 45 196617 loadbang;
+#P user waveform~ 303 140 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 53 240 129 196617 vasp bufrmin?1 bufrmin?2;
+#P newex 496 381 119 196617 buffer~ bufrmin?1 2000;
+#P comment 173 298 99 196617 -> current minimum;
+#P comment 46 37 98 196622 vasp.rmin?;
+#P comment 46 74 137 196617 right outlet: calculated value;
+#P connect 15 0 16 0;
+#P connect 16 0 22 0;
+#P connect 4 0 8 0;
+#P connect 8 1 10 0;
+#P hidden connect 20 1 19 0;
+#P hidden connect 6 0 7 0;
+#P hidden fasten 3 1 7 0 610 399 621 399 621 118 308 118;
+#P hidden connect 14 0 5 0;
+#P hidden connect 7 0 5 0;
+#P hidden fasten 11 1 13 0 610 423 621 423 621 242 308 242;
+#P hidden connect 6 0 13 0;
+#P hidden connect 14 0 12 0;
+#P hidden connect 13 0 12 0;
+#P connect 24 0 23 0;
+#P hidden connect 21 0 3 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.ropt.help b/externals/grill/vasp/max-help/vasp.ropt.help
index bfcacc85..176df949 100755
--- a/externals/grill/vasp/max-help/vasp.ropt.help
+++ b/externals/grill/vasp/max-help/vasp.ropt.help
@@ -1 +1,168 @@
-max v2; #N vpatcher 220 112 892 639; #P message 416 408 113 196617 vasp bufropt1 bufropt2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 416 450 73 196617 p clear_buffer; #P hidden newex 532 403 48 196617 r 1171path; #P user umenu 72 129 72 196647 1 64 145 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1171path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 134 151 43 196617 p loader; #P comment 46 131 26 196617 read; #P comment 168 336 131 196617 transform to time domain; #P comment 167 170 155 196617 transform to frequency domain; #P comment 170 258 47 196617 optimize; #P newex 53 215 61 196617 vasp.update; #P newex 53 297 61 196617 vasp.update; #P comment 46 90 95 196617 needs two vectors; #P newex 53 356 52 196617 vasp.c!fft; #P message 53 335 113 196617 vasp bufropt1 bufropt2; #P newex 53 191 49 196617 vasp.cfft; #P message 53 169 113 196617 vasp bufropt1 bufropt2; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 331 67 49 196617 p wfkeys; #P hidden message 331 248 64 196617 set bufropt2; #P user waveform~ 331 269 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 532 450 111 196617 buffer~ bufropt2 2000; #P comment 46 60 222 196617 optimize the radius of a complex buffer content; #P newex 53 276 51 196617 vasp.ropt; #P hidden message 331 115 64 196617 set bufropt1; #P hidden newex 331 88 45 196617 loadbang; #P user waveform~ 331 136 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 280 450 27 196617 stop; #P message 213 450 65 196617 startwindow; #P newex 333 428 30 196617 line~; #P message 333 408 72 196617 0 \, 2000 2000; #P newex 333 476 29 196617 dac~; #P newex 333 450 75 196617 play~ bufropt1; #P newex 53 379 61 196617 vasp.update; #P message 53 257 113 196617 vasp bufropt1 bufropt2; #P newex 532 428 111 196617 buffer~ bufropt1 2000; #P comment 46 37 78 196622 vasp.ropt; #P comment 46 75 171 196617 right outlet: the previous maximum; #P connect 20 0 21 0; #P connect 21 0 26 0; #P connect 3 0 14 0; #P connect 14 0 25 0; #P connect 22 0 23 0; #P connect 23 0 4 0; #P hidden connect 32 1 31 0; #P hidden connect 12 0 13 0; #P hidden fasten 2 1 13 0 638 446 649 446 649 109 336 109; #P hidden connect 19 0 11 0; #P hidden connect 13 0 11 0; #P hidden fasten 16 1 18 0 638 471 649 471 649 242 336 242; #P hidden connect 12 0 18 0; #P hidden connect 19 0 17 0; #P hidden connect 18 0 17 0; #P connect 7 0 8 0; #P connect 8 0 5 0; #P fasten 10 0 6 0 285 470 338 470; #P fasten 9 0 6 0 218 470 338 470; #P connect 5 0 6 0; #P connect 5 0 6 1; #P connect 35 0 34 0; #P hidden connect 33 0 2 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 220 112 892 639;
+#P message 416 408 113 196617 vasp bufropt1 bufropt2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 416 450 73 196617 p clear_buffer;
+#P hidden newex 532 403 48 196617 r 1171path;
+#P user umenu 72 129 72 196647 1 64 145 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1171path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 134 151 43 196617 p loader;
+#P comment 46 131 26 196617 read;
+#P comment 168 336 131 196617 transform to time domain;
+#P comment 167 170 155 196617 transform to frequency domain;
+#P comment 170 258 47 196617 optimize;
+#P newex 53 215 61 196617 vasp.update;
+#P newex 53 297 61 196617 vasp.update;
+#P comment 46 90 95 196617 needs two vectors;
+#P newex 53 356 52 196617 vasp.c!fft;
+#P message 53 335 113 196617 vasp bufropt1 bufropt2;
+#P newex 53 191 49 196617 vasp.cfft;
+#P message 53 169 113 196617 vasp bufropt1 bufropt2;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 331 67 49 196617 p wfkeys;
+#P hidden message 331 248 64 196617 set bufropt2;
+#P user waveform~ 331 269 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 532 450 111 196617 buffer~ bufropt2 2000;
+#P comment 46 60 222 196617 optimize the radius of a complex buffer content;
+#P newex 53 276 51 196617 vasp.ropt;
+#P hidden message 331 115 64 196617 set bufropt1;
+#P hidden newex 331 88 45 196617 loadbang;
+#P user waveform~ 331 136 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 280 450 27 196617 stop;
+#P message 213 450 65 196617 startwindow;
+#P newex 333 428 30 196617 line~;
+#P message 333 408 72 196617 0 \, 2000 2000;
+#P newex 333 476 29 196617 dac~;
+#P newex 333 450 75 196617 play~ bufropt1;
+#P newex 53 379 61 196617 vasp.update;
+#P message 53 257 113 196617 vasp bufropt1 bufropt2;
+#P newex 532 428 111 196617 buffer~ bufropt1 2000;
+#P comment 46 37 78 196622 vasp.ropt;
+#P comment 46 75 171 196617 right outlet: the previous maximum;
+#P connect 20 0 21 0;
+#P connect 21 0 26 0;
+#P connect 3 0 14 0;
+#P connect 14 0 25 0;
+#P connect 22 0 23 0;
+#P connect 23 0 4 0;
+#P hidden connect 32 1 31 0;
+#P hidden connect 12 0 13 0;
+#P hidden fasten 2 1 13 0 638 446 649 446 649 109 336 109;
+#P hidden connect 19 0 11 0;
+#P hidden connect 13 0 11 0;
+#P hidden fasten 16 1 18 0 638 471 649 471 649 242 336 242;
+#P hidden connect 12 0 18 0;
+#P hidden connect 19 0 17 0;
+#P hidden connect 18 0 17 0;
+#P connect 7 0 8 0;
+#P connect 8 0 5 0;
+#P fasten 10 0 6 0 285 470 338 470;
+#P fasten 9 0 6 0 218 470 338 470;
+#P connect 5 0 6 0;
+#P connect 5 0 6 1;
+#P connect 35 0 34 0;
+#P hidden connect 33 0 2 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rot.help b/externals/grill/vasp/max-help/vasp.rot.help
index 4423f237..e78b227c 100755
--- a/externals/grill/vasp/max-help/vasp.rot.help
+++ b/externals/grill/vasp/max-help/vasp.rot.help
@@ -1 +1,91 @@
-max v2; #N vpatcher 199 239 788 608; #P message 380 279 60 196617 vasp bufrot; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 380 299 73 196617 p clear_buffer; #P hidden newex 458 273 48 196617 r 1126path; #P user umenu 85 121 72 196647 1 64 137 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1126path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 147 143 43 196617 p loader; #P comment 59 123 26 196617 read; #P comment 57 82 187 196617 optional argument/right inlet: value; #P message 205 299 27 196617 stop; #P message 137 299 65 196617 startwindow; #P newex 246 325 29 196617 dac~; #P newex 246 273 30 196617 line~; #P message 246 250 72 196617 0 \, 2000 2000; #P newex 246 298 64 196617 play~ bufrot; #P number 133 179 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 64 230 61 196617 vasp.update; #P message 64 152 60 196617 vasp bufrot; #P newex 64 202 79 196617 vasp.rot 10000; #P comment 57 67 101 196617 rotate buffer content; #P comment 57 43 96 196622 vasp.rot; #P hidden message 246 102 53 196617 set bufrot; #P hidden newex 246 77 45 196617 loadbang; #P user waveform~ 246 121 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 458 298 100 196617 buffer~ bufrot 2000; #P connect 7 0 6 0; #P connect 6 0 8 0; #P connect 9 0 6 1; #P hidden connect 19 1 18 0; #P hidden connect 2 0 3 0; #P hidden fasten 0 1 3 0 553 318 562 318 562 98 251 98; #P hidden connect 3 0 1 0; #P connect 11 0 12 0; #P connect 12 0 10 0; #P fasten 14 0 13 0 142 318 251 318; #P fasten 15 0 13 0 210 318 251 318; #P connect 10 0 13 0; #P connect 10 0 13 1; #P connect 22 0 21 0; #P hidden connect 20 0 0 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 199 239 788 608;
+#P message 380 279 60 196617 vasp bufrot;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 380 299 73 196617 p clear_buffer;
+#P hidden newex 458 273 48 196617 r 1126path;
+#P user umenu 85 121 72 196647 1 64 137 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1126path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 147 143 43 196617 p loader;
+#P comment 59 123 26 196617 read;
+#P comment 57 82 187 196617 optional argument/right inlet: value;
+#P message 205 299 27 196617 stop;
+#P message 137 299 65 196617 startwindow;
+#P newex 246 325 29 196617 dac~;
+#P newex 246 273 30 196617 line~;
+#P message 246 250 72 196617 0 \, 2000 2000;
+#P newex 246 298 64 196617 play~ bufrot;
+#P number 133 179 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 64 230 61 196617 vasp.update;
+#P message 64 152 60 196617 vasp bufrot;
+#P newex 64 202 79 196617 vasp.rot 10000;
+#P comment 57 67 101 196617 rotate buffer content;
+#P comment 57 43 96 196622 vasp.rot;
+#P hidden message 246 102 53 196617 set bufrot;
+#P hidden newex 246 77 45 196617 loadbang;
+#P user waveform~ 246 121 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 458 298 100 196617 buffer~ bufrot 2000;
+#P connect 7 0 6 0;
+#P connect 6 0 8 0;
+#P connect 9 0 6 1;
+#P hidden connect 19 1 18 0;
+#P hidden connect 2 0 3 0;
+#P hidden fasten 0 1 3 0 553 318 562 318 562 98 251 98;
+#P hidden connect 3 0 1 0;
+#P connect 11 0 12 0;
+#P connect 12 0 10 0;
+#P fasten 14 0 13 0 142 318 251 318;
+#P fasten 15 0 13 0 210 318 251 318;
+#P connect 10 0 13 0;
+#P connect 10 0 13 1;
+#P connect 22 0 21 0;
+#P hidden connect 20 0 0 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rpeaks.help b/externals/grill/vasp/max-help/vasp.rpeaks.help
index 268073fd..4a4860d5 100755
--- a/externals/grill/vasp/max-help/vasp.rpeaks.help
+++ b/externals/grill/vasp/max-help/vasp.rpeaks.help
@@ -1 +1,174 @@
-max v2; #N vpatcher 248 88 903 607; #P flonum 133 327 61 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 52 102 197 196617 right outlet: current peaks density (0-1); #P message 393 394 135 196617 vasp bufrpeaks1 bufrpeaks2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 393 449 73 196617 p clear_buffer; #P hidden newex 495 403 48 196617 r 1175path; #P user umenu 78 142 72 196647 1 64 158 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1175path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 140 164 43 196617 p loader; #P comment 52 143 26 196617 read; #P comment 52 115 172 196617 needs two vectors (real/imaginary); #P newex 58 402 61 196617 vasp.update; #P message 58 358 135 196617 vasp bufrpeaks1 bufrpeaks2; #P newex 58 379 52 196617 vasp.c!fft; #P comment 180 285 43 196617 density; #P newex 58 225 61 196617 vasp.update; #P newex 58 322 61 196617 vasp.update; #P flonum 133 283 45 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0; #P message 58 259 135 196617 vasp bufrpeaks1 bufrpeaks2; #P newex 58 302 85 196617 vasp.rpeaks 0.05; #P message 264 450 27 196617 stop; #P message 196 450 65 196617 startwindow; #P newex 305 474 29 196617 dac~; #P newex 305 423 30 196617 line~; #P message 305 394 72 196617 0 \, 2000 2000; #P newex 305 449 85 196617 play~ bufrpeaks1; #P message 58 181 135 196617 vasp bufrpeaks1 bufrpeaks2; #P newex 58 202 49 196617 vasp.cfft; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 305 72 49 196617 p wfkeys; #P hidden message 305 242 75 196617 set bufrpeaks2; #P user waveform~ 305 260 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 495 449 122 196617 buffer~ bufrpeaks2 2000; #P hidden message 305 122 75 196617 set bufrpeaks1; #P hidden newex 305 94 45 196617 loadbang; #P user waveform~ 305 140 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 495 427 122 196617 buffer~ bufrpeaks1 2000; #P comment 52 87 197 196617 argument/right inlet: peaks density (0-1); #P comment 52 72 177 196617 find radius peaks of a complex vasp; #P comment 52 48 108 196622 vasp.rpeaks; #P comment 194 328 68 196617 current peaks; #P connect 13 0 12 0; #P connect 12 0 24 0; #P connect 21 0 20 0; #P connect 20 0 23 0; #P connect 27 0 26 0; #P connect 26 0 28 0; #P connect 22 0 20 1; #P connect 20 1 37 0; #P hidden connect 32 1 31 0; #P hidden fasten 6 0 7 0 310 103 310 103; #P hidden fasten 4 1 7 0 612 446 636 446 636 118 310 118; #P hidden connect 11 0 5 0; #P hidden connect 7 0 5 0; #P hidden fasten 6 0 10 0 310 103 310 103; #P hidden fasten 8 1 10 0 612 468 636 468 636 255 310 255; #P hidden connect 11 0 9 0; #P hidden connect 10 0 9 0; #P connect 15 0 16 0; #P connect 16 0 14 0; #P connect 14 0 17 0; #P fasten 18 0 17 0 201 468 310 468; #P fasten 19 0 17 0 269 468 310 468; #P connect 14 0 17 1; #P connect 35 0 34 0; #P hidden connect 33 0 4 0; #P hidden fasten 9 5 5 4 610 363 621 363 621 134 610 134; #P hidden connect 5 5 9 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 248 88 903 607;
+#P flonum 133 327 61 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 52 102 197 196617 right outlet: current peaks density (0-1);
+#P message 393 394 135 196617 vasp bufrpeaks1 bufrpeaks2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 393 449 73 196617 p clear_buffer;
+#P hidden newex 495 403 48 196617 r 1175path;
+#P user umenu 78 142 72 196647 1 64 158 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1175path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 140 164 43 196617 p loader;
+#P comment 52 143 26 196617 read;
+#P comment 52 115 172 196617 needs two vectors (real/imaginary);
+#P newex 58 402 61 196617 vasp.update;
+#P message 58 358 135 196617 vasp bufrpeaks1 bufrpeaks2;
+#P newex 58 379 52 196617 vasp.c!fft;
+#P comment 180 285 43 196617 density;
+#P newex 58 225 61 196617 vasp.update;
+#P newex 58 322 61 196617 vasp.update;
+#P flonum 133 283 45 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P message 58 259 135 196617 vasp bufrpeaks1 bufrpeaks2;
+#P newex 58 302 85 196617 vasp.rpeaks 0.05;
+#P message 264 450 27 196617 stop;
+#P message 196 450 65 196617 startwindow;
+#P newex 305 474 29 196617 dac~;
+#P newex 305 423 30 196617 line~;
+#P message 305 394 72 196617 0 \, 2000 2000;
+#P newex 305 449 85 196617 play~ bufrpeaks1;
+#P message 58 181 135 196617 vasp bufrpeaks1 bufrpeaks2;
+#P newex 58 202 49 196617 vasp.cfft;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 305 72 49 196617 p wfkeys;
+#P hidden message 305 242 75 196617 set bufrpeaks2;
+#P user waveform~ 305 260 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 495 449 122 196617 buffer~ bufrpeaks2 2000;
+#P hidden message 305 122 75 196617 set bufrpeaks1;
+#P hidden newex 305 94 45 196617 loadbang;
+#P user waveform~ 305 140 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 495 427 122 196617 buffer~ bufrpeaks1 2000;
+#P comment 52 87 197 196617 argument/right inlet: peaks density (0-1);
+#P comment 52 72 177 196617 find radius peaks of a complex vasp;
+#P comment 52 48 108 196622 vasp.rpeaks;
+#P comment 194 328 68 196617 current peaks;
+#P connect 13 0 12 0;
+#P connect 12 0 24 0;
+#P connect 21 0 20 0;
+#P connect 20 0 23 0;
+#P connect 27 0 26 0;
+#P connect 26 0 28 0;
+#P connect 22 0 20 1;
+#P connect 20 1 37 0;
+#P hidden connect 32 1 31 0;
+#P hidden fasten 6 0 7 0 310 103 310 103;
+#P hidden fasten 4 1 7 0 612 446 636 446 636 118 310 118;
+#P hidden connect 11 0 5 0;
+#P hidden connect 7 0 5 0;
+#P hidden fasten 6 0 10 0 310 103 310 103;
+#P hidden fasten 8 1 10 0 612 468 636 468 636 255 310 255;
+#P hidden connect 11 0 9 0;
+#P hidden connect 10 0 9 0;
+#P connect 15 0 16 0;
+#P connect 16 0 14 0;
+#P connect 14 0 17 0;
+#P fasten 18 0 17 0 201 468 310 468;
+#P fasten 19 0 17 0 269 468 310 468;
+#P connect 14 0 17 1;
+#P connect 35 0 34 0;
+#P hidden connect 33 0 4 0;
+#P hidden fasten 9 5 5 4 610 363 621 363 621 134 610 134;
+#P hidden connect 5 5 9 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rpow.help b/externals/grill/vasp/max-help/vasp.rpow.help
index 1637e377..408a28ce 100755
--- a/externals/grill/vasp/max-help/vasp.rpow.help
+++ b/externals/grill/vasp/max-help/vasp.rpow.help
@@ -1 +1,171 @@
-max v2; #N vpatcher 172 126 831 625; #P message 398 362 121 196617 vasp bufrpow1 bufrpow2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 398 417 78 196617 p clear_buffers; #P hidden newex 506 373 48 196617 r 1145path; #P user umenu 84 143 72 196647 1 64 159 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 373 689; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1145path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 146 165 43 196617 p loader; #P comment 58 144 26 196617 read; #P comment 51 65 49 196617 radius^x; #P comment 51 110 172 196617 needs two vectors (real/imaginary); #P newex 64 404 61 196617 vasp.update; #P message 64 360 121 196617 vasp bufrpow1 bufrpow2; #P newex 64 381 52 196617 vasp.c!fft; #P comment 156 287 46 196617 exponent; #P newex 64 227 61 196617 vasp.update; #P newex 64 324 61 196617 vasp.update; #P flonum 118 285 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P message 64 261 121 196617 vasp bufrpow1 bufrpow2; #P newex 64 304 64 196617 vasp.rpow 2; #P message 273 418 27 196617 stop; #P message 205 418 65 196617 startwindow; #P newex 314 442 29 196617 dac~; #P newex 314 391 30 196617 line~; #P message 314 362 72 196617 0 \, 2000 2000; #P newex 314 417 79 196617 play~ bufrpow1; #P message 64 183 121 196617 vasp bufrpow1 bufrpow2; #P newex 64 204 49 196617 vasp.cfft; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 313 56 49 196617 p wfkeys; #P hidden message 313 221 68 196617 set bufrpow2; #P user waveform~ 313 239 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 506 417 115 196617 buffer~ bufrpow2 2000; #P hidden message 313 101 68 196617 set bufrpow1; #P hidden newex 313 78 45 196617 loadbang; #P user waveform~ 313 119 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 506 394 115 196617 buffer~ bufrpow1 2000; #P comment 51 95 152 196617 argument/right inlet: exponent; #P comment 51 80 257 196617 power function for the radius values of a complex vasp; #P comment 51 42 89 196622 vasp.rpow; #P connect 12 0 11 0; #P connect 11 0 23 0; #P connect 20 0 19 0; #P connect 19 0 22 0; #P connect 26 0 25 0; #P connect 25 0 27 0; #P connect 21 0 19 1; #P hidden connect 32 1 31 0; #P hidden fasten 5 0 6 0 318 82 318 82; #P hidden fasten 3 1 6 0 616 413 644 413 644 97 318 97; #P hidden connect 10 0 4 0; #P hidden connect 6 0 4 0; #P hidden fasten 7 1 9 0 616 438 644 438 644 220 318 220; #P hidden fasten 5 0 9 0 318 82 318 82; #P hidden connect 9 0 8 0; #P hidden connect 10 0 8 0; #P connect 14 0 15 0; #P connect 15 0 13 0; #P fasten 17 0 16 0 210 436 319 436; #P fasten 18 0 16 0 278 436 319 436; #P connect 13 0 16 0; #P connect 13 0 16 1; #P connect 35 0 34 0; #P hidden connect 33 0 3 0; #P hidden fasten 8 5 4 4 618 342 629 342 629 113 618 113; #P hidden connect 4 5 8 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 172 126 831 625;
+#P message 398 362 121 196617 vasp bufrpow1 bufrpow2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 398 417 78 196617 p clear_buffers;
+#P hidden newex 506 373 48 196617 r 1145path;
+#P user umenu 84 143 72 196647 1 64 159 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 373 689;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1145path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 146 165 43 196617 p loader;
+#P comment 58 144 26 196617 read;
+#P comment 51 65 49 196617 radius^x;
+#P comment 51 110 172 196617 needs two vectors (real/imaginary);
+#P newex 64 404 61 196617 vasp.update;
+#P message 64 360 121 196617 vasp bufrpow1 bufrpow2;
+#P newex 64 381 52 196617 vasp.c!fft;
+#P comment 156 287 46 196617 exponent;
+#P newex 64 227 61 196617 vasp.update;
+#P newex 64 324 61 196617 vasp.update;
+#P flonum 118 285 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P message 64 261 121 196617 vasp bufrpow1 bufrpow2;
+#P newex 64 304 64 196617 vasp.rpow 2;
+#P message 273 418 27 196617 stop;
+#P message 205 418 65 196617 startwindow;
+#P newex 314 442 29 196617 dac~;
+#P newex 314 391 30 196617 line~;
+#P message 314 362 72 196617 0 \, 2000 2000;
+#P newex 314 417 79 196617 play~ bufrpow1;
+#P message 64 183 121 196617 vasp bufrpow1 bufrpow2;
+#P newex 64 204 49 196617 vasp.cfft;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 313 56 49 196617 p wfkeys;
+#P hidden message 313 221 68 196617 set bufrpow2;
+#P user waveform~ 313 239 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 506 417 115 196617 buffer~ bufrpow2 2000;
+#P hidden message 313 101 68 196617 set bufrpow1;
+#P hidden newex 313 78 45 196617 loadbang;
+#P user waveform~ 313 119 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 506 394 115 196617 buffer~ bufrpow1 2000;
+#P comment 51 95 152 196617 argument/right inlet: exponent;
+#P comment 51 80 257 196617 power function for the radius values of a complex vasp;
+#P comment 51 42 89 196622 vasp.rpow;
+#P connect 12 0 11 0;
+#P connect 11 0 23 0;
+#P connect 20 0 19 0;
+#P connect 19 0 22 0;
+#P connect 26 0 25 0;
+#P connect 25 0 27 0;
+#P connect 21 0 19 1;
+#P hidden connect 32 1 31 0;
+#P hidden fasten 5 0 6 0 318 82 318 82;
+#P hidden fasten 3 1 6 0 616 413 644 413 644 97 318 97;
+#P hidden connect 10 0 4 0;
+#P hidden connect 6 0 4 0;
+#P hidden fasten 7 1 9 0 616 438 644 438 644 220 318 220;
+#P hidden fasten 5 0 9 0 318 82 318 82;
+#P hidden connect 9 0 8 0;
+#P hidden connect 10 0 8 0;
+#P connect 14 0 15 0;
+#P connect 15 0 13 0;
+#P fasten 17 0 16 0 210 436 319 436;
+#P fasten 18 0 16 0 278 436 319 436;
+#P connect 13 0 16 0;
+#P connect 13 0 16 1;
+#P connect 35 0 34 0;
+#P hidden connect 33 0 3 0;
+#P hidden fasten 8 5 4 4 618 342 629 342 629 113 618 113;
+#P hidden connect 4 5 8 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rsub.help b/externals/grill/vasp/max-help/vasp.rsub.help
index 2990269a..cdc8edab 100755
--- a/externals/grill/vasp/max-help/vasp.rsub.help
+++ b/externals/grill/vasp/max-help/vasp.rsub.help
@@ -1 +1,52 @@
-max v2; #N vpatcher 189 164 749 507; #P message 357 275 54 196617 vasp buf!-; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 357 295 73 196617 p clear_buffer; #P comment 49 91 205 196617 optional argument/right inlet: right operand; #P comment 49 76 214 196617 subtracts a value or a vasp from a vasp; #P comment 49 37 89 196622 vasp.!-; #P message 52 136 54 196617 vasp buf!-; #P newex 52 236 61 196617 vasp.update; #P newex 52 213 58 196617 vasp.!- 0.2; #P newex 52 168 80 196617 vasp.osc 44100; #P newex 52 191 55 196617 vasp.* 0.5; #P hidden message 214 136 45 196617 set buf!-; #P hidden newex 214 115 45 196617 loadbang; #P user waveform~ 214 156 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 432 295 94 196617 buffer~ buf!- 2000; #P comment 49 60 100 196617 reverse subtraction; #P connect 9 0 6 0; #P connect 6 0 5 0; #P connect 5 0 7 0; #P connect 7 0 8 0; #P hidden connect 3 0 4 0; #P hidden connect 4 0 2 0; #P connect 14 0 13 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 189 164 749 507;
+#P message 357 275 54 196617 vasp buf!-;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 357 295 73 196617 p clear_buffer;
+#P comment 49 91 205 196617 optional argument/right inlet: right operand;
+#P comment 49 76 214 196617 subtracts a value or a vasp from a vasp;
+#P comment 49 37 89 196622 vasp.!-;
+#P message 52 136 54 196617 vasp buf!-;
+#P newex 52 236 61 196617 vasp.update;
+#P newex 52 213 58 196617 vasp.!- 0.2;
+#P newex 52 168 80 196617 vasp.osc 44100;
+#P newex 52 191 55 196617 vasp.* 0.5;
+#P hidden message 214 136 45 196617 set buf!-;
+#P hidden newex 214 115 45 196617 loadbang;
+#P user waveform~ 214 156 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 432 295 94 196617 buffer~ buf!- 2000;
+#P comment 49 60 100 196617 reverse subtraction;
+#P connect 9 0 6 0;
+#P connect 6 0 5 0;
+#P connect 5 0 7 0;
+#P connect 7 0 8 0;
+#P hidden connect 3 0 4 0;
+#P hidden connect 4 0 2 0;
+#P connect 14 0 13 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.rvalleys.help b/externals/grill/vasp/max-help/vasp.rvalleys.help
index 0115a622..0c805c6f 100755
--- a/externals/grill/vasp/max-help/vasp.rvalleys.help
+++ b/externals/grill/vasp/max-help/vasp.rvalleys.help
@@ -1 +1,177 @@
-max v2; #N vpatcher 247 96 939 616; #P newex 58 434 55 196617 vasp.* 0.5; #P newex 58 411 45 196617 vasp.opt; #P flonum 142 331 72 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 53 98 170 196617 right outlet: current density (0-1); #P message 442 405 159 196617 vasp buffrvalleys1 buffrvalleys2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 442 460 78 196617 p clear_buffers; #P hidden newex 521 415 48 196617 r 1173path; #P user umenu 79 143 72 196647 1 64 159 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1173path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 141 165 43 196617 p loader; #P flonum 181 285 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P comment 53 113 172 196617 needs two vectors (real/imaginary); #P newex 58 459 61 196617 vasp.update; #P message 58 363 159 196617 vasp buffrvalleys1 buffrvalleys2; #P newex 58 384 52 196617 vasp.c!fft; #P newex 58 230 61 196617 vasp.update; #P newex 58 328 61 196617 vasp.update; #P message 58 264 159 196617 vasp buffrvalleys1 buffrvalleys2; #P newex 58 308 94 196617 vasp.rvalleys 0.05; #P message 302 461 27 196617 stop; #P message 234 461 65 196617 startwindow; #P newex 343 485 29 196617 dac~; #P newex 343 434 30 196617 line~; #P message 343 405 72 196617 0 \, 2000 2000; #P newex 343 460 98 196617 play~ buffrvalleys1; #P message 58 186 159 196617 vasp buffrvalleys1 buffrvalleys2; #P newex 58 207 49 196617 vasp.cfft; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 343 87 49 196617 p wfkeys; #P hidden message 343 253 85 196617 set buffrvalleys2; #P user waveform~ 343 271 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 521 460 134 196617 buffer~ buffrvalleys2 2000; #P hidden message 343 133 85 196617 set buffrvalleys1; #P hidden newex 343 109 45 196617 loadbang; #P user waveform~ 343 151 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 521 440 134 196617 buffer~ buffrvalleys1 2000; #P comment 53 82 170 196617 argument/right inlet: density (0-1); #P comment 53 67 177 196617 find radius valleys of a complex vasp; #P comment 53 44 138 196622 vasp.rvalleys; #P comment 53 145 33 196617 read; #P comment 217 333 78 196617 current density; #P connect 14 0 13 0; #P connect 13 0 24 0; #P connect 22 0 21 0; #P connect 21 0 23 0; #P connect 26 0 25 0; #P connect 25 0 37 0; #P connect 37 0 38 0; #P connect 38 0 27 0; #P hidden connect 31 1 30 0; #P fasten 29 0 21 1 186 304 147 304; #P connect 21 1 36 0; #P hidden fasten 7 0 8 0 348 114 348 114; #P hidden fasten 5 1 8 0 650 459 674 459 674 129 348 129; #P hidden connect 12 0 6 0; #P hidden connect 8 0 6 0; #P hidden fasten 7 0 11 0 348 114 348 114; #P hidden fasten 9 1 11 0 650 480 674 480 674 251 348 251; #P hidden connect 12 0 10 0; #P hidden connect 11 0 10 0; #P connect 16 0 17 0; #P connect 17 0 15 0; #P connect 15 0 18 0; #P fasten 19 0 18 0 239 479 348 479; #P fasten 20 0 18 0 307 479 348 479; #P connect 15 0 18 1; #P connect 34 0 33 0; #P hidden connect 32 0 5 0; #P hidden fasten 10 5 6 4 648 374 659 374 659 145 648 145; #P hidden connect 6 5 10 4; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 247 96 939 616;
+#P newex 58 434 55 196617 vasp.* 0.5;
+#P newex 58 411 45 196617 vasp.opt;
+#P flonum 142 331 72 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 53 98 170 196617 right outlet: current density (0-1);
+#P message 442 405 159 196617 vasp buffrvalleys1 buffrvalleys2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 442 460 78 196617 p clear_buffers;
+#P hidden newex 521 415 48 196617 r 1173path;
+#P user umenu 79 143 72 196647 1 64 159 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1173path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 141 165 43 196617 p loader;
+#P flonum 181 285 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P comment 53 113 172 196617 needs two vectors (real/imaginary);
+#P newex 58 459 61 196617 vasp.update;
+#P message 58 363 159 196617 vasp buffrvalleys1 buffrvalleys2;
+#P newex 58 384 52 196617 vasp.c!fft;
+#P newex 58 230 61 196617 vasp.update;
+#P newex 58 328 61 196617 vasp.update;
+#P message 58 264 159 196617 vasp buffrvalleys1 buffrvalleys2;
+#P newex 58 308 94 196617 vasp.rvalleys 0.05;
+#P message 302 461 27 196617 stop;
+#P message 234 461 65 196617 startwindow;
+#P newex 343 485 29 196617 dac~;
+#P newex 343 434 30 196617 line~;
+#P message 343 405 72 196617 0 \, 2000 2000;
+#P newex 343 460 98 196617 play~ buffrvalleys1;
+#P message 58 186 159 196617 vasp buffrvalleys1 buffrvalleys2;
+#P newex 58 207 49 196617 vasp.cfft;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 343 87 49 196617 p wfkeys;
+#P hidden message 343 253 85 196617 set buffrvalleys2;
+#P user waveform~ 343 271 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 521 460 134 196617 buffer~ buffrvalleys2 2000;
+#P hidden message 343 133 85 196617 set buffrvalleys1;
+#P hidden newex 343 109 45 196617 loadbang;
+#P user waveform~ 343 151 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 521 440 134 196617 buffer~ buffrvalleys1 2000;
+#P comment 53 82 170 196617 argument/right inlet: density (0-1);
+#P comment 53 67 177 196617 find radius valleys of a complex vasp;
+#P comment 53 44 138 196622 vasp.rvalleys;
+#P comment 53 145 33 196617 read;
+#P comment 217 333 78 196617 current density;
+#P connect 14 0 13 0;
+#P connect 13 0 24 0;
+#P connect 22 0 21 0;
+#P connect 21 0 23 0;
+#P connect 26 0 25 0;
+#P connect 25 0 37 0;
+#P connect 37 0 38 0;
+#P connect 38 0 27 0;
+#P hidden connect 31 1 30 0;
+#P fasten 29 0 21 1 186 304 147 304;
+#P connect 21 1 36 0;
+#P hidden fasten 7 0 8 0 348 114 348 114;
+#P hidden fasten 5 1 8 0 650 459 674 459 674 129 348 129;
+#P hidden connect 12 0 6 0;
+#P hidden connect 8 0 6 0;
+#P hidden fasten 7 0 11 0 348 114 348 114;
+#P hidden fasten 9 1 11 0 650 480 674 480 674 251 348 251;
+#P hidden connect 12 0 10 0;
+#P hidden connect 11 0 10 0;
+#P connect 16 0 17 0;
+#P connect 17 0 15 0;
+#P connect 15 0 18 0;
+#P fasten 19 0 18 0 239 479 348 479;
+#P fasten 20 0 18 0 307 479 348 479;
+#P connect 15 0 18 1;
+#P connect 34 0 33 0;
+#P hidden connect 32 0 5 0;
+#P hidden fasten 10 5 6 4 648 374 659 374 659 145 648 145;
+#P hidden connect 6 5 10 4;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.set.help b/externals/grill/vasp/max-help/vasp.set.help
index f078049c..7d3a4a3e 100755
--- a/externals/grill/vasp/max-help/vasp.set.help
+++ b/externals/grill/vasp/max-help/vasp.set.help
@@ -1 +1,326 @@
-max v2; #N vpatcher 241 84 852 554; #P message 396 398 52 196617 vasp buf=; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 396 419 73 196617 p clear_buffer; #N vpatcher 113 336 466 586; #P newex 152 160 27 196617 t b f; #P newex 67 98 27 196617 - 0.; #P newex 67 76 27 196617 t b i; #P comment 226 139 72 196617 msec to samps; #P comment 107 80 118 196617 <<< end - start = length; #P newex 152 137 71 196617 * 44.099998; #P newex 67 137 67 196617 * 44.099998; #P newex 67 190 50 196617 pack 0 0; #N comlet endpoint in ms; #P inlet 152 32 15 0; #N comlet startpoint in ms; #P inlet 67 32 15 0; #N comlet length and offset in samples (list); #P outlet 67 215 15 0; #P comment 151 98 75 196617 start = offset; #P connect 2 0 9 0; #P connect 3 0 10 0; #P connect 9 0 10 0; #P connect 10 0 5 0; #P fasten 11 0 4 0 157 180 72 180; #P connect 5 0 4 0; #P connect 4 0 1 0; #P connect 9 1 10 1; #P fasten 11 1 4 1 174 183 112 183; #P connect 2 0 6 0; #P connect 6 0 11 0; #P pop; #P newobj 362 281 115 196617 p loop_to_length/offset; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 261 89 49 196617 p wfkeys; #P comment 114 298 136 196617 set selected samples to zero; #P button 95 297 15 0; #P newex 55 219 61 196617 vasp.update; #P newex 55 193 55 196617 vasp.* 0.5; #P message 362 327 99 196617 set vasp \$1 buf= \$2; #P comment 114 147 70 196617 generate noise; #N vpatcher 278 163 996 630; #P user umenu 86 119 72 196647 1 64 135 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 355 682; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1077path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 148 140 43 196617 p loader; #P message 504 394 85 196617 vasp buf=a buf=b; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 504 415 78 196617 p clear_buffers; #P hidden newex 637 374 48 196617 r 1077path; #P comment 59 121 26 196617 read; #N vpatcher 113 336 466 586; #N comlet length in ms out; #P outlet 11 215 15 0; #P newex 152 160 27 196617 t b f; #P newex 67 98 27 196617 - 0.; #P newex 67 76 27 196617 t b i; #P comment 226 139 72 196617 msec to samps; #P comment 107 80 118 196617 <<< end - start = length; #P newex 152 137 71 196617 * 44.099998; #P newex 67 137 67 196617 * 44.099998; #P newex 67 190 50 196617 pack 0 0; #N comlet endpoint in ms; #P inlet 152 32 15 0; #N comlet startpoint in ms; #P inlet 67 32 15 0; #N comlet length and offset in samples (list); #P outlet 67 215 15 0; #P comment 151 98 75 196617 start = offset; #P connect 10 0 12 0; #P connect 2 0 9 0; #P connect 9 0 10 0; #P connect 3 0 10 0; #P connect 10 0 5 0; #P connect 5 0 4 0; #P fasten 11 0 4 0 157 180 72 180; #P connect 4 0 1 0; #P connect 9 1 10 1; #P fasten 11 1 4 1 174 183 112 183; #P connect 2 0 6 0; #P connect 6 0 11 0; #P pop; #P newobj 214 233 115 196617 p loop_to_length/offset; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 375 51 49 196617 p wfkeys; #P newex 73 289 27 196617 t f f; #P message 593 376 41 196617 size \$1; #P newex 73 323 74 196617 * 44.099998; #P newex 73 264 27 196617 f; #P button 73 200 15 0; #P message 168 348 85 196617 vasp \$1 buf=a \$2; #P message 73 349 72 196617 vasp \$1 buf=b; #P newex 73 378 38 196617 vasp.=; #P comment 359 235 14 196617 B; #P newex 73 408 61 196617 vasp.update; #P hidden message 375 214 50 196617 set buf=b; #P user waveform~ 375 233 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P hidden message 375 92 50 196617 set buf=a; #P hidden newex 375 71 45 196617 loadbang; #P user waveform~ 374 112 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 593 394 95 196617 buffer~ buf=b 2000; #P newex 593 414 95 196617 buffer~ buf=a 2000; #P comment 359 114 14 196617 A; #P comment 90 200 124 196617 copy selection from a to b; #P comment 73 160 162 196617 choose a selection from buffer a; #P comment 36 49 326 196622 use vasp.= to copy from buffer a to buffer b; #P comment 358 363 100 196617 resize the buffer with selectionlength; #P connect 17 0 18 0; #P connect 18 0 21 0; #P connect 21 0 19 0; #P connect 19 0 15 0; #P connect 15 0 14 0; #P connect 14 0 12 0; #P fasten 23 0 18 1 219 256 95 256; #P fasten 16 0 14 1 173 371 106 371; #P hidden connect 29 1 28 0; #P fasten 23 1 16 0 324 283 173 283; #P fasten 7 2 23 0 499 219 219 219; #P fasten 7 3 23 1 559 225 324 225; #P hidden connect 22 0 7 0; #P hidden connect 9 0 7 0; #P hidden fasten 5 1 9 0 683 434 694 434 694 88 380 88; #P hidden connect 8 0 9 0; #P hidden connect 8 0 11 0; #P hidden connect 11 0 10 0; #P hidden connect 22 0 10 0; #P connect 27 0 26 0; #P fasten 21 1 20 0 95 317 357 317 357 362 598 362; #P fasten 20 0 6 0 598 389 598 389; #P hidden connect 25 0 5 0; #P pop; #P newobj 55 419 85 196617 p more_examples; #P message 55 146 52 196617 vasp buf=; #P newex 55 167 55 196617 vasp.noise; #P newex 55 378 61 196617 vasp.update; #P message 55 272 52 196617 vasp buf=; #P newex 55 354 45 196617 vasp.= 0; #P comment 52 81 195 196617 optional argument/right inlet: value/vasp; #P comment 52 66 102 196617 set a vasp to a value; #P comment 52 43 89 196622 vasp.=; #P hidden message 261 129 45 196617 set buf=; #P hidden newex 261 109 45 196617 loadbang; #P user waveform~ 261 148 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P comment 114 273 110 196617 set all samples to zero; #P newex 481 419 92 196617 buffer~ buf= 2000; #P comment 55 121 131 196617 use vasp.= to clear a buffer; #P connect 13 0 12 0; #P connect 12 0 17 0; #P connect 17 0 18 0; #P fasten 16 0 9 0 367 346 60 346; #P fasten 19 0 9 0 100 346 60 346; #P connect 10 0 9 0; #P connect 9 0 11 0; #P hidden connect 4 0 5 0; #P hidden connect 21 0 3 0; #P hidden connect 5 0 3 0; #P fasten 3 2 22 0 386 264 367 264; #P connect 22 0 16 0; #P connect 24 0 23 0; #P fasten 3 3 22 1 446 264 472 264; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 241 84 852 554;
+#P message 396 398 52 196617 vasp buf=;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 396 419 73 196617 p clear_buffer;
+#N vpatcher 113 336 466 586;
+#P newex 152 160 27 196617 t b f;
+#P newex 67 98 27 196617 - 0.;
+#P newex 67 76 27 196617 t b i;
+#P comment 226 139 72 196617 msec to samps;
+#P comment 107 80 118 196617 <<< end - start = length;
+#P newex 152 137 71 196617 * 44.099998;
+#P newex 67 137 67 196617 * 44.099998;
+#P newex 67 190 50 196617 pack 0 0;
+#N comlet endpoint in ms;
+#P inlet 152 32 15 0;
+#N comlet startpoint in ms;
+#P inlet 67 32 15 0;
+#N comlet length and offset in samples (list);
+#P outlet 67 215 15 0;
+#P comment 151 98 75 196617 start = offset;
+#P connect 2 0 9 0;
+#P connect 3 0 10 0;
+#P connect 9 0 10 0;
+#P connect 10 0 5 0;
+#P fasten 11 0 4 0 157 180 72 180;
+#P connect 5 0 4 0;
+#P connect 4 0 1 0;
+#P connect 9 1 10 1;
+#P fasten 11 1 4 1 174 183 112 183;
+#P connect 2 0 6 0;
+#P connect 6 0 11 0;
+#P pop;
+#P newobj 362 281 115 196617 p loop_to_length/offset;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 261 89 49 196617 p wfkeys;
+#P comment 114 298 136 196617 set selected samples to zero;
+#P button 95 297 15 0;
+#P newex 55 219 61 196617 vasp.update;
+#P newex 55 193 55 196617 vasp.* 0.5;
+#P message 362 327 99 196617 set vasp \$1 buf= \$2;
+#P comment 114 147 70 196617 generate noise;
+#N vpatcher 278 163 996 630;
+#P user umenu 86 119 72 196647 1 64 135 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 355 682;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1077path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 148 140 43 196617 p loader;
+#P message 504 394 85 196617 vasp buf=a buf=b;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 504 415 78 196617 p clear_buffers;
+#P hidden newex 637 374 48 196617 r 1077path;
+#P comment 59 121 26 196617 read;
+#N vpatcher 113 336 466 586;
+#N comlet length in ms out;
+#P outlet 11 215 15 0;
+#P newex 152 160 27 196617 t b f;
+#P newex 67 98 27 196617 - 0.;
+#P newex 67 76 27 196617 t b i;
+#P comment 226 139 72 196617 msec to samps;
+#P comment 107 80 118 196617 <<< end - start = length;
+#P newex 152 137 71 196617 * 44.099998;
+#P newex 67 137 67 196617 * 44.099998;
+#P newex 67 190 50 196617 pack 0 0;
+#N comlet endpoint in ms;
+#P inlet 152 32 15 0;
+#N comlet startpoint in ms;
+#P inlet 67 32 15 0;
+#N comlet length and offset in samples (list);
+#P outlet 67 215 15 0;
+#P comment 151 98 75 196617 start = offset;
+#P connect 10 0 12 0;
+#P connect 2 0 9 0;
+#P connect 9 0 10 0;
+#P connect 3 0 10 0;
+#P connect 10 0 5 0;
+#P connect 5 0 4 0;
+#P fasten 11 0 4 0 157 180 72 180;
+#P connect 4 0 1 0;
+#P connect 9 1 10 1;
+#P fasten 11 1 4 1 174 183 112 183;
+#P connect 2 0 6 0;
+#P connect 6 0 11 0;
+#P pop;
+#P newobj 214 233 115 196617 p loop_to_length/offset;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 375 51 49 196617 p wfkeys;
+#P newex 73 289 27 196617 t f f;
+#P message 593 376 41 196617 size \$1;
+#P newex 73 323 74 196617 * 44.099998;
+#P newex 73 264 27 196617 f;
+#P button 73 200 15 0;
+#P message 168 348 85 196617 vasp \$1 buf=a \$2;
+#P message 73 349 72 196617 vasp \$1 buf=b;
+#P newex 73 378 38 196617 vasp.=;
+#P comment 359 235 14 196617 B;
+#P newex 73 408 61 196617 vasp.update;
+#P hidden message 375 214 50 196617 set buf=b;
+#P user waveform~ 375 233 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P hidden message 375 92 50 196617 set buf=a;
+#P hidden newex 375 71 45 196617 loadbang;
+#P user waveform~ 374 112 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 593 394 95 196617 buffer~ buf=b 2000;
+#P newex 593 414 95 196617 buffer~ buf=a 2000;
+#P comment 359 114 14 196617 A;
+#P comment 90 200 124 196617 copy selection from a to b;
+#P comment 73 160 162 196617 choose a selection from buffer a;
+#P comment 36 49 326 196622 use vasp.= to copy from buffer a to buffer b;
+#P comment 358 363 100 196617 resize the buffer with selectionlength;
+#P connect 17 0 18 0;
+#P connect 18 0 21 0;
+#P connect 21 0 19 0;
+#P connect 19 0 15 0;
+#P connect 15 0 14 0;
+#P connect 14 0 12 0;
+#P fasten 23 0 18 1 219 256 95 256;
+#P fasten 16 0 14 1 173 371 106 371;
+#P hidden connect 29 1 28 0;
+#P fasten 23 1 16 0 324 283 173 283;
+#P fasten 7 2 23 0 499 219 219 219;
+#P fasten 7 3 23 1 559 225 324 225;
+#P hidden connect 22 0 7 0;
+#P hidden connect 9 0 7 0;
+#P hidden fasten 5 1 9 0 683 434 694 434 694 88 380 88;
+#P hidden connect 8 0 9 0;
+#P hidden connect 8 0 11 0;
+#P hidden connect 11 0 10 0;
+#P hidden connect 22 0 10 0;
+#P connect 27 0 26 0;
+#P fasten 21 1 20 0 95 317 357 317 357 362 598 362;
+#P fasten 20 0 6 0 598 389 598 389;
+#P hidden connect 25 0 5 0;
+#P pop;
+#P newobj 55 419 85 196617 p more_examples;
+#P message 55 146 52 196617 vasp buf=;
+#P newex 55 167 55 196617 vasp.noise;
+#P newex 55 378 61 196617 vasp.update;
+#P message 55 272 52 196617 vasp buf=;
+#P newex 55 354 45 196617 vasp.= 0;
+#P comment 52 81 195 196617 optional argument/right inlet: value/vasp;
+#P comment 52 66 102 196617 set a vasp to a value;
+#P comment 52 43 89 196622 vasp.=;
+#P hidden message 261 129 45 196617 set buf=;
+#P hidden newex 261 109 45 196617 loadbang;
+#P user waveform~ 261 148 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P comment 114 273 110 196617 set all samples to zero;
+#P newex 481 419 92 196617 buffer~ buf= 2000;
+#P comment 55 121 131 196617 use vasp.= to clear a buffer;
+#P connect 13 0 12 0;
+#P connect 12 0 17 0;
+#P connect 17 0 18 0;
+#P fasten 16 0 9 0 367 346 60 346;
+#P fasten 19 0 9 0 100 346 60 346;
+#P connect 10 0 9 0;
+#P connect 9 0 11 0;
+#P hidden connect 4 0 5 0;
+#P hidden connect 21 0 3 0;
+#P hidden connect 5 0 3 0;
+#P fasten 3 2 22 0 386 264 367 264;
+#P connect 22 0 16 0;
+#P connect 24 0 23 0;
+#P fasten 3 3 22 1 446 264 472 264;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.shift.help b/externals/grill/vasp/max-help/vasp.shift.help
index fb2b364e..80acf8b4 100755
--- a/externals/grill/vasp/max-help/vasp.shift.help
+++ b/externals/grill/vasp/max-help/vasp.shift.help
@@ -1 +1,92 @@
-max v2; #N vpatcher 179 197 765 568; #P origin 0 20; #P message 376 267 65 196617 vasp bufshift; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 376 287 73 196617 p clear_buffer; #P hidden newex 456 257 48 196617 r 1124path; #P user umenu 84 105 72 196647 1 64 121 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1124path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 146 127 43 196617 p loader; #P comment 58 107 26 196617 read; #P comment 55 71 187 196617 optional argument/right inlet: value; #P message 207 288 27 196617 stop; #P message 139 288 65 196617 startwindow; #P newex 249 314 29 196617 dac~; #P newex 249 262 30 196617 line~; #P message 249 239 72 196617 0 \, 2000 2000; #P newex 249 287 71 196617 play~ bufshift; #P number 138 173 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 63 224 61 196617 vasp.update; #P message 63 146 65 196617 vasp bufshift; #P newex 63 196 85 196617 vasp.shift 10000; #P comment 55 56 128 196617 shifts the buffer content; #P comment 55 33 96 196622 vasp.shift; #P hidden message 249 91 60 196617 set bufshift; #P hidden newex 249 66 45 196617 loadbang; #P user waveform~ 249 110 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 456 287 105 196617 buffer~ bufshift 2000; #P connect 7 0 6 0; #P connect 6 0 8 0; #P connect 9 0 6 1; #P hidden connect 19 1 18 0; #P hidden fasten 0 1 3 0 556 307 565 307 565 87 254 87; #P hidden connect 2 0 3 0; #P hidden connect 3 0 1 0; #P connect 11 0 12 0; #P connect 12 0 10 0; #P connect 10 0 13 0; #P fasten 15 0 13 0 212 307 254 307; #P fasten 14 0 13 0 144 307 254 307; #P connect 10 0 13 1; #P connect 22 0 21 0; #P hidden connect 20 0 0 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 179 197 765 568;
+#P origin 0 20;
+#P message 376 267 65 196617 vasp bufshift;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 376 287 73 196617 p clear_buffer;
+#P hidden newex 456 257 48 196617 r 1124path;
+#P user umenu 84 105 72 196647 1 64 121 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1124path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 146 127 43 196617 p loader;
+#P comment 58 107 26 196617 read;
+#P comment 55 71 187 196617 optional argument/right inlet: value;
+#P message 207 288 27 196617 stop;
+#P message 139 288 65 196617 startwindow;
+#P newex 249 314 29 196617 dac~;
+#P newex 249 262 30 196617 line~;
+#P message 249 239 72 196617 0 \, 2000 2000;
+#P newex 249 287 71 196617 play~ bufshift;
+#P number 138 173 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 63 224 61 196617 vasp.update;
+#P message 63 146 65 196617 vasp bufshift;
+#P newex 63 196 85 196617 vasp.shift 10000;
+#P comment 55 56 128 196617 shifts the buffer content;
+#P comment 55 33 96 196622 vasp.shift;
+#P hidden message 249 91 60 196617 set bufshift;
+#P hidden newex 249 66 45 196617 loadbang;
+#P user waveform~ 249 110 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 456 287 105 196617 buffer~ bufshift 2000;
+#P connect 7 0 6 0;
+#P connect 6 0 8 0;
+#P connect 9 0 6 1;
+#P hidden connect 19 1 18 0;
+#P hidden fasten 0 1 3 0 556 307 565 307 565 87 254 87;
+#P hidden connect 2 0 3 0;
+#P hidden connect 3 0 1 0;
+#P connect 11 0 12 0;
+#P connect 12 0 10 0;
+#P connect 10 0 13 0;
+#P fasten 15 0 13 0 212 307 254 307;
+#P fasten 14 0 13 0 144 307 254 307;
+#P connect 10 0 13 1;
+#P connect 22 0 21 0;
+#P hidden connect 20 0 0 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.sign.help b/externals/grill/vasp/max-help/vasp.sign.help
index abbe2a90..236417cf 100755
--- a/externals/grill/vasp/max-help/vasp.sign.help
+++ b/externals/grill/vasp/max-help/vasp.sign.help
@@ -1 +1,94 @@
-max v2; #N vpatcher 228 161 880 523; #P comment 58 96 192 196617 samples == 0 stay 0; #P message 420 284 64 196617 vasp bufsign; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 420 305 73 196617 p clear_buffer; #P comment 58 81 192 196617 samples < 0 become -1; #P newex 60 195 61 196617 vasp.update; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 304 52 49 196617 p wfkeys; #P newex 60 305 61 196617 vasp.update; #P comment 58 236 256 196617 use sign to generate a square wave out of a sine wave; #P message 60 257 64 196617 vasp bufsign; #P newex 60 148 80 196617 vasp.osc 44100; #P newex 60 282 50 196617 vasp.sign; #P hidden message 304 90 55 196617 set bufsign; #P hidden newex 304 71 45 196617 loadbang; #P user waveform~ 304 109 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P message 60 127 64 196617 vasp bufsign; #P newex 508 305 104 196617 buffer~ bufsign 2000; #P comment 58 66 192 196617 samples > 0 become 1; #P comment 58 43 109 196622 vasp.sign; #P comment 135 128 100 196617 generate a sine wave; #P connect 4 0 9 0; #P connect 9 0 14 0; #P connect 10 0 8 0; #P connect 8 0 12 0; #P hidden connect 6 0 7 0; #P hidden connect 7 0 5 0; #P hidden connect 13 0 5 0; #P connect 17 0 16 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 228 161 880 523;
+#P comment 58 96 192 196617 samples == 0 stay 0;
+#P message 420 284 64 196617 vasp bufsign;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 420 305 73 196617 p clear_buffer;
+#P comment 58 81 192 196617 samples < 0 become -1;
+#P newex 60 195 61 196617 vasp.update;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 304 52 49 196617 p wfkeys;
+#P newex 60 305 61 196617 vasp.update;
+#P comment 58 236 256 196617 use sign to generate a square wave out of a sine wave;
+#P message 60 257 64 196617 vasp bufsign;
+#P newex 60 148 80 196617 vasp.osc 44100;
+#P newex 60 282 50 196617 vasp.sign;
+#P hidden message 304 90 55 196617 set bufsign;
+#P hidden newex 304 71 45 196617 loadbang;
+#P user waveform~ 304 109 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P message 60 127 64 196617 vasp bufsign;
+#P newex 508 305 104 196617 buffer~ bufsign 2000;
+#P comment 58 66 192 196617 samples > 0 become 1;
+#P comment 58 43 109 196622 vasp.sign;
+#P comment 135 128 100 196617 generate a sine wave;
+#P connect 4 0 9 0;
+#P connect 9 0 14 0;
+#P connect 10 0 8 0;
+#P connect 8 0 12 0;
+#P hidden connect 6 0 7 0;
+#P hidden connect 7 0 5 0;
+#P hidden connect 13 0 5 0;
+#P connect 17 0 16 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.spit.help b/externals/grill/vasp/max-help/vasp.spit.help
index 2a85d814..17903423 100755
--- a/externals/grill/vasp/max-help/vasp.spit.help
+++ b/externals/grill/vasp/max-help/vasp.spit.help
@@ -1 +1,42 @@
-max v2; #N vpatcher 250 84 747 648; #P comment 158 430 219 196617 if more vectors than outlets \, see what it does!; #P comment 194 307 245 196617 spits out one vector after the other from right to left; #P newex 101 458 38 196617 print b; #P newex 62 458 38 196617 print a; #P message 62 399 149 196617 vasp bufspit1 bufspit2 bufspit3; #P newex 62 428 88 196617 vasp.spit 2; #P newex 140 458 59 196617 print ready; #P newex 101 335 38 196617 print b; #P newex 62 335 38 196617 print a; #P newex 62 305 127 196617 vasp.spit 3; #P message 62 271 109 196617 vasp bufspit1 bufspit2; #P newex 140 335 38 196617 print c; #P newex 179 335 59 196617 print ready; #P newex 101 220 38 196617 print b; #P newex 62 220 38 196617 print a; #P comment 56 106 171 196617 most right outlet: bang when ready; #P message 62 160 149 196617 vasp bufspit1 bufspit2 bufspit3; #P newex 348 469 109 196617 buffer~ bufspit1 2000; #P newex 62 190 49 196617 vasp.spit; #P comment 56 76 260 196617 spit out vectors of a vasp (one vector after the other); #P comment 56 53 89 196622 vasp.spit; #P comment 56 91 344 196617 argument: number of outlets ( if more than 1 \, outputs from right to left ); #P comment 119 192 235 196617 spits out one vector after the other out of 1 outlet; #P message 187 271 149 196617 vasp bufspit1 bufspit2 bufspit3; #P newex 348 490 109 196617 buffer~ bufspit2 2000; #P newex 348 512 109 196617 buffer~ bufspit3 2000; #P fasten 9 0 7 0 67 178 67 178; #P connect 7 0 11 0; #P connect 15 0 16 0; #P fasten 2 0 16 0 192 293 67 293; #P connect 16 0 17 0; #P fasten 21 0 20 0 67 416 67 416; #P connect 20 0 22 0; #P connect 7 1 12 0; #P fasten 16 1 18 0 106 328 106 328; #P fasten 20 1 23 0 106 451 106 451; #P connect 16 2 14 0; #P connect 20 2 19 0; #P connect 16 3 13 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 250 84 747 648;
+#P comment 158 430 219 196617 if more vectors than outlets \, see what it does!;
+#P comment 194 307 245 196617 spits out one vector after the other from right to left;
+#P newex 101 458 38 196617 print b;
+#P newex 62 458 38 196617 print a;
+#P message 62 399 149 196617 vasp bufspit1 bufspit2 bufspit3;
+#P newex 62 428 88 196617 vasp.spit 2;
+#P newex 140 458 59 196617 print ready;
+#P newex 101 335 38 196617 print b;
+#P newex 62 335 38 196617 print a;
+#P newex 62 305 127 196617 vasp.spit 3;
+#P message 62 271 109 196617 vasp bufspit1 bufspit2;
+#P newex 140 335 38 196617 print c;
+#P newex 179 335 59 196617 print ready;
+#P newex 101 220 38 196617 print b;
+#P newex 62 220 38 196617 print a;
+#P comment 56 106 171 196617 most right outlet: bang when ready;
+#P message 62 160 149 196617 vasp bufspit1 bufspit2 bufspit3;
+#P newex 348 469 109 196617 buffer~ bufspit1 2000;
+#P newex 62 190 49 196617 vasp.spit;
+#P comment 56 76 260 196617 spit out vectors of a vasp (one vector after the other);
+#P comment 56 53 89 196622 vasp.spit;
+#P comment 56 91 344 196617 argument: number of outlets ( if more than 1 \, outputs from right to left );
+#P comment 119 192 235 196617 spits out one vector after the other out of 1 outlet;
+#P message 187 271 149 196617 vasp bufspit1 bufspit2 bufspit3;
+#P newex 348 490 109 196617 buffer~ bufspit2 2000;
+#P newex 348 512 109 196617 buffer~ bufspit3 2000;
+#P fasten 9 0 7 0 67 178 67 178;
+#P connect 7 0 11 0;
+#P connect 15 0 16 0;
+#P fasten 2 0 16 0 192 293 67 293;
+#P connect 16 0 17 0;
+#P fasten 21 0 20 0 67 416 67 416;
+#P connect 20 0 22 0;
+#P connect 7 1 12 0;
+#P fasten 16 1 18 0 106 328 106 328;
+#P fasten 20 1 23 0 106 451 106 451;
+#P connect 16 2 14 0;
+#P connect 20 2 19 0;
+#P connect 16 3 13 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.split.help b/externals/grill/vasp/max-help/vasp.split.help
index 5e499c0a..088f8aba 100755
--- a/externals/grill/vasp/max-help/vasp.split.help
+++ b/externals/grill/vasp/max-help/vasp.split.help
@@ -1 +1,31 @@
-max v2; #N vpatcher 217 175 685 652; #P hidden message 386 189 22 196617 set; #P hidden newex 386 160 45 196617 loadbang; #P comment 56 100 374 196617 most right outlet: rest (if there is one) of vectors in a new vasp \, otherwise: bang; #P message 190 153 158 196617 vasp bufsplit1 bufsplit2 bufsplit3; #P newex 319 423 112 196617 buffer~ bufsplit3 2000; #P newex 319 380 112 196617 buffer~ bufsplit1 2000; #P newex 113 217 60 196617 prepend set; #P message 113 241 208 196617; #P message 63 339 258 196617; #P newex 63 310 60 196617 prepend set; #P newex 63 187 61 196617 vasp.split 2; #P newex 63 278 58 196617 vasp.join 2; #P comment 56 70 137 196617 split a vasp into its vectors; #P message 63 153 119 196617 vasp bufsplit1 buffsplit2; #P comment 56 47 89 196622 vasp.split; #P comment 56 85 174 196617 argument: number of vectors to split; #P newex 319 401 112 196617 buffer~ bufsplit2 2000; #P connect 3 0 6 0; #P fasten 13 0 6 0 195 175 68 175; #P connect 6 0 5 0; #P connect 5 0 7 0; #P hidden fasten 16 0 8 0 391 332 68 332; #P connect 7 0 8 0; #P fasten 6 1 5 1 93 266 116 266; #P connect 6 2 10 0; #P connect 10 0 9 0; #P hidden fasten 16 0 9 0 391 236 118 236; #P hidden connect 15 0 16 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 217 175 685 652;
+#P hidden message 386 189 22 196617 set;
+#P hidden newex 386 160 45 196617 loadbang;
+#P comment 56 100 374 196617 most right outlet: rest (if there is one) of vectors in a new vasp \, otherwise: bang;
+#P message 190 153 158 196617 vasp bufsplit1 bufsplit2 bufsplit3;
+#P newex 319 423 112 196617 buffer~ bufsplit3 2000;
+#P newex 319 380 112 196617 buffer~ bufsplit1 2000;
+#P newex 113 217 60 196617 prepend set;
+#P message 113 241 208 196617;
+#P message 63 339 258 196617;
+#P newex 63 310 60 196617 prepend set;
+#P newex 63 187 61 196617 vasp.split 2;
+#P newex 63 278 58 196617 vasp.join 2;
+#P comment 56 70 137 196617 split a vasp into its vectors;
+#P message 63 153 119 196617 vasp bufsplit1 buffsplit2;
+#P comment 56 47 89 196622 vasp.split;
+#P comment 56 85 174 196617 argument: number of vectors to split;
+#P newex 319 401 112 196617 buffer~ bufsplit2 2000;
+#P connect 3 0 6 0;
+#P fasten 13 0 6 0 195 175 68 175;
+#P connect 6 0 5 0;
+#P connect 5 0 7 0;
+#P hidden fasten 16 0 8 0 391 332 68 332;
+#P connect 7 0 8 0;
+#P fasten 6 1 5 1 93 266 116 266;
+#P connect 6 2 10 0;
+#P connect 10 0 9 0;
+#P hidden fasten 16 0 9 0 391 236 118 236;
+#P hidden connect 15 0 16 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.sqr.help b/externals/grill/vasp/max-help/vasp.sqr.help
index 004caa87..ecb11e25 100755
--- a/externals/grill/vasp/max-help/vasp.sqr.help
+++ b/externals/grill/vasp/max-help/vasp.sqr.help
@@ -1 +1,91 @@
-max v2; #N vpatcher 195 123 811 458; #P message 407 267 61 196617 vasp bufsqr; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 407 288 73 196617 p clear_buffer; #P newex 56 182 61 196617 vasp.update; #P comment 53 70 66 196617 sample^2; #P message 56 241 61 196617 vasp bufsqr; #P newex 56 266 45 196617 vasp.sqr; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 277 67 49 196617 p wfkeys; #P hidden message 277 109 54 196617 set bufsqr; #P hidden newex 277 89 45 196617 loadbang; #P user waveform~ 277 128 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 56 288 61 196617 vasp.update; #P message 56 130 61 196617 vasp bufsqr; #P newex 484 288 101 196617 buffer~ bufsqr 2000; #P newex 56 160 80 196617 vasp.osc 44100; #P comment 53 47 89 196622 vasp.sqr; #P comment 126 130 123 196617 generate a 1Hz sine wave; #P connect 4 0 2 0; #P connect 2 0 13 0; #P connect 11 0 10 0; #P connect 10 0 5 0; #P hidden connect 7 0 8 0; #P hidden connect 9 0 6 0; #P hidden connect 8 0 6 0; #P connect 15 0 14 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 195 123 811 458;
+#P message 407 267 61 196617 vasp bufsqr;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 407 288 73 196617 p clear_buffer;
+#P newex 56 182 61 196617 vasp.update;
+#P comment 53 70 66 196617 sample^2;
+#P message 56 241 61 196617 vasp bufsqr;
+#P newex 56 266 45 196617 vasp.sqr;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 277 67 49 196617 p wfkeys;
+#P hidden message 277 109 54 196617 set bufsqr;
+#P hidden newex 277 89 45 196617 loadbang;
+#P user waveform~ 277 128 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 56 288 61 196617 vasp.update;
+#P message 56 130 61 196617 vasp bufsqr;
+#P newex 484 288 101 196617 buffer~ bufsqr 2000;
+#P newex 56 160 80 196617 vasp.osc 44100;
+#P comment 53 47 89 196622 vasp.sqr;
+#P comment 126 130 123 196617 generate a 1Hz sine wave;
+#P connect 4 0 2 0;
+#P connect 2 0 13 0;
+#P connect 11 0 10 0;
+#P connect 10 0 5 0;
+#P hidden connect 7 0 8 0;
+#P hidden connect 9 0 6 0;
+#P hidden connect 8 0 6 0;
+#P connect 15 0 14 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.sqrt.help b/externals/grill/vasp/max-help/vasp.sqrt.help
index 2c6310b6..7df082a9 100755
--- a/externals/grill/vasp/max-help/vasp.sqrt.help
+++ b/externals/grill/vasp/max-help/vasp.sqrt.help
@@ -1 +1,91 @@
-max v2; #N vpatcher 247 135 857 466; #P message 398 255 65 196617 vasp bufsqrt; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 398 276 73 196617 p clear_buffer; #P newex 54 165 61 196617 vasp.update; #P comment 51 63 81 196617 square root; #P message 54 225 65 196617 vasp bufsqrt; #P newex 54 255 51 196617 vasp.sqrt; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 270 39 49 196617 p wfkeys; #P hidden message 270 85 58 196617 set bufsqrt; #P hidden newex 270 61 45 196617 loadbang; #P user waveform~ 270 111 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 54 276 61 196617 vasp.update; #P message 54 114 65 196617 vasp bufsqrt; #P newex 476 276 105 196617 buffer~ bufsqrt 2000; #P newex 54 144 80 196617 vasp.osc 44100; #P comment 51 40 89 196622 vasp.sqrt; #P comment 125 115 123 196617 generate a 1hz sine wave; #P connect 4 0 2 0; #P connect 2 0 13 0; #P connect 11 0 10 0; #P connect 10 0 5 0; #P hidden connect 7 0 8 0; #P hidden connect 9 0 6 0; #P hidden connect 8 0 6 0; #P connect 15 0 14 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 247 135 857 466;
+#P message 398 255 65 196617 vasp bufsqrt;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 398 276 73 196617 p clear_buffer;
+#P newex 54 165 61 196617 vasp.update;
+#P comment 51 63 81 196617 square root;
+#P message 54 225 65 196617 vasp bufsqrt;
+#P newex 54 255 51 196617 vasp.sqrt;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 270 39 49 196617 p wfkeys;
+#P hidden message 270 85 58 196617 set bufsqrt;
+#P hidden newex 270 61 45 196617 loadbang;
+#P user waveform~ 270 111 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 54 276 61 196617 vasp.update;
+#P message 54 114 65 196617 vasp bufsqrt;
+#P newex 476 276 105 196617 buffer~ bufsqrt 2000;
+#P newex 54 144 80 196617 vasp.osc 44100;
+#P comment 51 40 89 196622 vasp.sqrt;
+#P comment 125 115 123 196617 generate a 1hz sine wave;
+#P connect 4 0 2 0;
+#P connect 2 0 13 0;
+#P connect 11 0 10 0;
+#P connect 10 0 5 0;
+#P hidden connect 7 0 8 0;
+#P hidden connect 9 0 6 0;
+#P hidden connect 8 0 6 0;
+#P connect 15 0 14 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.ssqr.help b/externals/grill/vasp/max-help/vasp.ssqr.help
index ddcfbee6..0dac0545 100755
--- a/externals/grill/vasp/max-help/vasp.ssqr.help
+++ b/externals/grill/vasp/max-help/vasp.ssqr.help
@@ -1 +1,219 @@
-max v2; #N vpatcher 213 206 826 598; #P message 398 317 65 196617 vasp bufssqr; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 398 338 73 196617 p clear_buffer; #N vpatcher 339 132 955 467; #P message 396 232 72 196617 vasp bufssqr1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 396 252 73 196617 p clear_buffer; #P user umenu 73 100 72 196647 1 64 116 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1137path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 135 122 43 196617 p loader; #P hidden newex 472 229 48 196617 r 1137path; #P comment 45 102 26 196617 read; #P newex 52 184 45 196617 vasp.opt; #P message 120 252 27 196617 stop; #P message 52 252 65 196617 startwindow; #P newex 156 229 30 196617 line~; #P message 156 203 72 196617 0 \, 8000 8000; #P newex 156 276 29 196617 dac~; #P newex 156 252 75 196617 play~ bufssqr1; #P message 52 139 72 196617 vasp bufssqr1; #P newex 52 162 52 196617 vasp.ssqr; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 275 46 49 196617 p wfkeys; #P hidden message 275 93 65 196617 set bufssqr1; #P hidden newex 275 68 45 196617 loadbang; #P user waveform~ 275 119 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 52 206 61 196617 vasp.update; #P newex 472 252 112 196617 buffer~ bufssqr1 8000; #P comment 45 41 123 196622 listen to ssquare; #P connect 8 0 7 0; #P connect 7 0 15 0; #P connect 15 0 2 0; #P hidden connect 19 1 18 0; #P connect 11 0 12 0; #P connect 12 0 9 0; #P connect 9 0 10 0; #P fasten 14 0 10 0 125 271 161 271; #P fasten 13 0 10 0 57 271 161 271; #P connect 9 0 10 1; #P hidden fasten 1 1 5 0 579 260 601 260 601 88 280 88; #P hidden connect 4 0 5 0; #P hidden connect 6 0 3 0; #P hidden connect 5 0 3 0; #P connect 21 0 20 0; #P hidden connect 17 0 1 0; #P pop; #P newobj 41 338 95 196617 p listen_to_ssquare; #P newex 41 177 61 196617 vasp.update; #P comment 38 58 85 196617 signed sample^2; #P message 41 238 65 196617 vasp bufssqr; #P newex 41 266 52 196617 vasp.ssqr; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 268 53 49 196617 p wfkeys; #P hidden message 268 99 59 196617 set bufssqr; #P hidden newex 268 75 45 196617 loadbang; #P user waveform~ 268 125 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 41 287 61 196617 vasp.update; #P message 41 127 65 196617 vasp bufssqr; #P newex 475 338 105 196617 buffer~ bufssqr 2000; #P newex 41 156 80 196617 vasp.osc 44100; #P comment 38 34 89 196622 vasp.ssqr; #P comment 114 127 123 196617 generate a 1Hz sine wave; #P connect 4 0 2 0; #P connect 2 0 13 0; #P connect 11 0 10 0; #P connect 10 0 5 0; #P hidden connect 7 0 8 0; #P hidden connect 8 0 6 0; #P hidden connect 9 0 6 0; #P connect 16 0 15 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 213 206 826 598;
+#P message 398 317 65 196617 vasp bufssqr;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 398 338 73 196617 p clear_buffer;
+#N vpatcher 339 132 955 467;
+#P message 396 232 72 196617 vasp bufssqr1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 396 252 73 196617 p clear_buffer;
+#P user umenu 73 100 72 196647 1 64 116 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1137path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 135 122 43 196617 p loader;
+#P hidden newex 472 229 48 196617 r 1137path;
+#P comment 45 102 26 196617 read;
+#P newex 52 184 45 196617 vasp.opt;
+#P message 120 252 27 196617 stop;
+#P message 52 252 65 196617 startwindow;
+#P newex 156 229 30 196617 line~;
+#P message 156 203 72 196617 0 \, 8000 8000;
+#P newex 156 276 29 196617 dac~;
+#P newex 156 252 75 196617 play~ bufssqr1;
+#P message 52 139 72 196617 vasp bufssqr1;
+#P newex 52 162 52 196617 vasp.ssqr;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 275 46 49 196617 p wfkeys;
+#P hidden message 275 93 65 196617 set bufssqr1;
+#P hidden newex 275 68 45 196617 loadbang;
+#P user waveform~ 275 119 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 52 206 61 196617 vasp.update;
+#P newex 472 252 112 196617 buffer~ bufssqr1 8000;
+#P comment 45 41 123 196622 listen to ssquare;
+#P connect 8 0 7 0;
+#P connect 7 0 15 0;
+#P connect 15 0 2 0;
+#P hidden connect 19 1 18 0;
+#P connect 11 0 12 0;
+#P connect 12 0 9 0;
+#P connect 9 0 10 0;
+#P fasten 14 0 10 0 125 271 161 271;
+#P fasten 13 0 10 0 57 271 161 271;
+#P connect 9 0 10 1;
+#P hidden fasten 1 1 5 0 579 260 601 260 601 88 280 88;
+#P hidden connect 4 0 5 0;
+#P hidden connect 6 0 3 0;
+#P hidden connect 5 0 3 0;
+#P connect 21 0 20 0;
+#P hidden connect 17 0 1 0;
+#P pop;
+#P newobj 41 338 95 196617 p listen_to_ssquare;
+#P newex 41 177 61 196617 vasp.update;
+#P comment 38 58 85 196617 signed sample^2;
+#P message 41 238 65 196617 vasp bufssqr;
+#P newex 41 266 52 196617 vasp.ssqr;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 268 53 49 196617 p wfkeys;
+#P hidden message 268 99 59 196617 set bufssqr;
+#P hidden newex 268 75 45 196617 loadbang;
+#P user waveform~ 268 125 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 41 287 61 196617 vasp.update;
+#P message 41 127 65 196617 vasp bufssqr;
+#P newex 475 338 105 196617 buffer~ bufssqr 2000;
+#P newex 41 156 80 196617 vasp.osc 44100;
+#P comment 38 34 89 196622 vasp.ssqr;
+#P comment 114 127 123 196617 generate a 1Hz sine wave;
+#P connect 4 0 2 0;
+#P connect 2 0 13 0;
+#P connect 11 0 10 0;
+#P connect 10 0 5 0;
+#P hidden connect 7 0 8 0;
+#P hidden connect 8 0 6 0;
+#P hidden connect 9 0 6 0;
+#P connect 16 0 15 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.ssqrt.help b/externals/grill/vasp/max-help/vasp.ssqrt.help
index 737167a5..e2a84cab 100755
--- a/externals/grill/vasp/max-help/vasp.ssqrt.help
+++ b/externals/grill/vasp/max-help/vasp.ssqrt.help
@@ -1 +1,219 @@
-max v2; #N vpatcher 191 126 812 519; #P message 404 321 70 196617 vasp bufssqrt; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 404 340 73 196617 p clear_buffer; #N vpatcher 189 114 813 442; #P user umenu 74 100 72 196647 1 64 116 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1139path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 136 122 43 196617 p loader; #P message 392 233 75 196617 vasp bufssqrt1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 392 252 73 196617 p clear_buffer; #P hidden newex 472 232 48 196617 r 1139path; #P comment 46 102 26 196617 read; #P newex 52 184 45 196617 vasp.opt; #P message 120 252 27 196617 stop; #P message 52 252 65 196617 startwindow; #P newex 156 229 30 196617 line~; #P message 156 203 72 196617 0 \, 8000 8000; #P newex 156 276 29 196617 dac~; #P newex 156 252 80 196617 play~ bufssqrt1; #P message 52 139 75 196617 vasp bufssqrt1; #P newex 52 162 55 196617 vasp.ssqrt; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 275 46 49 196617 p wfkeys; #P hidden message 275 93 69 196617 set bufssqrt1; #P hidden newex 275 68 45 196617 loadbang; #P user waveform~ 275 119 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 52 206 61 196617 vasp.update; #P newex 472 252 115 196617 buffer~ bufssqrt1 8000; #P comment 45 41 161 196622 listen to ssquare root; #P connect 8 0 7 0; #P connect 7 0 15 0; #P connect 15 0 2 0; #P hidden connect 21 1 20 0; #P connect 11 0 12 0; #P connect 12 0 9 0; #P fasten 14 0 10 0 125 271 161 271; #P fasten 13 0 10 0 57 271 161 271; #P connect 9 0 10 0; #P connect 9 0 10 1; #P hidden connect 4 0 5 0; #P hidden fasten 1 1 5 0 582 273 601 273 601 88 280 88; #P hidden connect 6 0 3 0; #P hidden connect 5 0 3 0; #P connect 19 0 18 0; #P hidden connect 17 0 1 0; #P pop; #P newobj 52 340 122 196617 p listen_to_ssquare_root; #P newex 52 188 61 196617 vasp.update; #P comment 49 67 90 196617 signed square root; #P message 52 248 70 196617 vasp bufssqrt; #P newex 52 278 55 196617 vasp.ssqrt; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 279 63 49 196617 p wfkeys; #P hidden message 279 109 63 196617 set bufssqrt; #P hidden newex 279 85 45 196617 loadbang; #P user waveform~ 279 135 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 52 298 61 196617 vasp.update; #P message 52 137 70 196617 vasp bufssqrt; #P newex 480 340 110 196617 buffer~ bufssqrt 2000; #P newex 52 167 80 196617 vasp.osc 44100; #P comment 49 44 89 196622 vasp.ssqrt; #P comment 129 138 123 196617 generate a 1hz sine wave; #P connect 4 0 2 0; #P connect 2 0 13 0; #P connect 11 0 10 0; #P connect 10 0 5 0; #P hidden connect 7 0 8 0; #P hidden connect 8 0 6 0; #P hidden connect 9 0 6 0; #P connect 16 0 15 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 191 126 812 519;
+#P message 404 321 70 196617 vasp bufssqrt;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 404 340 73 196617 p clear_buffer;
+#N vpatcher 189 114 813 442;
+#P user umenu 74 100 72 196647 1 64 116 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1139path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 136 122 43 196617 p loader;
+#P message 392 233 75 196617 vasp bufssqrt1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 392 252 73 196617 p clear_buffer;
+#P hidden newex 472 232 48 196617 r 1139path;
+#P comment 46 102 26 196617 read;
+#P newex 52 184 45 196617 vasp.opt;
+#P message 120 252 27 196617 stop;
+#P message 52 252 65 196617 startwindow;
+#P newex 156 229 30 196617 line~;
+#P message 156 203 72 196617 0 \, 8000 8000;
+#P newex 156 276 29 196617 dac~;
+#P newex 156 252 80 196617 play~ bufssqrt1;
+#P message 52 139 75 196617 vasp bufssqrt1;
+#P newex 52 162 55 196617 vasp.ssqrt;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 275 46 49 196617 p wfkeys;
+#P hidden message 275 93 69 196617 set bufssqrt1;
+#P hidden newex 275 68 45 196617 loadbang;
+#P user waveform~ 275 119 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 52 206 61 196617 vasp.update;
+#P newex 472 252 115 196617 buffer~ bufssqrt1 8000;
+#P comment 45 41 161 196622 listen to ssquare root;
+#P connect 8 0 7 0;
+#P connect 7 0 15 0;
+#P connect 15 0 2 0;
+#P hidden connect 21 1 20 0;
+#P connect 11 0 12 0;
+#P connect 12 0 9 0;
+#P fasten 14 0 10 0 125 271 161 271;
+#P fasten 13 0 10 0 57 271 161 271;
+#P connect 9 0 10 0;
+#P connect 9 0 10 1;
+#P hidden connect 4 0 5 0;
+#P hidden fasten 1 1 5 0 582 273 601 273 601 88 280 88;
+#P hidden connect 6 0 3 0;
+#P hidden connect 5 0 3 0;
+#P connect 19 0 18 0;
+#P hidden connect 17 0 1 0;
+#P pop;
+#P newobj 52 340 122 196617 p listen_to_ssquare_root;
+#P newex 52 188 61 196617 vasp.update;
+#P comment 49 67 90 196617 signed square root;
+#P message 52 248 70 196617 vasp bufssqrt;
+#P newex 52 278 55 196617 vasp.ssqrt;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 279 63 49 196617 p wfkeys;
+#P hidden message 279 109 63 196617 set bufssqrt;
+#P hidden newex 279 85 45 196617 loadbang;
+#P user waveform~ 279 135 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 52 298 61 196617 vasp.update;
+#P message 52 137 70 196617 vasp bufssqrt;
+#P newex 480 340 110 196617 buffer~ bufssqrt 2000;
+#P newex 52 167 80 196617 vasp.osc 44100;
+#P comment 49 44 89 196622 vasp.ssqrt;
+#P comment 129 138 123 196617 generate a 1hz sine wave;
+#P connect 4 0 2 0;
+#P connect 2 0 13 0;
+#P connect 11 0 10 0;
+#P connect 10 0 5 0;
+#P hidden connect 7 0 8 0;
+#P hidden connect 8 0 6 0;
+#P hidden connect 9 0 6 0;
+#P connect 16 0 15 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.sub.help b/externals/grill/vasp/max-help/vasp.sub.help
index 1636190a..fbf4b8ae 100755
--- a/externals/grill/vasp/max-help/vasp.sub.help
+++ b/externals/grill/vasp/max-help/vasp.sub.help
@@ -1 +1,67 @@
-max v2; #N vpatcher 124 137 939 471; #P message 594 264 51 196617 vasp buf-; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 594 285 73 196617 p clear_buffer; #P comment 350 214 101 196617 shift all values - 0.5; #P comment 136 213 131 196617 shift all values + 0.5; #P comment 138 190 132 196617 half the amplitude; #P comment 285 84 205 196617 optional argument/right inlet: right operand; #P comment 285 67 195 196617 subtracts a value or a vasp from a vasp; #P comment 285 43 89 196622 vasp.-; #P message 288 134 51 196617 vasp buf-; #P newex 288 234 61 196617 vasp.update; #P newex 288 211 55 196617 vasp.- 0.5; #P newex 288 166 80 196617 vasp.osc 44100; #P newex 288 188 55 196617 vasp.* 0.5; #P message 54 134 51 196617 vasp buf-; #P newex 54 234 61 196617 vasp.update; #P newex 54 211 55 196617 vasp.+ 0.5; #P newex 54 166 80 196617 vasp.osc 44100; #P hidden message 450 134 44 196617 set buf-; #P hidden newex 450 113 45 196617 loadbang; #P user waveform~ 450 154 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 671 284 91 196617 buffer~ buf- 2000; #P newex 54 188 55 196617 vasp.* 0.5; #P comment 52 84 205 196617 optional argument/right inlet: right operand; #P comment 52 67 168 196617 adds a value or a vasp to a vasp; #P comment 52 43 89 196622 vasp.+; #P comment 139 169 132 196617 generate a 1Hz sine wave; #P connect 12 0 9 0; #P connect 9 0 4 0; #P connect 4 0 10 0; #P connect 10 0 11 0; #P connect 17 0 14 0; #P connect 14 0 13 0; #P connect 13 0 15 0; #P connect 15 0 16 0; #P hidden connect 7 0 8 0; #P hidden connect 8 0 6 0; #P connect 25 0 24 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 124 137 939 471;
+#P message 594 264 51 196617 vasp buf-;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 594 285 73 196617 p clear_buffer;
+#P comment 350 214 101 196617 shift all values - 0.5;
+#P comment 136 213 131 196617 shift all values + 0.5;
+#P comment 138 190 132 196617 half the amplitude;
+#P comment 285 84 205 196617 optional argument/right inlet: right operand;
+#P comment 285 67 195 196617 subtracts a value or a vasp from a vasp;
+#P comment 285 43 89 196622 vasp.-;
+#P message 288 134 51 196617 vasp buf-;
+#P newex 288 234 61 196617 vasp.update;
+#P newex 288 211 55 196617 vasp.- 0.5;
+#P newex 288 166 80 196617 vasp.osc 44100;
+#P newex 288 188 55 196617 vasp.* 0.5;
+#P message 54 134 51 196617 vasp buf-;
+#P newex 54 234 61 196617 vasp.update;
+#P newex 54 211 55 196617 vasp.+ 0.5;
+#P newex 54 166 80 196617 vasp.osc 44100;
+#P hidden message 450 134 44 196617 set buf-;
+#P hidden newex 450 113 45 196617 loadbang;
+#P user waveform~ 450 154 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 671 284 91 196617 buffer~ buf- 2000;
+#P newex 54 188 55 196617 vasp.* 0.5;
+#P comment 52 84 205 196617 optional argument/right inlet: right operand;
+#P comment 52 67 168 196617 adds a value or a vasp to a vasp;
+#P comment 52 43 89 196622 vasp.+;
+#P comment 139 169 132 196617 generate a 1Hz sine wave;
+#P connect 12 0 9 0;
+#P connect 9 0 4 0;
+#P connect 4 0 10 0;
+#P connect 10 0 11 0;
+#P connect 17 0 14 0;
+#P connect 14 0 13 0;
+#P connect 13 0 15 0;
+#P connect 15 0 16 0;
+#P hidden connect 7 0 8 0;
+#P hidden connect 8 0 6 0;
+#P connect 25 0 24 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.sync.help b/externals/grill/vasp/max-help/vasp.sync.help
index ef5511d2..8ae0c72a 100755
--- a/externals/grill/vasp/max-help/vasp.sync.help
+++ b/externals/grill/vasp/max-help/vasp.sync.help
@@ -1 +1,164 @@
-max v2; #N vpatcher 185 136 861 638; #P origin 0 41; #P message 406 413 115 196617 vasp bufsync1 bufsync2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 406 433 78 196617 p clear_buffers; #P hidden newex 526 379 48 196617 r 1044path; #P user umenu 86 140 72 196647 1 64 156 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1044path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 148 162 43 196617 p loader; #P comment 60 142 26 196617 read; #P comment 60 82 188 196617 argument: number of vasps to be synced; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 327 78 49 196617 p wfkeys; #P newex 67 350 61 196617 vasp.update; #P message 67 186 115 196617 vasp bufsync1 bufsync2; #P newex 526 433 113 196617 buffer~ bufsync2 2000; #P hidden message 327 241 65 196617 set bufsync2; #P user waveform~ 327 259 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P hidden message 327 123 65 196617 set bufsync1; #P hidden newex 327 101 45 196617 loadbang; #P user waveform~ 327 140 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 526 412 113 196617 buffer~ bufsync1 2000; #P comment 60 44 89 196622 vasp.sync; #P newex 67 324 52 196617 vasp.c!fft; #P newex 67 299 62 196617 vasp.sync 2; #P newex 119 271 45 196617 vasp.= 0; #P newex 67 218 49 196617 vasp.cfft; #P newex 119 249 55 196617 vasp.upper; #P comment 60 67 124 196617 syncs two or more vasps; #P comment 135 301 167 196617 puts out vasp (from left inlet) after receiving a vasp into right inlet; #P newex 327 433 75 196617 play~ bufsync1; #P message 327 384 72 196617 0 \, 2000 2000; #P newex 327 408 30 196617 line~; #P newex 327 460 29 196617 dac~; #P message 218 434 65 196617 startwindow; #P message 286 434 27 196617 stop; #P connect 21 0 9 0; #P connect 9 0 11 0; #P connect 11 0 12 0; #P connect 12 0 22 0; #P fasten 9 0 8 0 72 242 124 242; #P connect 8 0 10 0; #P connect 10 0 11 1; #P hidden connect 27 1 26 0; #P hidden connect 16 0 17 0; #P hidden fasten 14 1 17 0 634 430 642 430 642 116 332 116; #P hidden connect 23 0 15 0; #P hidden connect 17 0 15 0; #P hidden connect 16 0 19 0; #P hidden connect 23 0 18 0; #P hidden connect 19 0 18 0; #P connect 4 0 3 0; #P connect 3 0 5 0; #P fasten 0 0 2 0 291 453 332 453; #P fasten 1 0 2 0 223 453 332 453; #P connect 5 0 2 0; #P connect 5 0 2 1; #P connect 30 0 29 0; #P hidden connect 28 0 14 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 185 136 861 638;
+#P origin 0 41;
+#P message 406 413 115 196617 vasp bufsync1 bufsync2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 406 433 78 196617 p clear_buffers;
+#P hidden newex 526 379 48 196617 r 1044path;
+#P user umenu 86 140 72 196647 1 64 156 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1044path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 148 162 43 196617 p loader;
+#P comment 60 142 26 196617 read;
+#P comment 60 82 188 196617 argument: number of vasps to be synced;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 327 78 49 196617 p wfkeys;
+#P newex 67 350 61 196617 vasp.update;
+#P message 67 186 115 196617 vasp bufsync1 bufsync2;
+#P newex 526 433 113 196617 buffer~ bufsync2 2000;
+#P hidden message 327 241 65 196617 set bufsync2;
+#P user waveform~ 327 259 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P hidden message 327 123 65 196617 set bufsync1;
+#P hidden newex 327 101 45 196617 loadbang;
+#P user waveform~ 327 140 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 526 412 113 196617 buffer~ bufsync1 2000;
+#P comment 60 44 89 196622 vasp.sync;
+#P newex 67 324 52 196617 vasp.c!fft;
+#P newex 67 299 62 196617 vasp.sync 2;
+#P newex 119 271 45 196617 vasp.= 0;
+#P newex 67 218 49 196617 vasp.cfft;
+#P newex 119 249 55 196617 vasp.upper;
+#P comment 60 67 124 196617 syncs two or more vasps;
+#P comment 135 301 167 196617 puts out vasp (from left inlet) after receiving a vasp into right inlet;
+#P newex 327 433 75 196617 play~ bufsync1;
+#P message 327 384 72 196617 0 \, 2000 2000;
+#P newex 327 408 30 196617 line~;
+#P newex 327 460 29 196617 dac~;
+#P message 218 434 65 196617 startwindow;
+#P message 286 434 27 196617 stop;
+#P connect 21 0 9 0;
+#P connect 9 0 11 0;
+#P connect 11 0 12 0;
+#P connect 12 0 22 0;
+#P fasten 9 0 8 0 72 242 124 242;
+#P connect 8 0 10 0;
+#P connect 10 0 11 1;
+#P hidden connect 27 1 26 0;
+#P hidden connect 16 0 17 0;
+#P hidden fasten 14 1 17 0 634 430 642 430 642 116 332 116;
+#P hidden connect 23 0 15 0;
+#P hidden connect 17 0 15 0;
+#P hidden connect 16 0 19 0;
+#P hidden connect 23 0 18 0;
+#P hidden connect 19 0 18 0;
+#P connect 4 0 3 0;
+#P connect 3 0 5 0;
+#P fasten 0 0 2 0 291 453 332 453;
+#P fasten 1 0 2 0 223 453 332 453;
+#P connect 5 0 2 0;
+#P connect 5 0 2 1;
+#P connect 30 0 29 0;
+#P hidden connect 28 0 14 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.tilt.help b/externals/grill/vasp/max-help/vasp.tilt.help
index 25688471..277dded2 100755
--- a/externals/grill/vasp/max-help/vasp.tilt.help
+++ b/externals/grill/vasp/max-help/vasp.tilt.help
@@ -1 +1,89 @@
-max v2; #N vpatcher 260 180 873 549; #P hidden newex 491 280 48 196617 r 1168path; #P message 415 282 60 196617 vasp buftilt; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 415 302 73 196617 p clear_buffer; #P user umenu 60 118 72 196647 1 64 134 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1168path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 122 140 43 196617 p loader; #P message 237 302 27 196617 stop; #P message 169 302 65 196617 startwindow; #P newex 278 329 29 196617 dac~; #P newex 278 277 30 196617 line~; #P message 278 254 72 196617 0 \, 4000 4000; #P newex 278 302 64 196617 play~ buftilt; #P newex 60 211 61 196617 vasp.update; #P message 60 158 60 196617 vasp buftilt; #P newex 60 189 64 196617 vasp.tilt 0.5; #P comment 55 70 138 196617 resamples the buffer content; #P comment 55 47 96 196622 vasp.tilt; #P hidden message 278 110 53 196617 set buftilt; #P hidden newex 278 85 45 196617 loadbang; #P user waveform~ 278 129 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 491 302 100 196617 buffer~ buftilt 4000; #P comment 55 85 194 196617 argument/right inlet: resampling factor; #P comment 127 191 100 196617 pitch down an octave; #P connect 9 0 8 0; #P connect 8 0 10 0; #P hidden connect 18 1 17 0; #P hidden fasten 2 1 5 0 586 323 594 323 594 102 283 102; #P hidden connect 4 0 5 0; #P hidden connect 5 0 3 0; #P connect 12 0 13 0; #P connect 13 0 11 0; #P connect 11 0 14 0; #P fasten 15 0 14 0 174 322 283 322; #P fasten 16 0 14 0 242 322 283 322; #P connect 11 0 14 1; #P connect 20 0 19 0; #P hidden connect 21 0 2 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 260 180 873 549;
+#P hidden newex 491 280 48 196617 r 1168path;
+#P message 415 282 60 196617 vasp buftilt;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 415 302 73 196617 p clear_buffer;
+#P user umenu 60 118 72 196647 1 64 134 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1168path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 122 140 43 196617 p loader;
+#P message 237 302 27 196617 stop;
+#P message 169 302 65 196617 startwindow;
+#P newex 278 329 29 196617 dac~;
+#P newex 278 277 30 196617 line~;
+#P message 278 254 72 196617 0 \, 4000 4000;
+#P newex 278 302 64 196617 play~ buftilt;
+#P newex 60 211 61 196617 vasp.update;
+#P message 60 158 60 196617 vasp buftilt;
+#P newex 60 189 64 196617 vasp.tilt 0.5;
+#P comment 55 70 138 196617 resamples the buffer content;
+#P comment 55 47 96 196622 vasp.tilt;
+#P hidden message 278 110 53 196617 set buftilt;
+#P hidden newex 278 85 45 196617 loadbang;
+#P user waveform~ 278 129 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 491 302 100 196617 buffer~ buftilt 4000;
+#P comment 55 85 194 196617 argument/right inlet: resampling factor;
+#P comment 127 191 100 196617 pitch down an octave;
+#P connect 9 0 8 0;
+#P connect 8 0 10 0;
+#P hidden connect 18 1 17 0;
+#P hidden fasten 2 1 5 0 586 323 594 323 594 102 283 102;
+#P hidden connect 4 0 5 0;
+#P hidden connect 5 0 3 0;
+#P connect 12 0 13 0;
+#P connect 13 0 11 0;
+#P connect 11 0 14 0;
+#P fasten 15 0 14 0 174 322 283 322;
+#P fasten 16 0 14 0 242 322 283 322;
+#P connect 11 0 14 1;
+#P connect 20 0 19 0;
+#P hidden connect 21 0 2 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.update.help b/externals/grill/vasp/max-help/vasp.update.help
index 4ad991cf..481c7347 100755
--- a/externals/grill/vasp/max-help/vasp.update.help
+++ b/externals/grill/vasp/max-help/vasp.update.help
@@ -1 +1,41 @@
-max v2; #N vpatcher 209 155 868 527; #P message 62 292 55 196617 vasp bufup; #P newex 62 313 45 196617 vasp.= 0; #P comment 127 231 99 196617 update the graphics; #P newex 62 229 61 196617 vasp.update; #P comment 127 126 99 196617 generate a sine wave; #P message 62 125 55 196617 vasp bufup; #P newex 62 185 80 196617 vasp.osc 22050; #P comment 57 69 230 196617 updates the graphics of a patcher (e.g. waveform); #P comment 57 46 96 196622 vasp.update; #P hidden message 308 104 49 196617 set bufup; #P hidden newex 308 84 45 196617 loadbang; #P user waveform~ 308 123 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 525 323 95 196617 buffer~ bufup 2000; #P comment 125 293 271 196617 use vasp.update at the end of a chain of vasp operations \, although most vasp objects are updating automatically; #P connect 8 0 7 0; #P connect 7 0 10 0; #P connect 13 0 12 0; #P hidden connect 3 0 4 0; #P hidden connect 4 0 2 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 209 155 868 527;
+#P message 62 292 55 196617 vasp bufup;
+#P newex 62 313 45 196617 vasp.= 0;
+#P comment 127 231 99 196617 update the graphics;
+#P newex 62 229 61 196617 vasp.update;
+#P comment 127 126 99 196617 generate a sine wave;
+#P message 62 125 55 196617 vasp bufup;
+#P newex 62 185 80 196617 vasp.osc 22050;
+#P comment 57 69 230 196617 updates the graphics of a patcher (e.g. waveform);
+#P comment 57 46 96 196622 vasp.update;
+#P hidden message 308 104 49 196617 set bufup;
+#P hidden newex 308 84 45 196617 loadbang;
+#P user waveform~ 308 123 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 525 323 95 196617 buffer~ bufup 2000;
+#P comment 125 293 271 196617 use vasp.update at the end of a chain of vasp operations \, although most vasp objects are updating automatically;
+#P connect 8 0 7 0;
+#P connect 7 0 10 0;
+#P connect 13 0 12 0;
+#P hidden connect 3 0 4 0;
+#P hidden connect 4 0 2 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.valleys.help b/externals/grill/vasp/max-help/vasp.valleys.help
index 3f2cc7cb..9752bbc1 100755
--- a/externals/grill/vasp/max-help/vasp.valleys.help
+++ b/externals/grill/vasp/max-help/vasp.valleys.help
@@ -1 +1,174 @@
-max v2; #N vpatcher 219 119 883 614; #P message 435 404 95 196617 vasp bufval bufval1; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 435 425 78 196617 p clear_buffers; #P hidden newex 532 382 48 196617 r 1162path; #P user umenu 77 128 72 196647 1 64 144 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1162path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 139 150 43 196617 p loader; #P comment 51 93 160 196617 outlet: current density value 0-1; #P comment 181 294 115 196617 = number of valleys; #P number 143 292 35 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P flonum 143 240 71 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 143 264 51 196617 * 88200.; #P comment 215 242 100 196617 current density; #P comment 198 266 100 196617 * lenght of the vasp; #P newex 58 235 61 196617 vasp.update; #P comment 592 237 44 196617 valleys; #P comment 132 174 161 196617 copy to new buffer \, find valleys; #P message 53 345 65 196617 vasp bufval1; #P newex 53 373 45 196617 vasp.opt; #P hidden message 325 234 59 196617 set bufval1; #P user waveform~ 325 252 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 532 425 105 196617 buffer~ bufval1 2000; #P comment 51 79 188 196617 argument/right inlet: density value 0-1; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 2 0 6 0 275 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 5 0 6 0 52 243 134 243; #P connect 11 0 14 0; #P connect 14 0 8 0; #P connect 3 3 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 13 0 1 0; #P connect 9 0 1 0; #P connect 4 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 325 67 49 196617 p wfkeys; #P message 284 425 27 196617 stop; #P message 215 425 65 196617 startwindow; #P newex 325 451 29 196617 dac~; #P newex 325 404 30 196617 line~; #P message 325 381 72 196617 0 \, 2000 2000; #P newex 325 425 70 196617 play~ bufval1; #P hidden message 325 113 53 196617 set bufval; #P hidden newex 325 89 45 196617 loadbang; #P user waveform~ 325 133 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 58 214 95 196617 vasp.valleys 0.001; #P newex 53 394 61 196617 vasp.update; #P message 58 173 65 196617 vasp bufval1; #P newex 532 404 105 196617 buffer~ bufval 2000; #P newex 58 194 69 196617 vasp.= bufval; #P comment 51 64 215 196617 find the local minima of the buffer samples; #P comment 51 41 107 196622 vasp.valleys; #P comment 127 346 111 196617 optimize buffer content; #P comment 594 118 44 196617 source; #P comment 51 129 32 196617 read; #P connect 25 0 24 0; #P connect 24 0 8 0; #P connect 7 0 5 0; #P connect 5 0 9 0; #P connect 9 0 28 0; #P hidden connect 37 1 36 0; #P connect 9 1 32 0; #P connect 32 0 31 0; #P connect 31 0 33 0; #P hidden connect 11 0 12 0; #P hidden fasten 6 1 12 0 632 421 642 421 642 109 330 109; #P hidden connect 19 0 10 0; #P hidden connect 12 0 10 0; #P hidden connect 11 0 23 0; #P hidden connect 19 0 22 0; #P hidden connect 23 0 22 0; #P connect 14 0 15 0; #P connect 15 0 13 0; #P connect 13 0 16 0; #P fasten 17 0 16 0 220 444 330 444; #P fasten 18 0 16 0 289 444 330 444; #P connect 13 0 16 1; #P connect 40 0 39 0; #P hidden connect 38 0 6 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 219 119 883 614;
+#P message 435 404 95 196617 vasp bufval bufval1;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 435 425 78 196617 p clear_buffers;
+#P hidden newex 532 382 48 196617 r 1162path;
+#P user umenu 77 128 72 196647 1 64 144 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1162path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 139 150 43 196617 p loader;
+#P comment 51 93 160 196617 outlet: current density value 0-1;
+#P comment 181 294 115 196617 = number of valleys;
+#P number 143 292 35 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P flonum 143 240 71 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 143 264 51 196617 * 88200.;
+#P comment 215 242 100 196617 current density;
+#P comment 198 266 100 196617 * lenght of the vasp;
+#P newex 58 235 61 196617 vasp.update;
+#P comment 592 237 44 196617 valleys;
+#P comment 132 174 161 196617 copy to new buffer \, find valleys;
+#P message 53 345 65 196617 vasp bufval1;
+#P newex 53 373 45 196617 vasp.opt;
+#P hidden message 325 234 59 196617 set bufval1;
+#P user waveform~ 325 252 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 532 425 105 196617 buffer~ bufval1 2000;
+#P comment 51 79 188 196617 argument/right inlet: density value 0-1;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 2 0 6 0 275 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 5 0 6 0 52 243 134 243;
+#P connect 11 0 14 0;
+#P connect 14 0 8 0;
+#P connect 3 3 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 13 0 1 0;
+#P connect 9 0 1 0;
+#P connect 4 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 325 67 49 196617 p wfkeys;
+#P message 284 425 27 196617 stop;
+#P message 215 425 65 196617 startwindow;
+#P newex 325 451 29 196617 dac~;
+#P newex 325 404 30 196617 line~;
+#P message 325 381 72 196617 0 \, 2000 2000;
+#P newex 325 425 70 196617 play~ bufval1;
+#P hidden message 325 113 53 196617 set bufval;
+#P hidden newex 325 89 45 196617 loadbang;
+#P user waveform~ 325 133 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 58 214 95 196617 vasp.valleys 0.001;
+#P newex 53 394 61 196617 vasp.update;
+#P message 58 173 65 196617 vasp bufval1;
+#P newex 532 404 105 196617 buffer~ bufval 2000;
+#P newex 58 194 69 196617 vasp.= bufval;
+#P comment 51 64 215 196617 find the local minima of the buffer samples;
+#P comment 51 41 107 196622 vasp.valleys;
+#P comment 127 346 111 196617 optimize buffer content;
+#P comment 594 118 44 196617 source;
+#P comment 51 129 32 196617 read;
+#P connect 25 0 24 0;
+#P connect 24 0 8 0;
+#P connect 7 0 5 0;
+#P connect 5 0 9 0;
+#P connect 9 0 28 0;
+#P hidden connect 37 1 36 0;
+#P connect 9 1 32 0;
+#P connect 32 0 31 0;
+#P connect 31 0 33 0;
+#P hidden connect 11 0 12 0;
+#P hidden fasten 6 1 12 0 632 421 642 421 642 109 330 109;
+#P hidden connect 19 0 10 0;
+#P hidden connect 12 0 10 0;
+#P hidden connect 11 0 23 0;
+#P hidden connect 19 0 22 0;
+#P hidden connect 23 0 22 0;
+#P connect 14 0 15 0;
+#P connect 15 0 13 0;
+#P connect 13 0 16 0;
+#P fasten 17 0 16 0 220 444 330 444;
+#P fasten 18 0 16 0 289 444 330 444;
+#P connect 13 0 16 1;
+#P connect 40 0 39 0;
+#P hidden connect 38 0 6 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.vector.help b/externals/grill/vasp/max-help/vasp.vector.help
index a8089235..0af86d39 100755
--- a/externals/grill/vasp/max-help/vasp.vector.help
+++ b/externals/grill/vasp/max-help/vasp.vector.help
@@ -1 +1,175 @@
-max v2; #N vpatcher 282 124 678 511; #P hidden message 324 118 22 196617 set; #P hidden newex 324 92 45 196617 loadbang; #N vpatcher 116 168 848 567; #P message 515 334 85 196617 vasp bufn1 bufn2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 515 355 73 196617 p clear_buffer; #P hidden newex 707 332 48 196617 r 1048path; #P user umenu 88 71 72 196647 1 64 87 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1048path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 150 93 43 196617 p loader; #P newex 58 158 61 196617 vasp.update; #P comment 155 190 157 196617 clear imaginary part of soundfile (vector with index 1); #P message 58 191 85 196617 vasp bufn1 bufn2; #P newex 58 238 45 196617 vasp.= 0; #P newex 58 213 45 196617 vasp.n 1; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 389 41 49 196617 p wfkeys; #P comment 574 212 127 196617 imaginary part of soundfile; #P message 58 115 85 196617 vasp bufn1 bufn2; #P hidden message 389 206 50 196617 set bufn2; #P user waveform~ 389 227 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 606 355 95 196617 buffer~ bufn2 2000; #P hidden message 390 82 50 196617 set bufn1; #P hidden newex 389 60 45 196617 loadbang; #P user waveform~ 389 100 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 58 285 61 196617 vasp.update; #P newex 606 334 95 196617 buffer~ bufn1 2000; #P newex 58 137 49 196617 vasp.cfft; #P comment 155 116 197 196617 transform into real and imaginary part; #P comment 581 84 119 196617 real part of the soundfile; #P comment 58 73 29 196617 read; #P connect 12 0 3 0; #P connect 3 0 19 0; #P connect 17 0 15 0; #P connect 15 0 16 0; #P connect 16 0 5 0; #P hidden connect 21 1 20 0; #P hidden connect 14 0 6 0; #P hidden connect 8 0 6 0; #P hidden fasten 7 0 11 0 394 70 394 70; #P hidden fasten 11 0 10 0 394 222 394 222; #P hidden connect 14 0 10 0; #P hidden fasten 4 1 8 0 696 352 707 352 707 71 395 71; #P hidden connect 7 0 8 0; #P connect 24 0 23 0; #P hidden connect 22 0 4 0; #P pop; #P newobj 57 325 85 196617 p more_examples; #P message 57 143 85 196617 vasp bufn1 bufn2; #P newex 57 219 45 196617 vasp.n 0; #P newex 220 219 45 196617 vasp.n 1; #P comment 269 220 53 196617 vector 1; #P message 220 271 130 196617; #P newex 220 241 60 196617 prepend set; #P comment 105 220 53 196617 vector 0; #P message 57 271 130 196617; #P newex 57 241 60 196617 prepend set; #P comment 52 70 168 196617 get one vector of a vasp; #P comment 52 48 89 196622 vasp.n; #P comment 52 88 183 196617 argument/right inlet: index of vector; #P connect 11 0 10 0; #P connect 10 0 3 0; #P hidden fasten 14 0 4 0 329 267 62 267; #P connect 3 0 4 0; #P fasten 11 0 9 0 62 187 225 187; #P connect 9 0 6 0; #P connect 6 0 7 0; #P hidden fasten 14 0 7 0 329 268 225 268; #P hidden connect 13 0 14 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 282 124 678 511;
+#P hidden message 324 118 22 196617 set;
+#P hidden newex 324 92 45 196617 loadbang;
+#N vpatcher 116 168 848 567;
+#P message 515 334 85 196617 vasp bufn1 bufn2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 515 355 73 196617 p clear_buffer;
+#P hidden newex 707 332 48 196617 r 1048path;
+#P user umenu 88 71 72 196647 1 64 87 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1048path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 150 93 43 196617 p loader;
+#P newex 58 158 61 196617 vasp.update;
+#P comment 155 190 157 196617 clear imaginary part of soundfile (vector with index 1);
+#P message 58 191 85 196617 vasp bufn1 bufn2;
+#P newex 58 238 45 196617 vasp.= 0;
+#P newex 58 213 45 196617 vasp.n 1;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 389 41 49 196617 p wfkeys;
+#P comment 574 212 127 196617 imaginary part of soundfile;
+#P message 58 115 85 196617 vasp bufn1 bufn2;
+#P hidden message 389 206 50 196617 set bufn2;
+#P user waveform~ 389 227 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 606 355 95 196617 buffer~ bufn2 2000;
+#P hidden message 390 82 50 196617 set bufn1;
+#P hidden newex 389 60 45 196617 loadbang;
+#P user waveform~ 389 100 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 58 285 61 196617 vasp.update;
+#P newex 606 334 95 196617 buffer~ bufn1 2000;
+#P newex 58 137 49 196617 vasp.cfft;
+#P comment 155 116 197 196617 transform into real and imaginary part;
+#P comment 581 84 119 196617 real part of the soundfile;
+#P comment 58 73 29 196617 read;
+#P connect 12 0 3 0;
+#P connect 3 0 19 0;
+#P connect 17 0 15 0;
+#P connect 15 0 16 0;
+#P connect 16 0 5 0;
+#P hidden connect 21 1 20 0;
+#P hidden connect 14 0 6 0;
+#P hidden connect 8 0 6 0;
+#P hidden fasten 7 0 11 0 394 70 394 70;
+#P hidden fasten 11 0 10 0 394 222 394 222;
+#P hidden connect 14 0 10 0;
+#P hidden fasten 4 1 8 0 696 352 707 352 707 71 395 71;
+#P hidden connect 7 0 8 0;
+#P connect 24 0 23 0;
+#P hidden connect 22 0 4 0;
+#P pop;
+#P newobj 57 325 85 196617 p more_examples;
+#P message 57 143 85 196617 vasp bufn1 bufn2;
+#P newex 57 219 45 196617 vasp.n 0;
+#P newex 220 219 45 196617 vasp.n 1;
+#P comment 269 220 53 196617 vector 1;
+#P message 220 271 130 196617;
+#P newex 220 241 60 196617 prepend set;
+#P comment 105 220 53 196617 vector 0;
+#P message 57 271 130 196617;
+#P newex 57 241 60 196617 prepend set;
+#P comment 52 70 168 196617 get one vector of a vasp;
+#P comment 52 48 89 196622 vasp.n;
+#P comment 52 88 183 196617 argument/right inlet: index of vector;
+#P connect 11 0 10 0;
+#P connect 10 0 3 0;
+#P hidden fasten 14 0 4 0 329 267 62 267;
+#P connect 3 0 4 0;
+#P fasten 11 0 9 0 62 187 225 187;
+#P connect 9 0 6 0;
+#P connect 6 0 7 0;
+#P hidden fasten 14 0 7 0 329 268 225 268;
+#P hidden connect 13 0 14 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.vectors.help b/externals/grill/vasp/max-help/vasp.vectors.help
index d6c66e9c..9d8774b1 100755
--- a/externals/grill/vasp/max-help/vasp.vectors.help
+++ b/externals/grill/vasp/max-help/vasp.vectors.help
@@ -1 +1,12 @@
-max v2; #N vpatcher 257 69 578 345; #P number 57 218 35 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; #P message 57 112 63 196617 vasp bufn?1; #P message 127 112 131 196617 vasp bufn?1 bufn?2 bufn?3; #P newex 57 169 43 196617 vasp.n?; #P comment 52 66 168 196617 get the number of vectors of a vasp; #P comment 52 44 89 196622 vasp.n?; #P fasten 3 0 2 0 132 140 62 140; #P connect 4 0 2 0; #P connect 2 0 5 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 257 69 578 345;
+#P number 57 218 35 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P message 57 112 63 196617 vasp bufn?1;
+#P message 127 112 131 196617 vasp bufn?1 bufn?2 bufn?3;
+#P newex 57 169 43 196617 vasp.n?;
+#P comment 52 66 168 196617 get the number of vectors of a vasp;
+#P comment 52 44 89 196622 vasp.n?;
+#P fasten 3 0 2 0 132 140 62 140;
+#P connect 4 0 2 0;
+#P connect 2 0 5 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.xmirr.help b/externals/grill/vasp/max-help/vasp.xmirr.help
index bf170848..34d30a42 100755
--- a/externals/grill/vasp/max-help/vasp.xmirr.help
+++ b/externals/grill/vasp/max-help/vasp.xmirr.help
@@ -1 +1,169 @@
-max v2; #N vpatcher 157 154 838 677; #P message 395 430 129 196617 vasp bufxmirr1 bufxmirr2; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 395 450 78 196617 p clear_buffers; #P hidden newex 530 406 48 196617 r 1129path; #P user umenu 80 101 72 196647 1 64 117 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1129path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 5 0 2 0; #P connect 4 1 1 0; #P pop; #P hidden newobj 142 123 43 196617 p loader; #P comment 54 103 26 196617 read; #N vpatcher 40 55 418 371; #P button 183 82 15 0; #P newex 129 145 60 196617 prepend set; #N comlet waveform~ mode messages; #P inlet 129 121 15 0; #P newex 259 64 27 196617 << 1; #P newex 206 121 40 196617 change; #P newex 206 145 107 196617 select 0 1 2; #P newex 206 98 27 196617 |; #P newex 47 121 40 196617 change; #P outlet 129 252 15 0; #P message 47 145 65 196617 constrain \$1; #P newex 129 195 45 196617 loadbang; #P newex 47 40 222 196617 pushkeys; #P message 270 169 58 196617 mode move; #P message 206 213 61 196617 mode select; #P message 238 191 52 196617 mode loop; #P connect 3 0 7 0; #P connect 7 0 5 0; #P connect 12 0 13 0; #P fasten 5 0 6 0 52 243 134 243; #P fasten 0 0 6 0 243 243 134 243; #P fasten 1 0 6 0 211 243 134 243; #P fasten 2 0 6 0 275 243 134 243; #P connect 11 0 14 0; #P connect 3 3 8 0; #P connect 14 0 8 0; #P connect 8 0 10 0; #P connect 10 0 9 0; #P connect 4 0 1 0; #P connect 9 0 1 0; #P connect 13 0 1 0; #P connect 11 0 8 1; #P connect 9 1 0 0; #P connect 3 4 11 0; #P connect 9 2 2 0; #P pop; #P hidden newobj 337 77 49 196617 p wfkeys; #P newex 59 443 61 196617 vasp.update; #P newex 59 364 61 196617 vasp.update; #P newex 58 286 61 196617 vasp.update; #P newex 57 183 61 196617 vasp.update; #P newex 58 264 45 196617 vasp.= 0; #P message 58 221 129 196617 vasp bufxmirr1 bufxmirr2; #P newex 58 241 55 196617 vasp.upper; #P message 276 451 27 196617 stop; #P message 208 451 65 196617 startwindow; #P newex 307 477 29 196617 dac~; #P newex 307 420 30 196617 line~; #P message 307 397 72 196617 0 \, 2000 2000; #P newex 307 450 83 196617 play~ bufxmirr1; #P message 59 399 129 196617 vasp bufxmirr1 bufxmirr2; #P newex 59 421 49 196617 vasp.cfft; #P message 59 320 129 196617 vasp bufxmirr1 bufxmirr2; #P newex 59 342 59 196617 vasp.xmirr; #P message 57 140 129 196617 vasp bufxmirr1 bufxmirr2; #P newex 57 162 49 196617 vasp.cfft; #P hidden message 337 243 72 196617 set bufxmirr2; #P user waveform~ 337 262 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P hidden message 337 121 72 196617 set bufxmirr1; #P hidden newex 337 97 45 196617 loadbang; #P user waveform~ 337 140 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 530 428 119 196617 buffer~ bufxmirr1 2000; #P comment 51 67 156 196617 mirrors a vasp symmetrically; #P comment 51 43 96 196622 vasp.xmirr; #P newex 530 450 119 196617 buffer~ bufxmirr2 2000; #P connect 10 0 9 0; #P connect 9 0 24 0; #P connect 22 0 21 0; #P connect 21 0 23 0; #P connect 23 0 25 0; #P connect 12 0 11 0; #P connect 11 0 26 0; #P connect 14 0 13 0; #P connect 13 0 27 0; #P hidden connect 31 1 30 0; #P connect 16 0 17 0; #P connect 17 0 15 0; #P fasten 19 0 18 0 213 470 312 470; #P fasten 20 0 18 0 281 470 312 470; #P connect 15 0 18 0; #P connect 15 0 18 1; #P hidden connect 5 0 6 0; #P hidden fasten 3 1 6 0 644 448 660 448 660 117 342 117; #P hidden connect 28 0 4 0; #P hidden connect 6 0 4 0; #P hidden connect 5 0 8 0; #P hidden connect 8 0 7 0; #P hidden connect 28 0 7 0; #P connect 34 0 33 0; #P hidden connect 32 0 3 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 157 154 838 677;
+#P message 395 430 129 196617 vasp bufxmirr1 bufxmirr2;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 395 450 78 196617 p clear_buffers;
+#P hidden newex 530 406 48 196617 r 1129path;
+#P user umenu 80 101 72 196647 1 64 117 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1129path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 5 0 2 0;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 142 123 43 196617 p loader;
+#P comment 54 103 26 196617 read;
+#N vpatcher 40 55 418 371;
+#P button 183 82 15 0;
+#P newex 129 145 60 196617 prepend set;
+#N comlet waveform~ mode messages;
+#P inlet 129 121 15 0;
+#P newex 259 64 27 196617 << 1;
+#P newex 206 121 40 196617 change;
+#P newex 206 145 107 196617 select 0 1 2;
+#P newex 206 98 27 196617 |;
+#P newex 47 121 40 196617 change;
+#P outlet 129 252 15 0;
+#P message 47 145 65 196617 constrain \$1;
+#P newex 129 195 45 196617 loadbang;
+#P newex 47 40 222 196617 pushkeys;
+#P message 270 169 58 196617 mode move;
+#P message 206 213 61 196617 mode select;
+#P message 238 191 52 196617 mode loop;
+#P connect 3 0 7 0;
+#P connect 7 0 5 0;
+#P connect 12 0 13 0;
+#P fasten 5 0 6 0 52 243 134 243;
+#P fasten 0 0 6 0 243 243 134 243;
+#P fasten 1 0 6 0 211 243 134 243;
+#P fasten 2 0 6 0 275 243 134 243;
+#P connect 11 0 14 0;
+#P connect 3 3 8 0;
+#P connect 14 0 8 0;
+#P connect 8 0 10 0;
+#P connect 10 0 9 0;
+#P connect 4 0 1 0;
+#P connect 9 0 1 0;
+#P connect 13 0 1 0;
+#P connect 11 0 8 1;
+#P connect 9 1 0 0;
+#P connect 3 4 11 0;
+#P connect 9 2 2 0;
+#P pop;
+#P hidden newobj 337 77 49 196617 p wfkeys;
+#P newex 59 443 61 196617 vasp.update;
+#P newex 59 364 61 196617 vasp.update;
+#P newex 58 286 61 196617 vasp.update;
+#P newex 57 183 61 196617 vasp.update;
+#P newex 58 264 45 196617 vasp.= 0;
+#P message 58 221 129 196617 vasp bufxmirr1 bufxmirr2;
+#P newex 58 241 55 196617 vasp.upper;
+#P message 276 451 27 196617 stop;
+#P message 208 451 65 196617 startwindow;
+#P newex 307 477 29 196617 dac~;
+#P newex 307 420 30 196617 line~;
+#P message 307 397 72 196617 0 \, 2000 2000;
+#P newex 307 450 83 196617 play~ bufxmirr1;
+#P message 59 399 129 196617 vasp bufxmirr1 bufxmirr2;
+#P newex 59 421 49 196617 vasp.cfft;
+#P message 59 320 129 196617 vasp bufxmirr1 bufxmirr2;
+#P newex 59 342 59 196617 vasp.xmirr;
+#P message 57 140 129 196617 vasp bufxmirr1 bufxmirr2;
+#P newex 57 162 49 196617 vasp.cfft;
+#P hidden message 337 243 72 196617 set bufxmirr2;
+#P user waveform~ 337 262 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P hidden message 337 121 72 196617 set bufxmirr1;
+#P hidden newex 337 97 45 196617 loadbang;
+#P user waveform~ 337 140 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 530 428 119 196617 buffer~ bufxmirr1 2000;
+#P comment 51 67 156 196617 mirrors a vasp symmetrically;
+#P comment 51 43 96 196622 vasp.xmirr;
+#P newex 530 450 119 196617 buffer~ bufxmirr2 2000;
+#P connect 10 0 9 0;
+#P connect 9 0 24 0;
+#P connect 22 0 21 0;
+#P connect 21 0 23 0;
+#P connect 23 0 25 0;
+#P connect 12 0 11 0;
+#P connect 11 0 26 0;
+#P connect 14 0 13 0;
+#P connect 13 0 27 0;
+#P hidden connect 31 1 30 0;
+#P connect 16 0 17 0;
+#P connect 17 0 15 0;
+#P fasten 19 0 18 0 213 470 312 470;
+#P fasten 20 0 18 0 281 470 312 470;
+#P connect 15 0 18 0;
+#P connect 15 0 18 1;
+#P hidden connect 5 0 6 0;
+#P hidden fasten 3 1 6 0 644 448 660 448 660 117 342 117;
+#P hidden connect 28 0 4 0;
+#P hidden connect 6 0 4 0;
+#P hidden connect 5 0 8 0;
+#P hidden connect 8 0 7 0;
+#P hidden connect 28 0 7 0;
+#P connect 34 0 33 0;
+#P hidden connect 32 0 3 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.xrot.help b/externals/grill/vasp/max-help/vasp.xrot.help
index 4f23f743..e3f887e9 100755
--- a/externals/grill/vasp/max-help/vasp.xrot.help
+++ b/externals/grill/vasp/max-help/vasp.xrot.help
@@ -1 +1,91 @@
-max v2; #N vpatcher 441 216 1022 579; #P message 367 275 65 196617 vasp bufxrot; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 367 295 73 196617 p clear_buffer; #P hidden newex 449 275 48 196617 r 1127path; #P user umenu 76 121 72 196647 1 64 137 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1127path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 138 143 43 196617 p loader; #P comment 51 82 187 196617 optional argument/right inlet: value; #P message 201 295 27 196617 stop; #P message 133 295 65 196617 startwindow; #P newex 242 321 29 196617 dac~; #P newex 242 275 30 196617 line~; #P message 242 246 72 196617 0 \, 2000 2000; #P newex 242 295 70 196617 play~ bufxrot; #P number 131 179 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 56 228 61 196617 vasp.update; #P message 56 150 65 196617 vasp bufxrot; #P newex 56 200 85 196617 vasp.xrot 10000; #P comment 51 67 179 196617 rotate buffer content symmetrically; #P comment 51 43 96 196622 vasp.xrot; #P hidden message 242 98 59 196617 set bufxrot; #P hidden newex 242 73 45 196617 loadbang; #P user waveform~ 242 117 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 449 295 105 196617 buffer~ bufxrot 2000; #P comment 51 122 29 196617 read; #P connect 8 0 7 0; #P connect 7 0 9 0; #P connect 10 0 7 1; #P hidden connect 19 1 18 0; #P hidden fasten 1 1 4 0 549 316 558 316 558 94 247 94; #P hidden connect 3 0 4 0; #P hidden connect 4 0 2 0; #P connect 12 0 13 0; #P connect 13 0 11 0; #P connect 11 0 14 0; #P fasten 15 0 14 0 138 314 247 314; #P fasten 16 0 14 0 206 314 247 314; #P connect 11 0 14 1; #P connect 22 0 21 0; #P hidden connect 20 0 1 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 441 216 1022 579;
+#P message 367 275 65 196617 vasp bufxrot;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 367 295 73 196617 p clear_buffer;
+#P hidden newex 449 275 48 196617 r 1127path;
+#P user umenu 76 121 72 196647 1 64 137 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1127path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 138 143 43 196617 p loader;
+#P comment 51 82 187 196617 optional argument/right inlet: value;
+#P message 201 295 27 196617 stop;
+#P message 133 295 65 196617 startwindow;
+#P newex 242 321 29 196617 dac~;
+#P newex 242 275 30 196617 line~;
+#P message 242 246 72 196617 0 \, 2000 2000;
+#P newex 242 295 70 196617 play~ bufxrot;
+#P number 131 179 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 56 228 61 196617 vasp.update;
+#P message 56 150 65 196617 vasp bufxrot;
+#P newex 56 200 85 196617 vasp.xrot 10000;
+#P comment 51 67 179 196617 rotate buffer content symmetrically;
+#P comment 51 43 96 196622 vasp.xrot;
+#P hidden message 242 98 59 196617 set bufxrot;
+#P hidden newex 242 73 45 196617 loadbang;
+#P user waveform~ 242 117 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 449 295 105 196617 buffer~ bufxrot 2000;
+#P comment 51 122 29 196617 read;
+#P connect 8 0 7 0;
+#P connect 7 0 9 0;
+#P connect 10 0 7 1;
+#P hidden connect 19 1 18 0;
+#P hidden fasten 1 1 4 0 549 316 558 316 558 94 247 94;
+#P hidden connect 3 0 4 0;
+#P hidden connect 4 0 2 0;
+#P connect 12 0 13 0;
+#P connect 13 0 11 0;
+#P connect 11 0 14 0;
+#P fasten 15 0 14 0 138 314 247 314;
+#P fasten 16 0 14 0 206 314 247 314;
+#P connect 11 0 14 1;
+#P connect 22 0 21 0;
+#P hidden connect 20 0 1 0;
+#P pop;
diff --git a/externals/grill/vasp/max-help/vasp.xshift.help b/externals/grill/vasp/max-help/vasp.xshift.help
index 15bb14f4..68cbfa5d 100755
--- a/externals/grill/vasp/max-help/vasp.xshift.help
+++ b/externals/grill/vasp/max-help/vasp.xshift.help
@@ -1 +1,91 @@
-max v2; #N vpatcher 220 165 835 542; #P message 383 278 73 196617 vasp bufxshift; #N vpatcher 40 55 218 175; #P newex 45 79 61 196617 vasp.update; #P newex 45 56 45 196617 vasp.= 0; #N comlet vasp to clear in; #P inlet 45 26 15 0; #P connect 0 0 1 0; #P connect 1 0 2 0; #P pop; #P newobj 383 298 73 196617 p clear_buffer; #P hidden newex 463 269 48 196617 r 1125path; #P user umenu 89 116 72 196647 1 64 132 1; #X add bass.aif; #X add beat.aif; #X add fly.aif; #X add plastic.aif; #X add your_own...; #N vpatcher 93 462 631 722; #P message 59 102 28 196617 read; #P newex 59 69 89 196617 route your_own...; #N comlet popup comment in; #P inlet 59 26 15 0; #P newex 59 149 48 196617 s 1125path; #P newex 138 102 79 196617 sprintf read %s; #P user umenu 48 169 100 196647 1 64 185 1; #X add drums.aif; #X add voice.aif; #X add test.aif; #X add read a soundfile; #P connect 3 0 4 0; #P connect 4 0 5 0; #P connect 5 0 2 0; #P fasten 1 0 2 0 143 134 64 134; #P connect 4 1 1 0; #P pop; #P hidden newobj 151 138 43 196617 p loader; #P comment 63 118 26 196617 read; #P comment 61 86 187 196617 optional argument/right inlet: value; #P message 223 299 27 196617 stop; #P message 155 299 65 196617 startwindow; #P newex 264 325 29 196617 dac~; #P newex 264 273 30 196617 line~; #P message 264 250 72 196617 0 \, 2000 2000; #P newex 264 298 75 196617 play~ bufxshift; #P number 148 181 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; #P newex 66 233 61 196617 vasp.update; #P message 66 155 73 196617 vasp bufxshift; #P newex 66 205 92 196617 vasp.xshift 11000; #P comment 61 48 96 196622 vasp.xshift; #P hidden message 264 102 65 196617 set bufxshift; #P hidden newex 264 77 45 196617 loadbang; #P user waveform~ 264 121 312 99 3 9; #W mode select; #W mouseoutput continuous; #W unit ms; #W grid 1000.; #W ticks 8.; #W labels 1; #W vlabels 1; #W vticks 1; #W vzoom 1.; #W voffset 0.; #W bpm 120. 4.; #W frgb 0 0 0; #W brgb 255 255 255; #W rgb2 132 132 132; #W rgb3 0 0 0; #W rgb4 0 0 0; #W rgb5 255 255 255; #W rgb6 100 100 100; #W rgb7 100 100 100; #P newex 463 298 113 196617 buffer~ bufxshift 2000; #P comment 61 71 187 196617 shifts buffer content symmetrically; #P connect 7 0 6 0; #P connect 6 0 8 0; #P connect 9 0 6 1; #P hidden connect 19 1 18 0; #P hidden fasten 1 1 4 0 571 319 580 319 580 98 269 98; #P hidden connect 3 0 4 0; #P hidden connect 4 0 2 0; #P connect 11 0 12 0; #P connect 12 0 10 0; #P connect 10 0 13 0; #P fasten 14 0 13 0 160 318 269 318; #P fasten 15 0 13 0 228 318 269 318; #P connect 10 0 13 1; #P connect 22 0 21 0; #P hidden connect 20 0 1 0; #P pop; \ No newline at end of file
+max v2;
+#N vpatcher 220 165 835 542;
+#P message 383 278 73 196617 vasp bufxshift;
+#N vpatcher 40 55 218 175;
+#P newex 45 79 61 196617 vasp.update;
+#P newex 45 56 45 196617 vasp.= 0;
+#N comlet vasp to clear in;
+#P inlet 45 26 15 0;
+#P connect 0 0 1 0;
+#P connect 1 0 2 0;
+#P pop;
+#P newobj 383 298 73 196617 p clear_buffer;
+#P hidden newex 463 269 48 196617 r 1125path;
+#P user umenu 89 116 72 196647 1 64 132 1;
+#X add bass.aif;
+#X add beat.aif;
+#X add fly.aif;
+#X add plastic.aif;
+#X add your_own...;
+#N vpatcher 93 462 631 722;
+#P message 59 102 28 196617 read;
+#P newex 59 69 89 196617 route your_own...;
+#N comlet popup comment in;
+#P inlet 59 26 15 0;
+#P newex 59 149 48 196617 s 1125path;
+#P newex 138 102 79 196617 sprintf read %s;
+#P user umenu 48 169 100 196647 1 64 185 1;
+#X add drums.aif;
+#X add voice.aif;
+#X add test.aif;
+#X add read a soundfile;
+#P connect 3 0 4 0;
+#P connect 4 0 5 0;
+#P connect 5 0 2 0;
+#P fasten 1 0 2 0 143 134 64 134;
+#P connect 4 1 1 0;
+#P pop;
+#P hidden newobj 151 138 43 196617 p loader;
+#P comment 63 118 26 196617 read;
+#P comment 61 86 187 196617 optional argument/right inlet: value;
+#P message 223 299 27 196617 stop;
+#P message 155 299 65 196617 startwindow;
+#P newex 264 325 29 196617 dac~;
+#P newex 264 273 30 196617 line~;
+#P message 264 250 72 196617 0 \, 2000 2000;
+#P newex 264 298 75 196617 play~ bufxshift;
+#P number 148 181 64 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
+#P newex 66 233 61 196617 vasp.update;
+#P message 66 155 73 196617 vasp bufxshift;
+#P newex 66 205 92 196617 vasp.xshift 11000;
+#P comment 61 48 96 196622 vasp.xshift;
+#P hidden message 264 102 65 196617 set bufxshift;
+#P hidden newex 264 77 45 196617 loadbang;
+#P user waveform~ 264 121 312 99 3 9;
+#W mode select;
+#W mouseoutput continuous;
+#W unit ms;
+#W grid 1000.;
+#W ticks 8.;
+#W labels 1;
+#W vlabels 1;
+#W vticks 1;
+#W vzoom 1.;
+#W voffset 0.;
+#W bpm 120. 4.;
+#W frgb 0 0 0;
+#W brgb 255 255 255;
+#W rgb2 132 132 132;
+#W rgb3 0 0 0;
+#W rgb4 0 0 0;
+#W rgb5 255 255 255;
+#W rgb6 100 100 100;
+#W rgb7 100 100 100;
+#P newex 463 298 113 196617 buffer~ bufxshift 2000;
+#P comment 61 71 187 196617 shifts buffer content symmetrically;
+#P connect 7 0 6 0;
+#P connect 6 0 8 0;
+#P connect 9 0 6 1;
+#P hidden connect 19 1 18 0;
+#P hidden fasten 1 1 4 0 571 319 580 319 580 98 269 98;
+#P hidden connect 3 0 4 0;
+#P hidden connect 4 0 2 0;
+#P connect 11 0 12 0;
+#P connect 12 0 10 0;
+#P connect 10 0 13 0;
+#P fasten 14 0 13 0 160 318 269 318;
+#P fasten 15 0 13 0 228 318 269 318;
+#P connect 10 0 13 1;
+#P connect 22 0 21 0;
+#P hidden connect 20 0 1 0;
+#P pop;
diff --git a/externals/grill/vasp/source/ops.h b/externals/grill/vasp/source/ops.h
index 9fdd7595..00dc8e44 100644
--- a/externals/grill/vasp/source/ops.h
+++ b/externals/grill/vasp/source/ops.h
@@ -1 +1,27 @@
-/* VASP modular - vector assembling signal processor / objects for Max/MSP and PD Copyright (c) 2002 Thomas Grill (xovo@gmx.net) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. */ #ifndef __VASP_OPS_H #define __VASP_OPS_H #include "ops_assign.h" #include "ops_arith.h" #include "ops_trnsc.h" #include "ops_cmp.h" #include "ops_cplx.h" #include "ops_flt.h" #include "ops_dft.h" #include "ops_gen.h" #include "ops_wnd.h" #include "ops_rearr.h" #include "ops_resmp.h" #include "ops_feature.h" #endif \ No newline at end of file
+/*
+
+VASP modular - vector assembling signal processor / objects for Max/MSP and PD
+
+Copyright (c) 2002 Thomas Grill (xovo@gmx.net)
+For information on usage and redistribution, and for a DISCLAIMER OF ALL
+WARRANTIES, see the file, "license.txt," in this distribution.
+
+*/
+
+#ifndef __VASP_OPS_H
+#define __VASP_OPS_H
+
+#include "ops_assign.h"
+#include "ops_arith.h"
+#include "ops_trnsc.h"
+#include "ops_cmp.h"
+#include "ops_cplx.h"
+#include "ops_flt.h"
+#include "ops_dft.h"
+#include "ops_gen.h"
+#include "ops_wnd.h"
+#include "ops_rearr.h"
+#include "ops_resmp.h"
+#include "ops_feature.h"
+
+#endif
diff --git a/externals/grill/vasp/vasp.doxy b/externals/grill/vasp/vasp.doxy
index 43639760..38fb121b 100644
--- a/externals/grill/vasp/vasp.doxy
+++ b/externals/grill/vasp/vasp.doxy
@@ -1 +1,188 @@
-# Doxyfile 1.2.13-20020210 #--------------------------------------------------------------------------- # General configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "vasp modular" PROJECT_NUMBER = 0.0.8pre8 OUTPUT_DIRECTORY = f:/prog/max/vasp/doc/ OUTPUT_LANGUAGE = English EXTRACT_ALL = YES EXTRACT_PRIVATE = NO EXTRACT_STATIC = YES EXTRACT_LOCAL_CLASSES = YES HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_CLASSES = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = INTERNAL_DOCS = YES STRIP_CODE_COMMENTS = YES CASE_SENSE_NAMES = YES SHORT_NAMES = NO HIDE_SCOPE_NAMES = NO VERBATIM_HEADERS = YES SHOW_INCLUDE_FILES = YES JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO DETAILS_AT_TOP = NO INHERIT_DOCS = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES ALIASES = ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_JAVA = NO SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = f:/prog/max/vasp/source/ FILE_PATTERNS = RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXAMPLE_PATH = EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = YES INLINE_SOURCES = NO REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = YES COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = YES HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO CGI_NAME = search.cgi CGI_URL = DOC_URL = DOC_ABSPATH = BIN_ABSPATH = /usr/local/bin/ EXT_DOC_PATHS = \ No newline at end of file
+# Doxyfile 1.2.13-20020210
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME = "vasp modular"
+PROJECT_NUMBER = 0.0.8pre8
+OUTPUT_DIRECTORY = f:/prog/max/vasp/doc/
+OUTPUT_LANGUAGE = English
+EXTRACT_ALL = YES
+EXTRACT_PRIVATE = NO
+EXTRACT_STATIC = YES
+EXTRACT_LOCAL_CLASSES = YES
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = NO
+STRIP_FROM_PATH =
+INTERNAL_DOCS = YES
+STRIP_CODE_COMMENTS = YES
+CASE_SENSE_NAMES = YES
+SHORT_NAMES = NO
+HIDE_SCOPE_NAMES = NO
+VERBATIM_HEADERS = YES
+SHOW_INCLUDE_FILES = YES
+JAVADOC_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP = NO
+INHERIT_DOCS = YES
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+DISTRIBUTE_GROUP_DOC = NO
+TAB_SIZE = 8
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+ALIASES =
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+OPTIMIZE_OUTPUT_FOR_C = NO
+OPTIMIZE_OUTPUT_JAVA = NO
+SHOW_USED_FILES = YES
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT = f:/prog/max/vasp/source/
+FILE_PATTERNS =
+RECURSIVE = NO
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS =
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH =
+INPUT_FILTER =
+FILTER_SOURCE_FILES = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = YES
+INLINE_SOURCES = NO
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX = YES
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_ALIGN_MEMBERS = YES
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+BINARY_TOC = NO
+TOC_EXPAND = NO
+DISABLE_INDEX = NO
+ENUM_VALUES_PER_LINE = 4
+GENERATE_TREEVIEW = NO
+TREEVIEW_WIDTH = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4wide
+EXTRA_PACKAGES =
+LATEX_HEADER =
+PDF_HYPERLINKS = NO
+USE_PDFLATEX = NO
+LATEX_BATCHMODE = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_LINKS = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML = NO
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF = NO
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = YES
+EXPAND_ONLY_PREDEF = YES
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED =
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = YES
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = NO
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+TEMPLATE_RELATIONS = YES
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+GRAPHICAL_HIERARCHY = YES
+DOT_IMAGE_FORMAT = png
+DOT_PATH =
+DOTFILE_DIRS =
+MAX_DOT_GRAPH_WIDTH = 1024
+MAX_DOT_GRAPH_HEIGHT = 1024
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
+CGI_NAME = search.cgi
+CGI_URL =
+DOC_URL =
+DOC_ABSPATH =
+BIN_ABSPATH = /usr/local/bin/
+EXT_DOC_PATHS =
diff --git a/externals/grill/xsample/config-pd-darwin.txt b/externals/grill/xsample/config-pd-darwin.txt
index 418da47d..b42988cc 100755
--- a/externals/grill/xsample/config-pd-darwin.txt
+++ b/externals/grill/xsample/config-pd-darwin.txt
@@ -11,7 +11,7 @@ PD=/usr/local/lib/pd
# where are the PD header files?
# leave it blank if it is a system directory (like /usr/local/include),
# since gcc 3.2 complains about it
-PDINC=${PD}/src
+#PDINC=${PD}/src
# where is the PD executable?
PDBIN=/usr/local/bin/pd
@@ -34,3 +34,6 @@ HELPDIR=${PD}/doc/5.reference
# (check whether they fit your system!)
UFLAGS=-malign-power -maltivec -faltivec
+# build with shared flext library
+FLEXT_SHARED=1
+
diff --git a/externals/grill/xsample/makefile.pd-darwin b/externals/grill/xsample/makefile.pd-darwin
index f501daea..e91f764c 100755
--- a/externals/grill/xsample/makefile.pd-darwin
+++ b/externals/grill/xsample/makefile.pd-darwin
@@ -1,5 +1,5 @@
# xsample - extended sample objects for Max/MSP and pd (pure data)
-# Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net)
+# Copyright (c) 2001-2004 Thomas Grill (xovo@gmx.net)
#
# Makefile for gcc @ OSX (darwin)
#
@@ -13,22 +13,29 @@ CONFIG=config-pd-darwin.txt
include ${CONFIG}
-FLEXTLIB=$(FLEXTPATH)/libflext.a
-
# compiler stuff
INCLUDES=$(PDINC)
FLAGS=-DFLEXT_SYS=2
-CFLAGS=${UFLAGS} -dynamic -O2 -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes -funroll-loops -fmove-all-movables -frerun-loop-opt -fno-rtti -fno-exceptions
+CFLAGS=-O2 ${UFLAGS} -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes -funroll-loops -fmove-all-movables -frerun-loop-opt -fno-rtti -fno-exceptions
LIBS=m gcc
-LDFLAGS=$(FLEXTLIB) -bundle -bundle_loader $(PDBIN)
+LDFLAGS=-bundle -bundle_loader $(PDBIN)
FRAMEWORKS=Carbon veclib
+ifdef FLEXT_SHARED
+CFLAGS+=-DFLEXT_SHARED
+LDFLAGS+=-L$(FLEXTPATH)
+FLEXTLIB=-lflext
+
+else
+
+FLEXTLIB=$(FLEXTPATH)/libflext.a
+
+endif
+
# ----------------------------------------------
# the rest can stay untouched
# ----------------------------------------------
-NAME=xsample
-
include make-files.txt
MAKEFILE=makefile.pd-darwin
@@ -48,7 +55,7 @@ $(TARGDIR)/%.o : $(SRCDIR)/%.cpp
$(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(FLEXTPATH)) $< -o $@
$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS))
- $(CXX) $(LDFLAGS) $^ $(patsubst %,-framework %,$(FRAMEWORKS)) $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) -o $@
+ $(CXX) $(LDFLAGS) $^ $(patsubst %,-framework %,$(FRAMEWORKS)) $(patsubst %,-L%,$(LIBPATH)) $(patsubst %,-l%,$(LIBS)) $(FLEXTLIB) -o $@
chmod 755 $@
diff --git a/externals/grill/xsample/xsample.cw b/externals/grill/xsample/xsample.cw
index a74428fd..2deb0271 100755
--- a/externals/grill/xsample/xsample.cw
+++ b/externals/grill/xsample/xsample.cw
Binary files differ