aboutsummaryrefslogtreecommitdiff
path: root/externals
diff options
context:
space:
mode:
Diffstat (limited to 'externals')
-rw-r--r--externals/grill/flext/build-pd-bcc.bat4
-rw-r--r--externals/grill/flext/build-pd-msvc.bat4
-rw-r--r--externals/grill/flext/makefile.pd-darwin2
-rwxr-xr-xexternals/grill/flext/source/flcwpd-x-thr.h32
-rwxr-xr-xexternals/grill/flext/source/flcwpd-x.h38
-rwxr-xr-xexternals/grill/flext/source/flsimd.cpp183
-rw-r--r--externals/grill/vasp/pd-ex/loudness.pd414
-rw-r--r--externals/grill/vasp/pd/vasp.rms.pd32
-rwxr-xr-xexternals/grill/xsample/config-pd-linux.txt1
-rwxr-xr-xexternals/grill/xsample/xsample.cwbin394881 -> 394881 bytes
10 files changed, 447 insertions, 263 deletions
diff --git a/externals/grill/flext/build-pd-bcc.bat b/externals/grill/flext/build-pd-bcc.bat
index ff3668d6..b1e6eaf4 100644
--- a/externals/grill/flext/build-pd-bcc.bat
+++ b/externals/grill/flext/build-pd-bcc.bat
@@ -1 +1,3 @@
-@echo --- Building flext with BorlandC++ --- make -f makefile.pd-bcc \ No newline at end of file
+@echo --- Building flext with BorlandC++ ---
+
+make -f makefile.pd-bcc
diff --git a/externals/grill/flext/build-pd-msvc.bat b/externals/grill/flext/build-pd-msvc.bat
index b179efc1..d865c01d 100644
--- a/externals/grill/flext/build-pd-msvc.bat
+++ b/externals/grill/flext/build-pd-msvc.bat
@@ -1 +1,3 @@
-@echo --- Building flext with MS Visual C++ --- nmake -f makefile.pd-msvc clean nmake -f makefile.pd-msvc \ No newline at end of file
+@echo --- Building flext with MS Visual C++ ---
+nmake -f makefile.pd-msvc clean
+ nmake -f makefile.pd-msvc
diff --git a/externals/grill/flext/makefile.pd-darwin b/externals/grill/flext/makefile.pd-darwin
index a8bb24be..dd4e8a84 100644
--- a/externals/grill/flext/makefile.pd-darwin
+++ b/externals/grill/flext/makefile.pd-darwin
@@ -32,7 +32,7 @@ CFLAGS_S=-DFLEXT_SHARED -DFLEXT_EXPORTS
LSHFLAGS= -dylib -dynamic -flat_namespace -undefined suppress
# frameworks
-FRAMEWORKS=Carbon veclib
+#FRAMEWORKS=Carbon veclib
# ----------------------------------------------
diff --git a/externals/grill/flext/source/flcwpd-x-thr.h b/externals/grill/flext/source/flcwpd-x-thr.h
index a0bae5de..56a193ef 100755
--- a/externals/grill/flext/source/flcwpd-x-thr.h
+++ b/externals/grill/flext/source/flcwpd-x-thr.h
@@ -1 +1,31 @@
-/* flext - C++ layer for Max/MSP and pd (pure data) externals Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. */ /* This is the prefix file for CodeWarrior projects - OS X version */ #ifndef _FLEXT_CW_PD_X_THR_H #define _FLEXT_CW_PD_X_THR_H #define FLEXT_THREADS #if 0 /* old CodeWarrior version (<= 6) don't have sigset_t defined which is needed for pthreads */ #if defined(__MWERKS__) && (__MWERKS__ <= 0x6000) typedef unsigned int sigset_t; #define _CW_NOPRECOMP // no precompiled headers #endif #endif #include "flcwpd-x.h" #endif \ No newline at end of file
+/*
+
+flext - C++ layer for Max/MSP and pd (pure data) externals
+
+Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net)
+For information on usage and redistribution, and for a DISCLAIMER OF ALL
+WARRANTIES, see the file, "license.txt," in this distribution.
+
+*/
+
+/* This is the prefix file for CodeWarrior projects - OS X version */
+
+#ifndef _FLEXT_CW_PD_X_THR_H
+#define _FLEXT_CW_PD_X_THR_H
+
+#define FLEXT_THREADS
+
+#if 0
+/*
+ old CodeWarrior version (<= 6) don't have sigset_t defined which
+ is needed for pthreads
+*/
+#if defined(__MWERKS__) && (__MWERKS__ <= 0x6000)
+ typedef unsigned int sigset_t;
+ #define _CW_NOPRECOMP // no precompiled headers
+#endif
+#endif
+
+#include "flcwpd-x.h"
+
+#endif
diff --git a/externals/grill/flext/source/flcwpd-x.h b/externals/grill/flext/source/flcwpd-x.h
index 7dfaa4b4..3a5087ae 100755
--- a/externals/grill/flext/source/flcwpd-x.h
+++ b/externals/grill/flext/source/flcwpd-x.h
@@ -1 +1,37 @@
-/* flext - C++ layer for Max/MSP and pd (pure data) externals Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. */ /* This is the prefix file for CodeWarrior projects - OS X version */ #ifndef _FLEXT_CW_PD_X_H #define _FLEXT_CW_PD_X_H #ifndef __MWERKS__ #error "This header file is for CodeWarrior only." #endif #define FLEXT_SYS 2 #define FLEXT_USE_SIMD #define TARGET_API_MAC_CARBON 1 #define _POSIX_C_SOURCE #ifndef _CW_NOPRECOMP // #include <MacHeadersMach-O.h> // #include <MSL MacHeadersMach-O.h> #endif #if __option(sym) || !__option(opt_dead_code) #define FLEXT_DEBUG #endif /* #define _LOG */ #endif \ No newline at end of file
+/*
+
+flext - C++ layer for Max/MSP and pd (pure data) externals
+
+Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net)
+For information on usage and redistribution, and for a DISCLAIMER OF ALL
+WARRANTIES, see the file, "license.txt," in this distribution.
+
+*/
+
+/* This is the prefix file for CodeWarrior projects - OS X version */
+
+#ifndef _FLEXT_CW_PD_X_H
+#define _FLEXT_CW_PD_X_H
+
+#ifndef __MWERKS__
+ #error "This header file is for CodeWarrior only."
+#endif
+
+#define FLEXT_SYS 2
+#define FLEXT_USE_SIMD
+
+#define TARGET_API_MAC_CARBON 1
+#define _POSIX_C_SOURCE
+
+#ifndef _CW_NOPRECOMP
+// #include <MacHeadersMach-O.h>
+// #include <MSL MacHeadersMach-O.h>
+#endif
+
+#if __option(sym) || !__option(opt_dead_code)
+ #define FLEXT_DEBUG
+#endif
+
+/* #define _LOG */
+
+#endif
diff --git a/externals/grill/flext/source/flsimd.cpp b/externals/grill/flext/source/flsimd.cpp
index 4d92aa48..fdb544c5 100755
--- a/externals/grill/flext/source/flsimd.cpp
+++ b/externals/grill/flext/source/flsimd.cpp
@@ -37,20 +37,19 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#include <mm3dnow.h> // 3DNow!
#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__MWERKS__) && defined(__ALTIVEC__)
#if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH
- #include <sys/sysctl.h>
+ #include <sys/sysctl.h>
+ #include <vDSP.h>
#else
- #include <Gestalt.h>
+ #include <Gestalt.h>
#endif
#pragma altivec_model on
#include <altivec.h>
-// #include <vBasicOps.h>
#include <vectorOps.h>
#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUG__) && defined(__ALTIVEC__)
#include <sys/sysctl.h>
-// #include <vecLib/vBasicOps.h>
- #include <vecLib/vectorOps.h>
+ #include <vecLib/vecLib.h>
#endif
#endif // FLEXT_USE_SIMD
@@ -334,7 +333,7 @@ inline void StoreUnaligned( vector unsigned char v, vector unsigned char *where)
vec_st( high, 16, where );
}
-inline vector float LoadUnaligned(float *v )
+inline vector float LoadUnaligned(const float *v )
{
return (vector float)LoadUnaligned((vector unsigned char *)v);
}
@@ -348,6 +347,11 @@ inline bool IsVectorAligned(const void *where)
{
return reinterpret_cast<unsigned long>(where)&(sizeof(vector float)-1) == 0;
}
+
+inline vector float LoadValue(const float &f)
+{
+ return IsVectorAligned(&f)?vec_splat(vec_ld(0,(vector float *)&f),0):LoadUnaligned(&f);
+}
#endif
@@ -479,14 +483,14 @@ loopuu:
while(cnt--) *(dst++) = *(src++);
}
else
-#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) && defined(__VECTOROPS__)
- {
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VECTOROPS__)
+ if(true) {
int n = cnt>>2,n4 = n<<2;
- cnt -= n4;
vScopy(n4,(vector float *)src,(vector float *)dst);
- src += n4,dst += n4;
+ cnt -= n4,src += n4,dst += n4;
while(cnt--) *(dst++) = *(src++);
}
+ else
#endif // _MSC_VER
#endif // FLEXT_USE_SIMD
{
@@ -558,18 +562,18 @@ loopu:
while(cnt--) *(dst++) = s;
}
else
-#elif 0 //FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__ALTIVEC__)
if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(dst)) {
- vector float svec = IsVectorAligned(&s)?vec_splat(vec_ld(0,(vector float *)&s),0):LoadUnaligned(&s);
- int n = cnt>>4,n4 = n<<4;
- cnt -= n4;
+ vector float svec = LoadValue(s);
+ int n = cnt>>4;
+ cnt -= n<<4;
while(n--) {
vec_st(svec,0,dst);
vec_st(svec,16,dst);
vec_st(svec,32,dst);
vec_st(svec,48,dst);
- dst += 64;
+ dst += 16;
}
while(cnt--) *(dst++) = s;
@@ -688,19 +692,33 @@ loopu:
while(cnt--) *(dst++) = *(src++)*op;
}
else
-#elif 0 //FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VDSP__)
+ if(true) {
+ vsmul(src,1,&op,dst,1,cnt);
+ }
+ else
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__ALTIVEC__)
if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(src) && IsVectorAligned(dst)) {
- vector float opvec = IsVectorAligned(&op)?vec_splat(vec_ld(0,(vector float *)&op),0):LoadUnaligned(&op);
- vector float addvec = (vector float)vec_splat_u32(0);
- int n = cnt>>4,n4 = n<<4;
- cnt -= n4;
+ const vector float arg = LoadValue(op);
+ const vector float zero = (vector float)(0);
+ int n = cnt>>4;
+ cnt -= n<<4;
- while(n--) {
- vec_st(vec_madd(vec_ld( 0,src),opvec,addvec), 0,dst);
- vec_st(vec_madd(vec_ld(16,src),opvec,addvec),16,dst);
- vec_st(vec_madd(vec_ld(32,src),opvec,addvec),32,dst);
- vec_st(vec_madd(vec_ld(48,src),opvec,addvec),48,dst);
- src += 64,dst += 64;
+ for(; n--; src += 16,dst += 16) {
+ vector float a1 = vec_ld( 0,src);
+ vector float a2 = vec_ld(16,src);
+ vector float a3 = vec_ld(32,src);
+ vector float a4 = vec_ld(48,src);
+
+ a1 = vec_madd(a1,arg,zero);
+ a2 = vec_madd(a2,arg,zero);
+ a3 = vec_madd(a3,arg,zero);
+ a4 = vec_madd(a4,arg,zero);
+
+ vec_st(a1, 0,dst);
+ vec_st(a2,16,dst);
+ vec_st(a3,32,dst);
+ vec_st(a4,48,dst);
}
while(cnt--) *(dst++) = *(src++)*op;
@@ -924,8 +942,34 @@ loopuu:
while(cnt--) *(dst++) = *(src++) * *(op++);
}
else
-#elif 0 // FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_sse) {
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VDSP__)
+ if(true) {
+ vmul(src,1,op,1,dst,1,cnt);
+ }
+ else
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__ALTIVEC__)
+ if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(src) && IsVectorAligned(op) && IsVectorAligned(dst)) {
+ const vector float zero = (vector float)(0);
+ int n = cnt>>4;
+ cnt -= n<<4;
+
+ for(; n--; src += 16,op += 16,dst += 16) {
+ vector float a1 = vec_ld( 0,src),b1 = vec_ld( 0,op);
+ vector float a2 = vec_ld(16,src),b2 = vec_ld(16,op);
+ vector float a3 = vec_ld(32,src),b3 = vec_ld(32,op);
+ vector float a4 = vec_ld(48,src),b4 = vec_ld(48,op);
+
+ a1 = vec_madd(a1,b1,zero);
+ a2 = vec_madd(a2,b2,zero);
+ a3 = vec_madd(a3,b3,zero);
+ a4 = vec_madd(a4,b4,zero);
+
+ vec_st(a1, 0,dst);
+ vec_st(a2,16,dst);
+ vec_st(a3,32,dst);
+ vec_st(a4,48,dst);
+ }
+ while(cnt--) *(dst++) = *(src++) * *(op++);
}
else
#endif // _MSC_VER
@@ -1054,8 +1098,30 @@ loopu:
while(cnt--) *(dst++) = *(src++)+op;
}
else
-#elif 0 //FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec) {
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__ALTIVEC__)
+ if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(src) && IsVectorAligned(dst)) {
+ const vector float arg = LoadValue(op);
+ int n = cnt>>4;
+ cnt -= n<<4;
+
+ for(; n--; src += 16,dst += 16) {
+ vector float a1 = vec_ld( 0,src);
+ vector float a2 = vec_ld(16,src);
+ vector float a3 = vec_ld(32,src);
+ vector float a4 = vec_ld(48,src);
+
+ a1 = vec_add(a1,arg);
+ a2 = vec_add(a2,arg);
+ a3 = vec_add(a3,arg);
+ a4 = vec_add(a4,arg);
+
+ vec_st(a1, 0,dst);
+ vec_st(a2,16,dst);
+ vec_st(a3,32,dst);
+ vec_st(a4,48,dst);
+ }
+
+ while(cnt--) *(dst++) = *(src++)+op;
}
else
#endif // _MSC_VER
@@ -1277,9 +1343,35 @@ void flext::AddSamples(t_sample *dst,const t_sample *src,const t_sample *op,int
while(cnt--) *(dst++) = *(src++) + *(op++);
}
else
-#elif 0 //FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- {
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VDSP__)
+ if(true) {
+ vadd(src,1,op,1,dst,1,cnt);
+ }
+ else
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__ALTIVEC__)
+ if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(src) && IsVectorAligned(op) && IsVectorAligned(dst)) {
+ int n = cnt>>4;
+ cnt -= n<<4;
+
+ for(; n--; src += 16,op += 16,dst += 16) {
+ vector float a1 = vec_ld( 0,src),b1 = vec_ld( 0,op);
+ vector float a2 = vec_ld(16,src),b2 = vec_ld(16,op);
+ vector float a3 = vec_ld(32,src),b3 = vec_ld(32,op);
+ vector float a4 = vec_ld(48,src),b4 = vec_ld(48,op);
+
+ a1 = vec_add(a1,b1);
+ a2 = vec_add(a2,b2);
+ a3 = vec_add(a3,b3);
+ a4 = vec_add(a4,b4);
+
+ vec_st(a1, 0,dst);
+ vec_st(a2,16,dst);
+ vec_st(a3,32,dst);
+ vec_st(a4,48,dst);
+ }
+ while(cnt--) *(dst++) = *(src++) + *(op++);
}
+ else
#endif // _MSC_VER
#endif // FLEXT_USE_SIMD
{
@@ -1418,8 +1510,31 @@ loopu:
while(cnt--) *(dst++) = *(src++)*opmul+opadd;
}
else
-#elif 0 //FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__)
- if(GetSIMDCapabilities()&simd_altivec) {
+#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__ALTIVEC__)
+ if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(src) && IsVectorAligned(dst)) {
+ const vector float argmul = LoadValue(opmul);
+ const vector float argadd = LoadValue(opadd);
+ int n = cnt>>4;
+ cnt -= n<<4;
+
+ for(; n--; src += 16,dst += 16) {
+ vector float a1 = vec_ld( 0,src);
+ vector float a2 = vec_ld(16,src);
+ vector float a3 = vec_ld(32,src);
+ vector float a4 = vec_ld(48,src);
+
+ a1 = vec_madd(a1,argmul,argadd);
+ a2 = vec_madd(a2,argmul,argadd);
+ a3 = vec_madd(a3,argmul,argadd);
+ a4 = vec_madd(a4,argmul,argadd);
+
+ vec_st(a1, 0,dst);
+ vec_st(a2,16,dst);
+ vec_st(a3,32,dst);
+ vec_st(a4,48,dst);
+ }
+
+ while(cnt--) *(dst++) = *(src++)*opmul+opadd;
}
else
#endif // _MSC_VER
diff --git a/externals/grill/vasp/pd-ex/loudness.pd b/externals/grill/vasp/pd-ex/loudness.pd
index 0aa18a02..b4fe5710 100644
--- a/externals/grill/vasp/pd-ex/loudness.pd
+++ b/externals/grill/vasp/pd-ex/loudness.pd
@@ -1,207 +1,207 @@
-#N canvas 258 35 637 398 12;
-#N canvas 0 0 450 300 graph1 0;
-#X array filter 1024 float 1;
-#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
-#A 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
-#X coords 0 10 1023 -10 200 140 1;
-#X restore 412 91 graph;
-#X obj 171 129 table buf 10;
-#X obj 37 128 wedit buf;
-#X obj 44 203 bng 25 250 50 0 empty empty start 0 -6 0 8 -24198 -1
--1;
-#N canvas 289 57 385 501 do 0;
-#X obj 40 20 inlet;
-#X obj 38 452 outlet;
-#X obj 38 175 vasp.parts;
-#X msg 40 91 vasp buf;
-#N canvas 0 0 256 335 accum 0;
-#X obj 31 158 +;
-#X obj 65 159 f;
-#X obj 32 95 t f b;
-#X obj 64 229 /;
-#X obj 111 158 1;
-#X obj 112 183 +;
-#X obj 146 184 f;
-#X obj 32 53 inlet;
-#X obj 64 276 outlet;
-#X obj 169 53 inlet;
-#X text 171 28 reset;
-#X text 31 31 value;
-#X obj 169 79 t b;
-#X obj 167 106 0;
-#X connect 0 0 1 0;
-#X connect 1 0 0 1;
-#X connect 1 0 3 0;
-#X connect 2 0 0 0;
-#X connect 2 1 4 0;
-#X connect 3 0 8 0;
-#X connect 4 0 5 0;
-#X connect 5 0 6 0;
-#X connect 6 0 5 1;
-#X connect 6 0 3 1;
-#X connect 7 0 2 0;
-#X connect 9 0 12 0;
-#X connect 12 0 13 0;
-#X connect 13 0 1 1;
-#X connect 13 0 6 1;
-#X restore 37 382 pd accum;
-#X text 129 174 loop over fragments;
-#X text 112 380 make average of fragments;
-#X msg 102 217 radio detach 1;
-#X obj 122 126 vasp.f?;
-#X obj 139 92 vasp.! @ref filter;
-#X obj 138 261 vasp.db2pow;
-#X obj 40 52 t b b;
-#N canvas 0 0 257 314 frag 0;
-#X obj 40 210 vasp.rms;
-#X obj 40 92 vasp.rfft;
-#X obj 40 176 vasp.r!fft;
-#X obj 40 136 vasp.*;
-#X obj 41 65 vasp.!;
-#X obj 44 25 inlet;
-#X obj 39 248 outlet;
-#X obj 152 22 inlet;
-#X connect 0 0 6 0;
-#X connect 1 0 3 0;
-#X connect 2 0 0 0;
-#X connect 3 0 2 0;
-#X connect 4 0 1 0;
-#X connect 5 0 4 0;
-#X connect 7 0 3 1;
-#X restore 37 319 pd frag;
-#X text 107 315 filter fragment and calc rms;
-#X connect 0 0 11 0;
-#X connect 2 0 12 0;
-#X connect 3 0 2 0;
-#X connect 4 0 1 0;
-#X connect 7 0 12 0;
-#X connect 8 0 2 1;
-#X connect 9 0 8 0;
-#X connect 9 0 10 0;
-#X connect 10 0 12 1;
-#X connect 11 0 3 0;
-#X connect 11 1 4 1;
-#X connect 11 1 7 0;
-#X connect 11 1 9 0;
-#X connect 12 0 4 0;
-#X restore 44 284 pd do;
-#X obj 44 348 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-14 -261689 -1 -1 0.699669 256;
-#N canvas 277 107 454 304 2db 0;
-#X obj 38 19 inlet;
-#X obj 40 58 powtodb;
-#X obj 40 88 - 100;
-#X obj 41 124 outlet;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 2 0 3 0;
-#X restore 44 311 pd 2db;
-#X text 36 101 load/play buffer;
-#X msg 44 246 vasp buf;
-#X text 129 347 weighted loudness (decibels);
-#N canvas 312 40 678 619 filter 0;
-#X obj 46 26 inlet;
-#X obj 46 544 vasp.= @ref filter;
-#X obj 46 508 t b a;
-#X obj 45 572 vasp.u;
-#X msg 44 104 0;
-#X obj 43 60 route flat dbA dbB dbC;
-#X msg 87 102 env -77.8 8 -56.7 16 -39.4 31.5 -26.2 63 -16.1 125 -8.6
-250 -3.2 500 0 1000 1.2 2000 1 4000 -1.1 8000 -6.6 16000 -15.8 31500
-;
-#X obj 392 11 loadbang;
-#X obj 392 36 samplerate~;
-#X obj 45 476 vasp.tilt;
-#X obj 107 448 /;
-#X text 156 336 large enough temporary buffer;
-#X obj 44 338 vasp.! 100000;
-#X obj 296 66 / 2;
-#X obj 462 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 295 38 r smpfrq;
-#X obj 43 365 vasp.=;
-#X obj 44 309 t b a;
-#X obj 67 422 vasp.f?;
-#X obj 44 394 t a a b;
-#X obj 134 421 vasp.s? @ref filter;
-#X msg 129 158 env -43.6 8 -28.5 16 -17.1 31.5 -9.3 63 -4.2 125 -1.3
-250 -0.3 500 0 1000 -0.1 2000 -0.7 4000 -2.9 8000 -8.4 16000 -17.6
-31500;
-#X msg 170 221 env -17.7 8 -8.5 16 -3 31.5 -0.8 63 -0.2 125 0 250 0
-500 0 1000 -0.2 2000 -0.8 4000 -3 8000 -8.5 16000 -17.7 31500;
-#X text 124 476 resample;
-#X connect 0 0 5 0;
-#X connect 1 0 3 0;
-#X connect 2 0 1 0;
-#X connect 2 1 1 1;
-#X connect 4 0 17 0;
-#X connect 5 0 4 0;
-#X connect 5 1 6 0;
-#X connect 5 2 21 0;
-#X connect 5 3 22 0;
-#X connect 6 0 17 0;
-#X connect 7 0 8 0;
-#X connect 8 0 13 0;
-#X connect 9 0 2 0;
-#X connect 10 0 9 1;
-#X connect 12 0 16 0;
-#X connect 13 0 12 1;
-#X connect 14 0 8 0;
-#X connect 15 0 13 0;
-#X connect 16 0 19 0;
-#X connect 17 0 12 0;
-#X connect 17 1 16 1;
-#X connect 18 0 10 0;
-#X connect 19 0 9 0;
-#X connect 19 1 18 0;
-#X connect 19 2 20 0;
-#X connect 20 0 10 1;
-#X connect 21 0 17 0;
-#X connect 22 0 17 0;
-#X restore 471 344 pd filter;
-#X msg 416 300 flat;
-#X msg 464 299 dbA;
-#X obj 11 10 cnv 15 600 50 empty empty loudness 10 22 0 24 -260818
--1 0;
-#X text 202 41 http://www.parasitaere-kapazitaeten.net;
-#X text 203 25 needs vasp and wedit;
-#X text 203 10 get weighted loudness \, (C)2003 Thomas Grill;
-#X msg 499 299 dbB;
-#X msg 536 300 dbC;
-#X connect 3 0 8 0;
-#X connect 4 0 6 0;
-#X connect 6 0 5 0;
-#X connect 8 0 4 0;
-#X connect 11 0 10 0;
-#X connect 12 0 10 0;
-#X connect 17 0 10 0;
-#X connect 18 0 10 0;
+#N canvas 258 35 637 398 12;
+#N canvas 0 0 450 300 graph1 0;
+#X array filter 1024 float 1;
+#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
+#A 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 10 1023 -10 200 140 1;
+#X restore 412 91 graph;
+#X obj 171 129 table buf 10;
+#X obj 37 128 wedit buf;
+#X obj 44 203 bng 25 250 50 0 empty empty start 0 -6 0 8 -24198 -1
+-1;
+#N canvas 289 57 385 501 do 0;
+#X obj 40 20 inlet;
+#X obj 38 452 outlet;
+#X obj 38 175 vasp.parts;
+#X msg 40 91 vasp buf;
+#N canvas 0 0 256 335 accum 0;
+#X obj 31 158 +;
+#X obj 65 159 f;
+#X obj 32 95 t f b;
+#X obj 64 229 /;
+#X obj 111 158 1;
+#X obj 112 183 +;
+#X obj 146 184 f;
+#X obj 32 53 inlet;
+#X obj 64 276 outlet;
+#X obj 169 53 inlet;
+#X text 171 28 reset;
+#X text 31 31 value;
+#X obj 169 79 t b;
+#X obj 167 106 0;
+#X connect 0 0 1 0;
+#X connect 1 0 0 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 2 1 4 0;
+#X connect 3 0 8 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 5 1;
+#X connect 6 0 3 1;
+#X connect 7 0 2 0;
+#X connect 9 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 1 1;
+#X connect 13 0 6 1;
+#X restore 37 382 pd accum;
+#X text 129 174 loop over fragments;
+#X text 112 380 make average of fragments;
+#X msg 122 212 radio detach 1;
+#X obj 190 125 vasp.f?;
+#X obj 188 90 vasp.! @ref filter;
+#X obj 138 261 vasp.db2pow;
+#X obj 40 52 t b b;
+#N canvas 0 0 257 314 frag 0;
+#X obj 40 210 vasp.rms;
+#X obj 40 92 vasp.rfft;
+#X obj 40 176 vasp.r!fft;
+#X obj 40 136 vasp.*;
+#X obj 41 65 vasp.!;
+#X obj 44 25 inlet;
+#X obj 39 248 outlet;
+#X obj 152 22 inlet;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 7 0 3 1;
+#X restore 37 319 pd frag;
+#X text 107 315 filter fragment and calc rms;
+#X connect 0 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 7 0 12 0;
+#X connect 8 0 2 1;
+#X connect 9 0 8 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 1;
+#X connect 11 0 3 0;
+#X connect 11 1 4 1;
+#X connect 11 1 7 0;
+#X connect 11 1 9 0;
+#X connect 12 0 4 0;
+#X restore 44 284 pd do;
+#X obj 44 348 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 14
+-261689 -1 -1 0 256;
+#N canvas 277 107 454 304 2db 0;
+#X obj 38 19 inlet;
+#X obj 40 58 powtodb;
+#X obj 40 88 - 100;
+#X obj 41 124 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X restore 44 311 pd 2db;
+#X text 36 101 load/play buffer;
+#X msg 44 246 vasp buf;
+#X text 129 347 weighted loudness (decibels);
+#N canvas 312 40 678 619 filter 0;
+#X obj 46 26 inlet;
+#X obj 46 544 vasp.= @ref filter;
+#X obj 46 508 t b a;
+#X obj 45 572 vasp.u;
+#X msg 44 104 0;
+#X obj 43 60 route flat dbA dbB dbC;
+#X msg 87 102 env -77.8 8 -56.7 16 -39.4 31.5 -26.2 63 -16.1 125 -8.6
+250 -3.2 500 0 1000 1.2 2000 1 4000 -1.1 8000 -6.6 16000 -15.8 31500
+;
+#X obj 392 11 loadbang;
+#X obj 392 36 samplerate~;
+#X obj 45 476 vasp.tilt;
+#X obj 107 448 /;
+#X text 156 336 large enough temporary buffer;
+#X obj 44 338 vasp.! 100000;
+#X obj 296 66 / 2;
+#X obj 462 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 295 38 r smpfrq;
+#X obj 43 365 vasp.=;
+#X obj 44 309 t b a;
+#X obj 67 422 vasp.f?;
+#X obj 44 394 t a a b;
+#X obj 134 421 vasp.s? @ref filter;
+#X msg 129 158 env -43.6 8 -28.5 16 -17.1 31.5 -9.3 63 -4.2 125 -1.3
+250 -0.3 500 0 1000 -0.1 2000 -0.7 4000 -2.9 8000 -8.4 16000 -17.6
+31500;
+#X msg 170 221 env -17.7 8 -8.5 16 -3 31.5 -0.8 63 -0.2 125 0 250 0
+500 0 1000 -0.2 2000 -0.8 4000 -3 8000 -8.5 16000 -17.7 31500;
+#X text 124 476 resample;
+#X connect 0 0 5 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 2 1 1 1;
+#X connect 4 0 17 0;
+#X connect 5 0 4 0;
+#X connect 5 1 6 0;
+#X connect 5 2 21 0;
+#X connect 5 3 22 0;
+#X connect 6 0 17 0;
+#X connect 7 0 8 0;
+#X connect 8 0 13 0;
+#X connect 9 0 2 0;
+#X connect 10 0 9 1;
+#X connect 12 0 16 0;
+#X connect 13 0 12 1;
+#X connect 14 0 8 0;
+#X connect 15 0 13 0;
+#X connect 16 0 19 0;
+#X connect 17 0 12 0;
+#X connect 17 1 16 1;
+#X connect 18 0 10 0;
+#X connect 19 0 9 0;
+#X connect 19 1 18 0;
+#X connect 19 2 20 0;
+#X connect 20 0 10 1;
+#X connect 21 0 17 0;
+#X connect 22 0 17 0;
+#X restore 471 344 pd filter;
+#X msg 416 300 flat;
+#X msg 464 299 dbA;
+#X obj 11 10 cnv 15 600 50 empty empty loudness 10 22 0 24 -260818
+-1 0;
+#X text 202 41 http://www.parasitaere-kapazitaeten.net;
+#X text 203 25 needs vasp and wedit;
+#X text 203 10 get weighted loudness \, (C)2003 Thomas Grill;
+#X msg 499 299 dbB;
+#X msg 536 300 dbC;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 6 0 5 0;
+#X connect 8 0 4 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 17 0 10 0;
+#X connect 18 0 10 0;
diff --git a/externals/grill/vasp/pd/vasp.rms.pd b/externals/grill/vasp/pd/vasp.rms.pd
index 9cad83b2..dc8cfd4a 100644
--- a/externals/grill/vasp/pd/vasp.rms.pd
+++ b/externals/grill/vasp/pd/vasp.rms.pd
@@ -1,16 +1,16 @@
-#N canvas 270 238 447 421 12;
-#X obj 35 118 vasp.!;
-#X obj 35 163 vasp.sqr;
-#X obj 36 252 sqrt;
-#X obj 35 63 inlet;
-#X obj 35 330 outlet;
-#X text 98 119 make temporary buffer;
-#X text 92 332 RMS;
-#X obj 35 201 vasp.qmean;
-#X text 125 203 mean value;
-#X text 32 12 calculate RMS value of a vasp;
-#X connect 0 0 1 0;
-#X connect 1 0 7 0;
-#X connect 2 0 4 0;
-#X connect 3 0 0 0;
-#X connect 7 0 2 0;
+#N canvas 270 238 447 421 12;
+#X obj 35 118 vasp.!;
+#X obj 35 163 vasp.sqr;
+#X obj 35 272 sqrt;
+#X obj 35 63 inlet;
+#X obj 35 330 outlet;
+#X text 98 119 make temporary buffer;
+#X text 92 332 RMS;
+#X obj 35 201 vasp.qmean;
+#X text 125 203 mean value;
+#X text 32 12 calculate RMS value of a vasp;
+#X connect 0 0 1 0;
+#X connect 1 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 7 0 2 0;
diff --git a/externals/grill/xsample/config-pd-linux.txt b/externals/grill/xsample/config-pd-linux.txt
index be08468b..e89b6e98 100755
--- a/externals/grill/xsample/config-pd-linux.txt
+++ b/externals/grill/xsample/config-pd-linux.txt
@@ -4,7 +4,6 @@
# your c++ compiler (if not g++)
#CXX=g++
-CXX=g++-3.2
# where does the PD installation reside?
PD=/usr/local/lib/pd
diff --git a/externals/grill/xsample/xsample.cw b/externals/grill/xsample/xsample.cw
index b205fd6b..a4e4df80 100755
--- a/externals/grill/xsample/xsample.cw
+++ b/externals/grill/xsample/xsample.cw
Binary files differ